From 99a3f12849be19a385772b3e1fcc3153f40c8de0 Mon Sep 17 00:00:00 2001 From: autosubmit Date: Wed, 7 Jan 2026 16:47:49 +0800 Subject: [PATCH] Auto Submit --- 6232.caeab1cd.async.js | 8201 +++++++++++++++++ 9951.b4d5df6f.async.js | 5255 ----------- index.html | 2 +- ...er__ThemeTwoLogin__index.565cb188.async.js | 2 +- ...owledgegraph__Detail__id.b30b5556.async.js | 2 +- ...wledgegraph__SanD__index.62290c9f.async.js | 2 +- umi.66beb657.js => umi.46462ac1.js | 4 +- 7 files changed, 8207 insertions(+), 5261 deletions(-) create mode 100644 6232.caeab1cd.async.js delete mode 100644 9951.b4d5df6f.async.js rename p__User__ThemeTwoLogin__index.0723c809.async.js => p__User__ThemeTwoLogin__index.565cb188.async.js (99%) rename p__knowledgegraph__Detail__id.1cb42ecf.async.js => p__knowledgegraph__Detail__id.b30b5556.async.js (99%) rename p__knowledgegraph__SanD__index.44d4e422.async.js => p__knowledgegraph__SanD__index.62290c9f.async.js (99%) rename umi.66beb657.js => umi.46462ac1.js (99%) diff --git a/6232.caeab1cd.async.js b/6232.caeab1cd.async.js new file mode 100644 index 0000000000..d78d9b4950 --- /dev/null +++ b/6232.caeab1cd.async.js @@ -0,0 +1,8201 @@ +!(function(){var PX=Object.defineProperty,IX=Object.defineProperties;var NX=Object.getOwnPropertyDescriptors;var b3=Object.getOwnPropertySymbols,LX=Object.getPrototypeOf,FX=Object.prototype.hasOwnProperty,UX=Object.prototype.propertyIsEnumerable,DX=Reflect.get;var yg=Math.pow,eR=(Ie,Be,_)=>Be in Ie?PX(Ie,Be,{enumerable:!0,configurable:!0,writable:!0,value:_}):Ie[Be]=_,Dc=(Ie,Be)=>{for(var _ in Be||(Be={}))FX.call(Be,_)&&eR(Ie,_,Be[_]);if(b3)for(var _ of b3(Be))UX.call(Be,_)&&eR(Ie,_,Be[_]);return Ie},cA=(Ie,Be)=>IX(Ie,NX(Be));var ph=(Ie,Be,_)=>eR(Ie,typeof Be!="symbol"?Be+"":Be,_);var w3=(Ie,Be,_)=>DX(LX(Ie),_,Be);var lo=(Ie,Be,_)=>new Promise((m,K)=>{var H=F=>{try{T(_.next(F))}catch(B){K(B)}},L=F=>{try{T(_.throw(F))}catch(B){K(B)}},T=F=>F.done?m(F.value):Promise.resolve(F.value).then(H,L);T((_=_.apply(Ie,Be)).next())});(self.webpackChunk=self.webpackChunk||[]).push([[6232],{61485:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return U}});var m=_(54476),K=_(59301),H={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"question-circle",theme:"outlined"},L=H,T=_(85221),F=function(V,j){return K.createElement(T.Z,(0,m.Z)({},V,{ref:j,icon:L}))},B=K.forwardRef(F),U=B},55532:function(Ie,Be,_){"use strict";_.d(Be,{ni:function(){return Sf},EF:function(){return oc}});var m=function(xe,de){var je=xe.nodes,ce=xe.edges,kt=[],Qt={};if(!je)throw new Error("invalid nodes data!");return je&&je.forEach(function(vn,Wn){Qt[vn.id]=Wn;var mr=[];kt.push(mr)}),ce&&ce.forEach(function(vn){var Wn=vn.source,mr=vn.target,Tr=Qt[Wn],Mr=Qt[mr];!Tr&&Tr!==0||!Mr&&Mr!==0||(kt[Tr][Mr]=1,de||(kt[Mr][Tr]=1))}),kt},K=m,H=function(xe,de){return xe===de},L=function(){function Ze(xe,de){de===void 0&&(de=null),this.value=xe,this.next=de}return Ze.prototype.toString=function(xe){return xe?xe(this.value):"".concat(this.value)},Ze}(),T=function(){function Ze(xe){xe===void 0&&(xe=H),this.head=null,this.tail=null,this.compare=xe}return Ze.prototype.prepend=function(xe){var de=new L(xe,this.head);return this.head=de,this.tail||(this.tail=de),this},Ze.prototype.append=function(xe){var de=new L(xe);return this.head?(this.tail.next=de,this.tail=de,this):(this.head=de,this.tail=de,this)},Ze.prototype.delete=function(xe){if(!this.head)return null;for(var de=null;this.head&&this.compare(this.head.value,xe);)de=this.head,this.head=this.head.next;var je=this.head;if(je!==null)for(;je.next;)this.compare(je.next.value,xe)?(de=je.next,je.next=je.next.next):je=je.next;return this.compare(this.tail.value,xe)&&(this.tail=je),de},Ze.prototype.find=function(xe){var de=xe.value,je=de===void 0?void 0:de,ce=xe.callback,kt=ce===void 0?void 0:ce;if(!this.head)return null;for(var Qt=this.head;Qt;){if(kt&&kt(Qt.value)||je!==void 0&&this.compare(Qt.value,je))return Qt;Qt=Qt.next}return null},Ze.prototype.deleteTail=function(){var xe=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,xe;for(var de=this.head;de.next;)de.next.next?de=de.next:de.next=null;return this.tail=de,xe},Ze.prototype.deleteHead=function(){if(!this.head)return null;var xe=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),xe},Ze.prototype.fromArray=function(xe){var de=this;return xe.forEach(function(je){return de.append(je)}),this},Ze.prototype.toArray=function(){for(var xe=[],de=this.head;de;)xe.push(de),de=de.next;return xe},Ze.prototype.reverse=function(){for(var xe=this.head,de=null,je=null;xe;)je=xe.next,xe.next=de,de=xe,xe=je;this.tail=this.head,this.head=de},Ze.prototype.toString=function(xe){return xe===void 0&&(xe=void 0),this.toArray().map(function(de){return de.toString(xe)}).toString()},Ze}(),F=T,B=function(){function Ze(){this.linkedList=new F}return Ze.prototype.isEmpty=function(){return!this.linkedList.head},Ze.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},Ze.prototype.enqueue=function(xe){this.linkedList.append(xe)},Ze.prototype.dequeue=function(){var xe=this.linkedList.deleteHead();return xe?xe.value:null},Ze.prototype.toString=function(xe){return this.linkedList.toString(xe)},Ze}(),U=B,Q=function(xe,de,je){de===void 0&&(de=[]);var ce=de.filter(function(Wn){return Wn.source===xe||Wn.target===xe});if(je==="target"){var kt=function(mr){return mr.source===xe};return ce.filter(kt).map(function(Wn){return Wn.target})}if(je==="source"){var Qt=function(mr){return mr.target===xe};return ce.filter(Qt).map(function(Wn){return Wn.source})}var vn=function(mr){return mr.source===xe?mr.target:mr.source};return ce.map(vn)},V=function(xe,de){return de.filter(function(je){return je.source===xe})},j=function(xe,de){return de.filter(function(je){return je.source===xe||je.target===xe})},Y=function(xe){xe===void 0&&(xe=0);var de="".concat(Math.random()).split(".")[1].substr(0,5),je="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(xe,"-").concat(de).concat(je)};function fe(Ze){Ze===void 0&&(Ze={});var xe=Ze,de=function(){},je=function(){var ce={};return function(kt){var Qt=kt.next,vn=Qt;return ce[vn]?!1:(ce[vn]=!0,!0)}}();return xe.allowTraversal=Ze.allowTraversal||je,xe.enter=Ze.enter||de,xe.leave=Ze.leave||de,xe}var ue=function(xe,de,je,ce){ce===void 0&&(ce=!0);var kt=fe(je),Qt=new U,vn=xe.edges,Wn=vn===void 0?[]:vn;Qt.enqueue(de);for(var mr="",Tr=function(){var wr=Qt.dequeue();kt.enter({current:wr,previous:mr}),Q(wr,Wn,ce?"target":void 0).forEach(function(Gr){kt.allowTraversal({previous:mr,current:wr,next:Gr})&&Qt.enqueue(Gr)}),kt.leave({current:wr,previous:mr}),mr=wr};!Qt.isEmpty();)Tr()},Me=ue,_e=function(xe){for(var de=xe.nodes,je=de===void 0?[]:de,ce=xe.edges,kt=ce===void 0?[]:ce,Qt=[],vn={},Wn=[],mr=function Gr(yi){Wn.push(yi),vn[yi.id]=!0;for(var Or=Q(yi.id,kt),Ti=function(Bs){var Zs=Or[Bs];if(!vn[Zs]){var ea=je.filter(function(ss){return ss.id===Zs});ea.length>0&&Gr(ea[0])}},Wi=0;Wi0;)wr.push(Wn.pop());Qt.push(wr)}}return Qt},Ce=function(xe){for(var de=xe.nodes,je=de===void 0?[]:de,ce=xe.edges,kt=ce===void 0?[]:ce,Qt=[],vn={},Wn={},mr={},Tr=[],Mr=0,wr=function Ti(Wi){Wn[Wi.id]=Mr,mr[Wi.id]=Mr,Mr+=1,Qt.push(Wi),vn[Wi.id]=!0;for(var Cs=Q(Wi.id,kt,"target").filter(function(ts){return je.map(function(La){return La.id}).indexOf(ts)>-1}),Bs=function(La){var ra=Cs[La];if(!Wn[ra]&&Wn[ra]!==0){var co=je.filter(function(yo){return yo.id===ra});co.length>0&&Ti(co[0]),mr[Wi.id]=Math.min(mr[Wi.id],mr[ra])}else vn[ra]&&(mr[Wi.id]=Math.min(mr[Wi.id],Wn[ra]))},Zs=0;Zs0;){var ss=Qt.pop();if(vn[ss.id]=!1,ea.push(ss),ss===Wi)break}ea.length>0&&Tr.push(ea)}},Gr=0,yi=je;Gr0;)for(var Ti=Gr.pop(),Wi=Ti.id,Cs=Q(Wi,xe.edges),Bs=function(ss){var ts,La=Cs[ss],ra=xe.nodes.find(function(te){return te.id===La});if(La===Wi)Qt.push((ts={},ts[La]=Ti,ts));else if(!(La in Or))yi[La]=Ti,Gr.push(ra),Or[La]=new Set([Ti]);else if(!Or[Wi].has(ra)){for(var co=!0,yo=[ra,Ti],le=yi[Wi];Or[La].size&&!Or[La].has(le)&&(yo.push(le),le!==yi[le.id]);)le=yi[le.id];if(yo.push(le),de&&je?(co=!1,yo.findIndex(function(te){return de.indexOf(te.id)>-1})>-1&&(co=!0)):de&&!je&&yo.findIndex(function(te){return de.indexOf(te.id)>-1})>-1&&(co=!1),co){for(var se={},q=1;q0;){var q=se.pop();kt.has(q)&&(kt.delete(q),Qt[q.id].forEach(function(te){se.push(te)}),Qt[q.id].clear())}},Mr=function yo(le,se,q){var te=!1;if(de&&je===!1&&de.indexOf(le.id)>-1)return te;ce.push(le),kt.add(le);for(var Ae=q[le.id],Pe=0;Pe-1});on-1)?vn.push((se={},se[qt.id]=qt,se)):yt[qt.id].push(mr[Vn])}}return{component:qe,adjList:yt,minIdx:te}},Bs=0;Bs=Bs}),ea=Ce({nodes:Zs,edges:xe.edges}).filter(function(yo){return yo.length>1});if(ea.length===0)break;var ss=Cs(ea),ts=ss.minIdx,La=ss.adjList,ra=ss.component;if(ra.length>1){ra.forEach(function(yo){Qt[yo.id]=new Set});var co=Wn[ts];if(de&&je&&de.indexOf(co.id)===-1)return vn;Mr(co,co,La),Bs=ts+1}else break}return vn},kn=function(xe,de,je,ce){return ce===void 0&&(ce=!0),de?rr(xe,je,ce):jn(xe,je,ce)},Kn=Ot,_r=_(80813),bn={}.toString,Cr=function(Ze,xe){return bn.call(Ze)==="[object "+xe+"]"},Ke=Cr,Rt=function(Ze){return Ke(Ze,"Function")},Qn=function(Ze){return Array.isArray?Array.isArray(Ze):Ke(Ze,"Array")},Yr=function(Ze){var xe=typeof Ze;return Ze!==null&&xe==="object"||xe==="function"};function rn(Ze,xe){if(Ze){var de;if(Qn(Ze))for(var je=0,ce=Ze.length;je-1;)In.call(Ze,kt,1);return Ze},we=null,at=Array.prototype.splice,wt=function(xe,de){if(!isArrayLike(xe))return[];for(var je=xe?de.length:0,ce=je-1;je--;){var kt=void 0,Qt=de[je];(je===ce||Qt!==kt)&&(kt=Qt,at.call(xe,Qt,1))}return xe},it=null,ht=function(Ze,xe,de){if(!isArray(Ze)&&!isPlainObject(Ze))return Ze;var je=de;return each(Ze,function(ce,kt){je=xe(je,ce,kt)}),je},St=null,Yt=function(Ze,xe){var de=[];if(!isArrayLike(Ze))return de;for(var je=-1,ce=[],kt=Ze.length;++jekt[vn])return 1;if(ce[vn]0},tt=null,gt=function(Ze,xe){if(isArray(Ze)){for(var de,je=-1/0,ce=0;ceje&&(de=kt,je=Qt)}return de}},bt=function(Ze,xe){if(isArray(Ze)){for(var de,je=1/0,ce=0;cevn&&Tr>vn);)if(Wn.push(mr),vn-=Tr,Qt=Qt.substr(ce),!Qt)return Wn.join("");for(;mr=Qt.substr(0,1),Tr=measureTextWidth(mr,de),!(Tr+kt>vn);)if(Wn.push(mr),vn-=Tr,Qt=Qt.substr(1),!Qt)return Wn.join("");return""+Wn.join("")+je},Cl=function(){function Ze(){this.map={}}return Ze.prototype.has=function(xe){return this.map[xe]!==void 0},Ze.prototype.get=function(xe,de){var je=this.map[xe];return je===void 0?de:je},Ze.prototype.set=function(xe,de){this.map[xe]=de},Ze.prototype.clear=function(){this.map={}},Ze.prototype.delete=function(xe){delete this.map[xe]},Ze.prototype.size=function(){return Object.keys(this.map).length},Ze}(),Kc=null,Xs=function(xe,de,je){for(var ce=1/0,kt,Qt=0;QtMr[ea.id]+le?(Mr[yo]=Mr[ea.id]+le,wr[yo]=[ea.id]):Mr[yo]===Mr[ea.id]+le&&wr[yo].push(ea.id)})},Or=0;Or0&&Tr.length>0;){var Gr=Tr[Tr.length-1];if(Gr.length){var yi=Gr.shift();yi&&(Wn.push(yi),mr[yi]=!0,wr=ce?Q(yi,vn,"target"):Q(yi,vn),Tr.push(wr.filter(function(Wi){return!mr[Wi]})))}else{var Or=Wn.pop();mr[Or]=!1,Tr.pop();continue}if(Wn[Wn.length-1]===je){var Ti=Wn.map(function(Cs){return Cs});Mr.push(Ti);var Or=Wn.pop();mr[Or]=!1,Tr.pop()}}return Mr},ju=function(xe,de){for(var je=K(xe,de),ce=[],kt=je.length,Qt=0;Qtce[Qt][Wn]+ce[Wn][vn]&&(ce[Qt][vn]=ce[Qt][Wn]+ce[Wn][vn]);return ce},pu=ju,$c=function(xe,de,je,ce){de===void 0&&(de=!1),je===void 0&&(je="weight"),ce===void 0&&(ce=1e3);var kt=xe.nodes,Qt=kt===void 0?[]:kt,vn=xe.edges,Wn=vn===void 0?[]:vn,mr={},Tr={};Qt.forEach(function(Zs,ea){var ss=Y();Zs.clusterId=ss,mr[ss]={id:ss,nodes:[Zs]},Tr[Zs.id]={node:Zs,idx:ea}});var Mr=K(xe,de),wr=[],Gr={};Mr.forEach(function(Zs,ea){var ss=0,ts=Qt[ea].id;Gr[ts]={},Zs.forEach(function(La,ra){if(La){ss+=La;var co=Qt[ra].id;Gr[ts][co]=La}}),wr.push(ss)});for(var yi=0,Or=function(){var ea=!1;if(Qt.forEach(function(ss){var ts={};Object.keys(Gr[ss.id]).forEach(function(te){var Ae=Gr[ss.id][te],Pe=Tr[te].node,Qe=Pe.clusterId;ts[Qe]||(ts[Qe]=0),ts[Qe]+=Ae});var La=-1/0,ra=[];if(Object.keys(ts).forEach(function(te){La=0&&ra.splice(co,1),ra&&ra.length){ea=!0;var yo=mr[ss.clusterId],le=yo.nodes.indexOf(ss);yo.nodes.splice(le,1);var se=Math.floor(Math.random()*ra.length),q=mr[ra[se]];q.nodes.push(ss),ss.clusterId=q.id}}}),!ea)return"break";yi++};yi0&&La>ra&&La-rara&&(yo=Mr.map(function(He){return{node:He,clusterId:He.clusterId}}),le=Kt(Cs),ra=La),se||co>100)break;co++,Object.keys(Cs).forEach(function(He){var qe=0;Gr.forEach(function(yt){var qt=yt.source,on=yt.target,pn=Bs[qt].node.clusterId,Vn=Bs[on].node.clusterId;(pn===He&&Vn!==He||Vn===He&&pn!==He)&&(qe=qe+(yt[je]||1))}),Cs[He].sumTot=qe}),Mr.forEach(function(He,qe){var yt=Cs[He.clusterId],qt=0,on,pn=ea[qe]/(2*ts),Vn=0,Jn=yt.nodes;Jn.forEach(function(da){var ua=Bs[da.id].idx;Vn+=Zs[qe][ua]||0});var Ur=Vn-yt.sumTot*pn,Sr=Jn.filter(function(da){return da.id!==He.id}),Ai=[];Sr.forEach(function(da,ua){Ai[ua]=yi[da.originIndex]});var hi=_l(Sr,yi)*mr,_i=ss[He.id];if(Object.keys(_i).forEach(function(da){var ua=Bs[da].node,Io=ua.clusterId;if(Io!==He.clusterId){var io=Cs[Io],so=io.nodes;if(!(!so||!so.length)){var ti=0;so.forEach(function(fl){var po=Bs[fl.id].idx;ti+=Zs[qe][po]||0});var uo=ti-io.sumTot*pn,Ra=so.concat([He]),qo=[];Ra.forEach(function(fl,po){qo[po]=yi[fl.originIndex]});var ec=_l(Ra,yi)*mr,ga=uo-Ur;kt&&(ga=uo+ec-(Ur+hi)),ga>qt&&(qt=ga,on=io)}}}),qt>0){on.nodes.push(He);var Ii=He.clusterId;He.clusterId=on.id;var _s=yt.nodes.indexOf(He);yt.nodes.splice(_s,1);var Ns=0,Es=0;Gr.forEach(function(da){var ua=da.source,Io=da.target,io=Bs[ua].node.clusterId,so=Bs[Io].node.clusterId;(io===on.id&&so!==on.id||so===on.id&&io!==on.id)&&(Ns=Ns+(da[je]||1)),(io===Ii&&so!==Ii||so===Ii&&io!==Ii)&&(Es=Es+(da[je]||1))}),on.sumTot=Ns,yt.sumTot=Es}})}var q={},te=0;Object.keys(le).forEach(function(He){var qe=le[He];if(!qe.nodes||!qe.nodes.length){delete le[He];return}var yt=String(te+1);yt!==He&&(qe.id=yt,qe.nodes=qe.nodes.map(function(qt){return{id:qt.id,clusterId:yt}}),le[yt]=qe,q[He]=yt,delete le[He],te++)}),yo.forEach(function(He){var qe=He.node,yt=He.clusterId;qe&&(qe.clusterId=yt,qe.clusterId&&q[qe.clusterId]&&(qe.clusterId=q[qe.clusterId]))});var Ae=[],Pe={};Gr.forEach(function(He){var qe=He.source,yt=He.target,qt=He[je]||1,on=Bs[qe].node.clusterId,pn=Bs[yt].node.clusterId;if(!(!on||!pn)){var Vn="".concat(on,"---").concat(pn);if(Pe[Vn])Pe[Vn].weight+=qt,Pe[Vn].count++;else{var Jn={source:on,target:pn,weight:qt,count:1};Pe[Vn]=Jn,Ae.push(Jn)}}});var Qe=[];return Object.keys(le).forEach(function(He){Qe.push(le[He])}),{clusters:Qe,clusterEdges:Ae}},Ru=Ss,$h=function(xe,de,je,ce,kt,Qt,vn,Wn){return de===void 0&&(de=!1),je===void 0&&(je="weight"),ce===void 0&&(ce=1e-4),kt===void 0&&(kt=void 0),Qt===void 0&&(Qt=[]),vn===void 0&&(vn=["id"]),Wn===void 0&&(Wn=1),Ru(xe,de,je,ce,!0,kt,Qt,vn,Wn)},Xh=$h,QA=function(xe,de){var je;de===void 0&&(de=1);for(var ce=Kt(xe),kt=ce.nodes,Qt=kt===void 0?[]:kt,vn=ce.edges,Wn=vn===void 0?[]:vn,mr=function(){var wr=ft({nodes:Qt,edges:Wn}),Gr=Object.keys(wr);Gr.sort(function(Ti,Wi){var Cs,Bs;return((Cs=wr[Ti])===null||Cs===void 0?void 0:Cs.degree)-((Bs=wr[Wi])===null||Bs===void 0?void 0:Bs.degree)});var yi=Gr[0];if(!Qt.length||((je=wr[yi])===null||je===void 0?void 0:je.degree)>=de)return"break";var Or=Qt.findIndex(function(Ti){return Ti.id===yi});Qt.splice(Or,1),Wn=Wn.filter(function(Ti){return!(Ti.source===yi||Ti.target===yi)})};;){var Tr=mr();if(Tr==="break")break}return{nodes:Qt,edges:Wn}},Eh=QA,uf=function(xe,de,je){var ce=[];switch(xe){case nu.EuclideanDistance:ce=de[je];break;default:ce=[];break}return ce},jh=function(xe,de,je,ce,kt,Qt){de===void 0&&(de=3),je===void 0&&(je=void 0),ce===void 0&&(ce=[]),kt===void 0&&(kt=["id"]),Qt===void 0&&(Qt=nu.EuclideanDistance);var vn=xe.nodes,Wn=vn===void 0?[]:vn,mr=xe.edges,Tr=mr===void 0?[]:mr,Mr={clusters:[{id:"0",nodes:Wn}],clusterEdges:[]};if(Qt===nu.EuclideanDistance&&!Wn.every(function(yt){return yt.hasOwnProperty(je)}))return Mr;var wr=[],Gr=[];if(Qt===nu.EuclideanDistance&&(wr=xl(Wn,je),Gr=rl(wr,ce,kt)),!Gr.length)return Mr;for(var yi=nr(Gr.map(function(yt){return yt.join("")})),Or=Math.min(de,Wn.length,yi.length),Ti=0;Tiea&&!Wi.find(function(Sr){return Do(Sr,uf(Qt,Gr,Wn[on].originIndex))})&&(ea=Ur,ss=on)}},La=0;La=0;q--)Bs[Number(Wn[Ti].clusterId)][q].id===Wn[Ti].id&&Bs[Number(Wn[Ti].clusterId)].splice(q,1);Wn[Ti].clusterId=String(co),Bs[co].push(Wn[Ti])}}for(var te=!1,Ti=0;Ti=1e3)break}var He=[],qe={};return Tr.forEach(function(yt){var qt,on,pn=yt.source,Vn=yt.target,Jn=(qt=Wn.find(function(hi){return hi.id===pn}))===null||qt===void 0?void 0:qt.clusterId,Ur=(on=Wn.find(function(hi){return hi.id===Vn}))===null||on===void 0?void 0:on.clusterId,Sr="".concat(Jn,"---").concat(Ur);if(qe[Sr])qe[Sr].count++;else{var Ai={source:Jn,target:Ur,count:1};qe[Sr]=Ai,He.push(Ai)}}),{clusters:Bs,clusterEdges:He}},Pc=jh,Xc=function(xe,de){var je=new Po(de),ce=je.norm2(),kt=new Po(xe),Qt=kt.norm2(),vn=je.dot(kt),Wn=ce*Qt,mr=Wn?vn/Wn:0;return mr},bl=Xc,Fd=function(xe,de,je,ce,kt){xe===void 0&&(xe=[]),je===void 0&&(je=void 0),ce===void 0&&(ce=[]),kt===void 0&&(kt=[]);var Qt=Kt(xe.filter(function(wr){return wr.id!==de.id})),vn=xe.findIndex(function(wr){return wr.id===de.id}),Wn=xl(xe,je),mr=rl(Wn,ce,kt),Tr=mr[vn],Mr=[];return Qt.forEach(function(wr,Gr){if(wr.id!==de.id){var yi=mr[Gr],Or=bl(yi,Tr);Mr.push(Or),wr.cosineSimilarity=Or}}),Qt.sort(function(wr,Gr){return Gr.cosineSimilarity-wr.cosineSimilarity}),{allCosineSimilarity:Mr,similarNodes:Qt}},Hi=Fd,sl=function(){function Ze(xe){this.count=xe.length,this.parent={};for(var de=0,je=xe;de0&&(this.list[0]=de,this.moveDown(0)),xe},Ze.prototype.insert=function(xe){if(xe!==null){this.list.push(xe);var de=this.list.length-1;return this.moveUp(de),!0}return!1},Ze.prototype.moveUp=function(xe){for(var de=this.getParent(xe);xe&&xe>0&&this.compareFn(this.list[de],this.list[xe])>0;){var je=this.list[de];this.list[de]=this.list[xe],this.list[xe]=je,xe=de,de=this.getParent(xe)}},Ze.prototype.moveDown=function(xe){var de,je=xe,ce=this.getLeft(xe),kt=this.getRight(xe),Qt=this.list.length;ce!==null&&ce0?je=ce:kt!==null&&kt0&&(je=kt),xe!==je&&(de=[this.list[je],this.list[xe]],this.list[xe]=de[0],this.list[je]=de[1],this.moveDown(je))},Ze}(),Ou=lu,al=function(xe,de){var je=[],ce=xe.nodes,kt=ce===void 0?[]:ce,Qt=xe.edges,vn=Qt===void 0?[]:Qt;if(kt.length===0)return je;var Wn=kt[0],mr=new Set;mr.add(Wn);var Tr=function(Ti,Wi){return de?Ti.weight-Wi.weight:0},Mr=new Ou(Tr);for(j(Wn.id,vn).forEach(function(Or){Mr.insert(Or)});!Mr.isEmpty();){var wr=Mr.delMin(),Gr=wr.source,yi=wr.target;mr.has(Gr)&&mr.has(yi)||(je.push(wr),mr.has(Gr)||(mr.add(Gr),j(Gr,vn).forEach(function(Or){Mr.insert(Or)})),mr.has(yi)||(mr.add(yi),j(yi,vn).forEach(function(Or){Mr.insert(Or)})))}return je},ul=function(xe,de){var je=[],ce=xe.nodes,kt=ce===void 0?[]:ce,Qt=xe.edges,vn=Qt===void 0?[]:Qt;if(kt.length===0)return je;var Wn=vn.map(function(Gr){return Gr});de&&Wn.sort(function(Gr,yi){return Gr.weight-yi.weight});for(var mr=new Bl(kt.map(function(Gr){return Gr.id}));Wn.length>0;){var Tr=Wn.shift(),Mr=Tr.source,wr=Tr.target;mr.connected(Mr,wr)||(je.push(Tr),mr.union(Mr,wr))}return je},hl=function(xe,de,je){var ce={prim:al,kruskal:ul};return je?ce[je](xe,de):ul(xe,de)},bc=hl,ku=function(xe,de,je){typeof de!="number"&&(de=1e-6),typeof je!="number"&&(je=.85);for(var ce=1,kt=0,Qt=1e3,vn=xe.nodes,Wn=vn===void 0?[]:vn,mr=xe.edges,Tr=mr===void 0?[]:mr,Mr=Wn.length,wr,Gr={},yi={},Or=0;Or0&&ce>de;){kt=0;for(var Or=0;Or0&&(wr+=yi[ea]/ss)}Gr[Wi]=je*wr,kt+=Gr[Wi]}}kt=(1-kt)/Mr,ce=0;for(var Or=0;Or=0;je--){var ce=this.dfsEdgeList[je],kt=ce.fromNode,Qt=ce.toNode;ktGr||ce.hasNode(Qt[wr.to])||(de.labelBs;ea--){var ss=Zs(ea);if(ss==="break")break}if(Wi){var ts=xe.findMinLabel(Ti);Qt.dfsEdgeList.push(new wc(Or,Cs,Vu,ts.edgeLabel,Vu));var La=Qt.dfsEdgeList.length-1;return xe.dfsCode.dfsEdgeList[La]!==Qt.dfsEdgeList[La]?!1:Mr(Ti[ts.edgeLabel].projected)}var ra={};Wi=!1;var co=0;wr.forEach(function(Ae){var Pe=new ro(Ae),Qe=xe.findForwardPureEdges(ce,Pe.edges[Gr[0]],yi,Pe);Qe.length>0&&(Wi=!0,co=Or,Qe.forEach(function(He){var qe="".concat(He.label,"-").concat(kt[He.to].label);ra[qe]||(ra[qe]={projected:[],edgeLabel:He.label,nodeLabel2:kt[He.to].label}),ra[qe].projected.push({graphId:ce.id,edge:He,preNode:Ae})}))});for(var yo=Gr.length,le=function(Pe){if(Wi)return"break";var Qe=Gr[Pe];wr.forEach(function(He){var qe=new ro(He),yt=xe.findForwardRmpathEdges(ce,qe.edges[Qe],yi,qe);yt.length>0&&(Wi=!0,co=Qt.dfsEdgeList[Qe].fromNode,yt.forEach(function(qt){var on="".concat(qt.label,"-").concat(kt[qt.to].label);ra[on]||(ra[on]={projected:[],edgeLabel:qt.label,nodeLabel2:kt[qt.to].label}),ra[on].projected.push({graphId:ce.id,edge:qt,preNode:He})}))})},ea=0;ea=0;yi--){var Or=de.findBackwardEdge(Mr,Gr.edges[kt[yi]],Gr.edges[kt[0]],Gr);if(Or){var Ti="".concat(de.dfsCode.dfsEdgeList[kt[yi]].fromNode,"-").concat(Or.label);mr[Ti]||(mr[Ti]={projected:[],toNodeId:de.dfsCode.dfsEdgeList[kt[yi]].fromNode,edgeLabel:Or.label}),mr[Ti].projected.push({graphId:Tr.graphId,edge:Or,preNode:Tr})}}if(!(ce>=de.maxNodeNum)){var Wi=de.findForwardPureEdges(Mr,Gr.edges[kt[0]],vn,Gr);Wi.forEach(function(Bs){var Zs="".concat(Qt,"-").concat(Bs.label,"-").concat(wr[Bs.to].label);Wn[Zs]||(Wn[Zs]={projected:[],fromNodeId:Qt,edgeLabel:Bs.label,nodeLabel2:wr[Bs.to].label}),Wn[Zs].projected.push({graphId:Tr.graphId,edge:Bs,preNode:Tr})});for(var Cs=function(Zs){var ea=de.findForwardRmpathEdges(Mr,Gr.edges[kt[Zs]],vn,Gr);ea.forEach(function(ss){var ts="".concat(de.dfsCode.dfsEdgeList[kt[Zs]].fromNode,"-").concat(ss.label,"-").concat(wr[ss.to].label);Wn[ts]||(Wn[ts]={projected:[],fromNodeId:de.dfsCode.dfsEdgeList[kt[Zs]].fromNode,edgeLabel:ss.label,nodeLabel2:wr[ss.to].label}),Wn[ts].projected.push({graphId:Tr.graphId,edge:ss,preNode:Tr})})},yi=0;yiBs){var Zs=Bs;Bs=Cs,Cs=Zs}var ea=Wi.label,ss="".concat(mr,"-").concat(Cs,"-").concat(ea,"-").concat(Bs),ts="".concat(Cs,"-").concat(ea,"-").concat(Bs);if(!Qt[ts]){var La=Qt[ts]||0;La++,Qt[ts]=La}Wn[ss]={graphId:mr,nodeLabel1:Cs,edgeLabel:ea,nodeLabel2:Bs}})})}),Object.keys(kt).forEach(function(mr){var Tr=kt[mr];if(!(Tr2*de)););if(Ti<2*de&&(vn["".concat(Tr,"-").concat(Or)]={start:Tr,end:Or,distance:kt[Tr][Or]},Mr++,Wn++,Wn>=je))return vn;if(wr++,wr>2*de)break}if(Mrwr&&(Wn=wr);var Gr=je[Mr.id].inDegree;mr>Gr&&(mr=Gr);var yi=je[Mr.id].outDegree;Tr>yi&&(Tr=yi)}),xe[de]={degree:Wn,inDegree:mr,outDegree:Tr}),{minPatternNodeLabelDegree:Wn,minPatternNodeLabelInDegree:mr,minPatternNodeLabelOutDegree:Tr}},hf=function(xe,de,je,ce,kt,Qt,vn){var Wn;if(je===void 0&&(je=!1),Qt===void 0&&(Qt="cluster"),vn===void 0&&(vn="cluster"),!(!xe||!xe.nodes)){var mr=xe.nodes.length;if(mr){var Tr=pu(xe,je),Mr=pu(de,je),wr=Rl(xe.nodes,Tr,je),Gr=Rl(de.nodes,Mr,je),yi=Mh(xe.nodes,Qt),Or=yi.nodeMap,Ti=yi.nodeLabelMap,Wi=Mh(de.nodes,Qt),Cs=Wi.nodeMap,Bs=Wi.nodeLabelMap;Ef(xe.edges,vn,Or);var Zs=Ef(de.edges,vn,Cs).edgeLabelMap,ea=[];Mr==null||Mr.forEach(function(ti){ea=ea.concat(ti)}),kt||(kt=Math.max.apply(Math,(0,_r.ev)((0,_r.ev)([],ea,!1),[2],!1))),ce||(ce=kt);var ss=Vc(xe,Tr,Qt,ce),ts=Vc(de,Mr,Qt,ce),La=Math.min(100,mr*(mr-1)/2),ra=Ud(ce,mr,La,ss,Tr),co=id(ra,ss,xe),yo=10,le=1,se=1,q=4,te={graphs:co,nodeLabelProp:Qt,edgeLabelProp:vn,minSupport:le,minNodeNum:se,maxNodeNum:q,directed:je},Ae=Np(te).slice(0,yo),Pe=Ae.length,Qe=[];Ae.forEach(function(ti,uo){Qe[uo]={},Object.keys(co).forEach(function(Ra){var qo=co[Ra],ec=gu(qo,ti,Qt,vn);Qe[uo][Ra]=ec})});var He=Yh(Qe,Pe,Ae),qe=He.structure,yt=He.structureCountMap,qt=de.nodes[0],on=[],pn=(Wn=de.nodes[0])===null||Wn===void 0?void 0:Wn[Qt],Vn=-1/0;de.nodes.forEach(function(ti){var uo=ti[Qt],Ra=Ti[uo];(Ra==null?void 0:Ra.length)>Vn&&(Vn=Ra.length,on=Ra,pn=uo,qt=ti)});var Jn={},Ur={},Sr={},Ai={},hi={},_i={};Object.keys(Bs).forEach(function(ti,uo){hi[ti]=[],je&&(_i[ti]=[]);var Ra=-1/0,qo=Bs[ti],ec={};qo.forEach(function(ps){var xo=Gr["".concat(qt.id,"-").concat(ps.id)];if(xo&&hi[ti].push(xo),Rahi[ti][jc]){fc=!0;break}if(fc)return on.splice(xo,1),"continue";var wl={};Ic.neighbors.forEach(function(Ec){var qu=wr["".concat(lc.id,"-").concat(Ec.id)];wl["".concat(lc.id,"-").concat(Ec.id)]={start:Or[lc.id].idx,end:Or[Ec.id].idx,distance:qu}}),co=id(wl,ss,xe,co);var no=[];Object.keys(wl).forEach(function(Ec){if(yt[Ec]){no.push(yt[Ec]);return}var qu=co[Ec];yt[Ec]=gu(qu,qe,Qt,vn),no.push(yt[Ec])}),no=no.sort(function(Ec,qu){return qu-Ec});for(var Hf=!1,jc=0;jc=0;Sc--)po(Sc)});var Ii=[];on==null||on.forEach(function(ti){for(var uo=Or[ti.id].idx,Ra=_n(xe.nodes,Tr[uo],uo,Qt,kt),qo=Ra.neighbors,ec=qo.length,ga=!1,fl=ec-1;fl>=0;fl--){if(qo.length+1Ic){qo.splice(fl,1);continue}if(je){var Hc="".concat(po.id,"-").concat(ti.id),Gu=wr[Hc];lc=_i[Sc].length-1;var fc=_i[Sc][lc];if(Gu>fc){qo.splice(fl,1);continue}}var jc=yt[ps]?yt[ps]:mu(xe,ti,po,Or,xo,ss,qe,Qt,vn,yt,co),wl="".concat(qt.id,"-").concat(Sc),no=Ai[wl][Ai[wl].length-1];if(jc=0;xo--){var fc=Gu(xo);if(fc==="break")break}if(Hc)return Ii.splice(uo,1),"continue";Ra.edges=fl;var jc=of(Ra,Ra.nodes[0].id,!1).length;if(Object.keys(jc).reverse().forEach(function(Fl){if(!(Fl===Ra.nodes[0].id||Hc)){if(jc[Fl]===1/0){var ml=ga[Fl].node[Qt];if(ec[ml]--,ec[ml]Ns[eh][Ns[eh].length-1]){var ml=ga[Fl].node[Qt];if(ec[ml]--,ec[ml]=0;qu--){var zu=Ra.nodes[qu],df=ga[zu.id].degree,sd=ga[zu.id].inDegree,ad=ga[zu.id].outDegree,uA=zu[Qt],dc=Dh(Jn,uA,Cs,Bs),mh=dc.minPatternNodeLabelDegree,qh=dc.minPatternNodeLabelInDegree,Dd=dc.minPatternNodeLabelOutDegree,Jh=je?df=0;Zl--){var Ju=fl[Zl];if(!ga[Ju.source]||!ga[Ju.target]){fl.splice(Zl,1);var Gf=Ju[vn];if(po[Gf]--,ga[Ju.source]&&(ga[Ju.source].degree--,ga[Ju.source].outDegree--),ga[Ju.target]&&(ga[Ju.target].degree--,ga[Ju.target].inDegree--),Zs[Gf]&&po[Gf]=0;ua--){var Io=da(ua);if(Io==="break")break}for(var io=Ii.length,so=function(uo){var Ra=Ii[uo],qo={};Ra.edges.forEach(function(fl){var po="".concat(fl.source,"-").concat(fl.target,"-").concat(fl.label);qo[po]?qo[po]++:qo[po]=1});for(var ec=function(po){var Sc=Ii[po],ps={};Sc.edges.forEach(function(lc){var Ic="".concat(lc.source,"-").concat(lc.target,"-").concat(lc.label);ps[Ic]?ps[Ic]++:ps[Ic]=1});var xo=!0;Object.keys(ps).length!==Object.keys(qo).length?xo=!1:Object.keys(qo).forEach(function(lc){ps[lc]!==qo[lc]&&(xo=!1)}),xo&&Ii.splice(po,1)},ga=io-1;ga>uo;ga--)ec(ga);io=Ii.length},ua=0;ua<=io-1;ua++)so(ua);return Ii}}},Oh=hf,kf=function(){function Ze(xe){xe===void 0&&(xe=10),this.linkedList=new F,this.maxStep=xe}return Object.defineProperty(Ze.prototype,"length",{get:function(){return this.linkedList.toArray().length},enumerable:!1,configurable:!0}),Ze.prototype.isEmpty=function(){return!this.linkedList.head},Ze.prototype.isMaxStack=function(){return this.toArray().length>=this.maxStep},Ze.prototype.peek=function(){return this.isEmpty()?null:this.linkedList.head.value},Ze.prototype.push=function(xe){this.linkedList.prepend(xe),this.length>this.maxStep&&this.linkedList.deleteTail()},Ze.prototype.pop=function(){var xe=this.linkedList.deleteHead();return xe?xe.value:null},Ze.prototype.toArray=function(){return this.linkedList.toArray().map(function(xe){return xe.value})},Ze.prototype.clear=function(){for(;!this.isEmpty();)this.pop()},Ze}(),Vf=kf,ff=Kn,cu={getAdjMatrix:K,breadthFirstSearch:Me,connectedComponent:Xe,getDegree:ft,getInDegree:_t,getOutDegree:lt,detectCycle:Kn,detectDirectedCycle:ff,detectAllCycles:kn,detectAllDirectedCycle:rr,detectAllUndirectedCycle:jn,depthFirstSearch:Fn,dijkstra:of,findAllPath:Du,findShortestPath:Sf,floydWarshall:pu,labelPropagation:lf,louvain:Ru,iLouvain:Xh,kCore:Eh,kMeans:Pc,cosineSimilarity:bl,nodesCosineSimilarity:Hi,minimumSpanningTree:bc,pageRank:oc,getNeighbors:Q,Stack:Vf,GADDI:Oh}},86314:function(Ie,Be,_){"use strict";_.d(Be,{MG:function(){return T},V7:function(){return B},Yq:function(){return F},eR:function(){return Y},jt:function(){return Q},tT:function(){return j}});var m=_(80813),K=_(76075),H=_(69014);function L(fe){return typeof fe=="boolean"?!1:"enter"in fe&&"update"in fe&&"exit"in fe}function T(fe){if(!fe)return{enter:!1,update:!1,exit:!1};var ue=["enter","update","exit"],Me=Object.fromEntries(Object.entries(fe).filter(function(_e){var Ce=(0,m.CR)(_e,1),Xe=Ce[0];return!ue.includes(Xe)}));return Object.fromEntries(ue.map(function(_e){return L(fe)?fe[_e]===!1?[_e,!1]:[_e,(0,m.pi)((0,m.pi)({},fe[_e]),Me)]:[_e,Me]}))}function F(fe,ue){fe?fe.finished.then(ue):ue()}function B(fe,ue){fe.length===0?ue():Promise.all(fe.map(function(Me){return Me==null?void 0:Me.finished})).then(ue)}function U(fe,ue){"update"in fe?fe.update(ue):fe.attr(ue)}function Q(fe,ue,Me){if(ue.length===0)return null;if(!Me){var _e=ue.slice(-1)[0];return U(fe,{style:_e}),null}return fe.animate(ue,Me)}function V(fe,ue){return!(fe.nodeName!=="text"||ue.nodeName!=="text"||fe.attributes.text!==ue.attributes.text)}function j(fe,ue,Me,_e){if(_e===void 0&&(_e="destroy"),V(fe,ue))return fe.remove(),[null];var Ce=function(){_e==="destroy"?fe.destroy():_e==="hide"&&(0,H.Cp)(fe),ue.isVisible()&&(0,H.$Z)(ue)};if(!Me)return Ce(),[null];var Xe=Me.duration,Fe=Xe===void 0?0:Xe,ft=Me.delay,_t=ft===void 0?0:ft,lt=Math.ceil(+Fe/2),Vt=+Fe/4,It=(0,m.CR)(fe.getGeometryBounds().center,2),Fn=It[0],Ot=It[1],jn=(0,m.CR)(ue.getGeometryBounds().center,2),rr=jn[0],kn=jn[1],Kn=(0,m.CR)([(Fn+rr)/2-Fn,(Ot+kn)/2-Ot],2),_r=Kn[0],bn=Kn[1],Cr=fe.style.opacity,Ke=Cr===void 0?1:Cr,Rt=ue.style.opacity,Qn=Rt===void 0?1:Rt,Yr=fe.style.transform||"",rn=ue.style.transform||"",An=fe.animate([{opacity:Ke,transform:"translate(0, 0) ".concat(Yr)},{opacity:0,transform:"translate(".concat(_r,", ").concat(bn,") ").concat(Yr)}],(0,m.pi)((0,m.pi)({fill:"both"},Me),{duration:_t+lt+Vt})),Ln=ue.animate([{opacity:0,transform:"translate(".concat(-_r,", ").concat(-bn,") ").concat(rn),offset:.01},{opacity:Qn,transform:"translate(0, 0) ".concat(rn)}],(0,m.pi)((0,m.pi)({fill:"both"},Me),{duration:lt+Vt,delay:_t+lt-Vt}));return F(Ln,Ce),[An,Ln]}function Y(fe,ue,Me){var _e={},Ce={};return Object.entries(ue).forEach(function(Xe){var Fe=(0,m.CR)(Xe,2),ft=Fe[0],_t=Fe[1];if(!(0,K.Z)(_t)){var lt=fe.style[ft]||fe.parsedStyle[ft]||0;lt!==_t&&(_e[ft]=lt,Ce[ft]=_t)}}),Me?Q(fe,[_e,Ce],(0,m.pi)({fill:"both"},Me)):(U(fe,Ce),null)}},97304:function(Ie,Be,_){"use strict";_.d(Be,{w:function(){return B}});var m=_(80813),K=_(66623),H=_(69014),L=_(99247),T=_(16915);function F(){(0,H.WD)(this,this.attributes.visibility!=="hidden")}var B=function(U){(0,m.ZT)(Q,U);function Q(V,j){j===void 0&&(j={});var Y=U.call(this,(0,L.n)({},{style:j},V))||this;return Y.initialized=!1,Y._defaultOptions=j,Y}return Object.defineProperty(Q.prototype,"offscreenGroup",{get:function(){return this._offscreen||(this._offscreen=(0,T.g)(this)),this._offscreen},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,"defaultOptions",{get:function(){return this._defaultOptions},enumerable:!1,configurable:!0}),Q.prototype.connectedCallback=function(){this.render(this.attributes,this),this.bindEvents(this.attributes,this),this.initialized=!0},Q.prototype.disconnectedCallback=function(){var V;(V=this._offscreen)===null||V===void 0||V.destroy()},Q.prototype.attributeChangedCallback=function(V){V==="visibility"&&F.call(this)},Q.prototype.update=function(V,j){var Y;return this.attr((0,L.n)({},this.attributes,V||{})),(Y=this.render)===null||Y===void 0?void 0:Y.call(this,this.attributes,this,j)},Q.prototype.clear=function(){this.removeChildren()},Q.prototype.bindEvents=function(V,j){},Q.prototype.getSubShapeStyle=function(V){var j=V.x,Y=V.y,fe=V.transform,ue=V.transformOrigin,Me=V.class,_e=V.className,Ce=V.zIndex,Xe=(0,m._T)(V,["x","y","transform","transformOrigin","class","className","zIndex"]);return Xe},Q}(K.b_)},42777:function(Ie,Be,_){"use strict";_.d(Be,{x:function(){return L}});var m=_(80813),K=_(66623),H=_(16915),L=function(T){(0,m.ZT)(F,T);function F(B){B===void 0&&(B={});var U=B.style,Q=(0,m._T)(B,["style"]);return T.call(this,(0,m.pi)({style:(0,m.pi)({text:"",fill:"black",fontFamily:"sans-serif",fontSize:16,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",lineWidth:1,textAlign:"start",textBaseline:"middle"},U)},Q))||this}return Object.defineProperty(F.prototype,"offscreenGroup",{get:function(){return this._offscreen||(this._offscreen=(0,H.g)(this)),this._offscreen},enumerable:!1,configurable:!0}),F.prototype.disconnectedCallback=function(){var B;(B=this._offscreen)===null||B===void 0||B.destroy()},F}(K.xv)},65244:function(Ie,Be,_){"use strict";_.d(Be,{W:function(){return Bn}});var m=_(80813),K=_(97304),H=_(66623),L=_(88839),T=_(38974),F=_(17911),B=_(58688),U=_(33253),Q=_(98294),V=_(67756);function j(Ge,$e,Ne){return Ne?"".concat(Ge," ").concat(Ne,"legend-").concat($e):Ge}function Y(Ge,$e,Ne){var Ye=Ge.classNamePrefix,vt=Ye===void 0?"":Ye;return j($e.name,Ne,vt)}var fe={title:"title",item:"item",marker:"marker",label:"label",value:"value",focusIcon:"focus-icon",background:"background",ribbon:"ribbon",track:"track",selection:"selection",handle:"handle",handleMarker:"handle-marker",handleLabel:"handle-label",indicator:"indicator",prevBtn:"prev-btn",nextBtn:"next-btn",pageInfo:"page-info"},ue=(0,B.A)({text:"text"},"title");function Me(Ge,$e){var Ne=Ge.attributes,Ye=Ne.position,vt=Ne.spacing,an=Ne.inset,xt=Ne.text,tn=Ge.getBBox(),Un=$e.getBBox(),hr=(0,U.l)(Ye),or=(0,m.CR)((0,Q.j)(xt?vt:0),4),$r=or[0],xr=or[1],Rr=or[2],pi=or[3],Tn=(0,m.CR)((0,Q.j)(an),4),ir=Tn[0],ni=Tn[1],zr=Tn[2],xs=Tn[3],ms=(0,m.CR)([pi+xr,$r+Rr],2),ls=ms[0],Oi=ms[1],Ds=(0,m.CR)([xs+ni,ir+zr],2),Bi=Ds[0],Qs=Ds[1];if(hr[0]==="l")return new F.b(tn.x,tn.y,Un.width+tn.width+ls+Bi,Math.max(Un.height+Qs,tn.height));if(hr[0]==="t")return new F.b(tn.x,tn.y,Math.max(Un.width+Bi,tn.width),Un.height+tn.height+Oi+Qs);var Na=(0,m.CR)([$e.attributes.width||Un.width,$e.attributes.height||Un.height],2),$n=Na[0],Ut=Na[1];return new F.b(Un.x,Un.y,$n+tn.width+ls+Bi,Ut+tn.height+Oi+Qs)}function _e(Ge,$e){var Ne=Object.entries($e).reduce(function(Ye,vt){var an=(0,m.CR)(vt,2),xt=an[0],tn=an[1],Un=Ge.node().attr(xt);return Un||(Ye[xt]=tn),Ye},{});Ge.styles(Ne)}function Ce(Ge){var $e,Ne,Ye,vt,an=Ge,xt=an.width,tn=an.height,Un=an.position,hr=(0,m.CR)([+xt/2,+tn/2],2),or=hr[0],$r=hr[1],xr=(0,m.CR)([+or,+$r,"center","middle"],4),Rr=xr[0],pi=xr[1],Tn=xr[2],ir=xr[3],ni=(0,U.l)(Un);return ni.includes("l")&&($e=(0,m.CR)([0,"start"],2),Rr=$e[0],Tn=$e[1]),ni.includes("r")&&(Ne=(0,m.CR)([+xt,"end"],2),Rr=Ne[0],Tn=Ne[1]),ni.includes("t")&&(Ye=(0,m.CR)([0,"top"],2),pi=Ye[0],ir=Ye[1]),ni.includes("b")&&(vt=(0,m.CR)([+tn,"bottom"],2),pi=vt[0],ir=vt[1]),{x:Rr,y:pi,textAlign:Tn,textBaseline:ir}}var Xe=function(Ge){(0,m.ZT)($e,Ge);function $e(Ne){return Ge.call(this,Ne,{text:"",width:0,height:0,fill:"#4a505a",fontWeight:"bold",fontSize:12,fontFamily:"sans-serif",inset:0,spacing:0,position:"top-left"})||this}return $e.prototype.getAvailableSpace=function(){var Ne=this,Ye=this.attributes,vt=Ye.width,an=Ye.height,xt=Ye.position,tn=Ye.spacing,Un=Ye.inset,hr=Ne.querySelector(ue.text.class);if(!hr)return new F.b(0,0,+vt,+an);var or=hr.getBBox(),$r=or.width,xr=or.height,Rr=(0,m.CR)((0,Q.j)(tn),4),pi=Rr[0],Tn=Rr[1],ir=Rr[2],ni=Rr[3],zr=(0,m.CR)([0,0,+vt,+an],4),xs=zr[0],ms=zr[1],ls=zr[2],Oi=zr[3],Ds=(0,U.l)(xt);if(Ds.includes("i"))return new F.b(xs,ms,ls,Oi);Ds.forEach(function(Hn,ar){var Hr,fi,Qi,As;Hn==="t"&&(Hr=(0,m.CR)(ar===0?[xr+ir,+an-xr-ir]:[0,+an],2),ms=Hr[0],Oi=Hr[1]),Hn==="r"&&(fi=(0,m.CR)([+vt-$r-ni],1),ls=fi[0]),Hn==="b"&&(Qi=(0,m.CR)([+an-xr-pi],1),Oi=Qi[0]),Hn==="l"&&(As=(0,m.CR)(ar===0?[$r+Tn,+vt-$r-Tn]:[0,+vt],2),xs=As[0],ls=As[1])});var Bi=(0,m.CR)((0,Q.j)(Un),4),Qs=Bi[0],Na=Bi[1],$n=Bi[2],Ut=Bi[3],Kt=(0,m.CR)([Ut+Na,Qs+$n],2),Lt=Kt[0],Sn=Kt[1];return new F.b(xs+Ut,ms+Qs,ls-Lt,Oi-Sn)},$e.prototype.getBBox=function(){return this.title?this.title.getBBox():new F.b(0,0,0,0)},$e.prototype.render=function(Ne,Ye){var vt=this,an=Ne.width,xt=Ne.height,tn=Ne.position,Un=Ne.spacing,hr=Ne.classNamePrefix,or=(0,m._T)(Ne,["width","height","position","spacing","classNamePrefix"]),$r=(0,m.CR)((0,L.Hm)(or),1),xr=$r[0],Rr=Ce(Ne),pi=Rr.x,Tn=Rr.y,ir=Rr.textAlign,ni=Rr.textBaseline;(0,V.z)(!!or.text,(0,T.Ys)(Ye),function(zr){var xs=j(ue.text.name,fe.title,hr);vt.title=zr.maybeAppendByClassName(ue.text,"text").attr("className",xs).styles(xr).call(_e,{x:pi,y:Tn,textAlign:ir,textBaseline:ni}).node()})},$e}(K.w),Fe=function(){},ft=_(37004),_t=_(38242);function lt(Ge,$e){return Ge.reduce(function(Ne,Ye){return(Ne[Ye[$e]]=Ne[Ye[$e]]||[]).push(Ye),Ne},{})}var Vt=_(99247),It=_(70208),Fn=_(78431),Ot=_(86314);function jn(Ge){var $e;return(($e=Ge[0])===null||$e===void 0?void 0:$e.map(function(Ne,Ye){return Ge.map(function(vt){return vt[Ye]})}))||[]}var rr=_(69014),kn=_(99769),Kn=function(Ge,$e,Ne){return[["M",Ge-Ne,$e],["A",Ne,Ne,0,1,0,Ge+Ne,$e],["A",Ne,Ne,0,1,0,Ge-Ne,$e],["Z"]]},_r=Kn,bn=function(Ge,$e,Ne){return[["M",Ge-Ne,$e-Ne],["L",Ge+Ne,$e-Ne],["L",Ge+Ne,$e+Ne],["L",Ge-Ne,$e+Ne],["Z"]]},Cr=function(Ge,$e,Ne){return[["M",Ge-Ne,$e],["L",Ge,$e-Ne],["L",Ge+Ne,$e],["L",Ge,$e+Ne],["Z"]]},Ke=function(Ge,$e,Ne){var Ye=Ne*Math.sin(.3333333333333333*Math.PI);return[["M",Ge-Ne,$e+Ye],["L",Ge,$e-Ye],["L",Ge+Ne,$e+Ye],["Z"]]},Rt=function(Ge,$e,Ne){var Ye=Ne*Math.sin(.3333333333333333*Math.PI);return[["M",Ge-Ne,$e-Ye],["L",Ge+Ne,$e-Ye],["L",Ge,$e+Ye],["Z"]]},Qn=function(Ge,$e,Ne){var Ye=Ne/2*Math.sqrt(3);return[["M",Ge,$e-Ne],["L",Ge+Ye,$e-Ne/2],["L",Ge+Ye,$e+Ne/2],["L",Ge,$e+Ne],["L",Ge-Ye,$e+Ne/2],["L",Ge-Ye,$e-Ne/2],["Z"]]},Yr=function(Ge,$e,Ne){var Ye=Ne-1.5;return[["M",Ge-Ne,$e-Ye],["L",Ge+Ne,$e+Ye],["L",Ge+Ne,$e-Ye],["L",Ge-Ne,$e+Ye],["Z"]]},rn=function(Ge,$e,Ne){return[["M",Ge,$e+Ne],["L",Ge,$e-Ne]]},An=function(Ge,$e,Ne){return[["M",Ge-Ne,$e-Ne],["L",Ge+Ne,$e+Ne],["M",Ge+Ne,$e-Ne],["L",Ge-Ne,$e+Ne]]},Ln=function(Ge,$e,Ne){return[["M",Ge-Ne/2,$e-Ne],["L",Ge+Ne/2,$e-Ne],["M",Ge,$e-Ne],["L",Ge,$e+Ne],["M",Ge-Ne/2,$e+Ne],["L",Ge+Ne/2,$e+Ne]]},Tt=function(Ge,$e,Ne){return[["M",Ge-Ne,$e],["L",Ge+Ne,$e],["M",Ge,$e-Ne],["L",Ge,$e+Ne]]},Mt=function(Ge,$e,Ne){return[["M",Ge-Ne,$e],["L",Ge+Ne,$e]]},ge=function(Ge,$e,Ne){return[["M",Ge-Ne,$e],["L",Ge+Ne,$e]]},pe=ge,De=function(Ge,$e,Ne){return[["M",Ge-Ne,$e],["A",Ne/2,Ne/2,0,1,1,Ge,$e],["A",Ne/2,Ne/2,0,1,0,Ge+Ne,$e]]},Ht=function(Ge,$e,Ne){return[["M",Ge-Ne-1,$e-2.5],["L",Ge,$e-2.5],["L",Ge,$e+2.5],["L",Ge+Ne+1,$e+2.5]]},Jt=function(Ge,$e,Ne){return[["M",Ge-Ne-1,$e+2.5],["L",Ge,$e+2.5],["L",Ge,$e-2.5],["L",Ge+Ne+1,$e-2.5]]},At=function(Ge,$e,Ne){return[["M",Ge-(Ne+1),$e+2.5],["L",Ge-Ne/2,$e+2.5],["L",Ge-Ne/2,$e-2.5],["L",Ge+Ne/2,$e-2.5],["L",Ge+Ne/2,$e+2.5],["L",Ge+Ne+1,$e+2.5]]};function dn(Ge,$e){return[["M",Ge-5,$e+2.5],["L",Ge-5,$e],["L",Ge,$e],["L",Ge,$e-3],["L",Ge,$e+3],["L",Ge+6.5,$e+3]]}var fn=function(Ge,$e,Ne){return[["M",Ge-Ne,$e-Ne],["L",Ge+Ne,$e],["L",Ge-Ne,$e+Ne],["Z"]]},ut=function(Ge,$e,Ne){var Ye=Ne,vt=Ne*.2,an=Ne*.7;return[["M",Ge-Ye,$e],["A",Ye,Ye,0,1,0,Ge+Ye,$e],["A",Ye,Ye,0,1,0,Ge-Ye,$e],["Z"],["M",Ge-an,$e],["L",Ge-vt,$e],["M",Ge+vt,$e],["L",Ge+an,$e],["M",Ge,$e-an],["L",Ge,$e-vt],["M",Ge,$e+vt],["L",Ge,$e+an]]},Bt=(0,B.A)({prevBtnGroup:"prev-btn-group",prevBtn:"prev-btn",nextBtnGroup:"next-btn-group",nextBtn:"next-btn",pageInfoGroup:"page-info-group",pageInfo:"page-info",playWindow:"play-window",contentGroup:"content-group",controller:"controller",clipPath:"clip-path"},"navigator"),un=function(Ge){(0,m.ZT)($e,Ge);function $e(Ne){var Ye=Ge.call(this,Ne,{x:0,y:0,animate:{easing:"linear",duration:200,fill:"both"},buttonCursor:"pointer",buttonFill:"black",buttonD:fn(0,0,6),buttonSize:12,controllerPadding:5,controllerSpacing:5,formatter:function(vt,an){return"".concat(vt,"/").concat(an)},defaultPage:0,loop:!1,orientation:"horizontal",pageNumFill:"black",pageNumFontSize:12,pageNumTextAlign:"start",pageNumTextBaseline:"middle"})||this;return Ye.playState="idle",Ye.contentGroup=Ye.appendChild(new H.ZA({class:Bt.contentGroup.name})),Ye.playWindow=Ye.contentGroup.appendChild(new H.ZA({class:Bt.playWindow.name})),Ye.innerCurrPage=Ye.defaultPage,Ye}return Object.defineProperty($e.prototype,"defaultPage",{get:function(){var Ne=this.attributes.defaultPage;return(0,It.Z)(Ne,0,Math.max(this.pageViews.length-1,0))},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"pageViews",{get:function(){return this.playWindow.children},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"controllerShape",{get:function(){return this.totalPages>1?{width:55,height:0}:{width:0,height:0}},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"pageShape",{get:function(){var Ne=this.pageViews,Ye=(0,m.CR)(jn(Ne.map(function($r){var xr=$r.getBBox(),Rr=xr.width,pi=xr.height;return[Rr,pi]})).map(function($r){return Math.max.apply(Math,(0,m.ev)([],(0,m.CR)($r),!1))}),2),vt=Ye[0],an=Ye[1],xt=this.attributes,tn=xt.pageWidth,Un=tn===void 0?vt:tn,hr=xt.pageHeight,or=hr===void 0?an:hr;return{pageWidth:Un,pageHeight:or}},enumerable:!1,configurable:!0}),$e.prototype.getContainer=function(){return this.playWindow},Object.defineProperty($e.prototype,"totalPages",{get:function(){return this.pageViews.length},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"currPage",{get:function(){return this.innerCurrPage},enumerable:!1,configurable:!0}),$e.prototype.getBBox=function(){var Ne=Ge.prototype.getBBox.call(this),Ye=Ne.x,vt=Ne.y,an=this.controllerShape,xt=this.pageShape,tn=xt.pageWidth,Un=xt.pageHeight;return new F.b(Ye,vt,tn+an.width,Un)},$e.prototype.goTo=function(Ne){var Ye=this,vt=this.attributes.animate,an=this,xt=an.currPage,tn=an.playState,Un=an.playWindow,hr=an.pageViews;if(tn!=="idle"||Ne<0||hr.length<=0||Ne>=hr.length)return null;hr[xt].setLocalPosition(0,0),this.prepareFollowingPage(Ne);var or=(0,m.CR)(this.getFollowingPageDiff(Ne),2),$r=or[0],xr=or[1];this.playState="running";var Rr=(0,Ot.jt)(Un,[{transform:"translate(0, 0)"},{transform:"translate(".concat(-$r,", ").concat(-xr,")")}],vt);return(0,Ot.Yq)(Rr,function(){Ye.innerCurrPage=Ne,Ye.playState="idle",Ye.setVisiblePages([Ne]),Ye.updatePageInfo()}),Rr},$e.prototype.prev=function(){var Ne=this.attributes.loop,Ye=this.pageViews.length,vt=this.currPage;if(!Ne&&vt<=0)return null;var an=Ne?(vt-1+Ye)%Ye:(0,It.Z)(vt-1,0,Ye);return this.goTo(an)},$e.prototype.next=function(){var Ne=this.attributes.loop,Ye=this.pageViews.length,vt=this.currPage;if(!Ne&&vt>=Ye-1)return null;var an=Ne?(vt+1)%Ye:(0,It.Z)(vt+1,0,Ye);return this.goTo(an)},$e.prototype.renderClipPath=function(Ne){var Ye=this.pageShape,vt=Ye.pageWidth,an=Ye.pageHeight;if(!vt||!an){this.contentGroup.style.clipPath=void 0;return}this.clipPath=Ne.maybeAppendByClassName(Bt.clipPath,"rect").styles({width:vt,height:an}),this.contentGroup.attr("clipPath",this.clipPath.node())},$e.prototype.setVisiblePages=function(Ne){this.playWindow.children.forEach(function(Ye,vt){Ne.includes(vt)?(0,rr.$Z)(Ye):(0,rr.Cp)(Ye)})},$e.prototype.adjustControllerLayout=function(){var Ne=this,Ye=Ne.prevBtnGroup,vt=Ne.nextBtnGroup,an=Ne.pageInfoGroup,xt=this.attributes,tn=xt.orientation,Un=xt.controllerPadding,hr=an.getBBox(),or=hr.width,$r=hr.height,xr=(0,m.CR)(tn==="horizontal"?[-180,0]:[-90,90],2),Rr=xr[0],pi=xr[1];Ye.setLocalEulerAngles(Rr),vt.setLocalEulerAngles(pi);var Tn=Ye.getBBox(),ir=Tn.width,ni=Tn.height,zr=vt.getBBox(),xs=zr.width,ms=zr.height,ls=Math.max(ir,or,xs),Oi=tn==="horizontal"?{offset:[[0,0],[ir/2+Un,0],[ir+or+Un*2,0]],textAlign:"start"}:{offset:[[ls/2,-ni-Un],[ls/2,0],[ls/2,ms+Un]],textAlign:"center"},Ds=(0,m.CR)(Oi.offset,3),Bi=(0,m.CR)(Ds[0],2),Qs=Bi[0],Na=Bi[1],$n=(0,m.CR)(Ds[1],2),Ut=$n[0],Kt=$n[1],Lt=(0,m.CR)(Ds[2],2),Sn=Lt[0],Hn=Lt[1],ar=Oi.textAlign,Hr=an.querySelector("text");Hr&&(Hr.style.textAlign=ar),Ye.setLocalPosition(Qs,Na),an.setLocalPosition(Ut,Kt),vt.setLocalPosition(Sn,Hn)},$e.prototype.updatePageInfo=function(){var Ne,Ye=this,vt=Ye.currPage,an=Ye.pageViews,xt=Ye.attributes.formatter;an.length<2||((Ne=this.pageInfoGroup.querySelector(Bt.pageInfo.class))===null||Ne===void 0||Ne.attr("text",xt(vt+1,an.length)),this.adjustControllerLayout())},$e.prototype.getFollowingPageDiff=function(Ne){var Ye=this.currPage;if(Ye===Ne)return[0,0];var vt=this.attributes.orientation,an=this.pageShape,xt=an.pageWidth,tn=an.pageHeight,Un=Ne=2,xr=Ne.maybeAppendByClassName(Bt.controller,"g");if((0,rr.WD)(xr.node(),$r),!!$r){var Rr=(0,L.zs)(this.attributes,"button"),pi=(0,L.zs)(this.attributes,"pageNum"),Tn=(0,m.CR)((0,L.Hm)(Rr),2),ir=Tn[0],ni=Tn[1],zr=ir.size,xs=(0,m._T)(ir,["size"]),ms=!xr.select(Bt.prevBtnGroup.class).node(),ls=xr.maybeAppendByClassName(Bt.prevBtnGroup,"g").styles(ni);this.prevBtnGroup=ls.node();var Oi=ls.maybeAppendByClassName(Bt.prevBtn,"path");if(tn){var Ds=j(Bt.prevBtn.name,fe.prevBtn,tn);Oi.node().setAttribute("class",Ds)}var Bi=xr.maybeAppendByClassName(Bt.nextBtnGroup,"g").styles(ni);this.nextBtnGroup=Bi.node();var Qs=Bi.maybeAppendByClassName(Bt.nextBtn,"path");if(tn){var Na=j(Bt.nextBtn.name,fe.nextBtn,tn);Qs.node().setAttribute("class",Na)}[Oi,Qs].forEach(function(Lt){Lt.styles((0,m.pi)((0,m.pi)({},xs),{transformOrigin:"center"})),(0,kn.b)(Lt.node(),zr,!0)});var $n=xr.maybeAppendByClassName(Bt.pageInfoGroup,"g");this.pageInfoGroup=$n.node();var Ut=$n.maybeAppendByClassName(Bt.pageInfo,"text");if(Ut.styles(pi),tn){var Kt=j(Bt.pageInfo.name,fe.pageInfo,tn);Ut.node().setAttribute("class",Kt)}this.updatePageInfo(),xr.node().setLocalPosition(hr+an,or/2),ms&&(this.prevBtnGroup.addEventListener("click",function(){Ye.prev()}),this.nextBtnGroup.addEventListener("click",function(){Ye.next()}))}},$e.prototype.render=function(Ne,Ye){var vt=Ne.x,an=vt===void 0?0:vt,xt=Ne.y,tn=xt===void 0?0:xt;this.attr("transform","translate(".concat(an,", ").concat(tn,")"));var Un=(0,T.Ys)(Ye);this.renderClipPath(Un),this.renderController(Un),this.setVisiblePages([this.defaultPage]),this.goTo(this.defaultPage)},$e.prototype.bindEvents=function(){var Ne=this,Ye=(0,Fn.Z)(function(){return Ne.render(Ne.attributes,Ne)},50);this.playWindow.addEventListener(H.Dk.INSERTED,Ye),this.playWindow.addEventListener(H.Dk.REMOVED,Ye)},$e}(K.w),Z=_(71018),Te=_(93785),Zt=_(71879);function Gt(Ge){var $e="default";if((0,Te.Z)(Ge)&&Ge instanceof Image)$e="image";else if((0,Z.Z)(Ge))$e="symbol";else if((0,Zt.Z)(Ge)){var Ne=new RegExp("data:(image|text)");Ge.match(Ne)?$e="base64":/^(https?:\/\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\.)+[a-zA-Z]+)(:\d+)?(\/.*)?(\?.*)?(#.*)?$/.test(Ge)?$e="url":$e="symbol"}return $e}function On(Ge){var $e=Gt(Ge);return["base64","url","image"].includes($e)?"image":Ge&&$e==="symbol"?"path":null}var In=function(Ge){(0,m.ZT)($e,Ge);function $e(){return Ge!==null&&Ge.apply(this,arguments)||this}return $e.prototype.render=function(Ne,Ye){var vt=Ne.x,an=vt===void 0?0:vt,xt=Ne.y,tn=xt===void 0?0:xt,Un=this.getSubShapeStyle(Ne),hr=Un.symbol,or=Un.size,$r=or===void 0?16:or,xr=(0,m._T)(Un,["symbol","size"]),Rr=On(hr);(0,V.z)(!!Rr,(0,T.Ys)(Ye),function(pi){pi.maybeAppendByClassName("marker",Rr).attr("className","marker ".concat(Rr,"-marker")).call(function(Tn){if(Rr==="image"){var ir=$r*2;Tn.styles({img:hr,width:ir,height:ir,x:an-$r,y:tn-$r})}else{var ir=$r/2,ni=(0,Z.Z)(hr)?hr:$e.getSymbol(hr);Tn.styles((0,m.pi)({d:ni==null?void 0:ni(an,tn,ir)},xr))}})})},$e.MARKER_SYMBOL_MAP=new Map,$e.registerSymbol=function(Ne,Ye){$e.MARKER_SYMBOL_MAP.set(Ne,Ye)},$e.getSymbol=function(Ne){return $e.MARKER_SYMBOL_MAP.get(Ne)},$e.getSymbols=function(){return Array.from($e.MARKER_SYMBOL_MAP.keys())},$e}(K.w);In.registerSymbol("cross",An),In.registerSymbol("hyphen",Mt),In.registerSymbol("line",rn),In.registerSymbol("plus",Tt),In.registerSymbol("tick",Ln),In.registerSymbol("circle",Kn),In.registerSymbol("point",_r),In.registerSymbol("bowtie",Yr),In.registerSymbol("hexagon",Qn),In.registerSymbol("square",bn),In.registerSymbol("diamond",Cr),In.registerSymbol("triangle",Ke),In.registerSymbol("triangle-down",Rt),In.registerSymbol("line",rn),In.registerSymbol("dot",ge),In.registerSymbol("dash",pe),In.registerSymbol("smooth",De),In.registerSymbol("hv",Ht),In.registerSymbol("vh",Jt),In.registerSymbol("hvh",At),In.registerSymbol("vhv",dn),In.registerSymbol("focus",ut);function pr(Ge,$e,Ne){var Ye=Math.round((Ge-Ne)/$e);return Ne+Ye*$e}function Je(Ge,$e,Ne){var Ye=1.4,vt=Ye*Ne;return[["M",Ge-Ne,$e-vt],["L",Ge+Ne,$e-vt],["L",Ge+Ne,$e+vt],["L",Ge-Ne,$e+vt],["Z"]]}var we=1.4,at=.4;function wt(Ge,$e,Ne){var Ye=Ne,vt=Ye*we,an=Ye/2,xt=Ye/6,tn=Ge+vt*at;return[["M",Ge,$e],["L",tn,$e+an],["L",Ge+vt,$e+an],["L",Ge+vt,$e-an],["L",tn,$e-an],["Z"],["M",tn,$e+xt],["L",Ge+vt-2,$e+xt],["M",tn,$e-xt],["L",Ge+vt-2,$e-xt]]}function it(Ge,$e,Ne){var Ye=Ne,vt=Ye*we,an=Ye/2,xt=Ye/6,tn=$e+vt*at;return[["M",Ge,$e],["L",Ge-an,tn],["L",Ge-an,$e+vt],["L",Ge+an,$e+vt],["L",Ge+an,tn],["Z"],["M",Ge-xt,tn],["L",Ge-xt,$e+vt-2],["M",Ge+xt,tn],["L",Ge+xt,$e+vt-2]]}In.registerSymbol("hiddenHandle",Je),In.registerSymbol("verticalHandle",wt),In.registerSymbol("horizontalHandle",it);var ht=function(Ge,$e,Ne){return Ge===void 0&&(Ge="horizontal"),Ge==="horizontal"?$e:Ne};function St(Ge,$e,Ne,Ye){var vt;Ye===void 0&&(Ye=4);var an=__read(Ge,2),xt=an[0],tn=an[1],Un=__read($e,2),hr=Un[0],or=Un[1],$r=__read(Ne,2),xr=$r[0],Rr=$r[1],pi=__read([hr,or],2),Tn=pi[0],ir=pi[1],ni=ir-Tn;return Tn>ir&&(vt=__read([ir,Tn],2),Tn=vt[0],ir=vt[1]),ni>tn-xt?[xt,tn]:Tntn?Rr===tn&&xr===Tn?[Tn,tn]:[tn-ni,tn]:[Tn,ir]}function Yt(Ge,$e,Ne){return Ge===void 0&&(Ge="horizontal"),Ge==="horizontal"?$e:Ne}var $t=_(49527),Ft=_(2080),xn=_(88170),cr=_(53160),nr=_(23343);function Lr(Ge,$e){for(var Ne in $e)$e.hasOwnProperty(Ne)&&Ne!=="constructor"&&$e[Ne]!==void 0&&(Ge[Ne]=$e[Ne])}function si(Ge,$e,Ne,Ye){return $e&&Lr(Ge,$e),Ne&&Lr(Ge,Ne),Ye&&Lr(Ge,Ye),Ge}var Pr=_(5759);function ys(Ge){return Ge instanceof Element||Ge instanceof Document}var Ri,Fi="component-poptip",ui={CONTAINER:"component-poptip",ARROW:"component-poptip-arrow",TEXT:"component-poptip-text"},gs=(Ri={},Ri[".".concat(ui.CONTAINER)]={visibility:"visible",position:"absolute","background-color":"rgba(0, 0, 0)","box-shadow":"0px 0px 10px #aeaeae","border-radius":"3px",color:"#fff",opacity:.8,"font-size":"12px",padding:"4px 6px",display:"flex","justify-content":"center","align-items":"center","z-index":8,transition:"visibility 50ms"},Ri[".".concat(ui.TEXT)]={"text-align":"center"},Ri[".".concat(ui.CONTAINER,"[data-position='top']")]={transform:"translate(-50%, -100%)"},Ri[".".concat(ui.CONTAINER,"[data-position='left']")]={transform:"translate(-100%, -50%)"},Ri[".".concat(ui.CONTAINER,"[data-position='right']")]={transform:"translate(0, -50%)"},Ri[".".concat(ui.CONTAINER,"[data-position='bottom']")]={transform:"translate(-50%, 0)"},Ri[".".concat(ui.CONTAINER,"[data-position='top-left']")]={transform:"translate(0,-100%)"},Ri[".".concat(ui.CONTAINER,"[data-position='top-right']")]={transform:"translate(-100%,-100%)"},Ri[".".concat(ui.CONTAINER,"[data-position='left-top']")]={transform:"translate(-100%, 0)"},Ri[".".concat(ui.CONTAINER,"[data-position='left-bottom']")]={transform:"translate(-100%, -100%)"},Ri[".".concat(ui.CONTAINER,"[data-position='right-top']")]={transform:"translate(0, 0)"},Ri[".".concat(ui.CONTAINER,"[data-position='right-bottom']")]={transform:"translate(0, -100%)"},Ri[".".concat(ui.CONTAINER,"[data-position='bottom-left']")]={transform:"translate(0, 0)"},Ri[".".concat(ui.CONTAINER,"[data-position='bottom-right']")]={transform:"translate(-100%, 0)"},Ri[".".concat(ui.ARROW)]={width:"4px",height:"4px",transform:"rotate(45deg)","background-color":"rgba(0, 0, 0)",position:"absolute","z-index":-1},Ri[".".concat(ui.CONTAINER,"[data-position='top']")]={transform:"translate(-50%, calc(-100% - 5px))"},Ri["[data-position='top'] .".concat(ui.ARROW)]={bottom:"-2px"},Ri[".".concat(ui.CONTAINER,"[data-position='left']")]={transform:"translate(calc(-100% - 5px), -50%)"},Ri["[data-position='left'] .".concat(ui.ARROW)]={right:"-2px"},Ri[".".concat(ui.CONTAINER,"[data-position='right']")]={transform:"translate(5px, -50%)"},Ri["[data-position='right'] .".concat(ui.ARROW)]={left:"-2px"},Ri[".".concat(ui.CONTAINER,"[data-position='bottom']")]={transform:"translate(-50%, 5px)"},Ri["[data-position='bottom'] .".concat(ui.ARROW)]={top:"-2px"},Ri[".".concat(ui.CONTAINER,"[data-position='top-left']")]={transform:"translate(0, calc(-100% - 5px))"},Ri["[data-position='top-left'] .".concat(ui.ARROW)]={left:"10px",bottom:"-2px"},Ri[".".concat(ui.CONTAINER,"[data-position='top-right']")]={transform:"translate(-100%, calc(-100% - 5px))"},Ri["[data-position='top-right'] .".concat(ui.ARROW)]={right:"10px",bottom:"-2px"},Ri[".".concat(ui.CONTAINER,"[data-position='left-top']")]={transform:"translate(calc(-100% - 5px), 0)"},Ri["[data-position='left-top'] .".concat(ui.ARROW)]={right:"-2px",top:"8px"},Ri[".".concat(ui.CONTAINER,"[data-position='left-bottom']")]={transform:"translate(calc(-100% - 5px), -100%)"},Ri["[data-position='left-bottom'] .".concat(ui.ARROW)]={right:"-2px",bottom:"8px"},Ri[".".concat(ui.CONTAINER,"[data-position='right-top']")]={transform:"translate(5px, 0)"},Ri["[data-position='right-top'] .".concat(ui.ARROW)]={left:"-2px",top:"8px"},Ri[".".concat(ui.CONTAINER,"[data-position='right-bottom']")]={transform:"translate(5px, -100%)"},Ri["[data-position='right-bottom'] .".concat(ui.ARROW)]={left:"-2px",bottom:"8px"},Ri[".".concat(ui.CONTAINER,"[data-position='bottom-left']")]={transform:"translate(0, 5px)"},Ri["[data-position='bottom-left'] .".concat(ui.ARROW)]={top:"-2px",left:"8px"},Ri[".".concat(ui.CONTAINER,"[data-position='bottom-right']")]={transform:"translate(-100%, 5px)"},Ri["[data-position='bottom-right'] .".concat(ui.ARROW)]={top:"-2px",right:"8px"},Ri),Di=void 0;function Nn(Ge,$e,Ne,Ye,vt,an){if(vt===void 0&&(vt=!1),an===void 0&&(an=!1),an)return[Ge,$e];var xt=Ne.getBoundingClientRect(),tn=xt.x,Un=xt.y,hr=xt.width,or=xt.height;switch(Ye){case"top":return vt?[tn+hr/2,Un]:[Ge,Un];case"left":return vt?[tn,Un+or/2]:[tn,$e];case"bottom":return vt?[tn+hr/2,Un+or]:[Ge,Un+or];case"right":return vt?[tn+hr,Un+or/2]:[tn+hr,$e];case"top-right":case"right-top":return[tn+hr,Un];case"left-bottom":case"bottom-left":return[tn,Un+or];case"right-bottom":case"bottom-right":return[tn+hr,Un+or];case"top-left":case"left-top":default:return[tn,Un]}}var cn=function(Ge){var $e;return function(){for(var Ne=[],Ye=0;Ye');Ne.innerHTML=tn,(0,Zt.Z)(an)?Ne.innerHTML+=an:an&&ys(an)&&Ne.appendChild(an),xt&&(Ne.getElementsByClassName(ui.TEXT)[0].textContent=xt),this.applyStyles(),this.container.style.visibility=this.visibility},$e.prototype.applyStyles=function(){var Ne=(0,Vt.n)({},gs,this.style.domStyles),Ye=Object.entries(Ne).reduce(function(an,xt){var tn=(0,m.CR)(xt,2),Un=tn[0],hr=tn[1],or=Object.entries(hr).reduce(function($r,xr){var Rr=(0,m.CR)(xr,2),pi=Rr[0],Tn=Rr[1];return"".concat($r).concat(pi,": ").concat(Tn,";")},"");return"".concat(an).concat(Un,"{").concat(or,"}")},"");if(this.domStyles!==Ye){this.domStyles=Ye;var vt=this.container.querySelector("style");vt&&this.container.removeChild(vt),vt=document.createElement("style"),vt.innerHTML=Ye,this.container.appendChild(vt)}},$e.prototype.setOffsetPosition=function(Ne,Ye,vt){vt===void 0&&(vt=this.style.offset);var an=(0,m.CR)(vt,2),xt=an[0],tn=xt===void 0?0:xt,Un=an[1],hr=Un===void 0?0:Un;this.container.style.left="".concat(Ne+tn,"px"),this.container.style.top="".concat(Ye+hr,"px")},$e.tag="poptip",$e.defaultOptions={style:{x:0,y:0,width:0,height:0,target:null,visibility:"hidden",text:"",position:"top",follow:!1,offset:[0,0],domStyles:gs,template:'
')}},$e}(K.w),zt=(0,B.A)({layout:"flex",markerGroup:"marker-group",marker:"marker",labelGroup:"label-group",label:"label",valueGroup:"value-group",focusGroup:"focus-group",focus:"focus",value:"value",backgroundGroup:"background-group",background:"background"},"legend-category-item"),Mn={offset:[0,20],domStyles:{".component-poptip":{opacity:"1",padding:"8px 12px",background:"#fff",boxShadow:"0 2px 8px rgba(0, 0, 0, 0.15)"},".component-poptip-arrow":{display:"none"},".component-poptip-text":{color:"#000",lineHeight:"20px"}}};function sn(Ge){var $e=Ge.querySelector(zt.marker.class);return $e?$e.style:{}}var ur=function(Ge){(0,m.ZT)($e,Ge);function $e(Ne,Ye){var vt=Ge.call(this,Ne,{span:[1,1],marker:function(){return new H.Cd({style:{r:6}})},markerSize:10,labelFill:"#646464",valueFill:"#646464",labelFontSize:12,valueFontSize:12,labelTextBaseline:"middle",valueTextBaseline:"middle"})||this;return vt.keyFields={},vt.keyFields=Ye||{},vt}return Object.defineProperty($e.prototype,"showValue",{get:function(){var Ne=this.attributes.valueText;return Ne?typeof Ne=="string"||typeof Ne=="number"?Ne!=="":typeof Ne=="function"?!0:Ne.attr("text")!=="":!1},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"actualSpace",{get:function(){var Ne=this.labelGroup,Ye=this.valueGroup,vt=this.attributes,an=vt.markerSize,xt=vt.focus,tn=vt.focusMarkerSize,Un=Ne.node().getBBox(),hr=Un.width,or=Un.height,$r=Ye.node().getBBox(),xr=$r.width,Rr=$r.height,pi=xt?tn!=null?tn:12:0;return{markerWidth:an,labelWidth:hr,valueWidth:xr,focusWidth:pi,height:Math.max(an,or,Rr)}},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"span",{get:function(){var Ne=this.attributes.span;if(!Ne)return[1,1];var Ye=(0,m.CR)((0,Q.j)(Ne),2),vt=Ye[0],an=Ye[1],xt=this.showValue?an:0,tn=vt+xt;return[vt/tn,xt/tn]},enumerable:!1,configurable:!0}),$e.prototype.setAttribute=function(Ne,Ye){Ge.prototype.setAttribute.call(this,Ne,Ye)},Object.defineProperty($e.prototype,"shape",{get:function(){var Ne,Ye=this.attributes,vt=Ye.markerSize,an=Ye.width,xt=this.actualSpace,tn=xt.markerWidth,Un=xt.focusWidth,hr=xt.height,or=this.actualSpace,$r=or.labelWidth,xr=or.valueWidth,Rr=(0,m.CR)(this.spacing,3),pi=Rr[0],Tn=Rr[1],ir=Rr[2];if(an){var ni=an-vt-pi-Tn-Un-ir,zr=(0,m.CR)(this.span,2),xs=zr[0],ms=zr[1];Ne=(0,m.CR)([xs*ni,ms*ni],2),$r=Ne[0],xr=Ne[1]}var ls=tn+$r+xr+pi+Tn+Un+ir;return{width:ls,height:hr,markerWidth:tn,labelWidth:$r,valueWidth:xr,focusWidth:Un}},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"spacing",{get:function(){var Ne=this.attributes,Ye=Ne.spacing,vt=Ne.focus;if(!Ye)return[0,0,0];var an=(0,m.CR)((0,Q.j)(Ye),3),xt=an[0],tn=an[1],Un=an[2];return[xt,this.showValue?tn:0,vt?Un:0]},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"layout",{get:function(){var Ne=this.shape,Ye=Ne.markerWidth,vt=Ne.labelWidth,an=Ne.valueWidth,xt=Ne.focusWidth,tn=Ne.width,Un=Ne.height,hr=(0,m.CR)(this.spacing,3),or=hr[0],$r=hr[1],xr=hr[2];return{height:Un,width:tn,markerWidth:Ye,labelWidth:vt,valueWidth:an,focusWidth:xt,position:[Ye/2,Ye+or,Ye+vt+or+$r,Ye+vt+an+or+$r+xr+xt/2]}},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"scaleSize",{get:function(){var Ne=sn(this.markerGroup.node()),Ye=this.attributes,vt=Ye.markerSize,an=Ye.markerStrokeWidth,xt=an===void 0?Ne.strokeWidth:an,tn=Ye.markerLineWidth,Un=tn===void 0?Ne.lineWidth:tn,hr=Ye.markerStroke,or=hr===void 0?Ne.stroke:hr,$r=+(xt||Un||(or?1:0))*Math.sqrt(2),xr=this.markerGroup.node().getBBox(),Rr=xr.width,pi=xr.height;return(1-$r/Math.max(Rr,pi))*vt},enumerable:!1,configurable:!0}),$e.prototype.renderMarker=function(Ne){var Ye=this,vt=this.attributes,an=vt.marker,xt=vt.classNamePrefix,tn=(0,L.zs)(this.attributes,"marker");this.markerGroup=Ne.maybeAppendByClassName(zt.markerGroup,"g").style("zIndex",0),(0,V.z)(!!an,this.markerGroup,function(){var Un,hr=Ye.markerGroup.node(),or=(Un=hr.childNodes)===null||Un===void 0?void 0:Un[0],$r=j(zt.marker.name,fe.marker,xt),xr=typeof an=="string"?new In({style:{symbol:an},className:$r}):an();if(or)if(xr.nodeName===or.nodeName)or instanceof In?or.update((0,m.pi)((0,m.pi)({},tn),{symbol:an})):((0,Ft.DM)(or,xr),(0,T.Ys)(or).styles(tn));else{if(or.remove(),!(xr instanceof In)){var pi=j(zt.marker.name,fe.marker,xt);xr.className=pi}(0,T.Ys)(xr).styles(tn),hr.appendChild(xr)}else{if(!(xr instanceof In)){var Rr=j(zt.marker.name,fe.marker,xt);xr.className=Rr,(0,T.Ys)(xr).styles(tn)}hr.appendChild(xr)}Ye.markerGroup.node().scale(1/Ye.markerGroup.node().getScale()[0]);var Tn=(0,kn.b)(Ye.markerGroup.node(),Ye.scaleSize,!0);Ye.markerGroup.node().style._transform="scale(".concat(Tn,")")})},$e.prototype.renderLabel=function(Ne){var Ye=(0,L.zs)(this.attributes,"label"),vt=Ye.text,an=(0,m._T)(Ye,["text"]),xt=this.attributes.classNamePrefix;this.labelGroup=Ne.maybeAppendByClassName(zt.labelGroup,"g").style("zIndex",0);var tn=j(zt.label.name,fe.label,xt),Un=this.labelGroup.maybeAppendByClassName(zt.label,function(){return(0,xn.S)(vt)});Un.node().setAttribute("class",tn),Un.styles(an)},$e.prototype.renderValue=function(Ne){var Ye=this,vt=(0,L.zs)(this.attributes,"value"),an=vt.text,xt=(0,m._T)(vt,["text"]),tn=this.attributes.classNamePrefix;this.valueGroup=Ne.maybeAppendByClassName(zt.valueGroup,"g").style("zIndex",0),(0,V.z)(this.showValue,this.valueGroup,function(){var Un=j(zt.value.name,fe.value,tn),hr=Ye.valueGroup.maybeAppendByClassName(zt.value,function(){return(0,xn.S)(an)});hr.node().setAttribute("class",Un),hr.styles(xt)})},$e.prototype.createPoptip=function(){var Ne=this.attributes.poptip,Ye=Ne||{},vt=Ye.render,an=(0,m._T)(Ye,["render"]),xt=new pt({style:(0,Vt.n)(Mn,an)});return this.poptipGroup=xt,xt},$e.prototype.bindPoptip=function(Ne){var Ye=this,vt=this.attributes.poptip;if(vt){var an=this.poptipGroup||this.createPoptip();an.bind(Ne,function(){var xt=Ye.attributes,tn=xt.labelText,Un=xt.valueText,hr=xt.markerFill,or=typeof tn=="string"?tn:tn==null?void 0:tn.attr("text"),$r=typeof Un=="string"?Un:Un==null?void 0:Un.attr("text");if(typeof vt.render=="function")return{html:vt.render((0,m.pi)((0,m.pi)({},Ye.keyFields),{label:or,value:$r,color:hr}))};var xr="";return(typeof or=="string"||typeof or=="number")&&(xr+='
'.concat(or,"
")),(typeof $r=="string"||typeof $r=="number")&&(xr+='
'.concat($r,"
")),{html:xr}})}},$e.prototype.renderFocus=function(Ne){var Ye=this,vt=this.attributes,an=vt.focus,xt=vt.focusMarkerSize,tn=vt.classNamePrefix,Un={x:0,y:0,size:xt,opacity:.6,symbol:"focus",stroke:"#aaaaaa",lineWidth:1};(0,$t.Z)(an)||(this.focusGroup=Ne.maybeAppendByClassName(zt.focusGroup,"g").style("zIndex",0),(0,V.z)(an,this.focusGroup,function(){var hr=j(zt.focus.name,fe.focusIcon,tn),or=new In({style:(0,m.pi)((0,m.pi)({},Un),{symbol:"focus"}),className:hr}),$r=new H.Cd({style:{r:Un.size/2,fill:"transparent"}}),xr=Ye.focusGroup.node();xr.appendChild($r),xr.appendChild(or),or.update({opacity:0}),Ne.node().addEventListener("pointerenter",function(){or.update({opacity:1})}),Ne.node().addEventListener("pointerleave",function(){or.update({opacity:0})})}))},$e.prototype.renderPoptip=function(Ne){var Ye=this,vt=this.attributes.poptip;if(vt){var an=Ne.maybeAppendByClassName(zt.value,"g").node(),xt=Ne.maybeAppendByClassName(zt.label,"g").node();[an,xt].forEach(function(tn){tn&&Ye.bindPoptip(tn)})}},$e.prototype.renderBackground=function(Ne){var Ye=this.shape,vt=Ye.width,an=Ye.height,xt=(0,L.zs)(this.attributes,"background");this.background=Ne.maybeAppendByClassName(zt.backgroundGroup,"g").style("zIndex",-1);var tn=this.background.maybeAppendByClassName(zt.background,"rect");tn.styles((0,m.pi)({width:vt,height:an},xt));var Un=this.attributes.classNamePrefix,hr=Un===void 0?"":Un;if(hr){var or=j(zt.background.name,fe.background,hr);tn.node().setAttribute("class",or)}},$e.prototype.adjustLayout=function(){var Ne=this.layout,Ye=Ne.labelWidth,vt=Ne.valueWidth,an=Ne.height,xt=(0,m.CR)(Ne.position,4),tn=xt[0],Un=xt[1],hr=xt[2],or=xt[3],$r=an/2;this.markerGroup.styles({transform:"translate(".concat(tn,", ").concat($r,")").concat(this.markerGroup.node().style._transform)}),this.labelGroup.styles({transform:"translate(".concat(Un,", ").concat($r,")")}),this.focusGroup&&this.focusGroup.styles({transform:"translate(".concat(or,", ").concat($r,")")}),(0,cr.O)(this.labelGroup.select(zt.label.class).node(),Math.ceil(Ye)),this.showValue&&(this.valueGroup.styles({transform:"translate(".concat(hr,", ").concat($r,")")}),(0,cr.O)(this.valueGroup.select(zt.value.class).node(),Math.ceil(vt)))},$e.prototype.render=function(Ne,Ye){var vt=(0,T.Ys)(Ye),an=Ne.x,xt=an===void 0?0:an,tn=Ne.y,Un=tn===void 0?0:tn;vt.styles({transform:"translate(".concat(xt,", ").concat(Un,")")}),this.renderMarker(vt),this.renderLabel(vt),this.renderValue(vt),this.renderBackground(vt),this.renderPoptip(vt),this.renderFocus(vt),this.adjustLayout()},$e}(K.w),lr=(0,B.A)({page:"item-page",navigator:"navigator",item:"item"},"items"),oi=function(Ge,$e,Ne){return Ne===void 0&&(Ne=!0),Ge?$e(Ge):Ne},mi=function(Ge){(0,m.ZT)($e,Ge);function $e(Ne){var Ye=Ge.call(this,Ne,{data:[],gridRow:1/0,gridCol:void 0,padding:0,width:1e3,height:100,rowPadding:0,colPadding:0,layout:"flex",orientation:"horizontal",click:Fe,mouseenter:Fe,mouseleave:Fe})||this;return Ye.navigatorShape=[0,0],Ye}return Object.defineProperty($e.prototype,"pageViews",{get:function(){return this.navigator.getContainer()},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"grid",{get:function(){var Ne=this.attributes,Ye=Ne.gridRow,vt=Ne.gridCol,an=Ne.data;if(!Ye&&!vt)throw new Error("gridRow and gridCol can not be set null at the same time");return Ye&&vt?[Ye,vt]:Ye?[Ye,an.length]:[an.length,vt]},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"renderData",{get:function(){var Ne=this.attributes,Ye=Ne.data,vt=Ne.layout,an=Ne.poptip,xt=Ne.focus,tn=Ne.focusMarkerSize,Un=Ne.classNamePrefix,hr=(0,L.zs)(this.attributes,"item"),or=Ye.map(function($r,xr){var Rr=$r.id,pi=Rr===void 0?xr:Rr,Tn=$r.label,ir=$r.value;return{id:"".concat(pi),index:xr,style:(0,m.pi)({layout:vt,labelText:Tn,valueText:ir,poptip:an,focus:xt,focusMarkerSize:tn,classNamePrefix:Un},Object.fromEntries(Object.entries(hr).map(function(ni){var zr=(0,m.CR)(ni,2),xs=zr[0],ms=zr[1];return[xs,(0,_t.S)(ms,[$r,xr,Ye])]})))}});return or},enumerable:!1,configurable:!0}),$e.prototype.getGridLayout=function(){var Ne=this,Ye=this.attributes,vt=Ye.orientation,an=Ye.width,xt=Ye.rowPadding,tn=Ye.colPadding,Un=(0,m.CR)(this.navigatorShape,1),hr=Un[0],or=(0,m.CR)(this.grid,2),$r=or[0],xr=or[1],Rr=xr*$r,pi=0;return this.pageViews.children.map(function(Tn,ir){var ni,zr,xs=Math.floor(ir/Rr),ms=ir%Rr,ls=Ne.ifHorizontal(xr,$r),Oi=[Math.floor(ms/ls),ms%ls];vt==="vertical"&&Oi.reverse();var Ds=(0,m.CR)(Oi,2),Bi=Ds[0],Qs=Ds[1],Na=(an-hr-(xr-1)*tn)/xr,$n=Tn.getBBox().height,Ut=(0,m.CR)([0,0],2),Kt=Ut[0],Lt=Ut[1];return vt==="horizontal"?(ni=(0,m.CR)([pi,Bi*($n+xt)],2),Kt=ni[0],Lt=ni[1],pi=Qs===xr-1?0:pi+Na+tn):(zr=(0,m.CR)([Qs*(Na+tn),pi],2),Kt=zr[0],Lt=zr[1],pi=Bi===$r-1?0:pi+$n+xt),{page:xs,index:ir,row:Bi,col:Qs,pageIndex:ms,width:Na,height:$n,x:Kt,y:Lt}})},$e.prototype.getFlexLayout=function(){var Ne=this.attributes,Ye=Ne.width,vt=Ne.height,an=Ne.rowPadding,xt=Ne.colPadding,tn=(0,m.CR)(this.navigatorShape,1),Un=tn[0],hr=(0,m.CR)(this.grid,2),or=hr[0],$r=hr[1],xr=(0,m.CR)([Ye-Un,vt],2),Rr=xr[0],pi=xr[1],Tn=(0,m.CR)([0,0,0,0,0,0,0,0],8),ir=Tn[0],ni=Tn[1],zr=Tn[2],xs=Tn[3],ms=Tn[4],ls=Tn[5],Oi=Tn[6],Ds=Tn[7];return this.pageViews.children.map(function(Bi,Qs){var Na,$n,Ut,Kt,Lt=Bi.getBBox(),Sn=Lt.width,Hn=Lt.height,ar=Oi===0?0:xt,Hr=Oi+ar+Sn;if(Hr<=Rr&&oi(ms,function(Qi){return Qi<$r}))return Na=(0,m.CR)([Oi+ar,Ds,Hr],3),ir=Na[0],ni=Na[1],Oi=Na[2],{width:Sn,height:Hn,x:ir,y:ni,page:zr,index:Qs,pageIndex:xs++,row:ls,col:ms++};$n=(0,m.CR)([ls+1,0,0,Ds+Hn+an],4),ls=$n[0],ms=$n[1],Oi=$n[2],Ds=$n[3];var fi=Ds+Hn;return fi<=pi&&oi(ls,function(Qi){return Qi0?(this.navigatorShape=[55,0],Ne.call(this)):Ye},enumerable:!1,configurable:!0}),$e.prototype.ifHorizontal=function(Ne,Ye){var vt=this.attributes.orientation;return Yt(vt,Ne,Ye)},$e.prototype.flattenPage=function(Ne){Ne.querySelectorAll(lr.item.class).forEach(function(Ye){Ne.appendChild(Ye)}),Ne.querySelectorAll(lr.page.class).forEach(function(Ye){var vt=Ne.removeChild(Ye);vt.destroy()})},$e.prototype.renderItems=function(Ne){var Ye=this.attributes,vt=Ye.click,an=Ye.mouseenter,xt=Ye.mouseleave,tn=Ye.classNamePrefix;this.flattenPage(Ne);var Un=this.dispatchCustomEvent.bind(this),hr=j(lr.item.name,fe.item,tn);(0,T.Ys)(Ne).selectAll(lr.item.class).data(this.renderData,function(or){return or.id}).join(function(or){return or.append(function($r){var xr=$r.style,Rr=(0,m._T)($r,["style"]);return new ur({style:xr},Rr)}).attr("className",hr).on("click",function(){vt==null||vt(this),Un("itemClick",{item:this})}).on("pointerenter",function(){an==null||an(this),Un("itemMouseenter",{item:this})}).on("pointerleave",function(){xt==null||xt(this),Un("itemMouseleave",{item:this})})},function(or){return or.each(function($r){var xr=$r.style;this.update(xr)})},function(or){return or.remove()})},$e.prototype.relayoutNavigator=function(){var Ne,Ye=this.attributes,vt=Ye.layout,an=Ye.width,xt=((Ne=this.pageViews.children[0])===null||Ne===void 0?void 0:Ne.getBBox().height)||0,tn=(0,m.CR)(this.navigatorShape,2),Un=tn[0],hr=tn[1];this.navigator.update(vt==="grid"?{pageWidth:an-Un,pageHeight:xt-hr}:{})},$e.prototype.adjustLayout=function(){var Ne=this,Ye=Object.entries(lt(this.itemsLayout,"page")).map(function(an){var xt=(0,m.CR)(an,2),tn=xt[0],Un=xt[1];return{page:tn,layouts:Un}}),vt=(0,m.ev)([],(0,m.CR)(this.navigator.getContainer().children),!1);Ye.forEach(function(an){var xt=an.layouts,tn=Ne.pageViews.appendChild(new H.ZA({className:lr.page.name}));xt.forEach(function(Un){var hr=Un.x,or=Un.y,$r=Un.index,xr=Un.width,Rr=Un.height,pi=vt[$r];tn.appendChild(pi),(0,ft.Z)(pi,"__layout__",Un),pi.update({x:hr,y:or,width:xr,height:Rr})})}),this.relayoutNavigator()},$e.prototype.renderNavigator=function(Ne){var Ye=this.attributes,vt=Ye.orientation,an=Ye.classNamePrefix,xt=(0,L.zs)(this.attributes,"nav"),tn=(0,Vt.n)({orientation:vt,classNamePrefix:an},xt),Un=this;return Ne.selectAll(lr.navigator.class).data(["nav"]).join(function(hr){return hr.append(function(){return new un({style:tn})}).attr("className",lr.navigator.name).each(function(){Un.navigator=this})},function(hr){return hr.each(function(){this.update(tn)})},function(hr){return hr.remove()}),this.navigator},$e.prototype.getBBox=function(){return this.navigator.getBBox()},$e.prototype.render=function(Ne,Ye){var vt=this.attributes.data;if(!(!vt||vt.length===0)){var an=this.renderNavigator((0,T.Ys)(Ye));this.renderItems(an.getContainer()),this.adjustLayout()}},$e.prototype.dispatchCustomEvent=function(Ne,Ye){var vt=new H.Aw(Ne,{detail:Ye});this.dispatchEvent(vt)},$e}(K.w),Le=(0,B.A)({markerGroup:"marker-group",marker:"marker",labelGroup:"label-group",label:"label"},"handle"),k={showLabel:!0,formatter:function(Ge){return Ge.toString()},markerSize:25,markerStroke:"#c5c5c5",markerFill:"#fff",markerLineWidth:1,labelFontSize:12,labelFill:"#c5c5c5",labelText:"",orientation:"vertical",spacing:0},W=function(Ge){(0,m.ZT)($e,Ge);function $e(Ne){return Ge.call(this,Ne,k)||this}return $e.prototype.render=function(Ne,Ye){var vt=(0,T.Ys)(Ye).maybeAppendByClassName(Le.markerGroup,"g");this.renderMarker(vt);var an=(0,T.Ys)(Ye).maybeAppendByClassName(Le.labelGroup,"g");this.renderLabel(an)},$e.prototype.renderMarker=function(Ne){var Ye=this,vt=this.attributes,an=vt.orientation,xt=vt.classNamePrefix,tn=vt.markerSymbol,Un=tn===void 0?Yt(an,"horizontalHandle","verticalHandle"):tn;(0,V.z)(!!Un,Ne,function(hr){var or=(0,L.zs)(Ye.attributes,"marker"),$r=(0,m.pi)({symbol:Un},or),xr=j(Le.marker.name,fe.handleMarker,xt);if(Ye.marker=hr.maybeAppendByClassName(Le.marker,function(){return new In({style:$r,className:xr})}).update($r),xt){var Rr=Ye.marker.node().querySelector(".marker");if(Rr){var pi=Rr.getAttribute("class")||"",Tn=pi.split(" ")[0],ir=j(Tn,fe.handleMarker,xt);Rr.setAttribute("class",ir)}}})},$e.prototype.renderLabel=function(Ne){var Ye=this,vt=this.attributes,an=vt.showLabel,xt=vt.orientation,tn=vt.spacing,Un=tn===void 0?0:tn,hr=vt.formatter,or=vt.classNamePrefix;(0,V.z)(an,Ne,function($r){var xr,Rr=(0,L.zs)(Ye.attributes,"label"),pi=Rr.text,Tn=(0,m._T)(Rr,["text"]),ir=((xr=$r.select(Le.marker.class))===null||xr===void 0?void 0:xr.node().getBBox())||{},ni=ir.width,zr=ni===void 0?0:ni,xs=ir.height,ms=xs===void 0?0:xs,ls=(0,m.CR)(Yt(xt,[0,ms+Un,"center","top"],[zr+Un,0,"start","middle"]),4),Oi=ls[0],Ds=ls[1],Bi=ls[2],Qs=ls[3],Na=j(Le.label.name,fe.handleLabel,or);$r.maybeAppendByClassName(Le.label,"text").attr("className",Na).styles((0,m.pi)((0,m.pi)({},Tn),{x:Oi,y:Ds,text:hr(pi).toString(),textAlign:Bi,textBaseline:Qs}))})},$e}(K.w),S={showTitle:!0,padding:0,orientation:"horizontal",backgroundFill:"transparent",titleText:"",titleSpacing:4,titlePosition:"top-left",titleFill:"#2C3542",titleFontWeight:"bold",titleFontFamily:"sans-serif",titleFontSize:12},G=(0,Vt.n)({},S,{}),ae=(0,Vt.n)({},S,(0,L.dq)(k,"handle"),{color:["#d0e3fa","#acc7f6","#8daaf2","#6d8eea","#4d73cd","#325bb1","#5a3e75","#8c3c79","#e23455","#e7655b"],indicatorBackgroundFill:"#262626",indicatorLabelFill:"white",indicatorLabelFontSize:12,indicatorVisibility:"hidden",labelAlign:"value",labelDirection:"positive",labelSpacing:5,showHandle:!0,showIndicator:!0,showLabel:!0,slidable:!0,titleText:"",type:"continuous"}),We=.01,tt=.5,gt=(0,B.A)({title:"title",html:"html",titleGroup:"title-group",items:"items",itemsGroup:"items-group",contentGroup:"content-group",ribbonGroup:"ribbon-group",ribbon:"ribbon",handlesGroup:"handles-group",handle:"handle",startHandle:"start-handle",endHandle:"end-handle",labelGroup:"label-group",label:"label",indicator:"indicator"},"legend"),bt=function(Ge){(0,m.ZT)($e,Ge);function $e(){return Ge!==null&&Ge.apply(this,arguments)||this}return $e.prototype.update=function(Ne){this.attr(Ne)},$e}(H.k9),Bn=function(Ge){(0,m.ZT)($e,Ge);function $e(Ne){return Ge.call(this,Ne,G)||this}return $e.prototype.renderTitle=function(Ne,Ye,vt){var an=this.attributes,xt=an.showTitle,tn=an.titleText,Un=an.classNamePrefix,hr=(0,L.zs)(this.attributes,"title"),or=(0,m.CR)((0,L.Hm)(hr),2),$r=or[0],xr=or[1];this.titleGroup=Ne.maybeAppendByClassName(gt.titleGroup,"g").styles(xr);var Rr=(0,m.pi)((0,m.pi)({width:Ye,height:vt},$r),{text:xt?tn:"",classNamePrefix:Un});this.title=this.titleGroup.maybeAppendByClassName(gt.title,function(){return new Xe({style:Rr})}).update(Rr)},$e.prototype.renderCustom=function(Ne){var Ye=this.attributes.data,vt={innerHTML:this.attributes.render(Ye),pointerEvents:"auto"};Ne.maybeAppendByClassName(gt.html,function(){return new bt({className:gt.html.name,style:vt})}).update(vt)},$e.prototype.renderItems=function(Ne,Ye){var vt=Ye.x,an=Ye.y,xt=Ye.width,tn=Ye.height,Un=(0,L.zs)(this.attributes,"title",!0),hr=(0,m.CR)((0,L.Hm)(Un),2),or=hr[0],$r=hr[1],xr=(0,m.pi)((0,m.pi)({},or),{width:xt,height:tn,x:0,y:0});this.itemsGroup=Ne.maybeAppendByClassName(gt.itemsGroup,"g").styles((0,m.pi)((0,m.pi)({},$r),{transform:"translate(".concat(vt,", ").concat(an,")")}));var Rr=this;this.itemsGroup.selectAll(gt.items.class).data(["items"]).join(function(pi){return pi.append(function(){return new mi({style:xr})}).attr("className",gt.items.name).each(function(){Rr.items=(0,T.Ys)(this)})},function(pi){return pi.update(xr)},function(pi){return pi.remove()})},$e.prototype.adjustLayout=function(){var Ne=this.attributes.showTitle;if(Ne){var Ye=this.title.node().getAvailableSpace(),vt=Ye.x,an=Ye.y;this.itemsGroup.node().style.transform="translate(".concat(vt,", ").concat(an,")")}},Object.defineProperty($e.prototype,"availableSpace",{get:function(){var Ne=this.attributes,Ye=Ne.showTitle,vt=Ne.width,an=Ne.height;return Ye?this.title.node().getAvailableSpace():new F.b(0,0,vt,an)},enumerable:!1,configurable:!0}),$e.prototype.getBBox=function(){var Ne,Ye,vt=(Ne=this.title)===null||Ne===void 0?void 0:Ne.node(),an=(Ye=this.items)===null||Ye===void 0?void 0:Ye.node();return!vt||!an?Ge.prototype.getBBox.call(this):Me(vt,an)},$e.prototype.render=function(Ne,Ye){var vt=this.attributes,an=vt.width,xt=vt.height,tn=vt.x,Un=tn===void 0?0:tn,hr=vt.y,or=hr===void 0?0:hr,$r=vt.classNamePrefix,xr=vt.render,Rr=(0,T.Ys)(Ye),pi=Ye.className||"legend-category";$r?Ye.attr("className","".concat(pi," ").concat($r,"legend")):Ye.className||Ye.attr("className","legend-category"),Ye.style.transform="translate(".concat(Un,", ").concat(or,")"),xr?this.renderCustom(Rr):(this.renderTitle(Rr,an,xt),this.renderItems(Rr,this.availableSpace),this.adjustLayout())},$e}(K.w)},91498:function(Ie,Be,_){"use strict";_.d(Be,{s:function(){return yo}});var m=_(80813),K=_(70208),H=_(97304),L=_(66623),T=_(99247),F=_(17911),B=_(88839),U=null,Q=null;function V(le){return le instanceof Date?le:new Date(le)}function j(le){for(var se=__read(le,2),q=se[0],te=se[1],Ae=U.indexOf(q),Pe=U.indexOf(te),Qe="",He=Ae;He<=Pe;He+=1)if(Qe+=Q[He],He2&&(qe=":"),Qe+=qe}return Qe}function Y(le,se){var q={YYYY:le.getFullYear(),MM:le.getMonth()+1,DD:le.getDate(),HH:le.getHours(),mm:le.getMinutes(),ss:le.getSeconds()},te=se;return Object.keys(q).forEach(function(Ae){var Pe=q[Ae];te=te.replace(Ae,Ae==="YYYY"?"".concat(Pe):"".concat(Pe).padStart(2,"0"))}),te}function fe(le,se){return V(le).getTime()-V(se).getTime()}function ue(le,se){var q=__read([V(le),V(se)],2),te=q[0],Ae=q[1];return te.getFullYear()!==Ae.getFullYear()?"year":te.getMonth()!==Ae.getMonth()?"month":te.getDay()!==Ae.getDay()?"day":te.getHours()!==Ae.getHours()?"hour":te.getMinutes()!==Ae.getMinutes()?"minute":"second"}function Me(le,se){var q=new Date(le),te={year:function(Ae){Ae.setMonth(0),Ae.setHours(0,0,0,0)},month:function(Ae){Ae.setDate(1),Ae.setHours(0,0,0,0)},day:function(Ae){return Ae.setHours(0,0,0,0)},hour:function(Ae){return Ae.setMinutes(0,0,0)},minute:function(Ae){return Ae.setSeconds(0,0)},second:function(Ae){return Ae.setMilliseconds(0)}};return te[se](q),Y(q,j(["year",se]))}var _e=_(86314),Ce=_(67756);function Xe(le,se){if(le.length<=se)return le;for(var q=Math.floor(le.length/se),te=[],Ae=0;Ae180?1:0,da=le>se?0:1,ua=!1;return ua?"M".concat(q,",").concat(te,",L").concat(Jn,",").concat(Ur,",A").concat(He,",").concat(qe,",0,").concat(Es,",").concat(da,",").concat(Ai,",").concat(hi,",L").concat(q,",").concat(te):"M".concat(Jn,",").concat(Ur,",A").concat(He,",").concat(qe,",0,").concat(Es,",").concat(da,",").concat(Ai,",").concat(hi)}function Fi(le){var se=le.attributes,q=se.startAngle,te=se.endAngle,Ae=se.center,Pe=se.radius;return(0,m.ev)((0,m.ev)([q,te],(0,m.CR)(Ae),!1),[Pe],!1)}function ui(le,se,q,te){var Ae=se.startAngle,Pe=se.endAngle,Qe=se.center,He=se.radius,qe=se.classNamePrefix;return le.selectAll(Ot.line.class).data([{d:Ri.apply(void 0,(0,m.ev)((0,m.ev)([Ae,Pe],(0,m.CR)(Qe),!1),[He],!1))}],function(yt,qt){return qt}).join(function(yt){var qt=yt.append("path").attr("className",Ot.line.name).styles(se).styles({d:function(on){return on.d}});return xn(qt,Ot.line,lt.line,qe),qt},function(yt){return yt.transition(function(){var qt=this,on=On(this,Fi(this),(0,m.ev)((0,m.ev)([Ae,Pe],(0,m.CR)(Qe),!1),[He],!1),te.update);if(on){var pn=function(){var Vn=(0,un.Z)(qt.attributes,"__keyframe_data__");qt.style.d=Ri.apply(void 0,(0,m.ev)([],(0,m.CR)(Vn),!1))};on.onframe=pn,on.onfinish=pn}return on}).styles(se)},function(yt){return yt.remove()}).styles(q).transitions()}function gs(le,se){var q=se.truncRange,te=se.truncShape,Ae=se.lineExtension}function Di(le,se,q){q===void 0&&(q=[0,0]);var te=(0,m.CR)([le,se,q],3),Ae=(0,m.CR)(te[0],2),Pe=Ae[0],Qe=Ae[1],He=(0,m.CR)(te[1],2),qe=He[0],yt=He[1],qt=(0,m.CR)(te[2],2),on=qt[0],pn=qt[1],Vn=(0,m.CR)([qe-Pe,yt-Qe],2),Jn=Vn[0],Ur=Vn[1],Sr=Math.sqrt(Math.pow(Jn,2)+Math.pow(Ur,2)),Ai=(0,m.CR)([-on/Sr,pn/Sr],2),hi=Ai[0],_i=Ai[1];return[hi*Jn,hi*Ur,_i*Jn,_i*Ur]}function Nn(le){var se=(0,m.CR)(le,2),q=(0,m.CR)(se[0],2),te=q[0],Ae=q[1],Pe=(0,m.CR)(se[1],2),Qe=Pe[0],He=Pe[1];return{x1:te,y1:Ae,x2:Qe,y2:He}}function cn(le,se,q,te){var Ae=se.showTrunc,Pe=se.startPos,Qe=se.endPos,He=se.truncRange,qe=se.lineExtension,yt=se.classNamePrefix,qt=(0,m.CR)([Pe,Qe],2),on=(0,m.CR)(qt[0],2),pn=on[0],Vn=on[1],Jn=(0,m.CR)(qt[1],2),Ur=Jn[0],Sr=Jn[1],Ai=(0,m.CR)(qe?Di(Pe,Qe,qe):new Array(4).fill(0),4),hi=Ai[0],_i=Ai[1],Ii=Ai[2],_s=Ai[3],Ns=function(fl){return le.selectAll(Ot.line.class).data(fl,function(po,Sc){return Sc}).join(function(po){var Sc=po.append("line").styles(q).transition(function(ps){return(0,_e.eR)(this,Nn(ps.line),!1)});return Sc.attr("className",function(ps){if(!yt)return"".concat(Ot.line.name," ").concat(ps.className);var xo=$t(Ot.line.name,lt.line,yt);if(ps.className===Ot.lineFirst.name){var lc=$t(Ot.lineFirst.name,lt.lineFirst,yt);return"".concat(xo," ").concat(lc)}if(ps.className===Ot.lineSecond.name){var lc=$t(Ot.lineSecond.name,lt.lineSecond,yt);return"".concat(xo," ").concat(lc)}return xo}),Sc},function(po){return po.styles(q).transition(function(Sc){var ps=Sc.line;return(0,_e.eR)(this,Nn(ps),te.update)})},function(po){return po.remove()}).transitions()};if(!Ae||!He)return Ns([{line:[[pn+hi,Vn+_i],[Ur+Ii,Sr+_s]],className:Ot.line.name}]);var Es=(0,m.CR)(He,2),da=Es[0],ua=Es[1],Io=Ur-pn,io=Sr-Vn,so=(0,m.CR)([pn+Io*da,Vn+io*da],2),ti=so[0],uo=so[1],Ra=(0,m.CR)([pn+Io*ua,Vn+io*ua],2),qo=Ra[0],ec=Ra[1],ga=Ns([{line:[[pn+hi,Vn+_i],[ti,uo]],className:Ot.lineFirst.name},{line:[[qo,ec],[Ur+Ii,Sr+_s]],className:Ot.lineSecond.name}]);return gs(le,se),ga}function jt(le,se,q,te){var Ae=q.showArrow,Pe=q.showTrunc,Qe=q.lineArrow,He=q.lineArrowOffset,qe=q.lineArrowSize,yt;if(se==="arc"?yt=le.select(Ot.line.class):Pe?yt=le.select(Ot.lineSecond.class):yt=le.select(Ot.line.class),!Ae||!Qe||q.type==="arc"&&ys(q.startAngle,q.endAngle)){var qt=yt.node();qt&&(qt.style.markerEnd=void 0);return}var on=(0,In.S)(Qe);on.attr(te),(0,pr.b)(on,qe,!0),yt.style("markerEnd",on).style("markerEndOffset",-He)}function ct(le,se,q){var te=se.type,Ae,Pe=(0,B.zs)(se,"line");return te==="linear"?Ae=cn(le,se,Je(Pe,"arrow"),q):Ae=ui(le,se,Je(Pe,"arrow"),q),jt(le,te,se,Pe),Ae}function pt(le,se){return St(le,se.gridDirection,se)}function zt(le){var se=le.type,q=le.gridCenter;return se==="linear"?q:q||le.center}function Mn(le,se){var q=se.gridLength;return le.map(function(te,Ae){var Pe=te.value,Qe=(0,m.CR)(Lr(Pe,se),2),He=Qe[0],qe=Qe[1],yt=(0,m.CR)(rr(pt(Pe,se),q),2),qt=yt[0],on=yt[1];return{id:Ae,points:[[He,qe],[He+qt,qe+on]]}})}function sn(le,se){var q=se.gridControlAngles,te=zt(se);if(!te)throw new Error("grid center is not provide");if(le.length<2)throw new Error("Invalid grid data");if(!q||q.length===0)throw new Error("Invalid gridControlAngles");var Ae=(0,m.CR)(te,2),Pe=Ae[0],Qe=Ae[1];return le.map(function(He,qe){var yt=He.value,qt=(0,m.CR)(Lr(yt,se),2),on=qt[0],pn=qt[1],Vn=(0,m.CR)([on-Pe,pn-Qe],2),Jn=Vn[0],Ur=Vn[1],Sr=[];return q.forEach(function(Ai){var hi=Yr(Ai),_i=(0,m.CR)([Math.cos(hi),Math.sin(hi)],2),Ii=_i[0],_s=_i[1],Ns=Jn*Ii-Ur*_s+Pe,Es=Jn*_s+Ur*Ii+Qe;Sr.push([Ns,Es])}),{points:Sr,id:qe}})}function ur(le,se,q,te){var Ae=q.classNamePrefix,Pe=(0,B.zs)(q,"grid"),Qe=Pe.type,He=Pe.areaFill,qe=zt(q),yt=wt(se,q.gridFilter),qt=Qe==="segment"?Mn(yt,q):sn(yt,q),on=(0,m.pi)((0,m.pi)({},Pe),{center:qe,areaFill:(0,jn.Z)(He)?yt.map(function(pn,Vn){return(0,An.S)(He,[pn,Vn,yt])}):He,animate:te,data:qt});return le.selectAll(Ot.grid.class).data([1]).join(function(pn){var Vn=pn.append(function(){return new Bt({style:on})}).attr("className",Ot.grid.name);return xn(Vn,Ot.grid,lt.grid,Ae),Vn},function(pn){return pn.transition(function(){return this.update(on)})},function(pn){return pn.remove()}).transitions()}function lr(le,se,q,te,Ae){return te===void 0&&(te=!0),Ae===void 0&&(Ae=!1),te&&le===se||Ae&&le===q?!0:le>se&&le0,hi=te-qe,_i=Ae-yt,Ii=pn*_i-Vn*hi;if(Ii<0===Ai)return!1;var _s=Jn*_i-Ur*hi;return!(_s<0===Ai||Ii>Sr===Ai||_s>Sr===Ai)}function xt(le,se){var q=[[le[0],le[1],le[2],le[3]],[le[2],le[3],le[4],le[5]],[le[4],le[5],le[6],le[7]],[le[6],le[7],le[0],le[1]]];return q.some(function(te){return an(se,te)})}var tn={lineToLine:an,intersectBoxLine:xt,getBounds:bt};function Un(le,se,q){var te,Ae,Pe=bt(le,q).flat(1),Qe=bt(se,q).flat(1),He=[[Pe[0],Pe[1],Pe[2],Pe[3]],[Pe[0],Pe[1],Pe[4],Pe[5]],[Pe[4],Pe[5],Pe[6],Pe[7]],[Pe[2],Pe[3],Pe[6],Pe[7]]];try{for(var qe=(0,m.XA)(He),yt=qe.next();!yt.done;yt=qe.next()){var qt=yt.value;if(xt(Qe,qt))return!0}}catch(on){te={error:on}}finally{try{yt&&!yt.done&&(Ae=qe.return)&&Ae.call(qe)}finally{if(te)throw te.error}}return!1}function hr(le,se){var q=le.type,te=le.labelDirection,Ae=le.crossSize;if(!Ae)return!1;if(q==="arc"){var Pe=le.center,Qe=le.radius,He=(0,m.CR)(Pe,2),qe=He[0],yt=He[1],qt=te==="negative"?0:Ae,on=-Qe-qt,pn=Qe+qt,Vn=(0,m.CR)((0,tt.j)(se),4),Jn=Vn[0],Ur=Vn[1],Sr=Vn[2],Ai=Vn[3];return new gt(qe+on-Ai,yt+on-Jn,qe+pn+Ur,yt+pn+Sr)}var hi=(0,m.CR)(le.startPos,2),_i=hi[0],Ii=hi[1],_s=(0,m.CR)(le.endPos,2),Ns=_s[0],Es=_s[1],da=(0,m.CR)(Pr(le)?[-se,0,se,0]:[0,se,0,-se],4),ua=da[0],Io=da[1],io=da[2],so=da[3],ti=Yt(0,le),uo=rr(ti,Ae),Ra=new gt(_i,Ii,Ns,Es);return Ra.x1+=so,Ra.y1+=ua,Ra.x2+=Io+uo[0],Ra.y2+=io+uo[1],Ra}function or(le,se,q){var te,Ae,Pe=se.crossPadding,Qe=new Set,He=null,qe=hr(se,Pe),yt=function(Jn){return qe?vt(qe,Jn):!0},qt=function(Jn,Ur){return!Jn||!Jn.firstChild?!0:!Un(Jn.firstChild,Ur.firstChild,(0,tt.j)(q))};try{for(var on=(0,m.XA)(le),pn=on.next();!pn.done;pn=on.next()){var Vn=pn.value;yt(Vn)?!He||qt(He,Vn)?He=Vn:(Qe.add(He),Qe.add(Vn)):Qe.add(Vn)}}catch(Jn){te={error:Jn}}finally{try{pn&&!pn.done&&(Ae=on.return)&&Ae.call(on)}finally{if(te)throw te.error}}return Array.from(Qe)}function $r(le,se){return se===void 0&&(se={}),(0,We.Z)(le)?0:typeof le=="number"?le:Math.floor((0,k.Ux)(le,se))}function xr(le,se,q,te){if(!(le.length<=0)){var Ae=se.suffix,Pe=Ae===void 0?"...":Ae,Qe=se.minLength,He=se.maxLength,qe=He===void 0?1/0:He,yt=se.step,qt=yt===void 0?" ":yt,on=se.margin,pn=on===void 0?[0,0,0,0]:on,Vn=(0,k.qT)(te.getTextShape(le[0])),Jn=$r(qt,Vn),Ur=Qe?$r(Qe,Vn):Jn,Sr=$r(qe,Vn);((0,We.Z)(Sr)||Sr===1/0)&&(Sr=Math.max.apply(null,le.map(function(uo){return uo.getBBox().width})));for(var Ai=le.slice(),hi=(0,m.CR)(pn,4),_i=hi[0],Ii=_i===void 0?0:_i,_s=hi[1],Ns=_s===void 0?0:_s,Es=hi[2],da=Es===void 0?Ii:Es,ua=hi[3],Io=ua===void 0?Ns:ua,io=function(uo){if(Ai.forEach(function(Ra){te.ellipsis(te.getTextShape(Ra),uo,Pe)}),Ai=or(le,q,pn),Ai.length<1)return{value:void 0}},so=Sr;so>Ur+Jn;so-=Jn){var ti=io(so);if(typeof ti=="object")return ti.value}}}var Rr=function(le){return le!==void 0&&le!=null&&!Number.isNaN(le)},pi=_(2080),Tn={parity:function(le,se){var q=se.seq,te=q===void 0?2:q;return le.filter(function(Ae,Pe){return Pe%te?((0,mi.Cp)(Ae),!1):!0})}},ir=function(le){return le.filter(Rr)};function ni(le,se,q,te){var Ae=le.length,Pe=se.keepHeader,Qe=se.keepTail;if(!(Ae<=1||Ae===2&&Pe&&Qe)){var He=Tn.parity,qe=function(_i){return _i.forEach(te.show),_i},yt=2,qt=le.slice(),on=le.slice(),pn=Math.min.apply(Math,(0,m.ev)([1],(0,m.CR)(le.map(function(_i){return _i.getBBox().width})),!1));if(q.type==="linear"&&(si(q)||Pr(q))){var Vn=(0,pi._v)(le[0]).left,Jn=(0,pi._v)(le[Ae-1]).right,Ur=Math.abs(Jn-Vn)||1;yt=Math.max(Math.floor(Ae*pn/Ur),yt)}var Sr,Ai;for(Pe&&(Sr=qt.splice(0,1)[0]),Qe&&(Ai=qt.splice(-1,1)[0],qt.reverse()),qe(qt);ytHe)){if(q.type==="linear"&&si(q)){if(Ai(He),Ur())return}else for(var hi=Jn;hi<=He;hi++)if(Ai(hi),Ur())return;yt&&Ai(Vn)}}var ls=new Map([["hide",ni],["rotate",zr],["ellipsis",xr],["wrap",ms]]);function Oi(le,se,q){return se.labelOverlap.length<1?!1:q==="hide"?!(0,ae.X)(le[0]):q==="rotate"?!le.some(function(te){var Ae;return!!(!((Ae=te.attr("transform"))===null||Ae===void 0)&&Ae.includes("rotate"))}):q==="ellipsis"||q==="wrap"?le.filter(function(te){return te.querySelector("text")}).length>=1:!0}function Ds(le,se,q,te){var Ae=se.labelOverlap,Pe=Ae===void 0?[]:Ae;Pe.length&&Pe.forEach(function(Qe){var He=Qe.type,qe=ls.get(He);Oi(le,se,He)&&(qe==null||qe(le,Qe,se,te,q))})}function Bi(){for(var le=[],se=0;sepn[0]&&da0&&Number.isFinite(le)?se:q},Df=function(le,se){return le*se},Sf=function(le,se){return le/2+(se||0)/2},Du=function(le){return le};class ju{constructor(se){this.options=(0,ft.Z)({},this.getDefaultOptions()),this.update(se)}getOptions(){return this.options}update(se={}){this.options=(0,ft.Z)({},this.options,se),this.rescale(se)}rescale(se){}}function pu(le,se){return se-le?q=>(q-le)/(se-le):q=>.5}function $c(le,...se){return se.reduce((q,te)=>Ae=>q(te(Ae)),le)}function lf(le,se,q,te,Ae){let Pe=q||0,Qe=te||le.length;const He=Ae||(qe=>qe);for(;Pese?Qe=qe:Pe=qe+1}return Pe}var Nh=_(75196),Po=_.n(Nh);function cf(le,se,q){let te=q;return te<0&&(te+=1),te>1&&(te-=1),te<1/6?le+(se-le)*6*te:te<1/2?se:te<2/3?le+(se-le)*(2/3-te)*6:le}function Zh(le){const se=le[0]/360,q=le[1]/100,te=le[2]/100,Ae=le[3];if(q===0)return[te*255,te*255,te*255,Ae];const Pe=te<.5?te*(1+q):te+q-te*q,Qe=2*te-Pe,He=cf(Qe,Pe,se+1/3),qe=cf(Qe,Pe,se),yt=cf(Qe,Pe,se-1/3);return[He*255,qe*255,yt*255,Ae]}function Lh(le){const se=Po().get(le);if(!se)return null;const{model:q,value:te}=se;return q==="rgb"?te:q==="hsl"?Zh(te):null}const kc=(le,se)=>q=>le*(1-q)+se*q,yl=(le,se)=>{const q=Lh(le),te=Lh(se);return q===null||te===null?q?()=>le:()=>se:Ae=>{const Pe=new Array(4);for(let qt=0;qt<4;qt+=1){const on=q[qt],pn=te[qt];Pe[qt]=on*(1-Ae)+pn*Ae}const[Qe,He,qe,yt]=Pe;return`rgba(${Math.round(Qe)}, ${Math.round(He)}, ${Math.round(qe)}, ${yt})`}},xl=(le,se)=>typeof le=="number"&&typeof se=="number"?kc(le,se):typeof le=="string"&&typeof se=="string"?yl(le,se):()=>le,Of=(le,se)=>{const q=kc(le,se);return te=>Math.round(q(te))};var nu=_(49527);function Rc(le){return le===null}function rl(le){return!(0,nu.Z)(le)&&!Rc(le)&&!Number.isNaN(le)}const gh=Math.sqrt(50),Fh=Math.sqrt(10),Kh=Math.sqrt(2);function _l(le,se,q){const te=(se-le)/Math.max(0,q),Ae=Math.floor(Math.log(te)/Math.LN10),Pe=te/yg(10,Ae);return Ae>=0?(Pe>=gh?10:Pe>=Fh?5:Pe>=Kh?2:1)*yg(10,Ae):-yg(10,-Ae)/(Pe>=gh?10:Pe>=Fh?5:Pe>=Kh?2:1)}function Ss(le,se,q){const te=Math.abs(se-le)/Math.max(0,q);let Ae=yg(10,Math.floor(Math.log(te)/Math.LN10));const Pe=te/Ae;return Pe>=gh?Ae*=10:Pe>=Fh?Ae*=5:Pe>=Kh&&(Ae*=2),se{const te=[le,se];let Ae=0,Pe=te.length-1,Qe=te[Ae],He=te[Pe],qe;return He0?(Qe=Math.floor(Qe/qe)*qe,He=Math.ceil(He/qe)*qe,qe=_l(Qe,He,q)):qe<0&&(Qe=Math.ceil(Qe*qe)/qe,He=Math.floor(He*qe)/qe,qe=_l(Qe,He,q)),qe>0?(te[Ae]=Math.floor(Qe/qe)*qe,te[Pe]=Math.ceil(He/qe)*qe):qe<0&&(te[Ae]=Math.ceil(Qe*qe)/qe,te[Pe]=Math.floor(He*qe)/qe),te};function $h(le,se){const q=sese?le:se;return Ae=>Math.min(Math.max(q,Ae),te)}const Xh=(le,se,q)=>{const[te,Ae]=le,[Pe,Qe]=se;let He,qe;return te{const te=Math.min(le.length,se.length)-1,Ae=new Array(te),Pe=new Array(te),Qe=le[0]>le[te],He=Qe?[...le].reverse():le,qe=Qe?[...se].reverse():se;for(let yt=0;yt{const qt=lf(le,yt,1,te)-1,on=Ae[qt],pn=Pe[qt];return $c(pn,on)(yt)}},Eh=(le,se,q,te)=>(Math.min(le.length,se.length)>2?QA:Xh)(le,se,te?Of:q);class uf extends ju{getDefaultOptions(){return{domain:[0,1],range:[0,1],nice:!1,clamp:!1,round:!1,interpolate:kc,tickCount:5}}map(se){return rl(se)?this.output(se):this.options.unknown}invert(se){return rl(se)?this.input(se):this.options.unknown}nice(){if(!this.options.nice)return;const[se,q,te,...Ae]=this.getTickMethodOptions();this.options.domain=this.chooseNice()(se,q,te,...Ae)}getTicks(){const{tickMethod:se}=this.options,[q,te,Ae,...Pe]=this.getTickMethodOptions();return se(q,te,Ae,...Pe)}getTickMethodOptions(){const{domain:se,tickCount:q}=this.options,te=se[0],Ae=se[se.length-1];return[te,Ae,q]}chooseNice(){return Ru}rescale(){this.nice();const[se,q]=this.chooseTransforms();this.composeOutput(se,this.chooseClamp(se)),this.composeInput(se,q,this.chooseClamp(q))}chooseClamp(se){const{clamp:q,range:te}=this.options,Ae=this.options.domain.map(se),Pe=Math.min(Ae.length,te.length);return q?$h(Ae[0],Ae[Pe-1]):Du}composeOutput(se,q){const{domain:te,range:Ae,round:Pe,interpolate:Qe}=this.options,He=Eh(te.map(se),Ae,Qe,Pe);this.output=$c(He,q,se)}composeInput(se,q,te){const{domain:Ae,range:Pe}=this.options,Qe=Eh(Pe,Ae.map(se),kc);this.input=$c(q,te,Qe)}}const jh=(le,se,q)=>{let te,Ae,Pe=le,Qe=se;if(Pe===Qe&&q>0)return[Pe];let He=_l(Pe,Qe,q);if(He===0||!Number.isFinite(He))return[];if(He>0){Pe=Math.ceil(Pe/He),Qe=Math.floor(Qe/He),Ae=new Array(te=Math.ceil(Qe-Pe+1));for(let qe=0;qe`${se}`:typeof le=="object"?se=>JSON.stringify(se):se=>se}class al extends ju{getDefaultOptions(){return{domain:[],range:[],unknown:Bl}}constructor(se){super(se)}map(se){return this.domainIndexMap.size===0&&ac(this.domainIndexMap,this.getDomain(),this.domainKey),lu({value:this.domainKey(se),mapper:this.domainIndexMap,from:this.getDomain(),to:this.getRange(),notFoundReturn:this.options.unknown})}invert(se){return this.rangeIndexMap.size===0&&ac(this.rangeIndexMap,this.getRange(),this.rangeKey),lu({value:this.rangeKey(se),mapper:this.rangeIndexMap,from:this.getRange(),to:this.getDomain(),notFoundReturn:this.options.unknown})}rescale(se){const[q]=this.options.domain,[te]=this.options.range;if(this.domainKey=Ou(q),this.rangeKey=Ou(te),!this.rangeIndexMap){this.rangeIndexMap=new Map,this.domainIndexMap=new Map;return}(!se||se.range)&&this.rangeIndexMap.clear(),(!se||se.domain||se.compare)&&(this.domainIndexMap.clear(),this.sortedDomain=void 0)}clone(){return new al(this.options)}getRange(){return this.options.range}getDomain(){if(this.sortedDomain)return this.sortedDomain;const{domain:se,compare:q}=this.options;return this.sortedDomain=q?[...se].sort(q):se,this.sortedDomain}}function ul(le){const se=Math.min(...le);return le.map(q=>q/se)}function hl(le,se){const q=le.length,te=se-q;return te>0?[...le,...new Array(te).fill(1)]:te<0?le.slice(0,se):le}function bc(le){return Math.round(le*1e12)/1e12}function ku(le){const{domain:se,range:q,paddingOuter:te,paddingInner:Ae,flex:Pe,round:Qe,align:He}=le,qe=se.length,yt=hl(Pe,qe),[qt,on]=q,pn=on-qt,Vn=2/qe*te+1-1/qe*Ae,Jn=pn/Vn,Ur=Jn*Ae/qe,Sr=Jn-qe*Ur,Ai=ul(yt),hi=Ai.reduce((so,ti)=>so+ti),_i=Sr/hi,Ii=new sl(se.map((so,ti)=>{const uo=Ai[ti]*_i;return[so,Qe?Math.floor(uo):uo]})),_s=new sl(se.map((so,ti)=>{const Ra=Ai[ti]*_i+Ur;return[so,Qe?Math.floor(Ra):Ra]})),Ns=Array.from(_s.values()).reduce((so,ti)=>so+ti),da=(pn-(Ns-Ns/qe*Ae))*He,ua=qt+da;let Io=Qe?Math.round(ua):ua;const io=new Array(qe);for(let so=0;sopn+_i*qt);return{valueStep:qt,valueBandWidth:on,adjustedRange:Ai}}class Yo extends al{getDefaultOptions(){return{domain:[],range:[0,1],align:.5,round:!1,paddingInner:0,paddingOuter:0,padding:0,unknown:Bl,flex:[]}}constructor(se){super(se)}clone(){return new Yo(this.options)}getStep(se){return this.valueStep===void 0?1:typeof this.valueStep=="number"?this.valueStep:se===void 0?Array.from(this.valueStep.values())[0]:this.valueStep.get(se)}getBandWidth(se){return this.valueBandWidth===void 0?1:typeof this.valueBandWidth=="number"?this.valueBandWidth:se===void 0?Array.from(this.valueBandWidth.values())[0]:this.valueBandWidth.get(se)}getRange(){return this.adjustedRange}getPaddingInner(){const{padding:se,paddingInner:q}=this.options;return se>0?se:q}getPaddingOuter(){const{padding:se,paddingOuter:q}=this.options;return se>0?se:q}rescale(){super.rescale();const{align:se,domain:q,range:te,round:Ae,flex:Pe}=this.options,{adjustedRange:Qe,valueBandWidth:He,valueStep:qe}=oc({align:se,range:te,round:Ae,flex:Pe,paddingInner:this.getPaddingInner(),paddingOuter:this.getPaddingOuter(),domain:q});this.valueStep=qe,this.valueBandWidth=He,this.adjustedRange=Qe}}var Su=_(37547),rd=_(1933),Vu=_(39934),js=function(le){(0,m.ZT)(se,le);function se(q){var te=this,Ae=q.style,Pe=(0,m._T)(q,["style"]);return te=le.call(this,(0,ft.Z)({},{type:"column"},(0,m.pi)({style:Ae},Pe)))||this,te.columnsGroup=new L.ZA({name:"columns"}),te.appendChild(te.columnsGroup),te.render(),te}return se.prototype.render=function(){var q=this.attributes,te=q.columns,Ae=q.x,Pe=q.y;this.columnsGroup.style.transform="translate(".concat(Ae,", ").concat(Pe,")"),(0,Fe.Ys)(this.columnsGroup).selectAll(".column").data(te.flat()).join(function(Qe){return Qe.append("rect").attr("className","column").each(function(He){this.attr(He)})},function(Qe){return Qe.each(function(He){this.attr(He)})},function(Qe){return Qe.remove()})},se.prototype.update=function(q){this.attr((0,T.n)({},this.attributes,q)),this.render()},se.prototype.clear=function(){this.removeChildren()},se}(L.s$),Qr=function(le){(0,m.ZT)(se,le);function se(q){var te=this,Ae=q.style,Pe=(0,m._T)(q,["style"]);return te=le.call(this,(0,ft.Z)({},{type:"lines"},(0,m.pi)({style:Ae},Pe)))||this,te.linesGroup=te.appendChild(new L.ZA),te.areasGroup=te.appendChild(new L.ZA),te.render(),te}return se.prototype.render=function(){var q=this.attributes,te=q.lines,Ae=q.areas,Pe=q.x,Qe=q.y;this.style.transform="translate(".concat(Pe,", ").concat(Qe,")"),te&&this.renderLines(te),Ae&&this.renderAreas(Ae)},se.prototype.clear=function(){this.linesGroup.removeChildren(),this.areasGroup.removeChildren()},se.prototype.update=function(q){this.attr((0,T.n)({},this.attributes,q)),this.render()},se.prototype.renderLines=function(q){(0,Fe.Ys)(this.linesGroup).selectAll(".line").data(q).join(function(te){return te.append("path").attr("className","line").each(function(Ae){this.attr(Ae)})},function(te){return te.each(function(Ae){this.attr(Ae)})},function(te){return te.remove()})},se.prototype.renderAreas=function(q){(0,Fe.Ys)(this.linesGroup).selectAll(".area").data(q).join(function(te){return te.append("path").attr("className","area").each(function(Ae){this.attr(Ae)})},function(te){return te.each(function(Ae){this.style(Ae)})},function(te){return te.remove()})},se}(L.s$),ri=_(62099);function Za(le,se,q,te){var Ae,Pe=[],Qe=!!te,He,qe,yt=[1/0,1/0],qt=[-1/0,-1/0],on,pn,Vn;if(Qe){Ae=(0,m.CR)(te,2),yt=Ae[0],qt=Ae[1];for(var Jn=0,Ur=le.length;JnQe&&(q=(0,m.CR)([Qe,He],2),He=q[0],Qe=q[1]),le.map(function(qe){var yt=qe.map(function(qt,on){return[te.map(on),(0,K.Z)(Ae.map(qt),He,Qe)]});return yt})}function Ro(le,se){se===void 0&&(se=!1);var q=se?le.length-1:0,te=le.map(function(Ae,Pe){return(0,m.ev)([Pe===q?"M":"L"],(0,m.CR)(Ae),!1)});return se?te.reverse():te}function ro(le,se){if(se===void 0&&(se=!1),le.length<=2)return Ro(le);for(var q=[],te=le.length,Ae=0;Ae=0;Ae-=1){var Pe=le[Ae],Qe=Ro(Pe),He=void 0;if(Ae===0)He=Wl(Qe,se,q);else{var qe=le[Ae-1],yt=Ro(qe,!0);yt[0][0]="L",He=(0,m.ev)((0,m.ev)((0,m.ev)([],(0,m.CR)(Qe),!1),(0,m.CR)(yt),!1),[["Z"]],!1)}te.push(He)}return te}function to(le,se,q){for(var te=[],Ae=le.length-1;Ae>=0;Ae-=1){var Pe=le[Ae],Qe=ro(Pe),He=void 0;if(Ae===0)He=Wl(Qe,se,q);else{var qe=le[Ae-1],yt=ro(qe,!0),qt=Pe[0];yt[0][0]="L",He=(0,m.ev)((0,m.ev)((0,m.ev)([],(0,m.CR)(Qe),!1),(0,m.CR)(yt),!1),[(0,m.ev)(["M"],(0,m.CR)(qt),!1),["Z"]],!1)}te.push(He)}return te}var vd=_(2078),Np=function(le,se){if((0,Vu.Z)(le)){for(var q,te=1/0,Ae=0;Aete&&(q=Pe,te=Qe)}return q}};function Ud(le){return le.length===0?[0,0]:[(0,vd.Z)(Np(le,function(se){return(0,vd.Z)(se)||0})),(0,Vc.Z)(_n(le,function(se){return(0,Vc.Z)(se)||0}))]}function id(le){for(var se=(0,Su.Z)(le),q=se[0].length,te=(0,m.CR)([Array(q).fill(0),Array(q).fill(0)],2),Ae=te[0],Pe=te[1],Qe=0;Qe=0?(He[qe]+=Ae[qe],Ae[qe]=He[qe]):(He[qe]+=Pe[qe],Pe[qe]=He[qe]);return se}var gu=function(le){(0,m.ZT)(se,le);function se(q){return le.call(this,q,{type:"line",x:0,y:0,width:200,height:20,isStack:!1,color:["#83daad","#edbf45","#d2cef9","#e290b3","#6f63f4"],smooth:!0,lineLineWidth:1,areaOpacity:0,isGroup:!1,columnLineWidth:1,columnStroke:"#fff",scale:1,spacing:0})||this}return Object.defineProperty(se.prototype,"rawData",{get:function(){var q=this.attributes.data;if(!q||(q==null?void 0:q.length)===0)return[[]];var te=(0,Su.Z)(q);return(0,rd.Z)(te[0])?[te]:te},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"data",{get:function(){return this.attributes.isStack?id(this.rawData):this.rawData},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"scales",{get:function(){return this.createScales(this.data)},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"baseline",{get:function(){var q=this.scales.y,te=(0,m.CR)(q.getOptions().domain||[0,0],2),Ae=te[0],Pe=te[1];return Pe<0?q.map(Pe):q.map(Ae<0?0:Ae)},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"containerShape",{get:function(){var q=this.attributes,te=q.width,Ae=q.height;return{width:te,height:Ae}},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"linesStyle",{get:function(){var q=this,te=this.attributes,Ae=te.type,Pe=te.isStack,Qe=te.smooth;if(Ae!=="line")throw new Error("linesStyle can only be used in line type");var He=(0,B.zs)(this.attributes,"area"),qe=(0,B.zs)(this.attributes,"line"),yt=this.containerShape.width,qt=this.data;if(qt[0].length===0)return{lines:[],areas:[]};var on=this.scales,pn=on.x,Vn=on.y,Jn=wc(qt,{type:"line",x:pn,y:Vn}),Ur=[];if(He){var Sr=this.baseline;Pe?Ur=Qe?to(Jn,yt,Sr):Yu(Jn,yt,Sr):Ur=Uh(Jn,Qe,yt,Sr)}return{lines:Jn.map(function(Ai,hi){return(0,m.pi)({stroke:q.getColor(hi),d:Qe?ro(Ai):Ro(Ai)},qe)}),areas:Ur.map(function(Ai,hi){return(0,m.pi)({d:Ai,fill:q.getColor(hi)},He)})}},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"columnsStyle",{get:function(){var q=this,te=(0,B.zs)(this.attributes,"column"),Ae=this.attributes,Pe=Ae.isStack,Qe=Ae.type,He=Ae.scale;if(Qe!=="column")throw new Error("columnsStyle can only be used in column type");var qe=this.containerShape.height,yt=this.rawData;if(!yt)return{columns:[]};Pe&&(yt=id(yt));var qt=this.createScales(yt),on=qt.x,pn=qt.y,Vn=(0,m.CR)(Ud(yt),2),Jn=Vn[0],Ur=Vn[1],Sr=new Pc({domain:[0,Ur-(Jn>0?0:Jn)],range:[0,qe*He]}),Ai=on.getBandWidth(),hi=this.rawData;return{columns:yt.map(function(_i,Ii){return _i.map(function(_s,Ns){var Es=Ai/yt.length,da=function(){return{x:on.map(Ns)+Es*Ii,y:_s>=0?pn.map(_s):pn.map(0),width:Es,height:Sr.map(Math.abs(_s))}},ua=function(){return{x:on.map(Ns),y:pn.map(_s),width:Ai,height:Sr.map(hi[Ii][Ns])}};return(0,m.pi)((0,m.pi)({fill:q.getColor(Ii)},te),Pe?ua():da())})})}},enumerable:!1,configurable:!0}),se.prototype.render=function(q,te){(0,Fe.OV)(te,".container","rect").attr("className","container").node();var Ae=q.type,Pe=q.x,Qe=q.y,He="spark".concat(Ae),qe=(0,m.pi)({x:Pe,y:Qe},Ae==="line"?this.linesStyle:this.columnsStyle);(0,Fe.Ys)(te).selectAll(".spark").data([Ae]).join(function(yt){return yt.append(function(qt){return qt==="line"?new Qr({className:He,style:qe}):new js({className:He,style:qe})}).attr("className","spark ".concat(He))},function(yt){return yt.update(qe)},function(yt){return yt.remove()})},se.prototype.getColor=function(q){var te=this.attributes.color;return(0,Vu.Z)(te)?te[q%te.length]:(0,jn.Z)(te)?te.call(null,q):te},se.prototype.createScales=function(q){var te,Ae,Pe=this.attributes,Qe=Pe.type,He=Pe.scale,qe=Pe.range,yt=qe===void 0?[]:qe,qt=Pe.spacing,on=this.containerShape,pn=on.width,Vn=on.height,Jn=(0,m.CR)(Ud(q),2),Ur=Jn[0],Sr=Jn[1],Ai=new Pc({domain:[(te=yt[0])!==null&&te!==void 0?te:Ur,(Ae=yt[1])!==null&&Ae!==void 0?Ae:Sr],range:[Vn,Vn*(1-He)]});return Qe==="line"?{type:Qe,x:new Pc({domain:[0,q[0].length-1],range:[0,pn]}),y:Ai}:{type:Qe,x:new Yo({domain:q[0].map(function(hi,_i){return _i}),range:[0,pn],paddingInner:qt,paddingOuter:qt/2,align:.5}),y:Ai}},se.tag="sparkline",se}(H.w),Yh={fill:"#fff",lineWidth:1,radius:2,size:10,stroke:"#bfbfbf",strokeOpacity:1,zIndex:0},Mh={fill:"#000",fillOpacity:.45,fontSize:12,textAlign:"center",textBaseline:"middle",zIndex:1},Ef={x:0,y:0,orientation:"horizontal",showLabel:!0,type:"start"},Rl=(0,_t.A)({foreground:"foreground",handle:"handle",selection:"selection",sparkline:"sparkline",sparklineGroup:"sparkline-group",track:"track",brushArea:"brush-area"},"slider"),mu=(0,_t.A)({labelGroup:"label-group",label:"label",iconGroup:"icon-group",icon:"icon",iconRect:"icon-rect",iconLine:"icon-line"},"handle"),Dh=function(le){(0,m.ZT)(se,le);function se(){return le!==null&&le.apply(this,arguments)||this}return se.prototype.render=function(q,te){var Ae=q.x,Pe=q.y,Qe=q.size,He=Qe===void 0?10:Qe,qe=q.radius,yt=qe===void 0?He/4:qe,qt=q.orientation,on=q.classNamePrefix,pn=(0,m._T)(q,["x","y","size","radius","orientation","classNamePrefix"]),Vn=He,Jn=Vn*2.4,Ur=on?"".concat(mu.iconRect.name," ").concat(on,"handle-icon-rect"):mu.iconRect.name,Sr=function(Ns){return on?"".concat(mu.iconLine,"-").concat(Ns," ").concat(on,"handle-icon-line"):"".concat(mu.iconLine,"-").concat(Ns)},Ai=(0,Fe.Ys)(te).maybeAppendByClassName(mu.iconRect,"rect").attr("className",Ur).styles((0,m.pi)((0,m.pi)({},pn),{width:Vn,height:Jn,radius:yt,x:Ae-Vn/2,y:Pe-Jn/2,transformOrigin:"center"})),hi=Ae+1/3*Vn-Vn/2,_i=Ae+2/3*Vn-Vn/2,Ii=Pe+1/4*Jn-Jn/2,_s=Pe+3/4*Jn-Jn/2;Ai.maybeAppendByClassName("".concat(mu.iconLine,"-1"),"line").attr("className",Sr(1)).styles((0,m.pi)({x1:hi,x2:hi,y1:Ii,y2:_s},pn)),Ai.maybeAppendByClassName("".concat(mu.iconLine,"-2"),"line").attr("className",Sr(2)).styles((0,m.pi)({x1:_i,x2:_i,y1:Ii,y2:_s},pn)),qt==="vertical"&&(Ai.node().style.transform="rotate(90)")},se}(H.w),hf=function(le){(0,m.ZT)(se,le);function se(q){return le.call(this,q,Ef)||this}return se.prototype.renderLabel=function(q){var te=this,Ae=this.attributes,Pe=Ae.x,Qe=Ae.y,He=Ae.showLabel,qe=(0,B.zs)(this.attributes,"label"),yt=qe.x,qt=yt===void 0?0:yt,on=qe.y,pn=on===void 0?0:on,Vn=qe.transform,Jn=qe.transformOrigin,Ur=(0,m._T)(qe,["x","y","transform","transformOrigin"]),Sr=(0,m.CR)((0,B.Hm)(Ur,[]),2),Ai=Sr[0],hi=Sr[1],_i=(0,Fe.Ys)(q).maybeAppendByClassName(mu.labelGroup,"g").styles(hi),Ii=(0,m.pi)((0,m.pi)({},Mh),Ai),_s=Ii.text,Ns=(0,m._T)(Ii,["text"]);(0,Ce.z)(!!He,_i,function(Es){te.label=Es.maybeAppendByClassName(mu.label,"text").styles((0,m.pi)((0,m.pi)({},Ns),{x:Pe+qt,y:Qe+pn,transform:Vn,transformOrigin:Jn,text:"".concat(_s)})),te.label.on("mousedown",function(da){da.stopPropagation()}),te.label.on("touchstart",function(da){da.stopPropagation()})})},se.prototype.renderIcon=function(q){var te=this.attributes,Ae=te.x,Pe=te.y,Qe=te.orientation,He=te.type,qe=te.classNamePrefix,yt=(0,m.pi)((0,m.pi)({x:Ae,y:Pe,orientation:Qe,classNamePrefix:qe},Yh),(0,B.zs)(this.attributes,"icon")),qt=this.attributes.iconShape,on=qt===void 0?function(){return new Dh({style:yt})}:qt,pn=(0,Fe.Ys)(q).maybeAppendByClassName(mu.iconGroup,"g");pn.selectAll(mu.icon.class).data([on]).join(function(Vn){return Vn.append(typeof on=="string"?on:function(){return on(He)}).attr("className",mu.icon.name)},function(Vn){return Vn.update(yt)},function(Vn){return Vn.remove()})},se.prototype.render=function(q,te){this.renderIcon(te),this.renderLabel(te)},se}(H.w),Oh=function(le){(0,m.ZT)(se,le);function se(q){var te=le.call(this,q,(0,m.pi)((0,m.pi)((0,m.pi)({x:0,y:0,animate:{duration:100,fill:"both"},brushable:!0,formatter:function(Ae){return Ae.toString()},handleSpacing:2,orientation:"horizontal",padding:0,autoFitLabel:!0,scrollable:!0,selectionFill:"#5B8FF9",selectionFillOpacity:.45,selectionZIndex:2,showHandle:!0,showLabel:!0,slidable:!0,trackFill:"#416180",trackLength:200,trackOpacity:.05,trackSize:20,trackZIndex:-1,values:[0,1],type:"range",selectionType:"select",handleIconOffset:0},(0,B.dq)(Ef,"handle")),(0,B.dq)(Yh,"handleIcon")),(0,B.dq)(Mh,"handleLabel")))||this;return te.range=[0,1],te.onDragStart=function(Ae){return function(Pe){Pe.stopPropagation(),te.target=Ae,te.prevPos=te.getOrientVal(nl(Pe));var Qe=te.availableSpace,He=Qe.x,qe=Qe.y,yt=te.getBBox(),qt=yt.x,on=yt.y;te.selectionStartPos=te.getRatio(te.prevPos-te.getOrientVal([He,qe])-te.getOrientVal([+qt,+on])),te.selectionWidth=0,document.addEventListener("pointermove",te.onDragging),document.addEventListener("pointerup",te.onDragEnd)}},te.onDragging=function(Ae){var Pe=te.attributes,Qe=Pe.slidable,He=Pe.brushable,qe=Pe.type;Ae.stopPropagation();var yt=te.getOrientVal(nl(Ae)),qt=yt-te.prevPos;if(qt){var on=te.getRatio(qt);switch(te.target){case"start":Qe&&te.setValuesOffset(on);break;case"end":Qe&&te.setValuesOffset(0,on);break;case"selection":Qe&&te.setValuesOffset(on,on);break;case"track":if(!He)return;te.selectionWidth+=on,qe==="range"?te.innerSetValues([te.selectionStartPos,te.selectionStartPos+te.selectionWidth].sort(),!0):te.innerSetValues([0,te.selectionStartPos+te.selectionWidth],!0);break;default:break}te.prevPos=yt}},te.onDragEnd=function(){document.removeEventListener("pointermove",te.onDragging),document.removeEventListener("pointermove",te.onDragging),document.removeEventListener("pointerup",te.onDragEnd),te.target="",te.updateHandlesPosition(!1)},te.onValueChange=function(Ae){var Pe=te.attributes,Qe=Pe.onChange,He=Pe.type,qe=He==="range"?Ae:Ae[1],yt=He==="range"?te.getValues():te.getValues()[1],qt=new L.Aw("valuechange",{detail:{oldValue:qe,value:yt}});te.dispatchEvent(qt),Qe==null||Qe(yt)},te.selectionStartPos=0,te.selectionWidth=0,te.prevPos=0,te.target="",te}return Object.defineProperty(se.prototype,"values",{get:function(){return this.attributes.values},set:function(q){this.attributes.values=this.clampValues(q)},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"sparklineStyle",{get:function(){var q=this.attributes.orientation;if(q!=="horizontal")return null;var te=(0,B.zs)(this.attributes,"sparkline");return(0,m.pi)((0,m.pi)({zIndex:0},this.availableSpace),te)},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"shape",{get:function(){var q=this.attributes,te=q.trackLength,Ae=q.trackSize,Pe=(0,m.CR)(this.getOrientVal([[te,Ae],[Ae,te]]),2),Qe=Pe[0],He=Pe[1];return{width:Qe,height:He}},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"availableSpace",{get:function(){var q=this.attributes,te=q.x,Ae=q.y,Pe=q.padding,Qe=(0,m.CR)((0,tt.j)(Pe),4),He=Qe[0],qe=Qe[1],yt=Qe[2],qt=Qe[3],on=this.shape,pn=on.width,Vn=on.height;return{x:qt,y:He,width:pn-(qt+qe),height:Vn-(He+yt)}},enumerable:!1,configurable:!0}),se.prototype.getValues=function(){return this.values},se.prototype.setValues=function(q,te){q===void 0&&(q=[0,0]),te===void 0&&(te=!1),this.attributes.values=q;var Ae=te===!1?!1:this.attributes.animate;this.updateSelectionArea(Ae),this.updateHandlesPosition(Ae)},se.prototype.updateSelectionArea=function(q){var te=this.calcSelectionArea();this.foregroundGroup.selectAll(Rl.selection.class).each(function(Ae,Pe){(0,_e.eR)(this,te[Pe],q)})},se.prototype.updateHandlesPosition=function(q){this.attributes.showHandle&&(this.startHandle&&(0,_e.eR)(this.startHandle,this.getHandleStyle("start"),q),this.endHandle&&(0,_e.eR)(this.endHandle,this.getHandleStyle("end"),q))},se.prototype.innerSetValues=function(q,te){q===void 0&&(q=[0,0]),te===void 0&&(te=!1);var Ae=this.values,Pe=this.clampValues(q);this.attributes.values=Pe,this.setValues(Pe),te&&this.onValueChange(Ae)},se.prototype.renderTrack=function(q){var te=this.attributes,Ae=te.x,Pe=te.y,Qe=(0,B.zs)(this.attributes,"track");this.trackShape=(0,Fe.Ys)(q).maybeAppendByClassName(Rl.track,"rect").styles((0,m.pi)((0,m.pi)({x:Ae,y:Pe},this.shape),Qe))},se.prototype.renderBrushArea=function(q){var te=this.attributes,Ae=te.x,Pe=te.y,Qe=te.brushable;this.brushArea=(0,Fe.Ys)(q).maybeAppendByClassName(Rl.brushArea,"rect").styles((0,m.pi)({x:Ae,y:Pe,fill:"transparent",cursor:Qe?"crosshair":"default"},this.shape))},se.prototype.renderSparkline=function(q){var te=this,Ae=this.attributes,Pe=Ae.x,Qe=Ae.y,He=Ae.orientation,qe=(0,Fe.Ys)(q).maybeAppendByClassName(Rl.sparklineGroup,"g");(0,Ce.z)(He==="horizontal",qe,function(yt){var qt=(0,m.pi)((0,m.pi)({},te.sparklineStyle),{x:Pe,y:Qe});yt.maybeAppendByClassName(Rl.sparkline,function(){return new gu({style:qt})}).update(qt)})},se.prototype.renderHandles=function(){var q=this,te,Ae=this.attributes,Pe=Ae.showHandle,Qe=Ae.type,He=Qe==="range"?["start","end"]:["end"],qe=Pe?He:[],yt=this;(te=this.foregroundGroup)===null||te===void 0||te.selectAll(Rl.handle.class).data(qe.map(function(qt){return{type:qt}}),function(qt){return qt.type}).join(function(qt){return qt.append(function(on){var pn=on.type;return new hf({style:q.getHandleStyle(pn)})}).each(function(on){var pn=on.type;this.attr("class","".concat(Rl.handle.name," ").concat(pn,"-handle"));var Vn="".concat(pn,"Handle");yt[Vn]=this,this.addEventListener("pointerdown",yt.onDragStart(pn))})},function(qt){return qt.each(function(on){var pn=on.type;this.update(yt.getHandleStyle(pn))})},function(qt){return qt.each(function(on){var pn=on.type,Vn="".concat(pn,"Handle");yt[Vn]=void 0}).remove()})},se.prototype.renderSelection=function(q){var te=this.attributes,Ae=te.x,Pe=te.y,Qe=te.type,He=te.selectionType;this.foregroundGroup=(0,Fe.Ys)(q).maybeAppendByClassName(Rl.foreground,"g");var qe=(0,B.zs)(this.attributes,"selection"),yt=function(on){return on.style("visibility",function(pn){return pn.show?"visible":"hidden"}).style("cursor",function(pn){return He==="select"?"grab":He==="invert"?"crosshair":"default"}).styles((0,m.pi)((0,m.pi)({},qe),{transform:"translate(".concat(Ae,", ").concat(Pe,")")}))},qt=this;this.foregroundGroup.selectAll(Rl.selection.class).data(Qe==="value"?[]:this.calcSelectionArea().map(function(on,pn){return{style:(0,m.pi)({},on),index:pn,show:He==="select"?pn===1:pn!==1}}),function(on){return on.index}).join(function(on){return on.append("rect").attr("className",Rl.selection.name).call(yt).each(function(pn,Vn){var Jn=this;Vn===1?(qt.selectionShape=(0,Fe.Ys)(this),this.on("pointerdown",function(Ur){Jn.attr("cursor","grabbing"),qt.onDragStart("selection")(Ur)}),qt.dispatchCustomEvent(this,"pointerenter","selectionMouseenter"),qt.dispatchCustomEvent(this,"pointerleave","selectionMouseleave"),qt.dispatchCustomEvent(this,"click","selectionClick"),this.addEventListener("pointerdown",function(){Jn.attr("cursor","grabbing")}),this.addEventListener("pointerup",function(){Jn.attr("cursor","pointer")}),this.addEventListener("pointerover",function(){Jn.attr("cursor","pointer")})):this.on("pointerdown",qt.onDragStart("track"))})},function(on){return on.call(yt)},function(on){return on.remove()}),this.updateSelectionArea(!1),this.renderHandles()},se.prototype.render=function(q,te){this.renderTrack(te),this.renderSparkline(te),this.renderBrushArea(te),this.renderSelection(te)},se.prototype.clampValues=function(q,te){var Ae;te===void 0&&(te=4);var Pe=(0,m.CR)(this.range,2),Qe=Pe[0],He=Pe[1],qe=(0,m.CR)(this.getValues().map(function(Sr){return Ql(Sr,te)}),2),yt=qe[0],qt=qe[1],on=Array.isArray(q)?q:[yt,q!=null?q:qt],pn=(0,m.CR)((on||[yt,qt]).map(function(Sr){return Ql(Sr,te)}),2),Vn=pn[0],Jn=pn[1];if(this.attributes.type==="value")return[0,(0,K.Z)(Jn,Qe,He)];Vn>Jn&&(Ae=(0,m.CR)([Jn,Vn],2),Vn=Ae[0],Jn=Ae[1]);var Ur=Jn-Vn;return Ur>He-Qe?[Qe,He]:VnHe?qt===He&&yt===Vn?[Vn,He]:[He-Ur,He]:[Vn,Jn]},se.prototype.calcSelectionArea=function(q){var te=(0,m.CR)(this.clampValues(q),2),Ae=te[0],Pe=te[1],Qe=this.availableSpace,He=Qe.x,qe=Qe.y,yt=Qe.width,qt=Qe.height;return this.getOrientVal([[{y:qe,height:qt,x:He,width:Ae*yt},{y:qe,height:qt,x:Ae*yt+He,width:(Pe-Ae)*yt},{y:qe,height:qt,x:Pe*yt,width:(1-Pe)*yt}],[{x:He,width:yt,y:qe,height:Ae*qt},{x:He,width:yt,y:Ae*qt+qe,height:(Pe-Ae)*qt},{x:He,width:yt,y:Pe*qt,height:(1-Pe)*qt}]])},se.prototype.calcHandlePosition=function(q){var te=this.attributes.handleIconOffset,Ae=this.availableSpace,Pe=Ae.x,Qe=Ae.y,He=Ae.width,qe=Ae.height,yt=(0,m.CR)(this.clampValues(),2),qt=yt[0],on=yt[1],pn=q==="start"?-te:te,Vn=(q==="start"?qt:on)*this.getOrientVal([He,qe])+pn;return{x:Pe+this.getOrientVal([Vn,He/2]),y:Qe+this.getOrientVal([qe/2,Vn])}},se.prototype.inferTextStyle=function(q){var te=this.attributes.orientation;return te==="horizontal"?{}:q==="start"?{transformOrigin:"left center",transform:"rotate(90)",textAlign:"start"}:q==="end"?{transformOrigin:"right center",transform:"rotate(90)",textAlign:"end"}:{}},se.prototype.calcHandleText=function(q){var te,Ae=this.attributes,Pe=Ae.type,Qe=Ae.orientation,He=Ae.formatter,qe=Ae.autoFitLabel,yt=(0,B.zs)(this.attributes,"handle"),qt=(0,B.zs)(yt,"label"),on=yt.spacing,pn=this.getHandleSize(),Vn=this.clampValues(),Jn=q==="start"?Vn[0]:Vn[1],Ur=He(Jn),Sr=new tu.x({style:(0,m.pi)((0,m.pi)((0,m.pi)({},qt),this.inferTextStyle(q)),{text:Ur})}),Ai=Sr.getBBox(),hi=Ai.width,_i=Ai.height;if(Sr.destroy(),!qe){if(Pe==="value")return{text:Ur,x:0,y:-_i-on};var Ii=on+pn+(Qe==="horizontal"?hi/2:0);return te={text:Ur},te[Qe==="horizontal"?"x":"y"]=q==="start"?-Ii:Ii,te}var _s=0,Ns=0,Es=this.availableSpace,da=Es.width,ua=Es.height,Io=this.calcSelectionArea()[1],io=Io.x,so=Io.y,ti=Io.width,uo=Io.height,Ra=on+pn;if(Qe==="horizontal"){var qo=Ra+hi/2;if(q==="start"){var ec=io-Ra-hi;_s=ec>0?-qo:qo}else{var ga=da-io-ti-Ra>hi;_s=ga?qo:-qo}}else{var fl=Ra,po=_i+Ra;q==="start"?Ns=so-pn>_i?-po:fl:Ns=ua-(so+uo)-pn>_i?po:-fl}return{x:_s,y:Ns,text:Ur}},se.prototype.getHandleLabelStyle=function(q){var te=(0,B.zs)(this.attributes,"handleLabel");return(0,m.pi)((0,m.pi)((0,m.pi)({},te),this.calcHandleText(q)),this.inferTextStyle(q))},se.prototype.getHandleIconStyle=function(){var q=this.attributes.handleIconShape,te=(0,B.zs)(this.attributes,"handleIcon"),Ae=this.getOrientVal(["ew-resize","ns-resize"]),Pe=this.getHandleSize();return(0,m.pi)({cursor:Ae,shape:q,size:Pe},te)},se.prototype.getHandleStyle=function(q){var te=this.attributes,Ae=te.x,Pe=te.y,Qe=te.showLabel,He=te.showLabelOnInteraction,qe=te.orientation,yt=this.calcHandlePosition(q),qt=yt.x,on=yt.y,pn=this.calcHandleText(q),Vn=Qe;return!Qe&&He&&(this.target?Vn=!0:Vn=!1),(0,m.pi)((0,m.pi)((0,m.pi)({},(0,B.dq)(this.getHandleIconStyle(),"icon")),(0,B.dq)((0,m.pi)((0,m.pi)({},this.getHandleLabelStyle(q)),pn),"label")),{transform:"translate(".concat(qt+Ae,", ").concat(on+Pe,")"),orientation:qe,showLabel:Vn,type:q,zIndex:3})},se.prototype.getHandleSize=function(){var q=this.attributes,te=q.handleIconSize,Ae=q.width,Pe=q.height;return te||Math.floor((this.getOrientVal([+Pe,+Ae])+4)/2.4)},se.prototype.getOrientVal=function(q){var te=(0,m.CR)(q,2),Ae=te[0],Pe=te[1],Qe=this.attributes.orientation;return Qe==="horizontal"?Ae:Pe},se.prototype.setValuesOffset=function(q,te){te===void 0&&(te=0);var Ae=this.attributes.type,Pe=(0,m.CR)(this.getValues(),2),Qe=Pe[0],He=Pe[1],qe=Ae==="range"?q:0,yt=[Qe+qe,He+te].sort();this.innerSetValues(yt,!0)},se.prototype.getRatio=function(q){var te=this.availableSpace,Ae=te.width,Pe=te.height;return q/this.getOrientVal([Ae,Pe])},se.prototype.dispatchCustomEvent=function(q,te,Ae){var Pe=this;q.on(te,function(Qe){Qe.stopPropagation(),Pe.dispatchEvent(new L.Aw(Ae,{detail:Qe}))})},se.prototype.bindEvents=function(){this.addEventListener("wheel",this.onScroll);var q=this.brushArea;this.dispatchCustomEvent(q,"click","trackClick"),this.dispatchCustomEvent(q,"pointerenter","trackMouseenter"),this.dispatchCustomEvent(q,"pointerleave","trackMouseleave"),q.on("pointerdown",this.onDragStart("track"))},se.prototype.onScroll=function(q){var te=this.attributes.scrollable;if(te){var Ae=q.deltaX,Pe=q.deltaY,Qe=Pe||Ae,He=this.getRatio(Qe);this.setValuesOffset(He,He)}},se.tag="slider",se}(H.w),kf=_(92387),Vf={backgroundFill:"#262626",backgroundLineCap:"round",backgroundLineWidth:1,backgroundStroke:"#333",backgroundZIndex:-1,formatter:function(le){return le.toString()},labelFill:"#fff",labelFontSize:12,labelTextBaseline:"middle",padding:[2,4],position:"right",radius:0,zIndex:999},ff=(0,_t.A)({background:"background",labelGroup:"label-group",label:"label"},"indicator"),cu=function(le){(0,m.ZT)(se,le);function se(q){var te=le.call(this,q,Vf)||this;return te.point=[0,0],te.group=te.appendChild(new L.ZA({})),te.isMutationObserved=!0,te}return se.prototype.renderBackground=function(){if(this.label){var q=this.attributes,te=q.position,Ae=q.padding,Pe=(0,m.CR)((0,tt.j)(Ae),4),Qe=Pe[0],He=Pe[1],qe=Pe[2],yt=Pe[3],qt=this.label.node().getLocalBounds(),on=qt.min,pn=qt.max,Vn=new F.b(on[0]-yt,on[1]-Qe,pn[0]+He-on[0]+yt,pn[1]+qe-on[1]+Qe),Jn=this.getPath(te,Vn),Ur=(0,B.zs)(this.attributes,"background");this.background=(0,Fe.Ys)(this.group).maybeAppendByClassName(ff.background,"path").styles((0,m.pi)((0,m.pi)({},Ur),{d:Jn})),this.group.appendChild(this.label.node())}},se.prototype.renderLabel=function(){var q=this.attributes,te=q.formatter,Ae=q.labelText,Pe=(0,B.zs)(this.attributes,"label"),Qe=(0,m.CR)((0,B.Hm)(Pe),2),He=Qe[0],qe=Qe[1],yt=He.text,qt=(0,m._T)(He,["text"]);if(this.label=(0,Fe.Ys)(this.group).maybeAppendByClassName(ff.labelGroup,"g").styles(qe),!!Ae){var on=this.label.maybeAppendByClassName(ff.label,function(){return(0,In.S)(te(Ae))}).style("text",te(Ae).toString());on.selectAll("text").styles(qt)}},se.prototype.adjustLayout=function(){var q=(0,m.CR)(this.point,2),te=q[0],Ae=q[1],Pe=this.attributes,Qe=Pe.x,He=Pe.y;this.group.attr("transform","translate(".concat(Qe-te,", ").concat(He-Ae,")"))},se.prototype.getPath=function(q,te){var Ae=this.attributes.radius,Pe=te.x,Qe=te.y,He=te.width,qe=te.height,yt=[["M",Pe+Ae,Qe],["L",Pe+He-Ae,Qe],["A",Ae,Ae,0,0,1,Pe+He,Qe+Ae],["L",Pe+He,Qe+qe-Ae],["A",Ae,Ae,0,0,1,Pe+He-Ae,Qe+qe],["L",Pe+Ae,Qe+qe],["A",Ae,Ae,0,0,1,Pe,Qe+qe-Ae],["L",Pe,Qe+Ae],["A",Ae,Ae,0,0,1,Pe+Ae,Qe],["Z"]],qt={top:4,right:6,bottom:0,left:2},on=qt[q],pn=this.createCorner([yt[on].slice(-2),yt[on+1].slice(-2)]);return yt.splice.apply(yt,(0,m.ev)([on+1,1],(0,m.CR)(pn),!1)),yt[0][0]="M",yt},se.prototype.createCorner=function(q,te){te===void 0&&(te=10);var Ae=.8,Pe=pi.wE.apply(void 0,(0,m.ev)([],(0,m.CR)(q),!1)),Qe=(0,m.CR)(q,2),He=(0,m.CR)(Qe[0],2),qe=He[0],yt=He[1],qt=(0,m.CR)(Qe[1],2),on=qt[0],pn=qt[1],Vn=(0,m.CR)(Pe?[on-qe,[qe,on]]:[pn-yt,[yt,pn]],2),Jn=Vn[0],Ur=(0,m.CR)(Vn[1],2),Sr=Ur[0],Ai=Ur[1],hi=Jn/2,_i=Jn/Math.abs(Jn),Ii=te*_i,_s=Ii/2,Ns=Ii*Math.sqrt(3)/2*Ae,Es=(0,m.CR)([Sr,Sr+hi-_s,Sr+hi,Sr+hi+_s,Ai],5),da=Es[0],ua=Es[1],Io=Es[2],io=Es[3],so=Es[4];return Pe?(this.point=[Io,yt-Ns],[["L",da,yt],["L",ua,yt],["L",Io,yt-Ns],["L",io,yt],["L",so,yt]]):(this.point=[qe+Ns,Io],[["L",qe,da],["L",qe,ua],["L",qe+Ns,Io],["L",qe,io],["L",qe,so]])},se.prototype.applyVisibility=function(){var q=this.attributes.visibility;q==="hidden"?(0,mi.Cp)(this):(0,mi.$Z)(this)},se.prototype.bindEvents=function(){this.label.on(L.Dk.BOUNDS_CHANGED,this.renderBackground)},se.prototype.render=function(){this.renderLabel(),this.renderBackground(),this.adjustLayout(),this.applyVisibility()},se}(H.w),Ze=function(le){(0,m.ZT)(se,le);function se(q){var te=le.call(this,(0,T.n)({},se.defaultOptions,q))||this;return te.hoverColor="#f5f5f5",te.selectedColor="#e6f7ff",te.background=te.appendChild(new L.UL({})),te.label=te.background.appendChild(new L.ZA({})),te}return Object.defineProperty(se.prototype,"padding",{get:function(){return(0,tt.j)(this.style.padding)},enumerable:!1,configurable:!0}),se.prototype.renderLabel=function(){var q=this.style,te=q.label,Ae=q.value,Pe=(0,B.zs)(this.attributes,"label");(0,Fe.Ys)(this.label).maybeAppend(".label",function(){return(0,In.S)(te)}).attr("className","label").styles(Pe),this.label.attr("__data__",Ae)},se.prototype.renderBackground=function(){var q=this.label.getBBox(),te=(0,m.CR)(this.padding,4),Ae=te[0],Pe=te[1],Qe=te[2],He=te[3],qe=q.width,yt=q.height,qt=qe+He+Pe,on=yt+Ae+Qe,pn=(0,B.zs)(this.attributes,"background"),Vn=this.style,Jn=Vn.width,Ur=Jn===void 0?0:Jn,Sr=Vn.height,Ai=Sr===void 0?0:Sr,hi=Vn.selected;this.background.attr((0,m.pi)((0,m.pi)({},pn),{width:Math.max(qt,Ur),height:Math.max(on,Ai),fill:hi?this.selectedColor:"#fff"})),this.label.attr({transform:"translate(".concat(He,", ").concat((on-yt)/2,")")})},se.prototype.render=function(){this.renderLabel(),this.renderBackground()},se.prototype.bindEvents=function(){var q=this;this.addEventListener("pointerenter",function(){q.style.selected||q.background.attr("fill",q.hoverColor)}),this.addEventListener("pointerleave",function(){q.style.selected||q.background.attr("fill",q.style.backgroundFill)});var te=this;this.addEventListener("click",function(){var Ae=q.style,Pe=Ae.label,Qe=Ae.value,He=Ae.onClick;He==null||He(Qe,{label:Pe,value:Qe},te)})},se.defaultOptions={style:{value:"",label:"",cursor:"pointer"}},se}(H.w),xe=function(le){(0,m.ZT)(se,le);function se(q){var te,Ae,Pe=le.call(this,(0,T.n)({},se.defaultOptions,q))||this;Pe.currentValue=(te=se.defaultOptions.style)===null||te===void 0?void 0:te.defaultValue,Pe.isPointerInSelect=!1,Pe.select=Pe.appendChild(new L.UL({className:"select",style:{cursor:"pointer",width:0,height:0}})),Pe.dropdown=Pe.appendChild(new L.UL({className:"dropdown"}));var Qe=Pe.style.defaultValue;return Qe&&(!((Ae=Pe.style.options)===null||Ae===void 0)&&Ae.some(function(He){return He.value===Qe}))&&(Pe.currentValue=Qe),Pe}return se.prototype.setValue=function(q){this.currentValue=q,this.render()},se.prototype.getValue=function(){return this.currentValue},Object.defineProperty(se.prototype,"dropdownPadding",{get:function(){return(0,tt.j)(this.style.dropdownPadding)},enumerable:!1,configurable:!0}),se.prototype.renderSelect=function(){var q=this,te,Ae=this.style,Pe=Ae.x,Qe=Ae.y,He=Ae.width,qe=Ae.height,yt=Ae.bordered,qt=Ae.showDropdownIcon,on=(0,B.zs)(this.attributes,"select"),pn=(0,B.zs)(this.attributes,"placeholder");this.select.attr((0,m.pi)((0,m.pi)({x:Pe,y:Qe,width:He,height:qe},on),{fill:"#fff",strokeWidth:yt?1:0}));var Vn=this.dropdownPadding,Jn=10;qt&&(0,Fe.Ys)(this.select).maybeAppend(".dropdown-icon","path").style("d","M-5,-3.5 L0,3.5 L5,-3.5").style("transform","translate(".concat(Pe+He-Jn-Vn[1]-Vn[3],", ").concat(Qe+qe/2,")")).style("lineWidth",1).style("stroke",this.select.style.stroke);var Ur=(te=this.style.options)===null||te===void 0?void 0:te.find(function(_i){return _i.value===q.currentValue}),Sr=(0,m.pi)({x:Pe+Vn[3]},pn);(0,Fe.Ys)(this.select).selectAll(".placeholder").data(Ur?[]:[1]).join(function(_i){return _i.append("text").attr("className","placeholder").styles(Sr).style("y",function(){var Ii=this.getBBox();return Qe+(qe-Ii.height)/2})},function(_i){return _i.styles(Sr)},function(_i){return _i.remove()});var Ai=(0,B.zs)(this.attributes,"optionLabel"),hi=(0,m.pi)({x:Pe+Vn[3]},Ai);(0,Fe.Ys)(this.select).selectAll(".value").data(Ur?[Ur]:[]).join(function(_i){return _i.append(function(Ii){return(0,In.S)(Ii.label)}).attr("className","value").styles(hi).style("y",function(){var Ii=this.getBBox();return Qe+(qe-Ii.height)/2})},function(_i){return _i.styles(hi)},function(_i){return _i.remove()})},se.prototype.renderDropdown=function(){var q=this,te,Ae,Pe=this.style,Qe=Pe.x,He=Pe.y,qe=Pe.width,yt=Pe.height,qt=Pe.options,on=Pe.onSelect,pn=Pe.open,Vn=(0,B.zs)(this.attributes,"dropdown"),Jn=(0,B.zs)(this.attributes,"option"),Ur=this.dropdownPadding;(0,Fe.Ys)(this.dropdown).maybeAppend(".dropdown-container","g").attr("className","dropdown-container").selectAll(".dropdown-item").data(qt,function(hi){return hi.value}).join(function(hi){return hi.append(function(_i){return new Ze({className:"dropdown-item",style:(0,m.pi)((0,m.pi)((0,m.pi)({},_i),Jn),{width:qe-Ur[1]-Ur[3],selected:_i.value===q.currentValue,onClick:function(Ii,_s,Ns){q.setValue(Ii),on==null||on(Ii,_s,Ns),q.dispatchEvent(new L.Aw("change",{detail:{value:Ii,option:_s,item:Ns}})),(0,mi.Cp)(q.dropdown)}})})}).each(function(_i,Ii){var _s,Ns=(_s=this.parentNode)===null||_s===void 0?void 0:_s.children,Es=Ns.reduce(function(da,ua,Io){return IoPe.time?1:0};return q.sort(te)},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"space",{get:function(){var q=this.attributes,te=q.x,Ae=q.y,Pe=q.width,Qe=q.height,He=q.type,qe=q.controllerHeight,yt=(0,K.Z)(+Qe-qe,0,+Qe),qt=new F.b(te,Ae+ +Qe-qe,+Pe,qe),on,pn=0;He==="chart"?(pn=35,on=new F.b(te,Ae+yt-pn,+Pe,pn)):on=new F.b;var Vn=He==="time"?10:yt,Jn=new F.b(te,Ae+(He==="time"?yt:yt-Vn),+Pe,Vn-pn);return{axisBBox:on,controllerBBox:qt,timelineBBox:Jn}},enumerable:!1,configurable:!0}),se.prototype.setBySliderValues=function(q){var te,Ae,Pe=this.data,Qe=(0,m.CR)(Array.isArray(q)?q:[0,q],2),He=Qe[0],qe=Qe[1],yt=Pe.length,qt=Pe[Math.floor(He*yt)],on=Pe[Math.ceil(qe*yt)-(Array.isArray(q)?0:1)];this.states.values=[(te=qt==null?void 0:qt.time)!==null&&te!==void 0?te:Pe[0].time,(Ae=on==null?void 0:on.time)!==null&&Ae!==void 0?Ae:1/0]},se.prototype.setByTimebarValues=function(q){var te,Ae,Pe,Qe=this.data,He=(0,m.CR)(Array.isArray(q)?q:[void 0,q],2),qe=He[0],yt=He[1],qt=Qe.find(function(pn){var Vn=pn.time;return Vn===qe}),on=Qe.find(function(pn){var Vn=pn.time;return Vn===yt});this.states.values=[(te=qt==null?void 0:qt.time)!==null&&te!==void 0?te:(Ae=Qe[0])===null||Ae===void 0?void 0:Ae.time,(Pe=on==null?void 0:on.time)!==null&&Pe!==void 0?Pe:1/0]},se.prototype.setByIndex=function(q){var te,Ae,Pe,Qe,He=this.data,qe=(0,m.CR)(q,2),yt=qe[0],qt=qe[1];this.states.values=[(Ae=(te=He[yt])===null||te===void 0?void 0:te.time)!==null&&Ae!==void 0?Ae:He[0].time,(Qe=(Pe=this.data[qt])===null||Pe===void 0?void 0:Pe.time)!==null&&Qe!==void 0?Qe:1/0]},Object.defineProperty(se.prototype,"sliderValues",{get:function(){var q=this.states,te=q.values,Ae=q.selectionType,Pe=(0,m.CR)(Array.isArray(te)?te:[void 0,te],2),Qe=Pe[0],He=Pe[1],qe=this.data,yt=qe.length,qt=Ae==="value",on=function(){var Vn=qe.findIndex(function(Jn){var Ur=Jn.time;return Ur===Qe});return qt?0:Vn>-1?Vn/yt:0},pn=function(){if(He===1/0)return 1;var Vn=qe.findIndex(function(Jn){var Ur=Jn.time;return Ur===He});return Vn>-1?Vn/yt:qt?.5:1};return[on(),pn()]},enumerable:!1,configurable:!0}),Object.defineProperty(se.prototype,"values",{get:function(){var q=this.states,te=q.values,Ae=q.selectionType,Pe=(0,m.CR)(Array.isArray(te)?te:[this.data[0].time,te],2),Qe=Pe[0],He=Pe[1];return Ae==="value"?He:[Qe,He]},enumerable:!1,configurable:!0}),se.prototype.getDatumByRatio=function(q){var te=this.data,Ae=te.length,Pe=Math.floor(q*(Ae-1));return te[Pe]},Object.defineProperty(se.prototype,"chartHandleIconShape",{get:function(){var q=this.states.selectionType,te=this.space.timelineBBox.height;return q==="range"?function(Ae){return new ts({style:{type:Ae,height:te,iconSize:te/6}})}:function(){return new L.x1({style:{x1:0,y1:-te/2,x2:0,y2:te/2,lineWidth:2,stroke:"#c8c8c8"}})}},enumerable:!1,configurable:!0}),se.prototype.getChartStyle=function(q){var te=this,Ae=q.x,Pe=q.y,Qe=q.width,He=q.height,qe=this.states,yt=qe.selectionType,qt=qe.chartType,on=this.data,pn=this.attributes,Vn=pn.type,Jn=pn.labelFormatter,Ur=(0,B.zs)(this.attributes,"chart"),Sr=Ur.type,Ai=(0,m._T)(Ur,["type"]),hi=yt==="range";if(Vn==="time")return(0,m.pi)({handleIconShape:function(){return new ss({})},selectionFill:"#2e7ff8",selectionFillOpacity:1,showLabelOnInteraction:!0,handleLabelDy:hi?-15:0,autoFitLabel:hi,handleSpacing:hi?-15:0,trackFill:"#edeeef",trackLength:Qe,trackOpacity:.5,trackRadius:He/2,trackSize:He/2,type:yt,values:this.sliderValues,formatter:function(_s){if(Jn)return Jn(_s);var Ns=te.getDatumByRatio(_s).time;return typeof Ns=="number"?co(Ns):Y(Ns,"YYYY-MM-DD HH:mm:ss")},transform:"translate(".concat(Ae,", ").concat(Pe,")"),zIndex:1},Ai);var _i=yt==="range"?5:0,Ii=on.map(function(_s){var Ns=_s.value;return Ns});return(0,m.pi)({handleIconOffset:_i,handleIconShape:this.chartHandleIconShape,selectionFill:"#fff",selectionFillOpacity:.5,selectionType:"invert",sparklineSpacing:.1,sparklineColumnLineWidth:0,sparklineColor:"#d4e5fd",sparklineAreaOpacity:1,sparklineAreaLineWidth:0,sparklineData:Ii,sparklineType:qt,sparklineScale:.8,trackLength:Qe,trackSize:He,type:yt,values:this.sliderValues,transform:"translate(".concat(Ae,", ").concat(Pe,")"),zIndex:1},Ai)},se.prototype.renderChart=function(q){q===void 0&&(q=this.space.timelineBBox),this.timeline.update(this.getChartStyle(q))},se.prototype.updateSelection=function(){this.timeline.setValues(this.sliderValues,!0),this.handleSliderChange(this.sliderValues)},se.prototype.getAxisStyle=function(q){var te=this.data,Ae=this.attributes,Pe=Ae.interval,Qe=Ae.labelFormatter,He=(0,B.zs)(this.attributes,"axis"),qe=q.x,yt=q.y,qt=q.width,on=(0,m.ev)((0,m.ev)([],(0,m.CR)(te),!1),[{time:0}],!1).map(function(Vn,Jn,Ur){var Sr=Vn.time;return{label:"".concat(Sr),value:Jn/(Ur.length-1),time:Sr}}),pn=(0,m.pi)({startPos:[qe,yt],endPos:[qe+qt,yt],data:on,labelFilter:function(Vn,Jn){return JnPe?qe==="value"?[0,0]:yt==="acc"?[Es(_s),Es(_s)]:[0,Es(Ns-_s)]:_s<0?yt==="acc"?[0,Es(Ns)]:[Es(_s+Pe-Ns),Pe]:[Es(_s),Es(Ns)]},hi=Ai(Sr);return this.setByIndex(hi),this.updateSelection(),hi},se.prototype.internalBackward=function(q){var te,Ae,Pe=this.moveSelection("backward",q);return q||((Ae=(te=this.attributes)===null||te===void 0?void 0:te.onBackward)===null||Ae===void 0||Ae.call(te),this.dispatchOnChange()),Pe},se.prototype.backward=function(){this.internalBackward()},se.prototype.internalPlay=function(q){var te=this,Ae,Pe,Qe=this.data,He=this.attributes.loop,qe=this.states.speed,yt=qe===void 0?1:qe;this.playInterval=window.setInterval(function(){var qt=te.internalForward();qt[1]===Qe.length&&!He&&(te.internalPause(),te.renderController())},1e3/yt),this.states.state="play",!q&&((Pe=(Ae=this.attributes)===null||Ae===void 0?void 0:Ae.onPlay)===null||Pe===void 0||Pe.call(Ae))},se.prototype.play=function(){this.internalPlay()},se.prototype.internalPause=function(q){var te,Ae;clearInterval(this.playInterval),this.states.state="pause",!q&&((Ae=(te=this.attributes)===null||te===void 0?void 0:te.onPause)===null||Ae===void 0||Ae.call(te))},se.prototype.pause=function(){this.internalPause()},se.prototype.internalForward=function(q){var te,Ae,Pe=this.moveSelection("forward",q);return q||((Ae=(te=this.attributes)===null||te===void 0?void 0:te.onForward)===null||Ae===void 0||Ae.call(te),this.dispatchOnChange()),Pe},se.prototype.forward=function(){this.internalForward()},se.prototype.handleSpeedChange=function(q){var te,Ae;this.states.speed=q;var Pe=this.states.state;Pe==="play"&&(this.internalPause(!0),this.internalPlay(!0)),(Ae=(te=this.attributes)===null||te===void 0?void 0:te.onSpeedChange)===null||Ae===void 0||Ae.call(te,q)},se.prototype.handleSelectionTypeChange=function(q){var te,Ae;this.states.selectionType=q,this.renderChart(),(Ae=(te=this.attributes)===null||te===void 0?void 0:te.onSelectionTypeChange)===null||Ae===void 0||Ae.call(te,q)},se.prototype.handleChartTypeChange=function(q){var te,Ae;this.states.chartType=q,this.renderChart(),(Ae=(te=this.attributes)===null||te===void 0?void 0:te.onChartTypeChange)===null||Ae===void 0||Ae.call(te,q)},se.prototype.render=function(){var q=this.space,te=q.axisBBox,Ae=q.controllerBBox,Pe=q.timelineBBox;this.renderController(Ae),this.renderAxis(te),this.renderChart(Pe),this.states.state==="play"&&this.internalPlay()},se.prototype.destroy=function(){le.prototype.destroy.call(this),this.internalPause(!0)},se.defaultOptions={style:{x:0,y:0,axisLabelFill:"#6e6e6e",axisLabelTextAlign:"left",axisLabelTextBaseline:"top",axisLabelTransform:"translate(5, -12)",axisLineLineWidth:1,axisLineStroke:"#cacdd1",axisTickLength:15,axisTickLineWidth:1,axisTickStroke:"#cacdd1",chartShowLabel:!1,chartType:"line",controllerAlign:"center",controllerHeight:40,data:[],interval:"day",loop:!1,playMode:"acc",selectionType:"range",type:"time"}},se}(H.w)},75242:function(Ie,Be,_){"use strict";_.d(Be,{u:function(){return Y}});var m=_(80813),K=_(85580);function H(fe,ue){return!fe||!ue?fe:fe.replace(/\\?\{([^{}]+)\}/g,function(Me,_e){return Me.charAt(0)==="\\"?Me.slice(1):ue[_e]===void 0?"":ue[_e]})}var L=H,T=_(97304),F=function(fe,ue){if(ue==null){fe.innerHTML="";return}fe.replaceChildren?Array.isArray(ue)?fe.replaceChildren.apply(fe,(0,m.ev)([],(0,m.CR)(ue),!1)):fe.replaceChildren(ue):(fe.innerHTML="",Array.isArray(ue)?ue.forEach(function(Me){return fe.appendChild(Me)}):fe.appendChild(ue))},B=_(88839),U=_(17911);function Q(fe){return fe===void 0&&(fe=""),{CONTAINER:"".concat(fe,"tooltip"),TITLE:"".concat(fe,"tooltip-title"),LIST:"".concat(fe,"tooltip-list"),LIST_ITEM:"".concat(fe,"tooltip-list-item"),NAME:"".concat(fe,"tooltip-list-item-name"),MARKER:"".concat(fe,"tooltip-list-item-marker"),NAME_LABEL:"".concat(fe,"tooltip-list-item-name-label"),VALUE:"".concat(fe,"tooltip-list-item-value"),CROSSHAIR_X:"".concat(fe,"tooltip-crosshair-x"),CROSSHAIR_Y:"".concat(fe,"tooltip-crosshair-y")}}var V={overflow:"hidden","white-space":"nowrap","text-overflow":"ellipsis"};function j(fe){var ue;fe===void 0&&(fe="");var Me=Q(fe);return ue={},ue[".".concat(Me.CONTAINER)]={position:"absolute",visibility:"visible","z-index":8,transition:"visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)","background-color":"rgba(255, 255, 255, 0.96)","box-shadow":"0 6px 12px 0 rgba(0, 0, 0, 0.12)","border-radius":"4px",color:"rgba(0, 0, 0, 0.65)","font-size":"12px","line-height":"20px",padding:"12px","min-width":"120px","max-width":"360px","font-family":"Roboto-Regular"},ue[".".concat(Me.TITLE)]={color:"rgba(0, 0, 0, 0.45)"},ue[".".concat(Me.LIST)]={margin:"0px","list-style-type":"none",padding:"0px"},ue[".".concat(Me.LIST_ITEM)]={"list-style-type":"none",display:"flex","line-height":"2em","align-items":"center","justify-content":"space-between","white-space":"nowrap"},ue[".".concat(Me.MARKER)]={width:"8px",height:"8px","border-radius":"50%",display:"inline-block","margin-right":"4px"},ue[".".concat(Me.NAME)]={display:"flex","align-items":"center","max-width":"216px"},ue[".".concat(Me.NAME_LABEL)]=(0,m.pi)({flex:1},V),ue[".".concat(Me.VALUE)]=(0,m.pi)({display:"inline-block",float:"right",flex:1,"text-align":"right","min-width":"28px","margin-left":"30px",color:"rgba(0, 0, 0, 0.85)"},V),ue[".".concat(Me.CROSSHAIR_X)]={position:"absolute",width:"1px","background-color":"rgba(0, 0, 0, 0.25)"},ue[".".concat(Me.CROSSHAIR_Y)]={position:"absolute",height:"1px","background-color":"rgba(0, 0, 0, 0.25)"},ue}var Y=function(fe){(0,m.ZT)(ue,fe);function ue(Me){var _e=this,Ce,Xe,Fe=(Xe=(Ce=Me.style)===null||Ce===void 0?void 0:Ce.template)===null||Xe===void 0?void 0:Xe.prefixCls,ft=Q(Fe);return _e=fe.call(this,Me,{data:[],x:0,y:0,visibility:"visible",title:"",position:"bottom-right",offset:[5,5],enterable:!1,container:{x:0,y:0},bounding:null,template:{prefixCls:"",container:'
'),title:'
'),item:'
  • + + + {name} + + {value} +
  • `)},style:j(Fe)})||this,_e.timestamp=-1,_e.prevCustomContentKey=_e.attributes.contentKey,_e.initShape(),_e.render(_e.attributes,_e),_e}return Object.defineProperty(ue.prototype,"HTMLTooltipElement",{get:function(){return this.element},enumerable:!1,configurable:!0}),ue.prototype.getContainer=function(){return this.element},Object.defineProperty(ue.prototype,"elementSize",{get:function(){var Me=this.element.offsetWidth,_e=this.element.offsetHeight;return{width:Me,height:_e}},enumerable:!1,configurable:!0}),Object.defineProperty(ue.prototype,"HTMLTooltipItemsElements",{get:function(){var Me=this.attributes,_e=Me.data,Ce=Me.template;return _e.map(function(Xe,Fe){var ft=Xe.name,_t=ft===void 0?"":ft,lt=Xe.color,Vt=lt===void 0?"black":lt,It=Xe.index,Fn=(0,m._T)(Xe,["name","color","index"]),Ot=(0,m.pi)({name:_t,color:Vt,index:It!=null?It:Fe},Fn);return(0,K.L)(L(Ce.item,Ot))})},enumerable:!1,configurable:!0}),ue.prototype.render=function(Me,_e){this.renderHTMLTooltipElement(),this.updatePosition()},ue.prototype.destroy=function(){var Me;(Me=this.element)===null||Me===void 0||Me.remove(),fe.prototype.destroy.call(this)},ue.prototype.show=function(Me,_e){var Ce=this;if(Me!==void 0&&_e!==void 0){var Xe=this.element.style.visibility==="hidden",Fe=function(){Ce.attributes.x=Me!=null?Me:Ce.attributes.x,Ce.attributes.y=_e!=null?_e:Ce.attributes.y,Ce.updatePosition()};Xe?this.closeTransition(Fe):Fe()}this.element.style.visibility="visible"},ue.prototype.hide=function(Me,_e){Me===void 0&&(Me=0),_e===void 0&&(_e=0);var Ce=this.attributes.enterable;Ce&&this.isCursorEntered(Me,_e)||(this.element.style.visibility="hidden")},ue.prototype.initShape=function(){var Me=this.attributes.template;this.element=(0,K.L)(Me.container),this.id&&this.element.setAttribute("id",this.id)},ue.prototype.renderCustomContent=function(){if(!(this.prevCustomContentKey!==void 0&&this.prevCustomContentKey===this.attributes.contentKey)){this.prevCustomContentKey=this.attributes.contentKey;var Me=this.attributes.content;Me&&(typeof Me=="string"?this.element.innerHTML=Me:F(this.element,Me))}},ue.prototype.renderHTMLTooltipElement=function(){var Me,_e,Ce=this.attributes,Xe=Ce.template,Fe=Ce.title,ft=Ce.enterable,_t=Ce.style,lt=Ce.content,Vt=Q(Xe.prefixCls),It=this.element;if(this.element.style.pointerEvents=ft?"auto":"none",lt)this.renderCustomContent();else{Fe?(It.innerHTML=Xe.title,It.getElementsByClassName(Vt.TITLE)[0].innerHTML=Fe):(_e=(Me=It.getElementsByClassName(Vt.TITLE))===null||Me===void 0?void 0:Me[0])===null||_e===void 0||_e.remove();var Fn=this.HTMLTooltipItemsElements,Ot=document.createElement("ul");Ot.className=Vt.LIST,F(Ot,Fn);var jn=this.element.querySelector(".".concat(Vt.LIST));jn?jn.replaceWith(Ot):It.appendChild(Ot)}(0,B.MC)(It,_t)},ue.prototype.getRelativeOffsetFromCursor=function(Me){var _e=this.attributes,Ce=_e.position,Xe=_e.offset,Fe=Me||Ce,ft=Fe.split("-"),_t={left:[-1,0],right:[1,0],top:[0,-1],bottom:[0,1]},lt=this.elementSize,Vt=lt.width,It=lt.height,Fn=[-Vt/2,-It/2];return ft.forEach(function(Ot){var jn=(0,m.CR)(Fn,2),rr=jn[0],kn=jn[1],Kn=(0,m.CR)(_t[Ot],2),_r=Kn[0],bn=Kn[1];Fn=[rr+(Vt/2+Xe[0])*_r,kn+(It/2+Xe[1])*bn]}),Fn},ue.prototype.setOffsetPosition=function(Me){var _e=(0,m.CR)(Me,2),Ce=_e[0],Xe=_e[1],Fe=this.attributes,ft=Fe.x,_t=ft===void 0?0:ft,lt=Fe.y,Vt=lt===void 0?0:lt,It=Fe.container,Fn=It.x,Ot=It.y;this.element.style.left="".concat(+_t+Fn+Ce,"px"),this.element.style.top="".concat(+Vt+Ot+Xe,"px")},ue.prototype.updatePosition=function(){var Me=this.attributes.showDelay,_e=Me===void 0?60:Me,Ce=Date.now();this.timestamp>0&&Ce-this.timestamp<_e||(this.timestamp=Ce,this.setOffsetPosition(this.autoPosition(this.getRelativeOffsetFromCursor())))},ue.prototype.autoPosition=function(Me){var _e=(0,m.CR)(Me,2),Ce=_e[0],Xe=_e[1],Fe=this.attributes,ft=Fe.x,_t=Fe.y,lt=Fe.bounding,Vt=Fe.position;if(!lt)return[Ce,Xe];var It=this.element,Fn=It.offsetWidth,Ot=It.offsetHeight,jn=(0,m.CR)([+ft+Ce,+_t+Xe],2),rr=jn[0],kn=jn[1],Kn={left:"right",right:"left",top:"bottom",bottom:"top"},_r=lt.x,bn=lt.y,Cr=lt.width,Ke=lt.height,Rt={left:rr<_r,right:rr+Fn>_r+Cr,top:knbn+Ke},Qn=[];Vt.split("-").forEach(function(rn){Rt[rn]?Qn.push(Kn[rn]):Qn.push(rn)});var Yr=Qn.join("-");return this.getRelativeOffsetFromCursor(Yr)},ue.prototype.isCursorEntered=function(Me,_e){if(this.element){var Ce=this.element.getBoundingClientRect(),Xe=Ce.x,Fe=Ce.y,ft=Ce.width,_t=Ce.height;return new U.b(Xe,Fe,ft,_t).isPointIn(Me,_e)}return!1},ue.prototype.closeTransition=function(Me){var _e=this,Ce=this.element.style.transition;this.element.style.transition="none",Me(),setTimeout(function(){_e.element.style.transition=Ce},10)},ue.tag="tooltip",ue}(T.w)},17911:function(Ie,Be,_){"use strict";_.d(Be,{b:function(){return m}});var m=function(){function H(L,T,F,B){L===void 0&&(L=0),T===void 0&&(T=0),F===void 0&&(F=0),B===void 0&&(B=0),this.x=0,this.y=0,this.width=0,this.height=0,this.x=L,this.y=T,this.width=F,this.height=B}return Object.defineProperty(H.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!1,configurable:!0}),Object.defineProperty(H.prototype,"left",{get:function(){return this.x},enumerable:!1,configurable:!0}),Object.defineProperty(H.prototype,"right",{get:function(){return this.x+this.width},enumerable:!1,configurable:!0}),Object.defineProperty(H.prototype,"top",{get:function(){return this.y},enumerable:!1,configurable:!0}),H.fromRect=function(L){return new H(L.x,L.y,L.width,L.height)},H.prototype.toJSON=function(){return{x:this.x,y:this.y,width:this.width,height:this.height,top:this.top,right:this.right,bottom:this.bottom,left:this.left}},H.prototype.isPointIn=function(L,T){return L>=this.left&&L<=this.right&&T>=this.top&&T<=this.bottom},H}();function K(H){var L=H.getRenderBounds(),T=__read(L.min,2),F=T[0],B=T[1],U=__read(L.max,2),Q=U[0],V=U[1],j=Q-F,Y=V-B;return new m(F,B,j,Y)}},38242:function(Ie,Be,_){"use strict";_.d(Be,{S:function(){return H}});var m=_(80813),K=_(71018);function H(L,T){return(0,K.Z)(L)?L.apply(void 0,(0,m.ev)([],(0,m.CR)(T),!1)):L}},58688:function(Ie,Be,_){"use strict";_.d(Be,{A:function(){return K}});var m=_(80813),K=function(H,L){var T=function(B){return"".concat(L,"-").concat(B)},F=Object.fromEntries(Object.entries(H).map(function(B){var U=(0,m.CR)(B,2),Q=U[0],V=U[1],j=T(V);return[Q,{name:j,class:".".concat(j),id:"#".concat(j),toString:function(){return j}}]}));return Object.assign(F,{prefix:T}),F}},99247:function(Ie,Be,_){"use strict";_.d(Be,{n:function(){return F}});var m=_(80813),K=_(63467),H=_(39934),L=5,T=function(B,U,Q,V){Q===void 0&&(Q=0),V===void 0&&(V=L),Object.entries(U).forEach(function(j){var Y=(0,m.CR)(j,2),fe=Y[0],ue=Y[1],Me=B;Object.prototype.hasOwnProperty.call(U,fe)&&(ue?(0,K.Z)(ue)?((0,K.Z)(B[fe])||(Me[fe]={}),Q2?[K[0]]:K.split("")}},99769:function(Ie,Be,_){"use strict";_.d(Be,{b:function(){return m}});function m(K,H,L){L===void 0&&(L=!1);var T=K.getBBox(),F=T.width,B=T.height,U=H/Math.max(F,B);return L&&(K.style.transform="scale(".concat(U,")")),U}},38974:function(Ie,Be,_){"use strict";_.d(Be,{OV:function(){return j},Ys:function(){return V}});var m=_(80813),K=_(39934),H=function(Y){if(!(0,K.Z)(Y))return[];for(var fe=[],ue=0;ue="A"&&fe<="Z"};function U(j,Y,fe){fe===void 0&&(fe=!1);var ue={};return Object.entries(j).forEach(function(Me){var _e=(0,m.CR)(Me,2),Ce=_e[0],Xe=_e[1];if(!(Ce==="className"||Ce==="class")){if(B(Ce,"show")&&B(T(Ce,"show"),Y)!==fe)Ce===L(Y,"show")?ue[Ce]=Xe:ue[Ce.replace(new RegExp(K(Y)),"")]=Xe;else if(!B(Ce,"show")&&B(Ce,Y)!==fe){var Fe=T(Ce,Y);Fe==="filter"&&typeof Xe=="function"||(ue[Fe]=Xe)}}}),ue}function Q(j,Y){return Object.entries(j).reduce(function(fe,ue){var Me=(0,m.CR)(ue,2),_e=Me[0],Ce=Me[1];return _e.startsWith("show")?fe["show".concat(Y).concat(_e.slice(4))]=Ce:fe["".concat(Y).concat(K(_e))]=Ce,fe},{})}function V(j,Y){Y===void 0&&(Y=["x","y","class","className"]);var fe=["transform","transformOrigin","anchor","visibility","pointerEvents","zIndex","cursor","clipPath","clipPathTargets","offsetPath","offsetPathTargets","offsetDistance","draggable","droppable"],ue={},Me={};return Object.entries(j).forEach(function(_e){var Ce=(0,m.CR)(_e,2),Xe=Ce[0],Fe=Ce[1];Y.includes(Xe)||(fe.indexOf(Xe)!==-1?Me[Xe]=Fe:ue[Xe]=Fe)}),[ue,Me]}},58533:function(Ie,Be,_){"use strict";_.d(Be,{Rm:function(){return Q},U4:function(){return U},Ux:function(){return F},qT:function(){return B}});var m=_(66623),K=_(40455),H,L;function T(V){L=V}var F=(0,K.Z)(function(V,j){var Y=j.fontSize,fe=j.fontFamily,ue=j.fontWeight,Me=j.fontStyle,_e=j.fontVariant;return L?L(V,Y):(H||(H=m.GZ.offscreenCanvasCreator.getOrCreateContext(void 0)),H.font=[Me,_e,ue,"".concat(Y,"px"),fe].join(" "),H.measureText(V).width)},function(V,j){return[V,Object.values(j||B(V)).join()].join("")},4096),B=function(V){var j=V.style.fontFamily||"sans-serif",Y=V.style.fontWeight||"normal",fe=V.style.fontStyle||"normal",ue=V.style.fontVariant,Me=V.style.fontSize;return Me=typeof Me=="object"?Me.value:Me,{fontSize:Me,fontFamily:j,fontWeight:Y,fontStyle:fe,fontVariant:ue}};function U(V){return V.nodeName==="text"?V:V.nodeName==="g"&&V.children.length===1&&V.children[0].nodeName==="text"?V.children[0]:null}function Q(V,j){var Y=U(V);Y&&Y.attr(j)}},69014:function(Ie,Be,_){"use strict";_.d(Be,{Cp:function(){return H},$Z:function(){return K},WD:function(){return L}});function m(T,F){F(T),T.children&&T.children.forEach(function(B){B&&m(B,F)})}function K(T){L(T,!0)}function H(T){L(T,!1)}function L(T,F){var B=F?"visible":"hidden";m(T,function(U){U.attr("visibility",B)})}},49336:function(Ie,Be){"use strict";var _="*",m=function(){function K(){this._events={}}return K.prototype.on=function(H,L,T){return this._events[H]||(this._events[H]=[]),this._events[H].push({callback:L,once:!!T}),this},K.prototype.once=function(H,L){return this.on(H,L,!0)},K.prototype.emit=function(H){for(var L=this,T=[],F=1;FGe&&an>$e,We&&(typeof We.resetTransform=="function"?We.resetTransform():We.setTransform(1,0,0,1,0,0),pt.clearFullScreen&&pt.clearRect(We,0,0,gt*tt,bt*tt,Mn.background))},S=function(ae,We){for(var tt=[ae];tt.length>0;){var gt,bt=tt.pop();bt.isVisible()&&!bt.isCulled()&&(mi?pt.renderDisplayObjectOptimized(bt,We,pt.context,Q(pt,lt)[lt],ct):pt.renderDisplayObject(bt,We,pt.context,Q(pt,lt)[lt],ct));for(var Bn=((gt=bt.sortable)===null||gt===void 0||(gt=gt.sorted)===null||gt===void 0?void 0:gt.length)>0?bt.sortable.sorted:bt.childNodes,Ge=Bn.length-1;Ge>=0;Ge--)tt.push(Bn[Ge])}};ur.hooks.endFrame.tap(Nn.tag,function(){if(W(),lr.root.childNodes.length===0){pt.clearFullScreenLastFrame=!0;return}mi=Mn.renderer.getConfig().enableRenderingOptimization,Q(pt,lt)[lt]={restoreStack:[],prevObject:null,currentContext:Q(pt,lt)[lt].currentContext},Q(pt,lt)[lt].currentContext.clear(),pt.clearFullScreenLastFrame=!1;var G=Le.getContext(),ae=Le.getDPR();if(Y.fromScaling(pt.dprMatrix,[ae,ae,1]),Y.multiply(pt.vpMatrix,pt.dprMatrix,sn.getOrthoMatrix()),pt.clearFullScreen)mi?(G.save(),S(lr.root,G),G.restore()):S(lr.root,G);else{var We=pt.safeMergeAABB(pt.mergeDirtyAABBs(pt.renderQueue));if(T.mN.isEmpty(We)){pt.renderQueue=[];return}var tt=pt.convertAABB2Rect(We),gt=tt.x,bt=tt.y,Bn=tt.width,Ge=tt.height,$e=fe.fF(pt.vec3a,[gt,bt,0],pt.vpMatrix),Ne=fe.fF(pt.vec3b,[gt+Bn,bt,0],pt.vpMatrix),Ye=fe.fF(pt.vec3c,[gt,bt+Ge,0],pt.vpMatrix),vt=fe.fF(pt.vec3d,[gt+Bn,bt+Ge,0],pt.vpMatrix),an=Math.min($e[0],Ne[0],vt[0],Ye[0]),xt=Math.min($e[1],Ne[1],vt[1],Ye[1]),tn=Math.max($e[0],Ne[0],vt[0],Ye[0]),Un=Math.max($e[1],Ne[1],vt[1],Ye[1]),hr=Math.floor(an),or=Math.floor(xt),$r=Math.ceil(tn-an),xr=Math.ceil(Un-xt);G.save(),pt.clearRect(G,hr,or,$r,xr,Mn.background),G.beginPath(),G.rect(hr,or,$r,xr),G.clip(),G.setTransform(pt.vpMatrix[0],pt.vpMatrix[1],pt.vpMatrix[4],pt.vpMatrix[5],pt.vpMatrix[12],pt.vpMatrix[13]);var Rr=Mn.renderer.getConfig(),pi=Rr.enableDirtyRectangleRenderingDebug;pi&&k.dispatchEvent(new T.Aw(T.$6.DIRTY_RECTANGLE,{dirtyRect:{x:hr,y:or,width:$r,height:xr}}));var Tn=We.getMin(),ir=(0,U.Z)(Tn,2),ni=ir[0],zr=ir[1],xs=We.getMax(),ms=(0,U.Z)(xs,2),ls=ms[0],Oi=ms[1],Ds=lr.root.ownerDocument.elementsFromBBox(ni,zr,ls,Oi);Ds.sort(function(Bi,Qs){return Bi.sortable.renderOrder-Qs.sortable.renderOrder}).forEach(function(Bi){Bi&&Bi.isVisible()&&!Bi.isCulled()&&pt.renderDisplayObject(Bi,G,pt.context,Q(pt,lt)[lt],ct)}),G.restore(),pt.renderQueue.forEach(function(Bi){pt.saveDirtyAABB(Bi)}),pt.renderQueue=[]}Q(pt,lt)[lt].restoreStack.forEach(function(){G.restore()}),Q(pt,lt)[lt].restoreStack=[]}),ur.hooks.render.tap(Nn.tag,function(G){pt.clearFullScreen||pt.renderQueue.push(G)})}},{key:"clearRect",value:function(jt,ct,pt,zt,Mn,sn){jt.clearRect(ct,pt,zt,Mn),sn&&(jt.fillStyle=sn,jt.fillRect(ct,pt,zt,Mn))}},{key:"renderDisplayObjectOptimized",value:function(jt,ct,pt,zt,Mn){var sn=jt.nodeName,ur=!1,lr=!1,oi=this.context.styleRendererFactory[sn],mi=this.pathGeneratorFactory[sn],Le=jt.parsedStyle.clipPath;if(Le){ur=!zt.prevObject||!Y.exactEquals(Le.getWorldTransform(),zt.prevObject.getWorldTransform()),ur&&(this.applyWorldTransform(ct,Le),zt.prevObject=null);var k=this.pathGeneratorFactory[Le.nodeName];k&&(ct.save(),lr=!0,ct.beginPath(),k(ct,Le.parsedStyle),ct.closePath(),ct.clip())}if(oi){ur=!zt.prevObject||!Y.exactEquals(jt.getWorldTransform(),zt.prevObject.getWorldTransform()),ur&&this.applyWorldTransform(ct,jt);var W=!zt.prevObject;if(!W){var S=zt.prevObject.nodeName;sn===T.bn.TEXT?W=S!==T.bn.TEXT:sn===T.bn.IMAGE?W=S!==T.bn.IMAGE:W=S===T.bn.TEXT||S===T.bn.IMAGE}oi.applyStyleToContext(ct,jt,W,zt),zt.prevObject=jt}mi&&(ct.beginPath(),mi(ct,jt.parsedStyle),sn!==T.bn.LINE&&sn!==T.bn.PATH&&sn!==T.bn.POLYLINE&&ct.closePath()),oi&&oi.drawToContext(ct,jt,Q(this,lt)[lt],this,Mn),lr&&ct.restore(),jt.dirty(!1)}},{key:"renderDisplayObject",value:function(jt,ct,pt,zt,Mn){var sn=jt.nodeName,ur=zt.restoreStack[zt.restoreStack.length-1];ur&&!(jt.compareDocumentPosition(ur)&T.NB.DOCUMENT_POSITION_CONTAINS)&&(ct.restore(),zt.restoreStack.pop());var lr=this.context.styleRendererFactory[sn],oi=this.pathGeneratorFactory[sn],mi=jt.parsedStyle.clipPath;if(mi){this.applyWorldTransform(ct,mi);var Le=this.pathGeneratorFactory[mi.nodeName];Le&&(ct.save(),zt.restoreStack.push(jt),ct.beginPath(),Le(ct,mi.parsedStyle),ct.closePath(),ct.clip())}lr&&(this.applyWorldTransform(ct,jt),ct.save(),this.applyAttributesToContext(ct,jt)),oi&&(ct.beginPath(),oi(ct,jt.parsedStyle),sn!==T.bn.LINE&&sn!==T.bn.PATH&&sn!==T.bn.POLYLINE&&ct.closePath()),lr&&(lr.render(ct,jt.parsedStyle,jt,pt,this,Mn),ct.restore()),jt.dirty(!1)}},{key:"applyAttributesToContext",value:function(jt,ct){var pt=ct.parsedStyle,zt=pt.stroke,Mn=pt.fill,sn=pt.opacity,ur=pt.lineDash,lr=pt.lineDashOffset;ur&&jt.setLineDash(ur),(0,ue.Z)(lr)||(jt.lineDashOffset=lr),(0,ue.Z)(sn)||(jt.globalAlpha*=sn),!(0,ue.Z)(zt)&&!Array.isArray(zt)&&!zt.isNone&&(jt.strokeStyle=ct.attributes.stroke),!(0,ue.Z)(Mn)&&!Array.isArray(Mn)&&!Mn.isNone&&(jt.fillStyle=ct.attributes.fill)}},{key:"convertAABB2Rect",value:function(jt){var ct=jt.getMin(),pt=jt.getMax(),zt=Math.floor(ct[0]),Mn=Math.floor(ct[1]),sn=Math.ceil(pt[0]),ur=Math.ceil(pt[1]),lr=sn-zt,oi=ur-Mn;return{x:zt,y:Mn,width:lr,height:oi}}},{key:"mergeDirtyAABBs",value:function(jt){var ct=new T.mN;return jt.forEach(function(pt){var zt=pt.getRenderBounds();ct.add(zt);var Mn=pt.renderable.dirtyRenderBounds;Mn&&ct.add(Mn)}),ct}},{key:"saveDirtyAABB",value:function(jt){var ct=jt.renderable;ct.dirtyRenderBounds||(ct.dirtyRenderBounds=new T.mN);var pt=jt.getRenderBounds();pt&&ct.dirtyRenderBounds.update(pt.center,pt.halfExtents)}},{key:"applyWorldTransform",value:function(jt,ct,pt){pt?(Y.copy(this.tmpMat4,ct.getLocalTransform()),Y.multiply(this.tmpMat4,pt,this.tmpMat4),Y.multiply(this.tmpMat4,this.vpMatrix,this.tmpMat4)):(Y.copy(this.tmpMat4,ct.getWorldTransform()),Y.multiply(this.tmpMat4,this.vpMatrix,this.tmpMat4)),jt.setTransform(this.tmpMat4[0],this.tmpMat4[1],this.tmpMat4[4],this.tmpMat4[5],this.tmpMat4[12],this.tmpMat4[13])}},{key:"safeMergeAABB",value:function(){for(var jt=new T.mN,ct=arguments.length,pt=new Array(ct),zt=0;zt0;if(mi){if(pt||ct.attributes.stroke!==zt.prevObject.attributes.stroke){var Le=!(0,ue.Z)(sn.stroke)&&!Array.isArray(sn.stroke)&&!sn.stroke.isNone?ct.attributes.stroke:rr.strokeStyle;Kn(jt,"strokeStyle",Le,zt.currentContext)}(pt||sn.lineWidth!==Mn.lineWidth)&&Kn(jt,"lineWidth",(0,ue.Z)(sn.lineWidth)?rr.lineWidth:sn.lineWidth,zt.currentContext),(pt||sn.lineDash!==Mn.lineDash)&&Kn(jt,"lineDash",sn.lineDash||rr.lineDash,zt.currentContext),(pt||sn.lineDashOffset!==Mn.lineDashOffset)&&Kn(jt,"lineDashOffset",(0,ue.Z)(sn.lineDashOffset)?rr.lineDashOffset:sn.lineDashOffset,zt.currentContext);for(var k=0;k4&&arguments[4]!==void 0?arguments[4]:!1;if(ct){Kn(jt,"shadowColor",rr.shadowColor,zt.currentContext);for(var sn=0;sn-1&&Kn(jt,"filter",lr.replace(/drop-shadow\([^)]*\)/,"").trim()||rr.filter,zt.currentContext)}else Kn(jt,"filter",rr.filter,zt.currentContext)}},{key:"fillToContext",value:function(jt,ct,pt,zt,Mn){var sn=this,ur=ct.parsedStyle,lr=ur.fill,oi=ur.fillRule,mi=null;if(Array.isArray(lr)&&lr.length>0)lr.forEach(function(k){var W=Kn(jt,"fillStyle",Fn(k,ct,jt,sn.imagePool),pt.currentContext);mi=mi!=null?mi:W,oi?jt.fill(oi):jt.fill()});else{if((0,T.R)(lr)){var Le=It(lr,ct,jt,ct.ownerDocument.defaultView.context,zt,Mn,this.imagePool);Le&&(jt.fillStyle=Le,mi=!0)}oi?jt.fill(oi):jt.fill()}mi!==null&&Kn(jt,"fillStyle",mi,pt.currentContext)}},{key:"strokeToContext",value:function(jt,ct,pt,zt,Mn){var sn=this,ur=ct.parsedStyle.stroke,lr=null;if(Array.isArray(ur)&&ur.length>0)ur.forEach(function(Le){var k=Kn(jt,"strokeStyle",Fn(Le,ct,jt,sn.imagePool),pt.currentContext);lr=lr!=null?lr:k,jt.stroke()});else{if((0,T.R)(ur)){var oi=It(ur,ct,jt,ct.ownerDocument.defaultView.context,zt,Mn,this.imagePool);if(oi){var mi=Kn(jt,"strokeStyle",oi,pt.currentContext);lr=lr!=null?lr:mi}}jt.stroke()}lr!==null&&Kn(jt,"strokeStyle",lr,pt.currentContext)}},{key:"drawToContext",value:function(jt,ct,pt,zt,Mn){var sn,ur=ct.nodeName,lr=ct.parsedStyle,oi=lr.opacity,mi=oi===void 0?rr.globalAlpha:oi,Le=lr.fillOpacity,k=Le===void 0?rr.fillOpacity:Le,W=lr.strokeOpacity,S=W===void 0?rr.strokeOpacity:W,G=lr.lineWidth,ae=G===void 0?rr.lineWidth:G,We=lr.fill&&!lr.fill.isNone,tt=lr.stroke&&!lr.stroke.isNone&&ae>0;if(!(!We&&!tt)){var gt=!(0,ue.Z)(lr.shadowColor)&&lr.shadowBlur>0,bt=lr.shadowType==="inner",Bn=((sn=lr.fill)===null||sn===void 0?void 0:sn.alpha)===0,Ge=!!(lr.filter&&lr.filter.length),$e=gt&&tt&&(ur===T.bn.PATH||ur===T.bn.LINE||ur===T.bn.POLYLINE||Bn||bt),Ne=null;if(We){$e||this.applyShadowAndFilterStyleToContext(jt,ct,gt,pt);var Ye=mi*k;Ne=Kn(jt,"globalAlpha",Ye,pt.currentContext),this.fillToContext(jt,ct,pt,zt,Mn),$e||this.clearShadowAndFilterStyleForContext(jt,gt,Ge,pt)}if(tt){var vt=!1,an=mi*S,xt=Kn(jt,"globalAlpha",an,pt.currentContext);if(Ne=We?Ne:xt,$e&&(this.applyShadowAndFilterStyleToContext(jt,ct,gt,pt),vt=!0,bt)){var tn=jt.globalCompositeOperation;jt.globalCompositeOperation="source-atop",this.strokeToContext(jt,ct,pt,zt,Mn),jt.globalCompositeOperation=tn,this.clearShadowAndFilterStyleForContext(jt,gt,Ge,pt,!0)}this.strokeToContext(jt,ct,pt,zt,Mn),vt&&this.clearShadowAndFilterStyleForContext(jt,gt,Ge,pt)}Ne!==null&&Kn(jt,"globalAlpha",Ne,pt.currentContext)}}}])}(),bn=function(Nn){function cn(){return(0,K.Z)(this,cn),(0,H.Z)(this,cn,arguments)}return(0,L.Z)(cn,Nn),(0,m.Z)(cn,[{key:"render",value:function(ct,pt,zt,Mn,sn,ur){var lr=pt.fill,oi=pt.fillRule,mi=pt.opacity,Le=mi===void 0?1:mi,k=pt.fillOpacity,W=k===void 0?1:k,S=pt.stroke,G=pt.strokeOpacity,ae=G===void 0?1:G,We=pt.lineWidth,tt=We===void 0?1:We,gt=pt.lineCap,bt=pt.lineJoin,Bn=pt.shadowType,Ge=pt.shadowColor,$e=pt.shadowBlur,Ne=pt.filter,Ye=pt.miterLimit,vt=lr&&!lr.isNone,an=S&&!S.isNone&&tt>0,xt=(lr==null?void 0:lr.alpha)===0,tn=!!(Ne&&Ne.length),Un=!(0,ue.Z)(Ge)&&$e>0,hr=zt.nodeName,or=Bn==="inner",$r=an&&Un&&(hr===T.bn.PATH||hr===T.bn.LINE||hr===T.bn.POLYLINE||xt||or);vt&&(ct.globalAlpha=Le*W,$r||Cr(zt,ct,Un),Ke(ct,zt,lr,oi,Mn,sn,ur,this.imagePool),$r||this.clearShadowAndFilter(ct,tn,Un)),an&&(ct.globalAlpha=Le*ae,ct.lineWidth=tt,(0,ue.Z)(Ye)||(ct.miterLimit=Ye),(0,ue.Z)(gt)||(ct.lineCap=gt),(0,ue.Z)(bt)||(ct.lineJoin=bt),$r&&(or&&(ct.globalCompositeOperation="source-atop"),Cr(zt,ct,!0),or&&(Rt(ct,zt,S,Mn,sn,ur,this.imagePool),ct.globalCompositeOperation=rr.globalCompositeOperation,this.clearShadowAndFilter(ct,tn,!0))),Rt(ct,zt,S,Mn,sn,ur,this.imagePool))}},{key:"clearShadowAndFilter",value:function(ct,pt,zt){if(zt&&(ct.shadowColor="transparent",ct.shadowBlur=0),pt){var Mn=ct.filter;!(0,ue.Z)(Mn)&&Mn.indexOf("drop-shadow")>-1&&(ct.filter=Mn.replace(/drop-shadow\([^)]*\)/,"").trim()||"none")}}}])}(_r);function Cr(Nn,cn,jt){var ct=Nn.parsedStyle,pt=ct.filter,zt=ct.shadowColor,Mn=ct.shadowBlur,sn=ct.shadowOffsetX,ur=ct.shadowOffsetY;pt&&pt.length&&(cn.filter=Nn.style.filter),jt&&(cn.shadowColor=zt.toString(),cn.shadowBlur=Mn||0,cn.shadowOffsetX=sn||0,cn.shadowOffsetY=ur||0)}function Ke(Nn,cn,jt,ct,pt,zt,Mn,sn){var ur=arguments.length>8&&arguments[8]!==void 0?arguments[8]:!1;Array.isArray(jt)?jt.forEach(function(lr){Nn.fillStyle=Fn(lr,cn,Nn,sn),ur||(ct?Nn.fill(ct):Nn.fill())}):((0,T.R)(jt)&&(Nn.fillStyle=It(jt,cn,Nn,pt,zt,Mn,sn)),ur||(ct?Nn.fill(ct):Nn.fill()))}function Rt(Nn,cn,jt,ct,pt,zt,Mn){var sn=arguments.length>7&&arguments[7]!==void 0?arguments[7]:!1;Array.isArray(jt)?jt.forEach(function(ur){Nn.strokeStyle=Fn(ur,cn,Nn,Mn),sn||Nn.stroke()}):((0,T.R)(jt)&&(Nn.strokeStyle=It(jt,cn,Nn,ct,pt,zt,Mn)),sn||Nn.stroke())}function Qn(Nn,cn){var jt=(0,U.Z)(Nn,4),ct=jt[0],pt=jt[1],zt=jt[2],Mn=jt[3],sn=(0,U.Z)(cn,4),ur=sn[0],lr=sn[1],oi=sn[2],mi=sn[3],Le=Math.max(ct,ur),k=Math.max(pt,lr),W=Math.min(ct+zt,ur+oi),S=Math.min(pt+Mn,lr+mi);return W<=Le||S<=k?null:[Le,k,W-Le,S-k]}function Yr(Nn,cn){var jt=fe.fF(fe.Ue(),[Nn[0],Nn[1],0],cn),ct=fe.fF(fe.Ue(),[Nn[0]+Nn[2],Nn[1],0],cn),pt=fe.fF(fe.Ue(),[Nn[0],Nn[1]+Nn[3],0],cn),zt=fe.fF(fe.Ue(),[Nn[0]+Nn[2],Nn[1]+Nn[3],0],cn);return[Math.min(jt[0],ct[0],pt[0],zt[0]),Math.min(jt[1],ct[1],pt[1],zt[1]),Math.max(jt[0],ct[0],pt[0],zt[0])-Math.min(jt[0],ct[0],pt[0],zt[0]),Math.max(jt[1],ct[1],pt[1],zt[1])-Math.min(jt[1],ct[1],pt[1],zt[1])]}var rn=function(Nn){function cn(){return(0,K.Z)(this,cn),(0,H.Z)(this,cn,arguments)}return(0,L.Z)(cn,Nn),(0,m.Z)(cn,[{key:"renderDownSampled",value:function(ct,pt,zt,Mn){var sn=Mn.src,ur=Mn.imageCache;if(!ur.downSampled){this.imagePool.createDownSampledImage(sn,zt).then(function(){zt.ownerDocument&&(zt.dirty(),zt.ownerDocument.defaultView.context.renderingService.dirty())}).catch(function(lr){console.error(lr)});return}ct.drawImage(ur.downSampled,Math.floor(Mn.drawRect[0]),Math.floor(Mn.drawRect[1]),Math.ceil(Mn.drawRect[2]),Math.ceil(Mn.drawRect[3]))}},{key:"renderTile",value:function(ct,pt,zt,Mn){var sn=Mn.src,ur=Mn.imageCache,lr=Mn.imageRect,oi=Mn.drawRect,mi=ur.size,Le=ct.getTransform(),k=Le.a,W=Le.b,S=Le.c,G=Le.d,ae=Le.e,We=Le.f;if(ct.resetTransform(),!(ur!=null&&ur.gridSize)){this.imagePool.createImageTiles(sn,[],function(){zt.ownerDocument&&(zt.dirty(),zt.ownerDocument.defaultView.context.renderingService.dirty())},zt).catch(function(Un){console.error(Un)});return}for(var tt=[mi[0]/lr[2],mi[1]/lr[3]],gt=[ur.tileSize[0]/tt[0],ur.tileSize[1]/tt[1]],bt=[Math.floor((oi[0]-lr[0])/gt[0]),Math.ceil((oi[0]+oi[2]-lr[0])/gt[0])],Bn=bt[0],Ge=bt[1],$e=[Math.floor((oi[1]-lr[1])/gt[1]),Math.ceil((oi[1]+oi[3]-lr[1])/gt[1])],Ne=$e[0],Ye=$e[1],vt=Ne;vt<=Ye;vt++)for(var an=Bn;an<=Ge;an++){var xt=ur.tiles[vt][an];if(xt){var tn=[Math.floor(lr[0]+xt.tileX*gt[0]),Math.floor(lr[1]+xt.tileY*gt[1]),Math.ceil(gt[0]),Math.ceil(gt[1])];ct.drawImage(xt.data,tn[0],tn[1],tn[2],tn[3])}}ct.setTransform(k,W,S,G,ae,We)}},{key:"render",value:function(ct,pt,zt){var Mn=pt.x,sn=Mn===void 0?0:Mn,ur=pt.y,lr=ur===void 0?0:ur,oi=pt.width,mi=pt.height,Le=pt.src,k=pt.shadowColor,W=pt.shadowBlur,S=this.imagePool.getImageSync(Le,zt),G=S==null?void 0:S.img,ae=oi,We=mi;if(G){ae||(ae=G.width),We||(We=G.height);var tt=!(0,ue.Z)(k)&&W>0;Cr(zt,ct,tt);try{var gt=zt.ownerDocument.defaultView.getContextService().getDomElement(),bt=gt.width,Bn=gt.height,Ge=ct.getTransform(),$e=Ge.a,Ne=Ge.b,Ye=Ge.c,vt=Ge.d,an=Ge.e,xt=Ge.f,tn=Y.fromValues($e,Ye,0,0,Ne,vt,0,0,0,0,1,0,an,xt,0,1),Un=Yr([sn,lr,ae,We],tn),hr=Qn([0,0,bt,Bn],Un);if(!hr)return;if(!zt.ownerDocument.defaultView.getConfig().enableLargeImageOptimization){cn.renderFull(ct,pt,zt,{image:G,drawRect:[sn,lr,ae,We]});return}var or=Un[2]/S.size[0];if(or<(S.downSamplingRate||.5)){this.renderDownSampled(ct,pt,zt,{src:Le,imageCache:S,drawRect:[sn,lr,ae,We]});return}if(!ImagePool.isSupportTile){cn.renderFull(ct,pt,zt,{image:G,drawRect:[sn,lr,ae,We]});return}this.renderTile(ct,pt,zt,{src:Le,imageCache:S,imageRect:Un,drawRect:hr})}catch($r){}}}},{key:"drawToContext",value:function(ct,pt,zt,Mn,sn){this.render(ct,pt.parsedStyle,pt)}}],[{key:"renderFull",value:function(ct,pt,zt,Mn){ct.drawImage(Mn.image,Math.floor(Mn.drawRect[0]),Math.floor(Mn.drawRect[1]),Math.ceil(Mn.drawRect[2]),Math.ceil(Mn.drawRect[3]))}}])}(bn),An=function(Nn){function cn(){return(0,K.Z)(this,cn),(0,H.Z)(this,cn,arguments)}return(0,L.Z)(cn,Nn),(0,m.Z)(cn,[{key:"render",value:function(ct,pt,zt,Mn,sn,ur){zt.getBounds();var lr=pt.lineWidth,oi=lr===void 0?1:lr,mi=pt.textAlign,Le=mi===void 0?"start":mi,k=pt.textBaseline,W=k===void 0?"alphabetic":k,S=pt.lineJoin,G=S===void 0?"miter":S,ae=pt.miterLimit,We=ae===void 0?10:ae,tt=pt.letterSpacing,gt=tt===void 0?0:tt,bt=pt.stroke,Bn=pt.fill,Ge=pt.fillRule,$e=pt.fillOpacity,Ne=$e===void 0?1:$e,Ye=pt.strokeOpacity,vt=Ye===void 0?1:Ye,an=pt.opacity,xt=an===void 0?1:an,tn=pt.metrics,Un=pt.x,hr=Un===void 0?0:Un,or=pt.y,$r=or===void 0?0:or,xr=pt.dx,Rr=pt.dy,pi=pt.shadowColor,Tn=pt.shadowBlur,ir=pt.textDecorationLine,ni=tn.font,zr=tn.lines,xs=tn.height,ms=tn.lineHeight,ls=tn.lineMetrics;ct.font=ni,ct.lineWidth=oi,ct.textAlign=Le==="middle"?"center":Le;var Oi=W;Oi==="alphabetic"&&(Oi="bottom"),ct.lineJoin=G,(0,ue.Z)(We)||(ct.miterLimit=We);var Ds=$r;W==="middle"?Ds+=-xs/2-ms/2:W==="bottom"||W==="alphabetic"||W==="ideographic"?Ds+=-xs:(W==="top"||W==="hanging")&&(Ds+=-ms);var Bi=hr+(xr||0);Ds+=Rr||0,zr.length===1&&(Oi==="bottom"?(Oi="middle",Ds-=.5*xs):Oi==="top"&&(Oi="middle",Ds+=.5*xs)),ct.textBaseline=Oi;var Qs=!(0,ue.Z)(pi)&&Tn>0;Cr(zt,ct,Qs);for(var Na=0;Na0&&arguments[0]!==void 0?arguments[0]:{};return(0,K.Z)(this,cn),jt=(0,H.Z)(this,cn),jt.name="canvas-renderer",jt.options=ct,jt}return(0,L.Z)(cn,Nn),(0,m.Z)(cn,[{key:"init",value:function(){var ct,pt=(0,B.Z)({dirtyObjectNumThreshold:500,dirtyObjectRatioThreshold:.8},this.options),zt=this.context.imagePool,Mn=new bn(zt),sn=(ct={},(0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)(ct,T.bn.CIRCLE,Mn),T.bn.ELLIPSE,Mn),T.bn.RECT,Mn),T.bn.IMAGE,new rn(zt)),T.bn.TEXT,new An(zt)),T.bn.LINE,Mn),T.bn.POLYLINE,Mn),T.bn.POLYGON,Mn),T.bn.PATH,Mn),T.bn.GROUP,void 0),(0,F.Z)((0,F.Z)((0,F.Z)(ct,T.bn.HTML,void 0),T.bn.MESH,void 0),T.bn.FRAGMENT,void 0));this.context.defaultStyleRendererFactory=sn,this.context.styleRendererFactory=sn,this.addRenderingPlugin(new Vt(pt))}},{key:"destroy",value:function(){this.removeAllRenderingPlugins(),delete this.context.defaultStyleRendererFactory,delete this.context.styleRendererFactory}}])}(T.F6),Tt=Object.freeze({__proto__:null,CircleRenderer:bn,DefaultRenderer:bn,EllipseRenderer:bn,ImageRenderer:rn,LineRenderer:bn,PathRenderer:bn,Plugin:Ln,PolygonRenderer:bn,PolylineRenderer:bn,RectRenderer:bn,TextRenderer:An}),Mt=fe.Ue(),ge=fe.Ue(),pe=fe.Ue(),De=Y.create(),Ht=function(){function Nn(){var cn=this;(0,K.Z)(this,Nn),this.isHit=function(jt,ct,pt,zt){var Mn=cn.context.pointInPathPickerFactory[jt.nodeName];if(Mn){var sn=Y.invert(De,pt),ur=fe.fF(ge,fe.t8(pe,ct[0],ct[1],0),sn);if(Mn(jt,new T.E9(ur[0],ur[1]),zt,cn.isPointInPath,cn.context,cn.runtime))return!0}return!1},this.isPointInPath=function(jt,ct){var pt=cn.runtime.offscreenCanvasCreator.getOrCreateContext(cn.context.config.offscreenCanvas),zt=cn.context.pathGeneratorFactory[jt.nodeName];return zt&&(pt.beginPath(),zt(pt,jt.parsedStyle),pt.closePath()),pt.isPointInPath(ct.x,ct.y)}}return(0,m.Z)(Nn,[{key:"apply",value:function(jt,ct){var pt,zt=this,Mn=jt.renderingService,sn=jt.renderingContext;this.context=jt,this.runtime=ct;var ur=(pt=sn.root)===null||pt===void 0?void 0:pt.ownerDocument;Mn.hooks.pick.tapPromise(Nn.tag,function(){var lr=(0,ft.Z)((0,Fe.Z)().mark(function oi(mi){return(0,Fe.Z)().wrap(function(Le){for(;;)switch(Le.prev=Le.next){case 0:return Le.abrupt("return",zt.pick(ur,mi));case 1:case"end":return Le.stop()}},oi)}));return function(oi){return lr.apply(this,arguments)}}()),Mn.hooks.pickSync.tap(Nn.tag,function(lr){return zt.pick(ur,lr)})}},{key:"pick",value:function(jt,ct){var pt=ct.topmost,zt=ct.position,Mn=zt.x,sn=zt.y,ur=fe.t8(Mt,Mn,sn,0),lr=jt.elementsFromBBox(ur[0],ur[1],ur[0],ur[1]),oi=[],mi=(0,Xe.Z)(lr),Le;try{for(mi.s();!(Le=mi.n()).done;){var k=Le.value,W=k.getWorldTransform(),S=this.isHit(k,ur,W,!1);if(S){var G=(0,T.Oi)(k);if(G){var ae=G.parsedStyle.clipPath,We=this.isHit(ae,ur,ae.getWorldTransform(),!0);if(We){if(pt)return ct.picked=[k],ct;oi.push(k)}}else{if(pt)return ct.picked=[k],ct;oi.push(k)}}}}catch(tt){mi.e(tt)}finally{mi.f()}return ct.picked=oi,ct}}])}();Ht.tag="CanvasPicker";function Jt(Nn,cn,jt){var ct=Nn.parsedStyle,pt=ct.cx,zt=pt===void 0?0:pt,Mn=ct.cy,sn=Mn===void 0?0:Mn,ur=ct.r,lr=ct.fill,oi=ct.stroke,mi=ct.lineWidth,Le=mi===void 0?1:mi,k=ct.increasedLineWidthForHitTesting,W=k===void 0?0:k,S=ct.pointerEvents,G=S===void 0?"auto":S,ae=(Le+W)/2,We=(0,_t.TE)(zt,sn,cn.x,cn.y),tt=(0,T.L1)(G,lr,oi),gt=(0,U.Z)(tt,2),bt=gt[0],Bn=gt[1];return bt&&Bn||jt?We<=ur+ae:bt?We<=ur:Bn?We>=ur-ae&&We<=ur+ae:!1}function At(Nn,cn,jt,ct){return Nn/(jt*jt)+cn/(ct*ct)}function dn(Nn,cn,jt){var ct=Nn.parsedStyle,pt=ct.cx,zt=pt===void 0?0:pt,Mn=ct.cy,sn=Mn===void 0?0:Mn,ur=ct.rx,lr=ct.ry,oi=ct.fill,mi=ct.stroke,Le=ct.lineWidth,k=Le===void 0?1:Le,W=ct.increasedLineWidthForHitTesting,S=W===void 0?0:W,G=ct.pointerEvents,ae=G===void 0?"auto":G,We=cn.x,tt=cn.y,gt=(0,T.L1)(ae,oi,mi),bt=(0,U.Z)(gt,2),Bn=bt[0],Ge=bt[1],$e=(k+S)/2,Ne=(We-zt)*(We-zt),Ye=(tt-sn)*(tt-sn);return Bn&&Ge||jt?At(Ne,Ye,ur+$e,lr+$e)<=1:Bn?At(Ne,Ye,ur,lr)<=1:Ge?At(Ne,Ye,ur-$e,lr-$e)>=1&&At(Ne,Ye,ur+$e,lr+$e)<=1:!1}function fn(Nn,cn,jt,ct,pt,zt){return pt>=Nn&&pt<=Nn+jt&&zt>=cn&&zt<=cn+ct}function ut(Nn,cn,jt,ct,pt,zt,Mn){var sn=pt/2;return fn(Nn-sn,cn-sn,jt,pt,zt,Mn)||fn(Nn+jt-sn,cn-sn,pt,ct,zt,Mn)||fn(Nn+sn,cn+ct-sn,jt,pt,zt,Mn)||fn(Nn-sn,cn+sn,pt,ct,zt,Mn)}function Bt(Nn,cn,jt,ct,pt,zt,Mn,sn){var ur=(Math.atan2(sn-cn,Mn-Nn)+Math.PI*2)%(Math.PI*2),lr={x:Nn+jt*Math.cos(ur),y:cn+jt*Math.sin(ur)};return(0,_t.TE)(lr.x,lr.y,Mn,sn)<=zt/2}function un(Nn,cn,jt,ct,pt,zt,Mn){var sn=Math.min(Nn,jt),ur=Math.max(Nn,jt),lr=Math.min(cn,ct),oi=Math.max(cn,ct),mi=pt/2;return zt>=sn-mi&&zt<=ur+mi&&Mn>=lr-mi&&Mn<=oi+mi?(0,_t._x)(Nn,cn,jt,ct,zt,Mn)<=pt/2:!1}function Z(Nn,cn,jt,ct,pt){var zt=Nn.length;if(zt<2)return!1;for(var Mn=0;Mn0!=Zt(sn[1]-jt)>0&&Zt(cn-(jt-Mn[1])*(Mn[0]-sn[0])/(Mn[1]-sn[1])-Mn[0])<0&&(ct=!ct)}return ct}function In(Nn,cn,jt){for(var ct=!1,pt=0;pt=pt.min[0]&&cn.y>=pt.min[1]&&cn.x<=pt.max[0]&&cn.y<=pt.max[1]}var $t=function(Nn){function cn(){var jt;(0,K.Z)(this,cn);for(var ct=arguments.length,pt=new Array(ct),zt=0;ztsn?Mn:sn,lr=Mn>sn?1:Mn/sn,oi=Mn>sn?sn/Mn:1;Nn.save(),Nn.scale(lr,oi),Nn.arc(ct,zt,ur,0,Math.PI*2)}}function nr(Nn,cn){var jt=cn.x1,ct=cn.y1,pt=cn.x2,zt=cn.y2,Mn=cn.markerStart,sn=cn.markerEnd,ur=cn.markerStartOffset,lr=cn.markerEndOffset,oi=0,mi=0,Le=0,k=0,W=0,S,G;Mn&&(0,T.RV)(Mn)&&ur&&(S=pt-jt,G=zt-ct,W=Math.atan2(G,S),oi=Math.cos(W)*(ur||0),mi=Math.sin(W)*(ur||0)),sn&&(0,T.RV)(sn)&&lr&&(S=jt-pt,G=ct-zt,W=Math.atan2(G,S),Le=Math.cos(W)*(lr||0),k=Math.sin(W)*(lr||0)),Nn.moveTo(jt+oi,ct+mi),Nn.lineTo(pt+Le,zt+k)}function Lr(Nn,cn){var jt=cn.markerStart,ct=cn.markerEnd,pt=cn.markerStartOffset,zt=cn.markerEndOffset,Mn=cn.d,sn=Mn.absolutePath,ur=Mn.segments,lr=0,oi=0,mi=0,Le=0,k=0,W,S;if(jt&&(0,T.RV)(jt)&&pt){var G=jt.parentNode.getStartTangent(),ae=(0,U.Z)(G,2),We=ae[0],tt=ae[1];W=We[0]-tt[0],S=We[1]-tt[1],k=Math.atan2(S,W),lr=Math.cos(k)*(pt||0),oi=Math.sin(k)*(pt||0)}if(ct&&(0,T.RV)(ct)&&zt){var gt=ct.parentNode.getEndTangent(),bt=(0,U.Z)(gt,2),Bn=bt[0],Ge=bt[1];W=Bn[0]-Ge[0],S=Bn[1]-Ge[1],k=Math.atan2(S,W),mi=Math.cos(k)*(zt||0),Le=Math.sin(k)*(zt||0)}for(var $e=0;$exs?zr:xs,Qs=zr>xs?1:zr/xs,Na=zr>xs?xs/zr:1;Nn.translate(ir,ni),Nn.rotate(Oi),Nn.scale(Qs,Na),Nn.arc(0,0,Bi,ms,ls,!!(1-Ds)),Nn.scale(1/Qs,1/Na),Nn.rotate(-Oi),Nn.translate(-ir,-ni)}xt&&Nn.lineTo(Ne[6]+mi,Ne[7]+Le);break}case"Z":Nn.closePath();break}}}function si(Nn,cn){var jt=cn.markerStart,ct=cn.markerEnd,pt=cn.markerStartOffset,zt=cn.markerEndOffset,Mn=cn.points.points,sn=Mn.length,ur=Mn[0][0],lr=Mn[0][1],oi=Mn[sn-1][0],mi=Mn[sn-1][1],Le=0,k=0,W=0,S=0,G=0,ae,We;jt&&(0,T.RV)(jt)&&pt&&(ae=Mn[1][0]-Mn[0][0],We=Mn[1][1]-Mn[0][1],G=Math.atan2(We,ae),Le=Math.cos(G)*(pt||0),k=Math.sin(G)*(pt||0)),ct&&(0,T.RV)(ct)&&zt&&(ae=Mn[sn-1][0]-Mn[0][0],We=Mn[sn-1][1]-Mn[0][1],G=Math.atan2(We,ae),W=Math.cos(G)*(zt||0),S=Math.sin(G)*(zt||0)),Nn.moveTo(ur+(Le||W),lr+(k||S));for(var tt=1;tt0?1:-1,k=ur>0?1:-1,W=Le+k===0,S=Mn.map(function(bt){return(0,_e.Z)(bt,0,Math.min(Math.abs(lr)/2,Math.abs(oi)/2))}),G=(0,U.Z)(S,4),ae=G[0],We=G[1],tt=G[2],gt=G[3];Nn.moveTo(Le*ae+ct,zt),Nn.lineTo(lr-Le*We+ct,zt),We!==0&&Nn.arc(lr-Le*We+ct,k*We+zt,We,-k*Math.PI/2,Le>0?0:Math.PI,W),Nn.lineTo(lr+ct,oi-k*tt+zt),tt!==0&&Nn.arc(lr-Le*tt+ct,oi-k*tt+zt,tt,Le>0?0:Math.PI,k>0?Math.PI/2:1.5*Math.PI,W),Nn.lineTo(Le*gt+ct,oi+zt),gt!==0&&Nn.arc(Le*gt+ct,oi-k*gt+zt,gt,k>0?Math.PI/2:-Math.PI/2,Le>0?Math.PI:0,W),Nn.lineTo(ct,k*ae+zt),ae!==0&&Nn.arc(Le*ae+ct,k*ae+zt,ae,Le>0?Math.PI:0,k>0?Math.PI*1.5:Math.PI/2,W)}}var Ri=function(Nn){function cn(){var jt;(0,K.Z)(this,cn);for(var ct=arguments.length,pt=new Array(ct),zt=0;zt0&&sn[0]!==void 0?sn[0]:{},zt=pt.type,Mn=pt.encoderOptions,ur.abrupt("return",this.context.canvas.toDataURL(zt,Mn));case 1:case"end":return ur.stop()}},ct,this)}));function jt(){return cn.apply(this,arguments)}return jt}()}])}(),gs=function(Nn){function cn(){var jt;(0,K.Z)(this,cn);for(var ct=arguments.length,pt=new Array(ct),zt=0;zt=lt[d]&&(d==="m"&&A.length>2?(x.segments.push([E].concat(A.splice(0,2))),d="l",E=E==="m"?"l":"L"):x.segments.push([E].concat(A.splice(0,lt[d]))),!!lt[d]););}function rr(x){var E=x.index,d=x.pathValue,A=d.charCodeAt(E);if(A===48){x.param=0,x.index+=1;return}if(A===49){x.param=1,x.index+=1;return}x.err='[path-util]: invalid Arc flag "'.concat(d[E],'", expecting 0 or 1 at index ').concat(E)}function kn(x){return x>=48&&x<=57||x===43||x===45||x===46}function Kn(x){return x>=48&&x<=57}function _r(x){var E=x.max,d=x.pathValue,A=x.index,w=A,D=!1,z=!1,oe=!1,ye=!1,ke;if(w>=E){x.err="[path-util]: Invalid path value at index ".concat(w,', "pathValue" is missing param');return}if(ke=d.charCodeAt(w),(ke===43||ke===45)&&(w+=1,ke=d.charCodeAt(w)),!Kn(ke)&&ke!==46){x.err="[path-util]: Invalid path value at index ".concat(w,', "').concat(d[w],'" is not a number');return}if(ke!==46){if(D=ke===48,w+=1,ke=d.charCodeAt(w),D&&w=5760&&E.includes(x)}function Cr(x){for(var E=x.pathValue,d=x.max;x.index0;z-=1){if(Rt(w)&&(z===3||z===4)?rr(x):_r(x),x.err.length)return;x.data.push(x.param),Cr(x),x.index=x.max||!kn(d.charCodeAt(x.index)))break}jn(x)}var Yr=function(){function x(E){this.pathValue=E,this.segments=[],this.max=E.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}return x}();function rn(x){if(Vt(x))return[].concat(x);var E=new Yr(x);for(Cr(E);E.index=D)z={x:d,y:A};else{var oe=Mt([x,E],[d,A],w/D),ye=oe[0],ke=oe[1];z={x:ye,y:ke}}return{length:D,point:z,min:{x:Math.min(x,d),y:Math.min(E,A)},max:{x:Math.max(x,d),y:Math.max(E,A)}}}function pe(x,E){var d=x.x,A=x.y,w=E.x,D=E.y,z=d*w+A*D,oe=Math.sqrt((Math.pow(d,2)+Math.pow(A,2))*(Math.pow(w,2)+Math.pow(D,2))),ye=d*D-A*w<0?-1:1,ke=ye*Math.acos(z/oe);return ke}function De(x,E,d,A,w,D,z,oe,ye,ke){var ot=Math.abs,Et=Math.sin,Xt=Math.cos,Rn=Math.sqrt,wn=Math.PI,Xn=ot(d),dr=ot(A),gr=(w%360+360)%360,sr=gr*(wn/180);if(x===oe&&E===ye)return{x,y:E};if(Xn===0||dr===0)return ge(x,E,oe,ye,ke).point;var Dr=(x-oe)/2,gi=(E-ye)/2,Ts={x:Xt(sr)*Dr+Et(sr)*gi,y:-Et(sr)*Dr+Xt(sr)*gi},Rs=Math.pow(Ts.x,2)/Math.pow(Xn,2)+Math.pow(Ts.y,2)/Math.pow(dr,2);Rs>1&&(Xn*=Rn(Rs),dr*=Rn(Rs));var Li=Math.pow(Xn,2)*Math.pow(dr,2)-Math.pow(Xn,2)*Math.pow(Ts.y,2)-Math.pow(dr,2)*Math.pow(Ts.x,2),Zi=Math.pow(Xn,2)*Math.pow(Ts.y,2)+Math.pow(dr,2)*Math.pow(Ts.x,2),ma=Li/Zi;ma=ma<0?0:ma;var $s=(D!==z?1:-1)*Rn(ma),va={x:$s*(Xn*Ts.y/dr),y:$s*(-(dr*Ts.x)/Xn)},ba={x:Xt(sr)*va.x-Et(sr)*va.y+(x+oe)/2,y:Et(sr)*va.x+Xt(sr)*va.y+(E+ye)/2},ho={x:(Ts.x-va.x)/Xn,y:(Ts.y-va.y)/dr},Ul=pe({x:1,y:0},ho),Tc={x:(-Ts.x-va.x)/Xn,y:(-Ts.y-va.y)/dr},Fc=pe(ho,Tc);!z&&Fc>0?Fc-=2*wn:z&&Fc<0&&(Fc+=2*wn),Fc%=2*wn;var Ga=Ul+Fc*ke,O=Xn*Xt(Ga),N=dr*Et(Ga),X={x:Xt(sr)*O-Et(sr)*N+ba.x,y:Et(sr)*O+Xt(sr)*N+ba.y};return X}function Ht(x,E,d,A,w,D,z,oe,ye,ke,ot){var Et,Xt=ot.bbox,Rn=Xt===void 0?!0:Xt,wn=ot.length,Xn=wn===void 0?!0:wn,dr=ot.sampleSize,gr=dr===void 0?30:dr,sr=typeof ke=="number",Dr=x,gi=E,Ts=0,Rs=[Dr,gi,Ts],Li=[Dr,gi],Zi=0,ma={x:0,y:0},$s=[{x:Dr,y:gi}];sr&&ke<=0&&(ma={x:Dr,y:gi});for(var va=0;va<=gr;va+=1){if(Zi=va/gr,Et=De(x,E,d,A,w,D,z,oe,ye,Zi),Dr=Et.x,gi=Et.y,Rn&&$s.push({x:Dr,y:gi}),Xn&&(Ts+=(0,Ce.y)(Li,[Dr,gi])),Li=[Dr,gi],sr&&Ts>=ke&&ke>Rs[2]){var ba=(Ts-ke)/(Ts-Rs[2]);ma={x:Li[0]*(1-ba)+Rs[0]*ba,y:Li[1]*(1-ba)+Rs[1]*ba}}Rs=[Dr,gi,Ts]}return sr&&ke>=Ts&&(ma={x:oe,y:ye}),{length:Ts,point:ma,min:{x:Math.min.apply(null,$s.map(function(ho){return ho.x})),y:Math.min.apply(null,$s.map(function(ho){return ho.y}))},max:{x:Math.max.apply(null,$s.map(function(ho){return ho.x})),y:Math.max.apply(null,$s.map(function(ho){return ho.y}))}}}function Jt(x,E,d,A,w,D,z,oe,ye){var ke=1-ye;return{x:Math.pow(ke,3)*x+3*Math.pow(ke,2)*ye*d+3*ke*Math.pow(ye,2)*w+Math.pow(ye,3)*z,y:Math.pow(ke,3)*E+3*Math.pow(ke,2)*ye*A+3*ke*Math.pow(ye,2)*D+Math.pow(ye,3)*oe}}function At(x,E,d,A,w,D,z,oe,ye,ke){var ot,Et=ke.bbox,Xt=Et===void 0?!0:Et,Rn=ke.length,wn=Rn===void 0?!0:Rn,Xn=ke.sampleSize,dr=Xn===void 0?10:Xn,gr=typeof ye=="number",sr=x,Dr=E,gi=0,Ts=[sr,Dr,gi],Rs=[sr,Dr],Li=0,Zi={x:0,y:0},ma=[{x:sr,y:Dr}];gr&&ye<=0&&(Zi={x:sr,y:Dr});for(var $s=0;$s<=dr;$s+=1){if(Li=$s/dr,ot=Jt(x,E,d,A,w,D,z,oe,Li),sr=ot.x,Dr=ot.y,Xt&&ma.push({x:sr,y:Dr}),wn&&(gi+=(0,Ce.y)(Rs,[sr,Dr])),Rs=[sr,Dr],gr&&gi>=ye&&ye>Ts[2]){var va=(gi-ye)/(gi-Ts[2]);Zi={x:Rs[0]*(1-va)+Ts[0]*va,y:Rs[1]*(1-va)+Ts[1]*va}}Ts=[sr,Dr,gi]}return gr&&ye>=gi&&(Zi={x:z,y:oe}),{length:gi,point:Zi,min:{x:Math.min.apply(null,ma.map(function(ba){return ba.x})),y:Math.min.apply(null,ma.map(function(ba){return ba.y}))},max:{x:Math.max.apply(null,ma.map(function(ba){return ba.x})),y:Math.max.apply(null,ma.map(function(ba){return ba.y}))}}}function dn(x,E,d,A,w,D,z){var oe=1-z;return{x:Math.pow(oe,2)*x+2*oe*z*d+Math.pow(z,2)*w,y:Math.pow(oe,2)*E+2*oe*z*A+Math.pow(z,2)*D}}function fn(x,E,d,A,w,D,z,oe){var ye,ke=oe.bbox,ot=ke===void 0?!0:ke,Et=oe.length,Xt=Et===void 0?!0:Et,Rn=oe.sampleSize,wn=Rn===void 0?10:Rn,Xn=typeof z=="number",dr=x,gr=E,sr=0,Dr=[dr,gr,sr],gi=[dr,gr],Ts=0,Rs={x:0,y:0},Li=[{x:dr,y:gr}];Xn&&z<=0&&(Rs={x:dr,y:gr});for(var Zi=0;Zi<=wn;Zi+=1){if(Ts=Zi/wn,ye=dn(x,E,d,A,w,D,Ts),dr=ye.x,gr=ye.y,ot&&Li.push({x:dr,y:gr}),Xt&&(sr+=(0,Ce.y)(gi,[dr,gr])),gi=[dr,gr],Xn&&sr>=z&&z>Dr[2]){var ma=(sr-z)/(sr-Dr[2]);Rs={x:gi[0]*(1-ma)+Dr[0]*ma,y:gi[1]*(1-ma)+Dr[1]*ma}}Dr=[dr,gr,sr]}return Xn&&z>=sr&&(Rs={x:w,y:D}),{length:sr,point:Rs,min:{x:Math.min.apply(null,Li.map(function($s){return $s.x})),y:Math.min.apply(null,Li.map(function($s){return $s.y}))},max:{x:Math.max.apply(null,Li.map(function($s){return $s.x})),y:Math.max.apply(null,Li.map(function($s){return $s.y}))}}}function ut(x,E,d){for(var A,w,D,z,oe,ye,ke=Tt(x),ot=typeof E=="number",Et,Xt=[],Rn,wn=0,Xn=0,dr=0,gr=0,sr,Dr=[],gi=[],Ts=0,Rs={x:0,y:0},Li=Rs,Zi=Rs,ma=Rs,$s=0,va=0,ba=ke.length;va=E&&(ma=Zi),gi.push(Li),Dr.push(Rs),$s+=Ts,ye=Rn!=="Z"?sr.slice(-2):[dr,gr],wn=ye[0],Xn=ye[1];return ot&&E>=$s&&(ma={x:wn,y:Xn}),{length:$s,point:ma,min:{x:Math.min.apply(null,Dr.map(function(ho){return ho.x})),y:Math.min.apply(null,Dr.map(function(ho){return ho.y}))},max:{x:Math.max.apply(null,gi.map(function(ho){return ho.x})),y:Math.max.apply(null,gi.map(function(ho){return ho.y}))}}}function Bt(x,E){return ut(x,void 0,(0,_t.pi)((0,_t.pi)({},E),{bbox:!1,length:!0})).length}var un=_(2078),Z=_(82639),Te=_(5131),Zt=function(x,E){return(x%E+E)%E},Gt=Zt;function On(x,E,d){if(x[d].length>7){x[d].shift();for(var A=x[d],w=d;A.length;)E[d]="A",x.splice(w+=1,0,["C"].concat(A.splice(0,6)));x.splice(d,1)}}function In(x){return Fn(x)&&x.every(function(E){var d=E[0];return"MC".includes(d)})}var pr=_(66045);function Je(x,E,d,A,w,D){var z=.3333333333333333,oe=2/3;return[z*x+oe*d,z*E+oe*A,z*w+oe*d,z*D+oe*A,w,D]}var we=function(x,E,d,A){var w=.5,D=Mt([x,E],[d,A],w);return(0,_t.ev)((0,_t.ev)([],D,!0),[d,A,d,A],!1)};function at(x,E){var d=x[0],A=x.slice(1).map(Number),w=A[0],D=A[1],z,oe=E.x1,ye=E.y1,ke=E.x,ot=E.y;switch("TQ".includes(d)||(E.qx=null,E.qy=null),d){case"M":return E.x=w,E.y=D,x;case"A":return z=[oe,ye].concat(A),["C"].concat((0,pr.W)(z[0],z[1],z[2],z[3],z[4],z[5],z[6],z[7],z[8],z[9]));case"Q":return E.qx=w,E.qy=D,z=[oe,ye].concat(A),["C"].concat(Je(z[0],z[1],z[2],z[3],z[4],z[5]));case"L":return["C"].concat(we(oe,ye,w,D));case"Z":return oe===ke&&ye===ot?["C",oe,ye,ke,ot,ke,ot]:["C"].concat(we(oe,ye,ke,ot));default:}return x}function wt(x,E){if(E===void 0&&(E=!1),In(x)){var d=[].concat(x);return E?[d,[]]:d}for(var A=Tt(x),w=(0,_t.pi)({},Ot),D=[],z="",oe=A.length,ye,ke,ot=[],Et=0;Etit)return console.warn("Maximum recursion depth reached in equalizeSegments"),[x,E];var w=St(x),D=St(E),z=w.length,oe=D.length,ye=w.filter(function(gr){return gr.l}).length,ke=D.filter(function(gr){return gr.l}).length,ot=w.filter(function(gr){return gr.l}).reduce(function(gr,sr){var Dr=sr.l;return gr+Dr},0)/ye||0,Et=D.filter(function(gr){return gr.l}).reduce(function(gr,sr){var Dr=sr.l;return gr+Dr},0)/ke||0,Xt=d||Math.max(z,oe),Rn=[ot,Et],wn=[Xt-z,Xt-oe],Xn=0,dr=[w,D].map(function(gr,sr){return gr.l===Xt?gr.map(function(Dr){return Dr.s}):gr.map(function(Dr,gi){return Xn=gi&&wn[sr]&&Dr.l>=Rn[sr],wn[sr]-=Xn?1:0,Xn?Dr.ss:[Dr.s]}).flat()});return dr[0].length===dr[1].length?dr:Yt(dr[0],dr[1],Xt,A+1)}function $t(x,E,d,A,w,D,z,oe){return 3*((oe-E)*(d+w)-(z-x)*(A+D)+A*(x-w)-d*(E-D)+oe*(w+x/3)-z*(D+E/3))/20}function Ft(x){var E=0,d=0,A=0;return wt(x).map(function(w){var D;switch(w[0]){case"M":return E=w[1],d=w[2],0;default:var z=w.slice(1),oe=z[0],ye=z[1],ke=z[2],ot=z[3],Et=z[4],Xt=z[5];return A=$t(E,d,oe,ye,ke,ot,Et,Xt),D=w.slice(-2),E=D[0],d=D[1],A}}).reduce(function(w,D){return w+D},0)}function xn(x){return Ft(x)>=0}function cr(x){var E=x.slice(1).map(function(d,A,w){return A?w[A-1].slice(-2).concat(d.slice(1)):x[0].slice(1).concat(d.slice(1))}).map(function(d){return d.map(function(A,w){return d[d.length-w-2*(1-w%2)]})}).reverse();return[["M"].concat(E[0].slice(0,2))].concat(E.map(function(d){return["C"].concat(d.slice(2))}))}function nr(x){return x.map(function(E){return Array.isArray(E)?[].concat(E):E})}function Lr(x){var E=x.length,d=E-1;return x.map(function(A,w){return x.map(function(D,z){var oe=w+z,ye;return z===0||x[oe]&&x[oe][0]==="M"?(ye=x[oe],["M"].concat(ye.slice(-2))):(oe>=E&&(oe-=d),x[oe])})})}function si(x,E){var d=x.length-1,A=[],w=0,D=0,z=Lr(x);return z.forEach(function(oe,ye){x.slice(1).forEach(function(ke,ot){D+=(0,Ce.y)(x[(ye+ot)%d].slice(-2),E[ot%d].slice(-2))}),A[ye]=D,D=0}),w=A.indexOf(Math.min.apply(null,A)),z[w]}var Pr=_(49527),ys=_(39934),Ri=_(50264),Fi=_(71018),ui=_(93785);function gs(x,E,d){return ut(x,E,(0,_t.pi)((0,_t.pi)({},d),{bbox:!1,length:!0})).point}var Di=_(20068),Nn=_(34907),cn=_(97047),jt=_(19606),ct=_(75044),pt=_(3202),zt=_(19251),Mn=_(75931);var sn=function(x){return x.GROUP="g",x.FRAGMENT="fragment",x.CIRCLE="circle",x.ELLIPSE="ellipse",x.IMAGE="image",x.RECT="rect",x.LINE="line",x.POLYLINE="polyline",x.POLYGON="polygon",x.TEXT="text",x.PATH="path",x.HTML="html",x.MESH="mesh",x}({}),ur=function(x){return x[x.ZERO=0]="ZERO",x[x.NEGATIVE_ONE=1]="NEGATIVE_ONE",x}({}),lr=function(){function x(){(0,K.Z)(this,x),this.plugins=[]}return(0,H.Z)(x,[{key:"addRenderingPlugin",value:function(d){this.plugins.push(d),this.context.renderingPlugins.push(d)}},{key:"removeAllRenderingPlugins",value:function(){var d=this;this.plugins.forEach(function(A){var w=d.context.renderingPlugins.indexOf(A);w>=0&&d.context.renderingPlugins.splice(w,1)})}}])}(),oi=function(){function x(E){(0,K.Z)(this,x),this.clipSpaceNearZ=ur.NEGATIVE_ONE,this.plugins=[],this.config=(0,m.Z)({enableDirtyCheck:!0,enableCulling:!1,enableAutoRendering:!0,enableDirtyRectangleRendering:!0,enableDirtyRectangleRenderingDebug:!1,enableSizeAttenuation:!0,enableRenderingOptimization:!1},E)}return(0,H.Z)(x,[{key:"registerPlugin",value:function(d){var A=this.plugins.findIndex(function(w){return w===d});A===-1&&this.plugins.push(d)}},{key:"unregisterPlugin",value:function(d){var A=this.plugins.findIndex(function(w){return w===d});A>-1&&this.plugins.splice(A,1)}},{key:"getPlugins",value:function(){return this.plugins}},{key:"getPlugin",value:function(d){return this.plugins.find(function(A){return A.name===d})}},{key:"getConfig",value:function(){return this.config}},{key:"setConfig",value:function(d){Object.assign(this.config,d)}}])}(),mi=V.IH,Le=V.JG,k=V.Fp,W=V.VV,S=V.bA,G=V.lu,ae=function(){function x(){(0,K.Z)(this,x),this.center=[0,0,0],this.halfExtents=[0,0,0],this.min=[0,0,0],this.max=[0,0,0]}return(0,H.Z)(x,[{key:"update",value:function(d,A){Le(this.center,d),Le(this.halfExtents,A),G(this.min,this.center,this.halfExtents),mi(this.max,this.center,this.halfExtents)}},{key:"setMinMax",value:function(d,A){mi(this.center,A,d),S(this.center,this.center,.5),G(this.halfExtents,A,d),S(this.halfExtents,this.halfExtents,.5),Le(this.min,d),Le(this.max,A)}},{key:"getMin",value:function(){return this.min}},{key:"getMax",value:function(){return this.max}},{key:"add",value:function(d){if(!x.isEmpty(d)){if(x.isEmpty(this)){this.setMinMax(d.getMin(),d.getMax());return}var A=this.center,w=A[0],D=A[1],z=A[2],oe=this.halfExtents,ye=oe[0],ke=oe[1],ot=oe[2],Et=w-ye,Xt=w+ye,Rn=D-ke,wn=D+ke,Xn=z-ot,dr=z+ot,gr=d.center,sr=gr[0],Dr=gr[1],gi=gr[2],Ts=d.halfExtents,Rs=Ts[0],Li=Ts[1],Zi=Ts[2],ma=sr-Rs,$s=sr+Rs,va=Dr-Li,ba=Dr+Li,ho=gi-Zi,Ul=gi+Zi;maXt&&(Xt=$s),vawn&&(wn=ba),hodr&&(dr=Ul),A[0]=(Et+Xt)*.5,A[1]=(Rn+wn)*.5,A[2]=(Xn+dr)*.5,oe[0]=(Xt-Et)*.5,oe[1]=(wn-Rn)*.5,oe[2]=(dr-Xn)*.5,this.min[0]=Et,this.min[1]=Rn,this.min[2]=Xn,this.max[0]=Xt,this.max[1]=wn,this.max[2]=dr}}},{key:"setFromTransformedAABB",value:function(d,A){var w=this.center,D=this.halfExtents,z=d.center,oe=d.halfExtents,ye=A[0],ke=A[4],ot=A[8],Et=A[1],Xt=A[5],Rn=A[9],wn=A[2],Xn=A[6],dr=A[10],gr=Math.abs(ye),sr=Math.abs(ke),Dr=Math.abs(ot),gi=Math.abs(Et),Ts=Math.abs(Xt),Rs=Math.abs(Rn),Li=Math.abs(wn),Zi=Math.abs(Xn),ma=Math.abs(dr);w[0]=A[12]+ye*z[0]+ke*z[1]+ot*z[2],w[1]=A[13]+Et*z[0]+Xt*z[1]+Rn*z[2],w[2]=A[14]+wn*z[0]+Xn*z[1]+dr*z[2],D[0]=gr*oe[0]+sr*oe[1]+Dr*oe[2],D[1]=gi*oe[0]+Ts*oe[1]+Rs*oe[2],D[2]=Li*oe[0]+Zi*oe[1]+ma*oe[2],G(this.min,w,D),mi(this.max,w,D)}},{key:"intersects",value:function(d){var A=this.getMax(),w=this.getMin(),D=d.getMax(),z=d.getMin();return w[0]<=D[0]&&A[0]>=z[0]&&w[1]<=D[1]&&A[1]>=z[1]&&w[2]<=D[2]&&A[2]>=z[2]}},{key:"intersection",value:function(d){if(!this.intersects(d))return null;var A=new x,w=k([0,0,0],this.getMin(),d.getMin()),D=W([0,0,0],this.getMax(),d.getMax());return A.setMinMax(w,D),A}},{key:"getNegativeFarPoint",value:function(d){return d.pnVertexFlag===273?Le([0,0,0],this.min):d.pnVertexFlag===272?[this.min[0],this.min[1],this.max[2]]:d.pnVertexFlag===257?[this.min[0],this.max[1],this.min[2]]:d.pnVertexFlag===256?[this.min[0],this.max[1],this.max[2]]:d.pnVertexFlag===17?[this.max[0],this.min[1],this.min[2]]:d.pnVertexFlag===16?[this.max[0],this.min[1],this.max[2]]:d.pnVertexFlag===1?[this.max[0],this.max[1],this.min[2]]:[this.max[0],this.max[1],this.max[2]]}},{key:"getPositiveFarPoint",value:function(d){return d.pnVertexFlag===273?Le([0,0,0],this.max):d.pnVertexFlag===272?[this.max[0],this.max[1],this.min[2]]:d.pnVertexFlag===257?[this.max[0],this.min[1],this.max[2]]:d.pnVertexFlag===256?[this.max[0],this.min[1],this.min[2]]:d.pnVertexFlag===17?[this.min[0],this.max[1],this.max[2]]:d.pnVertexFlag===16?[this.min[0],this.max[1],this.min[2]]:d.pnVertexFlag===1?[this.min[0],this.min[1],this.max[2]]:[this.min[0],this.min[1],this.min[2]]}}],[{key:"isEmpty",value:function(d){return!d||d.halfExtents[0]===0&&d.halfExtents[1]===0&&d.halfExtents[2]===0}}])}(),We=function(){function x(E,d){(0,K.Z)(this,x),this.distance=E||0,this.normal=d||V.al(0,1,0),this.updatePNVertexFlag()}return(0,H.Z)(x,[{key:"updatePNVertexFlag",value:function(){this.pnVertexFlag=(+(this.normal[0]>=0)<<8)+(+(this.normal[1]>=0)<<4)+ +(this.normal[2]>=0)}},{key:"distanceToPoint",value:function(d){return V.AK(d,this.normal)-this.distance}},{key:"normalize",value:function(){var d=1/V.Zh(this.normal);V.bA(this.normal,this.normal,d),this.distance*=d}},{key:"intersectsLine",value:function(d,A,w){var D=this.distanceToPoint(d),z=this.distanceToPoint(A),oe=D/(D-z),ye=oe>=0&&oe<=1;return ye&&w&&V.t7(w,d,A,oe),ye}}])}(),tt=function(x){return x[x.OUTSIDE=4294967295]="OUTSIDE",x[x.INSIDE=0]="INSIDE",x[x.INDETERMINATE=2147483647]="INDETERMINATE",x}({}),gt=function(){function x(E){if((0,K.Z)(this,x),this.planes=[],E)this.planes=E;else for(var d=0;d<6;d++)this.planes.push(new We)}return(0,H.Z)(x,[{key:"extractFromVPMatrix",value:function(d){var A=(0,B.Z)(d,16),w=A[0],D=A[1],z=A[2],oe=A[3],ye=A[4],ke=A[5],ot=A[6],Et=A[7],Xt=A[8],Rn=A[9],wn=A[10],Xn=A[11],dr=A[12],gr=A[13],sr=A[14],Dr=A[15];V.t8(this.planes[0].normal,oe-w,Et-ye,Xn-Xt),this.planes[0].distance=Dr-dr,V.t8(this.planes[1].normal,oe+w,Et+ye,Xn+Xt),this.planes[1].distance=Dr+dr,V.t8(this.planes[2].normal,oe+D,Et+ke,Xn+Rn),this.planes[2].distance=Dr+gr,V.t8(this.planes[3].normal,oe-D,Et-ke,Xn-Rn),this.planes[3].distance=Dr-gr,V.t8(this.planes[4].normal,oe-z,Et-ot,Xn-wn),this.planes[4].distance=Dr-sr,V.t8(this.planes[5].normal,oe+z,Et+ot,Xn+wn),this.planes[5].distance=Dr+sr,this.planes.forEach(function(gi){gi.normalize(),gi.updatePNVertexFlag()})}}])}(),bt=function(){function x(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;(0,K.Z)(this,x),this.x=0,this.y=0,this.x=E,this.y=d}return(0,H.Z)(x,[{key:"clone",value:function(){return new x(this.x,this.y)}},{key:"copyFrom",value:function(d){this.x=d.x,this.y=d.y}}])}(),Bn=function(){function x(E,d,A,w){(0,K.Z)(this,x),this.x=E,this.y=d,this.width=A,this.height=w,this.left=E,this.right=E+A,this.top=d,this.bottom=d+w}return(0,H.Z)(x,[{key:"toJSON",value:function(){}}],[{key:"fromRect",value:function(d){return new x(d.x,d.y,d.width,d.height)}},{key:"applyTransform",value:function(d,A){var w=j.al(d.x,d.y,0,1),D=j.al(d.x+d.width,d.y,0,1),z=j.al(d.x,d.y+d.height,0,1),oe=j.al(d.x+d.width,d.y+d.height,0,1),ye=j.Ue(),ke=j.Ue(),ot=j.Ue(),Et=j.Ue();j.fF(ye,w,A),j.fF(ke,D,A),j.fF(ot,z,A),j.fF(Et,oe,A);var Xt=Math.min(ye[0],ke[0],ot[0],Et[0]),Rn=Math.min(ye[1],ke[1],ot[1],Et[1]),wn=Math.max(ye[0],ke[0],ot[0],Et[0]),Xn=Math.max(ye[1],ke[1],ot[1],Et[1]);return x.fromRect({x:Xt,y:Rn,width:wn-Xt,height:Xn-Rn})}}])}(),Ge="Method not implemented.",$e="Use document.documentElement instead.",Ne="Cannot append a destroyed element.";function Ye(x){return x===void 0?0:x>360||x<-360?x%360:x}var vt=V.Ue();function an(x){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;return Array.isArray(x)&&x.length===3?A?V.d9(x):V.JG(vt,x):(0,_e.Z)(x)?A?V.al(x,E,d):V.t8(vt,x,E,d):A?V.al(x[0],x[1]||E,x[2]||d):V.t8(vt,x[0],x[1]||E,x[2]||d)}var xt=Math.PI/180;function tn(x){return x*xt}var Un=180/Math.PI;function hr(x){return x*Un}var or=.9;function $r(x){return x%=400,x<0&&(x+=400),x*or}function xr(x){return x/360}function Rr(x){return 360*x}var pi=Math.PI/2;function Tn(x,E){var d=E[0],A=E[1],w=E[2],D=E[3],z=d*d,oe=A*A,ye=w*w,ke=D*D,ot=z+oe+ye+ke,Et=d*D-A*w;return Et>.499995*ot?(x[0]=pi,x[1]=2*Math.atan2(A,d),x[2]=0):Et<-.499995*ot?(x[0]=-pi,x[1]=2*Math.atan2(A,d),x[2]=0):(x[0]=Math.asin(2*(d*w-D*A)),x[1]=Math.atan2(2*(d*D+A*w),1-2*(ye+ke)),x[2]=Math.atan2(2*(d*A+w*D),1-2*(oe+ye))),x}function ir(x,E){var d,A,w=Y.getScaling(V.Ue(),E),D=(0,B.Z)(w,3),z=D[0],oe=D[1],ye=D[2],ke=Math.asin(-E[2]/z);return ke-pi?(d=Math.atan2(E[6]/oe,E[10]/ye),A=Math.atan2(E[1]/z,E[0]/z)):(A=0,d=-Math.atan2(E[4]/oe,E[5]/oe)):(A=0,d=Math.atan2(E[4]/oe,E[5]/oe)),x[0]=d,x[1]=ke,x[2]=A,x}function ni(x,E){return E.length===16?ir(x,E):Tn(x,E)}function zr(x,E,d,A,w){var D=Math.cos(x),z=Math.sin(x);return fe.al(A*D,w*z,0,-A*z,w*D,0,E,d,1)}function xs(x,E,d,A,w,D,z){var oe=arguments.length>7&&arguments[7]!==void 0?arguments[7]:!1,ye=2*D,ke=d-E,ot=A-w,Et=ye/ke,Xt=ye/ot,Rn=(d+E)/ke,wn=(A+w)/ot,Xn,dr,gr=z-D,sr=z*D;return oe?(Xn=-z/gr,dr=-sr/gr):(Xn=-(z+D)/gr,dr=-2*sr/gr),x[0]=Et,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=Xt,x[6]=0,x[7]=0,x[8]=Rn,x[9]=wn,x[10]=Xn,x[11]=-1,x[12]=0,x[13]=0,x[14]=dr,x[15]=0,x}function ms(x){var E=x[0],d=x[1],A=x[3],w=x[4],D=Math.sqrt(E*E+d*d),z=Math.sqrt(A*A+w*w),oe=E*w-d*A;if(oe<0&&(EBi[1][2]&&(D[0]=-D[0]),Bi[0][2]>Bi[2][0]&&(D[1]=-D[1]),Bi[1][0]>Bi[0][1]&&(D[2]=-D[2]),!0}function $n(x,E){var d=E[15];if(d===0)return!1;for(var A=1/d,w=0;w<16;w++)x[w]=E[w]*A;return!0}function Ut(x,E){x[0][0]=E[0],x[0][1]=E[1],x[0][2]=E[2],x[1][0]=E[4],x[1][1]=E[5],x[1][2]=E[6],x[2][0]=E[8],x[2][1]=E[9],x[2][2]=E[10]}function Kt(x,E,d,A,w){x[0]=E[0]*A+d[0]*w,x[1]=E[1]*A+d[1]*w,x[2]=E[2]*A+d[2]*w}var Lt=function(x){return x[x.ORBITING=0]="ORBITING",x[x.EXPLORING=1]="EXPLORING",x[x.TRACKING=2]="TRACKING",x}({}),Sn=function(x){return x[x.DEFAULT=0]="DEFAULT",x[x.ROTATIONAL=1]="ROTATIONAL",x[x.TRANSLATIONAL=2]="TRANSLATIONAL",x[x.CINEMATIC=3]="CINEMATIC",x}({}),Hn=function(x){return x[x.ORTHOGRAPHIC=0]="ORTHOGRAPHIC",x[x.PERSPECTIVE=1]="PERSPECTIVE",x}({}),ar={UPDATED:"updated"},Hr=2e-4,fi=function(){function x(){(0,K.Z)(this,x),this.clipSpaceNearZ=ur.NEGATIVE_ONE,this.eventEmitter=new Q,this.matrix=Y.create(),this.right=V.al(1,0,0),this.up=V.al(0,1,0),this.forward=V.al(0,0,1),this.position=V.al(0,0,1),this.focalPoint=V.al(0,0,0),this.distanceVector=V.al(0,0,-1),this.distance=1,this.azimuth=0,this.elevation=0,this.roll=0,this.relAzimuth=0,this.relElevation=0,this.relRoll=0,this.dollyingStep=0,this.maxDistance=1/0,this.minDistance=-1/0,this.zoom=1,this.rotateWorld=!1,this.fov=30,this.near=.1,this.far=1e3,this.aspect=1,this.projectionMatrix=Y.create(),this.projectionMatrixInverse=Y.create(),this.jitteredProjectionMatrix=void 0,this.enableUpdate=!0,this.type=Lt.EXPLORING,this.trackingMode=Sn.DEFAULT,this.projectionMode=Hn.PERSPECTIVE,this.frustum=new gt,this.orthoMatrix=Y.create()}return(0,H.Z)(x,[{key:"isOrtho",value:function(){return this.projectionMode===Hn.ORTHOGRAPHIC}},{key:"getProjectionMode",value:function(){return this.projectionMode}},{key:"getPerspective",value:function(){return this.jitteredProjectionMatrix||this.projectionMatrix}},{key:"getPerspectiveInverse",value:function(){return this.projectionMatrixInverse}},{key:"getFrustum",value:function(){return this.frustum}},{key:"getPosition",value:function(){return this.position}},{key:"getFocalPoint",value:function(){return this.focalPoint}},{key:"getDollyingStep",value:function(){return this.dollyingStep}},{key:"getNear",value:function(){return this.near}},{key:"getFar",value:function(){return this.far}},{key:"getZoom",value:function(){return this.zoom}},{key:"getOrthoMatrix",value:function(){return this.orthoMatrix}},{key:"getView",value:function(){return this.view}},{key:"setEnableUpdate",value:function(d){this.enableUpdate=d}},{key:"setType",value:function(d,A){return this.type=d,this.type===Lt.EXPLORING?this.setWorldRotation(!0):this.setWorldRotation(!1),this._getAngles(),this.type===Lt.TRACKING&&A!==void 0&&this.setTrackingMode(A),this}},{key:"setProjectionMode",value:function(d){return this.projectionMode=d,this}},{key:"setTrackingMode",value:function(d){if(this.type!==Lt.TRACKING)throw new Error("Impossible to set a tracking mode if the camera is not of tracking type");return this.trackingMode=d,this}},{key:"setWorldRotation",value:function(d){return this.rotateWorld=d,this._getAngles(),this}},{key:"getViewTransform",value:function(){return Y.invert(Y.create(),this.matrix)}},{key:"getWorldTransform",value:function(){return this.matrix}},{key:"jitterProjectionMatrix",value:function(d,A){var w=Y.fromTranslation(Y.create(),[d,A,0]);this.jitteredProjectionMatrix=Y.multiply(Y.create(),w,this.projectionMatrix)}},{key:"clearJitterProjectionMatrix",value:function(){this.jitteredProjectionMatrix=void 0}},{key:"setMatrix",value:function(d){return this.matrix=d,this._update(),this}},{key:"setProjectionMatrix",value:function(d){this.projectionMatrix=d}},{key:"setFov",value:function(d){return this.setPerspective(this.near,this.far,d,this.aspect),this}},{key:"setAspect",value:function(d){return this.setPerspective(this.near,this.far,this.fov,d),this}},{key:"setNear",value:function(d){return this.projectionMode===Hn.PERSPECTIVE?this.setPerspective(d,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,d,this.far),this}},{key:"setFar",value:function(d){return this.projectionMode===Hn.PERSPECTIVE?this.setPerspective(this.near,d,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,d),this}},{key:"setViewOffset",value:function(d,A,w,D,z,oe){return this.aspect=d/A,this.view===void 0&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=d,this.view.fullHeight=A,this.view.offsetX=w,this.view.offsetY=D,this.view.width=z,this.view.height=oe,this.projectionMode===Hn.PERSPECTIVE?this.setPerspective(this.near,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far),this}},{key:"clearViewOffset",value:function(){return this.view!==void 0&&(this.view.enabled=!1),this.projectionMode===Hn.PERSPECTIVE?this.setPerspective(this.near,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far),this}},{key:"setZoom",value:function(d){return this.zoom=d,this.projectionMode===Hn.ORTHOGRAPHIC?this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far):this.projectionMode===Hn.PERSPECTIVE&&this.setPerspective(this.near,this.far,this.fov,this.aspect),this}},{key:"setZoomByViewportPoint",value:function(d,A){var w=this.canvas.viewport2Canvas({x:A[0],y:A[1]}),D=w.x,z=w.y,oe=this.roll;this.rotate(0,0,-oe),this.setPosition(D,z),this.setFocalPoint(D,z),this.setZoom(d),this.rotate(0,0,oe);var ye=this.canvas.viewport2Canvas({x:A[0],y:A[1]}),ke=ye.x,ot=ye.y,Et=V.al(ke-D,ot-z,0),Xt=V.AK(Et,this.right)/V.kE(this.right),Rn=V.AK(Et,this.up)/V.kE(this.up),wn=this.getPosition(),Xn=(0,B.Z)(wn,2),dr=Xn[0],gr=Xn[1],sr=this.getFocalPoint(),Dr=(0,B.Z)(sr,2),gi=Dr[0],Ts=Dr[1];return this.setPosition(dr-Xt,gr-Rn),this.setFocalPoint(gi-Xt,Ts-Rn),this}},{key:"setPerspective",value:function(d,A,w,D){var z;this.projectionMode=Hn.PERSPECTIVE,this.fov=w,this.near=d,this.far=A,this.aspect=D;var oe=this.near*Math.tan(tn(.5*this.fov))/this.zoom,ye=2*oe,ke=this.aspect*ye,ot=-.5*ke;if((z=this.view)!==null&&z!==void 0&&z.enabled){var Et=this.view.fullWidth,Xt=this.view.fullHeight;ot+=this.view.offsetX*ke/Et,oe-=this.view.offsetY*ye/Xt,ke*=this.view.width/Et,ye*=this.view.height/Xt}return xs(this.projectionMatrix,ot,ot+ke,oe-ye,oe,d,this.far,this.clipSpaceNearZ===ur.ZERO),Y.invert(this.projectionMatrixInverse,this.projectionMatrix),this.triggerUpdate(),this}},{key:"setOrthographic",value:function(d,A,w,D,z,oe){var ye;this.projectionMode=Hn.ORTHOGRAPHIC,this.rright=A,this.left=d,this.top=w,this.bottom=D,this.near=z,this.far=oe;var ke=(this.rright-this.left)/(2*this.zoom),ot=(this.top-this.bottom)/(2*this.zoom),Et=(this.rright+this.left)/2,Xt=(this.top+this.bottom)/2,Rn=Et-ke,wn=Et+ke,Xn=Xt+ot,dr=Xt-ot;if((ye=this.view)!==null&&ye!==void 0&&ye.enabled){var gr=(this.rright-this.left)/this.view.fullWidth/this.zoom,sr=(this.top-this.bottom)/this.view.fullHeight/this.zoom;Rn+=gr*this.view.offsetX,wn=Rn+gr*this.view.width,Xn-=sr*this.view.offsetY,dr=Xn-sr*this.view.height}return this.clipSpaceNearZ===ur.NEGATIVE_ONE?Y.ortho(this.projectionMatrix,Rn,wn,Xn,dr,z,oe):Y.orthoZO(this.projectionMatrix,Rn,wn,Xn,dr,z,oe),Y.invert(this.projectionMatrixInverse,this.projectionMatrix),this._getOrthoMatrix(),this.triggerUpdate(),this}},{key:"setPosition",value:function(d){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.position[1],w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.position[2],D=an(d,A,w);return this._setPosition(D),this.setFocalPoint(this.focalPoint),this.triggerUpdate(),this}},{key:"setFocalPoint",value:function(d){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.focalPoint[1],w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.focalPoint[2],D=V.al(0,1,0);if(this.focalPoint=an(d,A,w),this.trackingMode===Sn.CINEMATIC){var z=V.$X(V.Ue(),this.focalPoint,this.position);d=z[0],A=z[1],w=z[2];var oe=V.kE(z),ye=hr(Math.asin(A/oe)),ke=90+hr(Math.atan2(w,d)),ot=Y.create();Y.rotateY(ot,ot,tn(ke)),Y.rotateX(ot,ot,tn(ye)),D=V.fF(V.Ue(),[0,1,0],ot)}return Y.invert(this.matrix,Y.lookAt(Y.create(),this.position,this.focalPoint,D)),this._getAxes(),this._getDistance(),this._getAngles(),this.triggerUpdate(),this}},{key:"getDistance",value:function(){return this.distance}},{key:"getDistanceVector",value:function(){return this.distanceVector}},{key:"setDistance",value:function(d){if(this.distance===d||d<0)return this;this.distance=d,this.distance>8&15|E>>4&240,E>>4&15|E&240,(E&15)<<4|E&15,1):d===8?$c(E>>24&255,E>>16&255,E>>8&255,(E&255)/255):d===4?$c(E>>12&15|E>>8&240,E>>8&15|E>>4&240,E>>4&15|E&240,((E&15)<<4|E&15)/255):null):(E=Xu.exec(x))?new Po(E[1],E[2],E[3],1):(E=nl.exec(x))?new Po(E[1]*255/100,E[2]*255/100,E[3]*255/100,1):(E=Ql.exec(x))?$c(E[1],E[2],E[3],E[4]):(E=Cl.exec(x))?$c(E[1]*255/100,E[2]*255/100,E[3]*255/100,E[4]):(E=Kc.exec(x))?Of(E[1],E[2]/100,E[3]/100,1):(E=Xs.exec(x))?Of(E[1],E[2]/100,E[3]/100,E[4]):Uf.hasOwnProperty(x)?pu(Uf[x]):x==="transparent"?new Po(NaN,NaN,NaN,0):null}function pu(x){return new Po(x>>16&255,x>>8&255,x&255,1)}function $c(x,E,d,A){return A<=0&&(x=E=d=NaN),new Po(x,E,d,A)}function lf(x){return x instanceof Gl||(x=ju(x)),x?(x=x.rgb(),new Po(x.r,x.g,x.b,x.opacity)):new Po}function Nh(x,E,d,A){return arguments.length===1?lf(x):new Po(x,E,d,A==null?1:A)}function Po(x,E,d,A){this.r=+x,this.g=+E,this.b=+d,this.opacity=+A}Do(Po,Nh,Hl(Gl,{brighter(x){return x=x==null?Tl:Math.pow(Tl,x),new Po(this.r*x,this.g*x,this.b*x,this.opacity)},darker(x){return x=x==null?zl:Math.pow(zl,x),new Po(this.r*x,this.g*x,this.b*x,this.opacity)},rgb(){return this},clamp(){return new Po(yl(this.r),yl(this.g),yl(this.b),kc(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:cf,formatHex:cf,formatHex8:Zh,formatRgb:Lh,toString:Lh}));function cf(){return`#${xl(this.r)}${xl(this.g)}${xl(this.b)}`}function Zh(){return`#${xl(this.r)}${xl(this.g)}${xl(this.b)}${xl((isNaN(this.opacity)?1:this.opacity)*255)}`}function Lh(){const x=kc(this.opacity);return`${x===1?"rgb(":"rgba("}${yl(this.r)}, ${yl(this.g)}, ${yl(this.b)}${x===1?")":`, ${x})`}`}function kc(x){return isNaN(x)?1:Math.max(0,Math.min(1,x))}function yl(x){return Math.max(0,Math.min(255,Math.round(x)||0))}function xl(x){return x=yl(x),(x<16?"0":"")+x.toString(16)}function Of(x,E,d,A){return A<=0?x=E=d=NaN:d<=0||d>=1?x=E=NaN:E<=0&&(x=NaN),new rl(x,E,d,A)}function nu(x){if(x instanceof rl)return new rl(x.h,x.s,x.l,x.opacity);if(x instanceof Gl||(x=ju(x)),!x)return new rl;if(x instanceof rl)return x;x=x.rgb();var E=x.r/255,d=x.g/255,A=x.b/255,w=Math.min(E,d,A),D=Math.max(E,d,A),z=NaN,oe=D-w,ye=(D+w)/2;return oe?(E===D?z=(d-A)/oe+(d0&&ye<1?0:z,new rl(z,oe,ye,x.opacity)}function Rc(x,E,d,A){return arguments.length===1?nu(x):new rl(x,E,d,A==null?1:A)}function rl(x,E,d,A){this.h=+x,this.s=+E,this.l=+d,this.opacity=+A}Do(rl,Rc,Hl(Gl,{brighter(x){return x=x==null?Tl:Math.pow(Tl,x),new rl(this.h,this.s,this.l*x,this.opacity)},darker(x){return x=x==null?zl:Math.pow(zl,x),new rl(this.h,this.s,this.l*x,this.opacity)},rgb(){var x=this.h%360+(this.h<0)*360,E=isNaN(x)||isNaN(this.s)?0:this.s,d=this.l,A=d+(d<.5?d:1-d)*E,w=2*d-A;return new Po(Kh(x>=240?x-240:x+120,w,A),Kh(x,w,A),Kh(x<120?x+240:x-120,w,A),this.opacity)},clamp(){return new rl(gh(this.h),Fh(this.s),Fh(this.l),kc(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const x=kc(this.opacity);return`${x===1?"hsl(":"hsla("}${gh(this.h)}, ${Fh(this.s)*100}%, ${Fh(this.l)*100}%${x===1?")":`, ${x})`}`}}));function gh(x){return x=(x||0)%360,x<0?x+360:x}function Fh(x){return Math.max(0,Math.min(1,x||0))}function Kh(x,E,d){return(x<60?E+(d-E)*x/60:x<180?d:x<240?E+(d-E)*(240-x)/60:E)*255}function _l(x,E){if(typeof x!="function"||E!=null&&typeof E!="function")throw new TypeError("Expected a function");var d=function(){for(var w=arguments.length,D=new Array(w),z=0;z=Eh.kUnitType&&this.getType()<=Eh.kClampType}}],[{key:"isAngle",value:function(d){return d===Ss.kDegrees||d===Ss.kRadians||d===Ss.kGradians||d===Ss.kTurns}},{key:"isLength",value:function(d){return d>=Ss.kEms&&d1&&arguments[1]!==void 0?arguments[1]:"",A="";return Number.isFinite(E)?A="NaN":E>0?A="infinity":A="-infinity",A+=d},al=function(E){return Xc(Pc(E))},ul=function(x){function E(d){var A,w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ss.kNumber;(0,K.Z)(this,E),A=(0,T.Z)(this,E);var D;return typeof w=="string"?D=jh(w):D=w,A.unit=D,A.value=d,A}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"clone",value:function(){return new E(this.value,this.unit)}},{key:"equals",value:function(A){var w=A;return this.value===w.value&&this.unit===w.unit}},{key:"getType",value:function(){return Eh.kUnitType}},{key:"convertTo",value:function(A){if(this.unit===A)return new E(this.value,this.unit);var w=al(this.unit);if(w!==al(A)||w===Ss.kUnknown)return null;var D=bl(this.unit)/bl(A);return new E(this.value*D,A)}},{key:"buildCSSText",value:function(A,w,D){var z;switch(this.unit){case Ss.kUnknown:break;case Ss.kInteger:z=Number(this.value).toFixed(0);break;case Ss.kNumber:case Ss.kPercentage:case Ss.kEms:case Ss.kRems:case Ss.kPixels:case Ss.kDegrees:case Ss.kRadians:case Ss.kGradians:case Ss.kMilliseconds:case Ss.kSeconds:case Ss.kTurns:{var oe=-999999,ye=999999,ke=this.value,ot=Fd(this.unit);if(keye){var Et=Fd(this.unit);!Number.isFinite(ke)||Number.isNaN(ke)?z=Ou(ke,Et):z=ke+(Et||"")}else z="".concat(ke).concat(ot)}}return D+=z,D}}])}(Hi),hl=new ul(0,"px");new ul(1,"px");var bc=new ul(0,"deg"),ku=function(x){function E(d,A,w){var D,z=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1,oe=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;return(0,K.Z)(this,E),D=(0,T.Z)(this,E,["rgb"]),D.r=d,D.g=A,D.b=w,D.alpha=z,D.isNone=oe,D}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"clone",value:function(){return new E(this.r,this.g,this.b,this.alpha)}},{key:"buildCSSText",value:function(A,w,D){return"".concat(D,"rgba(").concat(this.r,",").concat(this.g,",").concat(this.b,",").concat(this.alpha,")")}}])}(sl),oc=new lu("unset"),Yo=new lu("initial"),Su=new lu("inherit"),rd={"":oc,unset:oc,initial:Yo,inherit:Su},Vu=function(E){return rd[E]||(rd[E]=new lu(E)),rd[E]},js=new ku(0,0,0,0,!0),Qr=new ku(0,0,0,0),ri=_l(function(x,E,d,A){return new ku(x,E,d,A)},function(x,E,d,A){return"rgba(".concat(x,",").concat(E,",").concat(d,",").concat(A,")")}),Za=function(E){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ss.kNumber;return new ul(E,d)};new ul(50,"%");function Hu(x){var E=x.type,d=x.value;return E==="hex"?"#".concat(d):E==="literal"?d:E==="rgb"?"rgb(".concat(d.join(","),")"):"rgba(".concat(d.join(","),")")}var wc=function(){var x={linearGradient:/^(linear\-gradient)/i,repeatingLinearGradient:/^(repeating\-linear\-gradient)/i,radialGradient:/^(radial\-gradient)/i,repeatingRadialGradient:/^(repeating\-radial\-gradient)/i,conicGradient:/^(conic\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},E="";function d(Ga){throw new Error("".concat(E,": ").concat(Ga))}function A(){var Ga=w();return E.length>0&&d("Invalid input not EOF"),Ga}function w(){return Dr(D)}function D(){return z("linear-gradient",x.linearGradient,ye)||z("repeating-linear-gradient",x.repeatingLinearGradient,ye)||z("radial-gradient",x.radialGradient,Et)||z("repeating-radial-gradient",x.repeatingRadialGradient,Et)||z("conic-gradient",x.conicGradient,Et)}function z(Ga,O,N){return oe(O,function(X){var $=N();return $&&(Tc(x.comma)||d("Missing comma before color stops")),{type:Ga,orientation:$,colorStops:Dr(gi)}})}function oe(Ga,O){var N=Tc(Ga);if(N){Tc(x.startCall)||d("Missing (");var X=O(N);return Tc(x.endCall)||d("Missing )"),X}}function ye(){return ke()||ot()}function ke(){return Ul("directional",x.sideOrCorner,1)}function ot(){return Ul("angular",x.angleValue,1)}function Et(){var Ga,O=Xt(),N;return O&&(Ga=[],Ga.push(O),N=E,Tc(x.comma)&&(O=Xt(),O?Ga.push(O):E=N)),Ga}function Xt(){var Ga=Rn()||wn();if(Ga)Ga.at=dr();else{var O=Xn();if(O){Ga=O;var N=dr();N&&(Ga.at=N)}else{var X=gr();X&&(Ga={type:"default-radial",at:X})}}return Ga}function Rn(){var Ga=Ul("shape",/^(circle)/i,0);return Ga&&(Ga.style=ho()||Xn()),Ga}function wn(){var Ga=Ul("shape",/^(ellipse)/i,0);return Ga&&(Ga.style=va()||Xn()),Ga}function Xn(){return Ul("extent-keyword",x.extentKeywords,1)}function dr(){if(Ul("position",/^at/,0)){var Ga=gr();return Ga||d("Missing positioning value"),Ga}}function gr(){var Ga=sr();if(Ga.x||Ga.y)return{type:"position",value:Ga}}function sr(){return{x:va(),y:va()}}function Dr(Ga){var O=Ga(),N=[];if(O)for(N.push(O);Tc(x.comma);)O=Ga(),O?N.push(O):d("One extra comma");return N}function gi(){var Ga=Ts();return Ga||d("Expected color definition"),Ga.length=va(),Ga}function Ts(){return Li()||ma()||Zi()||Rs()}function Rs(){return Ul("literal",x.literalColor,0)}function Li(){return Ul("hex",x.hexColor,1)}function Zi(){return oe(x.rgbColor,function(){return{type:"rgb",value:Dr($s)}})}function ma(){return oe(x.rgbaColor,function(){return{type:"rgba",value:Dr($s)}})}function $s(){return Tc(x.number)[1]}function va(){return Ul("%",x.percentageValue,1)||ba()||ho()}function ba(){return Ul("position-keyword",x.positionKeywords,1)}function ho(){return Ul("px",x.pixelValue,1)||Ul("em",x.emValue,1)}function Ul(Ga,O,N){var X=Tc(O);if(X)return{type:Ga,value:X[N]}}function Tc(Ga){var O=/^[\n\r\t\s]+/.exec(E);O&&Fc(O[0].length);var N=Ga.exec(E);return N&&Fc(N[0].length),N}function Fc(Ga){E=E.substring(Ga)}return function(Ga){return E=Ga,A()}}();function Ro(x,E,d,A){var w=tn(A.value),D=0,z=0,oe=D+E/2,ye=z+d/2,ke=Math.abs(E*Math.cos(w))+Math.abs(d*Math.sin(w)),ot=x[0]+oe-Math.cos(w)*ke/2,Et=x[1]+ye-Math.sin(w)*ke/2,Xt=x[0]+oe+Math.cos(w)*ke/2,Rn=x[1]+ye+Math.sin(w)*ke/2;return{x1:ot,y1:Et,x2:Xt,y2:Rn}}function ro(x,E,d,A,w,D){var z=A.value,oe=w.value;A.unit===Ss.kPercentage&&(z=A.value/100*E),w.unit===Ss.kPercentage&&(oe=w.value/100*d);var ye=Math.max((0,Ce.y)([0,0],[z,oe]),(0,Ce.y)([0,d],[z,oe]),(0,Ce.y)([E,d],[z,oe]),(0,Ce.y)([E,0],[z,oe]));return D&&(D instanceof ul?ye=D.value:D instanceof lu&&(D.value==="closest-side"?ye=Math.min(z,E-z,oe,d-oe):D.value==="farthest-side"?ye=Math.max(z,E-z,oe,d-oe):D.value==="closest-corner"&&(ye=Math.min((0,Ce.y)([0,0],[z,oe]),(0,Ce.y)([0,d],[z,oe]),(0,Ce.y)([E,d],[z,oe]),(0,Ce.y)([E,0],[z,oe]))))),{x:z+x[0],y:oe+x[1],r:ye}}var Wl=/^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i,Uh=/^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i,Yu=/^p\s*\(\s*([axyn])\s*\)\s*(.*)/i,to=/[\d.]+:(#[^\s]+|[^\)]+\))/gi;function vd(x){var E,d=x.length;if(x[d-1].length=(E=x[d-1].length)!==null&&E!==void 0?E:{type:"%",value:"100"},d>1){var A;x[0].length=(A=x[0].length)!==null&&A!==void 0?A:{type:"%",value:"0"}}for(var w=0,D=Number(x[0].length.value),z=1;z-1||x.indexOf("radial")>-1){var E=wc(x);return E.map(function(oe){var ye=oe.type,ke=oe.orientation,ot=oe.colorStops;vd(ot);var Et=ot.map(function(Dr){return{offset:Za(Number(Dr.length.value),"%"),color:Hu(Dr)}});if(ye==="linear-gradient")return new ac(Bl.LinearGradient,{angle:ke?Vc(ke):bc,steps:Et});if(ye==="radial-gradient"&&(ke||(ke=[{type:"shape",value:"circle"}]),ke[0].type==="shape"&&ke[0].value==="circle")){var Xt=_n(ke[0].at),Rn=Xt.cx,wn=Xt.cy,Xn;if(ke[0].style){var dr=ke[0].style,gr=dr.type,sr=dr.value;gr==="extent-keyword"?Xn=Vu(sr):Xn=Za(sr,gr)}return new ac(Bl.RadialGradient,{cx:Rn,cy:wn,size:Xn,steps:Et})}})}var d=x[0];if(x[1]==="("||x[2]==="("){if(d==="l"){var A=Wl.exec(x);if(A){var w,D=((w=A[2].match(to))===null||w===void 0?void 0:w.map(function(oe){return oe.split(":")}))||[];return[new ac(Bl.LinearGradient,{angle:Za(parseFloat(A[1]),"deg"),steps:D.map(function(oe){var ye=(0,B.Z)(oe,2),ke=ye[0],ot=ye[1];return{offset:Za(Number(ke)*100,"%"),color:ot}})})]}}else if(d==="r"){var z=id(x);if(z)if((0,Fe.Z)(z))x=z;else return[new ac(Bl.RadialGradient,z)]}else if(d==="p")return gu(x)}});function id(x){var E=Uh.exec(x);if(E){var d,A=((d=E[4].match(to))===null||d===void 0?void 0:d.map(function(w){return w.split(":")}))||[];return{cx:Za(50,"%"),cy:Za(50,"%"),steps:A.map(function(w){var D=(0,B.Z)(w,2),z=D[0],oe=D[1];return{offset:Za(Number(z)*100,"%"),color:oe}})}}return null}function gu(x){var E=Yu.exec(x);if(E){var d=E[1],A=E[2];switch(d){case"a":d="repeat";break;case"x":d="repeat-x";break;case"y":d="repeat-y";break;case"n":d="no-repeat";break;default:d="no-repeat"}return{image:A,repetition:d}}return null}function Yh(x){return!!x.type&&!!x.value}function Mh(x){return x&&!!x.image}function Ef(x){return x&&!(0,Xe.Z)(x.r)&&!(0,Xe.Z)(x.g)&&!(0,Xe.Z)(x.b)}var Rl=_l(function(x){if(Mh(x))return(0,m.Z)({repetition:"repeat"},x);if((0,Xe.Z)(x)&&(x=""),x==="transparent")return Qr;if(x==="currentColor")x="black";else if(x==="none")return js;var E=Ud(x);if(E)return E;var d=ju(x),A=[0,0,0,0];return d!==null&&(A[0]=d.r||0,A[1]=d.g||0,A[2]=d.b||0,A[3]=d.opacity),ri.apply(void 0,A)});function mu(x,E){if(!(!Ef(x)||!Ef(E)))return[[Number(x.r),Number(x.g),Number(x.b),Number(x.alpha)],[Number(E.r),Number(E.g),Number(E.b),Number(E.alpha)],function(d){var A=d.slice();if(A[3])for(var w=0;w<3;w++)A[w]=Math.round((0,ft.Z)(A[w],0,255));return A[3]=(0,ft.Z)(A[3],0,1),"rgba(".concat(A.join(","),")")}]}function Dh(x,E){if((0,Xe.Z)(E))return Za(0,"px");if(E="".concat(E).trim().toLowerCase(),isFinite(Number(E))){if("px".search(x)>=0)return Za(Number(E),"px");if("deg".search(x)>=0)return Za(Number(E),"deg")}var d=[];E=E.replace(x,function(w){return d.push(w),"U".concat(w)});var A="U(".concat(x.source,")");return d.map(function(w){return Za(Number(E.replace(new RegExp("U".concat(w),"g"),"").replace(new RegExp(A,"g"),"*0")),w)})[0]}var hf=function(E){return Dh(new RegExp("px","g"),E)},Oh=_l(hf),kf=function(E){return Dh(new RegExp("%","g"),E)};_l(kf);var Vf=function(E){return(0,_e.Z)(E)||isFinite(Number(E))?Za(Number(E)||0,"px"):Dh(new RegExp("px|%|em|rem","g"),E)},ff=_l(Vf),cu=function(E){return Dh(new RegExp("deg|rad|grad|turn","g"),E)},Ze=_l(cu);function xe(x,E,d,A){var w=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,D="",z=x.value||0,oe=E.value||0,ye=al(x.unit),ke=x.convertTo(ye),ot=E.convertTo(ye);return ke&&ot?(z=ke.value,oe=ot.value,D=Fd(x.unit)):(ul.isLength(x.unit)||ul.isLength(E.unit))&&(z=ce(x,w,d),oe=ce(E,w,d),D="px"),[z,oe,function(Et){return A&&(Et=Math.max(Et,0)),Et+D}]}function de(x){var E=0;return x.unit===Ss.kDegrees?E=x.value:x.unit===Ss.kRadians?E=hr(Number(x.value)):x.unit===Ss.kTurns?E=Rr(Number(x.value)):x.value&&(E=x.value),E}function je(x,E){var d;return Array.isArray(x)?d=x.map(function(A){return Number(A)}):(0,Fe.Z)(x)?d=x.split(" ").map(function(A){return Number(A)}):(0,_e.Z)(x)&&(d=[x]),E===2?d.length===1?[d[0],d[0]]:[d[0],d[1]]:E===4?d.length===1?[d[0],d[0],d[0],d[0]]:d.length===2?[d[0],d[1],d[0],d[1]]:d.length===3?[d[0],d[1],d[2],d[1]]:[d[0],d[1],d[2],d[3]]:E==="even"&&d.length%2===1?[].concat((0,L.Z)(d),(0,L.Z)(d)):d}function ce(x,E,d){var A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(x.unit===Ss.kPixels)return Number(x.value);if(x.unit===Ss.kPercentage&&d){var w=d.nodeName===sn.GROUP?d.getLocalBounds():d.getGeometryBounds();return(A?w.min[E]:0)+x.value/100*w.halfExtents[E]*2}return 0}var kt=function(E){return Dh(/deg|rad|grad|turn|px|%/g,E)},Qt=["blur","brightness","drop-shadow","contrast","grayscale","sepia","saturate","hue-rotate","invert"];function vn(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(x=x.toLowerCase().trim(),x==="none")return[];for(var E=/\s*([\w-]+)\(([^)]*)\)/g,d=[],A,w=0;A=E.exec(x);){if(A.index!==w)return[];if(w=A.index+A[0].length,Qt.indexOf(A[1])>-1&&d.push({name:A[1],params:A[2].split(" ").map(function(D){return kt(D)||Rl(D)})}),E.lastIndex===x.length)return d}return[]}function Wn(x){return x.toString()}var mr=function(E){return typeof E=="number"?Za(E):/^\s*[-+]?(\d*\.)?\d+\s*$/.test(E)?Za(Number(E)):Za(0)},Tr=_l(mr);_l(function(x){return(0,Fe.Z)(x)?x.split(" ").map(Tr):x.map(Tr)});function Mr(x,E){return[x,E,Wn]}function wr(x,E){return function(d,A){return[d,A,function(w){return Wn((0,ft.Z)(w,x,E))}]}}function Gr(x,E){if(x.length===E.length)return[x,E,function(d){return d}]}function yi(x){return x.parsedStyle.d.totalLength===0&&(x.parsedStyle.d.totalLength=Bt(x.parsedStyle.d.absolutePath)),x.parsedStyle.d.totalLength}function Or(x){return x.parsedStyle.points.totalLength===0&&(x.parsedStyle.points.totalLength=(0,jt.hE)(x.parsedStyle.points.points)),x.parsedStyle.points.totalLength}function Ti(x){for(var E=0;E0&&d.push(A),{polygons:E,polylines:d}}function Bs(x,E){return x[0]===E[0]&&x[1]===E[1]}function Zs(x,E){for(var d=[],A=[],w=[],D=0;DMath.PI/2?Math.PI-ke:ke,ot=ot>Math.PI/2?Math.PI-ot:ot;var Et={xExtra:Math.cos(ye/2-ke)*(E/2*(1/Math.sin(ye/2)))-E/2||0,yExtra:Math.cos(ot-ye/2)*(E/2*(1/Math.sin(ye/2)))-E/2||0};return Et}function ss(x,E){return[E[0]+(E[0]-x[0]),E[1]+(E[1]-x[1])]}var ts=function(E,d){var A=E.x*d.x+E.y*d.y,w=Math.sqrt((Math.pow(E.x,2)+Math.pow(E.y,2))*(Math.pow(d.x,2)+Math.pow(d.y,2))),D=E.x*d.y-E.y*d.x<0?-1:1,z=D*Math.acos(A/w);return z},La=function(E,d,A,w,D,z,oe,ye){d=Math.abs(d),A=Math.abs(A),w=Gt(w,360);var ke=tn(w);if(E.x===oe.x&&E.y===oe.y)return{x:E.x,y:E.y,ellipticalArcAngle:0};if(d===0||A===0)return{x:0,y:0,ellipticalArcAngle:0};var ot=(E.x-oe.x)/2,Et=(E.y-oe.y)/2,Xt={x:Math.cos(ke)*ot+Math.sin(ke)*Et,y:-Math.sin(ke)*ot+Math.cos(ke)*Et},Rn=Math.pow(Xt.x,2)/Math.pow(d,2)+Math.pow(Xt.y,2)/Math.pow(A,2);Rn>1&&(d*=Math.sqrt(Rn),A*=Math.sqrt(Rn));var wn=Math.pow(d,2)*Math.pow(A,2)-Math.pow(d,2)*Math.pow(Xt.y,2)-Math.pow(A,2)*Math.pow(Xt.x,2),Xn=Math.pow(d,2)*Math.pow(Xt.y,2)+Math.pow(A,2)*Math.pow(Xt.x,2),dr=wn/Xn;dr=dr<0?0:dr;var gr=(D!==z?1:-1)*Math.sqrt(dr),sr={x:gr*(d*Xt.y/A),y:gr*(-(A*Xt.x)/d)},Dr={x:Math.cos(ke)*sr.x-Math.sin(ke)*sr.y+(E.x+oe.x)/2,y:Math.sin(ke)*sr.x+Math.cos(ke)*sr.y+(E.y+oe.y)/2},gi={x:(Xt.x-sr.x)/d,y:(Xt.y-sr.y)/A},Ts=ts({x:1,y:0},gi),Rs={x:(-Xt.x-sr.x)/d,y:(-Xt.y-sr.y)/A},Li=ts(gi,Rs);!z&&Li>0?Li-=2*Math.PI:z&&Li<0&&(Li+=2*Math.PI),Li%=2*Math.PI;var Zi=Ts+Li*ye,ma=d*Math.cos(Zi),$s=A*Math.sin(Zi),va={x:Math.cos(ke)*ma-Math.sin(ke)*$s+Dr.x,y:Math.sin(ke)*ma+Math.cos(ke)*$s+Dr.y,ellipticalArcStartAngle:Ts,ellipticalArcEndAngle:Ts+Li,ellipticalArcAngle:Zi,ellipticalArcCenter:Dr,resultantRx:d,resultantRy:A};return va};function ra(x){for(var E=[],d=null,A=null,w=null,D=0,z=x.length,oe=0;oe2&&arguments[2]!==void 0?arguments[2]:!0,A=x.arcParams,w=A.rx,D=w===void 0?0:w,z=A.ry,oe=z===void 0?0:z,ye=A.xRotation,ke=A.arcFlag,ot=A.sweepFlag,Et=La({x:x.prePoint[0],y:x.prePoint[1]},D,oe,ye,!!ke,!!ot,{x:x.currentPoint[0],y:x.currentPoint[1]},E),Xt=La({x:x.prePoint[0],y:x.prePoint[1]},D,oe,ye,!!ke,!!ot,{x:x.currentPoint[0],y:x.currentPoint[1]},d?E+.005:E-.005),Rn=Xt.x-Et.x,wn=Xt.y-Et.y,Xn=Math.sqrt(Rn*Rn+wn*wn);return{x:-Rn/Xn,y:-wn/Xn}}function yo(x){return Math.sqrt(x[0]*x[0]+x[1]*x[1])}function le(x,E){return yo(x)*yo(E)?(x[0]*E[0]+x[1]*E[1])/(yo(x)*yo(E)):1}function se(x,E){return(x[0]*E[1]1&&(d*=Math.sqrt(Rn),A*=Math.sqrt(Rn));var wn=d*d*(Xt*Xt)+A*A*(Et*Et),Xn=wn?Math.sqrt((d*d*(A*A)-wn)/wn):1;D===z&&(Xn*=-1),isNaN(Xn)&&(Xn=0);var dr=A?Xn*d*Xt/A:0,gr=d?Xn*-A*Et/d:0,sr=(oe+ke)/2+Math.cos(w)*dr-Math.sin(w)*gr,Dr=(ye+ot)/2+Math.sin(w)*dr+Math.cos(w)*gr,gi=[(Et-dr)/d,(Xt-gr)/A],Ts=[(-1*Et-dr)/d,(-1*Xt-gr)/A],Rs=se([1,0],gi),Li=se(gi,Ts);return le(gi,Ts)<=-1&&(Li=Math.PI),le(gi,Ts)>=1&&(Li=0),z===0&&Li>0&&(Li-=2*Math.PI),z===1&&Li<0&&(Li+=2*Math.PI),{cx:sr,cy:Dr,rx:Bs(x,[ke,ot])?0:d,ry:Bs(x,[ke,ot])?0:A,startAngle:Rs,endAngle:Rs+Li,xRotation:w,arcFlag:D,sweepFlag:z}}function te(x,E,d){return x.reduce(function(A,w){var D="";if(w[0]==="M"||w[0]==="L"){var z=vec3.fromValues(w[1],w[2],0);d&&vec3.transformMat4(z,z,d),D="".concat(w[0]).concat(z[0],",").concat(z[1])}else if(w[0]==="Z")D=w[0];else if(w[0]==="C"){var oe=vec3.fromValues(w[1],w[2],0),ye=vec3.fromValues(w[3],w[4],0),ke=vec3.fromValues(w[5],w[6],0);d&&(vec3.transformMat4(oe,oe,d),vec3.transformMat4(ye,ye,d),vec3.transformMat4(ke,ke,d)),D="".concat(w[0]).concat(oe[0],",").concat(oe[1],",").concat(ye[0],",").concat(ye[1],",").concat(ke[0],",").concat(ke[1])}else if(w[0]==="A"){var ot=vec3.fromValues(w[6],w[7],0);d&&vec3.transformMat4(ot,ot,d),D="".concat(w[0]).concat(w[1],",").concat(w[2],",").concat(w[3],",").concat(w[4],",").concat(w[5],",").concat(ot[0],",").concat(ot[1])}else if(w[0]==="Q"){var Et=vec3.fromValues(w[1],w[2],0),Xt=vec3.fromValues(w[3],w[4],0);d&&(vec3.transformMat4(Et,Et,d),vec3.transformMat4(Xt,Xt,d)),D="".concat(w[0]).concat(w[1],",").concat(w[2],",").concat(w[3],",").concat(w[4],"}")}return A+=D},"")}function Ae(x,E,d,A){return[["M",x,E],["L",d,A]]}function Pe(x,E,d,A){var w=(-1+Math.sqrt(2))/3*4,D=x*w,z=E*w,oe=d-x,ye=d+x,ke=A-E,ot=A+E;return[["M",oe,A],["C",oe,A-z,d-D,ke,d,ke],["C",d+D,ke,ye,A-z,ye,A],["C",ye,A+z,d+D,ot,d,ot],["C",d-D,ot,oe,A+z,oe,A],["Z"]]}function Qe(x,E){var d=x.map(function(A,w){return[w===0?"M":"L",A[0],A[1]]});return E&&d.push(["Z"]),d}function He(x,E,d,A,w){if(w){var D=_slicedToArray(w,4),z=D[0],oe=D[1],ye=D[2],ke=D[3],ot=x>0?1:-1,Et=E>0?1:-1,Xt=ot+Et!==0?1:0;return[["M",ot*z+d,A],["L",x-ot*oe+d,A],oe?["A",oe,oe,0,0,Xt,x+d,Et*oe+A]:null,["L",x+d,E-Et*ye+A],ye?["A",ye,ye,0,0,Xt,x+d-ot*ye,E+A]:null,["L",d+ot*ke,E+A],ke?["A",ke,ke,0,0,Xt,d,E+A-Et*ke]:null,["L",d,Et*z+A],z?["A",z,z,0,0,Xt,ot*z+d,A]:null,["Z"]].filter(function(Rn){return Rn})}return[["M",d,A],["L",d+x,A],["L",d+x,A+E],["L",d,A+E],["Z"]]}function qe(x){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:x.getLocalTransform(),d=[];switch(x.nodeName){case sn.LINE:var A=x.parsedStyle,w=A.x1,D=w===void 0?0:w,z=A.y1,oe=z===void 0?0:z,ye=A.x2,ke=ye===void 0?0:ye,ot=A.y2,Et=ot===void 0?0:ot;d=Ae(D,oe,ke,Et);break;case sn.CIRCLE:{var Xt=x.parsedStyle,Rn=Xt.r,wn=Rn===void 0?0:Rn,Xn=Xt.cx,dr=Xn===void 0?0:Xn,gr=Xt.cy,sr=gr===void 0?0:gr;d=Pe(wn,wn,dr,sr);break}case sn.ELLIPSE:{var Dr=x.parsedStyle,gi=Dr.rx,Ts=gi===void 0?0:gi,Rs=Dr.ry,Li=Rs===void 0?0:Rs,Zi=Dr.cx,ma=Zi===void 0?0:Zi,$s=Dr.cy,va=$s===void 0?0:$s;d=Pe(Ts,Li,ma,va);break}case sn.POLYLINE:case sn.POLYGON:var ba=x.parsedStyle.points;d=Qe(ba.points,x.nodeName===sn.POLYGON);break;case sn.RECT:var ho=x.parsedStyle,Ul=ho.width,Tc=Ul===void 0?0:Ul,Fc=ho.height,Ga=Fc===void 0?0:Fc,O=ho.x,N=O===void 0?0:O,X=ho.y,$=X===void 0?0:X,Se=ho.radius,rt=Se&&Se.some(function(yn){return yn!==0});d=He(Tc,Ga,N,$,rt&&Se.map(function(yn){return clamp(yn,0,Math.min(Math.abs(Tc)/2,Math.abs(Ga)/2))}));break;case sn.PATH:var Dt=x.parsedStyle.d.absolutePath;d=_toConsumableArray(Dt);break}if(d.length)return te(d,x,E)}function yt(x){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,w=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,D=x.map(function(z,oe){var ye=z[0],ke=x[oe+1],ot=oe===0&&(E!==0||d!==0),Et=(oe===x.length-1||ke&&(ke[0]==="M"||ke[0]==="Z"))&&A!==0&&w!==0,Xt=ot?[E,d]:[0,0],Rn=_slicedToArray(Xt,2),wn=Rn[0],Xn=Rn[1],dr=Et?[A,w]:[0,0],gr=_slicedToArray(dr,2),sr=gr[0],Dr=gr[1];switch(ye){case"M":return"M ".concat(z[1]+wn,",").concat(z[2]+Xn);case"L":return"L ".concat(z[1]+sr,",").concat(z[2]+Dr);case"Q":return"Q ".concat(z[1]," ").concat(z[2],",").concat(z[3]+sr," ").concat(z[4]+Dr);case"C":return"C ".concat(z[1]," ").concat(z[2],",").concat(z[3]," ").concat(z[4],",").concat(z[5]+sr," ").concat(z[6]+Dr);case"A":return"A ".concat(z[1]," ").concat(z[2]," ").concat(z[3]," ").concat(z[4]," ").concat(z[5]," ").concat(z[6]," ").concat(z[7]).concat(Et?" L ".concat(z[6]+A,",").concat(z[7]+w):"");case"Z":return"Z";default:return null}}).filter(function(z){return z!==null}).join(" ");return~D.indexOf("NaN")?"":D}var qt=function(E){if(E===""||Array.isArray(E)&&E.length===0)return{absolutePath:[],hasArc:!1,segments:[],polygons:[],polylines:[],curve:null,totalLength:0,rect:{x:0,y:0,width:0,height:0}};var d;try{d=Tt(E)}catch(Rn){d=Tt(""),console.error("[g]: Invalid SVG Path definition: ".concat(E))}Ti(d);var A=Wi(d),w=Cs(d),D=w.polygons,z=w.polylines,oe=ra(d),ye=Zs(oe,0),ke=ye.x,ot=ye.y,Et=ye.width,Xt=ye.height;return{absolutePath:d,hasArc:A,segments:oe,polygons:D,polylines:z,totalLength:0,rect:{x:Number.isFinite(ke)?ke:0,y:Number.isFinite(ot)?ot:0,width:Number.isFinite(Et)?Et:0,height:Number.isFinite(Xt)?Xt:0}}},on=_l(qt);function pn(x){return(0,Fe.Z)(x)?on(x):qt(x)}function Vn(x,E,d){var A=x.curve,w=E.curve;(!A||A.length===0)&&(A=wt(x.absolutePath,!1),x.curve=A),(!w||w.length===0)&&(w=wt(E.absolutePath,!1),E.curve=w);var D=[A,w];A.length!==w.length&&(D=Yt(A,w));var z=xn(D[0])!==xn(D[1])?cr(D[0]):nr(D[0]);return[z,si(D[1],z),function(oe){return oe}]}function Jn(x,E){var d;return(0,Fe.Z)(x)?d=x.split(" ").map(function(A){var w=A.split(","),D=(0,B.Z)(w,2),z=D[0],oe=D[1];return[Number(z),Number(oe)]}):d=x,{points:d,totalLength:0,segments:[]}}function Ur(x,E){return[x.points,E.points,function(d){return d}]}var Sr=null,Ai=/\s*(\w+)\(([^)]*)\)/g;function hi(x){return function(E){var d=0;return x.map(function(A){return A===Sr?E[d++]:A})}}function _i(x){return x}var Ii={matrix:["NNNNNN",[Sr,Sr,0,0,Sr,Sr,0,0,0,0,1,0,Sr,Sr,0,1],_i],matrix3d:["NNNNNNNNNNNNNNNN",_i],rotate:["A"],rotateX:["A"],rotateY:["A"],rotateZ:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",hi([Sr,Sr,new ul(1)]),_i],scaleX:["N",hi([Sr,new ul(1),new ul(1)]),hi([Sr,new ul(1)])],scaleY:["N",hi([new ul(1),Sr,new ul(1)]),hi([new ul(1),Sr])],scaleZ:["N",hi([new ul(1),new ul(1),Sr])],scale3d:["NNN",_i],skew:["Aa",null,_i],skewX:["A",null,hi([Sr,bc])],skewY:["A",null,hi([bc,Sr])],translate:["Tt",hi([Sr,Sr,hl]),_i],translateX:["T",hi([Sr,hl,hl]),hi([Sr,hl])],translateY:["T",hi([hl,Sr,hl]),hi([hl,Sr])],translateZ:["L",hi([hl,hl,Sr])],translate3d:["TTL",_i]};function _s(x){for(var E=[],d=x.length,A=0;A2&&arguments[2]!==void 0?arguments[2]:{skipUpdateAttribute:!1,skipParse:!1,forceUpdateGeometry:!1,usedAttributes:[],memoize:!0};Object.assign(d.attributes,A);var D=d.parsedStyle.clipPath,z=d.parsedStyle.offsetPath;Gu(d,A);var oe=!!w.forceUpdateGeometry;if(!oe){for(var ye in A)if(lc.has(ye)){oe=!0;break}}var ke=fc(d);ke.has("fill")&&A.fill&&(d.parsedStyle.fill=Rl(A.fill)),ke.has("stroke")&&A.stroke&&(d.parsedStyle.stroke=Rl(A.stroke)),ke.has("shadowColor")&&A.shadowColor&&(d.parsedStyle.shadowColor=Rl(A.shadowColor)),ke.has("filter")&&A.filter&&(d.parsedStyle.filter=vn(A.filter)),ke.has("radius")&&!(0,Xe.Z)(A.radius)&&(d.parsedStyle.radius=je(A.radius,4)),ke.has("lineDash")&&!(0,Xe.Z)(A.lineDash)&&(d.parsedStyle.lineDash=je(A.lineDash,"even")),ke.has("points")&&A.points&&(d.parsedStyle.points=Jn(A.points)),ke.has("d")&&A.d===""&&(d.parsedStyle.d=(0,m.Z)({},Wa)),ke.has("d")&&A.d&&(d.parsedStyle.d=pn(A.d)),ke.has("textTransform")&&A.textTransform&&this.runtime.CSSPropertySyntaxFactory[Mi.TEXT_TRANSFORM].calculator(null,null,{value:A.textTransform},d,null),ke.has("clipPath")&&!(0,Pr.Z)(A.clipPath)&&this.runtime.CSSPropertySyntaxFactory[Mi.DEFINED_PATH].calculator("clipPath",D,A.clipPath,d,this.runtime),ke.has("offsetPath")&&A.offsetPath&&this.runtime.CSSPropertySyntaxFactory[Mi.DEFINED_PATH].calculator("offsetPath",z,A.offsetPath,d,this.runtime),ke.has("transform")&&A.transform&&(d.parsedStyle.transform=Ns(A.transform)),ke.has("transformOrigin")&&A.transformOrigin&&(d.parsedStyle.transformOrigin=Sc(A.transformOrigin)),ke.has("markerStart")&&A.markerStart&&(d.parsedStyle.markerStart=this.runtime.CSSPropertySyntaxFactory[Mi.MARKER].calculator(null,A.markerStart,A.markerStart,null,null)),ke.has("markerEnd")&&A.markerEnd&&(d.parsedStyle.markerEnd=this.runtime.CSSPropertySyntaxFactory[Mi.MARKER].calculator(null,A.markerEnd,A.markerEnd,null,null)),ke.has("markerMid")&&A.markerMid&&(d.parsedStyle.markerMid=this.runtime.CSSPropertySyntaxFactory[Mi.MARKER].calculator("",A.markerMid,A.markerMid,null,null)),ke.has("zIndex")&&!(0,Xe.Z)(A.zIndex)&&this.runtime.CSSPropertySyntaxFactory[Mi.Z_INDEX].postProcessor(d),ke.has("offsetDistance")&&!(0,Xe.Z)(A.offsetDistance)&&this.runtime.CSSPropertySyntaxFactory[Mi.OFFSET_DISTANCE].postProcessor(d),ke.has("transform")&&A.transform&&this.runtime.CSSPropertySyntaxFactory[Mi.TRANSFORM].postProcessor(d),ke.has("transformOrigin")&&A.transformOrigin&&this.runtime.CSSPropertySyntaxFactory[Mi.TRANSFORM_ORIGIN].postProcessor(d),oe&&(d.dirty(!0,!0),w.forceUpdateGeometry||this.runtime.sceneGraphService.dirtyToRoot(d))}},{key:"updateGeometry",value:function(d){var A=d.nodeName,w=this.runtime.geometryUpdaterFactory[A];if(w){var D=d.geometry;D.contentBounds||(D.contentBounds=new ae),D.renderBounds||(D.renderBounds=new ae);var z=d.parsedStyle,oe=w.update(z,d),ye=oe.cx,ke=ye===void 0?0:ye,ot=oe.cy,Et=ot===void 0?0:ot,Xt=oe.cz,Rn=Xt===void 0?0:Xt,wn=oe.hwidth,Xn=wn===void 0?0:wn,dr=oe.hheight,gr=dr===void 0?0:dr,sr=oe.hdepth,Dr=sr===void 0?0:sr,gi=[Math.abs(Xn),Math.abs(gr),Dr],Ts=z.stroke,Rs=z.lineWidth,Li=Rs===void 0?1:Rs,Zi=z.increasedLineWidthForHitTesting,ma=Zi===void 0?0:Zi,$s=z.shadowType,va=$s===void 0?"outer":$s,ba=z.shadowColor,ho=z.filter,Ul=ho===void 0?[]:ho,Tc=z.transformOrigin,Fc=[ke,Et,Rn];D.contentBounds.update(Fc,gi);var Ga=A===sn.POLYLINE||A===sn.POLYGON||A===sn.PATH?Math.SQRT2:.5,O=Ts&&!Ts.isNone;if(O){var N=((Li||0)+(ma||0))*Ga;gi[0]+=N,gi[1]+=N}if(D.renderBounds.update(Fc,gi),ba&&va&&va!=="inner"){var X=D.renderBounds,$=X.min,Se=X.max,rt=z.shadowBlur,Dt=z.shadowOffsetX,yn=z.shadowOffsetY,mn=rt||0,Er=Dt||0,yr=yn||0,Wr=$[0]-mn+Er,Ci=Se[0]+mn+Er,ya=$[1]-mn+yr,Ls=Se[1]+mn+yr;$[0]=Math.min($[0],Wr),Se[0]=Math.max(Se[0],Ci),$[1]=Math.min($[1],ya),Se[1]=Math.max(Se[1],Ls),D.renderBounds.setMinMax($,Se)}Ul.forEach(function(Il){var So=Il.name,_o=Il.params;if(So==="blur"){var wa=_o[0].value;D.renderBounds.update(D.renderBounds.center,V.IH(D.renderBounds.halfExtents,D.renderBounds.halfExtents,[wa,wa,0]))}else if(So==="drop-shadow"){var Sl=_o[0].value,$o=_o[1].value,To=_o[2].value,vu=D.renderBounds,yu=vu.min,Qu=vu.max,Cc=yu[0]-To+Sl,Wu=Qu[0]+To+Sl,nf=yu[1]-To+$o,rh=Qu[1]+To+$o;yu[0]=Math.min(yu[0],Cc),Qu[0]=Math.max(Qu[0],Wu),yu[1]=Math.min(yu[1],nf),Qu[1]=Math.max(Qu[1],rh),D.renderBounds.setMinMax(yu,Qu)}}),d.geometry.dirty=!1;var ha=Xn<0,Oo=gr<0,Ka=(ha?-1:1)*(Tc?ce(Tc[0],0,d,!0):0),Da=(Oo?-1:1)*(Tc?ce(Tc[1],1,d,!0):0);(Ka||Da)&&d.setOrigin(Ka,Da)}}},{key:"updateSizeAttenuation",value:function(d,A){d.style.isSizeAttenuation?(d.style.rawLineWidth||(d.style.rawLineWidth=d.style.lineWidth),d.style.lineWidth=(d.style.rawLineWidth||1)/A,d.nodeName===sn.CIRCLE&&(d.style.rawR||(d.style.rawR=d.style.r),d.style.r=(d.style.rawR||1)/A)):(d.style.rawLineWidth&&(d.style.lineWidth=d.style.rawLineWidth,delete d.style.rawLineWidth),d.nodeName===sn.CIRCLE&&d.style.rawR&&(d.style.r=d.style.rawR,delete d.style.rawR))}}])}();function Gu(x,E){var d=fc(x);for(var A in E)d.has(A)&&(x.parsedStyle[A]=E[A])}function fc(x){return x.constructor.PARSED_STYLE_LIST}var jc=function(){function x(){(0,K.Z)(this,x),this.mixer=Mr}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w,D){return de(w)}}])}(),wl=function(){function x(){(0,K.Z)(this,x)}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w,D,z){return w instanceof lu&&(w=null),z.sceneGraphService.updateDisplayObjectDependency(d,A,w,D),d==="clipPath"&&D.forEach(function(oe){oe.childNodes.length===0&&z.sceneGraphService.dirtyToRoot(oe)}),w}}])}(),no=function(){function x(){(0,K.Z)(this,x),this.parser=Rl,this.mixer=mu}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w,D){return w instanceof lu?w.value==="none"?js:Qr:w}}])}(),Hf=function(){function x(){(0,K.Z)(this,x)}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w){return w instanceof lu?[]:w}}])}();function Ec(x){var E=x.parsedStyle,d=E.fontSize;return(0,Xe.Z)(d)?null:d}var qu=function(){function x(){(0,K.Z)(this,x),this.mixer=Mr}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w,D,z){if((0,_e.Z)(w))return w;if(ul.isRelativeUnit(w.unit)){if(w.unit===Ss.kPercentage)return 0;if(w.unit===Ss.kEms){if(D.parentNode){var oe=Ec(D.parentNode);if(oe)return oe*=w.value,oe}return 0}if(w.unit===Ss.kRems){var ye;if(D!=null&&(ye=D.ownerDocument)!==null&&ye!==void 0&&ye.documentElement){var ke=Ec(D.ownerDocument.documentElement);if(ke)return ke*=w.value,ke}return 0}}else return w.value}}])}(),zu=function(){function x(){(0,K.Z)(this,x),this.mixer=Gr}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w){return w.map(function(D){return D.value})}}])}(),df=function(){function x(){(0,K.Z)(this,x),this.mixer=Gr}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w){return w.map(function(D){return D.value})}}])}(),sd=function(){function x(){(0,K.Z)(this,x)}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w,D){var z;w instanceof lu&&(w=null);var oe=(z=w)===null||z===void 0?void 0:z.cloneNode(!0);return oe&&(oe.style.isMarker=!0),oe}}])}(),ad=function(){function x(){(0,K.Z)(this,x),this.mixer=Mr}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w){return w.value}}])}(),uA=function(){function x(){(0,K.Z)(this,x),this.mixer=wr(0,1)}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w){return w.value}},{key:"postProcessor",value:function(d){var A=d.parsedStyle,w=A.offsetPath,D=A.offsetDistance;if(w){var z=w.nodeName;if(z===sn.LINE||z===sn.PATH||z===sn.POLYLINE){var oe=w.getPoint(D);oe&&d.setLocalPosition(oe.x,oe.y)}}}}])}(),dc=function(){function x(){(0,K.Z)(this,x),this.mixer=wr(0,1)}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w){return w.value}}])}(),mh=function(){function x(){(0,K.Z)(this,x),this.parser=pn,this.mixer=Vn}return(0,H.Z)(x,[{key:"calculator",value:function(d,A,w){return w instanceof lu&&w.value==="unset"?{absolutePath:[],hasArc:!1,segments:[],polygons:[],polylines:[],curve:null,totalLength:0,rect:new Bn(0,0,0,0)}:w}}])}(),qh=(0,H.Z)(function x(){(0,K.Z)(this,x),this.mixer=Ur}),Dd=function(x){function E(){var d;(0,K.Z)(this,E);for(var A=arguments.length,w=new Array(A),D=0;D>>1;th(x[w],E)<0?d=w+1:A=w}return d}function th(x,E){var d=Number(x.parsedStyle.zIndex||0),A=Number(E.parsedStyle.zIndex||0);if(d===A){var w=x.parentNode;if(w){var D=w.childNodes||[];return D.indexOf(x)-D.indexOf(E)}}return d-A}function Mf(x){var E=x;do{var d,A=(d=E.parsedStyle)===null||d===void 0?void 0:d.clipPath;if(A)return E;E=E.parentElement}while(E!==null);return null}var Kl="px";function WA(x,E,d){ml&&x.style&&(x.style.width=E+Kl,x.style.height=d+Kl)}function Tf(x,E){if(ml)return document.defaultView.getComputedStyle(x,null).getPropertyValue(E)}function hA(x){var E=Tf(x,"width");return E==="auto"?x.offsetWidth:parseFloat(E)}function vh(x){var E=Tf(x,"height");return E==="auto"?x.offsetHeight:parseFloat(E)}var li=1,$l={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},Od=typeof performance=="object"&&performance.now?performance:Date;function Nc(x){return x.nodeName===sn.FRAGMENT?!0:x.getRootNode().nodeName===sn.FRAGMENT}function Gc(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"auto",E=arguments.length>1?arguments[1]:void 0,d=arguments.length>2?arguments[2]:void 0,A=!1,w=!1,D=!!E&&!E.isNone,z=!!d&&!d.isNone;return x==="visiblepainted"||x==="painted"||x==="auto"?(A=D,w=z):x==="visiblefill"||x==="fill"?A=!0:x==="visiblestroke"||x==="stroke"?w=!0:(x==="visible"||x==="all")&&(A=!0,w=!0),[A,w]}var Af=1,ym=function(){return Af++},Ac=typeof self=="object"&&self.self===self?self:typeof _.g=="object"&&_.g.global===_.g?_.g:{},kd=Date.now(),Vy=function(){return Ac.performance&&typeof Ac.performance.now=="function"?Ac.performance.now():Date.now()-kd},Xl={},od=Date.now(),ld=function(E){if(typeof E!="function")throw new TypeError("".concat(E," is not a function"));var d=Date.now(),A=d-od,w=A>16?0:16-A,D=ym();return Xl[D]=E,Object.keys(Xl).length>1||setTimeout(function(){od=d;var z=Xl;Xl={},Object.keys(z).forEach(function(oe){return z[oe](Vy())})},w),D},jl=function(E){delete Xl[E]},xm=["","webkit","moz","ms","o"],Rv=function(E){return typeof E!="string"?ld:E===""?Ac.requestAnimationFrame:Ac["".concat(E,"RequestAnimationFrame")]},Lp=function(E){return typeof E!="string"?jl:E===""?Ac.cancelAnimationFrame:Ac["".concat(E,"CancelAnimationFrame")]||Ac["".concat(E,"CancelRequestAnimationFrame")]},Hy=function(E,d){for(var A=0;E[A]!==void 0;){if(d(E[A]))return E[A];A+=1}},ZA=Hy(xm,function(x){return!!Rv(x)}),E0=Rv(ZA),xg=Lp(ZA);Ac.requestAnimationFrame=E0,Ac.cancelAnimationFrame=xg;var M0=function(){function x(){(0,K.Z)(this,x),this.callbacks=[]}return(0,H.Z)(x,[{key:"getCallbacksNum",value:function(){return this.callbacks.length}},{key:"tapPromise",value:function(d,A){this.callbacks.push(A)}},{key:"promise",value:function(){for(var d=arguments.length,A=new Array(d),w=0;w=0;ot--){var Et=ke[ot].trim();!KA.test(Et)&&_m.indexOf(Et)<0&&(Et='"'.concat(Et,'"')),ke[ot]=Et}return"".concat(D," ").concat(z," ").concat(oe," ").concat(ye," ").concat(ke.join(","))},function(x){var E=Vh(x),d=E.fontSize,A=E.fontFamily,w=E.fontStyle,D=E.fontVariant,z=E.fontWeight;return"".concat(w,"_").concat(D,"_").concat(z,"_").concat(d,"_").concat(A)}),nh=1e-6,Eo=function(E){return Math.max(E,nh)};function Fp(x,E,d){return Y.identity(x),x[4]=Math.tan(E),x[1]=Math.tan(d),x}var Lc=Y.create(),fA=Y.create(),T0={scale:function(E){Y.fromScaling(Lc,[E[0].value,E[1].value,1].map(function(d){return Eo(d)}))},scaleX:function(E){Y.fromScaling(Lc,[E[0].value,1,1].map(function(d){return Eo(d)}))},scaleY:function(E){Y.fromScaling(Lc,[1,E[0].value,1].map(function(d){return Eo(d)}))},scaleZ:function(E){Y.fromScaling(Lc,[1,1,E[0].value].map(function(d){return Eo(d)}))},scale3d:function(E){Y.fromScaling(Lc,[E[0].value,E[1].value,E[2].value].map(function(d){return Eo(d)}))},translate:function(E){Y.fromTranslation(Lc,[E[0].value,E[1].value,0])},translateX:function(E){Y.fromTranslation(Lc,[E[0].value,0,0])},translateY:function(E){Y.fromTranslation(Lc,[0,E[0].value,0])},translateZ:function(E){Y.fromTranslation(Lc,[0,0,E[0].value])},translate3d:function(E){Y.fromTranslation(Lc,[E[0].value,E[1].value,E[2].value])},rotate:function(E){Y.fromZRotation(Lc,tn(de(E[0])))},rotateX:function(E){Y.fromXRotation(Lc,tn(de(E[0])))},rotateY:function(E){Y.fromYRotation(Lc,tn(de(E[0])))},rotateZ:function(E){Y.fromZRotation(Lc,tn(de(E[0])))},rotate3d:function(E){Y.fromRotation(Lc,tn(de(E[3])),[E[0].value,E[1].value,E[2].value])},skew:function(E){Fp(Lc,tn(E[0].value),tn(E[1].value))},skewX:function(E){Fp(Lc,tn(E[0].value),0)},skewY:function(E){Fp(Lc,0,tn(E[0].value))},matrix:function(E){Y.set(Lc,E[0].value,E[1].value,0,0,E[2].value,E[3].value,0,0,0,0,1,0,E[4].value,E[5].value,0,1)},matrix3d:function(E){Y.set.apply(Y,[Lc].concat((0,L.Z)(E.map(function(d){return d.value}))))}},XA=V.al(1,1,1),jA=V.Ue(),YA={translate:function(E,d){ns.sceneGraphService.setLocalScale(E,XA,!1),ns.sceneGraphService.setLocalEulerAngles(E,jA,void 0,void 0,!1),ns.sceneGraphService.setLocalPosition(E,[d[0].value,d[1].value,0],!1),ns.sceneGraphService.dirtyLocalTransform(E,E.transformable)}};function Up(x,E){if(x.length){if(x.length===1&&YA[x[0].t]){YA[x[0].t](E,x[0].d);return}for(var d=Y.identity(fA),A=0;A1&&arguments[1]!==void 0?arguments[1]:!1,w=arguments.length>2?arguments[2]:void 0;if(w)return this.dispatchEventToSelf(d),!0;var D;if(this.document)D=this;else if(this.defaultView)D=this.defaultView;else{var z;D=(z=this.ownerDocument)===null||z===void 0?void 0:z.defaultView}if(D){if(d.manager=D.getEventService(),!d.manager)return!1;d.defaultPrevented=!1,d.path?d.path.length=0:d.page=[],A||(d.target=this),d.manager.dispatchEvent(d,d.type,A)}else this.dispatchEventToSelf(d);return!d.defaultPrevented}}])}(),Ko=function(x){function E(){var d;(0,K.Z)(this,E);for(var A=arguments.length,w=new Array(A),D=0;D0&&arguments[0]!==void 0?arguments[0]:{};return this.parentNode?this.parentNode.getRootNode(A):A.composed&&this.host?this.host.getRootNode(A):this}},{key:"hasChildNodes",value:function(){return this.childNodes.length>0}},{key:"isDefaultNamespace",value:function(A){throw new Error(Ge)}},{key:"lookupNamespaceURI",value:function(A){throw new Error(Ge)}},{key:"lookupPrefix",value:function(A){throw new Error(Ge)}},{key:"normalize",value:function(){throw new Error(Ge)}},{key:"isEqualNode",value:function(A){return this===A}},{key:"isSameNode",value:function(A){return this.isEqualNode(A)}},{key:"parent",get:function(){return this.parentNode}},{key:"parentElement",get:function(){return null}},{key:"nextSibling",get:function(){return null}},{key:"previousSibling",get:function(){return null}},{key:"firstChild",get:function(){return this.childNodes.length>0?this.childNodes[0]:null}},{key:"lastChild",get:function(){return this.childNodes.length>0?this.childNodes[this.childNodes.length-1]:null}},{key:"compareDocumentPosition",value:function(A){if(A===this)return 0;for(var w=A,D=this,z=[w],oe=[D];(ye=w.parentNode)!==null&&ye!==void 0?ye:D.parentNode;){var ye;w=w.parentNode?(z.push(w.parentNode),w.parentNode):w,D=D.parentNode?(oe.push(D.parentNode),D.parentNode):D}if(w!==D)return E.DOCUMENT_POSITION_DISCONNECTED|E.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|E.DOCUMENT_POSITION_PRECEDING;var ke=z.length>oe.length?z:oe,ot=ke===z?oe:z;if(ke[ke.length-ot.length]===ot[0])return ke===z?E.DOCUMENT_POSITION_CONTAINED_BY|E.DOCUMENT_POSITION_FOLLOWING:E.DOCUMENT_POSITION_CONTAINS|E.DOCUMENT_POSITION_PRECEDING;for(var Et=ke.length-ot.length,Xt=ot.length-1;Xt>=0;Xt--){var Rn=ot[Xt],wn=ke[Et+Xt];if(wn!==Rn){var Xn=Rn.parentNode.childNodes;return Xn.indexOf(Rn)0&&w;)w=w.parentNode,A--;return w}},{key:"forEach",value:function(A){for(var w=[this];w.length>0;){var D=w.pop(),z=A(D);if(z===!1)break;for(var oe=D.childNodes.length-1;oe>=0;oe--)w.push(D.childNodes[oe])}}}],[{key:"isNode",value:function(A){return!!A.childNodes}}])}(wm);Ko.DOCUMENT_POSITION_DISCONNECTED=1,Ko.DOCUMENT_POSITION_PRECEDING=2,Ko.DOCUMENT_POSITION_FOLLOWING=4,Ko.DOCUMENT_POSITION_CONTAINS=8,Ko.DOCUMENT_POSITION_CONTAINED_BY=16,Ko.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC=32;var ep=2048,tp=function(){function x(E,d){var A=this;(0,K.Z)(this,x),this.nativeHTMLMap=new WeakMap,this.cursor="default",this.mappingTable={},this.mappingState={trackingData:{}},this.eventPool=new Map,this.tmpMatrix=Y.create(),this.tmpVec3=V.Ue(),this.onPointerDown=function(w){var D=A.createPointerEvent(w);if(A.dispatchEvent(D,"pointerdown"),D.pointerType==="touch")A.dispatchEvent(D,"touchstart");else if(D.pointerType==="mouse"||D.pointerType==="pen"){var z=D.button===2;A.dispatchEvent(D,z?"rightdown":"mousedown")}var oe=A.trackingData(w.pointerId);oe.pressTargetsByButton[w.button]=D.composedPath(),A.freeEvent(D)},this.onPointerUp=function(w){var D=Od.now(),z=A.createPointerEvent(w,void 0,void 0,A.context.config.alwaysTriggerPointerEventOnCanvas?A.rootTarget:void 0);if(A.dispatchEvent(z,"pointerup"),z.pointerType==="touch")A.dispatchEvent(z,"touchend");else if(z.pointerType==="mouse"||z.pointerType==="pen"){var oe=z.button===2;A.dispatchEvent(z,oe?"rightup":"mouseup")}var ye=A.trackingData(w.pointerId),ke=A.findMountedTarget(ye.pressTargetsByButton[w.button]),ot=ke;if(ke&&!z.composedPath().includes(ke)){for(var Et=ke;Et&&!z.composedPath().includes(Et);){if(z.currentTarget=Et,A.notifyTarget(z,"pointerupoutside"),z.pointerType==="touch")A.notifyTarget(z,"touchendoutside");else if(z.pointerType==="mouse"||z.pointerType==="pen"){var Xt=z.button===2;A.notifyTarget(z,Xt?"rightupoutside":"mouseupoutside")}Ko.isNode(Et)&&(Et=Et.parentNode)}delete ye.pressTargetsByButton[w.button],ot=Et}if(ot){var Rn,wn=A.clonePointerEvent(z,"click");wn.target=ot,wn.path=[],ye.clicksByButton[w.button]||(ye.clicksByButton[w.button]={clickCount:0,target:wn.target,timeStamp:D});var Xn=A.context.renderingContext.root.ownerDocument.defaultView,dr=ye.clicksByButton[w.button];dr.target===wn.target&&D-dr.timeStamp=1;D--)if(d.currentTarget=w[D],this.notifyTarget(d,A),d.propagationStopped||d.propagationImmediatelyStopped)return;if(d.eventPhase=d.AT_TARGET,d.currentTarget=d.target,this.notifyTarget(d,A),!(d.propagationStopped||d.propagationImmediatelyStopped)){var z=w.indexOf(d.currentTarget);d.eventPhase=d.BUBBLING_PHASE;for(var oe=z+1;oez||w>oe?null:!ye&&this.pickHandler(d)||this.rootTarget||null}},{key:"isNativeEventFromCanvas",value:function(d,A){var w,D=A==null?void 0:A.target;if((w=D)!==null&&w!==void 0&&w.shadowRoot&&(D=A.composedPath()[0]),D){if(D===d)return!0;if(d&&d.contains)return d.contains(D)}return A!=null&&A.composedPath?A.composedPath().indexOf(d)>-1:!1}},{key:"getExistedHTML",value:function(d){if(d.nativeEvent.composedPath)for(var A=0,w=d.nativeEvent.composedPath();A=0;w--){var D=d[w];if(D===this.rootTarget||Ko.isNode(D)&&D.parentNode===A)A=d[w];else break}return A}},{key:"getCursor",value:function(d){for(var A=d;A;){var w=uu(A)&&A.getAttribute("cursor");if(w)return w;A=Ko.isNode(A)&&A.parentNode}}}])}(),bg=function(){function x(){(0,K.Z)(this,x)}return(0,H.Z)(x,[{key:"getOrCreateCanvas",value:function(d,A){if(this.canvas)return this.canvas;if(d||ns.offscreenCanvas)this.canvas=d||ns.offscreenCanvas,this.context=this.canvas.getContext("2d",(0,m.Z)({willReadFrequently:!0},A));else try{this.canvas=new window.OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",(0,m.Z)({willReadFrequently:!0},A)),(!this.context||!this.context.measureText)&&(this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"))}catch(w){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d",(0,m.Z)({willReadFrequently:!0},A))}return this.canvas.width=10,this.canvas.height=10,this.canvas}},{key:"getOrCreateContext",value:function(d,A){return this.context?this.context:(this.getOrCreateCanvas(d,A),this.context)}}],[{key:"createCanvas",value:function(){try{return new window.OffscreenCanvas(0,0)}catch(d){}try{return document.createElement("canvas")}catch(d){}return null}}])}(),pf=function(x){return x[x.CAMERA_CHANGED=0]="CAMERA_CHANGED",x[x.DISPLAY_OBJECT_CHANGED=1]="DISPLAY_OBJECT_CHANGED",x[x.NONE=2]="NONE",x}({}),Sm=function(){function x(E,d){(0,K.Z)(this,x),this.inited=!1,this.stats={total:0,rendered:0},this.zIndexCounter=0,this.hooks={init:new kh,initAsync:new M0,dirtycheck:new ef,cull:new ef,beginFrame:new kh,beforeRender:new kh,render:new kh,afterRender:new kh,endFrame:new kh,destroy:new kh,pick:new Pa,pickSync:new ef,pointerDown:new kh,pointerUp:new kh,pointerMove:new kh,pointerOut:new kh,pointerOver:new kh,pointerWheel:new kh,pointerCancel:new kh,click:new kh},this.globalRuntime=E,this.context=d}return(0,H.Z)(x,[{key:"init",value:function(d){var A=this,w=(0,m.Z)((0,m.Z)({},this.globalRuntime),this.context);this.context.renderingPlugins.forEach(function(D){D.apply(w,A.globalRuntime)}),this.hooks.init.call(),this.hooks.initAsync.getCallbacksNum()===0?(this.inited=!0,d()):this.hooks.initAsync.promise().then(function(){A.inited=!0,d()}).catch(function(D){})}},{key:"getStats",value:function(){return this.stats}},{key:"disableDirtyRectangleRendering",value:function(){var d=this.context.config.renderer,A=d.getConfig(),w=A.enableDirtyRectangleRendering;return!w||this.context.renderingContext.renderReasons.has(pf.CAMERA_CHANGED)}},{key:"render",value:function(d,A,w){var D=this,z=d.getConfig(),oe=this.context.renderingContext;if(this.stats.total=0,this.stats.rendered=0,this.zIndexCounter=0,this.globalRuntime.sceneGraphService.syncHierarchy(oe.root),this.globalRuntime.sceneGraphService.notifyMutationObservers(d),oe.renderReasons.size&&this.inited){oe.dirtyRectangleRenderingDisabled=this.disableDirtyRectangleRendering();var ye=oe.renderReasons.size===1&&oe.renderReasons.has(pf.CAMERA_CHANGED),ke=!z.disableRenderHooks||!ye;ke&&this.renderDisplayObject(oe.root,z,oe),this.hooks.beginFrame.call(A),ke&&oe.renderListCurrentFrame.forEach(function(ot){D.hooks.beforeRender.call(ot),D.hooks.render.call(ot),D.hooks.afterRender.call(ot)}),this.hooks.endFrame.call(A),oe.renderListCurrentFrame=[],oe.renderReasons.clear(),w()}}},{key:"renderDisplayObject",value:function(d,A,w){var D=this,z=A.renderer.getConfig(),oe=z.enableDirtyCheck,ye=z.enableCulling;function ke(Xn){var dr=Xn.renderable,gr=Xn.sortable,sr=oe?dr.dirty||w.dirtyRectangleRenderingDisabled?Xn:null:Xn,Dr=null;sr&&(Dr=ye?D.hooks.cull.call(sr,D.context.camera):sr,Dr&&(D.stats.rendered+=1,w.renderListCurrentFrame.push(Dr))),Xn.dirty(!1),gr.renderOrder=D.zIndexCounter,D.zIndexCounter+=1,D.stats.total+=1,gr.dirty&&(D.sort(Xn,gr),gr.dirty=!1,gr.dirtyChildren=[],gr.dirtyReason=void 0)}for(var ot=[d];ot.length>0;){var Et,Xt=ot.pop();ke(Xt);for(var Rn=((Et=Xt.sortable)===null||Et===void 0||(Et=Et.sorted)===null||Et===void 0?void 0:Et.length)>0?Xt.sortable.sorted:Xt.childNodes,wn=Rn.length-1;wn>=0;wn--)ot.push(Rn[wn])}}},{key:"sort",value:function(d,A){var w,D;(A==null||(w=A.sorted)===null||w===void 0?void 0:w.length)>0&&A.dirtyReason!==As.Z_INDEX_CHANGED?A.dirtyChildren.forEach(function(z){var oe=A.sorted.indexOf(z);oe>-1&&A.sorted.splice(oe,1);var ye=d.childNodes.indexOf(z);if(ye>-1)if(A.sorted.length===0)A.sorted.push(z);else{var ke=eh(A.sorted,z);A.sorted.splice(ke,0,z)}}):A.sorted=d.childNodes.slice().sort(th),((D=A.sorted)===null||D===void 0?void 0:D.length)>0&&d.childNodes.filter(function(z){return z.parsedStyle.zIndex}).length===0&&(A.sorted=[])}},{key:"destroy",value:function(){this.inited=!1,this.hooks.destroy.call()}},{key:"dirty",value:function(){this.context.renderingContext.renderReasons.add(pf.DISPLAY_OBJECT_CHANGED)}}])}(),xd=/\[\s*(.*)=(.*)\s*\]/,P0=function(){function x(){(0,K.Z)(this,x)}return(0,H.Z)(x,[{key:"selectOne",value:function(d,A){var w=this;if(d.startsWith("."))return A.find(function(ye){return((ye==null?void 0:ye.classList)||[]).indexOf(w.getIdOrClassname(d))>-1});if(d.startsWith("#"))return A.find(function(ye){return ye.id===w.getIdOrClassname(d)});if(d.startsWith("[")){var D=this.getAttribute(d),z=D.name,oe=D.value;return z?A.find(function(ye){return A!==ye&&(z==="name"?ye.name===oe:w.attributeToString(ye,z)===oe)}):null}return A.find(function(ye){return A!==ye&&ye.nodeName===d})}},{key:"selectAll",value:function(d,A){var w=this;if(d.startsWith("."))return A.findAll(function(ye){return A!==ye&&((ye==null?void 0:ye.classList)||[]).indexOf(w.getIdOrClassname(d))>-1});if(d.startsWith("#"))return A.findAll(function(ye){return A!==ye&&ye.id===w.getIdOrClassname(d)});if(d.startsWith("[")){var D=this.getAttribute(d),z=D.name,oe=D.value;return z?A.findAll(function(ye){return A!==ye&&(z==="name"?ye.name===oe:w.attributeToString(ye,z)===oe)}):[]}return A.findAll(function(ye){return A!==ye&&ye.nodeName===d})}},{key:"is",value:function(d,A){if(d.startsWith("."))return A.className===this.getIdOrClassname(d);if(d.startsWith("#"))return A.id===this.getIdOrClassname(d);if(d.startsWith("[")){var w=this.getAttribute(d),D=w.name,z=w.value;return D==="name"?A.name===z:this.attributeToString(A,D)===z}return A.nodeName===d}},{key:"getIdOrClassname",value:function(d){return d.substring(1)}},{key:"getAttribute",value:function(d){var A=d.match(xd),w="",D="";return A&&A.length>2&&(w=A[1].replace(/"/g,""),D=A[2].replace(/"/g,"")),{name:w,value:D}}},{key:"attributeToString",value:function(d,A){if(!d.getAttribute)return"";var w=d.getAttribute(A);return(0,Xe.Z)(w)?"":w.toString?w.toString():""}}])}(),Mo=function(x){return x.ATTR_MODIFIED="DOMAttrModified",x.INSERTED="DOMNodeInserted",x.MOUNTED="DOMNodeInsertedIntoDocument",x.REMOVED="removed",x.UNMOUNTED="DOMNodeRemovedFromDocument",x.REPARENT="reparent",x.DESTROY="destroy",x.BOUNDS_CHANGED="bounds-changed",x.CULLED="culled",x}({}),Th=function(x){function E(d,A,w,D,z,oe,ye,ke){var ot;return(0,K.Z)(this,E),ot=(0,T.Z)(this,E,[null]),ot.relatedNode=A,ot.prevValue=w,ot.newValue=D,ot.attrName=z,ot.attrChange=oe,ot.prevParsedValue=ye,ot.newParsedValue=ke,ot.type=d,ot}return(0,F.Z)(E,x),(0,H.Z)(E)}(JA);Th.ADDITION=2,Th.MODIFICATION=1,Th.REMOVAL=3;var Em=new Th(Mo.REPARENT,null,"","","",0,"",""),Op=Me.Ue(),Vd=V.Ue(),_h=V.al(1,1,1),pA=Y.create(),Mm=Me.Ue(),Cf=V.Ue(),kp=Y.create(),Bf=ue.Ue(),np=V.Ue(),rp=ue.Ue(),Vp=V.Ue(),gA=V.Ue(),Qf=V.Ue(),_d=Y.create(),ip=ue.Ue(),Hp=ue.Ue(),sp=ue.Ue(),I0=function(){function x(E){(0,K.Z)(this,x),this.displayObjectDependencyMap=new WeakMap,this.runtime=E}return(0,H.Z)(x,[{key:"matches",value:function(d,A){return this.runtime.sceneGraphSelector.is(d,A)}},{key:"querySelector",value:function(d,A){return this.runtime.sceneGraphSelector.selectOne(d,A)}},{key:"querySelectorAll",value:function(d,A){return this.runtime.sceneGraphSelector.selectAll(d,A)}},{key:"attach",value:function(d,A,w){var D,z=!1;d.parentNode&&(z=d.parentNode!==A,this.detach(d));var oe=d.nodeName===sn.FRAGMENT,ye=Nc(A);d.parentNode=A;var ke=oe?d.childNodes:[d];(0,_e.Z)(w)?ke.forEach(function(Xn){A.childNodes.splice(w,0,Xn),Xn.parentNode=A}):ke.forEach(function(Xn){A.childNodes.push(Xn),Xn.parentNode=A});var ot=A,Et=ot.sortable;if((Et!=null&&(D=Et.sorted)!==null&&D!==void 0&&D.length||Et.dirty||d.parsedStyle.zIndex)&&(Et.dirtyChildren.indexOf(d)===-1&&Et.dirtyChildren.push(d),Et.dirty=!0,Et.dirtyReason=As.ADDED),!ye){if(oe)this.dirtyFragment(d);else{var Xt=d.transformable;Xt&&this.dirtyWorldTransform(d,Xt)}if(z){var Rn,wn=((Rn=A.ownerDocument)===null||Rn===void 0||(Rn=Rn.defaultView)===null||Rn===void 0||(Rn=Rn.getConfig())===null||Rn===void 0||(Rn=Rn.future)===null||Rn===void 0?void 0:Rn.experimentalCancelEventPropagation)===!0;d.dispatchEvent(Em,wn,wn)}}}},{key:"detach",value:function(d){var A,w;if(d.parentNode){var D=d.transformable,z=d.parentNode,oe=z.sortable;(oe!=null&&(A=oe.sorted)!==null&&A!==void 0&&A.length||(w=d.style)!==null&&w!==void 0&&w.zIndex)&&(oe.dirtyChildren.indexOf(d)===-1&&oe.dirtyChildren.push(d),oe.dirty=!0,oe.dirtyReason=As.REMOVED);var ye=d.parentNode.childNodes.indexOf(d);ye>-1&&d.parentNode.childNodes.splice(ye,1),D&&this.dirtyWorldTransform(d,D),d.parentNode=null}}},{key:"getLocalPosition",value:function(d){return d.transformable.localPosition}},{key:"getLocalRotation",value:function(d){return d.transformable.localRotation}},{key:"getLocalScale",value:function(d){return d.transformable.localScale}},{key:"getLocalSkew",value:function(d){return d.transformable.localSkew}},{key:"getLocalTransform",value:function(d){var A=d.transformable;return Ya(A),A.localTransform}},{key:"setLocalPosition",value:function(d,A){var w,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,z=d.transformable;gA[0]=A[0],gA[1]=A[1],gA[2]=(w=A[2])!==null&&w!==void 0?w:0,!V.fS(z.localPosition,gA)&&(V.JG(z.localPosition,gA),D&&this.dirtyLocalTransform(d,z))}},{key:"translateLocal",value:function(d,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=V.al(A,w,D));var z=d.transformable;V.fS(A,Vd)||(V.VC(A,A,z.localRotation),V.IH(z.localPosition,z.localPosition,A),this.dirtyLocalTransform(d,z))}},{key:"setLocalRotation",value:function(d,A,w,D,z){var oe=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;typeof A=="number"&&(A=ue.t8(Bf,A,w,D,z));var ye=d.transformable;ue.JG(ye.localRotation,A),oe&&this.dirtyLocalTransform(d,ye)}},{key:"rotateLocal",value:function(d,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=V.al(A,w,D));var z=d.transformable;ue.Su(Hp,A[0],A[1],A[2]),ue.dC(z.localRotation,z.localRotation,Hp),this.dirtyLocalTransform(d,z)}},{key:"setLocalScale",value:function(d,A){var w,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,z=d.transformable;V.t8(Cf,A[0],A[1],(w=A[2])!==null&&w!==void 0?w:z.localScale[2]),!V.fS(Cf,z.localScale)&&(V.JG(z.localScale,Cf),D&&this.dirtyLocalTransform(d,z))}},{key:"scaleLocal",value:function(d,A){var w,D=d.transformable;V.Jp(D.localScale,D.localScale,V.t8(Cf,A[0],A[1],(w=A[2])!==null&&w!==void 0?w:1)),this.dirtyLocalTransform(d,D)}},{key:"setLocalSkew",value:function(d,A,w){var D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;typeof A=="number"&&(A=Me.t8(Mm,A,w));var z=d.transformable;Me.JG(z.localSkew,A),D&&this.dirtyLocalTransform(d,z)}},{key:"setLocalEulerAngles",value:function(d,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,z=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;typeof A=="number"&&(A=V.al(A,w,D));var oe=d.transformable;ue.Su(oe.localRotation,A[0],A[1],A[2]),z&&this.dirtyLocalTransform(d,oe)}},{key:"setLocalTransform",value:function(d,A){var w=Y.getTranslation(np,A),D=Y.getRotation(rp,A),z=Y.getScaling(Vp,A);this.setLocalScale(d,z,!1),this.setLocalPosition(d,w,!1),this.setLocalRotation(d,D,void 0,void 0,void 0,!1),this.dirtyLocalTransform(d,d.transformable)}},{key:"resetLocalTransform",value:function(d){this.setLocalScale(d,_h,!1),this.setLocalPosition(d,Vd,!1),this.setLocalEulerAngles(d,Vd,void 0,void 0,!1),this.setLocalSkew(d,Op,void 0,!1),this.dirtyLocalTransform(d,d.transformable)}},{key:"getPosition",value:function(d){var A=d.transformable;return Y.getTranslation(A.position,this.getWorldTransform(d,A))}},{key:"getRotation",value:function(d){var A=d.transformable;return Y.getRotation(A.rotation,this.getWorldTransform(d,A))}},{key:"getScale",value:function(d){var A=d.transformable;return Y.getScaling(A.scaling,this.getWorldTransform(d,A))}},{key:"getOrigin",value:function(d){return d.getGeometryBounds(),d.transformable.origin}},{key:"getWorldTransform",value:function(d){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:d.transformable;return!A.localDirtyFlag&&!A.dirtyFlag||(d.parentNode&&d.parentNode.transformable&&this.getWorldTransform(d.parentNode),this.internalUpdateTransform(d)),A.worldTransform}},{key:"setPosition",value:function(d,A){var w,D=d.transformable;if(Qf[0]=A[0],Qf[1]=A[1],Qf[2]=(w=A[2])!==null&&w!==void 0?w:0,!V.fS(this.getPosition(d),Qf)){if(V.JG(D.position,Qf),d.parentNode===null||!d.parentNode.transformable)V.JG(D.localPosition,Qf);else{var z=d.parentNode.transformable;Y.copy(_d,z.worldTransform),Y.invert(_d,_d),V.fF(D.localPosition,Qf,_d)}this.dirtyLocalTransform(d,D)}}},{key:"translate",value:function(d,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=V.t8(Cf,A,w,D)),!V.fS(A,Vd)&&(V.IH(Cf,this.getPosition(d),A),this.setPosition(d,Cf))}},{key:"setRotation",value:function(d,A,w,D,z){var oe=d.transformable;if(typeof A=="number"&&(A=ue.al(A,w,D,z)),d.parentNode===null||!d.parentNode.transformable)this.setLocalRotation(d,A);else{var ye=this.getRotation(d.parentNode);ue.JG(Bf,ye),ue.U_(Bf,Bf),ue.Jp(oe.localRotation,Bf,A),ue.Fv(oe.localRotation,oe.localRotation),this.dirtyLocalTransform(d,oe)}}},{key:"rotate",value:function(d,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=V.al(A,w,D));var z=d.transformable;if(d.parentNode===null||!d.parentNode.transformable)this.rotateLocal(d,A);else{var oe=Bf;ue.Su(oe,A[0],A[1],A[2]);var ye=this.getRotation(d),ke=this.getRotation(d.parentNode);ue.JG(sp,ke),ue.U_(sp,sp),ue.Jp(oe,sp,oe),ue.Jp(z.localRotation,oe,ye),ue.Fv(z.localRotation,z.localRotation),this.dirtyLocalTransform(d,z)}}},{key:"setOrigin",value:function(d,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=[A,w,D]);var z=d.transformable;if(!(A[0]===z.origin[0]&&A[1]===z.origin[1]&&A[2]===z.origin[2])){var oe=z.origin;oe[0]=A[0],oe[1]=A[1],oe[2]=A[2]||0,this.dirtyLocalTransform(d,z)}}},{key:"setEulerAngles",value:function(d,A){var w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=V.al(A,w,D));var z=d.transformable;if(d.parentNode===null||!d.parentNode.transformable)this.setLocalEulerAngles(d,A);else{ue.Su(z.localRotation,A[0],A[1],A[2]);var oe=this.getRotation(d.parentNode);ue.JG(ip,ue.U_(Bf,oe)),ue.dC(z.localRotation,z.localRotation,ip),this.dirtyLocalTransform(d,z)}}},{key:"getGeometryBounds",value:function(d){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,w=d,D=w.geometry;D.dirty&&ns.styleValueRegistry.updateGeometry(d);var z=A?D.renderBounds:D.contentBounds||null;return z||new ae}},{key:"getTransformedGeometryBounds",value:function(d){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,w=arguments.length>2?arguments[2]:void 0,D=this.getGeometryBounds(d,A);if(!ae.isEmpty(D)){var z=w||new ae;return z.setFromTransformedAABB(D,this.getWorldTransform(d)),z}return null}},{key:"getBounds",value:function(d){var A=this,w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,D=d,z=D.renderable;if(!z.boundsDirty&&!w&&z.bounds)return z.bounds;if(!z.renderBoundsDirty&&w&&z.renderBounds)return z.renderBounds;var oe=w?z.renderBounds:z.bounds,ye=this.getTransformedGeometryBounds(d,w,oe),ke=d.childNodes;if(ke.forEach(function(Xt){var Rn=A.getBounds(Xt,w);Rn&&(ye?ye.add(Rn):(ye=oe||new ae,ye.update(Rn.center,Rn.halfExtents)))}),ye||(ye=new ae),w){var ot=Mf(d);if(ot){var Et=ot.parsedStyle.clipPath.getBounds(w);ye?Et&&(ye=Et.intersection(ye)):ye.update(Et.center,Et.halfExtents)}}return w?(z.renderBounds=ye,z.renderBoundsDirty=!1):(z.bounds=ye,z.boundsDirty=!1),ye}},{key:"getLocalBounds",value:function(d){if(d.parentNode){var A=pA;d.parentNode.transformable&&(A=Y.invert(kp,this.getWorldTransform(d.parentNode)));var w=this.getBounds(d);if(!ae.isEmpty(w)){var D=new ae;return D.setFromTransformedAABB(w,A),D}}return this.getBounds(d)}},{key:"getBoundingClientRect",value:function(d){var A,w,D=this.getGeometryBounds(d);ae.isEmpty(D)||(w=new ae,w.setFromTransformedAABB(D,this.getWorldTransform(d)));var z=(A=d.ownerDocument)===null||A===void 0||(A=A.defaultView)===null||A===void 0?void 0:A.getContextService().getBoundingClientRect();if(w){var oe=w.getMin(),ye=(0,B.Z)(oe,2),ke=ye[0],ot=ye[1],Et=w.getMax(),Xt=(0,B.Z)(Et,2),Rn=Xt[0],wn=Xt[1];return new Bn(ke+((z==null?void 0:z.left)||0),ot+((z==null?void 0:z.top)||0),Rn-ke,wn-ot)}return new Bn((z==null?void 0:z.left)||0,(z==null?void 0:z.top)||0,0,0)}},{key:"internalUpdateTransform",value:function(d){var A,w=(A=d.parentNode)===null||A===void 0?void 0:A.transformable;Ya(d.transformable),Ba(d.transformable,w)}},{key:"internalUpdateElement",value:function(d,A){var w,D,z,oe,ye=((w=d.ownerDocument)===null||w===void 0||(w=w.defaultView)===null||w===void 0||(w=w.getConfig())===null||w===void 0||(w=w.future)===null||w===void 0?void 0:w.experimentalAttributeUpdateOptimization)===!0,ke=A[A.length-1],ot=(ke==null?void 0:ke.transformDirty)||((D=d.transformable)===null||D===void 0?void 0:D.localDirtyFlag);if(d.transformable){var Et;(Et=d.transformable).dirtyFlag||(Et.dirtyFlag=ot)}if(this.internalUpdateTransform(d),ot){var Xt;(Xt=d.dirty)===null||Xt===void 0||Xt.call(d,!0,!0)}var Rn=((z=d.renderable)===null||z===void 0?void 0:z.boundsDirty)||((oe=d.renderable)===null||oe===void 0?void 0:oe.renderBoundsDirty);if((ot||Rn)&&(ke==null?void 0:ke.shapeUpdated)===!1&&ye)for(var wn=A.length-1;wn>=0;){var Xn,dr,gr=A[wn];if(gr.shapeUpdated)break;(Xn=(dr=gr.node).dirty)===null||Xn===void 0||Xn.call(dr,!0,!0),gr.shapeUpdated=!0,wn-=1}return ot}},{key:"syncHierarchy",value:function(d){for(var A,w,D=[d],z=d.parentNode?[{node:d.parentNode,transformDirty:((A=d.parentNode.transformable)===null||A===void 0?void 0:A.localDirtyFlag)||((w=d.parentNode.transformable)===null||w===void 0?void 0:w.dirtyFlag),shapeUpdated:!1}]:[];D.length>0;){for(var oe=D.pop(),ye=z[z.length-1];z.length>0&&oe.parentNode!==ye.node;)ye=z.pop();var ke=this.internalUpdateElement(oe,z);if(oe.childNodes.length>0){for(var ot=oe.childNodes.length-1;ot>=0;ot--)D.push(oe.childNodes[ot]);z.push({node:oe,transformDirty:ke,shapeUpdated:!1})}}}},{key:"dirtyLocalTransform",value:function(d,A){Nc(d)||A.localDirtyFlag||(A.localDirtyFlag=!0,A.dirtyFlag||this.dirtyWorldTransform(d,A))}},{key:"dirtyWorldTransform",value:function(d,A){this.dirtyWorldInternal(d,A),this.dirtyToRoot(d,!0)}},{key:"dirtyWorldInternal",value:function(d,A){var w,D=this,z=((w=d.ownerDocument)===null||w===void 0||(w=w.defaultView)===null||w===void 0||(w=w.getConfig())===null||w===void 0||(w=w.future)===null||w===void 0?void 0:w.experimentalAttributeUpdateOptimization)===!0;A.dirtyFlag||(A.dirtyFlag=!0,d.dirty(!0,!0),z||d.childNodes.forEach(function(oe){var ye=oe.transformable;D.dirtyWorldInternal(oe,ye)}))}},{key:"dirtyToRoot",value:function(d){for(var A,w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,D=d,z=((A=d.ownerDocument)===null||A===void 0||(A=A.defaultView)===null||A===void 0||(A=A.getConfig())===null||A===void 0||(A=A.future)===null||A===void 0?void 0:A.experimentalAttributeUpdateOptimization)===!0;D;){var oe,ye;if((oe=(ye=D).dirty)===null||oe===void 0||oe.call(ye,!0,!0),z)break;D=D.parentNode}w&&d.forEach(function(Et){var Xt;(Xt=Et.dirty)===null||Xt===void 0||Xt.call(Et,!0,!0)}),this.informDependentDisplayObjects(d);var ke=d.mutations||[],ot=ke.find(function(Et){return Et.type==="attributes"&&Et._boundsChangeData});ot?ot._boundsChangeData={affectChildren:ot._boundsChangeData.affectChildren||w}:(ot={type:"attributes",target:d,_boundsChangeData:{affectChildren:w}},ke.push(ot)),d.mutations=ke}},{key:"dirtyFragment",value:function(d){var A,w,D=d.transformable;D&&(D.dirtyFlag=!0,D.localDirtyFlag=!0),(A=(w=d).dirty)===null||A===void 0||A.call(w,!0,!0);for(var z=d.childNodes.length,oe=0;oe0){var w=new xh(Mo.BOUNDS_CHANGED,{detail:Array.from(A)});d.dispatchEvent(w,!0,!0)}}},{key:"updateDisplayObjectDependency",value:function(d,A,w,D){if(A&&A!==w){var z=this.displayObjectDependencyMap.get(A);if(z&&z[d]){var oe=z[d].indexOf(D);z[d].splice(oe,1)}}if(w){var ye=this.displayObjectDependencyMap.get(w);ye||(this.displayObjectDependencyMap.set(w,{}),ye=this.displayObjectDependencyMap.get(w)),ye[d]||(ye[d]=[]),ye[d].push(D)}}},{key:"informDependentDisplayObjects",value:function(d){var A,w=this,D=this.displayObjectDependencyMap.get(d);if(D){var z=(A=d.ownerDocument)===null||A===void 0||(A=A.defaultView)===null||A===void 0||(A=A.getConfig())===null||A===void 0||(A=A.future)===null||A===void 0?void 0:A.experimentalCancelEventPropagation;Object.keys(D).forEach(function(oe){D[oe].forEach(function(ye){w.dirtyToRoot(ye,!0),ye.dispatchEvent(new Th(Mo.ATTR_MODIFIED,ye,w,w,oe,Th.MODIFICATION,w,w),z,z),ye.isCustomElement&&ye.isConnected&&ye.attributeChangedCallback&&ye.attributeChangedCallback(oe,w,w)})})}}}])}(),N0=function(){function x(E){if((0,K.Z)(this,x),E<=0)throw new Error("LRU capacity must be a positive number.");this.capacity=E,this.cache=new Map}return(0,H.Z)(x,[{key:"get",value:function(d){if(this.cache.has(d)){var A=this.cache.get(d);return this.cache.delete(d),this.cache.set(d,A),A}}},{key:"put",value:function(d,A){if(this.cache.has(d)&&this.cache.delete(d),this.cache.set(d,A),this.cache.size>this.capacity){var w=this.cache.keys().next().value;this.cache.delete(w)}}},{key:"len",value:function(){return this.cache.size}},{key:"clear",value:function(){this.cache.clear()}}])}(),ud={MetricsString:"|\xC9q\xC5",BaselineSymbol:"M",BaselineMultiplier:1.4,HeightMultiplier:2,Newlines:[10,13],BreakingSpaces:[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288]},Hd=/[a-zA-Z0-9\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff!"#$%&'()*+,-./:;]/,Gp=/[!%),.:;?\]}¢°·'""†‡›℃∶、。〃〆〕〗〞﹚﹜!"%'),.:;?!]}~]/,Iv=/[$(£¥·'"〈《「『【〔〖〝﹙﹛$(.[{£¥]/,Tm=/[!),.:;?\]}¢·–—'"•"、。〆〞〕〉》」︰︱︲︳﹐﹑﹒﹓﹔﹕﹖﹘﹚﹜!),.:;?︶︸︺︼︾﹀﹂﹗]|}、]/,wg=/[([{£¥'"‵〈《「『〔〝︴﹙﹛({︵︷︹︻︽︿﹁﹃﹏]/,Cm=/[)\]}〕〉》」』】〙〗〟'"⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、:;,。.]/,L0=/[([{〔〈《「『【〘〖〝'"⦅«—...‥〳〴〵]/,Bm=/[!%),.:;?\]}¢°'"†‡℃〆〈《「『〕!%),.:;?]}]/,Sg=/[$([{£¥'"々〇〉》」〔$([{⦆¥₩#]/,ap=new RegExp("".concat(Gp.source,"|").concat(Tm.source,"|").concat(Cm.source,"|").concat(Bm.source)),Rm=new RegExp("".concat(Iv.source,"|").concat(wg.source,"|").concat(L0.source,"|").concat(Sg.source)),Eg=function(){function x(E){var d=this;(0,K.Z)(this,x),this.fontMetricsCache={},this.shouldBreakByKinsokuShorui=function(A,w){return d.isBreakingSpace(w)?!1:!!(A&&(Rm.exec(w)||ap.exec(A)))},this.trimByKinsokuShorui=function(A){var w=(0,L.Z)(A),D=w[w.length-2];if(!D)return A;var z=D[D.length-1];return w[w.length-2]=D.slice(0,-1),w[w.length-1]=z+w[w.length-1],w},this.runtime=E,this.charWidthCache=new N0(100)}return(0,H.Z)(x,[{key:"measureFont",value:function(d,A){if(this.fontMetricsCache[d])return this.fontMetricsCache[d];var w={ascent:0,descent:0,fontSize:0},D=this.runtime.offscreenCanvasCreator.getOrCreateCanvas(A),z=this.runtime.offscreenCanvasCreator.getOrCreateContext(A,{willReadFrequently:!0});z.font=d;var oe=ud.MetricsString+ud.BaselineSymbol,ye=Math.ceil(z.measureText(oe).width),ke=Math.ceil(z.measureText(ud.BaselineSymbol).width),ot=ud.HeightMultiplier*ke;ke=ke*ud.BaselineMultiplier|0,D.width=ye,D.height=ot,z.fillStyle="#f00",z.fillRect(0,0,ye,ot),z.font=d,z.textBaseline="alphabetic",z.fillStyle="#000",z.fillText(oe,0,ke);var Et=z.getImageData(0,0,ye||1,ot||1).data,Xt=Et.length,Rn=ye*4,wn=0,Xn=0,dr=!1;for(wn=0;wnke;--wn){for(var sr=0;sr$&&N>=X;)N-=1,O=O.slice(0,-1);return{lineTxt:O,txtLastCharIndex:N}}function va(O,N){if(!(ma<=0||ma>dr)){if(!sr[O]){sr[O]=gr;return}var X=$s(sr[O],N,Ts+1,dr-ma);sr[O]=X.lineTxt+gr}}for(var ba=0;ba=Rn){badr){va(Dr,ba-1),A.isOverflowing=!0;break}if(gi>0&&gi+Fc>dr){var Ga=$s(sr[Dr],ba-1,Ts+1,dr);if(Ga.txtLastCharIndex!==ba-1){if(sr[Dr]=Ga.lineTxt,Ga.txtLastCharIndex===z.length-1)break;ba=Ga.txtLastCharIndex+1,ho=z[ba],Ul=z[ba-1],Tc=z[ba+1],Fc=Zi(ho)}if(Dr+1>=Rn){va(Dr,ba-1),A.isOverflowing=!0;break}if(Ts=ba-1,Dr+=1,gi=0,sr[Dr]="",this.isBreakingSpace(ho))continue;this.canBreakInLastChar(ho)||(sr=this.trimToBreakable(sr),gi=this.sumTextWidthByCache(sr[Dr]||"",Zi)),this.shouldBreakByKinsokuShorui(ho,Tc)&&(sr=this.trimByKinsokuShorui(sr),gi+=Zi(Ul||""))}gi+=Fc,sr[Dr]+=ho}return sr.join(` +`)}},{key:"isBreakingSpace",value:function(d){return typeof d!="string"?!1:ud.BreakingSpaces.indexOf(d.charCodeAt(0))>=0}},{key:"isNewline",value:function(d){return typeof d!="string"?!1:ud.Newlines.indexOf(d.charCodeAt(0))>=0}},{key:"trimToBreakable",value:function(d){var A=(0,L.Z)(d),w=A[A.length-2],D=this.findBreakableIndex(w);if(D===-1||!w)return A;var z=w.slice(D,D+1),oe=this.isBreakingSpace(z),ye=D+1,ke=D+(oe?0:1);return A[A.length-1]+=w.slice(ye,w.length),A[A.length-2]=w.slice(0,ke),A}},{key:"canBreakInLastChar",value:function(d){return!(d&&Hd.test(d))}},{key:"sumTextWidthByCache",value:function(d,A){return d.split("").reduce(function(w,D){return w+A(D)},0)}},{key:"findBreakableIndex",value:function(d){for(var A=d.length-1;A>=0;A--)if(!Hd.test(d[A]))return A;return-1}},{key:"getFromCache",value:function(d,A,w,D){var z=w.get(d);if(typeof z!="number"){var oe=d.length*A,ye=D.measureText(d);z=ye.width+oe,w.put(d,z)}return z}},{key:"clearCache",value:function(){this.fontMetricsCache={},this.charWidthCache.clear()}}])}(),ns={},F0=function(x){var E=new yh,d=new dA;return x={},(0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)(x,sn.FRAGMENT,null),sn.CIRCLE,new Mc),sn.ELLIPSE,new C0),sn.RECT,E),sn.IMAGE,E),sn.GROUP,new B0),sn.LINE,new Dp),sn.TEXT,new Pv(ns)),sn.POLYLINE,d),sn.POLYGON,d),(0,Di.Z)((0,Di.Z)((0,Di.Z)(x,sn.PATH,new yd),sn.HTML,new R0),sn.MESH,null)}(),gf=function(x){var E=new no,d=new qu;return x={},(0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)(x,Mi.PERCENTAGE,null),Mi.NUMBER,new ad),Mi.ANGLE,new jc),Mi.DEFINED_PATH,new wl),Mi.PAINT,E),Mi.COLOR,E),Mi.FILTER,new Hf),Mi.LENGTH,d),Mi.LENGTH_PERCENTAGE,d),Mi.LENGTH_PERCENTAGE_12,new zu),(0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)((0,Di.Z)(x,Mi.LENGTH_PERCENTAGE_14,new df),Mi.COORDINATE,new qu),Mi.OFFSET_DISTANCE,new uA),Mi.OPACITY_VALUE,new dc),Mi.PATH,new mh),Mi.LIST_OF_POINTS,new qh),Mi.SHADOW_BLUR,new Dd),Mi.TEXT,new Jh),Mi.TEXT_TRANSFORM,new Zl),Mi.TRANSFORM,new _g),(0,Di.Z)((0,Di.Z)((0,Di.Z)(x,Mi.TRANSFORM_ORIGIN,new bm),Mi.Z_INDEX,new qA),Mi.MARKER,new sd)}(),mA=function(){return typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof _.g!="undefined"?_.g:{}};ns.CameraContribution=fi,ns.AnimationTimeline=null,ns.EasingFunction=null,ns.offscreenCanvasCreator=new bg,ns.sceneGraphSelector=new P0,ns.sceneGraphService=new I0(ns),ns.textService=new Eg(ns),ns.geometryUpdaterFactory=F0,ns.CSSPropertySyntaxFactory=gf,ns.styleValueRegistry=new Hc(ns),ns.layoutRegistry=null,ns.globalThis=mA(),ns.enableStyleSyntax=!0,ns.enableSizeAttenuation=!1;var Mg=0;function zp(){Mg=0}var mf=new Th(Mo.INSERTED,null,"","","",0,"",""),Gd=new Th(Mo.REMOVED,null,"","","",0,"",""),Pm=new xh(Mo.DESTROY),Tg=function(x){function E(){var d;(0,K.Z)(this,E);for(var A=arguments.length,w=new Array(A),D=0;D0&&arguments[0]!==void 0?arguments[0]:!0,w=arguments.length>1?arguments[1]:void 0;this.renderable.dirty=A,w!==void 0&&(this.renderable.boundsDirty=w,this.renderable.renderBoundsDirty=w,this.geometry.dirty=w)}},{key:"className",get:function(){return this.getAttribute("class")||""},set:function(A){this.setAttribute("class",A)}},{key:"classList",get:function(){return this.className.split(" ").filter(function(A){return A!==""})}},{key:"tagName",get:function(){return this.nodeName}},{key:"children",get:function(){return this.childNodes}},{key:"childElementCount",get:function(){return this.childNodes.length}},{key:"firstElementChild",get:function(){return this.firstChild}},{key:"lastElementChild",get:function(){return this.lastChild}},{key:"parentElement",get:function(){return this.parentNode}},{key:"nextSibling",get:function(){if(this.parentNode){var A=this.parentNode.childNodes.indexOf(this);return this.parentNode.childNodes[A+1]||null}return null}},{key:"previousSibling",get:function(){if(this.parentNode){var A=this.parentNode.childNodes.indexOf(this);return this.parentNode.childNodes[A-1]||null}return null}},{key:"cloneNode",value:function(A){throw new Error(Ge)}},{key:"appendChild",value:function(A,w){var D;if(A.destroyed)throw new Error(Ne);return ns.sceneGraphService.attach(A,this,w),(D=this.ownerDocument)!==null&&D!==void 0&&D.defaultView&&(!Nc(this)&&A.nodeName===sn.FRAGMENT?this.ownerDocument.defaultView.mountFragment(A):this.ownerDocument.defaultView.mountChildren(A)),this.isMutationObserved&&(mf.relatedNode=this,A.dispatchEvent(mf)),A}},{key:"insertBefore",value:function(A,w){if(!w)this.appendChild(A);else{A.parentElement&&A.parentElement.removeChild(A);var D=this.childNodes.indexOf(w);D===-1?this.appendChild(A):this.appendChild(A,D)}return A}},{key:"replaceChild",value:function(A,w){var D=this.childNodes.indexOf(w);return this.removeChild(w),this.appendChild(A,D),w}},{key:"removeChild",value:function(A){var w,D,z=((w=this.ownerDocument)===null||w===void 0||(w=w.defaultView)===null||w===void 0||(w=w.getConfig().future)===null||w===void 0?void 0:w.experimentalCancelEventPropagation)===!0;return Gd.relatedNode=this,A.dispatchEvent(Gd,z,z),(D=A.ownerDocument)!==null&&D!==void 0&&D.defaultView&&A.ownerDocument.defaultView.unmountChildren(A),ns.sceneGraphService.detach(A),A}},{key:"removeChildren",value:function(){for(var A=this.childNodes.length-1;A>=0;A--){var w=this.childNodes[A];this.removeChild(w)}}},{key:"destroyChildren",value:function(){for(var A=this.childNodes.length-1;A>=0;A--){var w=this.childNodes[A];w.childNodes.length>0&&w.destroyChildren(),w.destroy()}}},{key:"matches",value:function(A){return ns.sceneGraphService.matches(A,this)}},{key:"getElementById",value:function(A){return ns.sceneGraphService.querySelector("#".concat(A),this)}},{key:"getElementsByName",value:function(A){return ns.sceneGraphService.querySelectorAll('[name="'.concat(A,'"]'),this)}},{key:"getElementsByClassName",value:function(A){return ns.sceneGraphService.querySelectorAll(".".concat(A),this)}},{key:"getElementsByTagName",value:function(A){return ns.sceneGraphService.querySelectorAll(A,this)}},{key:"querySelector",value:function(A){return ns.sceneGraphService.querySelector(A,this)}},{key:"querySelectorAll",value:function(A){return ns.sceneGraphService.querySelectorAll(A,this)}},{key:"closest",value:function(A){var w=this;do{if(ns.sceneGraphService.matches(A,w))return w;w=w.parentElement}while(w!==null);return null}},{key:"find",value:function(A){var w=this,D=null;return this.forEach(function(z){return z!==w&&A(z)?(D=z,!1):!0}),D}},{key:"findAll",value:function(A){var w=this,D=[];return this.forEach(function(z){z!==w&&A(z)&&D.push(z)}),D}},{key:"after",value:function(){var A=this;if(this.parentNode){for(var w=this.parentNode.childNodes.indexOf(this),D=arguments.length,z=new Array(D),oe=0;oe0&&arguments[0]!==void 0?arguments[0]:!1;return ns.sceneGraphService.getGeometryBounds(this,A)}},{key:"getTransformedGeometryBounds",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return ns.sceneGraphService.getTransformedGeometryBounds(this,A)}},{key:"getBounds",value:function(){return ns.sceneGraphService.getBounds(this)}},{key:"getRenderBounds",value:function(){return ns.sceneGraphService.getBounds(this,!0)}},{key:"getLocalBounds",value:function(){return ns.sceneGraphService.getLocalBounds(this)}},{key:"getBoundingClientRect",value:function(){return ns.sceneGraphService.getBoundingClientRect(this)}},{key:"getClientRects",value:function(){return[this.getBoundingClientRect()]}},{key:"computedStyleMap",value:function(){return new Map(Object.entries(this.computedStyle))}},{key:"getAttributeNames",value:function(){return Object.keys(this.attributes)}},{key:"getAttribute",value:function(A){if(typeof A!="symbol"){var w=this.attributes[A];return w}}},{key:"hasAttribute",value:function(A){return this.getAttributeNames().includes(A)}},{key:"hasAttributes",value:function(){return!!this.getAttributeNames().length}},{key:"removeAttribute",value:function(A){this.setAttribute(A,null),delete this.attributes[A]}},{key:"setAttribute",value:function(A,w){this.attributes[A]=w}},{key:"getAttributeNS",value:function(A,w){throw new Error(Ge)}},{key:"getAttributeNode",value:function(A){throw new Error(Ge)}},{key:"getAttributeNodeNS",value:function(A,w){throw new Error(Ge)}},{key:"hasAttributeNS",value:function(A,w){throw new Error(Ge)}},{key:"removeAttributeNS",value:function(A,w){throw new Error(Ge)}},{key:"removeAttributeNode",value:function(A){throw new Error(Ge)}},{key:"setAttributeNS",value:function(A,w,D){throw new Error(Ge)}},{key:"setAttributeNode",value:function(A){throw new Error(Ge)}},{key:"setAttributeNodeNS",value:function(A){throw new Error(Ge)}},{key:"toggleAttribute",value:function(A,w){throw new Error(Ge)}}])}(Ko);function pc(x){return!!(x!=null&&x.nodeName)}var Im=ns.globalThis.Proxy?ns.globalThis.Proxy:function(){},Hh=new Th(Mo.ATTR_MODIFIED,null,null,null,null,Th.MODIFICATION,null,null),hd=V.Ue(),Nm=ue.Ue(),gc=function(x){function E(d){var A;return(0,K.Z)(this,E),A=(0,T.Z)(this,E),A.isCustomElement=!1,A.isMutationObserved=!1,A.activeAnimations=[],A.config=d,A.id=d.id||"",A.name=d.name||"",(d.className||d.class)&&(A.className=d.className||d.class),A.nodeName=d.type||sn.GROUP,d.initialParsedStyle&&Object.assign(A.parsedStyle,d.initialParsedStyle),A.initAttributes(d.style),ns.enableStyleSyntax&&(A.style=new Im({setProperty:function(D,z){A.setAttribute(D,z)},getPropertyValue:function(D){return A.getAttribute(D)},removeProperty:function(D){A.removeAttribute(D)},item:function(){return""}},{get:function(D,z){return D[z]!==void 0?D[z]:A.getAttribute(z)},set:function(D,z,oe){return A.setAttribute(z,oe),!0}})),A}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"destroy",value:function(){(0,Nn.Z)(E,"destroy",this,3)([]),this.getAnimations().forEach(function(A){A.cancel()})}},{key:"cloneNode",value:function(A,w){var D=(0,m.Z)({},this.attributes);for(var z in D){var oe=D[z];pc(oe)&&z!=="clipPath"&&z!=="offsetPath"&&z!=="textPath"&&(D[z]=oe.cloneNode(A)),w&&(D[z]=w(z,oe))}var ye=new this.constructor((0,m.Z)((0,m.Z)({},this.config),{},{style:D}));return ye.setLocalTransform(this.getLocalTransform()),A&&this.children.forEach(function(ke){if(!ke.style.isMarker){var ot=ke.cloneNode(A);ye.appendChild(ot)}}),ye}},{key:"initAttributes",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w={forceUpdateGeometry:!0};ns.styleValueRegistry.processProperties(this,A,w),this.dirty()}},{key:"setAttribute",value:function(A,w){var D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,z=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;(0,Pr.Z)(w)||(D||w!==this.attributes[A])&&(this.internalSetAttribute(A,w,{memoize:z}),(0,Nn.Z)(E,"setAttribute",this,3)([A,w]))}},{key:"setAttributes",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},D=w.skipDispatchAttrModifiedEvent,z=D===void 0?!1:D,oe,ye;if(z||(oe=(0,m.Z)({},this.attributes),ye=(0,m.Z)({},this.parsedStyle)),ns.styleValueRegistry.processProperties(this,A,w),this.dirty(),!z)for(var ke in A)this.dispatchAttrModifiedEvent(ke,oe[ke],A[ke],ye[ke])}},{key:"internalSetAttribute",value:function(A,w){var D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},z=this.attributes[A],oe=this.parsedStyle[A];ns.styleValueRegistry.processProperties(this,(0,Di.Z)({},A,w),D),this.dirty(),this.dispatchAttrModifiedEvent(A,z,w,oe)}},{key:"dispatchAttrModifiedEvent",value:function(A,w,D,z){var oe=this.parsedStyle[A];if(this.isConnected)if(Hh.relatedNode=this,Hh.prevValue=w,Hh.newValue=D,Hh.attrName=A,Hh.prevParsedValue=z,Hh.newParsedValue=oe,this.isMutationObserved)this.dispatchEvent(Hh);else{var ye,ke=((ye=this.ownerDocument.defaultView.getConfig().future)===null||ye===void 0?void 0:ye.experimentalCancelEventPropagation)===!0;Hh.target=this,this.ownerDocument.defaultView.dispatchEvent(Hh,!0,ke)}if(this.isCustomElement&&this.isConnected||!this.isCustomElement){var ot,Et;(ot=(Et=this).attributeChangedCallback)===null||ot===void 0||ot.call(Et,A,w,D,z,oe)}}},{key:"getBBox",value:function(){var A=this.getBounds(),w=A.getMin(),D=(0,B.Z)(w,2),z=D[0],oe=D[1],ye=A.getMax(),ke=(0,B.Z)(ye,2),ot=ke[0],Et=ke[1];return new Bn(z,oe,ot-z,Et-oe)}},{key:"setOrigin",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return ns.sceneGraphService.setOrigin(this,an(A,w,D,!1)),this}},{key:"getOrigin",value:function(){return ns.sceneGraphService.getOrigin(this)}},{key:"setPosition",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return ns.sceneGraphService.setPosition(this,an(A,w,D,!1)),this}},{key:"setLocalPosition",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return ns.sceneGraphService.setLocalPosition(this,an(A,w,D,!1)),this}},{key:"translate",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return ns.sceneGraphService.translate(this,an(A,w,D,!1)),this}},{key:"translateLocal",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return ns.sceneGraphService.translateLocal(this,an(A,w,D,!1)),this}},{key:"getPosition",value:function(){return ns.sceneGraphService.getPosition(this)}},{key:"getLocalPosition",value:function(){return ns.sceneGraphService.getLocalPosition(this)}},{key:"scale",value:function(A,w,D){return this.scaleLocal(A,w,D)}},{key:"scaleLocal",value:function(A,w,D){return typeof A=="number"&&(w=w||A,D=D||A,A=an(A,w,D,!1)),ns.sceneGraphService.scaleLocal(this,A),this}},{key:"setLocalScale",value:function(A,w,D){return typeof A=="number"&&(w=w||A,D=D||A,A=an(A,w,D,!1)),ns.sceneGraphService.setLocalScale(this,A),this}},{key:"getLocalScale",value:function(){return ns.sceneGraphService.getLocalScale(this)}},{key:"getScale",value:function(){return ns.sceneGraphService.getScale(this)}},{key:"getEulerAngles",value:function(){var A=ni(hd,ns.sceneGraphService.getWorldTransform(this)),w=(0,B.Z)(A,3),D=w[2];return hr(D)}},{key:"getLocalEulerAngles",value:function(){var A=ni(hd,ns.sceneGraphService.getLocalRotation(this)),w=(0,B.Z)(A,3),D=w[2];return hr(D)}},{key:"setEulerAngles",value:function(A){return ns.sceneGraphService.setEulerAngles(this,0,0,A),this}},{key:"setLocalEulerAngles",value:function(A){return ns.sceneGraphService.setLocalEulerAngles(this,0,0,A),this}},{key:"rotateLocal",value:function(A,w,D){return(0,Xe.Z)(w)&&(0,Xe.Z)(D)?ns.sceneGraphService.rotateLocal(this,0,0,A):ns.sceneGraphService.rotateLocal(this,A,w,D),this}},{key:"rotate",value:function(A,w,D){return(0,Xe.Z)(w)&&(0,Xe.Z)(D)?ns.sceneGraphService.rotate(this,0,0,A):ns.sceneGraphService.rotate(this,A,w,D),this}},{key:"setRotation",value:function(A,w,D,z){return ns.sceneGraphService.setRotation(this,A,w,D,z),this}},{key:"setLocalRotation",value:function(A,w,D,z){return ns.sceneGraphService.setLocalRotation(this,A,w,D,z),this}},{key:"setLocalSkew",value:function(A,w){return ns.sceneGraphService.setLocalSkew(this,A,w),this}},{key:"getRotation",value:function(){return ns.sceneGraphService.getRotation(this)}},{key:"getLocalRotation",value:function(){return ns.sceneGraphService.getLocalRotation(this)}},{key:"getLocalSkew",value:function(){return ns.sceneGraphService.getLocalSkew(this)}},{key:"getLocalTransform",value:function(){return ns.sceneGraphService.getLocalTransform(this)}},{key:"getWorldTransform",value:function(){return ns.sceneGraphService.getWorldTransform(this)}},{key:"setLocalTransform",value:function(A){return ns.sceneGraphService.setLocalTransform(this,A),this}},{key:"resetLocalTransform",value:function(){ns.sceneGraphService.resetLocalTransform(this)}},{key:"getAnimations",value:function(){return this.activeAnimations}},{key:"animate",value:function(A,w){var D,z=(D=this.ownerDocument)===null||D===void 0?void 0:D.timeline;return z?z.play(this,A,w):null}},{key:"isVisible",value:function(){var A;return((A=this.parsedStyle)===null||A===void 0?void 0:A.visibility)!=="hidden"}},{key:"interactive",get:function(){return this.isInteractive()},set:function(A){this.style.pointerEvents=A?"auto":"none"}},{key:"isInteractive",value:function(){var A;return((A=this.parsedStyle)===null||A===void 0?void 0:A.pointerEvents)!=="none"}},{key:"isCulled",value:function(){return!!(this.cullable&&this.cullable.enable&&!this.cullable.visible)}},{key:"toFront",value:function(){return this.parentNode&&(this.style.zIndex=Math.max.apply(Math,(0,L.Z)(this.parentNode.children.map(function(A){return Number(A.style.zIndex)})))+1),this}},{key:"toBack",value:function(){return this.parentNode&&(this.style.zIndex=Math.min.apply(Math,(0,L.Z)(this.parentNode.children.map(function(A){return Number(A.style.zIndex)})))-1),this}},{key:"getConfig",value:function(){return this.config}},{key:"attr",value:function(){for(var A=this,w=arguments.length,D=new Array(w),z=0;z1&&arguments[1]!==void 0?arguments[1]:0,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return this.setPosition(A,w,D),this}},{key:"move",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return this.setPosition(A,w,D),this}},{key:"setZIndex",value:function(A){return this.style.zIndex=A,this}}])}(Tg);gc.PARSED_STYLE_LIST=new Set(["class","className","clipPath","cursor","display","draggable","droppable","fill","fillOpacity","fillRule","filter","increasedLineWidthForHitTesting","lineCap","lineDash","lineDashOffset","lineJoin","lineWidth","miterLimit","hitArea","offsetDistance","offsetPath","offsetX","offsetY","opacity","pointerEvents","shadowColor","shadowType","shadowBlur","shadowOffsetX","shadowOffsetY","stroke","strokeOpacity","strokeWidth","strokeLinecap","strokeLineJoin","strokeDasharray","strokeDashoffset","transform","transformOrigin","textTransform","visibility","zIndex"]);var Cg=function(x){function E(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,K.Z)(this,E),(0,T.Z)(this,E,[(0,m.Z)({type:sn.CIRCLE},d)])}return(0,F.Z)(E,x),(0,H.Z)(E)}(gc);Cg.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["cx","cy","cz","r","isBillboard","isSizeAttenuation"]));var Nv=["style"],Gh=function(x){function E(){var d,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=A.style,D=(0,Mn.Z)(A,Nv);return(0,K.Z)(this,E),d=(0,T.Z)(this,E,[(0,m.Z)({style:w},D)]),d.isCustomElement=!0,d}return(0,F.Z)(E,x),(0,H.Z)(E)}(gc);Gh.PARSED_STYLE_LIST=new Set(["class","className","clipPath","cursor","draggable","droppable","opacity","pointerEvents","transform","transformOrigin","zIndex","visibility"]);var Wf=function(x){function E(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,K.Z)(this,E),(0,T.Z)(this,E,[(0,m.Z)({type:sn.ELLIPSE},d)])}return(0,F.Z)(E,x),(0,H.Z)(E)}(gc);Wf.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["cx","cy","cz","rx","ry","isBillboard","isSizeAttenuation"]));var Lv=function(x){function E(){return(0,K.Z)(this,E),(0,T.Z)(this,E,[{type:sn.FRAGMENT}])}return(0,F.Z)(E,x),(0,H.Z)(E)}(gc);Lv.PARSED_STYLE_LIST=new Set(["class","className"]);var zd=function(x){function E(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,K.Z)(this,E),(0,T.Z)(this,E,[(0,m.Z)({type:sn.GROUP},d)])}return(0,F.Z)(E,x),(0,H.Z)(E)}(gc);zd.PARSED_STYLE_LIST=new Set(["class","className","clipPath","cursor","draggable","droppable","opacity","pointerEvents","transform","transformOrigin","zIndex","visibility"]);var Qp=["style"],Rf=function(x){function E(){var d,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=A.style,D=(0,Mn.Z)(A,Qp);return(0,K.Z)(this,E),d=(0,T.Z)(this,E,[(0,m.Z)({type:sn.HTML,style:w},D)]),d.cullable.enable=!1,d}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"getDomElement",value:function(){return this.parsedStyle.$el}},{key:"getClientRects",value:function(){return[this.getBoundingClientRect()]}},{key:"getLocalBounds",value:function(){if(this.parentNode){var A=Y.invert(Y.create(),this.parentNode.getWorldTransform()),w=this.getBounds();if(!ae.isEmpty(w)){var D=new ae;return D.setFromTransformedAABB(w,A),D}}return this.getBounds()}}])}(gc);Rf.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["x","y","$el","innerHTML","width","height"]));var Pf=function(x){function E(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,K.Z)(this,E),(0,T.Z)(this,E,[(0,m.Z)({type:sn.IMAGE},d)])}return(0,F.Z)(E,x),(0,H.Z)(E)}(gc);Pf.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["x","y","z","src","width","height","isBillboard","billboardRotation","isSizeAttenuation","keepAspectRatio"]));var Lm=["style"],Bg=function(x){function E(){var d,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=A.style,D=(0,Mn.Z)(A,Lm);(0,K.Z)(this,E),d=(0,T.Z)(this,E,[(0,m.Z)({type:sn.LINE,style:(0,m.Z)({x1:0,y1:0,x2:0,y2:0,z1:0,z2:0},w)},D)]),d.markerStartAngle=0,d.markerEndAngle=0;var z=d.parsedStyle,oe=z.markerStart,ye=z.markerEnd;return oe&&pc(oe)&&(d.markerStartAngle=oe.getLocalEulerAngles(),d.appendChild(oe)),ye&&pc(ye)&&(d.markerEndAngle=ye.getLocalEulerAngles(),d.appendChild(ye)),d.transformMarker(!0),d.transformMarker(!1),d}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"attributeChangedCallback",value:function(A,w,D,z,oe){A==="x1"||A==="y1"||A==="x2"||A==="y2"||A==="markerStartOffset"||A==="markerEndOffset"?(this.transformMarker(!0),this.transformMarker(!1)):A==="markerStart"?(z&&pc(z)&&(this.markerStartAngle=0,z.remove()),oe&&pc(oe)&&(this.markerStartAngle=oe.getLocalEulerAngles(),this.appendChild(oe),this.transformMarker(!0))):A==="markerEnd"&&(z&&pc(z)&&(this.markerEndAngle=0,z.remove()),oe&&pc(oe)&&(this.markerEndAngle=oe.getLocalEulerAngles(),this.appendChild(oe),this.transformMarker(!1)))}},{key:"transformMarker",value:function(A){var w=this.parsedStyle,D=w.markerStart,z=w.markerEnd,oe=w.markerStartOffset,ye=w.markerEndOffset,ke=w.x1,ot=w.x2,Et=w.y1,Xt=w.y2,Rn=A?D:z;if(!(!Rn||!pc(Rn))){var wn=0,Xn,dr,gr,sr,Dr,gi;A?(gr=ke,sr=Et,Xn=ot-ke,dr=Xt-Et,Dr=oe||0,gi=this.markerStartAngle):(gr=ot,sr=Xt,Xn=ke-ot,dr=Et-Xt,Dr=ye||0,gi=this.markerEndAngle),wn=Math.atan2(dr,Xn),Rn.setLocalEulerAngles(wn*180/Math.PI+gi),Rn.setLocalPosition(gr+Math.cos(wn)*Dr,sr+Math.sin(wn)*Dr)}}},{key:"getPoint",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,D=this.parsedStyle,z=D.x1,oe=D.y1,ye=D.x2,ke=D.y2,ot=(0,jt.U4)(z,oe,ye,ke,A),Et=ot.x,Xt=ot.y,Rn=V.fF(V.Ue(),V.al(Et,Xt,0),w?this.getWorldTransform():this.getLocalTransform());return new bt(Rn[0],Rn[1])}},{key:"getPointAtLength",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.getPoint(A/this.getTotalLength(),w)}},{key:"getTotalLength",value:function(){var A=this.parsedStyle,w=A.x1,D=A.y1,z=A.x2,oe=A.y2;return(0,jt.Xk)(w,D,z,oe)}}])}(gc);Bg.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["x1","y1","x2","y2","z1","z2","isBillboard","isSizeAttenuation","markerStart","markerEnd","markerStartOffset","markerEndOffset"]));var Wp=["style"],Fm=function(x){function E(){var d,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=A.style,D=(0,Mn.Z)(A,Wp);(0,K.Z)(this,E),d=(0,T.Z)(this,E,[(0,m.Z)({type:sn.PATH,style:w,initialParsedStyle:{miterLimit:4,d:(0,m.Z)({},Wa)}},D)]),d.markerStartAngle=0,d.markerEndAngle=0,d.markerMidList=[];var z=d.parsedStyle,oe=z.markerStart,ye=z.markerEnd,ke=z.markerMid;return oe&&pc(oe)&&(d.markerStartAngle=oe.getLocalEulerAngles(),d.appendChild(oe)),ke&&pc(ke)&&d.placeMarkerMid(ke),ye&&pc(ye)&&(d.markerEndAngle=ye.getLocalEulerAngles(),d.appendChild(ye)),d.transformMarker(!0),d.transformMarker(!1),d}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"attributeChangedCallback",value:function(A,w,D,z,oe){A==="d"?(this.transformMarker(!0),this.transformMarker(!1),this.placeMarkerMid(this.parsedStyle.markerMid)):A==="markerStartOffset"||A==="markerEndOffset"?(this.transformMarker(!0),this.transformMarker(!1)):A==="markerStart"?(z&&pc(z)&&(this.markerStartAngle=0,z.remove()),oe&&pc(oe)&&(this.markerStartAngle=oe.getLocalEulerAngles(),this.appendChild(oe),this.transformMarker(!0))):A==="markerEnd"?(z&&pc(z)&&(this.markerEndAngle=0,z.remove()),oe&&pc(oe)&&(this.markerEndAngle=oe.getLocalEulerAngles(),this.appendChild(oe),this.transformMarker(!1))):A==="markerMid"&&this.placeMarkerMid(oe)}},{key:"transformMarker",value:function(A){var w=this.parsedStyle,D=w.markerStart,z=w.markerEnd,oe=w.markerStartOffset,ye=w.markerEndOffset,ke=A?D:z;if(!(!ke||!pc(ke))){var ot=0,Et,Xt,Rn,wn,Xn,dr;if(A){var gr=this.getStartTangent(),sr=(0,B.Z)(gr,2),Dr=sr[0],gi=sr[1];Rn=gi[0],wn=gi[1],Et=Dr[0]-gi[0],Xt=Dr[1]-gi[1],Xn=oe||0,dr=this.markerStartAngle}else{var Ts=this.getEndTangent(),Rs=(0,B.Z)(Ts,2),Li=Rs[0],Zi=Rs[1];Rn=Zi[0],wn=Zi[1],Et=Li[0]-Zi[0],Xt=Li[1]-Zi[1],Xn=ye||0,dr=this.markerEndAngle}ot=Math.atan2(Xt,Et),ke.setLocalEulerAngles(ot*180/Math.PI+dr),ke.setLocalPosition(Rn+Math.cos(ot)*Xn,wn+Math.sin(ot)*Xn)}}},{key:"placeMarkerMid",value:function(A){var w=this.parsedStyle.d.segments;if(this.markerMidList.forEach(function(ot){ot.remove()}),A&&pc(A))for(var D=1;D1&&arguments[1]!==void 0?arguments[1]:!1,D=this.parsedStyle.d.absolutePath,z=gs(D,A),oe=z.x,ye=z.y,ke=V.fF(V.Ue(),V.al(oe,ye,0),w?this.getWorldTransform():this.getLocalTransform());return new bt(ke[0],ke[1])}},{key:"getPoint",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.getPointAtLength(A*yi(this),w)}},{key:"getStartTangent",value:function(){var A=this.parsedStyle.d.segments,w=[];if(A.length>1){var D=A[0].currentPoint,z=A[1].currentPoint,oe=A[1].startTangent;w=[],oe?(w.push([D[0]-oe[0],D[1]-oe[1]]),w.push([D[0],D[1]])):(w.push([z[0],z[1]]),w.push([D[0],D[1]]))}return w}},{key:"getEndTangent",value:function(){var A=this.parsedStyle.d.segments,w=A.length,D=[];if(w>1){var z=A[w-2].currentPoint,oe=A[w-1].currentPoint,ye=A[w-1].endTangent;D=[],ye?(D.push([oe[0]-ye[0],oe[1]-ye[1]]),D.push([oe[0],oe[1]])):(D.push([z[0],z[1]]),D.push([oe[0],oe[1]]))}return D}}])}(gc);Fm.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["d","markerStart","markerMid","markerEnd","markerStartOffset","markerEndOffset","isBillboard","isSizeAttenuation"]));var Pu=["style"],hu=function(x){function E(){var d,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=A.style,D=(0,Mn.Z)(A,Pu);(0,K.Z)(this,E),d=(0,T.Z)(this,E,[(0,m.Z)({type:sn.POLYGON,style:w,initialParsedStyle:{points:{points:[],totalLength:0,segments:[]},miterLimit:4,isClosed:!0}},D)]),d.markerStartAngle=0,d.markerEndAngle=0,d.markerMidList=[];var z=d.parsedStyle,oe=z.markerStart,ye=z.markerEnd,ke=z.markerMid;return oe&&pc(oe)&&(d.markerStartAngle=oe.getLocalEulerAngles(),d.appendChild(oe)),ke&&pc(ke)&&d.placeMarkerMid(ke),ye&&pc(ye)&&(d.markerEndAngle=ye.getLocalEulerAngles(),d.appendChild(ye)),d.transformMarker(!0),d.transformMarker(!1),d}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"attributeChangedCallback",value:function(A,w,D,z,oe){A==="points"?(this.transformMarker(!0),this.transformMarker(!1),this.placeMarkerMid(this.parsedStyle.markerMid)):A==="markerStartOffset"||A==="markerEndOffset"?(this.transformMarker(!0),this.transformMarker(!1)):A==="markerStart"?(z&&pc(z)&&(this.markerStartAngle=0,z.remove()),oe&&pc(oe)&&(this.markerStartAngle=oe.getLocalEulerAngles(),this.appendChild(oe),this.transformMarker(!0))):A==="markerEnd"?(z&&pc(z)&&(this.markerEndAngle=0,z.remove()),oe&&pc(oe)&&(this.markerEndAngle=oe.getLocalEulerAngles(),this.appendChild(oe),this.transformMarker(!1))):A==="markerMid"&&this.placeMarkerMid(oe)}},{key:"transformMarker",value:function(A){var w=this.parsedStyle,D=w.markerStart,z=w.markerEnd,oe=w.markerStartOffset,ye=w.markerEndOffset,ke=w.points,ot=ke||{},Et=ot.points,Xt=A?D:z;if(!(!Xt||!pc(Xt)||!Et)){var Rn=0,wn,Xn,dr,gr,sr,Dr;if(dr=Et[0][0],gr=Et[0][1],A)wn=Et[1][0]-Et[0][0],Xn=Et[1][1]-Et[0][1],sr=oe||0,Dr=this.markerStartAngle;else{var gi=Et.length;this.parsedStyle.isClosed?(wn=Et[gi-1][0]-Et[0][0],Xn=Et[gi-1][1]-Et[0][1]):(dr=Et[gi-1][0],gr=Et[gi-1][1],wn=Et[gi-2][0]-Et[gi-1][0],Xn=Et[gi-2][1]-Et[gi-1][1]),sr=ye||0,Dr=this.markerEndAngle}Rn=Math.atan2(Xn,wn),Xt.setLocalEulerAngles(Rn*180/Math.PI+Dr),Xt.setLocalPosition(dr+Math.cos(Rn)*sr,gr+Math.sin(Rn)*sr)}}},{key:"placeMarkerMid",value:function(A){var w=this.parsedStyle.points,D=w||{},z=D.points;if(this.markerMidList.forEach(function(Et){Et.remove()}),this.markerMidList=[],A&&pc(A)&&z)for(var oe=1;oe<(this.parsedStyle.isClosed?z.length:z.length-1);oe++){var ye=z[oe][0],ke=z[oe][1],ot=oe===1?A:A.cloneNode(!0);this.markerMidList.push(ot),this.appendChild(ot),ot.setLocalPosition(ye,ke)}}}])}(gc);hu.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["points","markerStart","markerMid","markerEnd","markerStartOffset","markerEndOffset","isClosed","isBillboard","isSizeAttenuation"]));var Zp=["style"],fd=function(x){function E(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=d.style,w=(0,Mn.Z)(d,Zp);return(0,K.Z)(this,E),(0,T.Z)(this,E,[(0,m.Z)({type:sn.POLYLINE,style:A,initialParsedStyle:{points:{points:[],totalLength:0,segments:[]},miterLimit:4,isClosed:!1}},w)])}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"getTotalLength",value:function(){return Or(this)}},{key:"getPointAtLength",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.getPoint(A/this.getTotalLength(),w)}},{key:"getPoint",value:function(A){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,D=this.parsedStyle.points.points;if(this.parsedStyle.points.segments.length===0){var z=[],oe=0,ye,ke,ot=this.getTotalLength();D.forEach(function(gr,sr){D[sr+1]&&(ye=[0,0],ye[0]=oe/ot,ke=(0,jt.Xk)(gr[0],gr[1],D[sr+1][0],D[sr+1][1]),oe+=ke,ye[1]=oe/ot,z.push(ye))}),this.parsedStyle.points.segments=z}var Et=0,Xt=0;this.parsedStyle.points.segments.forEach(function(gr,sr){A>=gr[0]&&A<=gr[1]&&(Et=(A-gr[0])/(gr[1]-gr[0]),Xt=sr)});var Rn=(0,jt.U4)(D[Xt][0],D[Xt][1],D[Xt+1][0],D[Xt+1][1],Et),wn=Rn.x,Xn=Rn.y,dr=V.fF(V.Ue(),V.al(wn,Xn,0),w?this.getWorldTransform():this.getLocalTransform());return new bt(dr[0],dr[1])}},{key:"getStartTangent",value:function(){var A=this.parsedStyle.points.points,w=[];return w.push([A[1][0],A[1][1]]),w.push([A[0][0],A[0][1]]),w}},{key:"getEndTangent",value:function(){var A=this.parsedStyle.points.points,w=A.length-1,D=[];return D.push([A[w-1][0],A[w-1][1]]),D.push([A[w][0],A[w][1]]),D}}])}(hu);fd.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(hu.PARSED_STYLE_LIST),["points","markerStart","markerMid","markerEnd","markerStartOffset","markerEndOffset","isBillboard"]));var bd=function(x){function E(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,K.Z)(this,E),(0,T.Z)(this,E,[(0,m.Z)({type:sn.RECT},d)])}return(0,F.Z)(E,x),(0,H.Z)(E)}(gc);bd.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["x","y","z","width","height","isBillboard","isSizeAttenuation","radius"]));var vA=["style"],bh=function(x){function E(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=d.style,w=(0,Mn.Z)(d,vA);return(0,K.Z)(this,E),(0,T.Z)(this,E,[(0,m.Z)({type:sn.TEXT,style:(0,m.Z)({fill:"black"},A)},w)])}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"getComputedTextLength",value:function(){var A;return this.getGeometryBounds(),((A=this.parsedStyle.metrics)===null||A===void 0?void 0:A.maxLineWidth)||0}},{key:"getLineBoundingRects",value:function(){var A;return this.getGeometryBounds(),((A=this.parsedStyle.metrics)===null||A===void 0?void 0:A.lineMetrics)||[]}},{key:"isOverflowing",value:function(){return this.getGeometryBounds(),!!this.parsedStyle.isOverflowing}}])}(gc);bh.PARSED_STYLE_LIST=new Set([].concat((0,L.Z)(gc.PARSED_STYLE_LIST),["x","y","z","isBillboard","billboardRotation","isSizeAttenuation","text","textAlign","textBaseline","fontStyle","fontSize","fontFamily","fontWeight","fontVariant","lineHeight","letterSpacing","leading","wordWrap","wordWrapWidth","maxLines","textOverflow","isOverflowing","textPath","textDecorationLine","textDecorationColor","textDecorationStyle","textDecorationThickness","textPathSide","textPathStartOffset","metrics","dx","dy"]));var Kp=function(){function x(){(0,K.Z)(this,x),this.registry={},this.define(sn.CIRCLE,Cg),this.define(sn.ELLIPSE,Wf),this.define(sn.RECT,bd),this.define(sn.IMAGE,Pf),this.define(sn.LINE,Bg),this.define(sn.GROUP,zd),this.define(sn.PATH,Fm),this.define(sn.POLYGON,hu),this.define(sn.POLYLINE,fd),this.define(sn.TEXT,bh),this.define(sn.HTML,Rf)}return(0,H.Z)(x,[{key:"define",value:function(d,A){this.registry[d]=A}},{key:"get",value:function(d){return this.registry[d]}}])}(),U0={number:function(E){return new ul(E)},percent:function(E){return new ul(E,"%")},px:function(E){return new ul(E,"px")},em:function(E){return new ul(E,"em")},rem:function(E){return new ul(E,"rem")},deg:function(E){return new ul(E,"deg")},grad:function(E){return new ul(E,"grad")},rad:function(E){return new ul(E,"rad")},turn:function(E){return new ul(E,"turn")},s:function(E){return new ul(E,"s")},ms:function(E){return new ul(E,"ms")},registerProperty:function(E){var d=E.name,A=E.inherits,w=E.interpolable,D=E.initialValue,z=E.syntax;ns.styleValueRegistry.registerMetadata({n:d,inh:A,int:w,d:D,syntax:z})},registerLayout:function(E,d){ns.layoutRegistry.registerLayout(E,d)}},D0=function(x){function E(){var d;(0,K.Z)(this,E),d=(0,T.Z)(this,E),d.defaultView=null,d.ownerDocument=null,d.nodeName="document";try{d.timeline=new ns.AnimationTimeline(d)}catch(w){}var A={};return xo.forEach(function(w){var D=w.n,z=w.inh,oe=w.d;z&&oe&&(A[D]=(0,Fi.Z)(oe)?oe(sn.GROUP):oe)}),d.documentElement=new zd({id:"g-root",style:A}),d.documentElement.ownerDocument=d,d.documentElement.parentNode=d,d.childNodes=[d.documentElement],d}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"children",get:function(){return this.childNodes}},{key:"childElementCount",get:function(){return this.childNodes.length}},{key:"firstElementChild",get:function(){return this.firstChild}},{key:"lastElementChild",get:function(){return this.lastChild}},{key:"createElement",value:function(A,w){if(A==="svg")return this.documentElement;var D=this.defaultView.customElements.get(A);D||(console.warn("Unsupported tagName: ",A),D=A==="tspan"?bh:zd);var z=new D(w);return z.ownerDocument=this,z}},{key:"createElementNS",value:function(A,w,D){return this.createElement(w,D)}},{key:"cloneNode",value:function(A){throw new Error(Ge)}},{key:"destroy",value:function(){try{this.documentElement.destroyChildren(),this.timeline.destroy()}catch(A){}}},{key:"elementsFromBBox",value:function(A,w,D,z){var oe=[],ye=function(ot){if(!(!ot.isInteractive()||ot.isCulled())){var Et=ot.parsedStyle.pointerEvents,Xt=Et===void 0?"auto":Et,Rn=["auto","visiblepainted","visiblefill","visiblestroke","visible"].includes(Xt);if(!Rn||ot.isVisible()){var wn=ot.getTransformedGeometryBounds(!0);wn&&!ae.isEmpty(wn)&&wn.max[0]>=A&&wn.min[0]<=D&&wn.max[1]>=w&&wn.min[1]<=z&&oe.push(ot)}ot.childNodes&&ot.childNodes.forEach(function(Xn){Xn instanceof gc&&ye(Xn)})}};return ye(this.documentElement),oe.sort(function(ke,ot){return ot.sortable.renderOrder-ke.sortable.renderOrder}),oe}},{key:"elementFromPointSync",value:function(A,w){var D=this.defaultView.canvas2Viewport({x:A,y:w}),z=D.x,oe=D.y,ye=this.defaultView.getConfig(),ke=ye.width,ot=ye.height;if(z<0||oe<0||z>ke||oe>ot)return null;var Et=this.defaultView.viewport2Client({x:z,y:oe}),Xt=Et.x,Rn=Et.y,wn=this.defaultView.getRenderingService().hooks.pickSync.call({topmost:!0,position:{x:A,y:w,viewportX:z,viewportY:oe,clientX:Xt,clientY:Rn},picked:[]}),Xn=wn.picked;return Xn&&Xn[0]||this.documentElement}},{key:"elementFromPoint",value:function(){var d=(0,pt.Z)((0,ct.Z)().mark(function w(D,z){var oe,ye,ke,ot,Et,Xt,Rn,wn,Xn,dr,gr;return(0,ct.Z)().wrap(function(sr){for(;;)switch(sr.prev=sr.next){case 0:if(oe=this.defaultView.canvas2Viewport({x:D,y:z}),ye=oe.x,ke=oe.y,ot=this.defaultView.getConfig(),Et=ot.width,Xt=ot.height,!(ye<0||ke<0||ye>Et||ke>Xt)){sr.next=1;break}return sr.abrupt("return",null);case 1:return Rn=this.defaultView.viewport2Client({x:ye,y:ke}),wn=Rn.x,Xn=Rn.y,sr.next=2,this.defaultView.getRenderingService().hooks.pick.promise({topmost:!0,position:{x:D,y:z,viewportX:ye,viewportY:ke,clientX:wn,clientY:Xn},picked:[]});case 2:return dr=sr.sent,gr=dr.picked,sr.abrupt("return",gr&&gr[0]||this.documentElement);case 3:case"end":return sr.stop()}},w,this)}));function A(w,D){return d.apply(this,arguments)}return A}()},{key:"elementsFromPointSync",value:function(A,w){var D=this.defaultView.canvas2Viewport({x:A,y:w}),z=D.x,oe=D.y,ye=this.defaultView.getConfig(),ke=ye.width,ot=ye.height;if(z<0||oe<0||z>ke||oe>ot)return[];var Et=this.defaultView.viewport2Client({x:z,y:oe}),Xt=Et.x,Rn=Et.y,wn=this.defaultView.getRenderingService().hooks.pickSync.call({topmost:!1,position:{x:A,y:w,viewportX:z,viewportY:oe,clientX:Xt,clientY:Rn},picked:[]}),Xn=wn.picked;return Xn[Xn.length-1]!==this.documentElement&&Xn.push(this.documentElement),Xn}},{key:"elementsFromPoint",value:function(){var d=(0,pt.Z)((0,ct.Z)().mark(function w(D,z){var oe,ye,ke,ot,Et,Xt,Rn,wn,Xn,dr,gr;return(0,ct.Z)().wrap(function(sr){for(;;)switch(sr.prev=sr.next){case 0:if(oe=this.defaultView.canvas2Viewport({x:D,y:z}),ye=oe.x,ke=oe.y,ot=this.defaultView.getConfig(),Et=ot.width,Xt=ot.height,!(ye<0||ke<0||ye>Et||ke>Xt)){sr.next=1;break}return sr.abrupt("return",[]);case 1:return Rn=this.defaultView.viewport2Client({x:ye,y:ke}),wn=Rn.x,Xn=Rn.y,sr.next=2,this.defaultView.getRenderingService().hooks.pick.promise({topmost:!1,position:{x:D,y:z,viewportX:ye,viewportY:ke,clientX:wn,clientY:Xn},picked:[]});case 2:return dr=sr.sent,gr=dr.picked,gr[gr.length-1]!==this.documentElement&&gr.push(this.documentElement),sr.abrupt("return",gr);case 3:case"end":return sr.stop()}},w,this)}));function A(w,D){return d.apply(this,arguments)}return A}()},{key:"appendChild",value:function(A,w){throw new Error($e)}},{key:"insertBefore",value:function(A,w){throw new Error($e)}},{key:"removeChild",value:function(A,w){throw new Error($e)}},{key:"replaceChild",value:function(A,w,D){throw new Error($e)}},{key:"append",value:function(){throw new Error($e)}},{key:"prepend",value:function(){throw new Error($e)}},{key:"getElementById",value:function(A){return this.documentElement.getElementById(A)}},{key:"getElementsByName",value:function(A){return this.documentElement.getElementsByName(A)}},{key:"getElementsByTagName",value:function(A){return this.documentElement.getElementsByTagName(A)}},{key:"getElementsByClassName",value:function(A){return this.documentElement.getElementsByClassName(A)}},{key:"querySelector",value:function(A){return this.documentElement.querySelector(A)}},{key:"querySelectorAll",value:function(A){return this.documentElement.querySelectorAll(A)}},{key:"find",value:function(A){return this.documentElement.find(A)}},{key:"findAll",value:function(A){return this.documentElement.findAll(A)}}])}(Ko),$p=function(){function x(E){(0,K.Z)(this,x),this.strategies=E}return(0,H.Z)(x,[{key:"apply",value:function(d){var A=d.config,w=d.camera,D=d.renderingService,z=d.renderingContext,oe=this.strategies;D.hooks.cull.tap(x.tag,function(ye){if(ye){var ke,ot=ye.cullable;if(oe.length===0?ot.visible=z.unculledEntities.indexOf(ye.entity)>-1:ot.visible=oe.every(function(Xt){return Xt.isVisible(w,ye)}),!ye.isCulled()&&ye.isVisible())return ye;var Et=((ke=A.future)===null||ke===void 0?void 0:ke.experimentalCancelEventPropagation)===!0;return ye.dispatchEvent(new xh(Mo.CULLED),Et,Et),null}return ye}),D.hooks.afterRender.tap(x.tag,function(ye){ye.cullable.visibilityPlaneMask=-1})}}])}();$p.tag="Culling";var Iu=function(){function x(){var E=this;(0,K.Z)(this,x),this.autoPreventDefault=!1,this.rootPointerEvent=new AA(null),this.rootWheelEvent=new cd(null),this.onPointerMove=function(d){var A,w=(A=E.context.renderingContext.root)===null||A===void 0||(A=A.ownerDocument)===null||A===void 0?void 0:A.defaultView;if(!(w.supportsTouchEvents&&d.pointerType==="touch")){var D=E.normalizeToPointerEvent(d,w),z=(0,zt.Z)(D),oe;try{for(z.s();!(oe=z.n()).done;){var ye=oe.value,ke=E.bootstrapEvent(E.rootPointerEvent,ye,w,d);E.context.eventService.mapEvent(ke)}}catch(ot){z.e(ot)}finally{z.f()}E.setCursor(E.context.eventService.cursor)}},this.onClick=function(d){var A,w=(A=E.context.renderingContext.root)===null||A===void 0||(A=A.ownerDocument)===null||A===void 0?void 0:A.defaultView,D=E.normalizeToPointerEvent(d,w),z=(0,zt.Z)(D),oe;try{for(z.s();!(oe=z.n()).done;){var ye=oe.value,ke=E.bootstrapEvent(E.rootPointerEvent,ye,w,d);E.context.eventService.mapEvent(ke)}}catch(ot){z.e(ot)}finally{z.f()}E.setCursor(E.context.eventService.cursor)}}return(0,H.Z)(x,[{key:"apply",value:function(d){var A=this;this.context=d;var w=d.renderingService,D=this.context.renderingContext.root.ownerDocument.defaultView;this.context.eventService.setPickHandler(function(z){var oe=A.context.renderingService.hooks.pickSync.call({position:z,picked:[],topmost:!0}),ye=oe.picked;return ye[0]||null}),w.hooks.pointerWheel.tap(x.tag,function(z){var oe=A.normalizeWheelEvent(z);A.context.eventService.mapEvent(oe)}),w.hooks.pointerDown.tap(x.tag,function(z){if(!(D.supportsTouchEvents&&z.pointerType==="touch")){var oe=A.normalizeToPointerEvent(z,D);if(A.autoPreventDefault&&oe[0].isNormalized){var ye=z.cancelable||!("cancelable"in z);ye&&z.preventDefault()}var ke=(0,zt.Z)(oe),ot;try{for(ke.s();!(ot=ke.n()).done;){var Et=ot.value,Xt=A.bootstrapEvent(A.rootPointerEvent,Et,D,z);A.context.eventService.mapEvent(Xt)}}catch(Rn){ke.e(Rn)}finally{ke.f()}A.setCursor(A.context.eventService.cursor)}}),w.hooks.pointerUp.tap(x.tag,function(z){if(!(D.supportsTouchEvents&&z.pointerType==="touch")){var oe=A.context.contextService.getDomElement(),ye=A.context.eventService.isNativeEventFromCanvas(oe,z),ke=ye?"":"outside",ot=A.normalizeToPointerEvent(z,D),Et=(0,zt.Z)(ot),Xt;try{for(Et.s();!(Xt=Et.n()).done;){var Rn=Xt.value,wn=A.bootstrapEvent(A.rootPointerEvent,Rn,D,z);wn.type+=ke,A.context.eventService.mapEvent(wn)}}catch(Xn){Et.e(Xn)}finally{Et.f()}A.setCursor(A.context.eventService.cursor)}}),w.hooks.pointerMove.tap(x.tag,this.onPointerMove),w.hooks.pointerOver.tap(x.tag,this.onPointerMove),w.hooks.pointerOut.tap(x.tag,this.onPointerMove),w.hooks.click.tap(x.tag,this.onClick),w.hooks.pointerCancel.tap(x.tag,function(z){var oe=A.normalizeToPointerEvent(z,D),ye=(0,zt.Z)(oe),ke;try{for(ye.s();!(ke=ye.n()).done;){var ot=ke.value,Et=A.bootstrapEvent(A.rootPointerEvent,ot,D,z);A.context.eventService.mapEvent(Et)}}catch(Xt){ye.e(Xt)}finally{ye.f()}A.setCursor(A.context.eventService.cursor)})}},{key:"bootstrapEvent",value:function(d,A,w,D){d.view=w,d.originalEvent=null,d.nativeEvent=D,d.pointerId=A.pointerId,d.width=A.width,d.height=A.height,d.isPrimary=A.isPrimary,d.pointerType=A.pointerType,d.pressure=A.pressure,d.tangentialPressure=A.tangentialPressure,d.tiltX=A.tiltX,d.tiltY=A.tiltY,d.twist=A.twist,this.transferMouseData(d,A);var z=this.context.eventService.client2Viewport({x:A.clientX,y:A.clientY}),oe=z.x,ye=z.y;d.viewport.x=oe,d.viewport.y=ye;var ke=this.context.eventService.viewport2Canvas(d.viewport),ot=ke.x,Et=ke.y;return d.canvas.x=ot,d.canvas.y=Et,d.global.copyFrom(d.canvas),d.offset.copyFrom(d.canvas),d.isTrusted=D.isTrusted,d.type==="pointerleave"&&(d.type="pointerout"),d.type.startsWith("mouse")&&(d.type=d.type.replace("mouse","pointer")),d.type.startsWith("touch")&&(d.type=$l[d.type]||d.type),d}},{key:"normalizeWheelEvent",value:function(d){var A=this.rootWheelEvent;this.transferMouseData(A,d),A.deltaMode=d.deltaMode,A.deltaX=d.deltaX,A.deltaY=d.deltaY,A.deltaZ=d.deltaZ;var w=this.context.eventService.client2Viewport({x:d.clientX,y:d.clientY}),D=w.x,z=w.y;A.viewport.x=D,A.viewport.y=z;var oe=this.context.eventService.viewport2Canvas(A.viewport),ye=oe.x,ke=oe.y;return A.canvas.x=ye,A.canvas.y=ke,A.global.copyFrom(A.canvas),A.offset.copyFrom(A.canvas),A.nativeEvent=d,A.type=d.type,A}},{key:"transferMouseData",value:function(d,A){d.isTrusted=A.isTrusted,d.srcElement=A.srcElement,d.timeStamp=Od.now(),d.type=A.type,d.altKey=A.altKey,d.metaKey=A.metaKey,d.shiftKey=A.shiftKey,d.ctrlKey=A.ctrlKey,d.button=A.button,d.buttons=A.buttons,d.client.x=A.clientX,d.client.y=A.clientY,d.movement.x=A.movementX,d.movement.y=A.movementY,d.page.x=A.pageX,d.page.y=A.pageY,d.screen.x=A.screenX,d.screen.y=A.screenY,d.relatedTarget=null}},{key:"setCursor",value:function(d){this.context.contextService.applyCursorStyle(d||this.context.config.cursor||"default")}},{key:"normalizeToPointerEvent",value:function(d,A){var w=[];if(A.isTouchEvent(d))for(var D=0;D-1,ye=0,ke=D.length;ye=1?Math.ceil($s):1,D&&(Zi=oe||hA(D)||D.width/$s,ma=ye||vh(D)||D.height/$s),A.customElements=new Kp,A.devicePixelRatio=$s,A.requestAnimationFrame=dr!=null?dr:E0.bind(ns.globalThis),A.cancelAnimationFrame=gr!=null?gr:xg.bind(ns.globalThis),A.createImage=sr!=null?sr:function(){return new window.Image},A.supportsTouchEvents=Dr!=null?Dr:"ontouchstart"in ns.globalThis,A.supportsPointerEvents=gi!=null?gi:!!ns.globalThis.PointerEvent,A.isTouchEvent=Ts!=null?Ts:function(va){return A.supportsTouchEvents&&va instanceof ns.globalThis.TouchEvent},A.isMouseEvent=Rs!=null?Rs:function(va){return!ns.globalThis.MouseEvent||va instanceof ns.globalThis.MouseEvent&&(!A.supportsPointerEvents||!(va instanceof ns.globalThis.PointerEvent))},wn&&(ns.offscreenCanvas=wn),A.document=new D0,A.document.defaultView=A,Et||Fl(w,A,Rn),A.initRenderingContext((0,m.Z)((0,m.Z)({},d),{},{width:Zi,height:ma,background:ke!=null?ke:"transparent",cursor:ot!=null?ot:"default",cleanUpOnDestroy:Rn,devicePixelRatio:$s,requestAnimationFrame:A.requestAnimationFrame,cancelAnimationFrame:A.cancelAnimationFrame,createImage:A.createImage,supportsTouchEvents:A.supportsTouchEvents,supportsPointerEvents:A.supportsPointerEvents,isTouchEvent:A.isTouchEvent,isMouseEvent:A.isMouseEvent,dblClickSpeed:Li!=null?Li:200})),A.initDefaultCamera(Zi,ma,z.clipSpaceNearZ),A.initRenderer(z,!0),A}return(0,F.Z)(E,x),(0,H.Z)(E,[{key:"initRenderingContext",value:function(A){this.context.config=A,this.context.renderingContext={root:this.document.documentElement,unculledEntities:[],renderListCurrentFrame:[],renderReasons:new Set,force:!1,dirty:!1}}},{key:"initDefaultCamera",value:function(A,w,D){var z=this,oe=new ns.CameraContribution;oe.clipSpaceNearZ=D,oe.setType(Lt.EXPLORING,Sn.DEFAULT).setPosition(A/2,w/2,Pg).setFocalPoint(A/2,w/2,0).setOrthographic(A/-2,A/2,w/2,w/-2,Um,Uv),oe.canvas=this,oe.eventEmitter.on(ar.UPDATED,function(){z.context.renderingContext.renderReasons.add(pf.CAMERA_CHANGED),ns.enableSizeAttenuation&&z.getConfig().renderer.getConfig().enableSizeAttenuation&&z.updateSizeAttenuation()}),this.context.camera=oe}},{key:"updateSizeAttenuation",value:function(){var A=this.getCamera().getZoom();this.document.documentElement.forEach(function(w){ns.styleValueRegistry.updateSizeAttenuation(w,A)})}},{key:"getConfig",value:function(){return this.context.config}},{key:"getRoot",value:function(){return this.document.documentElement}},{key:"getCamera",value:function(){return this.context.camera}},{key:"getContextService",value:function(){return this.context.contextService}},{key:"getEventService",value:function(){return this.context.eventService}},{key:"getRenderingService",value:function(){return this.context.renderingService}},{key:"getRenderingContext",value:function(){return this.context.renderingContext}},{key:"getStats",value:function(){return this.getRenderingService().getStats()}},{key:"ready",get:function(){var A=this;return this.readyPromise||(this.readyPromise=new Promise(function(w){A.resolveReadyPromise=function(){w(A)}}),this.inited&&this.resolveReadyPromise()),this.readyPromise}},{key:"destroy",value:function(){var A,w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,D=arguments.length>1?arguments[1]:void 0;_l.clearCache();var z=((A=this.getConfig().future)===null||A===void 0?void 0:A.experimentalCancelEventPropagation)===!0;D||this.dispatchEvent(new xh(zc.BEFORE_DESTROY),z,z),this.frameId&&this.cancelAnimationFrame(this.frameId);var oe=this.getRoot();w&&(this.unmountChildren(oe),this.document.destroy(),this.getEventService().destroy()),this.getRenderingService().destroy(),this.getContextService().destroy(),D||this.dispatchEvent(new xh(zc.AFTER_DESTROY),z,z);var ye=function(ot){ot.currentTarget=null,ot.manager=null,ot.target=null,ot.relatedNode=null};ye(wd),ye(op),ye(ol),ye(aa),ye(Ch),ye(Hh),ye(mf),ye(Gd),ye(Pm),ns.textService.clearCache()}},{key:"changeSize",value:function(A,w){this.resize(A,w)}},{key:"resize",value:function(A,w){var D,z=this.context.config;z.width=A,z.height=w,this.getContextService().resize(A,w);var oe=this.context.camera,ye=oe.getProjectionMode();oe.setPosition(A/2,w/2,Pg).setFocalPoint(A/2,w/2,0),ye===Hn.ORTHOGRAPHIC?oe.setOrthographic(A/-2,A/2,w/2,w/-2,oe.getNear(),oe.getFar()):oe.setAspect(A/w);var ke=((D=z.future)===null||D===void 0?void 0:D.experimentalCancelEventPropagation)===!0;this.dispatchEvent(new xh(zc.RESIZE,{width:A,height:w}),ke,ke)}},{key:"appendChild",value:function(A,w){return this.document.documentElement.appendChild(A,w)}},{key:"insertBefore",value:function(A,w){return this.document.documentElement.insertBefore(A,w)}},{key:"removeChild",value:function(A){return this.document.documentElement.removeChild(A)}},{key:"removeChildren",value:function(){this.document.documentElement.removeChildren()}},{key:"destroyChildren",value:function(){this.document.documentElement.destroyChildren()}},{key:"render",value:function(A){var w,D=this;A&&(ol.detail=A,Ch.detail=A);var z=((w=this.getConfig().future)===null||w===void 0?void 0:w.experimentalCancelEventPropagation)===!0;this.dispatchEvent(ol,z,z);var oe=this.getRenderingService();oe.render(this,A,function(){D.dispatchEvent(aa,z,z)}),this.dispatchEvent(Ch,z,z)}},{key:"run",value:function(){var A=this,w=function(z,oe){A.render(oe),A.frameId=A.requestAnimationFrame(w)};w()}},{key:"initRenderer",value:function(A){var w=this,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!A)throw new Error("Renderer is required.");this.inited=!1,this.readyPromise=void 0,this.context.renderingPlugins=[],this.context.renderingPlugins.push(new Iu,new Zf,new $p([new Fv])),this.loadRendererContainerModule(A),this.context.contextService=new this.context.ContextService((0,m.Z)((0,m.Z)({},ns),this.context)),this.context.renderingService=new Sm(ns,this.context),this.context.eventService=new tp(ns,this.context),this.context.eventService.init(),this.context.contextService.init?(this.context.contextService.init(),this.initRenderingService(A,D,!0)):this.context.contextService.initAsync().then(function(){w.initRenderingService(A,D)}).catch(function(z){console.error(z)})}},{key:"initRenderingService",value:function(A){var w=this,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.context.renderingService.init(function(){var oe;w.inited=!0;var ye=((oe=w.getConfig().future)===null||oe===void 0?void 0:oe.experimentalCancelEventPropagation)===!0;D?z?w.requestAnimationFrame(function(){w.dispatchEvent(new xh(zc.READY),ye,ye)}):w.dispatchEvent(new xh(zc.READY),ye,ye):w.dispatchEvent(new xh(zc.RENDERER_CHANGED),ye,ye),w.readyPromise&&w.resolveReadyPromise(),D||w.getRoot().forEach(function(ke){var ot,Et;(ot=(Et=ke).dirty)===null||ot===void 0||ot.call(Et,!0,!0)}),w.mountChildren(w.getRoot()),A.getConfig().enableAutoRendering&&w.run()})}},{key:"loadRendererContainerModule",value:function(A){var w=this,D=A.getPlugins();D.forEach(function(z){z.context=w.context,z.init(ns)})}},{key:"setRenderer",value:function(A){var w=this.getConfig();if(w.renderer!==A){var D=w.renderer;w.renderer=A,this.destroy(!1,!0),(0,L.Z)((D==null?void 0:D.getPlugins())||[]).reverse().forEach(function(z){z.destroy(ns)}),this.initRenderer(A)}}},{key:"setCursor",value:function(A){var w=this.getConfig();w.cursor=A,this.getContextService().applyCursorStyle(A)}},{key:"unmountChildren",value:function(A){var w=this;if(A.childNodes.forEach(function(oe){w.unmountChildren(oe)}),this.inited){if(A.isMutationObserved)A.dispatchEvent(op);else{var D,z=((D=this.getConfig().future)===null||D===void 0?void 0:D.experimentalCancelEventPropagation)===!0;op.target=A,this.dispatchEvent(op,!0,z)}A!==this.document.documentElement&&(A.ownerDocument=null),A.isConnected=!1}A.isCustomElement&&A.disconnectedCallback&&A.disconnectedCallback()}},{key:"mountChildren",value:function(A){var w=this,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Nc(A);if(this.inited){if(!A.isConnected&&(A.ownerDocument=this.document,A.isConnected=!0,!D))if(A.isMutationObserved)A.dispatchEvent(wd);else{var z,oe=((z=this.getConfig().future)===null||z===void 0?void 0:z.experimentalCancelEventPropagation)===!0;wd.target=A,this.dispatchEvent(wd,!0,oe)}}else console.warn("[g]: You are trying to call `canvas.appendChild` before canvas' initialization finished. You can either await `canvas.ready` or listen to `CanvasEvent.READY` manually.","appended child: ",A.nodeName);A.childNodes.forEach(function(ye){w.mountChildren(ye,D)}),A.isCustomElement&&A.connectedCallback&&A.connectedCallback()}},{key:"mountFragment",value:function(A){this.mountChildren(A,!1)}},{key:"client2Viewport",value:function(A){return this.getEventService().client2Viewport(A)}},{key:"viewport2Client",value:function(A){return this.getEventService().viewport2Client(A)}},{key:"viewport2Canvas",value:function(A){return this.getEventService().viewport2Canvas(A)}},{key:"canvas2Viewport",value:function(A){return this.getEventService().canvas2Viewport(A)}},{key:"getPointByClient",value:function(A,w){return this.client2Viewport({x:A,y:w})}},{key:"getClientByPoint",value:function(A,w){return this.viewport2Client({x:A,y:w})}}])}(wm),Dm=0,Xp=new WeakMap,Ng=null,Gy=null,O0=null,Sd,Bh;function Lg(x,E){return Sd=new Ng(x,E)}function Ed(x){return Bh||(Bh=Ng.copy(Sd),Bh.oldValue=x,Bh)}function k0(){Sd=Bh=void 0}function Om(x){return x===Bh||x===Sd}function km(x,E){return x===E?x:Bh&&Om(x)?Bh:null}function lp(x){x.nodes.forEach(function(E){var d=Xp.get(E);d&&d.forEach(function(A){A.observer===x&&A.removeTransientObservers()})})}function Md(x,E){for(var d=x;d;d=d.parentNode){var A=Xp.get(d);if(A)for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:x.api;x.rafId&&(d.cancelAnimationFrame(x.rafId),x.rafId=null)}},{key:"executeTask",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x.api;Dg.length<=0&&Pl.length<=0||(Pl.forEach(function(A){return A()}),Pl=Dg.splice(0,x.TASK_NUM_PER_FRAME),x.rafId=d.requestAnimationFrame(function(){x.executeTask(d)}))}},{key:"sliceImage",value:function(d,A,w,D){for(var z=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,oe=arguments.length>5&&arguments[5]!==void 0?arguments[5]:x.api,ye=d.naturalWidth||d.width,ke=d.naturalHeight||d.height,ot=A-z,Et=w-z,Xt=Math.ceil(ye/ot),Rn=Math.ceil(ke/Et),wn={tileSize:[A,w],gridSize:[Rn,Xt],tiles:Array(Rn).fill(null).map(function(){return Array(Xt).fill(null)})},Xn=function(sr){for(var Dr=function(Rs){Dg.push(function(){var Li=Rs*ot,Zi=sr*Et,ma=[Math.min(A,ye-Li),Math.min(w,ke-Zi)],$s=ma[0],va=ma[1],ba=oe.createCanvas();ba.width=A,ba.height=w;var ho=ba.getContext("2d");ho.drawImage(d,Li,Zi,$s,va,0,0,$s,va),wn.tiles[sr][Rs]={x:Li,y:Zi,tileX:Rs,tileY:sr,data:ba},D()})},gi=0;gi1&&arguments[1]!==void 0?arguments[1]:[0,0,0];return"matrix(".concat([d[0],d[1],d[4],d[5],d[12]+A[0],d[13]+A[1]].join(","),")")}},{key:"apply",value:function(d,A){var w=this,D=d.camera,z=d.renderingContext,oe=d.renderingService;this.context=d;var ye=z.root.ownerDocument.defaultView,ke=ye.context.eventService.nativeHTMLMap,ot=function(gr,sr){sr.style.transform=w.joinTransformMatrix(gr.getWorldTransform(),gr.getOrigin())},Et=function(gr){var sr=gr.target;if(sr.nodeName===sn.HTML){w.$camera||(w.$camera=w.createCamera(D));var Dr=w.getOrCreateEl(sr);w.$camera.appendChild(Dr),Object.keys(sr.attributes).forEach(function(gi){w.updateAttribute(gi,sr)}),ot(sr,Dr),ke.set(Dr,sr)}},Xt=function(gr){var sr=gr.target;if(sr.nodeName===sn.HTML&&w.$camera){var Dr=w.getOrCreateEl(sr);Dr&&(Dr.remove(),ke.delete(Dr))}},Rn=function(gr){var sr=gr.target;if(sr.nodeName===sn.HTML){var Dr=gr.attrName;w.updateAttribute(Dr,sr)}},wn=function(gr){for(var sr=gr.detail,Dr=0;Dr0?St:St*-1}function U(it,ht,St,Yt,$t,Ft){var xn=St,cr=Yt;if(xn===0||cr===0)return{x:it,y:ht};for(var nr=$t-it,Lr=Ft-ht,si=Math.abs(nr),Pr=Math.abs(Lr),ys=xn*xn,Ri=cr*cr,Fi=Math.PI/4,ui=0,gs=0,Di=0;Di<4;Di++){ui=xn*Math.cos(Fi),gs=cr*Math.sin(Fi);var Nn=(ys-Ri)*Math.pow(Math.cos(Fi),3)/xn,cn=(Ri-ys)*Math.pow(Math.sin(Fi),3)/cr,jt=ui-Nn,ct=gs-cn,pt=si-Nn,zt=Pr-cn,Mn=Math.hypot(ct,jt),sn=Math.hypot(zt,pt),ur=Mn*Math.asin((jt*zt-ct*pt)/(Mn*sn)),lr=ur/Math.sqrt(ys+Ri-ui*ui-gs*gs);Fi+=lr,Fi=Math.min(Math.PI/2,Math.max(0,Fi))}return{x:it+B(ui,nr),y:ht+B(gs,Lr)}}function Q(it,ht,St,Yt,$t,Ft,xn,cr){return-1*St*Math.cos($t)*Math.sin(cr)-Yt*Math.sin($t)*Math.cos(cr)}function V(it,ht,St,Yt,$t,Ft,xn,cr){return-1*St*Math.sin($t)*Math.sin(cr)+Yt*Math.cos($t)*Math.cos(cr)}function j(it,ht,St){return Math.atan(-ht/it*Math.tan(St))}function Y(it,ht,St){return Math.atan(ht/(it*Math.tan(St)))}function fe(it,ht,St,Yt,$t,Ft){return St*Math.cos($t)*Math.cos(Ft)-Yt*Math.sin($t)*Math.sin(Ft)+it}function ue(it,ht,St,Yt,$t,Ft){return St*Math.sin($t)*Math.cos(Ft)+Yt*Math.cos($t)*Math.sin(Ft)+ht}function Me(it,ht,St,Yt){var $t=Math.atan2(Yt*it,St*ht);return($t+Math.PI*2)%(Math.PI*2)}function _e(it,ht,St){return{x:it*Math.cos(St),y:ht*Math.sin(St)}}function Ce(it,ht,St){var Yt=Math.cos(St),$t=Math.sin(St);return[it*Yt-ht*$t,it*$t+ht*Yt]}function Xe(it,ht,St,Yt,$t,Ft,xn){for(var cr=j(St,Yt,$t),nr=1/0,Lr=-1/0,si=[Ft,xn],Pr=-Math.PI*2;Pr<=Math.PI*2;Pr+=Math.PI){var ys=cr+Pr;FtLr&&(Lr=Fi)}for(var ui=Y(St,Yt,$t),gs=1/0,Di=-1/0,Nn=[Ft,xn],cn=-Math.PI*2;cn<=Math.PI*2;cn+=Math.PI){var jt=ui+cn;FtDi&&(Di=pt)}return{x:nr,y:gs,width:Lr-nr,height:Di-gs}}function Fe(it,ht,St,Yt,$t,Ft,xn,cr,nr){var Lr=Ce(cr-it,nr-ht,-$t),si=_slicedToArray(Lr,2),Pr=si[0],ys=si[1],Ri=U(0,0,St,Yt,Pr,ys),Fi=Me(St,Yt,Ri.x,Ri.y);Fixn&&(Ri=_e(St,Yt,xn));var ui=Ce(Ri.x,Ri.y,$t);return{x:ui[0]+it,y:ui[1]+ht}}function ft(it,ht,St,Yt,$t,Ft,xn,cr){var nr=(xn-Ft)*cr+Ft,Lr=Q(it,ht,St,Yt,$t,Ft,xn,nr),si=V(it,ht,St,Yt,$t,Ft,xn,nr);return F(Math.atan2(si,Lr))}var _t=1e-4;function lt(it,ht,St,Yt,$t,Ft){var xn=-1,cr=1/0,nr=[St,Yt],Lr=20;Ft&&Ft>200&&(Lr=Ft/10);for(var si=1/Lr,Pr=si/10,ys=0;ys<=Lr;ys++){var Ri=ys*si,Fi=[$t.apply(void 0,(0,m.Z)(it.concat([Ri]))),$t.apply(void 0,(0,m.Z)(ht.concat([Ri])))],ui=L(nr[0],nr[1],Fi[0],Fi[1]);ui=0&&ctcr?L(St,Yt,$t,Ft):rr(it,ht,St,Yt,$t,Ft)}function rr(it,ht,St,Yt,$t,Ft){var xn=[St-it,Yt-ht];if(H.I6(xn,[0,0]))return Math.sqrt(($t-it)*($t-it)+(Ft-ht)*(Ft-ht));var cr=[-xn[1],xn[0]];H.Fv(cr,cr);var nr=[$t-it,Ft-ht];return Math.abs(H.AK(nr,cr))}function kn(it,ht,St,Yt){return Math.atan2(Yt-ht,St-it)}function Kn(it,ht,St,Yt,$t){var Ft=1-$t;return Ft*Ft*Ft*it+3*ht*$t*Ft*Ft+3*St*$t*$t*Ft+Yt*$t*$t*$t}function _r(it,ht,St,Yt,$t){var Ft=1-$t;return 3*(Ft*Ft*(ht-it)+2*Ft*$t*(St-ht)+$t*$t*(Yt-St))}function bn(it,ht,St,Yt){var $t=-3*it+9*ht-9*St+3*Yt,Ft=6*it-12*ht+6*St,xn=3*ht-3*it,cr=[],nr,Lr,si;if((0,K.Z)($t,0))(0,K.Z)(Ft,0)||(nr=-xn/Ft,nr>=0&&nr<=1&&cr.push(nr));else{var Pr=Ft*Ft-4*$t*xn;(0,K.Z)(Pr,0)?cr.push(-Ft/(2*$t)):Pr>0&&(si=Math.sqrt(Pr),nr=(-Ft+si)/(2*$t),Lr=(-Ft-si)/(2*$t),nr>=0&&nr<=1&&cr.push(nr),Lr>=0&&Lr<=1&&cr.push(Lr))}return cr}function Cr(it,ht,St,Yt,$t,Ft,xn,cr,nr){var Lr=Kn(it,St,$t,xn,nr),si=Kn(ht,Yt,Ft,cr,nr),Pr=Ot(it,ht,St,Yt,nr),ys=Ot(St,Yt,$t,Ft,nr),Ri=Ot($t,Ft,xn,cr,nr),Fi=Ot(Pr.x,Pr.y,ys.x,ys.y,nr),ui=Ot(ys.x,ys.y,Ri.x,Ri.y,nr);return[[it,ht,Pr.x,Pr.y,Fi.x,Fi.y,Lr,si],[Lr,si,ui.x,ui.y,Ri.x,Ri.y,xn,cr]]}function Ke(it,ht,St,Yt,$t,Ft,xn,cr,nr){if(nr===0)return Vt([it,St,$t,xn],[ht,Yt,Ft,cr]);var Lr=Cr(it,ht,St,Yt,$t,Ft,xn,cr,.5),si=[].concat(_toConsumableArray(Lr[0]),[nr-1]),Pr=[].concat(_toConsumableArray(Lr[1]),[nr-1]);return Ke.apply(void 0,_toConsumableArray(si))+Ke.apply(void 0,_toConsumableArray(Pr))}function Rt(it,ht,St,Yt,$t,Ft,xn,cr){for(var nr=[it,xn],Lr=[ht,cr],si=bn(it,St,$t,xn),Pr=bn(ht,Yt,Ft,cr),ys=0;ys1||ht<0||it.length<2)return null;var St=Tt(it),Yt=St.segments,$t=St.totalLength;if($t===0)return{x:it[0][0],y:it[0][1]};for(var Ft=0,xn=null,cr=0;cr=Ft&&ht<=Ft+Pr){var ys=(ht-Ft)/Pr;xn=Ot(Lr[0],Lr[1],si[0],si[1],ys);break}Ft+=Pr}return xn}function pe(it,ht){if(ht>1||ht<0||it.length<2)return 0;for(var St=Tt(it),Yt=St.segments,$t=St.totalLength,Ft=0,xn=0,cr=0;cr=Ft&&ht<=Ft+Pr){xn=Math.atan2(si[1]-Lr[1],si[0]-Lr[0]);break}Ft+=Pr}return xn}function De(it,ht,St){for(var Yt=1/0,$t=0;$t=0?[$t]:[]}function In(it,ht,St,Yt,$t,Ft,xn){var cr=Gt(it,St,$t,xn),nr=Gt(ht,Yt,Ft,xn),Lr=Ot(it,ht,St,Yt,xn),si=Ot(St,Yt,$t,Ft,xn);return[[it,ht,Lr.x,Lr.y,cr,nr],[cr,nr,si.x,si.y,$t,Ft]]}function pr(it,ht,St,Yt,$t,Ft,xn){if(xn===0)return(L(it,ht,St,Yt)+L(St,Yt,$t,Ft)+L(it,ht,$t,Ft))/2;var cr=In(it,ht,St,Yt,$t,Ft,.5),nr=cr[0],Lr=cr[1];return nr.push(xn-1),Lr.push(xn-1),pr.apply(void 0,_toConsumableArray(nr))+pr.apply(void 0,_toConsumableArray(Lr))}function Je(it,ht,St,Yt,$t,Ft){var xn=On(it,St,$t)[0],cr=On(ht,Yt,Ft)[0],nr=[it,$t],Lr=[ht,Ft];return xn!==void 0&&nr.push(Gt(it,St,$t,xn)),cr!==void 0&&Lr.push(Gt(ht,Yt,Ft,cr)),T(nr,Lr)}function we(it,ht,St,Yt,$t,Ft){return pr(it,ht,St,Yt,$t,Ft,3)}function at(it,ht,St,Yt,$t,Ft,xn,cr){return lt([it,St,$t],[ht,Yt,Ft],xn,cr,Gt)}function wt(it,ht,St,Yt,$t,Ft,xn,cr){var nr=at(it,ht,St,Yt,$t,Ft,xn,cr);return L(nr.x,nr.y,xn,cr)}},59293:function(Ie,Be,_){"use strict";_.d(Be,{S:function(){return j}});var m=_(33885),K=_(67732),H=_(83652),L=_(22214),T=_(42403),F=_(72818),B=_(75044),U=_(3202),Q=_(68901);var V=function(){function Y(fe){(0,K.Z)(this,Y),this.dragndropPluginOptions=fe}return(0,H.Z)(Y,[{key:"apply",value:function(ue){var Me=this,_e=ue.renderingService,Ce=ue.renderingContext,Xe=Ce.root.ownerDocument,Fe=Xe.defaultView,ft=function(lt){var Vt=lt.target,It=Vt===Xe,Fn=It&&Me.dragndropPluginOptions.isDocumentDraggable?Xe:Vt.closest&&Vt.closest("[draggable=true]");if(Fn){var Ot=!1,jn=lt.timeStamp,rr=[lt.clientX,lt.clientY],kn=null,Kn=[lt.clientX,lt.clientY],_r=function(){var Cr=(0,U.Z)((0,B.Z)().mark(function Ke(Rt){var Qn,Yr,rn,An,Ln,Tt;return(0,B.Z)().wrap(function(Mt){for(;;)switch(Mt.prev=Mt.next){case 0:if(Ot){Mt.next=2;break}if(Qn=Rt.timeStamp-jn,Yr=(0,Q.y)([Rt.clientX,Rt.clientY],rr),!(Qn<=Me.dragndropPluginOptions.dragstartTimeThreshold||Yr<=Me.dragndropPluginOptions.dragstartDistanceThreshold)){Mt.next=1;break}return Mt.abrupt("return");case 1:Rt.type="dragstart",Fn.dispatchEvent(Rt),Ot=!0;case 2:if(Rt.type="drag",Rt.dx=Rt.clientX-Kn[0],Rt.dy=Rt.clientY-Kn[1],Fn.dispatchEvent(Rt),Kn=[Rt.clientX,Rt.clientY],It){Mt.next=4;break}return rn=Me.dragndropPluginOptions.overlap==="pointer"?[Rt.canvasX,Rt.canvasY]:Vt.getBounds().center,Mt.next=3,Xe.elementsFromPoint(rn[0],rn[1]);case 3:An=Mt.sent,Ln=An[An.indexOf(Vt)+1],Tt=(Ln==null?void 0:Ln.closest("[droppable=true]"))||(Me.dragndropPluginOptions.isDocumentDroppable?Xe:null),kn!==Tt&&(kn&&(Rt.type="dragleave",Rt.target=kn,kn.dispatchEvent(Rt)),Tt&&(Rt.type="dragenter",Rt.target=Tt,Tt.dispatchEvent(Rt)),kn=Tt,kn&&(Rt.type="dragover",Rt.target=kn,kn.dispatchEvent(Rt)));case 4:case"end":return Mt.stop()}},Ke)}));return function(Rt){return Cr.apply(this,arguments)}}();Fe.addEventListener("pointermove",_r);var bn=function(Ke){if(Ot){Ke.detail={preventClick:!0};var Rt=Ke.clone();kn&&(Rt.type="drop",Rt.target=kn,kn.dispatchEvent(Rt)),Rt.type="dragend",Fn.dispatchEvent(Rt),Ot=!1}Fe.removeEventListener("pointermove",_r)};Vt.addEventListener("pointerup",bn,{once:!0}),Vt.addEventListener("pointerupoutside",bn,{once:!0})}};_e.hooks.init.tap(Y.tag,function(){Fe.addEventListener("pointerdown",ft)}),_e.hooks.destroy.tap(Y.tag,function(){Fe.removeEventListener("pointerdown",ft)})}}])}();V.tag="Dragndrop";var j=function(Y){function fe(){var ue,Me=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,K.Z)(this,fe),ue=(0,L.Z)(this,fe),ue.name="dragndrop",ue.options=Me,ue}return(0,T.Z)(fe,Y),(0,H.Z)(fe,[{key:"init",value:function(){this.addRenderingPlugin(new V((0,m.Z)({overlap:"pointer",isDocumentDraggable:!1,isDocumentDroppable:!1,dragstartDistanceThreshold:0,dragstartTimeThreshold:0},this.options)))}},{key:"destroy",value:function(){this.removeAllRenderingPlugins()}},{key:"setOptions",value:function(Me){Object.assign(this.plugins[0].dragndropPluginOptions,Me)}}])}(F.F6)},66623:function(Ie,Be,_){"use strict";_.d(Be,{$6:function(){return m.$6},Aw:function(){return m.Aw},BB:function(){return m.BB},BV:function(){return m.BV},Cd:function(){return m.Cd},Dk:function(){return m.Dk},Ee:function(){return m.Ee},GZ:function(){return m.GZ},Pj:function(){return m.Pj},UL:function(){return m.UL},Xz:function(){return m.Xz},ZA:function(){return m.ZA},aH:function(){return m.aH},b_:function(){return m.b_},k9:function(){return m.k9},mN:function(){return m.mN},mg:function(){return m.mg},nR:function(){return m.nR},s$:function(){return m.s$},x1:function(){return m.x1},xv:function(){return m.xv},y$:function(){return m.y$}});var m=_(72818),K=_(67732),H=_(83652),L=_(22214),T=_(42403),F=_(94480),B=_(42978),U=_(70208),Q=_(1933),V=_(76075),j=_(71879),Y=_(5131),fe=_(94569),ue=_(60187),Me=_(92421),_e=_(75931),Ce=_(64270),Xe=_.n(Ce),Fe=_(33885),ft=_(20068),_t=_(34907);var lt=function($n){function Ut(Kt,Lt,Sn,Hn){var ar;return(0,K.Z)(this,Ut),ar=(0,L.Z)(this,Ut,[Kt]),ar.currentTime=Sn,ar.timelineTime=Hn,ar.target=Lt,ar.type="finish",ar.bubbles=!1,ar.currentTarget=Lt,ar.defaultPrevented=!1,ar.eventPhase=ar.AT_TARGET,ar.timeStamp=Date.now(),ar.currentTime=Sn,ar.timelineTime=Hn,ar}return(0,T.Z)(Ut,$n),(0,H.Z)(Ut)}(m.xA),Vt=0,It=function(){function $n(Ut,Kt){var Lt;(0,K.Z)(this,$n),this.currentTimePending=!1,this._idle=!0,this._paused=!1,this._finishedFlag=!0,this._currentTime=0,this._playbackRate=1,this._inTimeline=!0,this.effect=Ut,Ut.animation=this,this.timeline=Kt,this.id="".concat(Vt++),this._inEffect=!!this.effect.update(0),this._totalDuration=Number((Lt=this.effect)===null||Lt===void 0?void 0:Lt.getComputedTiming().endTime),this._holdTime=0,this._paused=!1,this.oldPlayState="idle",this.updatePromises()}return(0,H.Z)($n,[{key:"pending",get:function(){return this._startTime===null&&!this._paused&&this.playbackRate!==0||this.currentTimePending}},{key:"playState",get:function(){return this._idle?"idle":this._isFinished?"finished":this._paused?"paused":"running"}},{key:"ready",get:function(){var Kt=this;return this.readyPromise||(this.timeline.animationsWithPromises.indexOf(this)===-1&&this.timeline.animationsWithPromises.push(this),this.readyPromise=new Promise(function(Lt,Sn){Kt.resolveReadyPromise=function(){Lt(Kt)},Kt.rejectReadyPromise=function(){Sn(new Error)}}),this.pending||this.resolveReadyPromise()),this.readyPromise}},{key:"finished",get:function(){var Kt=this;return this.finishedPromise||(this.timeline.animationsWithPromises.indexOf(this)===-1&&this.timeline.animationsWithPromises.push(this),this.finishedPromise=new Promise(function(Lt,Sn){Kt.resolveFinishedPromise=function(){Lt(Kt)},Kt.rejectFinishedPromise=function(){Sn(new Error)}}),this.playState==="finished"&&this.resolveFinishedPromise()),this.finishedPromise}},{key:"currentTime",get:function(){return this.updatePromises(),this._idle||this.currentTimePending?null:this._currentTime},set:function(Kt){if(Kt=Number(Kt),!isNaN(Kt)){if(this.timeline.restart(),!this._paused&&this._startTime!==null){var Lt;this._startTime=Number((Lt=this.timeline)===null||Lt===void 0?void 0:Lt.currentTime)-Kt/this.playbackRate}this.currentTimePending=!1,this._currentTime!==Kt&&(this._idle&&(this._idle=!1,this._paused=!0),this.tickCurrentTime(Kt,!0),this.timeline.applyDirtiedAnimation(this))}}},{key:"startTime",get:function(){return this._startTime},set:function(Kt){if(Kt!==null){if(this.updatePromises(),Kt=Number(Kt),isNaN(Kt)||this._paused||this._idle)return;this._startTime=Kt,this.tickCurrentTime((Number(this.timeline.currentTime)-this._startTime)*this.playbackRate),this.timeline.applyDirtiedAnimation(this),this.updatePromises()}}},{key:"playbackRate",get:function(){return this._playbackRate},set:function(Kt){if(Kt!==this._playbackRate){this.updatePromises();var Lt=this.currentTime;this._playbackRate=Kt,this.startTime=null,this.playState!=="paused"&&this.playState!=="idle"&&(this._finishedFlag=!1,this._idle=!1,this.ensureAlive(),this.timeline.applyDirtiedAnimation(this)),Lt!==null&&(this.currentTime=Lt),this.updatePromises()}}},{key:"_isFinished",get:function(){return!this._idle&&(this._playbackRate>0&&Number(this._currentTime)>=this._totalDuration||this._playbackRate<0&&Number(this._currentTime)<=0)}},{key:"totalDuration",get:function(){return this._totalDuration}},{key:"_needsTick",get:function(){return this.pending||this.playState==="running"||!this._finishedFlag}},{key:"updatePromises",value:function(){var Kt;if((Kt=this.effect.target)!==null&&Kt!==void 0&&Kt.destroyed)return this.readyPromise=void 0,this.finishedPromise=void 0,!1;var Lt=this.oldPlayState,Sn=this.pending?"pending":this.playState;return this.readyPromise&&Sn!==Lt&&(Sn==="idle"?(this.rejectReadyPromise(),this.readyPromise=void 0):Lt==="pending"?this.resolveReadyPromise():Sn==="pending"&&(this.readyPromise=void 0)),this.finishedPromise&&Sn!==Lt&&(Sn==="idle"?(this.rejectFinishedPromise(),this.finishedPromise=void 0):Sn==="finished"?this.resolveFinishedPromise():Lt==="finished"&&(this.finishedPromise=void 0)),this.oldPlayState=Sn,this.readyPromise||this.finishedPromise}},{key:"play",value:function(){this.updatePromises(),this._paused=!1,(this._isFinished||this._idle)&&(this.rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this.ensureAlive(),this.timeline.applyDirtiedAnimation(this),this.timeline.animations.indexOf(this)===-1&&this.timeline.animations.push(this),this.updatePromises()}},{key:"pause",value:function(){this.updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),!this._isFinished&&!this._paused&&!this._idle?this.currentTimePending=!0:this._idle&&(this.rewind(),this._idle=!1),this._startTime=null,this._paused=!0,this.updatePromises()}},{key:"finish",value:function(){this.updatePromises(),!this._idle&&(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this.currentTimePending=!1,this.timeline.applyDirtiedAnimation(this),this.updatePromises())}},{key:"cancel",value:function(){var Kt=this;if(this.updatePromises(),!!this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._finishedFlag=!0,this._currentTime=null,this._startTime=null,this.effect.update(null),this.timeline.applyDirtiedAnimation(this),this.updatePromises(),this.oncancel)){var Lt=new lt(null,this,this.currentTime,null);setTimeout(function(){Kt.oncancel(Lt)})}}},{key:"reverse",value:function(){this.updatePromises();var Kt=this.currentTime;this.playbackRate*=-1,this.play(),Kt!==null&&(this.currentTime=Kt),this.updatePromises()}},{key:"updatePlaybackRate",value:function(Kt){this.playbackRate=Kt}},{key:"targetAnimations",value:function(){var Kt,Lt=(Kt=this.effect)===null||Kt===void 0?void 0:Kt.target;return Lt.getAnimations()}},{key:"markTarget",value:function(){var Kt=this.targetAnimations();Kt.indexOf(this)===-1&&Kt.push(this)}},{key:"unmarkTarget",value:function(){var Kt=this.targetAnimations(),Lt=Kt.indexOf(this);Lt!==-1&&Kt.splice(Lt,1)}},{key:"tick",value:function(Kt,Lt){!this._idle&&!this._paused&&(this._startTime===null?Lt&&(this.startTime=Kt-this._currentTime/this.playbackRate):this._isFinished||this.tickCurrentTime((Kt-this._startTime)*this.playbackRate)),Lt&&(this.currentTimePending=!1,this.fireEvents(Kt))}},{key:"rewind",value:function(){if(this.playbackRate>=0)this.currentTime=0;else if(this._totalDuration<1/0)this.currentTime=this._totalDuration;else throw new Error("Unable to rewind negative playback rate animation with infinite duration")}},{key:"persist",value:function(){throw new Error(m.jf)}},{key:"addEventListener",value:function(Kt,Lt,Sn){throw new Error(m.jf)}},{key:"removeEventListener",value:function(Kt,Lt,Sn){throw new Error(m.jf)}},{key:"dispatchEvent",value:function(Kt){throw new Error(m.jf)}},{key:"commitStyles",value:function(){throw new Error(m.jf)}},{key:"ensureAlive",value:function(){if(this.playbackRate<0&&this.currentTime===0){var Kt;this._inEffect=!!((Kt=this.effect)!==null&&Kt!==void 0&&Kt.update(-1))}else{var Lt;this._inEffect=!!((Lt=this.effect)!==null&&Lt!==void 0&&Lt.update(this.currentTime))}!this._inTimeline&&(this._inEffect||!this._finishedFlag)&&(this._inTimeline=!0,this.timeline.animations.push(this))}},{key:"tickCurrentTime",value:function(Kt,Lt){Kt!==this._currentTime&&(this._currentTime=Kt,this._isFinished&&!Lt&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this.ensureAlive())}},{key:"fireEvents",value:function(Kt){var Lt=this;if(this._isFinished){if(!this._finishedFlag){if(this.onfinish){var Sn=new lt(null,this,this.currentTime,Kt);setTimeout(function(){Lt.onfinish&&Lt.onfinish(Sn)})}this._finishedFlag=!0}}else{if(this.onframe&&this.playState==="running"){var Hn=new lt(null,this,this.currentTime,Kt);this.onframe(Hn)}this._finishedFlag=!1}}}])}(),Fn=4,Ot=.001,jn=1e-7,rr=10,kn=11,Kn=1/(kn-1),_r=typeof Float32Array=="function",bn=function(Ut,Kt){return 1-3*Kt+3*Ut},Cr=function(Ut,Kt){return 3*Kt-6*Ut},Ke=function(Ut){return 3*Ut},Rt=function(Ut,Kt,Lt){return((bn(Kt,Lt)*Ut+Cr(Kt,Lt))*Ut+Ke(Kt))*Ut},Qn=function(Ut,Kt,Lt){return 3*bn(Kt,Lt)*Ut*Ut+2*Cr(Kt,Lt)*Ut+Ke(Kt)},Yr=function(Ut,Kt,Lt,Sn,Hn){var ar,Hr,fi=0;do Hr=Kt+(Lt-Kt)/2,ar=Rt(Hr,Sn,Hn)-Ut,ar>0?Lt=Hr:Kt=Hr;while(Math.abs(ar)>jn&&++fi=0&&Ut<=1&&Lt>=0&&Lt<=1))throw new Error("bezier x values must be in [0, 1] range");if(Ut===Kt&&Lt===Sn)return function(fi){return fi};for(var Hn=_r?new Float32Array(kn):new Array(kn),ar=0;ar=Ot?rn(Qi,Ya,Ut,Lt):Ba===0?Ya:Yr(Qi,As,As+Kn,Ut,Lt)};return function(fi){return fi===0||fi===1?fi:Rt(Hr(fi),Kt,Sn)}},Ln=function(Ut){return Ut=Ut.replace(/([A-Z])/g,function(Kt){return"-".concat(Kt.toLowerCase())}),Ut.charAt(0)==="-"?Ut.substring(1):Ut},Tt=function(Ut){return Math.pow(Ut,2)},Mt=function(Ut){return Math.pow(Ut,3)},ge=function(Ut){return Math.pow(Ut,4)},pe=function(Ut){return Math.pow(Ut,5)},De=function(Ut){return Math.pow(Ut,6)},Ht=function(Ut){return 1-Math.cos(Ut*Math.PI/2)},Jt=function(Ut){return 1-Math.sqrt(1-Ut*Ut)},At=function(Ut){return Ut*Ut*(3*Ut-2)},dn=function(Ut){for(var Kt,Lt=4;Ut<((Kt=Math.pow(2,--Lt))-1)/11;);return 1/Math.pow(4,3-Lt)-7.5625*Math.pow((Kt*3-2)/22-Ut,2)},fn=function(Ut){var Kt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Lt=(0,B.Z)(Kt,2),Sn=Lt[0],Hn=Sn===void 0?1:Sn,ar=Lt[1],Hr=ar===void 0?.5:ar,fi=(0,U.Z)(Number(Hn),1,10),Qi=(0,U.Z)(Number(Hr),.1,2);return Ut===0||Ut===1?Ut:-fi*Math.pow(2,10*(Ut-1))*Math.sin((Ut-1-Qi/(Math.PI*2)*Math.asin(1/fi))*(Math.PI*2)/Qi)},ut=function(Ut){var Kt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Lt=arguments.length>2?arguments[2]:void 0,Sn=(0,B.Z)(Kt,4),Hn=Sn[0],ar=Hn===void 0?1:Hn,Hr=Sn[1],fi=Hr===void 0?100:Hr,Qi=Sn[2],As=Qi===void 0?10:Qi,ks=Sn[3],Is=ks===void 0?0:ks;ar=(0,U.Z)(ar,.1,1e3),fi=(0,U.Z)(fi,.1,1e3),As=(0,U.Z)(As,.1,1e3),Is=(0,U.Z)(Is,.1,1e3);var Ks=Math.sqrt(fi/ar),Ya=As/(2*Math.sqrt(fi*ar)),Ba=Ya<1?Ks*Math.sqrt(1-Ya*Ya):0,Wa=1,Mi=Ya<1?(Ya*Ks+-Is)/Ba:-Is+Ks,Do=Lt?Lt*Ut/1e3:Ut;return Ya<1?Do=Math.exp(-Do*Ya*Ks)*(Wa*Math.cos(Ba*Do)+Mi*Math.sin(Ba*Do)):Do=(Wa+Mi*Do)*Math.exp(-Do*Ks),Ut===0||Ut===1?Ut:1-Do},Bt=function(Ut){var Kt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Lt=Kt,Sn=(0,B.Z)(Lt,2),Hn=Sn[0],ar=Hn===void 0?10:Hn,Hr=Sn[1],fi=Hr==="start"?Math.ceil:Math.floor;return fi((0,U.Z)(Ut,0,1)*ar)/ar},un=function(Ut){var Kt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Lt=(0,B.Z)(Kt,4),Sn=Lt[0],Hn=Lt[1],ar=Lt[2],Hr=Lt[3];return An(Sn,Hn,ar,Hr)(Ut)},Z=An(.42,0,1,1),Te=function(Ut){return function(Kt){var Lt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Sn=arguments.length>2?arguments[2]:void 0;return 1-Ut(1-Kt,Lt,Sn)}},Zt=function(Ut){return function(Kt){var Lt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Sn=arguments.length>2?arguments[2]:void 0;return Kt<.5?Ut(Kt*2,Lt,Sn)/2:1-Ut(Kt*-2+2,Lt,Sn)/2}},Gt=function(Ut){return function(Kt){var Lt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Sn=arguments.length>2?arguments[2]:void 0;return Kt<.5?(1-Ut(1-Kt*2,Lt,Sn))/2:(Ut(Kt*2-1,Lt,Sn)+1)/2}},On={steps:Bt,"step-start":function(Ut){return Bt(Ut,[1,"start"])},"step-end":function(Ut){return Bt(Ut,[1,"end"])},linear:function(Ut){return Ut},"cubic-bezier":un,ease:function(Ut){return un(Ut,[.25,.1,.25,1])},in:Z,out:Te(Z),"in-out":Zt(Z),"out-in":Gt(Z),"in-quad":Tt,"out-quad":Te(Tt),"in-out-quad":Zt(Tt),"out-in-quad":Gt(Tt),"in-cubic":Mt,"out-cubic":Te(Mt),"in-out-cubic":Zt(Mt),"out-in-cubic":Gt(Mt),"in-quart":ge,"out-quart":Te(ge),"in-out-quart":Zt(ge),"out-in-quart":Gt(ge),"in-quint":pe,"out-quint":Te(pe),"in-out-quint":Zt(pe),"out-in-quint":Gt(pe),"in-expo":De,"out-expo":Te(De),"in-out-expo":Zt(De),"out-in-expo":Gt(De),"in-sine":Ht,"out-sine":Te(Ht),"in-out-sine":Zt(Ht),"out-in-sine":Gt(Ht),"in-circ":Jt,"out-circ":Te(Jt),"in-out-circ":Zt(Jt),"out-in-circ":Gt(Jt),"in-back":At,"out-back":Te(At),"in-out-back":Zt(At),"out-in-back":Gt(At),"in-bounce":dn,"out-bounce":Te(dn),"in-out-bounce":Zt(dn),"out-in-bounce":Gt(dn),"in-elastic":fn,"out-elastic":Te(fn),"in-out-elastic":Zt(fn),"out-in-elastic":Gt(fn),spring:ut,"spring-in":ut,"spring-out":Te(ut),"spring-in-out":Zt(ut),"spring-out-in":Gt(ut)},In=function(Ut){return Ln(Ut).replace(/^ease-/,"").replace(/(\(|\s).+/,"").toLowerCase().trim()},pr=function(Ut){return On[In(Ut)]||On.linear},Je=function(Ut){return Ut},we=1,at=.5,wt=0;function it($n,Ut){return function(Kt){if(Kt>=1)return 1;var Lt=1/$n;return Kt+=Ut*Lt,Kt-Kt%Lt}}var ht="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",St=new RegExp("cubic-bezier\\(".concat(ht,",").concat(ht,",").concat(ht,",").concat(ht,"\\)")),Yt=/steps\(\s*(\d+)\s*\)/,$t=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/;function Ft($n){var Ut=St.exec($n);if(Ut)return An.apply(void 0,(0,F.Z)(Ut.slice(1).map(Number)));var Kt=Yt.exec($n);if(Kt)return it(Number(Kt[1]),wt);var Lt=$t.exec($n);return Lt?it(Number(Lt[1]),{start:we,middle:at,end:wt}[Lt[2]]):pr($n)}function xn($n){return Math.abs(cr($n)/($n.playbackRate||1))}function cr($n){var Ut;return $n.duration===0||$n.iterations===0?0:($n.duration==="auto"?0:Number($n.duration))*((Ut=$n.iterations)!==null&&Ut!==void 0?Ut:1)}var nr=0,Lr=1,si=2,Pr=3;function ys($n,Ut,Kt){if(Ut===null)return nr;var Lt=Kt.endTime;return Ut=Math.min(Kt.delay+$n+Kt.endDelay,Lt)?si:Pr}function Ri($n,Ut,Kt,Lt,Sn){switch(Lt){case Lr:return Ut==="backwards"||Ut==="both"?0:null;case Pr:return Kt-Sn;case si:return Ut==="forwards"||Ut==="both"?$n:null;case nr:return null}}function Fi($n,Ut,Kt,Lt,Sn){var Hn=Sn;return $n===0?Ut!==Lr&&(Hn+=Kt):Hn+=Lt/$n,Hn}function ui($n,Ut,Kt,Lt,Sn,Hn){var ar=$n===1/0?Ut%1:$n%1;return ar===0&&Kt===si&&Lt!==0&&(Sn!==0||Hn===0)&&(ar=1),ar}function gs($n,Ut,Kt,Lt){return $n===si&&Ut===1/0?1/0:Kt===1?Math.floor(Lt)-1:Math.floor(Lt)}function Di($n,Ut,Kt){var Lt=$n;if($n!=="normal"&&$n!=="reverse"){var Sn=Ut;$n==="alternate-reverse"&&(Sn+=1),Lt="normal",Sn!==1/0&&Sn%2!==0&&(Lt="reverse")}return Lt==="normal"?Kt:1-Kt}function Nn($n,Ut,Kt){var Lt=ys($n,Ut,Kt),Sn=Ri($n,Kt.fill,Ut,Lt,Kt.delay);if(Sn===null)return null;var Hn=Kt.duration==="auto"?0:Kt.duration,ar=Fi(Hn,Lt,Kt.iterations,Sn,Kt.iterationStart),Hr=ui(ar,Kt.iterationStart,Lt,Kt.iterations,Sn,Hn),fi=gs(Lt,Kt.iterations,Hr,ar),Qi=Di(Kt.direction,fi,Hr);return Kt.currentIteration=fi,Kt.progress=Qi,Kt.easingFunction(Qi)}function cn($n,Ut,Kt){var Lt=ct($n,Ut),Sn=pt(Lt,Kt);return function(Hn,ar){if(ar!==null)Sn.filter(function(fi){return ar>=fi.applyFrom&&ar1)throw new Error("Keyframe offsets must be between 0 and 1.");Qi.computedOffset=ks}}else if(As==="composite"&&["replace","add","accumulate","auto"].indexOf(ks)===-1)throw new Error("".concat(ks," compositing is not supported"));Qi[As]=ks}return Qi.offset===void 0&&(Qi.offset=null),Qi.easing===void 0&&(Qi.easing=(Ut==null?void 0:Ut.easing)||"linear"),Qi.composite===void 0&&(Qi.composite="auto"),Qi}),Lt=!0,Sn=-1/0,Hn=0;Hn=0&&Number(fi.offset)<=1});function Hr(){var fi,Qi=Kt,As=Qi.length;if(Kt[As-1].computedOffset=Number((fi=Kt[As-1].offset)!==null&&fi!==void 0?fi:1),As>1){var ks;Kt[0].computedOffset=Number((ks=Kt[0].offset)!==null&&ks!==void 0?ks:0)}for(var Is=0,Ks=Number(Kt[0].computedOffset),Ya=1;Ya90)return this;this.computeMatrix()}return this._getAxes(),this.type===m.iM.ORBITING||this.type===m.iM.EXPLORING?this._getPosition():this.type===m.iM.TRACKING&&this._getFocalPoint(),this._update(),this}},{key:"pan",value:function(Lt,Sn){var Hn=(0,m.O4)(Lt,Sn,0),ar=Me.d9(this.position);return Me.IH(ar,ar,Me.bA(Me.Ue(),this.right,Hn[0])),Me.IH(ar,ar,Me.bA(Me.Ue(),this.up,Hn[1])),this._setPosition(ar),this.triggerUpdate(),this}},{key:"dolly",value:function(Lt){var Sn=this.forward,Hn=Me.d9(this.position),ar=Lt*this.dollyingStep,Hr=this.distance+Lt*this.dollyingStep;return ar=Math.max(Math.min(Hr,this.maxDistance),this.minDistance)-this.distance,Hn[0]+=ar*Sn[0],Hn[1]+=ar*Sn[1],Hn[2]+=ar*Sn[2],this._setPosition(Hn),this.type===m.iM.ORBITING||this.type===m.iM.EXPLORING?this._getDistance():this.type===m.iM.TRACKING&&Me.IH(this.focalPoint,Hn,this.distanceVector),this.triggerUpdate(),this}},{key:"cancelLandmarkAnimation",value:function(){this.landmarkAnimationID!==void 0&&this.canvas.cancelAnimationFrame(this.landmarkAnimationID)}},{key:"createLandmark",value:function(Lt){var Sn,Hn,ar,Hr,fi=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Qi=fi.position,As=Qi===void 0?this.position:Qi,ks=fi.focalPoint,Is=ks===void 0?this.focalPoint:ks,Ks=fi.roll,Ya=fi.zoom,Ba=new m.GZ.CameraContribution;Ba.setType(this.type,void 0),Ba.setPosition(As[0],(Sn=As[1])!==null&&Sn!==void 0?Sn:this.position[1],(Hn=As[2])!==null&&Hn!==void 0?Hn:this.position[2]),Ba.setFocalPoint(Is[0],(ar=Is[1])!==null&&ar!==void 0?ar:this.focalPoint[1],(Hr=Is[2])!==null&&Hr!==void 0?Hr:this.focalPoint[2]),Ba.setRoll(Ks!=null?Ks:this.roll),Ba.setZoom(Ya!=null?Ya:this.zoom);var Wa={name:Lt,matrix:ue.clone(Ba.getWorldTransform()),right:Me.d9(Ba.right),up:Me.d9(Ba.up),forward:Me.d9(Ba.forward),position:Me.d9(Ba.getPosition()),focalPoint:Me.d9(Ba.getFocalPoint()),distanceVector:Me.d9(Ba.getDistanceVector()),distance:Ba.getDistance(),dollyingStep:Ba.getDollyingStep(),azimuth:Ba.getAzimuth(),elevation:Ba.getElevation(),roll:Ba.getRoll(),relAzimuth:Ba.relAzimuth,relElevation:Ba.relElevation,relRoll:Ba.relRoll,zoom:Ba.getZoom()};return this.landmarks.push(Wa),Wa}},{key:"gotoLandmark",value:function(Lt){var Sn=this,Hn=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ar=(0,j.Z)(Lt)?this.landmarks.find(function(Xu){return Xu.name===Lt}):Lt;if(ar){var Hr=(0,Q.Z)(Hn)?{duration:Hn}:Hn,fi=Hr.easing,Qi=fi===void 0?"linear":fi,As=Hr.duration,ks=As===void 0?100:As,Is=Hr.easingFunction,Ks=Is===void 0?void 0:Is,Ya=Hr.onfinish,Ba=Ya===void 0?void 0:Ya,Wa=Hr.onframe,Mi=Wa===void 0?void 0:Wa,Do=.01;this.cancelLandmarkAnimation();var Hl=ar.position,Gl=ar.focalPoint,zl=ar.zoom,Tl=ar.roll,Oc=Ks||m.GZ.EasingFunction(Qi),hc,sc=function(){Sn.setFocalPoint(Gl),Sn.setPosition(Hl),Sn.setRoll(Tl),Sn.setZoom(zl),Sn.computeMatrix(),Sn.triggerUpdate(),Ba==null||Ba()};if(ks===0)return sc();var tu=function(nl){hc===void 0&&(hc=nl);var Ql=nl-hc;if(Ql>=ks){sc();return}var Cl=Oc(Ql/ks),Kc=Me.Ue(),Xs=Me.Ue(),Uf=1,of=0;Me.t7(Kc,Sn.focalPoint,Gl,Cl),Me.t7(Xs,Sn.position,Hl,Cl),of=Sn.roll*(1-Cl)+Tl*Cl,Uf=Sn.zoom*(1-Cl)+zl*Cl,Sn.setFocalPoint(Kc),Sn.setPosition(Xs),Sn.setRoll(of),Sn.setZoom(Uf);var Df=Me.TK(Kc,Gl)+Me.TK(Xs,Hl);if(Df<=Do&&zl===void 0&&Tl===void 0)return sc();Sn.computeMatrix(),Sn.triggerUpdate(),QlCl*Cl+Kc*Kc&&(hc=tu,sc=Xu),{cx:hc,cy:sc,x0:-As,y0:-ks,x1:hc*(Sn/zl-1),y1:sc*(Sn/zl-1)}}function Qs($n,Ut){return Ut=Ut<0&&$n>=0?Ut+xr:Ut,Ut-$n<=$r?0:1}var Na=function($n){function Ut(Kt){var Lt;return(0,K.Z)(this,Ut),Lt=(0,L.Z)(this,Ut,[Kt]),Lt.updatePath(),Lt}return(0,T.Z)(Ut,$n),(0,H.Z)(Ut,[{key:"setAttribute",value:function(Lt,Sn,Hn){(0,_t.Z)(Ut,"setAttribute",this,3)([Lt,Sn,Hn]),["startAngle","endAngle","sr","sr0","radius"].indexOf(Lt)>-1&&this.updatePath()}},{key:"updatePath",value:function(){var Lt=this.parsedStyle,Sn=Lt.x,Hn=Lt.y,ar=Lt.startAngle,Hr=Lt.endAngle,fi=Lt.sr,Qi=Lt.sr0,As=Lt.radius,ks=this.createPath(Sn,Hn,ar?(0,m.Vl)(ar):0,Hr?(0,m.Vl)(Hr):Math.PI*2,fi||0,Qi||0,As||[0,0,0,0]);(0,_t.Z)(Ut,"setAttribute",this,3)(["d",ks])}},{key:"createPath",value:function(Lt,Sn,Hn,ar,Hr,fi,Qi){if(!(Hr<=0)){var As=Oi(Lt,Sn,Hr,Hn),ks=Oi(Lt,Sn,Hr,ar),Is=Oi(Lt,Sn,fi,Hn),Ks=Oi(Lt,Sn,fi,ar);if((0,Y.Z)(ar-Hn,Math.PI*2)){var Ya=Oi(Lt,Sn,Hr,Hn+Math.PI),Ba=Oi(Lt,Sn,fi,Hn+Math.PI),Wa=[["M",As.x,As.y],["A",Hr,Hr,0,1,1,Ya.x,Ya.y],["A",Hr,Hr,0,1,1,ks.x,ks.y],["M",Is.x,Is.y]];return fi&&(Wa.push(["A",fi,fi,0,1,0,Ba.x,Ba.y]),Wa.push(["A",fi,fi,0,1,0,Ks.x,Ks.y])),Wa.push(["M",As.x,As.y]),Wa.push(["Z"]),Wa}var Mi=ar-Hn,Do=Hr*pi(Hn),Hl=Hr*Rr(Hn),Gl=fi*pi(ar),zl=fi*Rr(ar),Tl=Hr*pi(ar),Oc=Hr*Rr(ar),hc=fi*pi(Hn),sc=fi*Rr(Hn),tu=(0,B.Z)(Qi,4),Xu=tu[0],nl=tu[1],Ql=tu[2],Cl=tu[3],Kc=(Hr-fi)/2,Xs=xs(Kc,Xu),Uf=xs(Kc,nl),of=xs(Kc,Ql),Df=xs(Kc,Cl),Sf=zr(Xs,Uf),Du=zr(of,Df),ju=Sf,pu=Du;if((Sf>ms||Du>ms)&&Mi<$r){var $c=Ds(Do,Hl,hc,sc,Tl,Oc,Gl,zl);if($c){var lf=Do-$c[0],Nh=Hl-$c[1],Po=Tl-$c[0],cf=Oc-$c[1],Zh=1/Rr(Tn((lf*Po+Nh*cf)/(ni(lf*lf+Nh*Nh)*ni(Po*Po+cf*cf)))/2),Lh=ni($c[0]*$c[0]+$c[1]*$c[1]);ju=xs(Sf,(Hr-Lh)/(Zh+1)),pu=xs(Du,(fi-Lh)/(Zh-1))}}var kc=Qs(Hn,ar),yl=!0,xl=[];if(ju>ms){var Of=xs(Xu,ju),nu=xs(nl,ju),Rc=Bi(hc,sc,Do,Hl,Hr,Of,yl),rl=Bi(Tl,Oc,Gl,zl,Hr,nu,yl);if(xl.push(["M",Lt+Rc.cx+Rc.x0,Sn+Rc.cy+Rc.y0]),ju0){var Kh=ir(Rc.y0,Rc.x0),_l=ir(Rc.y1,Rc.x1),Ss=Oi(Lt,Sn,Hr,_l);xl.push(["A",Of,Of,0,Qs(Kh,_l),1,Ss.x,Ss.y])}var Ru=ir(Rc.cy+Rc.y1,Rc.cx+Rc.x1),$h=ir(rl.cy+rl.y1,rl.cx+rl.x1),Xh=Oi(Lt,Sn,Hr,$h);if(xl.push(["A",Hr,Hr,0,Qs(Ru,$h),1,Xh.x,Xh.y]),nu>0){var QA=ir(rl.y1,rl.x1),Eh=ir(rl.y0,rl.x0);xl.push(["A",nu,nu,0,Qs(QA,Eh),1,Lt+rl.cx+rl.x0,Sn+rl.cy+rl.y0])}}}else xl.push(["M",As.x,As.y]),xl.push(["A",Hr,Hr,0,kc,1,ks.x,ks.y]);if(fims){var uf=xs(Cl,pu),jh=xs(Ql,pu),Pc=Bi(Gl,zl,0,0,fi-Hr,jh,yl),Xc=Bi(0,0,hc,sc,fi-Hr,uf,yl);if(xl.push(["L",Lt+Pc.cx+Pc.x0,Sn+Pc.cy+Pc.y0]),pu0){var sl=ir(Pc.y0,Pc.x0),Bl=ir(Pc.y1,Pc.x1),ac=Oi(Lt,Sn,fi-Hr,Bl);xl.push(["A",jh,jh,0,Qs(sl,Bl),1,ac.x,ac.y])}var lu=ir(Pc.cy+Pc.y1,Pc.cx+Pc.x1),Ou=ir(Xc.cy+Xc.y1,Xc.cx+Xc.x1),al=Oi(Lt,Sn,fi,Ou);if(xl.push(["A",fi,fi,0,Qs(Ou,lu),0,al.x,al.y]),xl.push(["L",al.x,al.y]),uf>0){var ul=ir(Xc.y1,Xc.x1),hl=ir(Xc.y0,Xc.x0);xl.push(["A",uf,uf,0,Qs(ul,hl),1,Lt+Xc.cx+Xc.x0,Sn+Xc.cy+Xc.y0])}}}else xl.push(["L",Ks.x,Ks.y]),xl.push(["A",fi,fi,0,kc,0,Is.x,Is.y]);return xl.push(["Z"]),xl}}}])}(m.y$);Na.PARSED_STYLE_LIST=new Set([].concat((0,F.Z)(m.y$.PARSED_STYLE_LIST),["x","y","sr","sr0","radius","startAngle","endAngle"]))},67469:function(Ie,Be,_){"use strict";_.d(Be,{k:function(){return L}});var m=_(49336),K=_(54648),H=_(7663);class L extends m.Z{constructor(B){super();ph(this,"nodeMap",new Map);ph(this,"edgeMap",new Map);ph(this,"inEdgesMap",new Map);ph(this,"outEdgesMap",new Map);ph(this,"bothEdgesMap",new Map);ph(this,"treeIndices",new Map);ph(this,"changes",[]);ph(this,"batchCount",0);ph(this,"onChanged",()=>{});ph(this,"batch",B=>{this.batchCount+=1,B(),this.batchCount-=1,this.batchCount||this.commit()});B&&(B.nodes&&this.addNodes(B.nodes),B.edges&&this.addEdges(B.edges),B.tree&&this.addTree(B.tree),B.onChanged&&(this.onChanged=B.onChanged))}commit(){const B=this.changes;this.changes=[];const U={graph:this,changes:B};this.emit("changed",U),this.onChanged(U)}reduceChanges(B){let U=[];return B.forEach(Q=>{switch(Q.type){case"NodeRemoved":{let V=!1;U=U.filter(j=>{if(j.type==="NodeAdded"){const Y=j.value.id===Q.value.id;return Y&&(V=!0),!Y}else{if(j.type==="NodeDataUpdated")return j.id!==Q.value.id;if(j.type==="TreeStructureChanged")return j.nodeId!==Q.value.id}return!0}),V||U.push(Q);break}case"EdgeRemoved":{let V=!1;U=U.filter(j=>{if(j.type==="EdgeAdded"){const Y=j.value.id===Q.value.id;return Y&&(V=!0),!Y}else if(j.type==="EdgeDataUpdated"||j.type==="EdgeUpdated")return j.id!==Q.value.id;return!0}),V||U.push(Q);break}case"NodeDataUpdated":case"EdgeDataUpdated":case"EdgeUpdated":{const V=U.findIndex(Y=>Y.type===Q.type&&Y.id===Q.id&&(Q.propertyName===void 0||Y.propertyName===Q.propertyName)),j=U[V];j?Q.propertyName!==void 0?j.newValue=Q.newValue:(U.splice(V,1),U.push(Q)):U.push(Q);break}case"TreeStructureDetached":{U=U.filter(V=>V.type==="TreeStructureAttached"||V.type==="TreeStructureChanged"?V.treeKey!==Q.treeKey:!0),U.push(Q);break}case"TreeStructureChanged":{const V=U.find(j=>j.type==="TreeStructureChanged"&&j.treeKey===Q.treeKey&&j.nodeId===Q.nodeId);V?V.newParentId=Q.newParentId:U.push(Q);break}default:U.push(Q);break}}),U}checkNodeExistence(B){this.getNode(B)}hasNode(B){return this.nodeMap.has(B)}areNeighbors(B,U){return this.getNeighbors(U).some(Q=>Q.id===B)}getNode(B){const U=this.nodeMap.get(B);if(!U)throw new Error("Node not found for id: "+B);return U}getRelatedEdges(B,U){if(this.checkNodeExistence(B),U==="in"){const Q=this.inEdgesMap.get(B);return Array.from(Q)}else if(U==="out"){const Q=this.outEdgesMap.get(B);return Array.from(Q)}else{const Q=this.bothEdgesMap.get(B);return Array.from(Q)}}getDegree(B,U){return this.getRelatedEdges(B,U).length}getSuccessors(B){const Q=this.getRelatedEdges(B,"out").map(V=>this.getNode(V.target));return Array.from(new Set(Q))}getPredecessors(B){const Q=this.getRelatedEdges(B,"in").map(V=>this.getNode(V.source));return Array.from(new Set(Q))}getNeighbors(B){const U=this.getPredecessors(B),Q=this.getSuccessors(B);return Array.from(new Set([...U,...Q]))}doAddNode(B){if(this.hasNode(B.id))throw new Error("Node already exists: "+B.id);this.nodeMap.set(B.id,B),this.inEdgesMap.set(B.id,new Set),this.outEdgesMap.set(B.id,new Set),this.bothEdgesMap.set(B.id,new Set),this.treeIndices.forEach(U=>{U.childrenMap.set(B.id,new Set)}),this.changes.push({type:"NodeAdded",value:B})}addNodes(B){this.batch(()=>{for(const U of B)this.doAddNode(U)})}addNode(B){this.addNodes([B])}doRemoveNode(B){const U=this.getNode(B),Q=this.bothEdgesMap.get(B);Q==null||Q.forEach(V=>this.doRemoveEdge(V.id)),this.nodeMap.delete(B),this.treeIndices.forEach(V=>{var Y,fe;(Y=V.childrenMap.get(B))==null||Y.forEach(ue=>{V.parentMap.delete(ue.id)});const j=V.parentMap.get(B);j&&((fe=V.childrenMap.get(j.id))==null||fe.delete(U)),V.parentMap.delete(B),V.childrenMap.delete(B)}),this.bothEdgesMap.delete(B),this.inEdgesMap.delete(B),this.outEdgesMap.delete(B),this.changes.push({type:"NodeRemoved",value:U})}removeNodes(B){this.batch(()=>{B.forEach(U=>this.doRemoveNode(U))})}removeNode(B){this.removeNodes([B])}updateNodeDataProperty(B,U,Q){const V=this.getNode(B);this.batch(()=>{const j=V.data[U],Y=Q;V.data[U]=Y,this.changes.push({type:"NodeDataUpdated",id:B,propertyName:U,oldValue:j,newValue:Y})})}mergeNodeData(B,U){this.batch(()=>{Object.entries(U).forEach(([Q,V])=>{this.updateNodeDataProperty(B,Q,V)})})}updateNodeData(...B){const U=B[0],Q=this.getNode(U);if(typeof B[1]=="string"){this.updateNodeDataProperty(U,B[1],B[2]);return}let V;if(typeof B[1]=="function"){const j=B[1];V=j(Q.data)}else typeof B[1]=="object"&&(V=B[1]);this.batch(()=>{const j=Q.data,Y=V;Q.data=V,this.changes.push({type:"NodeDataUpdated",id:U,oldValue:j,newValue:Y})})}checkEdgeExistence(B){if(!this.hasEdge(B))throw new Error("Edge not found for id: "+B)}hasEdge(B){return this.edgeMap.has(B)}getEdge(B){return this.checkEdgeExistence(B),this.edgeMap.get(B)}getEdgeDetail(B){const U=this.getEdge(B);return{edge:U,source:this.getNode(U.source),target:this.getNode(U.target)}}doAddEdge(B){if(this.hasEdge(B.id))throw new Error("Edge already exists: "+B.id);this.checkNodeExistence(B.source),this.checkNodeExistence(B.target),this.edgeMap.set(B.id,B);const U=this.inEdgesMap.get(B.target),Q=this.outEdgesMap.get(B.source),V=this.bothEdgesMap.get(B.source),j=this.bothEdgesMap.get(B.target);U.add(B),Q.add(B),V.add(B),j.add(B),this.changes.push({type:"EdgeAdded",value:B})}addEdges(B){this.batch(()=>{for(const U of B)this.doAddEdge(U)})}addEdge(B){this.addEdges([B])}doRemoveEdge(B){const U=this.getEdge(B),Q=this.outEdgesMap.get(U.source),V=this.inEdgesMap.get(U.target),j=this.bothEdgesMap.get(U.source),Y=this.bothEdgesMap.get(U.target);Q.delete(U),V.delete(U),j.delete(U),Y.delete(U),this.edgeMap.delete(B),this.changes.push({type:"EdgeRemoved",value:U})}removeEdges(B){this.batch(()=>{B.forEach(U=>this.doRemoveEdge(U))})}removeEdge(B){this.removeEdges([B])}updateEdgeSource(B,U){const Q=this.getEdge(B);this.checkNodeExistence(U);const V=Q.source,j=U;this.outEdgesMap.get(V).delete(Q),this.bothEdgesMap.get(V).delete(Q),this.outEdgesMap.get(j).add(Q),this.bothEdgesMap.get(j).add(Q),Q.source=U,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:B,propertyName:"source",oldValue:V,newValue:j})})}updateEdgeTarget(B,U){const Q=this.getEdge(B);this.checkNodeExistence(U);const V=Q.target,j=U;this.inEdgesMap.get(V).delete(Q),this.bothEdgesMap.get(V).delete(Q),this.inEdgesMap.get(j).add(Q),this.bothEdgesMap.get(j).add(Q),Q.target=U,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:B,propertyName:"target",oldValue:V,newValue:j})})}updateEdgeDataProperty(B,U,Q){const V=this.getEdge(B);this.batch(()=>{const j=V.data[U],Y=Q;V.data[U]=Y,this.changes.push({type:"EdgeDataUpdated",id:B,propertyName:U,oldValue:j,newValue:Y})})}updateEdgeData(...B){const U=B[0],Q=this.getEdge(U);if(typeof B[1]=="string"){this.updateEdgeDataProperty(U,B[1],B[2]);return}let V;if(typeof B[1]=="function"){const j=B[1];V=j(Q.data)}else typeof B[1]=="object"&&(V=B[1]);this.batch(()=>{const j=Q.data,Y=V;Q.data=V,this.changes.push({type:"EdgeDataUpdated",id:U,oldValue:j,newValue:Y})})}mergeEdgeData(B,U){this.batch(()=>{Object.entries(U).forEach(([Q,V])=>{this.updateEdgeDataProperty(B,Q,V)})})}checkTreeExistence(B){if(!this.hasTreeStructure(B))throw new Error("Tree structure not found for treeKey: "+B)}hasTreeStructure(B){return this.treeIndices.has(B)}attachTreeStructure(B){this.treeIndices.has(B)||(this.treeIndices.set(B,{parentMap:new Map,childrenMap:new Map}),this.batch(()=>{this.changes.push({type:"TreeStructureAttached",treeKey:B})}))}detachTreeStructure(B){this.checkTreeExistence(B),this.treeIndices.delete(B),this.batch(()=>{this.changes.push({type:"TreeStructureDetached",treeKey:B})})}addTree(B,U){this.batch(()=>{this.attachTreeStructure(U);const Q=[],V=Array.isArray(B)?B:[B];for(;V.length;){const j=V.shift();Q.push(j),j.children&&V.push(...j.children)}this.addNodes(Q),Q.forEach(j=>{var Y;(Y=j.children)==null||Y.forEach(fe=>{this.setParent(fe.id,j.id,U)})})})}getRoots(B){return this.checkTreeExistence(B),this.getAllNodes().filter(U=>!this.getParent(U.id,B))}getChildren(B,U){this.checkNodeExistence(B),this.checkTreeExistence(U);const V=this.treeIndices.get(U).childrenMap.get(B);return Array.from(V||[])}getParent(B,U){return this.checkNodeExistence(B),this.checkTreeExistence(U),this.treeIndices.get(U).parentMap.get(B)||null}getAncestors(B,U){const Q=[];let V=this.getNode(B),j;for(;j=this.getParent(V.id,U);)Q.push(j),V=j;return Q}setParent(B,U,Q){var Me,_e;this.checkTreeExistence(Q);const V=this.treeIndices.get(Q);if(!V)return;const j=this.getNode(B),Y=V.parentMap.get(B);if((Y==null?void 0:Y.id)===U)return;if(U==null){Y&&((Me=V.childrenMap.get(Y.id))==null||Me.delete(j)),V.parentMap.delete(B);return}const fe=this.getNode(U);V.parentMap.set(B,fe),Y&&((_e=V.childrenMap.get(Y.id))==null||_e.delete(j));let ue=V.childrenMap.get(fe.id);ue||(ue=new Set,V.childrenMap.set(fe.id,ue)),ue.add(j),this.batch(()=>{this.changes.push({type:"TreeStructureChanged",treeKey:Q,nodeId:B,oldParentId:Y==null?void 0:Y.id,newParentId:fe.id})})}dfsTree(B,U,Q){const V=j=>this.getChildren(j,Q);return(0,H.I)(this.getNode(B),new Set,U,V)}bfsTree(B,U,Q){const V=j=>this.getChildren(j,Q);return(0,H.O)([this.getNode(B)],new Set,U,V)}getAllNodes(){return Array.from(this.nodeMap.values())}getAllEdges(){return Array.from(this.edgeMap.values())}bfs(B,U,Q="out"){const V={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[Q];return(0,H.O)([this.getNode(B)],new Set,U,V)}dfs(B,U,Q="out"){const V={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[Q];return(0,H.I)(this.getNode(B),new Set,U,V)}clone(){const B=this.getAllNodes().map(V=>cA(Dc({},V),{data:Dc({},V.data)})),U=this.getAllEdges().map(V=>cA(Dc({},V),{data:Dc({},V.data)})),Q=new L({nodes:B,edges:U});return this.treeIndices.forEach(({parentMap:V,childrenMap:j},Y)=>{const fe=new Map;V.forEach((Me,_e)=>{fe.set(_e,Q.getNode(Me.id))});const ue=new Map;j.forEach((Me,_e)=>{ue.set(_e,new Set(Array.from(Me).map(Ce=>Q.getNode(Ce.id))))}),Q.treeIndices.set(Y,{parentMap:fe,childrenMap:ue})}),Q}toJSON(){return JSON.stringify({nodes:this.getAllNodes(),edges:this.getAllEdges()})}createView(B){return new K.t(Dc({graph:this},B))}}},54648:function(Ie,Be,_){"use strict";_.d(Be,{t:function(){return H}});var m=_(7663);const K=()=>!0;class H{constructor(T){ph(this,"graph");ph(this,"nodeFilter");ph(this,"edgeFilter");ph(this,"cacheEnabled");ph(this,"inEdgesMap",new Map);ph(this,"outEdgesMap",new Map);ph(this,"bothEdgesMap",new Map);ph(this,"allNodesMap",new Map);ph(this,"allEdgesMap",new Map);ph(this,"clearCache",()=>{this.inEdgesMap.clear(),this.outEdgesMap.clear(),this.bothEdgesMap.clear(),this.allNodesMap.clear(),this.allEdgesMap.clear()});ph(this,"refreshCache",()=>{this.clearCache(),this.updateCache(this.graph.getAllNodes().map(T=>T.id))});ph(this,"updateCache",T=>{const F=new Set;T.forEach(B=>{const U=this.bothEdgesMap.get(B);if(U&&U.forEach(Q=>F.add(Q.id)),!this.hasNode(B))this.inEdgesMap.delete(B),this.outEdgesMap.delete(B),this.bothEdgesMap.delete(B),this.allNodesMap.delete(B);else{const Q=this.graph.getRelatedEdges(B,"in").filter(this.edgeFilter),V=this.graph.getRelatedEdges(B,"out").filter(this.edgeFilter),j=Array.from(new Set([...Q,...V]));j.forEach(Y=>F.add(Y.id)),this.inEdgesMap.set(B,Q),this.outEdgesMap.set(B,V),this.bothEdgesMap.set(B,j),this.allNodesMap.set(B,this.graph.getNode(B))}}),F.forEach(B=>{this.hasEdge(B)?this.allEdgesMap.set(B,this.graph.getEdge(B)):this.allEdgesMap.delete(B)})});ph(this,"handleGraphChanged",T=>{const F=new Set;T.changes.forEach(B=>{switch(B.type){case"NodeAdded":F.add(B.value.id);break;case"NodeDataUpdated":F.add(B.id);break;case"EdgeAdded":F.add(B.value.source),F.add(B.value.target);break;case"EdgeUpdated":(B.propertyName==="source"||B.propertyName==="target")&&(F.add(B.oldValue),F.add(B.newValue));break;case"EdgeDataUpdated":if(T.graph.hasEdge(B.id)){const U=T.graph.getEdge(B.id);F.add(U.source),F.add(U.target)}break;case"EdgeRemoved":F.add(B.value.source),F.add(B.value.target);break;case"NodeRemoved":F.add(B.value.id);break;default:break}}),this.updateCache(F)});this.graph=T.graph;const F=T.nodeFilter||K,B=T.edgeFilter||K;this.nodeFilter=F,this.edgeFilter=U=>{const{source:Q,target:V}=this.graph.getEdgeDetail(U.id);return!F(Q)||!F(V)?!1:B(U,Q,V)},T.cache==="auto"?(this.cacheEnabled=!0,this.startAutoCache()):T.cache==="manual"?this.cacheEnabled=!0:this.cacheEnabled=!1}startAutoCache(){this.refreshCache(),this.graph.on("changed",this.handleGraphChanged)}stopAutoCache(){this.graph.off("changed",this.handleGraphChanged)}checkNodeExistence(T){this.getNode(T)}hasNode(T){if(!this.graph.hasNode(T))return!1;const F=this.graph.getNode(T);return this.nodeFilter(F)}areNeighbors(T,F){return this.checkNodeExistence(T),this.getNeighbors(F).some(B=>B.id===T)}getNode(T){const F=this.graph.getNode(T);if(!this.nodeFilter(F))throw new Error("Node not found for id: "+T);return F}getRelatedEdges(T,F){return this.checkNodeExistence(T),this.cacheEnabled?F==="in"?this.inEdgesMap.get(T):F==="out"?this.outEdgesMap.get(T):this.bothEdgesMap.get(T):this.graph.getRelatedEdges(T,F).filter(this.edgeFilter)}getDegree(T,F){return this.getRelatedEdges(T,F).length}getSuccessors(T){const B=this.getRelatedEdges(T,"out").map(U=>this.getNode(U.target));return Array.from(new Set(B))}getPredecessors(T){const B=this.getRelatedEdges(T,"in").map(U=>this.getNode(U.source));return Array.from(new Set(B))}getNeighbors(T){const F=this.getPredecessors(T),B=this.getSuccessors(T);return Array.from(new Set([...F,...B]))}hasEdge(T){if(!this.graph.hasEdge(T))return!1;const F=this.graph.getEdge(T);return this.edgeFilter(F)}getEdge(T){const F=this.graph.getEdge(T);if(!this.edgeFilter(F))throw new Error("Edge not found for id: "+T);return F}getEdgeDetail(T){const F=this.getEdge(T);return{edge:F,source:this.getNode(F.source),target:this.getNode(F.target)}}hasTreeStructure(T){return this.graph.hasTreeStructure(T)}getRoots(T){return this.graph.getRoots(T).filter(this.nodeFilter)}getChildren(T,F){return this.checkNodeExistence(T),this.graph.getChildren(T,F).filter(this.nodeFilter)}getParent(T,F){this.checkNodeExistence(T);const B=this.graph.getParent(T,F);return!B||!this.nodeFilter(B)?null:B}getAllNodes(){return this.cacheEnabled?Array.from(this.allNodesMap.values()):this.graph.getAllNodes().filter(this.nodeFilter)}getAllEdges(){return this.cacheEnabled?Array.from(this.allEdgesMap.values()):this.graph.getAllEdges().filter(this.edgeFilter)}bfs(T,F,B="out"){const U={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[B];(0,m.O)([this.getNode(T)],new Set,F,U)}dfs(T,F,B="out"){const U={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[B];(0,m.I)(this.getNode(T),new Set,F,U)}}},7663:function(Ie,Be,_){"use strict";_.d(Be,{I:function(){return K},O:function(){return m}});function m(H,L,T,F){for(;H.length;){const B=H.shift();if(T(B))return!0;L.add(B.id),F(B.id).forEach(Q=>{L.has(Q.id)||(L.add(Q.id),H.push(Q))})}return!1}function K(H,L,T,F){if(T(H))return!0;L.add(H.id);for(const U of F(H.id))if(!L.has(U.id)&&K(U,L,T,F))return!0;return!1}},85580:function(Ie,Be,_){"use strict";_.d(Be,{L:function(){return m}});function m(K){var H=document.createElement("div");H.innerHTML=K;var L=H.childNodes[0];return L&&H.contains(L)&&H.removeChild(L),L}},70208:function(Ie,Be){"use strict";var _=function(m,K,H){return mH?H:m};Be.Z=_},37547:function(Ie,Be,_){"use strict";var m=_(39934),K=function(H){if(typeof H!="object"||H===null)return H;var L;if((0,m.Z)(H)){L=[];for(var T=0,F=H.length;T-1:!1},T=L,F=function(U,Q){return Q===void 0&&(Q=[]),H(U,function(V){return!T(Q,V)})},B=F},56039:function(Ie,Be,_){"use strict";var m=_(39934),K=_(93785);function H(L,T){if(L){var F;if((0,m.Z)(L))for(var B=0,U=L.length;BU&&(B=F,V(1),++T),F[j]=Y}function V(j){T=0,F=Object.create(null),j||(B=Object.create(null))}return V(),{clear:V,has:function(j){return F[j]!==void 0||B[j]!==void 0},get:function(j){var Y=F[j];if(Y!==void 0)return Y;if((Y=B[j])!==void 0)return Q(j,Y),Y},set:function(j,Y){F[j]!==void 0?F[j]=Y:Q(j,Y)}}}var K=new Map;function H(L,T,F){F===void 0&&(F=128);var B=function(){for(var U=[],Q=0;Qm?(H&&(clearTimeout(H),H=null),B=V,F=_.apply(L,T),H||(L=T=null)):!H&&K.trailing!==!1&&(H=setTimeout(U,j)),F};return Q.cancel=function(){clearTimeout(H),B=0,H=L=T=null},Q}},96862:function(Ie,Be,_){"use strict";var m=_(76075);Be.Z=function(K){return(0,m.Z)(K)?"":K.toString()}},35300:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return m}});function m(K,H){H===void 0&&(H=new Map);var L=[];if(Array.isArray(K))for(var T=0,F=K.length;T1&&(kn=Math.sqrt(kn),Me*=kn,_e*=kn);var Kn=Me*Me,_r=_e*_e,bn=(U===Q?-1:1)*Math.sqrt(Math.abs((Kn*_r-Kn*rr*rr-_r*jn*jn)/(Kn*rr*rr+_r*jn*jn)));Fn=bn*Me*rr/_e+(fe+Ce)/2,Ot=bn*-_e*jn/Me+(ue+Xe)/2,Vt=Math.asin(((ue-Ot)/_e*Math.pow(10,9)>>0)/Math.pow(10,9)),It=Math.asin(((Xe-Ot)/_e*Math.pow(10,9)>>0)/Math.pow(10,9)),Vt=feIt&&(Vt-=Math.PI*2),!Q&&It>Vt&&(It-=Math.PI*2)}var Cr=It-Vt;if(Math.abs(Cr)>Fe){var Ke=It,Rt=Ce,Qn=Xe;It=Vt+Fe*(Q&&It>Vt?1:-1),Ce=Fn+Me*Math.cos(It),Xe=Ot+_e*Math.sin(It),_t=K(Ce,Xe,Me,_e,B,0,Q,Rt,Qn,[It,Ke,Fn,Ot])}Cr=It-Vt;var Yr=Math.cos(Vt),rn=Math.sin(Vt),An=Math.cos(It),Ln=Math.sin(It),Tt=Math.tan(Cr/4),Mt=4/3*Me*Tt,ge=4/3*_e*Tt,pe=[fe,ue],De=[fe+Mt*rn,ue-ge*Yr],Ht=[Ce+Mt*Ln,Xe-ge*An],Jt=[Ce,Xe];if(De[0]=2*pe[0]-De[0],De[1]=2*pe[1]-De[1],Y)return De.concat(Ht,Jt,_t);_t=De.concat(Ht,Jt,_t);for(var At=[],dn=0,fn=_t.length;dn{throw TypeError(Le)},L=Math.pow,T=(Le,k,W)=>k in Le?K(Le,k,{enumerable:!0,configurable:!0,writable:!0,value:W}):Le[k]=W,F=(Le,k,W)=>T(Le,typeof k!="symbol"?k+"":k,W),B=(Le,k,W)=>k.has(Le)||H("Cannot "+W),U=(Le,k,W)=>(B(Le,k,"read from private field"),W?W.call(Le):k.get(Le)),Q=(Le,k,W)=>k.has(Le)?H("Cannot add the same private member more than once"):k instanceof WeakSet?k.add(Le):k.set(Le,W),V=(Le,k,W,S)=>(B(Le,k,"write to private field"),S?S.call(Le,W):k.set(Le,W),W),j=(Le,k,W)=>(B(Le,k,"access private method"),W),Y,fe,ue;m={value:!0};var Me=_(34634),_e=_(34402);const Ce=" ".repeat(2),Xe=" ".repeat(4);function Fe(){return ft(this)}function ft(Le,k={}){const{maxRows:W=15,maxColumns:S=10,maxNumSize:G=8,padMinus:ae="auto"}=k;return`${Le.constructor.name} { +${Ce}[ +${Xe}${_t(Le,W,S,G,ae)} +${Ce}] +${Ce}rows: ${Le.rows} +${Ce}columns: ${Le.columns} +}`}function _t(Le,k,W,S,G){const{rows:ae,columns:We}=Le,tt=Math.min(ae,k),gt=Math.min(We,W),bt=[];if(G==="auto"){G=!1;e:for(let Bn=0;Bn=0&&W?` ${Vt(Le,k-1)}`:Vt(Le,k)).padEnd(k)}function Vt(Le,k){let W=Le.toString();if(W.length<=k)return W;let S=Le.toFixed(k);if(S.length>k&&(S=Le.toFixed(Math.max(0,k-(S.length-k)))),S.length<=k&&!S.startsWith("0.000")&&!S.startsWith("-0.000"))return S;let G=Le.toExponential(k);return G.length>k&&(G=Le.toExponential(Math.max(0,k-(G.length-k)))),G.slice(0)}function It(Le,k){Le.prototype.add=function(S){return typeof S=="number"?this.addS(S):this.addM(S)},Le.prototype.addS=function(S){for(let G=0;G>S);return this},Le.prototype.signPropagatingRightShiftM=function(S){if(S=k.checkMatrix(S),this.rows!==S.rows||this.columns!==S.columns)throw new RangeError("Matrices dimensions must be equal");for(let G=0;G>S.get(G,ae));return this},Le.signPropagatingRightShift=function(S,G){return new k(S).signPropagatingRightShift(G)},Le.prototype.rightShift=function(S){return typeof S=="number"?this.rightShiftS(S):this.rightShiftM(S)},Le.prototype.rightShiftS=function(S){for(let G=0;G>>S);return this},Le.prototype.rightShiftM=function(S){if(S=k.checkMatrix(S),this.rows!==S.rows||this.columns!==S.columns)throw new RangeError("Matrices dimensions must be equal");for(let G=0;G>>S.get(G,ae));return this},Le.rightShift=function(S,G){return new k(S).rightShift(G)},Le.prototype.zeroFillRightShift=Le.prototype.rightShift,Le.prototype.zeroFillRightShiftS=Le.prototype.rightShiftS,Le.prototype.zeroFillRightShiftM=Le.prototype.rightShiftM,Le.zeroFillRightShift=Le.rightShift,Le.prototype.not=function(){for(let S=0;SS)throw new RangeError("Row index out of range")}function Ot(Le,k,W){let S=W?Le.columns:Le.columns-1;if(k<0||k>S)throw new RangeError("Column index out of range")}function jn(Le,k){if(k.to1DArray&&(k=k.to1DArray()),k.length!==Le.columns)throw new RangeError("vector size must be the same as the number of columns");return k}function rr(Le,k){if(k.to1DArray&&(k=k.to1DArray()),k.length!==Le.rows)throw new RangeError("vector size must be the same as the number of rows");return k}function kn(Le,k){if(!Me.isAnyArray(k))throw new TypeError("row indices must be an array");for(let W=0;W=Le.rows)throw new RangeError("row indices are out of range")}function Kn(Le,k){if(!Me.isAnyArray(k))throw new TypeError("column indices must be an array");for(let W=0;W=Le.columns)throw new RangeError("column indices are out of range")}function _r(Le,k,W,S,G){if(arguments.length!==5)throw new RangeError("expected 4 arguments");if(Cr("startRow",k),Cr("endRow",W),Cr("startColumn",S),Cr("endColumn",G),k>W||S>G||k<0||k>=Le.rows||W<0||W>=Le.rows||S<0||S>=Le.columns||G<0||G>=Le.columns)throw new RangeError("Submatrix indices are out of range")}function bn(Le,k=0){let W=[];for(let S=0;S=ae)throw new RangeError("min must be smaller than max");let tt=ae-G,gt=new Gt(k,W);for(let bt=0;btS?(ae=!0,S=W):(G=!1,ae=!0);k++}return G}isReducedEchelonForm(){let k=0,W=0,S=-1,G=!0,ae=!1;for(;kS?(ae=!0,S=W):(G=!1,ae=!0);for(let We=W+1;Wek.get(G,S)&&(G=ae);if(k.get(G,S)===0)S++;else{k.swapRows(W,G);let ae=k.get(W,S);for(let We=S;We=0;)if(k.maxRow(G)===0)G--;else{let ae=0,We=!1;for(;aeW[S]&&(W[S]=this.get(S,G));return W}case"column":{const W=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let S=0;SW[G]&&(W[G]=this.get(S,G));return W}case void 0:{let W=this.get(0,0);for(let S=0;SW&&(W=this.get(S,G));return W}default:throw new Error(`invalid option: ${k}`)}}maxIndex(){Ke(this);let k=this.get(0,0),W=[0,0];for(let S=0;Sk&&(k=this.get(S,G),W[0]=S,W[1]=G);return W}min(k){if(this.isEmpty())return NaN;switch(k){case"row":{const W=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let S=0;SW&&(W=this.get(k,S));return W}maxRowIndex(k){Fn(this,k),Ke(this);let W=this.get(k,0),S=[k,0];for(let G=1;GW&&(W=this.get(k,G),S[1]=G);return S}minRow(k){if(Fn(this,k),this.isEmpty())return NaN;let W=this.get(k,0);for(let S=1;SW&&(W=this.get(S,k));return W}maxColumnIndex(k){Ot(this,k),Ke(this);let W=this.get(0,k),S=[0,k];for(let G=1;GW&&(W=this.get(G,k),S[0]=G);return S}minColumn(k){if(Ot(this,k),this.isEmpty())return NaN;let W=this.get(0,k);for(let S=1;S=1;G/=2)G&1&&(W=W.mmul(S)),S=S.mmul(S);return W}strassen2x2(k){k=Gt.checkMatrix(k);let W=new Gt(2,2);const S=this.get(0,0),G=k.get(0,0),ae=this.get(0,1),We=k.get(0,1),tt=this.get(1,0),gt=k.get(1,0),bt=this.get(1,1),Bn=k.get(1,1),Ge=(S+bt)*(G+Bn),$e=(tt+bt)*G,Ne=S*(We-Bn),Ye=bt*(gt-G),vt=(S+ae)*Bn,an=(tt-S)*(G+We),xt=(ae-bt)*(gt+Bn),tn=Ge+Ye-vt+xt,Un=Ne+vt,hr=$e+Ye,or=Ge-$e+Ne+an;return W.set(0,0,tn),W.set(0,1,Un),W.set(1,0,hr),W.set(1,1,or),W}strassen3x3(k){k=Gt.checkMatrix(k);let W=new Gt(3,3);const S=this.get(0,0),G=this.get(0,1),ae=this.get(0,2),We=this.get(1,0),tt=this.get(1,1),gt=this.get(1,2),bt=this.get(2,0),Bn=this.get(2,1),Ge=this.get(2,2),$e=k.get(0,0),Ne=k.get(0,1),Ye=k.get(0,2),vt=k.get(1,0),an=k.get(1,1),xt=k.get(1,2),tn=k.get(2,0),Un=k.get(2,1),hr=k.get(2,2),or=(S+G+ae-We-tt-Bn-Ge)*an,$r=(S-We)*(-Ne+an),xr=tt*(-$e+Ne+vt-an-xt-tn+hr),Rr=(-S+We+tt)*($e-Ne+an),pi=(We+tt)*(-$e+Ne),Tn=S*$e,ir=(-S+bt+Bn)*($e-Ye+xt),ni=(-S+bt)*(Ye-xt),zr=(bt+Bn)*(-$e+Ye),xs=(S+G+ae-tt-gt-bt-Bn)*xt,ms=Bn*(-$e+Ye+vt-an-xt-tn+Un),ls=(-ae+Bn+Ge)*(an+tn-Un),Oi=(ae-Ge)*(an-Un),Ds=ae*tn,Bi=(Bn+Ge)*(-tn+Un),Qs=(-ae+tt+gt)*(xt+tn-hr),Na=(ae-gt)*(xt-hr),$n=(tt+gt)*(-tn+hr),Ut=G*vt,Kt=gt*Un,Lt=We*Ye,Sn=bt*Ne,Hn=Ge*hr,ar=Tn+Ds+Ut,Hr=or+Rr+pi+Tn+ls+Ds+Bi,fi=Tn+ir+zr+xs+Ds+Qs+$n,Qi=$r+xr+Rr+Tn+Ds+Qs+Na,As=$r+Rr+pi+Tn+Kt,ks=Ds+Qs+Na+$n+Lt,Is=Tn+ir+ni+ms+ls+Oi+Ds,Ks=ls+Oi+Ds+Bi+Sn,Ya=Tn+ir+ni+zr+Hn;return W.set(0,0,ar),W.set(0,1,Hr),W.set(0,2,fi),W.set(1,0,Qi),W.set(1,1,As),W.set(1,2,ks),W.set(2,0,Is),W.set(2,1,Ks),W.set(2,2,Ya),W}mmulStrassen(k){k=Gt.checkMatrix(k);let W=this.clone(),S=W.rows,G=W.columns,ae=k.rows,We=k.columns;G!==ae&&console.warn(`Multiplying ${S} x ${G} and ${ae} x ${We} matrix: dimensions do not match.`);function tt(Ge,$e,Ne){let Ye=Ge.rows,vt=Ge.columns;if(Ye===$e&&vt===Ne)return Ge;{let an=un.zeros($e,Ne);return an=an.setSubMatrix(Ge,0,0),an}}let gt=Math.max(S,ae),bt=Math.max(G,We);W=tt(W,gt,bt),k=tt(k,gt,bt);function Bn(Ge,$e,Ne,Ye){if(Ne<=512||Ye<=512)return Ge.mmul($e);Ne%2===1&&Ye%2===1?(Ge=tt(Ge,Ne+1,Ye+1),$e=tt($e,Ne+1,Ye+1)):Ne%2===1?(Ge=tt(Ge,Ne+1,Ye),$e=tt($e,Ne+1,Ye)):Ye%2===1&&(Ge=tt(Ge,Ne,Ye+1),$e=tt($e,Ne,Ye+1));let vt=parseInt(Ge.rows/2,10),an=parseInt(Ge.columns/2,10),xt=Ge.subMatrix(0,vt-1,0,an-1),tn=$e.subMatrix(0,vt-1,0,an-1),Un=Ge.subMatrix(0,vt-1,an,Ge.columns-1),hr=$e.subMatrix(0,vt-1,an,$e.columns-1),or=Ge.subMatrix(vt,Ge.rows-1,0,an-1),$r=$e.subMatrix(vt,$e.rows-1,0,an-1),xr=Ge.subMatrix(vt,Ge.rows-1,an,Ge.columns-1),Rr=$e.subMatrix(vt,$e.rows-1,an,$e.columns-1),pi=Bn(un.add(xt,xr),un.add(tn,Rr),vt,an),Tn=Bn(un.add(or,xr),tn,vt,an),ir=Bn(xt,un.sub(hr,Rr),vt,an),ni=Bn(xr,un.sub($r,tn),vt,an),zr=Bn(un.add(xt,Un),Rr,vt,an),xs=Bn(un.sub(or,xt),un.add(tn,hr),vt,an),ms=Bn(un.sub(Un,xr),un.add($r,Rr),vt,an),ls=un.add(pi,ni);ls.sub(zr),ls.add(ms);let Oi=un.add(ir,zr),Ds=un.add(Tn,ni),Bi=un.sub(pi,Tn);Bi.add(ir),Bi.add(xs);let Qs=un.zeros(2*ls.rows,2*ls.columns);return Qs=Qs.setSubMatrix(ls,0,0),Qs=Qs.setSubMatrix(Oi,ls.rows,0),Qs=Qs.setSubMatrix(Ds,0,ls.columns),Qs=Qs.setSubMatrix(Bi,ls.rows,ls.columns),Qs.subMatrix(0,Ne-1,0,Ye-1)}return Bn(W,k,gt,bt)}scaleRows(k={}){if(typeof k!="object")throw new TypeError("options must be an object");const{min:W=0,max:S=1}=k;if(!Number.isFinite(W))throw new TypeError("min must be a number");if(!Number.isFinite(S))throw new TypeError("max must be a number");if(W>=S)throw new RangeError("min must be smaller than max");let G=new Gt(this.rows,this.columns);for(let ae=0;ae0&&_e(We,{min:W,max:S,output:We}),G.setRow(ae,We)}return G}scaleColumns(k={}){if(typeof k!="object")throw new TypeError("options must be an object");const{min:W=0,max:S=1}=k;if(!Number.isFinite(W))throw new TypeError("min must be a number");if(!Number.isFinite(S))throw new TypeError("max must be a number");if(W>=S)throw new RangeError("min must be smaller than max");let G=new Gt(this.rows,this.columns);for(let ae=0;aeS||W<0||W>=this.columns||S<0||S>=this.columns)throw new RangeError("Argument out of range");let G=new Gt(k.length,S-W+1);for(let ae=0;ae=this.rows)throw new RangeError(`Row index out of range: ${k[ae]}`);G.set(ae,We-W,this.get(k[ae],We))}return G}subMatrixColumn(k,W,S){if(W===void 0&&(W=0),S===void 0&&(S=this.rows-1),W>S||W<0||W>=this.rows||S<0||S>=this.rows)throw new RangeError("Argument out of range");let G=new Gt(S-W+1,k.length);for(let ae=0;ae=this.columns)throw new RangeError(`Column index out of range: ${k[ae]}`);G.set(We-W,ae,this.get(We,k[ae]))}return G}setSubMatrix(k,W,S){if(k=Gt.checkMatrix(k),k.isEmpty())return this;let G=W+k.rows-1,ae=S+k.columns-1;_r(this,W,G,S,ae);for(let We=0;Wetypeof k=="number")}un.random=un.rand,un.randomInt=un.randInt,un.diagonal=un.diag,un.prototype.diagonal=un.prototype.diag,un.identity=un.eye,un.prototype.negate=un.prototype.neg,un.prototype.tensorProduct=un.prototype.kroneckerProduct;const Zt=class tR extends un{constructor(k,W){if(super(),Q(this,Y),F(this,"data"),tR.isMatrix(k))j(this,Y,fe).call(this,k.rows,k.columns),tR.copy(k,this);else if(Number.isInteger(k)&&k>=0)j(this,Y,fe).call(this,k,W);else if(Me.isAnyArray(k)){const S=k;if(k=S.length,W=k?S[0].length:0,typeof W!="number")throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let G=0;G=0)for(let W=0;W=0)V(this,ue,new Gt(k,k));else if(V(this,ue,new Gt(k)),!this.isSymmetric())throw new TypeError("not symmetric data")}get size(){return U(this,ue).size}get rows(){return U(this,ue).rows}get columns(){return U(this,ue).columns}get diagonalSize(){return this.rows}static isSymmetricMatrix(k){return Gt.isMatrix(k)&&k.klassType==="SymmetricMatrix"}static zeros(k){return new this(k)}static ones(k){return new this(k).fill(1)}clone(){const k=new nR(this.diagonalSize);for(const[W,S,G]of this.upperRightEntries())k.set(W,S,G);return k}toMatrix(){return new Gt(this)}get(k,W){return U(this,ue).get(k,W)}set(k,W,S){return U(this,ue).set(k,W,S),U(this,ue).set(W,k,S),this}removeCross(k){return U(this,ue).removeRow(k),U(this,ue).removeColumn(k),this}addCross(k,W){W===void 0&&(W=k,k=this.diagonalSize);const S=W.slice();return S.splice(k,1),U(this,ue).addRow(k,S),U(this,ue).addColumn(k,W),this}applyMask(k){if(k.length!==this.diagonalSize)throw new RangeError("Mask size do not match with matrix size");const W=[];for(const[S,G]of k.entries())G||W.push(S);W.reverse();for(const S of W)this.removeCross(S);return this}toCompact(){const{diagonalSize:k}=this,W=new Array(k*(k+1)/2);for(let S=0,G=0,ae=0;ae=k&&(S=++G);return W}static fromCompact(k){const W=k.length,S=(Math.sqrt(8*W+1)-1)/2;if(!Number.isInteger(S))throw new TypeError(`This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(k)}`);const G=new nR(S);for(let ae=0,We=0,tt=0;tt=S&&(ae=++We);return G}*upperRightEntries(){for(let k=0,W=0;k=this.diagonalSize&&(W=++k)}}*upperRightValues(){for(let k=0,W=0;k=this.diagonalSize&&(W=++k)}};ue=new WeakMap;let In=On;In.prototype.klassType="SymmetricMatrix";class pr extends In{static isDistanceMatrix(k){return In.isSymmetricMatrix(k)&&k.klassSubType==="DistanceMatrix"}constructor(k){if(super(k),!this.isDistance())throw new TypeError("Provided arguments do no produce a distance matrix")}set(k,W,S){return k===W&&(S=0),super.set(k,W,S)}addCross(k,W){return W===void 0&&(W=k,k=this.diagonalSize),W=W.slice(),W[k]=0,super.addCross(k,W)}toSymmetricMatrix(){return new In(this)}clone(){const k=new pr(this.diagonalSize);for(const[W,S,G]of this.upperRightEntries())W!==S&&k.set(W,S,G);return k}toCompact(){const{diagonalSize:k}=this,W=(k-1)*k/2,S=new Array(W);for(let G=1,ae=0,We=0;We=k&&(G=++ae+1);return S}static fromCompact(k){const W=k.length;if(W===0)return new this(0);const S=(Math.sqrt(8*W+1)+1)/2;if(!Number.isInteger(S))throw new TypeError(`This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(k)}`);const G=new this(S);for(let ae=1,We=0,tt=0;tt=S&&(ae=++We+1);return G}}pr.prototype.klassSubType="DistanceMatrix";class Je extends un{constructor(k,W,S){super(),this.matrix=k,this.rows=W,this.columns=S}}class we extends Je{constructor(k,W){Ot(k,W),super(k,k.rows,1),this.column=W}set(k,W,S){return this.matrix.set(k,this.column,S),this}get(k){return this.matrix.get(k,this.column)}}class at extends Je{constructor(k,W){Kn(k,W),super(k,k.rows,W.length),this.columnIndices=W}set(k,W,S){return this.matrix.set(k,this.columnIndices[W],S),this}get(k,W){return this.matrix.get(k,this.columnIndices[W])}}class wt extends Je{constructor(k){super(k,k.rows,k.columns)}set(k,W,S){return this.matrix.set(k,this.columns-W-1,S),this}get(k,W){return this.matrix.get(k,this.columns-W-1)}}class it extends Je{constructor(k){super(k,k.rows,k.columns)}set(k,W,S){return this.matrix.set(this.rows-k-1,W,S),this}get(k,W){return this.matrix.get(this.rows-k-1,W)}}class ht extends Je{constructor(k,W){Fn(k,W),super(k,1,k.columns),this.row=W}set(k,W,S){return this.matrix.set(this.row,W,S),this}get(k,W){return this.matrix.get(this.row,W)}}class St extends Je{constructor(k,W){kn(k,W),super(k,W.length,k.columns),this.rowIndices=W}set(k,W,S){return this.matrix.set(this.rowIndices[k],W,S),this}get(k,W){return this.matrix.get(this.rowIndices[k],W)}}class Yt extends Je{constructor(k,W,S){kn(k,W),Kn(k,S),super(k,W.length,S.length),this.rowIndices=W,this.columnIndices=S}set(k,W,S){return this.matrix.set(this.rowIndices[k],this.columnIndices[W],S),this}get(k,W){return this.matrix.get(this.rowIndices[k],this.columnIndices[W])}}class $t extends Je{constructor(k,W,S,G,ae){_r(k,W,S,G,ae),super(k,S-W+1,ae-G+1),this.startRow=W,this.startColumn=G}set(k,W,S){return this.matrix.set(this.startRow+k,this.startColumn+W,S),this}get(k,W){return this.matrix.get(this.startRow+k,this.startColumn+W)}}class Ft extends Je{constructor(k){super(k,k.columns,k.rows)}set(k,W,S){return this.matrix.set(W,k,S),this}get(k,W){return this.matrix.get(W,k)}}class xn extends un{constructor(k,W={}){const{rows:S=1}=W;if(k.length%S!==0)throw new Error("the data length is not divisible by the number of rows");super(),this.rows=S,this.columns=k.length/S,this.data=k}set(k,W,S){let G=this._calculateIndex(k,W);return this.data[G]=S,this}get(k,W){let S=this._calculateIndex(k,W);return this.data[S]}_calculateIndex(k,W){return k*this.columns+W}}class cr extends un{constructor(k){super(),this.data=k,this.rows=k.length,this.columns=k[0].length}set(k,W,S){return this.data[k][W]=S,this}get(k,W){return this.data[k][W]}}function nr(Le,k){if(Me.isAnyArray(Le))return Le[0]&&Me.isAnyArray(Le[0])?new cr(Le):new xn(Le,k);throw new Error("the argument is not an array")}class Lr{constructor(k){k=cr.checkMatrix(k);let W=k.clone(),S=W.rows,G=W.columns,ae=new Float64Array(S),We=1,tt,gt,bt,Bn,Ge,$e,Ne,Ye,vt;for(tt=0;ttMath.abs(Ye[Bn])&&(Bn=tt);if(Bn!==gt){for(bt=0;bt=0;bt--){for(gt=0;gtWe?G.set(ae,We,k.get(ae,We)):ae===We?G.set(ae,We,1):G.set(ae,We,0);return G}get upperTriangularMatrix(){let k=this.LU,W=k.rows,S=k.columns,G=new Gt(W,S);for(let ae=0;aeMath.abs(k)?(W=k/Le,Math.abs(Le)*Math.sqrt(1+W*W)):k!==0?(W=Le/k,Math.abs(k)*Math.sqrt(1+W*W)):0}class Pr{constructor(k){k=cr.checkMatrix(k);let W=k.clone(),S=k.rows,G=k.columns,ae=new Float64Array(G),We,tt,gt,bt;for(gt=0;gt=0;bt--){for(gt=0;gt=0;tt--){for(ae=0;ae=0;Tn--)if(Ye[Tn]!==0){for(let ir=Tn+1;ir<$e;ir++){let ni=0;for(let zr=Tn;zr=0;Tn--){if(Tn0;){let Tn,ir;for(Tn=xr-2;Tn>=-1&&Tn!==-1;Tn--){const ni=Number.MIN_VALUE+pi*Math.abs(Ye[Tn]+Math.abs(Ye[Tn+1]));if(Math.abs(xt[Tn])<=ni||Number.isNaN(xt[Tn])){xt[Tn]=0;break}}if(Tn===xr-2)ir=4;else{let ni;for(ni=xr-1;ni>=Tn&&ni!==Tn;ni--){let zr=(ni!==xr?Math.abs(xt[ni]):0)+(ni!==Tn+1?Math.abs(xt[ni-1]):0);if(Math.abs(Ye[ni])<=pi*zr){Ye[ni]=0;break}}ni===Tn?ir=3:ni===xr-1?ir=1:(ir=2,Tn=ni)}switch(Tn++,ir){case 1:{let ni=xt[xr-2];xt[xr-2]=0;for(let zr=xr-2;zr>=Tn;zr--){let xs=si(Ye[zr],ni),ms=Ye[zr]/xs,ls=ni/xs;if(Ye[zr]=xs,zr!==Tn&&(ni=-ls*xt[zr-1],xt[zr-1]=ms*xt[zr-1]),bt)for(let Oi=0;Oi=Ye[Tn+1]);){let ni=Ye[Tn];if(Ye[Tn]=Ye[Tn+1],Ye[Tn+1]=ni,bt&&TnW&&ae.set(Bn,Ge,k.get(Bn,Ge)/this.s[Ge]);let We=this.U,tt=We.rows,gt=We.columns,bt=new Gt(S,tt);for(let Bn=0;Bnk&&W++;return W}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return Gt.diag(this.s)}}function Ri(Le,k=!1){return Le=cr.checkMatrix(Le),k?new ys(Le).inverse():Fi(Le,Gt.eye(Le.rows))}function Fi(Le,k,W=!1){return Le=cr.checkMatrix(Le),k=cr.checkMatrix(k),W?new ys(Le).solve(k):Le.isSquare()?new Lr(Le).solve(k):new Pr(Le).solve(k)}function ui(Le){if(Le=Gt.checkMatrix(Le),Le.isSquare()){if(Le.columns===0)return 1;let k,W,S,G;if(Le.columns===2)return k=Le.get(0,0),W=Le.get(0,1),S=Le.get(1,0),G=Le.get(1,1),k*G-W*S;if(Le.columns===3){let ae,We,tt;return ae=new Yt(Le,[1,2],[1,2]),We=new Yt(Le,[1,2],[0,2]),tt=new Yt(Le,[1,2],[0,1]),k=Le.get(0,0),W=Le.get(0,1),S=Le.get(0,2),k*ui(ae)-W*ui(We)+S*ui(tt)}else return new Lr(Le).determinant}else throw Error("determinant can only be calculated for a square matrix")}function gs(Le,k){let W=[];for(let S=0;SG)return new Array(k.rows+1).fill(0);{let ae=k.addRow(W,[0]);for(let We=0;Wek?ae[We]=1/ae[We]:ae[We]=0;return G.mmul(Gt.diag(ae).mmul(S.transpose()))}function jt(Le,k=Le,W={}){Le=new Gt(Le);let S=!1;if(typeof k=="object"&&!Gt.isMatrix(k)&&!Me.isAnyArray(k)?(W=k,k=Le,S=!0):k=new Gt(k),Le.rows!==k.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:G=!0}=W;G&&(Le=Le.center("column"),S||(k=k.center("column")));const ae=Le.transpose().mmul(k);for(let We=0;We0?G.set(ae,ae+1,W[ae]):W[ae]<0&&G.set(ae,ae-1,W[ae])}return G}}function zt(Le,k,W,S){let G,ae,We,tt,gt,bt,Bn,Ge;for(gt=0;gt0;tt--){for(Ge=0,We=0,bt=0;bt0&&(ae=-ae),k[tt]=Ge*ae,We=We-G*ae,W[tt-1]=G-ae,gt=0;gtbt)do{for(G=W[bt],Ge=(W[bt+1]-G)/(2*k[bt]),$e=si(Ge,1),Ge<0&&($e=-$e),W[bt]=k[bt]/(Ge+$e),W[bt+1]=k[bt]*(Ge+$e),Ne=W[bt+1],ae=G-W[bt],We=bt+2;We=bt;We--)for(an=vt,vt=Ye,Un=tn,G=Ye*k[We],ae=Ye*Ge,$e=si(Ge,k[We]),k[We+1]=tn*$e,tn=k[We]/$e,Ye=Ge/$e,Ge=Ye*W[We]-tn*G,W[We+1]=ae+tn*(Ye*G+tn*W[We]),gt=0;gt$r*or);W[bt]=W[bt]+hr,k[bt]=0}for(We=0;We=Ge;bt--)W[bt]=k.get(bt,Ge-1)/$e,gt+=W[bt]*W[bt];for(tt=Math.sqrt(gt),W[Ge]>0&&(tt=-tt),gt=gt-W[Ge]*tt,W[Ge]=W[Ge]-tt,Bn=Ge;Bn=Ge;bt--)We+=W[bt]*k.get(bt,Bn);for(We=We/gt,bt=Ge;bt<=ae;bt++)k.set(bt,Bn,k.get(bt,Bn)-We*W[bt])}for(bt=0;bt<=ae;bt++){for(We=0,Bn=ae;Bn>=Ge;Bn--)We+=W[Bn]*k.get(bt,Bn);for(We=We/gt,Bn=Ge;Bn<=ae;Bn++)k.set(bt,Bn,k.get(bt,Bn)-We*W[Bn])}W[Ge]=$e*W[Ge],k.set(Ge,Ge-1,$e*tt)}}for(bt=0;bt=G+1;Ge--)if(k.get(Ge,Ge-1)!==0){for(bt=Ge+1;bt<=ae;bt++)W[bt]=k.get(bt,Ge-1);for(Bn=Ge;Bn<=ae;Bn++){for(tt=0,bt=Ge;bt<=ae;bt++)tt+=W[bt]*S.get(bt,Bn);for(tt=tt/W[Ge]/k.get(Ge,Ge-1),bt=Ge;bt<=ae;bt++)S.set(bt,Bn,S.get(bt,Bn)+tt*W[bt])}}}function ur(Le,k,W,S,G){let ae=Le-1,We=0,tt=Le-1,gt=Number.EPSILON,bt=0,Bn=0,Ge=0,$e=0,Ne=0,Ye=0,vt=0,an=0,xt,tn,Un,hr,or,$r,xr,Rr,pi,Tn,ir,ni,zr,xs,ms;for(xt=0;xttt)&&(W[xt]=G.get(xt,xt),k[xt]=0),tn=Math.max(xt-1,0);tn=We;){for(hr=ae;hr>We&&(Ye=Math.abs(G.get(hr-1,hr-1))+Math.abs(G.get(hr,hr)),Ye===0&&(Ye=Bn),!(Math.abs(G.get(hr,hr-1))=0){for(vt=Ge>=0?Ge+vt:Ge-vt,W[ae-1]=Rr+vt,W[ae]=W[ae-1],vt!==0&&(W[ae]=Rr-xr/vt),k[ae-1]=0,k[ae]=0,Rr=G.get(ae,ae-1),Ye=Math.abs(Rr)+Math.abs(vt),Ge=Rr/Ye,$e=vt/Ye,Ne=Math.sqrt(Ge*Ge+$e*$e),Ge=Ge/Ne,$e=$e/Ne,tn=ae-1;tn0)){for(Ye=Math.sqrt(Ye),pi=hr&&(vt=G.get(or,or),Ne=Rr-vt,Ye=pi-vt,Ge=(Ne*Ye-xr)/G.get(or+1,or)+G.get(or,or+1),$e=G.get(or+1,or+1)-vt-Ne-Ye,Ne=G.get(or+2,or+1),Ye=Math.abs(Ge)+Math.abs($e)+Math.abs(Ne),Ge=Ge/Ye,$e=$e/Ye,Ne=Ne/Ye,!(or===hr||Math.abs(G.get(or,or-1))*(Math.abs($e)+Math.abs(Ne))or+2&&G.set(xt,xt-3,0);for(Un=or;Un<=ae-1&&(xs=Un!==ae-1,Un!==or&&(Ge=G.get(Un,Un-1),$e=G.get(Un+1,Un-1),Ne=xs?G.get(Un+2,Un-1):0,Rr=Math.abs(Ge)+Math.abs($e)+Math.abs(Ne),Rr!==0&&(Ge=Ge/Rr,$e=$e/Rr,Ne=Ne/Rr)),Rr!==0);Un++)if(Ye=Math.sqrt(Ge*Ge+$e*$e+Ne*Ne),Ge<0&&(Ye=-Ye),Ye!==0){for(Un!==or?G.set(Un,Un-1,-Ye*Rr):hr!==or&&G.set(Un,Un-1,-G.get(Un,Un-1)),Ge=Ge+Ye,Rr=Ge/Ye,pi=$e/Ye,vt=Ne/Ye,$e=$e/Ge,Ne=Ne/Ge,tn=Un;tn=0;ae--)if(Ge=W[ae],$e=k[ae],$e===0)for(hr=ae,G.set(ae,ae,1),xt=ae-1;xt>=0;xt--){for(xr=G.get(xt,xt)-Ge,Ne=0,tn=hr;tn<=ae;tn++)Ne=Ne+G.get(xt,tn)*G.get(tn,ae);if(k[xt]<0)vt=xr,Ye=Ne;else if(hr=xt,k[xt]===0?G.set(xt,ae,xr!==0?-Ne/xr:-Ne/(gt*Bn)):(Rr=G.get(xt,xt+1),pi=G.get(xt+1,xt),$e=(W[xt]-Ge)*(W[xt]-Ge)+k[xt]*k[xt],$r=(Rr*Ye-vt*Ne)/$e,G.set(xt,ae,$r),G.set(xt+1,ae,Math.abs(Rr)>Math.abs(vt)?(-Ne-xr*$r)/Rr:(-Ye-pi*$r)/vt)),$r=Math.abs(G.get(xt,ae)),gt*$r*$r>1)for(tn=xt;tn<=ae;tn++)G.set(tn,ae,G.get(tn,ae)/$r)}else if($e<0)for(hr=ae-1,Math.abs(G.get(ae,ae-1))>Math.abs(G.get(ae-1,ae))?(G.set(ae-1,ae-1,$e/G.get(ae,ae-1)),G.set(ae-1,ae,-(G.get(ae,ae)-Ge)/G.get(ae,ae-1))):(ms=lr(0,-G.get(ae-1,ae),G.get(ae-1,ae-1)-Ge,$e),G.set(ae-1,ae-1,ms[0]),G.set(ae-1,ae,ms[1])),G.set(ae,ae-1,0),G.set(ae,ae,1),xt=ae-2;xt>=0;xt--){for(Tn=0,ir=0,tn=hr;tn<=ae;tn++)Tn=Tn+G.get(xt,tn)*G.get(tn,ae-1),ir=ir+G.get(xt,tn)*G.get(tn,ae);if(xr=G.get(xt,xt)-Ge,k[xt]<0)vt=xr,Ne=Tn,Ye=ir;else if(hr=xt,k[xt]===0?(ms=lr(-Tn,-ir,xr,$e),G.set(xt,ae-1,ms[0]),G.set(xt,ae,ms[1])):(Rr=G.get(xt,xt+1),pi=G.get(xt+1,xt),ni=(W[xt]-Ge)*(W[xt]-Ge)+k[xt]*k[xt]-$e*$e,zr=(W[xt]-Ge)*2*$e,ni===0&&zr===0&&(ni=gt*Bn*(Math.abs(xr)+Math.abs($e)+Math.abs(Rr)+Math.abs(pi)+Math.abs(vt))),ms=lr(Rr*Ne-vt*Tn+$e*ir,Rr*Ye-vt*ir-$e*Tn,ni,zr),G.set(xt,ae-1,ms[0]),G.set(xt,ae,ms[1]),Math.abs(Rr)>Math.abs(vt)+Math.abs($e)?(G.set(xt+1,ae-1,(-Tn-xr*G.get(xt,ae-1)+$e*G.get(xt,ae))/Rr),G.set(xt+1,ae,(-ir-xr*G.get(xt,ae)-$e*G.get(xt,ae-1))/Rr)):(ms=lr(-Ne-pi*G.get(xt,ae-1),-Ye-pi*G.get(xt,ae),vt,$e),G.set(xt+1,ae-1,ms[0]),G.set(xt+1,ae,ms[1]))),$r=Math.max(Math.abs(G.get(xt,ae-1)),Math.abs(G.get(xt,ae))),gt*$r*$r>1)for(tn=xt;tn<=ae;tn++)G.set(tn,ae-1,G.get(tn,ae-1)/$r),G.set(tn,ae,G.get(tn,ae)/$r)}for(xt=0;xttt)for(tn=xt;tn=We;tn--)for(xt=We;xt<=tt;xt++){for(vt=0,Un=We;Un<=Math.min(tn,tt);Un++)vt=vt+S.get(xt,Un)*G.get(Un,tn);S.set(xt,tn,vt)}}}function lr(Le,k,W,S){let G,ae;return Math.abs(W)>Math.abs(S)?(G=S/W,ae=W+G*S,[(Le+G*k)/ae,(k-G*Le)/ae]):(G=W/S,ae=S+G*W,[(G*Le+k)/ae,(G*k-Le)/ae])}class oi{constructor(k){if(k=cr.checkMatrix(k),!k.isSymmetric())throw new Error("Matrix is not symmetric");let W=k,S=W.rows,G=new Gt(S,S),ae=!0,We,tt,gt;for(tt=0;tt0),G.set(tt,tt,Math.sqrt(Math.max(bt,0))),gt=tt+1;gt=0;gt--)for(tt=0;ttWe;Ne++)Ge=k.transpose().mmul(tt).div(tt.transpose().mmul(tt).get(0,0)),Ge=Ge.div(Ge.norm()),bt=k.mmul(Ge).div(Ge.transpose().mmul(Ge).get(0,0)),Ne>0&&(gt=bt.clone().sub($e).pow(2).sum()),$e=bt.clone(),S?(Bn=S.transpose().mmul(bt).div(bt.transpose().mmul(bt).get(0,0)),Bn=Bn.div(Bn.norm()),tt=S.mmul(Bn).div(Bn.transpose().mmul(Bn).get(0,0))):tt=bt;if(S){let Ne=k.transpose().mmul(bt).div(bt.transpose().mmul(bt).get(0,0));Ne=Ne.div(Ne.norm());let Ye=k.clone().sub(bt.clone().mmul(Ne.transpose())),vt=tt.transpose().mmul(bt).div(bt.transpose().mmul(bt).get(0,0)),an=S.clone().sub(bt.clone().mulS(vt.get(0,0)).mmul(Bn.transpose()));this.t=bt,this.p=Ne.transpose(),this.w=Ge.transpose(),this.q=Bn,this.u=tt,this.s=bt.transpose().mmul(bt),this.xResidual=Ye,this.yResidual=an,this.betas=vt}else this.w=Ge.transpose(),this.s=bt.transpose().mmul(bt).sqrt(),G?this.t=bt.clone().div(this.s.get(0,0)):this.t=bt,this.xResidual=k.sub(bt.mmul(Ge.transpose()))}}Be.XA=un,Be.a_=oi,Be.yQ=oi,Be.Hs=pr,Be.Ec=pt,Be.dx=pt,Be.LU=Lr,Be.Rm=Lr,Be.y3=Gt,Be.qK=at,Be.pb=we,Be.j=wt,Be.sO=it,Be.BZ=St,Be.EK=ht,Be.Db=Yt,Be.Fx=$t,Be.tU=Ft,Be.Ym=mi,Be.rs=mi,Be.QR=Pr,Be.TB=Pr,Be.oH=ys,Be.Sc=ys,Be.BN=In,Be.it=xn,Be.$r=cr,Be.QM=ct,Be.AV=jt,m=Gt,Be.GH=ui,Be.SO=Ri,Be.uZ=Nn,Be.yU=cn,Be.F1=Fi,Be.re=nr},78241:function(Ie,Be,_){"use strict";_.d(Be,{default:function(){return W}});var m=_(94480),K=_(92310),H=_.n(K),L=_(77900),T=_(59301),F=_(62892),B=_(32441);function U(S){const[G,ae]=T.useState(S);return T.useEffect(()=>{const We=setTimeout(()=>{ae(S)},S.length?0:10);return()=>{clearTimeout(We)}},[S]),G}var Q=_(17313),V=_(29878),j=_(8378),Y=_(37613),fe=_(83116),Me=S=>{const{componentCls:G}=S,ae=`${G}-show-help`,We=`${G}-show-help-item`;return{[ae]:{transition:`opacity ${S.motionDurationSlow} ${S.motionEaseInOut}`,"&-appear, &-enter":{opacity:0,"&-active":{opacity:1}},"&-leave":{opacity:1,"&-active":{opacity:0}},[We]:{overflow:"hidden",transition:`height ${S.motionDurationSlow} ${S.motionEaseInOut}, + opacity ${S.motionDurationSlow} ${S.motionEaseInOut}, + transform ${S.motionDurationSlow} ${S.motionEaseInOut} !important`,[`&${We}-appear, &${We}-enter`]:{transform:"translateY(-5px)",opacity:0,"&-active":{transform:"translateY(0)",opacity:1}},[`&${We}-leave-active`]:{transform:"translateY(-5px)"}}}}};const _e=S=>({legend:{display:"block",width:"100%",marginBottom:S.marginLG,padding:0,color:S.colorTextDescription,fontSize:S.fontSizeLG,lineHeight:"inherit",border:0,borderBottom:`${S.lineWidth}px ${S.lineType} ${S.colorBorder}`},label:{fontSize:S.fontSize},'input[type="search"]':{boxSizing:"border-box"},'input[type="radio"], input[type="checkbox"]':{lineHeight:"normal"},'input[type="file"]':{display:"block"},'input[type="range"]':{display:"block",width:"100%"},"select[multiple], select[size]":{height:"auto"},"input[type='file']:focus,\n input[type='radio']:focus,\n input[type='checkbox']:focus":{outline:0,boxShadow:`0 0 0 ${S.controlOutlineWidth}px ${S.controlOutline}`},output:{display:"block",paddingTop:15,color:S.colorText,fontSize:S.fontSize,lineHeight:S.lineHeight}}),Ce=(S,G)=>{const{formItemCls:ae}=S;return{[ae]:{[`${ae}-label > label`]:{height:G},[`${ae}-control-input`]:{minHeight:G}}}},Xe=S=>{const{componentCls:G}=S;return{[S.componentCls]:Object.assign(Object.assign(Object.assign({},(0,Q.Wf)(S)),_e(S)),{[`${G}-text`]:{display:"inline-block",paddingInlineEnd:S.paddingSM},"&-small":Object.assign({},Ce(S,S.controlHeightSM)),"&-large":Object.assign({},Ce(S,S.controlHeightLG))})}},Fe=S=>{const{formItemCls:G,iconCls:ae,componentCls:We,rootPrefixCls:tt,labelRequiredMarkColor:gt,labelColor:bt,labelFontSize:Bn,labelHeight:Ge,labelColonMarginInlineStart:$e,labelColonMarginInlineEnd:Ne,itemMarginBottom:Ye}=S;return{[G]:Object.assign(Object.assign({},(0,Q.Wf)(S)),{marginBottom:Ye,verticalAlign:"top","&-with-help":{transition:"none"},[`&-hidden, + &-hidden.${tt}-row`]:{display:"none"},"&-has-warning":{[`${G}-split`]:{color:S.colorError}},"&-has-error":{[`${G}-split`]:{color:S.colorWarning}},[`${G}-label`]:{flexGrow:0,overflow:"hidden",whiteSpace:"nowrap",textAlign:"end",verticalAlign:"middle","&-left":{textAlign:"start"},"&-wrap":{overflow:"unset",lineHeight:`${S.lineHeight} - 0.25em`,whiteSpace:"unset"},"> label":{position:"relative",display:"inline-flex",alignItems:"center",maxWidth:"100%",height:Ge,color:bt,fontSize:Bn,[`> ${ae}`]:{fontSize:S.fontSize,verticalAlign:"top"},[`&${G}-required:not(${G}-required-mark-optional)::before`]:{display:"inline-block",marginInlineEnd:S.marginXXS,color:gt,fontSize:S.fontSize,fontFamily:"SimSun, sans-serif",lineHeight:1,content:'"*"',[`${We}-hide-required-mark &`]:{display:"none"}},[`${G}-optional`]:{display:"inline-block",marginInlineStart:S.marginXXS,color:S.colorTextDescription,[`${We}-hide-required-mark &`]:{display:"none"}},[`${G}-tooltip`]:{color:S.colorTextDescription,cursor:"help",writingMode:"horizontal-tb",marginInlineStart:S.marginXXS},"&::after":{content:'":"',position:"relative",marginBlock:0,marginInlineStart:$e,marginInlineEnd:Ne},[`&${G}-no-colon::after`]:{content:'"\\a0"'}}},[`${G}-control`]:{"--ant-display":"flex",flexDirection:"column",flexGrow:1,[`&:first-child:not([class^="'${tt}-col-'"]):not([class*="' ${tt}-col-'"])`]:{width:"100%"},"&-input":{position:"relative",display:"flex",alignItems:"center",minHeight:S.controlHeight,"&-content":{flex:"auto",maxWidth:"100%"}}},[G]:{"&-explain, &-extra":{clear:"both",color:S.colorTextDescription,fontSize:S.fontSize,lineHeight:S.lineHeight},"&-explain-connected":{width:"100%"},"&-extra":{minHeight:S.controlHeightSM,transition:`color ${S.motionDurationMid} ${S.motionEaseOut}`},"&-explain":{"&-error":{color:S.colorError},"&-warning":{color:S.colorWarning}}},[`&-with-help ${G}-explain`]:{height:"auto",opacity:1},[`${G}-feedback-icon`]:{fontSize:S.fontSize,textAlign:"center",visibility:"visible",animationName:V.kr,animationDuration:S.motionDurationMid,animationTimingFunction:S.motionEaseOutBack,pointerEvents:"none","&-success":{color:S.colorSuccess},"&-error":{color:S.colorError},"&-warning":{color:S.colorWarning},"&-validating":{color:S.colorPrimary}}})}},ft=S=>{const{componentCls:G,formItemCls:ae}=S;return{[`${G}-horizontal`]:{[`${ae}-label`]:{flexGrow:0},[`${ae}-control`]:{flex:"1 1 0",minWidth:0},[`${ae}-label[class$='-24'], ${ae}-label[class*='-24 ']`]:{[`& + ${ae}-control`]:{minWidth:"unset"}}}}},_t=S=>{const{componentCls:G,formItemCls:ae}=S;return{[`${G}-inline`]:{display:"flex",flexWrap:"wrap",[ae]:{flex:"none",marginInlineEnd:S.margin,marginBottom:0,"&-row":{flexWrap:"nowrap"},[`> ${ae}-label, + > ${ae}-control`]:{display:"inline-block",verticalAlign:"top"},[`> ${ae}-label`]:{flex:"none"},[`${G}-text`]:{display:"inline-block"},[`${ae}-has-feedback`]:{display:"inline-block"}}}}},lt=S=>({padding:S.verticalLabelPadding,margin:S.verticalLabelMargin,whiteSpace:"initial",textAlign:"start","> label":{margin:0,"&::after":{visibility:"hidden"}}}),Vt=S=>{const{componentCls:G,formItemCls:ae,rootPrefixCls:We}=S;return{[`${ae} ${ae}-label`]:lt(S),[G]:{[ae]:{flexWrap:"wrap",[`${ae}-label, ${ae}-control`]:{[`&:not([class*=" ${We}-col-xs"])`]:{flex:"0 0 100%",maxWidth:"100%"}}}}}},It=S=>{const{componentCls:G,formItemCls:ae,rootPrefixCls:We}=S;return{[`${G}-vertical`]:{[ae]:{"&-row":{flexDirection:"column"},"&-label > label":{height:"auto"},[`${G}-item-control`]:{width:"100%"}}},[`${G}-vertical ${ae}-label, + .${We}-col-24${ae}-label, + .${We}-col-xl-24${ae}-label`]:lt(S),[`@media (max-width: ${S.screenXSMax}px)`]:[Vt(S),{[G]:{[`.${We}-col-xs-24${ae}-label`]:lt(S)}}],[`@media (max-width: ${S.screenSMMax}px)`]:{[G]:{[`.${We}-col-sm-24${ae}-label`]:lt(S)}},[`@media (max-width: ${S.screenMDMax}px)`]:{[G]:{[`.${We}-col-md-24${ae}-label`]:lt(S)}},[`@media (max-width: ${S.screenLGMax}px)`]:{[G]:{[`.${We}-col-lg-24${ae}-label`]:lt(S)}}}},Fn=(S,G)=>(0,Y.TS)(S,{formItemCls:`${S.componentCls}-item`,rootPrefixCls:G});var Ot=(0,fe.Z)("Form",(S,G)=>{let{rootPrefixCls:ae}=G;const We=Fn(S,ae);return[Xe(We),Fe(We),Me(We),ft(We),_t(We),It(We),(0,j.Z)(We),V.kr]},S=>({labelRequiredMarkColor:S.colorError,labelColor:S.colorTextHeading,labelFontSize:S.fontSize,labelHeight:S.controlHeight,labelColonMarginInlineStart:S.marginXXS/2,labelColonMarginInlineEnd:S.marginXS,itemMarginBottom:S.marginLG,verticalLabelPadding:`0 0 ${S.paddingXS}px`,verticalLabelMargin:0}),{order:-1e3});const jn=[];function rr(S,G,ae){let We=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;return{key:typeof S=="string"?S:`${G}-${We}`,error:S,errorStatus:ae}}var Kn=S=>{let{help:G,helpStatus:ae,errors:We=jn,warnings:tt=jn,className:gt,fieldId:bt,onVisibleChanged:Bn}=S;const{prefixCls:Ge}=T.useContext(B.Rk),$e=`${Ge}-item-explain`,[,Ne]=Ot(Ge),Ye=(0,T.useMemo)(()=>(0,F.Z)(Ge),[Ge]),vt=U(We),an=U(tt),xt=T.useMemo(()=>G!=null?[rr(G,"help",ae)]:[].concat((0,m.Z)(vt.map((Un,hr)=>rr(Un,"error","error",hr))),(0,m.Z)(an.map((Un,hr)=>rr(Un,"warning","warning",hr)))),[G,ae,vt,an]),tn={};return bt&&(tn.id=`${bt}_help`),T.createElement(L.default,{motionDeadline:Ye.motionDeadline,motionName:`${Ge}-show-help`,visible:!!xt.length,onVisibleChanged:Bn},Un=>{const{className:hr,style:or}=Un;return T.createElement("div",Object.assign({},tn,{className:H()($e,hr,gt,Ne),style:or,role:"alert"}),T.createElement(L.CSSMotionList,Object.assign({keys:xt},(0,F.Z)(Ge),{motionName:`${Ge}-show-help-item`,component:!1}),$r=>{const{key:xr,error:Rr,errorStatus:pi,className:Tn,style:ir}=$r;return T.createElement("div",{key:xr,className:H()(Tn,{[`${$e}-${pi}`]:pi}),style:ir},Rr)}))})},_r=_(95013),bn=_(36355),Cr=_(1684),Ke=_(52946),Rt=_(19716),Qn=_(16722);const Yr=["parentNode"],rn="form_item";function An(S){return S===void 0||S===!1?[]:Array.isArray(S)?S:[S]}function Ln(S,G){if(!S.length)return;const ae=S.join("_");return G?`${G}_${ae}`:Yr.includes(ae)?`${rn}_${ae}`:ae}function Tt(S,G,ae,We,tt,gt){let bt=We;return gt!==void 0?bt=gt:ae.validating?bt="validating":S.length?bt="error":G.length?bt="warning":(ae.touched||tt&&ae.validated)&&(bt="success"),bt}function Mt(S){return An(S).join("_")}function ge(S){const[G]=(0,_r.useForm)(),ae=T.useRef({}),We=T.useMemo(()=>S!=null?S:Object.assign(Object.assign({},G),{__INTERNAL__:{itemRef:tt=>gt=>{const bt=Mt(tt);gt?ae.current[bt]=gt:delete ae.current[bt]}},scrollToField:function(tt){let gt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const bt=An(tt),Bn=Ln(bt,We.__INTERNAL__.name),Ge=Bn?document.getElementById(Bn):null;Ge&&(0,Qn.Z)(Ge,Object.assign({scrollMode:"if-needed",block:"nearest"},gt))},getFieldInstance:tt=>{const gt=Mt(tt);return ae.current[gt]}}),[S,G]);return[We]}var pe=_(28726),De=function(S,G){var ae={};for(var We in S)Object.prototype.hasOwnProperty.call(S,We)&&G.indexOf(We)<0&&(ae[We]=S[We]);if(S!=null&&typeof Object.getOwnPropertySymbols=="function")for(var tt=0,We=Object.getOwnPropertySymbols(S);tt{const ae=T.useContext(Cr.Z),{getPrefixCls:We,direction:tt,form:gt}=T.useContext(bn.E_),{prefixCls:bt,className:Bn,rootClassName:Ge,size:$e,disabled:Ne=ae,form:Ye,colon:vt,labelAlign:an,labelWrap:xt,labelCol:tn,wrapperCol:Un,hideRequiredMark:hr,layout:or="horizontal",scrollToFirstError:$r,requiredMark:xr,onFinishFailed:Rr,name:pi,style:Tn,feedbackIcons:ir}=S,ni=De(S,["prefixCls","className","rootClassName","size","disabled","form","colon","labelAlign","labelWrap","labelCol","wrapperCol","hideRequiredMark","layout","scrollToFirstError","requiredMark","onFinishFailed","name","style","feedbackIcons"]),zr=(0,Rt.Z)($e),xs=T.useContext(pe.Z),ms=(0,T.useMemo)(()=>xr!==void 0?xr:gt&>.requiredMark!==void 0?gt.requiredMark:!hr,[hr,xr,gt]),ls=vt!=null?vt:gt==null?void 0:gt.colon,Oi=We("form",bt),[Ds,Bi]=Ot(Oi),Qs=H()(Oi,`${Oi}-${or}`,{[`${Oi}-hide-required-mark`]:ms===!1,[`${Oi}-rtl`]:tt==="rtl",[`${Oi}-${zr}`]:zr},Bi,gt==null?void 0:gt.className,Bn,Ge),[Na]=ge(Ye),{__INTERNAL__:$n}=Na;$n.name=pi;const Ut=(0,T.useMemo)(()=>({name:pi,labelAlign:an,labelCol:tn,labelWrap:xt,wrapperCol:Un,vertical:or==="vertical",colon:ls,requiredMark:ms,itemRef:$n.itemRef,form:Na,feedbackIcons:ir}),[pi,an,tn,Un,or,ls,ms,Na,ir]);T.useImperativeHandle(G,()=>Na);const Kt=(Sn,Hn)=>{if(Sn){let ar={block:"nearest"};typeof Sn=="object"&&(ar=Sn),Na.scrollToField(Hn,ar)}},Lt=Sn=>{if(Rr==null||Rr(Sn),Sn.errorFields.length){const Hn=Sn.errorFields[0].name;if($r!==void 0){Kt($r,Hn);return}gt&>.scrollToFirstError!==void 0&&Kt(gt.scrollToFirstError,Hn)}};return Ds(T.createElement(Cr.n,{disabled:Ne},T.createElement(Ke.q,{size:zr},T.createElement(B.RV,Object.assign({},{validateMessages:xs}),T.createElement(B.q3.Provider,{value:Ut},T.createElement(_r.default,Object.assign({id:pi},ni,{name:pi,onFinishFailed:Lt,form:Na,style:Object.assign(Object.assign({},gt==null?void 0:gt.style),Tn),className:Qs})))))))};var At=T.forwardRef(Ht),dn=_(41799),fn=_(8654),ut=_(92343),Bt=_(11592);function un(S){if(typeof S=="function")return S;const G=(0,Bt.Z)(S);return G.length<=1?G[0]:G}const Z=()=>{const{status:S,errors:G=[],warnings:ae=[]}=(0,T.useContext)(B.aM);return{status:S,errors:G,warnings:ae}};Z.Context=B.aM;var Te=Z,Zt=_(16089);function Gt(S){const[G,ae]=T.useState(S),We=(0,T.useRef)(null),tt=(0,T.useRef)([]),gt=(0,T.useRef)(!1);T.useEffect(()=>(gt.current=!1,()=>{gt.current=!0,Zt.Z.cancel(We.current),We.current=null}),[]);function bt(Bn){gt.current||(We.current===null&&(tt.current=[],We.current=(0,Zt.Z)(()=>{We.current=null,ae(Ge=>{let $e=Ge;return tt.current.forEach(Ne=>{$e=Ne($e)}),$e})})),tt.current.push(Bn))}return[G,bt]}function On(){const{itemRef:S}=T.useContext(B.q3),G=T.useRef({});function ae(We,tt){const gt=tt&&typeof tt=="object"&&tt.ref,bt=We.join("_");return(G.current.name!==bt||G.current.originRef!==gt)&&(G.current.name=bt,G.current.originRef=gt,G.current.ref=(0,fn.sQ)(S(We),gt)),G.current.ref}return ae}var In=_(29194),pr=_(34280),Je=_(2738),we=_(27382),at=_(37028);const wt=S=>{const{formItemCls:G}=S;return{"@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)":{[`${G}-control`]:{display:"flex"}}}};var it=(0,fe.b)(["Form","item-item"],(S,G)=>{let{rootPrefixCls:ae}=G;const We=Fn(S,ae);return[wt(We)]}),St=S=>{const{prefixCls:G,status:ae,wrapperCol:We,children:tt,errors:gt,warnings:bt,_internalItemRender:Bn,extra:Ge,help:$e,fieldId:Ne,marginBottom:Ye,onErrorVisibleChanged:vt}=S,an=`${G}-item`,xt=T.useContext(B.q3),tn=We||xt.wrapperCol||{},Un=H()(`${an}-control`,tn.className),hr=T.useMemo(()=>Object.assign({},xt),[xt]);delete hr.labelCol,delete hr.wrapperCol;const or=T.createElement("div",{className:`${an}-control-input`},T.createElement("div",{className:`${an}-control-input-content`},tt)),$r=T.useMemo(()=>({prefixCls:G,status:ae}),[G,ae]),xr=Ye!==null||gt.length||bt.length?T.createElement("div",{style:{display:"flex",flexWrap:"nowrap"}},T.createElement(B.Rk.Provider,{value:$r},T.createElement(Kn,{fieldId:Ne,errors:gt,warnings:bt,help:$e,helpStatus:ae,className:`${an}-explain-connected`,onVisibleChanged:vt})),!!Ye&&T.createElement("div",{style:{width:0,height:Ye}})):null,Rr={};Ne&&(Rr.id=`${Ne}_extra`);const pi=Ge?T.createElement("div",Object.assign({},Rr,{className:`${an}-extra`}),Ge):null,Tn=Bn&&Bn.mark==="pro_table_render"&&Bn.render?Bn.render(S,{input:or,errorList:xr,extra:pi}):T.createElement(T.Fragment,null,or,xr,pi);return T.createElement(B.q3.Provider,{value:hr},T.createElement(at.Z,Object.assign({},tn,{className:Un}),Tn),T.createElement(it,{prefixCls:G}))},Yt=_(61485),$t=_(31724),Ft=_(9763),xn=_(6848),cr=function(S,G){var ae={};for(var We in S)Object.prototype.hasOwnProperty.call(S,We)&&G.indexOf(We)<0&&(ae[We]=S[We]);if(S!=null&&typeof Object.getOwnPropertySymbols=="function")for(var tt=0,We=Object.getOwnPropertySymbols(S);tt{let{prefixCls:G,label:ae,htmlFor:We,labelCol:tt,labelAlign:gt,colon:bt,required:Bn,requiredMark:Ge,tooltip:$e}=S;var Ne;const[Ye]=(0,Ft.Z)("Form"),{vertical:vt,labelAlign:an,labelCol:xt,labelWrap:tn,colon:Un}=T.useContext(B.q3);if(!ae)return null;const hr=tt||xt||{},or=gt||an,$r=`${G}-item-label`,xr=H()($r,or==="left"&&`${$r}-left`,hr.className,{[`${$r}-wrap`]:!!tn});let Rr=ae;const pi=bt===!0||Un!==!1&&bt!==!1;pi&&!vt&&typeof ae=="string"&&ae.trim()!==""&&(Rr=ae.replace(/[:|:]\s*$/,""));const ir=nr($e);if(ir){const{icon:ms=T.createElement(Yt.Z,null)}=ir,ls=cr(ir,["icon"]),Oi=T.createElement(xn.Z,Object.assign({},ls),T.cloneElement(ms,{className:`${G}-item-tooltip`,title:""}));Rr=T.createElement(T.Fragment,null,Rr,Oi)}const ni=Ge==="optional",zr=typeof Ge=="function";zr?Rr=Ge(Rr,{required:!!Bn}):ni&&!Bn&&(Rr=T.createElement(T.Fragment,null,Rr,T.createElement("span",{className:`${G}-item-optional`,title:""},(Ye==null?void 0:Ye.optional)||((Ne=$t.Z.Form)===null||Ne===void 0?void 0:Ne.optional))));const xs=H()({[`${G}-item-required`]:Bn,[`${G}-item-required-mark-optional`]:ni||zr,[`${G}-item-no-colon`]:!pi});return T.createElement(at.Z,Object.assign({},hr,{className:xr}),T.createElement("label",{htmlFor:We,className:xs,title:typeof ae=="string"?ae:""},Rr))},Pr=_(29679),ys=_(19248),Ri=_(96512),Fi=_(58617);const ui={success:Pr.Z,warning:Ri.Z,error:ys.Z,validating:Fi.Z};function gs(S){let{children:G,errors:ae,warnings:We,hasFeedback:tt,validateStatus:gt,prefixCls:bt,meta:Bn,noStyle:Ge}=S;const $e=`${bt}-item`,{feedbackIcons:Ne}=T.useContext(B.q3),Ye=Tt(ae,We,Bn,null,!!tt,gt),{isFormItemInput:vt,status:an}=T.useContext(B.aM),xt=T.useMemo(()=>{var tn;let Un;if(tt){const $r=tt!==!0&&tt.icons||Ne,xr=Ye&&((tn=$r==null?void 0:$r({status:Ye,errors:ae,warnings:We}))===null||tn===void 0?void 0:tn[Ye]),Rr=Ye&&ui[Ye];Un=xr!==!1&&Rr?T.createElement("span",{className:H()(`${$e}-feedback-icon`,`${$e}-feedback-icon-${Ye}`)},xr||T.createElement(Rr,null)):null}let hr=!0,or=Ye||"";return Ge&&(hr=vt,or=(Ye!=null?Ye:an)||""),{status:or,errors:ae,warnings:We,hasFeedback:!!tt,feedbackIcon:Un,isFormItemInput:hr}},[Ye,tt,Ge,vt,an]);return T.createElement(B.aM.Provider,{value:xt},G)}var Di=function(S,G){var ae={};for(var We in S)Object.prototype.hasOwnProperty.call(S,We)&&G.indexOf(We)<0&&(ae[We]=S[We]);if(S!=null&&typeof Object.getOwnPropertySymbols=="function")for(var tt=0,We=Object.getOwnPropertySymbols(S);tt{if(ir&&xr.current){const Bi=getComputedStyle(xr.current);xs(parseInt(Bi.marginBottom,10))}},[ir,ni]);const ms=Bi=>{Bi||xs(null)},Oi=function(){let Bi=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const Qs=Bi?Rr:$e.errors,Na=Bi?pi:$e.warnings;return Tt(Qs,Na,$e,"",!!Ne,Ge)}(),Ds=H()(or,ae,We,{[`${or}-with-help`]:Tn||Rr.length||pi.length,[`${or}-has-feedback`]:Oi&&Ne,[`${or}-has-success`]:Oi==="success",[`${or}-has-warning`]:Oi==="warning",[`${or}-has-error`]:Oi==="error",[`${or}-is-validating`]:Oi==="validating",[`${or}-hidden`]:Ye});return T.createElement("div",{className:Ds,style:tt,ref:xr},T.createElement(we.Z,Object.assign({className:`${or}-row`},(0,Je.Z)(hr,["_internalItemRender","colon","dependencies","extra","fieldKey","getValueFromEvent","getValueProps","htmlFor","id","initialValue","isListField","label","labelAlign","labelCol","labelWrap","messageVariables","name","normalize","noStyle","preserve","requiredMark","rules","shouldUpdate","trigger","tooltip","validateFirst","validateTrigger","valuePropName","wrapperCol","validateDebounce"])),T.createElement(si,Object.assign({htmlFor:an},S,{requiredMark:$r,required:xt!=null?xt:tn,prefixCls:G})),T.createElement(St,Object.assign({},S,$e,{errors:Rr,warnings:pi,prefixCls:G,status:Oi,help:gt,marginBottom:zr,onErrorVisibleChanged:ms}),T.createElement(B.qI.Provider,{value:Un},T.createElement(gs,{prefixCls:G,meta:$e,errors:$e.errors,warnings:$e.warnings,hasFeedback:Ne,validateStatus:Oi},vt)))),!!zr&&T.createElement("div",{className:`${or}-margin-offset`,style:{marginBottom:-zr}}))}const cn="__SPLIT__",jt=null,ct=T.memo(S=>{let{children:G}=S;return G},(S,G)=>S.value===G.value&&S.update===G.update&&S.childProps.length===G.childProps.length&&S.childProps.every((ae,We)=>ae===G.childProps[We]));function pt(S){return S!=null}function zt(){return{errors:[],warnings:[],touched:!1,validating:!1,name:[],validated:!1}}function Mn(S){const{name:G,noStyle:ae,className:We,dependencies:tt,prefixCls:gt,shouldUpdate:bt,rules:Bn,children:Ge,required:$e,label:Ne,messageVariables:Ye,trigger:vt="onChange",validateTrigger:an,hidden:xt,help:tn}=S,{getPrefixCls:Un}=T.useContext(bn.E_),{name:hr}=T.useContext(B.q3),or=un(Ge),$r=typeof or=="function",xr=T.useContext(B.qI),{validateTrigger:Rr}=T.useContext(_r.FieldContext),pi=an!==void 0?an:Rr,Tn=pt(G),ir=Un("form",gt),[ni,zr]=Ot(ir),xs=T.useContext(_r.ListContext),ms=T.useRef(),[ls,Oi]=Gt({}),[Ds,Bi]=(0,dn.Z)(()=>zt()),Qs=Hn=>{const ar=xs==null?void 0:xs.getKey(Hn.name);if(Bi(Hn.destroy?zt():Hn,!0),ae&&tn!==!1&&xr){let Hr=Hn.name;if(Hn.destroy)Hr=ms.current||Hr;else if(ar!==void 0){const[fi,Qi]=ar;Hr=[fi].concat((0,m.Z)(Qi)),ms.current=Hr}xr(Hn,Hr)}},Na=(Hn,ar)=>{Oi(Hr=>{const fi=Object.assign({},Hr),As=[].concat((0,m.Z)(Hn.name.slice(0,-1)),(0,m.Z)(ar)).join(cn);return Hn.destroy?delete fi[As]:fi[As]=Hn,fi})},[$n,Ut]=T.useMemo(()=>{const Hn=(0,m.Z)(Ds.errors),ar=(0,m.Z)(Ds.warnings);return Object.values(ls).forEach(Hr=>{Hn.push.apply(Hn,(0,m.Z)(Hr.errors||[])),ar.push.apply(ar,(0,m.Z)(Hr.warnings||[]))}),[Hn,ar]},[ls,Ds.errors,Ds.warnings]),Kt=On();function Lt(Hn,ar,Hr){return ae&&!xt?T.createElement(gs,{prefixCls:ir,hasFeedback:S.hasFeedback,validateStatus:S.validateStatus,meta:Ds,errors:$n,warnings:Ut,noStyle:!0},Hn):T.createElement(Nn,Object.assign({key:"row"},S,{className:H()(We,zr),prefixCls:ir,fieldId:ar,isRequired:Hr,errors:$n,warnings:Ut,meta:Ds,onSubItemMetaChange:Na}),Hn)}if(!Tn&&!$r&&!tt)return ni(Lt(or));let Sn={};return typeof Ne=="string"?Sn.label=Ne:G&&(Sn.label=String(G)),Ye&&(Sn=Object.assign(Object.assign({},Sn),Ye)),ni(T.createElement(_r.Field,Object.assign({},S,{messageVariables:Sn,trigger:vt,validateTrigger:pi,onMetaChange:Qs}),(Hn,ar,Hr)=>{const fi=An(G).length&&ar?ar.name:[],Qi=Ln(fi,hr),As=$e!==void 0?$e:!!(Bn&&Bn.some(Ks=>{if(Ks&&typeof Ks=="object"&&Ks.required&&!Ks.warningOnly)return!0;if(typeof Ks=="function"){const Ya=Ks(Hr);return Ya&&Ya.required&&!Ya.warningOnly}return!1})),ks=Object.assign({},Hn);let Is=null;if(Array.isArray(or)&&Tn)Is=or;else if(!($r&&(!(bt||tt)||Tn))){if(!(tt&&!$r&&!Tn))if((0,ut.l$)(or)){const Ks=Object.assign(Object.assign({},or.props),ks);if(Ks.id||(Ks.id=Qi),tn||$n.length>0||Ut.length>0||S.extra){const Wa=[];(tn||$n.length>0)&&Wa.push(`${Qi}_help`),S.extra&&Wa.push(`${Qi}_extra`),Ks["aria-describedby"]=Wa.join(" ")}$n.length>0&&(Ks["aria-invalid"]="true"),As&&(Ks["aria-required"]="true"),(0,fn.Yr)(or)&&(Ks.ref=Kt(fi,or)),new Set([].concat((0,m.Z)(An(vt)),(0,m.Z)(An(pi)))).forEach(Wa=>{Ks[Wa]=function(){for(var Mi,Do,Hl,Gl,zl,Tl=arguments.length,Oc=new Array(Tl),hc=0;hc{var{prefixCls:G,children:ae}=S,We=lr(S,["prefixCls","children"]);const{getPrefixCls:tt}=T.useContext(bn.E_),gt=tt("form",G),bt=T.useMemo(()=>({prefixCls:gt,status:"error"}),[gt]);return T.createElement(_r.List,Object.assign({},We),(Bn,Ge,$e)=>T.createElement(B.Rk.Provider,{value:bt},ae(Bn.map(Ne=>Object.assign(Object.assign({},Ne),{fieldKey:Ne.key})),Ge,{errors:$e.errors,warnings:$e.warnings})))};function Le(){const{form:S}=(0,T.useContext)(B.q3);return S}const k=At;k.Item=ur,k.List=mi,k.ErrorList=Kn,k.useForm=ge,k.useFormInstance=Le,k.useWatch=_r.useWatch,k.Provider=B.RV,k.create=()=>{};var W=k},5112:function(Ie,Be,_){"use strict";_.d(Be,{ZP:function(){return Yr}});var m=_(92310),K=_.n(m),H=_(18929),L=_(26112),T=_(59301),F=_(36355),B=_(19716);const U=T.createContext(null),Q=U.Provider;var V=U;const j=T.createContext(null),Y=j.Provider;var fe=_(5630),ue=_(8654),Me=_(1684),_e=_(32441),Ce=_(17313),Xe=_(83116),Fe=_(37613);const ft=rn=>{const{componentCls:An,antCls:Ln}=rn,Tt=`${An}-group`;return{[Tt]:Object.assign(Object.assign({},(0,Ce.Wf)(rn)),{display:"inline-block",fontSize:0,[`&${Tt}-rtl`]:{direction:"rtl"},[`${Ln}-badge ${Ln}-badge-count`]:{zIndex:1},[`> ${Ln}-badge:not(:first-child) > ${Ln}-button-wrapper`]:{borderInlineStart:"none"}})}},_t=rn=>{const{componentCls:An,wrapperMarginInlineEnd:Ln,colorPrimary:Tt,radioSize:Mt,motionDurationSlow:ge,motionDurationMid:pe,motionEaseInOutCirc:De,colorBgContainer:Ht,colorBorder:Jt,lineWidth:At,dotSize:dn,colorBgContainerDisabled:fn,colorTextDisabled:ut,paddingXS:Bt,dotColorDisabled:un,lineType:Z,radioDotDisabledSize:Te,wireframe:Zt,colorWhite:Gt}=rn,On=`${An}-inner`;return{[`${An}-wrapper`]:Object.assign(Object.assign({},(0,Ce.Wf)(rn)),{display:"inline-flex",alignItems:"baseline",marginInlineStart:0,marginInlineEnd:Ln,cursor:"pointer",[`&${An}-wrapper-rtl`]:{direction:"rtl"},"&-disabled":{cursor:"not-allowed",color:rn.colorTextDisabled},"&::after":{display:"inline-block",width:0,overflow:"hidden",content:'"\\a0"'},[`${An}-checked::after`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,width:"100%",height:"100%",border:`${At}px ${Z} ${Tt}`,borderRadius:"50%",visibility:"hidden",content:'""'},[An]:Object.assign(Object.assign({},(0,Ce.Wf)(rn)),{position:"relative",display:"inline-block",outline:"none",cursor:"pointer",alignSelf:"center",borderRadius:"50%"}),[`${An}-wrapper:hover &, + &:hover ${On}`]:{borderColor:Tt},[`${An}-input:focus-visible + ${On}`]:Object.assign({},(0,Ce.oN)(rn)),[`${An}:hover::after, ${An}-wrapper:hover &::after`]:{visibility:"visible"},[`${An}-inner`]:{"&::after":{boxSizing:"border-box",position:"absolute",insetBlockStart:"50%",insetInlineStart:"50%",display:"block",width:Mt,height:Mt,marginBlockStart:Mt/-2,marginInlineStart:Mt/-2,backgroundColor:Zt?Tt:Gt,borderBlockStart:0,borderInlineStart:0,borderRadius:Mt,transform:"scale(0)",opacity:0,transition:`all ${ge} ${De}`,content:'""'},boxSizing:"border-box",position:"relative",insetBlockStart:0,insetInlineStart:0,display:"block",width:Mt,height:Mt,backgroundColor:Ht,borderColor:Jt,borderStyle:"solid",borderWidth:At,borderRadius:"50%",transition:`all ${pe}`},[`${An}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0},[`${An}-checked`]:{[On]:{borderColor:Tt,backgroundColor:Zt?Ht:Tt,"&::after":{transform:`scale(${dn/Mt})`,opacity:1,transition:`all ${ge} ${De}`}}},[`${An}-disabled`]:{cursor:"not-allowed",[On]:{backgroundColor:fn,borderColor:Jt,cursor:"not-allowed","&::after":{backgroundColor:un}},[`${An}-input`]:{cursor:"not-allowed"},[`${An}-disabled + span`]:{color:ut,cursor:"not-allowed"},[`&${An}-checked`]:{[On]:{"&::after":{transform:`scale(${Te/Mt})`}}}},[`span${An} + *`]:{paddingInlineStart:Bt,paddingInlineEnd:Bt}})}},lt=rn=>{const{buttonColor:An,controlHeight:Ln,componentCls:Tt,lineWidth:Mt,lineType:ge,colorBorder:pe,motionDurationSlow:De,motionDurationMid:Ht,buttonPaddingInline:Jt,fontSize:At,buttonBg:dn,fontSizeLG:fn,controlHeightLG:ut,controlHeightSM:Bt,paddingXS:un,borderRadius:Z,borderRadiusSM:Te,borderRadiusLG:Zt,buttonCheckedBg:Gt,buttonSolidCheckedColor:On,colorTextDisabled:In,colorBgContainerDisabled:pr,buttonCheckedBgDisabled:Je,buttonCheckedColorDisabled:we,colorPrimary:at,colorPrimaryHover:wt,colorPrimaryActive:it,buttonSolidCheckedBg:ht,buttonSolidCheckedHoverBg:St,buttonSolidCheckedActiveBg:Yt}=rn;return{[`${Tt}-button-wrapper`]:{position:"relative",display:"inline-block",height:Ln,margin:0,paddingInline:Jt,paddingBlock:0,color:An,fontSize:At,lineHeight:`${Ln-Mt*2}px`,background:dn,border:`${Mt}px ${ge} ${pe}`,borderBlockStartWidth:Mt+.02,borderInlineStartWidth:0,borderInlineEndWidth:Mt,cursor:"pointer",transition:[`color ${Ht}`,`background ${Ht}`,`box-shadow ${Ht}`].join(","),a:{color:An},[`> ${Tt}-button`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,zIndex:-1,width:"100%",height:"100%"},"&:not(:first-child)":{"&::before":{position:"absolute",insetBlockStart:-Mt,insetInlineStart:-Mt,display:"block",boxSizing:"content-box",width:1,height:"100%",paddingBlock:Mt,paddingInline:0,backgroundColor:pe,transition:`background-color ${De}`,content:'""'}},"&:first-child":{borderInlineStart:`${Mt}px ${ge} ${pe}`,borderStartStartRadius:Z,borderEndStartRadius:Z},"&:last-child":{borderStartEndRadius:Z,borderEndEndRadius:Z},"&:first-child:last-child":{borderRadius:Z},[`${Tt}-group-large &`]:{height:ut,fontSize:fn,lineHeight:`${ut-Mt*2}px`,"&:first-child":{borderStartStartRadius:Zt,borderEndStartRadius:Zt},"&:last-child":{borderStartEndRadius:Zt,borderEndEndRadius:Zt}},[`${Tt}-group-small &`]:{height:Bt,paddingInline:un-Mt,paddingBlock:0,lineHeight:`${Bt-Mt*2}px`,"&:first-child":{borderStartStartRadius:Te,borderEndStartRadius:Te},"&:last-child":{borderStartEndRadius:Te,borderEndEndRadius:Te}},"&:hover":{position:"relative",color:at},"&:has(:focus-visible)":Object.assign({},(0,Ce.oN)(rn)),[`${Tt}-inner, input[type='checkbox'], input[type='radio']`]:{width:0,height:0,opacity:0,pointerEvents:"none"},[`&-checked:not(${Tt}-button-wrapper-disabled)`]:{zIndex:1,color:at,background:Gt,borderColor:at,"&::before":{backgroundColor:at},"&:first-child":{borderColor:at},"&:hover":{color:wt,borderColor:wt,"&::before":{backgroundColor:wt}},"&:active":{color:it,borderColor:it,"&::before":{backgroundColor:it}}},[`${Tt}-group-solid &-checked:not(${Tt}-button-wrapper-disabled)`]:{color:On,background:ht,borderColor:ht,"&:hover":{color:On,background:St,borderColor:St},"&:active":{color:On,background:Yt,borderColor:Yt}},"&-disabled":{color:In,backgroundColor:pr,borderColor:pe,cursor:"not-allowed","&:first-child, &:hover":{color:In,backgroundColor:pr,borderColor:pe}},[`&-disabled${Tt}-button-wrapper-checked`]:{color:we,backgroundColor:Je,borderColor:pe,boxShadow:"none"}}}},Vt=rn=>rn-4*2;var It=(0,Xe.Z)("Radio",rn=>{const{controlOutline:An,controlOutlineWidth:Ln,radioSize:Tt}=rn,Mt=`0 0 0 ${Ln}px ${An}`,ge=Mt,pe=Vt(Tt),De=(0,Fe.TS)(rn,{radioDotDisabledSize:pe,radioFocusShadow:Mt,radioButtonFocusShadow:ge});return[ft(De),_t(De),lt(De)]},rn=>{const{wireframe:An,padding:Ln,marginXS:Tt,lineWidth:Mt,fontSizeLG:ge,colorText:pe,colorBgContainer:De,colorTextDisabled:Ht,controlItemBgActiveDisabled:Jt,colorTextLightSolid:At,colorPrimary:dn,colorPrimaryHover:fn,colorPrimaryActive:ut}=rn,Bt=4,un=ge,Z=An?Vt(un):un-(Bt+Mt)*2;return{radioSize:un,dotSize:Z,dotColorDisabled:Ht,buttonSolidCheckedColor:At,buttonSolidCheckedBg:dn,buttonSolidCheckedHoverBg:fn,buttonSolidCheckedActiveBg:ut,buttonBg:De,buttonCheckedBg:De,buttonColor:pe,buttonCheckedBgDisabled:Jt,buttonCheckedColorDisabled:Ht,buttonPaddingInline:Ln-Mt,wrapperMarginInlineEnd:Tt}}),Fn=_(14088),Ot=_(4572),jn=function(rn,An){var Ln={};for(var Tt in rn)Object.prototype.hasOwnProperty.call(rn,Tt)&&An.indexOf(Tt)<0&&(Ln[Tt]=rn[Tt]);if(rn!=null&&typeof Object.getOwnPropertySymbols=="function")for(var Mt=0,Tt=Object.getOwnPropertySymbols(rn);Mt{var Ln,Tt;const Mt=T.useContext(V),ge=T.useContext(j),{getPrefixCls:pe,direction:De,radio:Ht}=T.useContext(F.E_),Jt=T.useRef(null),At=(0,ue.sQ)(An,Jt),{isFormItemInput:dn}=T.useContext(_e.aM),fn=it=>{var ht,St;(ht=rn.onChange)===null||ht===void 0||ht.call(rn,it),(St=Mt==null?void 0:Mt.onChange)===null||St===void 0||St.call(Mt,it)},{prefixCls:ut,className:Bt,rootClassName:un,children:Z,style:Te}=rn,Zt=jn(rn,["prefixCls","className","rootClassName","children","style"]),Gt=pe("radio",ut),On=((Mt==null?void 0:Mt.optionType)||ge)==="button",In=On?`${Gt}-button`:Gt,[pr,Je]=It(Gt),we=Object.assign({},Zt),at=T.useContext(Me.Z);Mt&&(we.name=Mt.name,we.onChange=fn,we.checked=rn.value===Mt.value,we.disabled=(Ln=we.disabled)!==null&&Ln!==void 0?Ln:Mt.disabled),we.disabled=(Tt=we.disabled)!==null&&Tt!==void 0?Tt:at;const wt=K()(`${In}-wrapper`,{[`${In}-wrapper-checked`]:we.checked,[`${In}-wrapper-disabled`]:we.disabled,[`${In}-wrapper-rtl`]:De==="rtl",[`${In}-wrapper-in-form-item`]:dn},Ht==null?void 0:Ht.className,Bt,un,Je);return pr(T.createElement(Fn.Z,{component:"Radio",disabled:we.disabled},T.createElement("label",{className:wt,style:Object.assign(Object.assign({},Ht==null?void 0:Ht.style),Te),onMouseEnter:rn.onMouseEnter,onMouseLeave:rn.onMouseLeave},T.createElement(fe.Z,Object.assign({},we,{className:K()(we.className,!On&&Ot.A),type:"radio",prefixCls:In,ref:At})),Z!==void 0?T.createElement("span",null,Z):null)))};var Kn=T.forwardRef(rr);const _r=T.forwardRef((rn,An)=>{const{getPrefixCls:Ln,direction:Tt}=T.useContext(F.E_),[Mt,ge]=(0,H.Z)(rn.defaultValue,{value:rn.value}),pe=ht=>{const St=Mt,Yt=ht.target.value;"value"in rn||ge(Yt);const{onChange:$t}=rn;$t&&Yt!==St&&$t(ht)},{prefixCls:De,className:Ht,rootClassName:Jt,options:At,buttonStyle:dn="outline",disabled:fn,children:ut,size:Bt,style:un,id:Z,onMouseEnter:Te,onMouseLeave:Zt,onFocus:Gt,onBlur:On}=rn,In=Ln("radio",De),pr=`${In}-group`,[Je,we]=It(In);let at=ut;At&&At.length>0&&(at=At.map(ht=>typeof ht=="string"||typeof ht=="number"?T.createElement(Kn,{key:ht.toString(),prefixCls:In,disabled:fn,value:ht,checked:Mt===ht},ht):T.createElement(Kn,{key:`radio-group-value-options-${ht.value}`,prefixCls:In,disabled:ht.disabled||fn,value:ht.value,checked:Mt===ht.value,title:ht.title,style:ht.style},ht.label)));const wt=(0,B.Z)(Bt),it=K()(pr,`${pr}-${dn}`,{[`${pr}-${wt}`]:wt,[`${pr}-rtl`]:Tt==="rtl"},Ht,Jt,we);return Je(T.createElement("div",Object.assign({},(0,L.Z)(rn,{aria:!0,data:!0}),{className:it,style:un,onMouseEnter:Te,onMouseLeave:Zt,onFocus:Gt,onBlur:On,id:Z,ref:An}),T.createElement(Q,{value:{onChange:pe,value:Mt,disabled:rn.disabled,name:rn.name,optionType:rn.optionType}},at)))});var bn=T.memo(_r),Cr=function(rn,An){var Ln={};for(var Tt in rn)Object.prototype.hasOwnProperty.call(rn,Tt)&&An.indexOf(Tt)<0&&(Ln[Tt]=rn[Tt]);if(rn!=null&&typeof Object.getOwnPropertySymbols=="function")for(var Mt=0,Tt=Object.getOwnPropertySymbols(rn);Mt{const{getPrefixCls:Ln}=T.useContext(F.E_),{prefixCls:Tt}=rn,Mt=Cr(rn,["prefixCls"]),ge=Ln("radio",Tt);return T.createElement(Y,{value:"button"},T.createElement(Kn,Object.assign({prefixCls:ge},Mt,{type:"radio",ref:An})))};var Rt=T.forwardRef(Ke);const Qn=Kn;Qn.Button=Rt,Qn.Group=bn,Qn.__ANT_RADIO=!0;var Yr=Qn},80574:function(Ie,Be,_){"use strict";_.d(Be,{Ae:function(){return Ce},CF:function(){return Gt},vC:function(){return un},x1:function(){return F}});function m(Je,we,at,wt,it,ht){const St=Je,Yt=we,$t=at-St,Ft=wt-Yt;let xn=it-St,cr=ht-Yt,nr=xn*$t+cr*Ft,Lr=0;nr<=0?Lr=0:(xn=$t-xn,cr=Ft-cr,nr=xn*$t+cr*Ft,nr<=0?Lr=0:Lr=nr*nr/($t*$t+Ft*Ft));const si=xn*xn+cr*cr-Lr;return si<0?0:si}function K(Je,we,at,wt){return(Je-at)*(Je-at)+(we-wt)*(we-wt)}function H(Je,we,at,wt,it){return K(Je,we,at,wt)at;if(Je===0)return Math.round;const we=Math.pow(10,Je);return at=>Math.round(at*we)/we}function T(Je){const we=Math.min(Je.x1,Je.x2),at=Math.max(Je.x1,Je.x2),wt=Math.min(Je.y1,Je.y2),it=Math.max(Je.y1,Je.y2);return{x:we,y:wt,x2:at,y2:it,width:at-we,height:it-wt}}class F{constructor(we,at,wt,it){this.x1=we,this.y1=at,this.x2=wt,this.y2=it}equals(we){return this.x1===we.x1&&this.y1===we.y1&&this.x2===we.x2&&this.y2===we.y2}draw(we){we.moveTo(this.x1,this.y1),we.lineTo(this.x2,this.y2)}toString(){return`Line(from=(${this.x1},${this.y1}),to=(${this.x2},${this.y2}))`}static from(we){return new F(we.x1,we.y1,we.x2,we.y2)}cuts(we,at){if(this.y1===this.y2||atthis.y1&&at>=this.y2||we>this.x1&&we>=this.x2)return!1;if(wethis.x2+wt)return!1}else if(wethis.x1+wt)return!1;if(this.y1this.y2+wt)return!1}else if(atthis.y1+wt)return!1;return!0}}var B;(function(Je){Je[Je.POINT=1]="POINT",Je[Je.PARALLEL=2]="PARALLEL",Je[Je.COINCIDENT=3]="COINCIDENT",Je[Je.NONE=4]="NONE"})(B||(B={}));class U{constructor(we,at=0,wt=0){this.state=we,this.x=at,this.y=wt}}function Q(Je,we){const at=(we.x2-we.x1)*(Je.y1-we.y1)-(we.y2-we.y1)*(Je.x1-we.x1),wt=(Je.x2-Je.x1)*(Je.y1-we.y1)-(Je.y2-Je.y1)*(Je.x1-we.x1),it=(we.y2-we.y1)*(Je.x2-Je.x1)-(we.x2-we.x1)*(Je.y2-Je.y1);if(it){const ht=at/it,St=wt/it;return 0<=ht&&ht<=1&&0<=St&&St<=1?new U(B.POINT,Je.x1+ht*(Je.x2-Je.x1),Je.y1+ht*(Je.y2-Je.y1)):new U(B.NONE)}return new U(at===0||wt===0?B.COINCIDENT:B.PARALLEL)}function V(Je,we){const at=(we.x2-we.x1)*(Je.y1-we.y1)-(we.y2-we.y1)*(Je.x1-we.x1),wt=(Je.x2-Je.x1)*(Je.y1-we.y1)-(Je.y2-Je.y1)*(Je.x1-we.x1),it=(we.y2-we.y1)*(Je.x2-Je.x1)-(we.x2-we.x1)*(Je.y2-Je.y1);if(it){const ht=at/it,St=wt/it;if(0<=ht&&ht<=1&&0<=St&&St<=1)return ht}return Number.POSITIVE_INFINITY}function j(Je,we){function at(it,ht,St,Yt){let $t=V(we,new F(it,ht,St,Yt));return $t=Math.abs($t-.5),$t>=0&&$t<=1?1:0}let wt=at(Je.x,Je.y,Je.x2,Je.y);return wt+=at(Je.x,Je.y,Je.x,Je.y2),wt>1||(wt+=at(Je.x,Je.y2,Je.x2,Je.y2),wt>1)?!0:(wt+=at(Je.x2,Je.y,Je.x2,Je.y2),wt>0)}var Y;(function(Je){Je[Je.LEFT=0]="LEFT",Je[Je.TOP=1]="TOP",Je[Je.RIGHT=2]="RIGHT",Je[Je.BOTTOM=3]="BOTTOM"})(Y||(Y={}));function fe(Je,we,at){const wt=new Set;return Je.width<=0?(wt.add(Y.LEFT),wt.add(Y.RIGHT)):weJe.x+Je.width&&wt.add(Y.RIGHT),Je.height<=0?(wt.add(Y.TOP),wt.add(Y.BOTTOM)):atJe.y+Je.height&&wt.add(Y.BOTTOM),wt}function ue(Je,we){let at=we.x1,wt=we.y1;const it=we.x2,ht=we.y2,St=Array.from(fe(Je,it,ht));if(St.length===0)return!0;let Yt=fe(Je,at,wt);for(;Yt.size!==0;){for(const $t of St)if(Yt.has($t))return!1;if(Yt.has(Y.RIGHT)||Yt.has(Y.LEFT)){let $t=Je.x;Yt.has(Y.RIGHT)&&($t+=Je.width),wt=wt+($t-at)*(ht-wt)/(it-at),at=$t}else{let $t=Je.y;Yt.has(Y.BOTTOM)&&($t+=Je.height),at=at+($t-wt)*(it-at)/(ht-wt),wt=$t}Yt=fe(Je,at,wt)}return!0}function Me(Je,we){let at=Number.POSITIVE_INFINITY,wt=0;function it(ht,St,Yt,$t){let Ft=V(we,new F(ht,St,Yt,$t));Ft=Math.abs(Ft-.5),Ft>=0&&Ft<=1&&(wt++,Ft1||(it(Je.x,Je.y2,Je.x2,Je.y2),wt>1)?at:(it(Je.x2,Je.y,Je.x2,Je.y2),wt===0?-1:at)}function _e(Je,we){let at=0;const wt=Q(Je,new F(we.x,we.y,we.x2,we.y));at+=wt.state===B.POINT?1:0;const it=Q(Je,new F(we.x,we.y,we.x,we.y2));at+=it.state===B.POINT?1:0;const ht=Q(Je,new F(we.x,we.y2,we.x2,we.y2));at+=ht.state===B.POINT?1:0;const St=Q(Je,new F(we.x2,we.y,we.x2,we.y2));return at+=St.state===B.POINT?1:0,{top:wt,left:it,bottom:ht,right:St,count:at}}class Ce{constructor(we,at,wt,it){this.x=we,this.y=at,this.width=wt,this.height=it}get x2(){return this.x+this.width}get y2(){return this.y+this.height}get cx(){return this.x+this.width/2}get cy(){return this.y+this.height/2}get radius(){return Math.max(this.width,this.height)/2}static from(we){return new Ce(we.x,we.y,we.width,we.height)}equals(we){return this.x===we.x&&this.y===we.y&&this.width===we.width&&this.height===we.height}clone(){return new Ce(this.x,this.y,this.width,this.height)}add(we){const at=Math.min(this.x,we.x),wt=Math.min(this.y,we.y),it=Math.max(this.x2,we.x+we.width),ht=Math.max(this.y2,we.y+we.height);this.x=at,this.y=wt,this.width=it-at,this.height=ht-wt}addPoint(we){const at=Math.min(this.x,we.x),wt=Math.min(this.y,we.y),it=Math.max(this.x2,we.x),ht=Math.max(this.y2,we.y);this.x=at,this.y=wt,this.width=it-at,this.height=ht-wt}toString(){return`Rectangle[x=${this.x}, y=${this.y}, w=${this.width}, h=${this.height}]`}draw(we){we.rect(this.x,this.y,this.width,this.height)}containsPt(we,at){return we>=this.x&&we<=this.x2&&at>=this.y&&at<=this.y2}get area(){return this.width*this.height}intersects(we){return this.area<=0||we.width<=0||we.height<=0?!1:we.x+we.width>this.x&&we.y+we.height>this.y&&we.x=this.width?this.width-1:we}boundY(we){return we=this.height?this.height-1:we}scaleX(we){return this.boundX(Math.floor((we-this.pixelX)/this.pixelGroup))}scaleY(we){return this.boundY(Math.floor((we-this.pixelY)/this.pixelGroup))}scale(we){const at=this.scaleX(we.x),wt=this.scaleY(we.y),it=this.boundX(Math.ceil((we.x+we.width-this.pixelX)/this.pixelGroup)),ht=this.boundY(Math.ceil((we.y+we.height-this.pixelY)/this.pixelGroup)),St=it-at,Yt=ht-wt;return new Ce(at,wt,St,Yt)}invertScaleX(we){return Math.round(we*this.pixelGroup+this.pixelX)}invertScaleY(we){return Math.round(we*this.pixelGroup+this.pixelY)}addPadding(we,at){const wt=Math.ceil(at/this.pixelGroup),it=this.boundX(we.x-wt),ht=this.boundY(we.y-wt),St=this.boundX(we.x2+wt),Yt=this.boundY(we.y2+wt),$t=St-it,Ft=Yt-ht;return new Ce(it,ht,$t,Ft)}get(we,at){return we<0||at<0||we>=this.width||at>=this.height?Number.NaN:this.area[we+at*this.width]}inc(we,at,wt){we<0||at<0||we>=this.width||at>=this.height||(this.area[we+at*this.width]+=wt)}set(we,at,wt){we<0||at<0||we>=this.width||at>=this.height||(this.area[we+at*this.width]=wt)}incArea(we,at){if(we.width<=0||we.height<=0||at===0)return;const wt=this.width,it=we.width,ht=Math.max(0,we.i),St=Math.max(0,we.j),Yt=Math.min(we.i+we.width,wt),$t=Math.min(we.j+we.height,this.height);if(!($t<=0||Yt<=0||ht>=wt||$t>=this.height))for(let Ft=St;Ft<$t;Ft++){const xn=(Ft-we.j)*it,cr=Ft*wt;for(let nr=ht;nrMath.min(St,Yt),Number.POSITIVE_INFINITY),it=this.area.reduce((St,Yt)=>Math.max(St,Yt),Number.NEGATIVE_INFINITY),ht=St=>(St-wt)/(it-wt);we.scale(this.pixelGroup,this.pixelGroup);for(let St=0;Stat?"black":"white",we.fillRect(it,ht,1,1)}we.restore()}}}function _t(Je,we){const at=wt=>({x:wt.x-we,y:wt.y-we,width:wt.width+2*we,height:wt.height+2*we});return Array.isArray(Je)?Je.map(at):at(Je)}function lt(Je,we,at){return Vt(Object.assign(T(Je),{distSquare:(wt,it)=>m(Je.x1,Je.y1,Je.x2,Je.y2,wt,it)}),we,at)}function Vt(Je,we,at){const wt=_t(Je,at),it=we.scale(wt),ht=we.createSub(it,wt);return It(ht,we,at,(St,Yt)=>Je.distSquare(St,Yt)),ht}function It(Je,we,at,wt){const it=at*at;for(let ht=0;ht{const Yt=it.slice(0,St);return _r(we,ht,Yt,at,wt)}).flat()}function _r(Je,we,at,wt,it){const ht=kn(we.cx,we.cy),St=Ke(ht,at,Je);if(St==null)return[];const Yt=new F(ht.x,ht.y,St.cx,St.cy),$t=bn(Yt,Je,wt,it);return Cr($t,Je)}function bn(Je,we,at,wt){const it=[],ht=[];ht.push(Je);let St=!0;for(let Yt=0;Yt0;){const $t=ht.pop(),Ft=rn(we,$t),xn=Ft?_e($t,Ft):null;if(!Ft||!xn||xn.count!==2){St||it.push($t);continue}let cr=wt,nr=Ln(Ft,cr,xn,!0),Lr=Yr(nr,ht)||Yr(nr,it),si=Qn(nr,we);for(;!Lr&&si&&cr>=1;)cr/=1.5,nr=Ln(Ft,cr,xn,!0),Lr=Yr(nr,ht)||Yr(nr,it),si=Qn(nr,we);if(nr&&!Lr&&!si&&(ht.push(new F($t.x1,$t.y1,nr.x,nr.y)),ht.push(new F(nr.x,nr.y,$t.x2,$t.y2)),St=!0),St)continue;cr=wt,nr=Ln(Ft,cr,xn,!1);let Pr=Yr(nr,ht)||Yr(nr,it);for(si=Qn(nr,we);!Pr&&si&&cr>=1;)cr/=1.5,nr=Ln(Ft,cr,xn,!1),Pr=Yr(nr,ht)||Yr(nr,it),si=Qn(nr,we);nr&&!Pr&&(ht.push(new F($t.x1,$t.y1,nr.x,nr.y)),ht.push(new F(nr.x,nr.y,$t.x2,$t.y2)),St=!0),St||it.push($t)}for(;ht.length>0;)it.push(ht.pop());return it}function Cr(Je,we){const at=[];for(;Je.length>0;){const wt=Je.pop();if(Je.length===0){at.push(wt);break}const it=Je.pop(),ht=new F(wt.x1,wt.y1,it.x2,it.y2);rn(we,ht)?(at.push(wt),Je.push(it)):Je.push(ht)}return at}function Ke(Je,we,at){let wt=Number.POSITIVE_INFINITY;return we.reduce((it,ht)=>{const St=K(Je.x,Je.y,ht.cx,ht.cy);if(St>wt)return it;const Yt=new F(Je.x,Je.y,ht.cx,ht.cy),$t=An(at,Yt);return St*($t+1)*($t+1){we+=wt.cx,at+=wt.cy}),we/=Je.length,at/=Je.length,Je.map(wt=>{const it=we-wt.cx,ht=at-wt.cy,St=it*it+ht*ht;return[wt,St]}).sort((wt,it)=>wt[1]-it[1]).map(wt=>wt[0])}function Qn(Je,we){return we.some(at=>at.containsPt(Je.x,Je.y))}function Yr(Je,we){return we.some(at=>!!(H(at.x1,at.y1,Je.x,Je.y,.001)||H(at.x2,at.y2,Je.x,Je.y,.001)))}function rn(Je,we){let at=Number.POSITIVE_INFINITY,wt=null;for(const it of Je){if(!ue(it,we))continue;const ht=Me(it,we);ht>=0&&htue(wt,we)&&j(wt,we)?at+1:at,0)}function Ln(Je,we,at,wt){const it=at.top,ht=at.left,St=at.bottom,Yt=at.right;if(wt){if(ht.state===B.POINT){if(it.state===B.POINT)return kn(Je.x-we,Je.y-we);if(St.state===B.POINT)return kn(Je.x-we,Je.y2+we);const nr=Je.width*Je.height;return Je.width*((ht.y-Je.y+(Yt.y-Je.y))*.5)Yt.y?kn(Je.x-we,Je.y-we):kn(Je.x2+we,Je.y-we):ht.ySt.x?kn(Je.x-we,Je.y-we):kn(Je.x-we,Je.y2+we):it.xYt.y?kn(Je.x2+we,Je.y2+we):kn(Je.x-we,Je.y2+we):ht.ySt.x?kn(Je.x2+we,Je.y2+we):kn(Je.x2+we,Je.y-we):it.xwt)return!1}return!0}function Mt(Je=0){return we=>{if(Je<0||we.length<3)return we;const at=[];let wt=0;const it=Je*Je;for(;wt{if(St.length<3)return St;const Yt=[],$t=St.closed,Ft=St.length+3-1+($t?0:2);Yt.push(ht(St,2-($t?0:2),0));for(let xn=2-($t?0:2);xn{let at=Je,wt=we.length;if(at>1)for(wt=Math.floor(we.length/at);wt<3&&at>1;)at-=1,wt=Math.floor(we.length/at);const it=[];for(let ht=0,St=0;St=wt?this.closed?this.get(we-wt):this.points[wt-1]:this.points[at]}get length(){return this.points.length}toString(we=1/0){const at=this.points;if(at.length===0)return"";const wt=typeof we=="function"?we:L(we);let it="M";for(const ht of at)it+=`${wt(ht.x)},${wt(ht.y)} L`;return it=it.slice(0,-1),this.closed&&(it+=" Z"),it}draw(we){const at=this.points;if(at.length!==0){we.beginPath(),we.moveTo(at[0].x,at[0].y);for(const wt of at)we.lineTo(wt.x,wt.y);this.closed&&we.closePath()}}sample(we){return De(we)(this)}simplify(we){return Mt(we)(this)}bSplines(we){return pe(we)(this)}apply(we){return we(this)}containsElements(we){const at=Xe(this.points);return at?we.every(wt=>at.containsPt(wt.cx,wt.cy)&&this.withinArea(wt.cx,wt.cy)):!1}withinArea(we,at){if(this.length===0)return!1;let wt=0;const it=this.points[0],ht=new F(it.x,it.y,it.x,it.y);for(let St=1;Stwe?xn+cr:xn}function ht($t,Ft){let xn=At;return xn=it($t,Ft,xn,1),xn=it($t+1,Ft,xn,2),xn=it($t,Ft+1,xn,4),xn=it($t+1,Ft+1,xn,8),Number.isNaN(xn)?-1:xn}let St=dn;function Yt($t,Ft){let xn=$t,cr=Ft,nr=Je.invertScaleX(xn),Lr=Je.invertScaleY(cr);for(let si=0;siTe(wt.raw,we));return at<0?!1:(this.members.splice(at,1),this.dirty.add(Zt.MEMBERS),!0)}removeNonMember(we){const at=this.nonMembers.findIndex(wt=>Te(wt.raw,we));return at<0?!1:(this.nonMembers.splice(at,1),this.dirty.add(Zt.NON_MEMBERS),!0)}removeEdge(we){const at=this.edges.findIndex(wt=>wt.obj.equals(we));return at<0?!1:(this.edges.splice(at,1),this.dirty.add(Zt.NON_MEMBERS),!0)}pushNonMember(...we){if(we.length!==0){this.dirty.add(Zt.NON_MEMBERS);for(const at of we)this.nonMembers.push({raw:at,obj:Z(at)?Fe.from(at):Ce.from(at),area:null})}}pushEdge(...we){if(we.length!==0){this.dirty.add(Zt.EDGES);for(const at of we)this.edges.push({raw:at,obj:F.from(at),area:null})}}update(){const we=this.dirty.has(Zt.MEMBERS),at=this.dirty.has(Zt.NON_MEMBERS);let wt=this.dirty.has(Zt.EDGES);this.dirty.clear();const it=this.members.map(Ft=>Ft.obj);if(this.o.virtualEdges&&(we||at)){const Ft=this.nonMembers.map(nr=>nr.obj),xn=Kn(it,Ft,this.o.maxRoutingIterations,this.o.morphBuffer),cr=new Map(this.virtualEdges.map(nr=>[nr.obj.toString(),nr.area]));this.virtualEdges=xn.map(nr=>{var Lr;return{raw:nr,obj:nr,area:(Lr=cr.get(nr.toString()))!==null&&Lr!==void 0?Lr:null}}),wt=!0}let ht=!1;if(we||wt){const Ft=this.virtualEdges.concat(this.edges).map(Lr=>Lr.obj),xn=In(it,Ft),cr=Math.max(this.o.edgeR1,this.o.nodeR1)+this.o.morphBuffer,nr=Ce.from(_t(xn,cr));nr.equals(this.activeRegion)||(ht=!0,this.activeRegion=nr)}if(ht){const Ft=Math.ceil(this.activeRegion.width/this.o.pixelGroup),xn=Math.ceil(this.activeRegion.height/this.o.pixelGroup);this.activeRegion.x!==this.potentialArea.pixelX||this.activeRegion.y!==this.potentialArea.pixelY?(this.potentialArea=ft.fromPixelRegion(this.activeRegion,this.o.pixelGroup),this.members.forEach(cr=>cr.area=null),this.nonMembers.forEach(cr=>cr.area=null),this.edges.forEach(cr=>cr.area=null),this.virtualEdges.forEach(cr=>cr.area=null)):(Ft!==this.potentialArea.width||xn!==this.potentialArea.height)&&(this.potentialArea=ft.fromPixelRegion(this.activeRegion,this.o.pixelGroup))}const St=new Map,Yt=Ft=>{if(Ft.area){const xn=`${Ft.obj.width}x${Ft.obj.height}x${Ft.obj instanceof Ce?"R":"C"}`;St.set(xn,Ft.area)}},$t=Ft=>{if(Ft.area)return;const xn=`${Ft.obj.width}x${Ft.obj.height}x${Ft.obj instanceof Ce?"R":"C"}`;if(St.has(xn)){const nr=St.get(xn);Ft.area=this.potentialArea.copy(nr,{x:Ft.obj.x-this.o.nodeR1,y:Ft.obj.y-this.o.nodeR1});return}const cr=Ft.obj instanceof Ce?Fn(Ft.obj,this.potentialArea,this.o.nodeR1):Vt(Ft.obj,this.potentialArea,this.o.nodeR1);Ft.area=cr,St.set(xn,cr)};this.members.forEach(Yt),this.nonMembers.forEach(Yt),this.members.forEach($t),this.nonMembers.forEach(Ft=>{this.activeRegion.intersects(Ft.obj)?$t(Ft):Ft.area=null}),this.edges.forEach(Ft=>{Ft.area||(Ft.area=lt(Ft.obj,this.potentialArea,this.o.edgeR1))}),this.virtualEdges.forEach(Ft=>{Ft.area||(Ft.area=lt(Ft.obj,this.potentialArea,this.o.edgeR1))})}drawMembers(we){for(const at of this.members)at.obj.draw(we)}drawNonMembers(we){for(const at of this.nonMembers)at.obj.draw(we)}drawEdges(we){for(const at of this.edges)at.obj.draw(we)}drawPotentialArea(we,at=!0){this.potentialArea.draw(we,at)}compute(){if(this.members.length===0)return new Ht([]);this.dirty.size>0&&this.update();const{o:we,potentialArea:at}=this,wt=this.members.map(Yt=>Yt.area),it=this.virtualEdges.concat(this.edges).map(Yt=>Yt.area),ht=this.nonMembers.filter(Yt=>Yt.area!=null).map(Yt=>Yt.area),St=this.members.map(Yt=>Yt.obj);return On(at,wt,it,ht,Yt=>Yt.containsElements(St),we)}}function On(Je,we,at,wt,it,ht={}){const St=Object.assign({},un,ht);let Yt=St.threshold,$t=St.memberInfluenceFactor,Ft=St.edgeInfluenceFactor,xn=St.nonMemberInfluenceFactor;const cr=(St.nodeR0-St.nodeR1)*(St.nodeR0-St.nodeR1),nr=(St.edgeR0-St.edgeR1)*(St.edgeR0-St.edgeR1);for(let Lr=0;Lr0)xn*=.8;else break}return new Ht([])}function In(Je,we){if(Je.length===0)return new Ce(0,0,0,0);const at=Ce.from(Je[0]);for(const wt of Je)at.add(wt);for(const wt of we)at.add(T(wt));return at}function pr(Je,we=[],at=[],wt={}){if(Je.length===0)return new Ht([]);const it=new Gt(wt);return it.pushMember(...Je),it.pushNonMember(...we),it.pushEdge(...at),it.compute()}},45411:function(Ie){"use strict";Ie.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},75196:function(Ie,Be,_){var m=_(45411),K=_(81683),H=Object.hasOwnProperty,L=Object.create(null);for(var T in m)H.call(m,T)&&(L[m[T]]=T);var F=Ie.exports={to:{},get:{}};F.get=function(Q){var V=Q.substring(0,3).toLowerCase(),j,Y;switch(V){case"hsl":j=F.get.hsl(Q),Y="hsl";break;case"hwb":j=F.get.hwb(Q),Y="hwb";break;default:j=F.get.rgb(Q),Y="rgb";break}return j?{model:Y,value:j}:null},F.get.rgb=function(Q){if(!Q)return null;var V=/^#([a-f0-9]{3,4})$/i,j=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,Y=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,fe=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,ue=/^(\w+)$/,Me=[0,0,0,1],_e,Ce,Xe;if(_e=Q.match(j)){for(Xe=_e[2],_e=_e[1],Ce=0;Ce<3;Ce++){var Fe=Ce*2;Me[Ce]=parseInt(_e.slice(Fe,Fe+2),16)}Xe&&(Me[3]=parseInt(Xe,16)/255)}else if(_e=Q.match(V)){for(_e=_e[1],Xe=_e[3],Ce=0;Ce<3;Ce++)Me[Ce]=parseInt(_e[Ce]+_e[Ce],16);Xe&&(Me[3]=parseInt(Xe+Xe,16)/255)}else if(_e=Q.match(Y)){for(Ce=0;Ce<3;Ce++)Me[Ce]=parseInt(_e[Ce+1],0);_e[4]&&(_e[5]?Me[3]=parseFloat(_e[4])*.01:Me[3]=parseFloat(_e[4]))}else if(_e=Q.match(fe)){for(Ce=0;Ce<3;Ce++)Me[Ce]=Math.round(parseFloat(_e[Ce+1])*2.55);_e[4]&&(_e[5]?Me[3]=parseFloat(_e[4])*.01:Me[3]=parseFloat(_e[4]))}else return(_e=Q.match(ue))?_e[1]==="transparent"?[0,0,0,0]:H.call(m,_e[1])?(Me=m[_e[1]],Me[3]=1,Me):null:null;for(Ce=0;Ce<3;Ce++)Me[Ce]=B(Me[Ce],0,255);return Me[3]=B(Me[3],0,1),Me},F.get.hsl=function(Q){if(!Q)return null;var V=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,j=Q.match(V);if(j){var Y=parseFloat(j[4]),fe=(parseFloat(j[1])%360+360)%360,ue=B(parseFloat(j[2]),0,100),Me=B(parseFloat(j[3]),0,100),_e=B(isNaN(Y)?1:Y,0,1);return[fe,ue,Me,_e]}return null},F.get.hwb=function(Q){if(!Q)return null;var V=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,j=Q.match(V);if(j){var Y=parseFloat(j[4]),fe=(parseFloat(j[1])%360+360)%360,ue=B(parseFloat(j[2]),0,100),Me=B(parseFloat(j[3]),0,100),_e=B(isNaN(Y)?1:Y,0,1);return[fe,ue,Me,_e]}return null},F.to.hex=function(){var Q=K(arguments);return"#"+U(Q[0])+U(Q[1])+U(Q[2])+(Q[3]<1?U(Math.round(Q[3]*255)):"")},F.to.rgb=function(){var Q=K(arguments);return Q.length<4||Q[3]===1?"rgb("+Math.round(Q[0])+", "+Math.round(Q[1])+", "+Math.round(Q[2])+")":"rgba("+Math.round(Q[0])+", "+Math.round(Q[1])+", "+Math.round(Q[2])+", "+Q[3]+")"},F.to.rgb.percent=function(){var Q=K(arguments),V=Math.round(Q[0]/255*100),j=Math.round(Q[1]/255*100),Y=Math.round(Q[2]/255*100);return Q.length<4||Q[3]===1?"rgb("+V+"%, "+j+"%, "+Y+"%)":"rgba("+V+"%, "+j+"%, "+Y+"%, "+Q[3]+")"},F.to.hsl=function(){var Q=K(arguments);return Q.length<4||Q[3]===1?"hsl("+Q[0]+", "+Q[1]+"%, "+Q[2]+"%)":"hsla("+Q[0]+", "+Q[1]+"%, "+Q[2]+"%, "+Q[3]+")"},F.to.hwb=function(){var Q=K(arguments),V="";return Q.length>=4&&Q[3]!==1&&(V=", "+Q[3]),"hwb("+Q[0]+", "+Q[1]+"%, "+Q[2]+"%"+V+")"},F.to.keyword=function(Q){return L[Q.slice(0,3)]};function B(Q,V,j){return Math.min(Math.max(V,Q),j)}function U(Q){var V=Math.round(Q).toString(16).toUpperCase();return V.length<2?"0"+V:V}},92546:function(Ie,Be,_){Ie.exports={graphlib:_(76626),layout:_(47194),debug:_(11303),util:{time:_(53063).time,notime:_(53063).notime},version:_(11897)}},81255:function(Ie,Be,_){"use strict";var m=_(72361),K=_(39240);Ie.exports={run:H,undo:T};function H(F){var B=F.graph().acyclicer==="greedy"?K(F,U(F)):L(F);m.forEach(B,function(Q){var V=F.edge(Q);F.removeEdge(Q),V.forwardName=Q.name,V.reversed=!0,F.setEdge(Q.w,Q.v,V,m.uniqueId("rev"))});function U(Q){return function(V){return Q.edge(V).weight}}}function L(F){var B=[],U={},Q={};function V(j){m.has(Q,j)||(Q[j]=!0,U[j]=!0,m.forEach(F.outEdges(j),function(Y){m.has(U,Y.w)?B.push(Y):V(Y.w)}),delete U[j])}return m.forEach(F.nodes(),V),B}function T(F){m.forEach(F.edges(),function(B){var U=F.edge(B);if(U.reversed){F.removeEdge(B);var Q=U.forwardName;delete U.reversed,delete U.forwardName,F.setEdge(B.w,B.v,U,Q)}})}},60765:function(Ie,Be,_){var m=_(72361),K=_(53063);Ie.exports=H;function H(T){function F(B){var U=T.children(B),Q=T.node(B);if(U.length&&m.forEach(U,F),m.has(Q,"minRank")){Q.borderLeft=[],Q.borderRight=[];for(var V=Q.minRank,j=Q.maxRank+1;V0;--Ce)if(_e=j[Ce].dequeue(),_e){fe=fe.concat(B(V,j,Y,_e,!0));break}}}return fe}function B(V,j,Y,fe,ue){var Me=ue?[]:void 0;return m.forEach(V.inEdges(fe.v),function(_e){var Ce=V.edge(_e),Xe=V.node(_e.v);ue&&Me.push({v:_e.v,w:_e.w}),Xe.out-=Ce,Q(j,Y,Xe)}),m.forEach(V.outEdges(fe.v),function(_e){var Ce=V.edge(_e),Xe=_e.w,Fe=V.node(Xe);Fe.in-=Ce,Q(j,Y,Fe)}),V.removeNode(fe.v),Me}function U(V,j){var Y=new K,fe=0,ue=0;m.forEach(V.nodes(),function(Ce){Y.setNode(Ce,{v:Ce,in:0,out:0})}),m.forEach(V.edges(),function(Ce){var Xe=Y.edge(Ce.v,Ce.w)||0,Fe=j(Ce),ft=Xe+Fe;Y.setEdge(Ce.v,Ce.w,ft),ue=Math.max(ue,Y.node(Ce.v).out+=Fe),fe=Math.max(fe,Y.node(Ce.w).in+=Fe)});var Me=m.range(ue+fe+3).map(function(){return new H}),_e=fe+1;return m.forEach(Y.nodes(),function(Ce){Q(Me,_e,Y.node(Ce))}),{graph:Y,buckets:Me,zeroIdx:_e}}function Q(V,j,Y){Y.out?Y.in?V[Y.out-Y.in+j].enqueue(Y):V[V.length-1].enqueue(Y):V[0].enqueue(Y)}},47194:function(Ie,Be,_){"use strict";var m=_(72361),K=_(81255),H=_(27163),L=_(64505),T=_(53063).normalizeRanks,F=_(71970),B=_(53063).removeEmptyRanks,U=_(31733),Q=_(60765),V=_(13257),j=_(62852),Y=_(93021),fe=_(53063),ue=_(76626).Graph;Ie.exports=Me;function Me(Tt,Mt){var ge=Mt&&Mt.debugTiming?fe.time:fe.notime;ge("layout",function(){var pe=ge(" buildLayoutGraph",function(){return Ot(Tt)});ge(" runLayout",function(){_e(pe,ge)}),ge(" updateInputGraph",function(){Ce(Tt,pe)})})}function _e(Tt,Mt){Mt(" makeSpaceForEdgeLabels",function(){jn(Tt)}),Mt(" removeSelfEdges",function(){Qn(Tt)}),Mt(" acyclic",function(){K.run(Tt)}),Mt(" nestingGraph.run",function(){U.run(Tt)}),Mt(" rank",function(){L(fe.asNonCompoundGraph(Tt))}),Mt(" injectEdgeLabelProxies",function(){rr(Tt)}),Mt(" removeEmptyRanks",function(){B(Tt)}),Mt(" nestingGraph.cleanup",function(){U.cleanup(Tt)}),Mt(" normalizeRanks",function(){T(Tt)}),Mt(" assignRankMinMax",function(){kn(Tt)}),Mt(" removeEdgeLabelProxies",function(){Kn(Tt)}),Mt(" normalize.run",function(){H.run(Tt)}),Mt(" parentDummyChains",function(){F(Tt)}),Mt(" addBorderSegments",function(){Q(Tt)}),Mt(" order",function(){j(Tt)}),Mt(" insertSelfEdges",function(){Yr(Tt)}),Mt(" adjustCoordinateSystem",function(){V.adjust(Tt)}),Mt(" position",function(){Y(Tt)}),Mt(" positionSelfEdges",function(){rn(Tt)}),Mt(" removeBorderNodes",function(){Rt(Tt)}),Mt(" normalize.undo",function(){H.undo(Tt)}),Mt(" fixupEdgeLabelCoords",function(){Cr(Tt)}),Mt(" undoCoordinateSystem",function(){V.undo(Tt)}),Mt(" translateGraph",function(){_r(Tt)}),Mt(" assignNodeIntersects",function(){bn(Tt)}),Mt(" reversePoints",function(){Ke(Tt)}),Mt(" acyclic.undo",function(){K.undo(Tt)})}function Ce(Tt,Mt){m.forEach(Tt.nodes(),function(ge){var pe=Tt.node(ge),De=Mt.node(ge);pe&&(pe.x=De.x,pe.y=De.y,Mt.children(ge).length&&(pe.width=De.width,pe.height=De.height))}),m.forEach(Tt.edges(),function(ge){var pe=Tt.edge(ge),De=Mt.edge(ge);pe.points=De.points,m.has(De,"x")&&(pe.x=De.x,pe.y=De.y)}),Tt.graph().width=Mt.graph().width,Tt.graph().height=Mt.graph().height}var Xe=["nodesep","edgesep","ranksep","marginx","marginy"],Fe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},ft=["acyclicer","ranker","rankdir","align"],_t=["width","height"],lt={width:0,height:0},Vt=["minlen","weight","width","height","labeloffset"],It={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Fn=["labelpos"];function Ot(Tt){var Mt=new ue({multigraph:!0,compound:!0}),ge=Ln(Tt.graph());return Mt.setGraph(m.merge({},Fe,An(ge,Xe),m.pick(ge,ft))),m.forEach(Tt.nodes(),function(pe){var De=Ln(Tt.node(pe));Mt.setNode(pe,m.defaults(An(De,_t),lt)),Mt.setParent(pe,Tt.parent(pe))}),m.forEach(Tt.edges(),function(pe){var De=Ln(Tt.edge(pe));Mt.setEdge(pe,m.merge({},It,An(De,Vt),m.pick(De,Fn)))}),Mt}function jn(Tt){var Mt=Tt.graph();Mt.ranksep/=2,m.forEach(Tt.edges(),function(ge){var pe=Tt.edge(ge);pe.minlen*=2,pe.labelpos.toLowerCase()!=="c"&&(Mt.rankdir==="TB"||Mt.rankdir==="BT"?pe.width+=pe.labeloffset:pe.height+=pe.labeloffset)})}function rr(Tt){m.forEach(Tt.edges(),function(Mt){var ge=Tt.edge(Mt);if(ge.width&&ge.height){var pe=Tt.node(Mt.v),De=Tt.node(Mt.w),Ht={rank:(De.rank-pe.rank)/2+pe.rank,e:Mt};fe.addDummyNode(Tt,"edge-proxy",Ht,"_ep")}})}function kn(Tt){var Mt=0;m.forEach(Tt.nodes(),function(ge){var pe=Tt.node(ge);pe.borderTop&&(pe.minRank=Tt.node(pe.borderTop).rank,pe.maxRank=Tt.node(pe.borderBottom).rank,Mt=m.max(Mt,pe.maxRank))}),Tt.graph().maxRank=Mt}function Kn(Tt){m.forEach(Tt.nodes(),function(Mt){var ge=Tt.node(Mt);ge.dummy==="edge-proxy"&&(Tt.edge(ge.e).labelRank=ge.rank,Tt.removeNode(Mt))})}function _r(Tt){var Mt=Number.POSITIVE_INFINITY,ge=0,pe=Number.POSITIVE_INFINITY,De=0,Ht=Tt.graph(),Jt=Ht.marginx||0,At=Ht.marginy||0;function dn(fn){var ut=fn.x,Bt=fn.y,un=fn.width,Z=fn.height;Mt=Math.min(Mt,ut-un/2),ge=Math.max(ge,ut+un/2),pe=Math.min(pe,Bt-Z/2),De=Math.max(De,Bt+Z/2)}m.forEach(Tt.nodes(),function(fn){dn(Tt.node(fn))}),m.forEach(Tt.edges(),function(fn){var ut=Tt.edge(fn);m.has(ut,"x")&&dn(ut)}),Mt-=Jt,pe-=At,m.forEach(Tt.nodes(),function(fn){var ut=Tt.node(fn);ut.x-=Mt,ut.y-=pe}),m.forEach(Tt.edges(),function(fn){var ut=Tt.edge(fn);m.forEach(ut.points,function(Bt){Bt.x-=Mt,Bt.y-=pe}),m.has(ut,"x")&&(ut.x-=Mt),m.has(ut,"y")&&(ut.y-=pe)}),Ht.width=ge-Mt+Jt,Ht.height=De-pe+At}function bn(Tt){m.forEach(Tt.edges(),function(Mt){var ge=Tt.edge(Mt),pe=Tt.node(Mt.v),De=Tt.node(Mt.w),Ht,Jt;ge.points?(Ht=ge.points[0],Jt=ge.points[ge.points.length-1]):(ge.points=[],Ht=De,Jt=pe),ge.points.unshift(fe.intersectRect(pe,Ht)),ge.points.push(fe.intersectRect(De,Jt))})}function Cr(Tt){m.forEach(Tt.edges(),function(Mt){var ge=Tt.edge(Mt);if(m.has(ge,"x"))switch((ge.labelpos==="l"||ge.labelpos==="r")&&(ge.width-=ge.labeloffset),ge.labelpos){case"l":ge.x-=ge.width/2+ge.labeloffset;break;case"r":ge.x+=ge.width/2+ge.labeloffset;break}})}function Ke(Tt){m.forEach(Tt.edges(),function(Mt){var ge=Tt.edge(Mt);ge.reversed&&ge.points.reverse()})}function Rt(Tt){m.forEach(Tt.nodes(),function(Mt){if(Tt.children(Mt).length){var ge=Tt.node(Mt),pe=Tt.node(ge.borderTop),De=Tt.node(ge.borderBottom),Ht=Tt.node(m.last(ge.borderLeft)),Jt=Tt.node(m.last(ge.borderRight));ge.width=Math.abs(Jt.x-Ht.x),ge.height=Math.abs(De.y-pe.y),ge.x=Ht.x+ge.width/2,ge.y=pe.y+ge.height/2}}),m.forEach(Tt.nodes(),function(Mt){Tt.node(Mt).dummy==="border"&&Tt.removeNode(Mt)})}function Qn(Tt){m.forEach(Tt.edges(),function(Mt){if(Mt.v===Mt.w){var ge=Tt.node(Mt.v);ge.selfEdges||(ge.selfEdges=[]),ge.selfEdges.push({e:Mt,label:Tt.edge(Mt)}),Tt.removeEdge(Mt)}})}function Yr(Tt){var Mt=fe.buildLayerMatrix(Tt);m.forEach(Mt,function(ge){var pe=0;m.forEach(ge,function(De,Ht){var Jt=Tt.node(De);Jt.order=Ht+pe,m.forEach(Jt.selfEdges,function(At){fe.addDummyNode(Tt,"selfedge",{width:At.label.width,height:At.label.height,rank:Jt.rank,order:Ht+ ++pe,e:At.e,label:At.label},"_se")}),delete Jt.selfEdges})})}function rn(Tt){m.forEach(Tt.nodes(),function(Mt){var ge=Tt.node(Mt);if(ge.dummy==="selfedge"){var pe=Tt.node(ge.e.v),De=pe.x+pe.width/2,Ht=pe.y,Jt=ge.x-De,At=pe.height/2;Tt.setEdge(ge.e,ge.label),Tt.removeNode(Mt),ge.label.points=[{x:De+2*Jt/3,y:Ht-At},{x:De+5*Jt/6,y:Ht-At},{x:De+Jt,y:Ht},{x:De+5*Jt/6,y:Ht+At},{x:De+2*Jt/3,y:Ht+At}],ge.label.x=ge.x,ge.label.y=ge.y}})}function An(Tt,Mt){return m.mapValues(m.pick(Tt,Mt),Number)}function Ln(Tt){var Mt={};return m.forEach(Tt,function(ge,pe){Mt[pe.toLowerCase()]=ge}),Mt}},72361:function(Ie,Be,_){var m;try{m={cloneDeep:_(20250),constant:_(13503),defaults:_(28548),each:_(76934),filter:_(64725),find:_(79785),flatten:_(40151),forEach:_(99204),forIn:_(23190),has:_(99946),isUndefined:_(16513),last:_(10611),map:_(9924),mapValues:_(70642),max:_(95987),merge:_(28440),min:_(73376),minBy:_(83296),now:_(5795),pick:_(89409),range:_(60859),reduce:_(16473),sortBy:_(351),uniqueId:_(95708),values:_(81229),zipObject:_(65441)}}catch(K){}m||(m=window._),Ie.exports=m},31733:function(Ie,Be,_){var m=_(72361),K=_(53063);Ie.exports={run:H,cleanup:B};function H(U){var Q=K.addDummyNode(U,"root",{},"_root"),V=T(U),j=m.max(m.values(V))-1,Y=2*j+1;U.graph().nestingRoot=Q,m.forEach(U.edges(),function(ue){U.edge(ue).minlen*=Y});var fe=F(U)+1;m.forEach(U.children(),function(ue){L(U,Q,Y,fe,j,V,ue)}),U.graph().nodeRankFactor=Y}function L(U,Q,V,j,Y,fe,ue){var Me=U.children(ue);if(!Me.length){ue!==Q&&U.setEdge(Q,ue,{weight:0,minlen:V});return}var _e=K.addBorderNode(U,"_bt"),Ce=K.addBorderNode(U,"_bb"),Xe=U.node(ue);U.setParent(_e,ue),Xe.borderTop=_e,U.setParent(Ce,ue),Xe.borderBottom=Ce,m.forEach(Me,function(Fe){L(U,Q,V,j,Y,fe,Fe);var ft=U.node(Fe),_t=ft.borderTop?ft.borderTop:Fe,lt=ft.borderBottom?ft.borderBottom:Fe,Vt=ft.borderTop?j:2*j,It=_t!==lt?1:Y-fe[ue]+1;U.setEdge(_e,_t,{weight:Vt,minlen:It,nestingEdge:!0}),U.setEdge(lt,Ce,{weight:Vt,minlen:It,nestingEdge:!0})}),U.parent(ue)||U.setEdge(Q,_e,{weight:0,minlen:Y+fe[ue]})}function T(U){var Q={};function V(j,Y){var fe=U.children(j);fe&&fe.length&&m.forEach(fe,function(ue){V(ue,Y+1)}),Q[j]=Y}return m.forEach(U.children(),function(j){V(j,1)}),Q}function F(U){return m.reduce(U.edges(),function(Q,V){return Q+U.edge(V).weight},0)}function B(U){var Q=U.graph();U.removeNode(Q.nestingRoot),delete Q.nestingRoot,m.forEach(U.edges(),function(V){var j=U.edge(V);j.nestingEdge&&U.removeEdge(V)})}},27163:function(Ie,Be,_){"use strict";var m=_(72361),K=_(53063);Ie.exports={run:H,undo:T};function H(F){F.graph().dummyChains=[],m.forEach(F.edges(),function(B){L(F,B)})}function L(F,B){var U=B.v,Q=F.node(U).rank,V=B.w,j=F.node(V).rank,Y=B.name,fe=F.edge(B),ue=fe.labelRank;if(j!==Q+1){F.removeEdge(B);var Me,_e,Ce;for(Ce=0,++Q;Q0;)ue%2&&(Me+=j[ue+1]),ue=ue-1>>1,j[ue]+=fe.weight;Y+=fe.weight*Me})),Y}},62852:function(Ie,Be,_){"use strict";var m=_(72361),K=_(18043),H=_(45456),L=_(86490),T=_(59105),F=_(52205),B=_(76626).Graph,U=_(53063);Ie.exports=Q;function Q(fe){var ue=U.maxRank(fe),Me=V(fe,m.range(1,ue+1),"inEdges"),_e=V(fe,m.range(ue-1,-1,-1),"outEdges"),Ce=K(fe);Y(fe,Ce);for(var Xe=Number.POSITIVE_INFINITY,Fe,ft=0,_t=0;_t<4;++ft,++_t){j(ft%2?Me:_e,ft%4>=2),Ce=U.buildLayerMatrix(fe);var lt=H(fe,Ce);lt=V.barycenter)&&L(V,j)}}function U(V){return function(j){j.in.push(V),--j.indegree===0&&T.push(j)}}for(;T.length;){var Q=T.pop();F.push(Q),m.forEach(Q.in.reverse(),B(Q)),m.forEach(Q.out,U(Q))}return m.map(m.filter(F,function(V){return!V.merged}),function(V){return m.pick(V,["vs","i","barycenter","weight"])})}function L(T,F){var B=0,U=0;T.weight&&(B+=T.barycenter*T.weight,U+=T.weight),F.weight&&(B+=F.barycenter*F.weight,U+=F.weight),T.vs=F.vs.concat(T.vs),T.barycenter=B/U,T.weight=U,T.i=Math.min(F.i,T.i),F.merged=!0}},86490:function(Ie,Be,_){var m=_(72361),K=_(99506),H=_(45926),L=_(1349);Ie.exports=T;function T(U,Q,V,j){var Y=U.children(Q),fe=U.node(Q),ue=fe?fe.borderLeft:void 0,Me=fe?fe.borderRight:void 0,_e={};ue&&(Y=m.filter(Y,function(lt){return lt!==ue&<!==Me}));var Ce=K(U,Y);m.forEach(Ce,function(lt){if(U.children(lt.v).length){var Vt=T(U,lt.v,V,j);_e[lt.v]=Vt,m.has(Vt,"barycenter")&&B(lt,Vt)}});var Xe=H(Ce,V);F(Xe,_e);var Fe=L(Xe,j);if(ue&&(Fe.vs=m.flatten([ue,Fe.vs,Me],!0),U.predecessors(ue).length)){var ft=U.node(U.predecessors(ue)[0]),_t=U.node(U.predecessors(Me)[0]);m.has(Fe,"barycenter")||(Fe.barycenter=0,Fe.weight=0),Fe.barycenter=(Fe.barycenter*Fe.weight+ft.order+_t.order)/(Fe.weight+2),Fe.weight+=2}return Fe}function F(U,Q){m.forEach(U,function(V){V.vs=m.flatten(V.vs.map(function(j){return Q[j]?Q[j].vs:j}),!0)})}function B(U,Q){m.isUndefined(U.barycenter)?(U.barycenter=Q.barycenter,U.weight=Q.weight):(U.barycenter=(U.barycenter*U.weight+Q.barycenter*Q.weight)/(U.weight+Q.weight),U.weight+=Q.weight)}},1349:function(Ie,Be,_){var m=_(72361),K=_(53063);Ie.exports=H;function H(F,B){var U=K.partition(F,function(_e){return m.has(_e,"barycenter")}),Q=U.lhs,V=m.sortBy(U.rhs,function(_e){return-_e.i}),j=[],Y=0,fe=0,ue=0;Q.sort(T(!!B)),ue=L(j,V,ue),m.forEach(Q,function(_e){ue+=_e.vs.length,j.push(_e.vs),Y+=_e.barycenter*_e.weight,fe+=_e.weight,ue=L(j,V,ue)});var Me={vs:m.flatten(j,!0)};return fe&&(Me.barycenter=Y/fe,Me.weight=fe),Me}function L(F,B,U){for(var Q;B.length&&(Q=m.last(B)).i<=U;)B.pop(),F.push(Q.vs),U++;return U}function T(F){return function(B,U){return B.barycenterU.barycenter?1:F?U.i-B.i:B.i-U.i}}},71970:function(Ie,Be,_){var m=_(72361);Ie.exports=K;function K(T){var F=L(T);m.forEach(T.graph().dummyChains,function(B){for(var U=T.node(B),Q=U.edgeObj,V=H(T,F,Q.v,Q.w),j=V.path,Y=V.lca,fe=0,ue=j[fe],Me=!0;B!==Q.w;){if(U=T.node(B),Me){for(;(ue=j[fe])!==Y&&T.node(ue).maxRankj||Y>F[fe].lim));for(ue=fe,fe=U;(fe=T.parent(fe))!==ue;)V.push(fe);return{path:Q.concat(V.reverse()),lca:ue}}function L(T){var F={},B=0;function U(Q){var V=B;m.forEach(T.children(Q),U),F[Q]={low:V,lim:B++}}return m.forEach(T.children(),U),F}},92080:function(Ie,Be,_){"use strict";var m=_(72361),K=_(76626).Graph,H=_(53063);Ie.exports={positionX:Me,findType1Conflicts:L,findType2Conflicts:T,addConflict:B,hasConflict:U,verticalAlignment:Q,horizontalCompaction:V,alignCoordinates:fe,findSmallestWidthAlignment:Y,balance:ue};function L(Xe,Fe){var ft={};function _t(lt,Vt){var It=0,Fn=0,Ot=lt.length,jn=m.last(Vt);return m.forEach(Vt,function(rr,kn){var Kn=F(Xe,rr),_r=Kn?Xe.node(Kn).order:Ot;(Kn||rr===jn)&&(m.forEach(Vt.slice(Fn,kn+1),function(bn){m.forEach(Xe.predecessors(bn),function(Cr){var Ke=Xe.node(Cr),Rt=Ke.order;(Rtjn)&&B(ft,Kn,rr)})})}function lt(Vt,It){var Fn=-1,Ot,jn=0;return m.forEach(It,function(rr,kn){if(Xe.node(rr).dummy==="border"){var Kn=Xe.predecessors(rr);Kn.length&&(Ot=Xe.node(Kn[0]).order,_t(It,jn,kn,Fn,Ot),jn=kn,Fn=Ot)}_t(It,jn,It.length,Ot,Vt.length)}),It}return m.reduce(Fe,lt),ft}function F(Xe,Fe){if(Xe.node(Fe).dummy)return m.find(Xe.predecessors(Fe),function(ft){return Xe.node(ft).dummy})}function B(Xe,Fe,ft){if(Fe>ft){var _t=Fe;Fe=ft,ft=_t}var lt=Xe[Fe];lt||(Xe[Fe]=lt={}),lt[ft]=!0}function U(Xe,Fe,ft){if(Fe>ft){var _t=Fe;Fe=ft,ft=_t}return m.has(Xe[Fe],ft)}function Q(Xe,Fe,ft,_t){var lt={},Vt={},It={};return m.forEach(Fe,function(Fn){m.forEach(Fn,function(Ot,jn){lt[Ot]=Ot,Vt[Ot]=Ot,It[Ot]=jn})}),m.forEach(Fe,function(Fn){var Ot=-1;m.forEach(Fn,function(jn){var rr=_t(jn);if(rr.length){rr=m.sortBy(rr,function(Cr){return It[Cr]});for(var kn=(rr.length-1)/2,Kn=Math.floor(kn),_r=Math.ceil(kn);Kn<=_r;++Kn){var bn=rr[Kn];Vt[jn]===jn&&OtOt.lim&&(jn=Ot,rr=!0);var kn=m.filter(_t.edges(),function(Kn){return rr===Fe(ft,ft.node(Kn.v),jn)&&rr!==Fe(ft,ft.node(Kn.w),jn)});return m.minBy(kn,function(Kn){return H(_t,Kn)})}function _e(ft,_t,lt,Vt){var It=lt.v,Fn=lt.w;ft.removeEdge(It,Fn),ft.setEdge(Vt.v,Vt.w,{}),Y(ft),Q(ft,_t),Ce(ft,_t)}function Ce(ft,_t){var lt=m.find(ft.nodes(),function(It){return!_t.node(It).parent}),Vt=T(ft,lt);Vt=Vt.slice(1),m.forEach(Vt,function(It){var Fn=ft.node(It).parent,Ot=_t.edge(It,Fn),jn=!1;Ot||(Ot=_t.edge(Fn,It),jn=!0),_t.node(It).rank=_t.node(Fn).rank+(jn?Ot.minlen:-Ot.minlen)})}function Xe(ft,_t,lt){return ft.hasEdge(_t,lt)}function Fe(ft,_t,lt){return lt.low<=_t.lim&&_t.lim<=lt.lim}},2416:function(Ie,Be,_){"use strict";var m=_(72361);Ie.exports={longestPath:K,slack:H};function K(L){var T={};function F(B){var U=L.node(B);if(m.has(T,B))return U.rank;T[B]=!0;var Q=m.min(m.map(L.outEdges(B),function(V){return F(V.w)-L.edge(V).minlen}));return(Q===Number.POSITIVE_INFINITY||Q===void 0||Q===null)&&(Q=0),U.rank=Q}m.forEach(L.sources(),F)}function H(L,T){return L.node(T.w).rank-L.node(T.v).rank-L.edge(T).minlen}},53063:function(Ie,Be,_){"use strict";var m=_(72361),K=_(76626).Graph;Ie.exports={addDummyNode:H,simplify:L,asNonCompoundGraph:T,successorWeights:F,predecessorWeights:B,intersectRect:U,buildLayerMatrix:Q,normalizeRanks:V,removeEmptyRanks:j,addBorderNode:Y,maxRank:fe,partition:ue,time:Me,notime:_e};function H(Ce,Xe,Fe,ft){var _t;do _t=m.uniqueId(ft);while(Ce.hasNode(_t));return Fe.dummy=Xe,Ce.setNode(_t,Fe),_t}function L(Ce){var Xe=new K().setGraph(Ce.graph());return m.forEach(Ce.nodes(),function(Fe){Xe.setNode(Fe,Ce.node(Fe))}),m.forEach(Ce.edges(),function(Fe){var ft=Xe.edge(Fe.v,Fe.w)||{weight:0,minlen:1},_t=Ce.edge(Fe);Xe.setEdge(Fe.v,Fe.w,{weight:ft.weight+_t.weight,minlen:Math.max(ft.minlen,_t.minlen)})}),Xe}function T(Ce){var Xe=new K({multigraph:Ce.isMultigraph()}).setGraph(Ce.graph());return m.forEach(Ce.nodes(),function(Fe){Ce.children(Fe).length||Xe.setNode(Fe,Ce.node(Fe))}),m.forEach(Ce.edges(),function(Fe){Xe.setEdge(Fe,Ce.edge(Fe))}),Xe}function F(Ce){var Xe=m.map(Ce.nodes(),function(Fe){var ft={};return m.forEach(Ce.outEdges(Fe),function(_t){ft[_t.w]=(ft[_t.w]||0)+Ce.edge(_t).weight}),ft});return m.zipObject(Ce.nodes(),Xe)}function B(Ce){var Xe=m.map(Ce.nodes(),function(Fe){var ft={};return m.forEach(Ce.inEdges(Fe),function(_t){ft[_t.v]=(ft[_t.v]||0)+Ce.edge(_t).weight}),ft});return m.zipObject(Ce.nodes(),Xe)}function U(Ce,Xe){var Fe=Ce.x,ft=Ce.y,_t=Xe.x-Fe,lt=Xe.y-ft,Vt=Ce.width/2,It=Ce.height/2;if(!_t&&!lt)throw new Error("Not possible to find intersection inside of the rectangle");var Fn,Ot;return Math.abs(lt)*Vt>Math.abs(_t)*It?(lt<0&&(It=-It),Fn=It*_t/lt,Ot=It):(_t<0&&(Vt=-Vt),Fn=Vt,Ot=Vt*lt/_t),{x:Fe+Fn,y:ft+Ot}}function Q(Ce){var Xe=m.map(m.range(fe(Ce)+1),function(){return[]});return m.forEach(Ce.nodes(),function(Fe){var ft=Ce.node(Fe),_t=ft.rank;m.isUndefined(_t)||(Xe[_t][ft.order]=Fe)}),Xe}function V(Ce){var Xe=m.min(m.map(Ce.nodes(),function(Fe){return Ce.node(Fe).rank}));m.forEach(Ce.nodes(),function(Fe){var ft=Ce.node(Fe);m.has(ft,"rank")&&(ft.rank-=Xe)})}function j(Ce){var Xe=m.min(m.map(Ce.nodes(),function(lt){return Ce.node(lt).rank})),Fe=[];m.forEach(Ce.nodes(),function(lt){var Vt=Ce.node(lt).rank-Xe;Fe[Vt]||(Fe[Vt]=[]),Fe[Vt].push(lt)});var ft=0,_t=Ce.graph().nodeRankFactor;m.forEach(Fe,function(lt,Vt){m.isUndefined(lt)&&Vt%_t!==0?--ft:ft&&m.forEach(lt,function(It){Ce.node(It).rank+=ft})})}function Y(Ce,Xe,Fe,ft){var _t={width:0,height:0};return arguments.length>=4&&(_t.rank=Fe,_t.order=ft),H(Ce,"border",_t,Xe)}function fe(Ce){return m.max(m.map(Ce.nodes(),function(Xe){var Fe=Ce.node(Xe).rank;if(!m.isUndefined(Fe))return Fe}))}function ue(Ce,Xe){var Fe={lhs:[],rhs:[]};return m.forEach(Ce,function(ft){Xe(ft)?Fe.lhs.push(ft):Fe.rhs.push(ft)}),Fe}function Me(Ce,Xe){var Fe=m.now();try{return Xe()}finally{console.log(Ce+" time: "+(m.now()-Fe)+"ms")}}function _e(Ce,Xe){return Xe()}},11897:function(Ie){Ie.exports="0.8.5"},37271:function(Ie){"use strict";var Be=Object.prototype.hasOwnProperty,_="~";function m(){}Object.create&&(m.prototype=Object.create(null),new m().__proto__||(_=!1));function K(F,B,U){this.fn=F,this.context=B,this.once=U||!1}function H(F,B,U,Q,V){if(typeof U!="function")throw new TypeError("The listener must be a function");var j=new K(U,Q||F,V),Y=_?_+B:B;return F._events[Y]?F._events[Y].fn?F._events[Y]=[F._events[Y],j]:F._events[Y].push(j):(F._events[Y]=j,F._eventsCount++),F}function L(F,B){--F._eventsCount===0?F._events=new m:delete F._events[B]}function T(){this._events=new m,this._eventsCount=0}T.prototype.eventNames=function(){var B=[],U,Q;if(this._eventsCount===0)return B;for(Q in U=this._events)Be.call(U,Q)&&B.push(_?Q.slice(1):Q);return Object.getOwnPropertySymbols?B.concat(Object.getOwnPropertySymbols(U)):B},T.prototype.listeners=function(B){var U=_?_+B:B,Q=this._events[U];if(!Q)return[];if(Q.fn)return[Q.fn];for(var V=0,j=Q.length,Y=new Array(j);V=0?Math.round(Y):Y%.5===0?Math.floor(Y):Math.round(Y)}function F(Y){K=Y}var B=Math.PI/180,U=180/Math.PI;function Q(Y){return Y*B}function V(Y){return Y*U}function j(Y,fe){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:m;return Math.abs(Y-fe)<=ue*Math.max(1,Math.abs(Y),Math.abs(fe))}},79111:function(Ie,Be,_){"use strict";_.d(Be,{Ue:function(){return K},al:function(){return F},xO:function(){return H}});var m=_(85551);function K(){var Ke=new m.WT(9);return m.WT!=Float32Array&&(Ke[1]=0,Ke[2]=0,Ke[3]=0,Ke[5]=0,Ke[6]=0,Ke[7]=0),Ke[0]=1,Ke[4]=1,Ke[8]=1,Ke}function H(Ke,Rt){return Ke[0]=Rt[0],Ke[1]=Rt[1],Ke[2]=Rt[2],Ke[3]=Rt[4],Ke[4]=Rt[5],Ke[5]=Rt[6],Ke[6]=Rt[8],Ke[7]=Rt[9],Ke[8]=Rt[10],Ke}function L(Ke){var Rt=new glMatrix.ARRAY_TYPE(9);return Rt[0]=Ke[0],Rt[1]=Ke[1],Rt[2]=Ke[2],Rt[3]=Ke[3],Rt[4]=Ke[4],Rt[5]=Ke[5],Rt[6]=Ke[6],Rt[7]=Ke[7],Rt[8]=Ke[8],Rt}function T(Ke,Rt){return Ke[0]=Rt[0],Ke[1]=Rt[1],Ke[2]=Rt[2],Ke[3]=Rt[3],Ke[4]=Rt[4],Ke[5]=Rt[5],Ke[6]=Rt[6],Ke[7]=Rt[7],Ke[8]=Rt[8],Ke}function F(Ke,Rt,Qn,Yr,rn,An,Ln,Tt,Mt){var ge=new m.WT(9);return ge[0]=Ke,ge[1]=Rt,ge[2]=Qn,ge[3]=Yr,ge[4]=rn,ge[5]=An,ge[6]=Ln,ge[7]=Tt,ge[8]=Mt,ge}function B(Ke,Rt,Qn,Yr,rn,An,Ln,Tt,Mt,ge){return Ke[0]=Rt,Ke[1]=Qn,Ke[2]=Yr,Ke[3]=rn,Ke[4]=An,Ke[5]=Ln,Ke[6]=Tt,Ke[7]=Mt,Ke[8]=ge,Ke}function U(Ke){return Ke[0]=1,Ke[1]=0,Ke[2]=0,Ke[3]=0,Ke[4]=1,Ke[5]=0,Ke[6]=0,Ke[7]=0,Ke[8]=1,Ke}function Q(Ke,Rt){if(Ke===Rt){var Qn=Rt[1],Yr=Rt[2],rn=Rt[5];Ke[1]=Rt[3],Ke[2]=Rt[6],Ke[3]=Qn,Ke[5]=Rt[7],Ke[6]=Yr,Ke[7]=rn}else Ke[0]=Rt[0],Ke[1]=Rt[3],Ke[2]=Rt[6],Ke[3]=Rt[1],Ke[4]=Rt[4],Ke[5]=Rt[7],Ke[6]=Rt[2],Ke[7]=Rt[5],Ke[8]=Rt[8];return Ke}function V(Ke,Rt){var Qn=Rt[0],Yr=Rt[1],rn=Rt[2],An=Rt[3],Ln=Rt[4],Tt=Rt[5],Mt=Rt[6],ge=Rt[7],pe=Rt[8],De=pe*Ln-Tt*ge,Ht=-pe*An+Tt*Mt,Jt=ge*An-Ln*Mt,At=Qn*De+Yr*Ht+rn*Jt;return At?(At=1/At,Ke[0]=De*At,Ke[1]=(-pe*Yr+rn*ge)*At,Ke[2]=(Tt*Yr-rn*Ln)*At,Ke[3]=Ht*At,Ke[4]=(pe*Qn-rn*Mt)*At,Ke[5]=(-Tt*Qn+rn*An)*At,Ke[6]=Jt*At,Ke[7]=(-ge*Qn+Yr*Mt)*At,Ke[8]=(Ln*Qn-Yr*An)*At,Ke):null}function j(Ke,Rt){var Qn=Rt[0],Yr=Rt[1],rn=Rt[2],An=Rt[3],Ln=Rt[4],Tt=Rt[5],Mt=Rt[6],ge=Rt[7],pe=Rt[8];return Ke[0]=Ln*pe-Tt*ge,Ke[1]=rn*ge-Yr*pe,Ke[2]=Yr*Tt-rn*Ln,Ke[3]=Tt*Mt-An*pe,Ke[4]=Qn*pe-rn*Mt,Ke[5]=rn*An-Qn*Tt,Ke[6]=An*ge-Ln*Mt,Ke[7]=Yr*Mt-Qn*ge,Ke[8]=Qn*Ln-Yr*An,Ke}function Y(Ke){var Rt=Ke[0],Qn=Ke[1],Yr=Ke[2],rn=Ke[3],An=Ke[4],Ln=Ke[5],Tt=Ke[6],Mt=Ke[7],ge=Ke[8];return Rt*(ge*An-Ln*Mt)+Qn*(-ge*rn+Ln*Tt)+Yr*(Mt*rn-An*Tt)}function fe(Ke,Rt,Qn){var Yr=Rt[0],rn=Rt[1],An=Rt[2],Ln=Rt[3],Tt=Rt[4],Mt=Rt[5],ge=Rt[6],pe=Rt[7],De=Rt[8],Ht=Qn[0],Jt=Qn[1],At=Qn[2],dn=Qn[3],fn=Qn[4],ut=Qn[5],Bt=Qn[6],un=Qn[7],Z=Qn[8];return Ke[0]=Ht*Yr+Jt*Ln+At*ge,Ke[1]=Ht*rn+Jt*Tt+At*pe,Ke[2]=Ht*An+Jt*Mt+At*De,Ke[3]=dn*Yr+fn*Ln+ut*ge,Ke[4]=dn*rn+fn*Tt+ut*pe,Ke[5]=dn*An+fn*Mt+ut*De,Ke[6]=Bt*Yr+un*Ln+Z*ge,Ke[7]=Bt*rn+un*Tt+Z*pe,Ke[8]=Bt*An+un*Mt+Z*De,Ke}function ue(Ke,Rt,Qn){var Yr=Rt[0],rn=Rt[1],An=Rt[2],Ln=Rt[3],Tt=Rt[4],Mt=Rt[5],ge=Rt[6],pe=Rt[7],De=Rt[8],Ht=Qn[0],Jt=Qn[1];return Ke[0]=Yr,Ke[1]=rn,Ke[2]=An,Ke[3]=Ln,Ke[4]=Tt,Ke[5]=Mt,Ke[6]=Ht*Yr+Jt*Ln+ge,Ke[7]=Ht*rn+Jt*Tt+pe,Ke[8]=Ht*An+Jt*Mt+De,Ke}function Me(Ke,Rt,Qn){var Yr=Rt[0],rn=Rt[1],An=Rt[2],Ln=Rt[3],Tt=Rt[4],Mt=Rt[5],ge=Rt[6],pe=Rt[7],De=Rt[8],Ht=Math.sin(Qn),Jt=Math.cos(Qn);return Ke[0]=Jt*Yr+Ht*Ln,Ke[1]=Jt*rn+Ht*Tt,Ke[2]=Jt*An+Ht*Mt,Ke[3]=Jt*Ln-Ht*Yr,Ke[4]=Jt*Tt-Ht*rn,Ke[5]=Jt*Mt-Ht*An,Ke[6]=ge,Ke[7]=pe,Ke[8]=De,Ke}function _e(Ke,Rt,Qn){var Yr=Qn[0],rn=Qn[1];return Ke[0]=Yr*Rt[0],Ke[1]=Yr*Rt[1],Ke[2]=Yr*Rt[2],Ke[3]=rn*Rt[3],Ke[4]=rn*Rt[4],Ke[5]=rn*Rt[5],Ke[6]=Rt[6],Ke[7]=Rt[7],Ke[8]=Rt[8],Ke}function Ce(Ke,Rt){return Ke[0]=1,Ke[1]=0,Ke[2]=0,Ke[3]=0,Ke[4]=1,Ke[5]=0,Ke[6]=Rt[0],Ke[7]=Rt[1],Ke[8]=1,Ke}function Xe(Ke,Rt){var Qn=Math.sin(Rt),Yr=Math.cos(Rt);return Ke[0]=Yr,Ke[1]=Qn,Ke[2]=0,Ke[3]=-Qn,Ke[4]=Yr,Ke[5]=0,Ke[6]=0,Ke[7]=0,Ke[8]=1,Ke}function Fe(Ke,Rt){return Ke[0]=Rt[0],Ke[1]=0,Ke[2]=0,Ke[3]=0,Ke[4]=Rt[1],Ke[5]=0,Ke[6]=0,Ke[7]=0,Ke[8]=1,Ke}function ft(Ke,Rt){return Ke[0]=Rt[0],Ke[1]=Rt[1],Ke[2]=0,Ke[3]=Rt[2],Ke[4]=Rt[3],Ke[5]=0,Ke[6]=Rt[4],Ke[7]=Rt[5],Ke[8]=1,Ke}function _t(Ke,Rt){var Qn=Rt[0],Yr=Rt[1],rn=Rt[2],An=Rt[3],Ln=Qn+Qn,Tt=Yr+Yr,Mt=rn+rn,ge=Qn*Ln,pe=Yr*Ln,De=Yr*Tt,Ht=rn*Ln,Jt=rn*Tt,At=rn*Mt,dn=An*Ln,fn=An*Tt,ut=An*Mt;return Ke[0]=1-De-At,Ke[3]=pe-ut,Ke[6]=Ht+fn,Ke[1]=pe+ut,Ke[4]=1-ge-At,Ke[7]=Jt-dn,Ke[2]=Ht-fn,Ke[5]=Jt+dn,Ke[8]=1-ge-De,Ke}function lt(Ke,Rt){var Qn=Rt[0],Yr=Rt[1],rn=Rt[2],An=Rt[3],Ln=Rt[4],Tt=Rt[5],Mt=Rt[6],ge=Rt[7],pe=Rt[8],De=Rt[9],Ht=Rt[10],Jt=Rt[11],At=Rt[12],dn=Rt[13],fn=Rt[14],ut=Rt[15],Bt=Qn*Tt-Yr*Ln,un=Qn*Mt-rn*Ln,Z=Qn*ge-An*Ln,Te=Yr*Mt-rn*Tt,Zt=Yr*ge-An*Tt,Gt=rn*ge-An*Mt,On=pe*dn-De*At,In=pe*fn-Ht*At,pr=pe*ut-Jt*At,Je=De*fn-Ht*dn,we=De*ut-Jt*dn,at=Ht*ut-Jt*fn,wt=Bt*at-un*we+Z*Je+Te*pr-Zt*In+Gt*On;return wt?(wt=1/wt,Ke[0]=(Tt*at-Mt*we+ge*Je)*wt,Ke[1]=(Mt*pr-Ln*at-ge*In)*wt,Ke[2]=(Ln*we-Tt*pr+ge*On)*wt,Ke[3]=(rn*we-Yr*at-An*Je)*wt,Ke[4]=(Qn*at-rn*pr+An*In)*wt,Ke[5]=(Yr*pr-Qn*we-An*On)*wt,Ke[6]=(dn*Gt-fn*Zt+ut*Te)*wt,Ke[7]=(fn*Z-At*Gt-ut*un)*wt,Ke[8]=(At*Zt-dn*Z+ut*Bt)*wt,Ke):null}function Vt(Ke,Rt,Qn){return Ke[0]=2/Rt,Ke[1]=0,Ke[2]=0,Ke[3]=0,Ke[4]=-2/Qn,Ke[5]=0,Ke[6]=-1,Ke[7]=1,Ke[8]=1,Ke}function It(Ke){return"mat3("+Ke[0]+", "+Ke[1]+", "+Ke[2]+", "+Ke[3]+", "+Ke[4]+", "+Ke[5]+", "+Ke[6]+", "+Ke[7]+", "+Ke[8]+")"}function Fn(Ke){return Math.sqrt(Ke[0]*Ke[0]+Ke[1]*Ke[1]+Ke[2]*Ke[2]+Ke[3]*Ke[3]+Ke[4]*Ke[4]+Ke[5]*Ke[5]+Ke[6]*Ke[6]+Ke[7]*Ke[7]+Ke[8]*Ke[8])}function Ot(Ke,Rt,Qn){return Ke[0]=Rt[0]+Qn[0],Ke[1]=Rt[1]+Qn[1],Ke[2]=Rt[2]+Qn[2],Ke[3]=Rt[3]+Qn[3],Ke[4]=Rt[4]+Qn[4],Ke[5]=Rt[5]+Qn[5],Ke[6]=Rt[6]+Qn[6],Ke[7]=Rt[7]+Qn[7],Ke[8]=Rt[8]+Qn[8],Ke}function jn(Ke,Rt,Qn){return Ke[0]=Rt[0]-Qn[0],Ke[1]=Rt[1]-Qn[1],Ke[2]=Rt[2]-Qn[2],Ke[3]=Rt[3]-Qn[3],Ke[4]=Rt[4]-Qn[4],Ke[5]=Rt[5]-Qn[5],Ke[6]=Rt[6]-Qn[6],Ke[7]=Rt[7]-Qn[7],Ke[8]=Rt[8]-Qn[8],Ke}function rr(Ke,Rt,Qn){return Ke[0]=Rt[0]*Qn,Ke[1]=Rt[1]*Qn,Ke[2]=Rt[2]*Qn,Ke[3]=Rt[3]*Qn,Ke[4]=Rt[4]*Qn,Ke[5]=Rt[5]*Qn,Ke[6]=Rt[6]*Qn,Ke[7]=Rt[7]*Qn,Ke[8]=Rt[8]*Qn,Ke}function kn(Ke,Rt,Qn,Yr){return Ke[0]=Rt[0]+Qn[0]*Yr,Ke[1]=Rt[1]+Qn[1]*Yr,Ke[2]=Rt[2]+Qn[2]*Yr,Ke[3]=Rt[3]+Qn[3]*Yr,Ke[4]=Rt[4]+Qn[4]*Yr,Ke[5]=Rt[5]+Qn[5]*Yr,Ke[6]=Rt[6]+Qn[6]*Yr,Ke[7]=Rt[7]+Qn[7]*Yr,Ke[8]=Rt[8]+Qn[8]*Yr,Ke}function Kn(Ke,Rt){return Ke[0]===Rt[0]&&Ke[1]===Rt[1]&&Ke[2]===Rt[2]&&Ke[3]===Rt[3]&&Ke[4]===Rt[4]&&Ke[5]===Rt[5]&&Ke[6]===Rt[6]&&Ke[7]===Rt[7]&&Ke[8]===Rt[8]}function _r(Ke,Rt){var Qn=Ke[0],Yr=Ke[1],rn=Ke[2],An=Ke[3],Ln=Ke[4],Tt=Ke[5],Mt=Ke[6],ge=Ke[7],pe=Ke[8],De=Rt[0],Ht=Rt[1],Jt=Rt[2],At=Rt[3],dn=Rt[4],fn=Rt[5],ut=Rt[6],Bt=Rt[7],un=Rt[8];return Math.abs(Qn-De)<=glMatrix.EPSILON*Math.max(1,Math.abs(Qn),Math.abs(De))&&Math.abs(Yr-Ht)<=glMatrix.EPSILON*Math.max(1,Math.abs(Yr),Math.abs(Ht))&&Math.abs(rn-Jt)<=glMatrix.EPSILON*Math.max(1,Math.abs(rn),Math.abs(Jt))&&Math.abs(An-At)<=glMatrix.EPSILON*Math.max(1,Math.abs(An),Math.abs(At))&&Math.abs(Ln-dn)<=glMatrix.EPSILON*Math.max(1,Math.abs(Ln),Math.abs(dn))&&Math.abs(Tt-fn)<=glMatrix.EPSILON*Math.max(1,Math.abs(Tt),Math.abs(fn))&&Math.abs(Mt-ut)<=glMatrix.EPSILON*Math.max(1,Math.abs(Mt),Math.abs(ut))&&Math.abs(ge-Bt)<=glMatrix.EPSILON*Math.max(1,Math.abs(ge),Math.abs(Bt))&&Math.abs(pe-un)<=glMatrix.EPSILON*Math.max(1,Math.abs(pe),Math.abs(un))}var bn=null,Cr=null},60187:function(Ie,Be,_){"use strict";_.r(Be),_.d(Be,{add:function(){return Ht},adjoint:function(){return V},clone:function(){return H},copy:function(){return L},create:function(){return K},decompose:function(){return Kn},determinant:function(){return j},equals:function(){return ut},exactEquals:function(){return fn},frob:function(){return De},fromQuat:function(){return Cr},fromQuat2:function(){return Ot},fromRotation:function(){return _t},fromRotationTranslation:function(){return Fn},fromRotationTranslationScale:function(){return _r},fromRotationTranslationScaleOrigin:function(){return bn},fromScaling:function(){return ft},fromTranslation:function(){return Fe},fromValues:function(){return T},fromXRotation:function(){return lt},fromYRotation:function(){return Vt},fromZRotation:function(){return It},frustum:function(){return Ke},getRotation:function(){return kn},getScaling:function(){return rr},getTranslation:function(){return jn},identity:function(){return B},invert:function(){return Q},lookAt:function(){return Mt},mul:function(){return Bt},multiply:function(){return Y},multiplyScalar:function(){return At},multiplyScalarAndAdd:function(){return dn},ortho:function(){return Ln},orthoNO:function(){return An},orthoZO:function(){return Tt},perspective:function(){return Qn},perspectiveFromFieldOfView:function(){return rn},perspectiveNO:function(){return Rt},perspectiveZO:function(){return Yr},rotate:function(){return Me},rotateX:function(){return _e},rotateY:function(){return Ce},rotateZ:function(){return Xe},scale:function(){return ue},set:function(){return F},str:function(){return pe},sub:function(){return un},subtract:function(){return Jt},targetTo:function(){return ge},translate:function(){return fe},transpose:function(){return U}});var m=_(85551);function K(){var Z=new m.WT(16);return m.WT!=Float32Array&&(Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[6]=0,Z[7]=0,Z[8]=0,Z[9]=0,Z[11]=0,Z[12]=0,Z[13]=0,Z[14]=0),Z[0]=1,Z[5]=1,Z[10]=1,Z[15]=1,Z}function H(Z){var Te=new m.WT(16);return Te[0]=Z[0],Te[1]=Z[1],Te[2]=Z[2],Te[3]=Z[3],Te[4]=Z[4],Te[5]=Z[5],Te[6]=Z[6],Te[7]=Z[7],Te[8]=Z[8],Te[9]=Z[9],Te[10]=Z[10],Te[11]=Z[11],Te[12]=Z[12],Te[13]=Z[13],Te[14]=Z[14],Te[15]=Z[15],Te}function L(Z,Te){return Z[0]=Te[0],Z[1]=Te[1],Z[2]=Te[2],Z[3]=Te[3],Z[4]=Te[4],Z[5]=Te[5],Z[6]=Te[6],Z[7]=Te[7],Z[8]=Te[8],Z[9]=Te[9],Z[10]=Te[10],Z[11]=Te[11],Z[12]=Te[12],Z[13]=Te[13],Z[14]=Te[14],Z[15]=Te[15],Z}function T(Z,Te,Zt,Gt,On,In,pr,Je,we,at,wt,it,ht,St,Yt,$t){var Ft=new m.WT(16);return Ft[0]=Z,Ft[1]=Te,Ft[2]=Zt,Ft[3]=Gt,Ft[4]=On,Ft[5]=In,Ft[6]=pr,Ft[7]=Je,Ft[8]=we,Ft[9]=at,Ft[10]=wt,Ft[11]=it,Ft[12]=ht,Ft[13]=St,Ft[14]=Yt,Ft[15]=$t,Ft}function F(Z,Te,Zt,Gt,On,In,pr,Je,we,at,wt,it,ht,St,Yt,$t,Ft){return Z[0]=Te,Z[1]=Zt,Z[2]=Gt,Z[3]=On,Z[4]=In,Z[5]=pr,Z[6]=Je,Z[7]=we,Z[8]=at,Z[9]=wt,Z[10]=it,Z[11]=ht,Z[12]=St,Z[13]=Yt,Z[14]=$t,Z[15]=Ft,Z}function B(Z){return Z[0]=1,Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[5]=1,Z[6]=0,Z[7]=0,Z[8]=0,Z[9]=0,Z[10]=1,Z[11]=0,Z[12]=0,Z[13]=0,Z[14]=0,Z[15]=1,Z}function U(Z,Te){if(Z===Te){var Zt=Te[1],Gt=Te[2],On=Te[3],In=Te[6],pr=Te[7],Je=Te[11];Z[1]=Te[4],Z[2]=Te[8],Z[3]=Te[12],Z[4]=Zt,Z[6]=Te[9],Z[7]=Te[13],Z[8]=Gt,Z[9]=In,Z[11]=Te[14],Z[12]=On,Z[13]=pr,Z[14]=Je}else Z[0]=Te[0],Z[1]=Te[4],Z[2]=Te[8],Z[3]=Te[12],Z[4]=Te[1],Z[5]=Te[5],Z[6]=Te[9],Z[7]=Te[13],Z[8]=Te[2],Z[9]=Te[6],Z[10]=Te[10],Z[11]=Te[14],Z[12]=Te[3],Z[13]=Te[7],Z[14]=Te[11],Z[15]=Te[15];return Z}function Q(Z,Te){var Zt=Te[0],Gt=Te[1],On=Te[2],In=Te[3],pr=Te[4],Je=Te[5],we=Te[6],at=Te[7],wt=Te[8],it=Te[9],ht=Te[10],St=Te[11],Yt=Te[12],$t=Te[13],Ft=Te[14],xn=Te[15],cr=Zt*Je-Gt*pr,nr=Zt*we-On*pr,Lr=Zt*at-In*pr,si=Gt*we-On*Je,Pr=Gt*at-In*Je,ys=On*at-In*we,Ri=wt*$t-it*Yt,Fi=wt*Ft-ht*Yt,ui=wt*xn-St*Yt,gs=it*Ft-ht*$t,Di=it*xn-St*$t,Nn=ht*xn-St*Ft,cn=cr*Nn-nr*Di+Lr*gs+si*ui-Pr*Fi+ys*Ri;return cn?(cn=1/cn,Z[0]=(Je*Nn-we*Di+at*gs)*cn,Z[1]=(On*Di-Gt*Nn-In*gs)*cn,Z[2]=($t*ys-Ft*Pr+xn*si)*cn,Z[3]=(ht*Pr-it*ys-St*si)*cn,Z[4]=(we*ui-pr*Nn-at*Fi)*cn,Z[5]=(Zt*Nn-On*ui+In*Fi)*cn,Z[6]=(Ft*Lr-Yt*ys-xn*nr)*cn,Z[7]=(wt*ys-ht*Lr+St*nr)*cn,Z[8]=(pr*Di-Je*ui+at*Ri)*cn,Z[9]=(Gt*ui-Zt*Di-In*Ri)*cn,Z[10]=(Yt*Pr-$t*Lr+xn*cr)*cn,Z[11]=(it*Lr-wt*Pr-St*cr)*cn,Z[12]=(Je*Fi-pr*gs-we*Ri)*cn,Z[13]=(Zt*gs-Gt*Fi+On*Ri)*cn,Z[14]=($t*nr-Yt*si-Ft*cr)*cn,Z[15]=(wt*si-it*nr+ht*cr)*cn,Z):null}function V(Z,Te){var Zt=Te[0],Gt=Te[1],On=Te[2],In=Te[3],pr=Te[4],Je=Te[5],we=Te[6],at=Te[7],wt=Te[8],it=Te[9],ht=Te[10],St=Te[11],Yt=Te[12],$t=Te[13],Ft=Te[14],xn=Te[15],cr=Zt*Je-Gt*pr,nr=Zt*we-On*pr,Lr=Zt*at-In*pr,si=Gt*we-On*Je,Pr=Gt*at-In*Je,ys=On*at-In*we,Ri=wt*$t-it*Yt,Fi=wt*Ft-ht*Yt,ui=wt*xn-St*Yt,gs=it*Ft-ht*$t,Di=it*xn-St*$t,Nn=ht*xn-St*Ft;return Z[0]=Je*Nn-we*Di+at*gs,Z[1]=On*Di-Gt*Nn-In*gs,Z[2]=$t*ys-Ft*Pr+xn*si,Z[3]=ht*Pr-it*ys-St*si,Z[4]=we*ui-pr*Nn-at*Fi,Z[5]=Zt*Nn-On*ui+In*Fi,Z[6]=Ft*Lr-Yt*ys-xn*nr,Z[7]=wt*ys-ht*Lr+St*nr,Z[8]=pr*Di-Je*ui+at*Ri,Z[9]=Gt*ui-Zt*Di-In*Ri,Z[10]=Yt*Pr-$t*Lr+xn*cr,Z[11]=it*Lr-wt*Pr-St*cr,Z[12]=Je*Fi-pr*gs-we*Ri,Z[13]=Zt*gs-Gt*Fi+On*Ri,Z[14]=$t*nr-Yt*si-Ft*cr,Z[15]=wt*si-it*nr+ht*cr,Z}function j(Z){var Te=Z[0],Zt=Z[1],Gt=Z[2],On=Z[3],In=Z[4],pr=Z[5],Je=Z[6],we=Z[7],at=Z[8],wt=Z[9],it=Z[10],ht=Z[11],St=Z[12],Yt=Z[13],$t=Z[14],Ft=Z[15],xn=Te*pr-Zt*In,cr=Te*Je-Gt*In,nr=Zt*Je-Gt*pr,Lr=at*Yt-wt*St,si=at*$t-it*St,Pr=wt*$t-it*Yt,ys=Te*Pr-Zt*si+Gt*Lr,Ri=In*Pr-pr*si+Je*Lr,Fi=at*nr-wt*cr+it*xn,ui=St*nr-Yt*cr+$t*xn;return we*ys-On*Ri+Ft*Fi-ht*ui}function Y(Z,Te,Zt){var Gt=Te[0],On=Te[1],In=Te[2],pr=Te[3],Je=Te[4],we=Te[5],at=Te[6],wt=Te[7],it=Te[8],ht=Te[9],St=Te[10],Yt=Te[11],$t=Te[12],Ft=Te[13],xn=Te[14],cr=Te[15],nr=Zt[0],Lr=Zt[1],si=Zt[2],Pr=Zt[3];return Z[0]=nr*Gt+Lr*Je+si*it+Pr*$t,Z[1]=nr*On+Lr*we+si*ht+Pr*Ft,Z[2]=nr*In+Lr*at+si*St+Pr*xn,Z[3]=nr*pr+Lr*wt+si*Yt+Pr*cr,nr=Zt[4],Lr=Zt[5],si=Zt[6],Pr=Zt[7],Z[4]=nr*Gt+Lr*Je+si*it+Pr*$t,Z[5]=nr*On+Lr*we+si*ht+Pr*Ft,Z[6]=nr*In+Lr*at+si*St+Pr*xn,Z[7]=nr*pr+Lr*wt+si*Yt+Pr*cr,nr=Zt[8],Lr=Zt[9],si=Zt[10],Pr=Zt[11],Z[8]=nr*Gt+Lr*Je+si*it+Pr*$t,Z[9]=nr*On+Lr*we+si*ht+Pr*Ft,Z[10]=nr*In+Lr*at+si*St+Pr*xn,Z[11]=nr*pr+Lr*wt+si*Yt+Pr*cr,nr=Zt[12],Lr=Zt[13],si=Zt[14],Pr=Zt[15],Z[12]=nr*Gt+Lr*Je+si*it+Pr*$t,Z[13]=nr*On+Lr*we+si*ht+Pr*Ft,Z[14]=nr*In+Lr*at+si*St+Pr*xn,Z[15]=nr*pr+Lr*wt+si*Yt+Pr*cr,Z}function fe(Z,Te,Zt){var Gt=Zt[0],On=Zt[1],In=Zt[2],pr,Je,we,at,wt,it,ht,St,Yt,$t,Ft,xn;return Te===Z?(Z[12]=Te[0]*Gt+Te[4]*On+Te[8]*In+Te[12],Z[13]=Te[1]*Gt+Te[5]*On+Te[9]*In+Te[13],Z[14]=Te[2]*Gt+Te[6]*On+Te[10]*In+Te[14],Z[15]=Te[3]*Gt+Te[7]*On+Te[11]*In+Te[15]):(pr=Te[0],Je=Te[1],we=Te[2],at=Te[3],wt=Te[4],it=Te[5],ht=Te[6],St=Te[7],Yt=Te[8],$t=Te[9],Ft=Te[10],xn=Te[11],Z[0]=pr,Z[1]=Je,Z[2]=we,Z[3]=at,Z[4]=wt,Z[5]=it,Z[6]=ht,Z[7]=St,Z[8]=Yt,Z[9]=$t,Z[10]=Ft,Z[11]=xn,Z[12]=pr*Gt+wt*On+Yt*In+Te[12],Z[13]=Je*Gt+it*On+$t*In+Te[13],Z[14]=we*Gt+ht*On+Ft*In+Te[14],Z[15]=at*Gt+St*On+xn*In+Te[15]),Z}function ue(Z,Te,Zt){var Gt=Zt[0],On=Zt[1],In=Zt[2];return Z[0]=Te[0]*Gt,Z[1]=Te[1]*Gt,Z[2]=Te[2]*Gt,Z[3]=Te[3]*Gt,Z[4]=Te[4]*On,Z[5]=Te[5]*On,Z[6]=Te[6]*On,Z[7]=Te[7]*On,Z[8]=Te[8]*In,Z[9]=Te[9]*In,Z[10]=Te[10]*In,Z[11]=Te[11]*In,Z[12]=Te[12],Z[13]=Te[13],Z[14]=Te[14],Z[15]=Te[15],Z}function Me(Z,Te,Zt,Gt){var On=Gt[0],In=Gt[1],pr=Gt[2],Je=Math.sqrt(On*On+In*In+pr*pr),we,at,wt,it,ht,St,Yt,$t,Ft,xn,cr,nr,Lr,si,Pr,ys,Ri,Fi,ui,gs,Di,Nn,cn,jt;return Je0?(Zt[0]=(Je*pr+wt*Gt+we*In-at*On)*2/it,Zt[1]=(we*pr+wt*On+at*Gt-Je*In)*2/it,Zt[2]=(at*pr+wt*In+Je*On-we*Gt)*2/it):(Zt[0]=(Je*pr+wt*Gt+we*In-at*On)*2,Zt[1]=(we*pr+wt*On+at*Gt-Je*In)*2,Zt[2]=(at*pr+wt*In+Je*On-we*Gt)*2),Fn(Z,Te,Zt),Z}function jn(Z,Te){return Z[0]=Te[12],Z[1]=Te[13],Z[2]=Te[14],Z}function rr(Z,Te){var Zt=Te[0],Gt=Te[1],On=Te[2],In=Te[4],pr=Te[5],Je=Te[6],we=Te[8],at=Te[9],wt=Te[10];return Z[0]=Math.sqrt(Zt*Zt+Gt*Gt+On*On),Z[1]=Math.sqrt(In*In+pr*pr+Je*Je),Z[2]=Math.sqrt(we*we+at*at+wt*wt),Z}function kn(Z,Te){var Zt=new m.WT(3);rr(Zt,Te);var Gt=1/Zt[0],On=1/Zt[1],In=1/Zt[2],pr=Te[0]*Gt,Je=Te[1]*On,we=Te[2]*In,at=Te[4]*Gt,wt=Te[5]*On,it=Te[6]*In,ht=Te[8]*Gt,St=Te[9]*On,Yt=Te[10]*In,$t=pr+wt+Yt,Ft=0;return $t>0?(Ft=Math.sqrt($t+1)*2,Z[3]=.25*Ft,Z[0]=(it-St)/Ft,Z[1]=(ht-we)/Ft,Z[2]=(Je-at)/Ft):pr>wt&&pr>Yt?(Ft=Math.sqrt(1+pr-wt-Yt)*2,Z[3]=(it-St)/Ft,Z[0]=.25*Ft,Z[1]=(Je+at)/Ft,Z[2]=(ht+we)/Ft):wt>Yt?(Ft=Math.sqrt(1+wt-pr-Yt)*2,Z[3]=(ht-we)/Ft,Z[0]=(Je+at)/Ft,Z[1]=.25*Ft,Z[2]=(it+St)/Ft):(Ft=Math.sqrt(1+Yt-pr-wt)*2,Z[3]=(Je-at)/Ft,Z[0]=(ht+we)/Ft,Z[1]=(it+St)/Ft,Z[2]=.25*Ft),Z}function Kn(Z,Te,Zt,Gt){Te[0]=Gt[12],Te[1]=Gt[13],Te[2]=Gt[14];var On=Gt[0],In=Gt[1],pr=Gt[2],Je=Gt[4],we=Gt[5],at=Gt[6],wt=Gt[8],it=Gt[9],ht=Gt[10];Zt[0]=Math.sqrt(On*On+In*In+pr*pr),Zt[1]=Math.sqrt(Je*Je+we*we+at*at),Zt[2]=Math.sqrt(wt*wt+it*it+ht*ht);var St=1/Zt[0],Yt=1/Zt[1],$t=1/Zt[2],Ft=On*St,xn=In*Yt,cr=pr*$t,nr=Je*St,Lr=we*Yt,si=at*$t,Pr=wt*St,ys=it*Yt,Ri=ht*$t,Fi=Ft+Lr+Ri,ui=0;return Fi>0?(ui=Math.sqrt(Fi+1)*2,Z[3]=.25*ui,Z[0]=(si-ys)/ui,Z[1]=(Pr-cr)/ui,Z[2]=(xn-nr)/ui):Ft>Lr&&Ft>Ri?(ui=Math.sqrt(1+Ft-Lr-Ri)*2,Z[3]=(si-ys)/ui,Z[0]=.25*ui,Z[1]=(xn+nr)/ui,Z[2]=(Pr+cr)/ui):Lr>Ri?(ui=Math.sqrt(1+Lr-Ft-Ri)*2,Z[3]=(Pr-cr)/ui,Z[0]=(xn+nr)/ui,Z[1]=.25*ui,Z[2]=(si+ys)/ui):(ui=Math.sqrt(1+Ri-Ft-Lr)*2,Z[3]=(xn-nr)/ui,Z[0]=(Pr+cr)/ui,Z[1]=(si+ys)/ui,Z[2]=.25*ui),Z}function _r(Z,Te,Zt,Gt){var On=Te[0],In=Te[1],pr=Te[2],Je=Te[3],we=On+On,at=In+In,wt=pr+pr,it=On*we,ht=On*at,St=On*wt,Yt=In*at,$t=In*wt,Ft=pr*wt,xn=Je*we,cr=Je*at,nr=Je*wt,Lr=Gt[0],si=Gt[1],Pr=Gt[2];return Z[0]=(1-(Yt+Ft))*Lr,Z[1]=(ht+nr)*Lr,Z[2]=(St-cr)*Lr,Z[3]=0,Z[4]=(ht-nr)*si,Z[5]=(1-(it+Ft))*si,Z[6]=($t+xn)*si,Z[7]=0,Z[8]=(St+cr)*Pr,Z[9]=($t-xn)*Pr,Z[10]=(1-(it+Yt))*Pr,Z[11]=0,Z[12]=Zt[0],Z[13]=Zt[1],Z[14]=Zt[2],Z[15]=1,Z}function bn(Z,Te,Zt,Gt,On){var In=Te[0],pr=Te[1],Je=Te[2],we=Te[3],at=In+In,wt=pr+pr,it=Je+Je,ht=In*at,St=In*wt,Yt=In*it,$t=pr*wt,Ft=pr*it,xn=Je*it,cr=we*at,nr=we*wt,Lr=we*it,si=Gt[0],Pr=Gt[1],ys=Gt[2],Ri=On[0],Fi=On[1],ui=On[2],gs=(1-($t+xn))*si,Di=(St+Lr)*si,Nn=(Yt-nr)*si,cn=(St-Lr)*Pr,jt=(1-(ht+xn))*Pr,ct=(Ft+cr)*Pr,pt=(Yt+nr)*ys,zt=(Ft-cr)*ys,Mn=(1-(ht+$t))*ys;return Z[0]=gs,Z[1]=Di,Z[2]=Nn,Z[3]=0,Z[4]=cn,Z[5]=jt,Z[6]=ct,Z[7]=0,Z[8]=pt,Z[9]=zt,Z[10]=Mn,Z[11]=0,Z[12]=Zt[0]+Ri-(gs*Ri+cn*Fi+pt*ui),Z[13]=Zt[1]+Fi-(Di*Ri+jt*Fi+zt*ui),Z[14]=Zt[2]+ui-(Nn*Ri+ct*Fi+Mn*ui),Z[15]=1,Z}function Cr(Z,Te){var Zt=Te[0],Gt=Te[1],On=Te[2],In=Te[3],pr=Zt+Zt,Je=Gt+Gt,we=On+On,at=Zt*pr,wt=Gt*pr,it=Gt*Je,ht=On*pr,St=On*Je,Yt=On*we,$t=In*pr,Ft=In*Je,xn=In*we;return Z[0]=1-it-Yt,Z[1]=wt+xn,Z[2]=ht-Ft,Z[3]=0,Z[4]=wt-xn,Z[5]=1-at-Yt,Z[6]=St+$t,Z[7]=0,Z[8]=ht+Ft,Z[9]=St-$t,Z[10]=1-at-it,Z[11]=0,Z[12]=0,Z[13]=0,Z[14]=0,Z[15]=1,Z}function Ke(Z,Te,Zt,Gt,On,In,pr){var Je=1/(Zt-Te),we=1/(On-Gt),at=1/(In-pr);return Z[0]=In*2*Je,Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[5]=In*2*we,Z[6]=0,Z[7]=0,Z[8]=(Zt+Te)*Je,Z[9]=(On+Gt)*we,Z[10]=(pr+In)*at,Z[11]=-1,Z[12]=0,Z[13]=0,Z[14]=pr*In*2*at,Z[15]=0,Z}function Rt(Z,Te,Zt,Gt,On){var In=1/Math.tan(Te/2);if(Z[0]=In/Zt,Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[5]=In,Z[6]=0,Z[7]=0,Z[8]=0,Z[9]=0,Z[11]=-1,Z[12]=0,Z[13]=0,Z[15]=0,On!=null&&On!==1/0){var pr=1/(Gt-On);Z[10]=(On+Gt)*pr,Z[14]=2*On*Gt*pr}else Z[10]=-1,Z[14]=-2*Gt;return Z}var Qn=Rt;function Yr(Z,Te,Zt,Gt,On){var In=1/Math.tan(Te/2);if(Z[0]=In/Zt,Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[5]=In,Z[6]=0,Z[7]=0,Z[8]=0,Z[9]=0,Z[11]=-1,Z[12]=0,Z[13]=0,Z[15]=0,On!=null&&On!==1/0){var pr=1/(Gt-On);Z[10]=On*pr,Z[14]=On*Gt*pr}else Z[10]=-1,Z[14]=-Gt;return Z}function rn(Z,Te,Zt,Gt){var On=Math.tan(Te.upDegrees*Math.PI/180),In=Math.tan(Te.downDegrees*Math.PI/180),pr=Math.tan(Te.leftDegrees*Math.PI/180),Je=Math.tan(Te.rightDegrees*Math.PI/180),we=2/(pr+Je),at=2/(On+In);return Z[0]=we,Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[5]=at,Z[6]=0,Z[7]=0,Z[8]=-((pr-Je)*we*.5),Z[9]=(On-In)*at*.5,Z[10]=Gt/(Zt-Gt),Z[11]=-1,Z[12]=0,Z[13]=0,Z[14]=Gt*Zt/(Zt-Gt),Z[15]=0,Z}function An(Z,Te,Zt,Gt,On,In,pr){var Je=1/(Te-Zt),we=1/(Gt-On),at=1/(In-pr);return Z[0]=-2*Je,Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[5]=-2*we,Z[6]=0,Z[7]=0,Z[8]=0,Z[9]=0,Z[10]=2*at,Z[11]=0,Z[12]=(Te+Zt)*Je,Z[13]=(On+Gt)*we,Z[14]=(pr+In)*at,Z[15]=1,Z}var Ln=An;function Tt(Z,Te,Zt,Gt,On,In,pr){var Je=1/(Te-Zt),we=1/(Gt-On),at=1/(In-pr);return Z[0]=-2*Je,Z[1]=0,Z[2]=0,Z[3]=0,Z[4]=0,Z[5]=-2*we,Z[6]=0,Z[7]=0,Z[8]=0,Z[9]=0,Z[10]=at,Z[11]=0,Z[12]=(Te+Zt)*Je,Z[13]=(On+Gt)*we,Z[14]=In*at,Z[15]=1,Z}function Mt(Z,Te,Zt,Gt){var On,In,pr,Je,we,at,wt,it,ht,St,Yt=Te[0],$t=Te[1],Ft=Te[2],xn=Gt[0],cr=Gt[1],nr=Gt[2],Lr=Zt[0],si=Zt[1],Pr=Zt[2];return Math.abs(Yt-Lr)0&&(St=1/Math.sqrt(St),wt*=St,it*=St,ht*=St);var Yt=we*ht-at*it,$t=at*wt-Je*ht,Ft=Je*it-we*wt;return St=Yt*Yt+$t*$t+Ft*Ft,St>0&&(St=1/Math.sqrt(St),Yt*=St,$t*=St,Ft*=St),Z[0]=Yt,Z[1]=$t,Z[2]=Ft,Z[3]=0,Z[4]=it*Ft-ht*$t,Z[5]=ht*Yt-wt*Ft,Z[6]=wt*$t-it*Yt,Z[7]=0,Z[8]=wt,Z[9]=it,Z[10]=ht,Z[11]=0,Z[12]=On,Z[13]=In,Z[14]=pr,Z[15]=1,Z}function pe(Z){return"mat4("+Z[0]+", "+Z[1]+", "+Z[2]+", "+Z[3]+", "+Z[4]+", "+Z[5]+", "+Z[6]+", "+Z[7]+", "+Z[8]+", "+Z[9]+", "+Z[10]+", "+Z[11]+", "+Z[12]+", "+Z[13]+", "+Z[14]+", "+Z[15]+")"}function De(Z){return Math.sqrt(Z[0]*Z[0]+Z[1]*Z[1]+Z[2]*Z[2]+Z[3]*Z[3]+Z[4]*Z[4]+Z[5]*Z[5]+Z[6]*Z[6]+Z[7]*Z[7]+Z[8]*Z[8]+Z[9]*Z[9]+Z[10]*Z[10]+Z[11]*Z[11]+Z[12]*Z[12]+Z[13]*Z[13]+Z[14]*Z[14]+Z[15]*Z[15])}function Ht(Z,Te,Zt){return Z[0]=Te[0]+Zt[0],Z[1]=Te[1]+Zt[1],Z[2]=Te[2]+Zt[2],Z[3]=Te[3]+Zt[3],Z[4]=Te[4]+Zt[4],Z[5]=Te[5]+Zt[5],Z[6]=Te[6]+Zt[6],Z[7]=Te[7]+Zt[7],Z[8]=Te[8]+Zt[8],Z[9]=Te[9]+Zt[9],Z[10]=Te[10]+Zt[10],Z[11]=Te[11]+Zt[11],Z[12]=Te[12]+Zt[12],Z[13]=Te[13]+Zt[13],Z[14]=Te[14]+Zt[14],Z[15]=Te[15]+Zt[15],Z}function Jt(Z,Te,Zt){return Z[0]=Te[0]-Zt[0],Z[1]=Te[1]-Zt[1],Z[2]=Te[2]-Zt[2],Z[3]=Te[3]-Zt[3],Z[4]=Te[4]-Zt[4],Z[5]=Te[5]-Zt[5],Z[6]=Te[6]-Zt[6],Z[7]=Te[7]-Zt[7],Z[8]=Te[8]-Zt[8],Z[9]=Te[9]-Zt[9],Z[10]=Te[10]-Zt[10],Z[11]=Te[11]-Zt[11],Z[12]=Te[12]-Zt[12],Z[13]=Te[13]-Zt[13],Z[14]=Te[14]-Zt[14],Z[15]=Te[15]-Zt[15],Z}function At(Z,Te,Zt){return Z[0]=Te[0]*Zt,Z[1]=Te[1]*Zt,Z[2]=Te[2]*Zt,Z[3]=Te[3]*Zt,Z[4]=Te[4]*Zt,Z[5]=Te[5]*Zt,Z[6]=Te[6]*Zt,Z[7]=Te[7]*Zt,Z[8]=Te[8]*Zt,Z[9]=Te[9]*Zt,Z[10]=Te[10]*Zt,Z[11]=Te[11]*Zt,Z[12]=Te[12]*Zt,Z[13]=Te[13]*Zt,Z[14]=Te[14]*Zt,Z[15]=Te[15]*Zt,Z}function dn(Z,Te,Zt,Gt){return Z[0]=Te[0]+Zt[0]*Gt,Z[1]=Te[1]+Zt[1]*Gt,Z[2]=Te[2]+Zt[2]*Gt,Z[3]=Te[3]+Zt[3]*Gt,Z[4]=Te[4]+Zt[4]*Gt,Z[5]=Te[5]+Zt[5]*Gt,Z[6]=Te[6]+Zt[6]*Gt,Z[7]=Te[7]+Zt[7]*Gt,Z[8]=Te[8]+Zt[8]*Gt,Z[9]=Te[9]+Zt[9]*Gt,Z[10]=Te[10]+Zt[10]*Gt,Z[11]=Te[11]+Zt[11]*Gt,Z[12]=Te[12]+Zt[12]*Gt,Z[13]=Te[13]+Zt[13]*Gt,Z[14]=Te[14]+Zt[14]*Gt,Z[15]=Te[15]+Zt[15]*Gt,Z}function fn(Z,Te){return Z[0]===Te[0]&&Z[1]===Te[1]&&Z[2]===Te[2]&&Z[3]===Te[3]&&Z[4]===Te[4]&&Z[5]===Te[5]&&Z[6]===Te[6]&&Z[7]===Te[7]&&Z[8]===Te[8]&&Z[9]===Te[9]&&Z[10]===Te[10]&&Z[11]===Te[11]&&Z[12]===Te[12]&&Z[13]===Te[13]&&Z[14]===Te[14]&&Z[15]===Te[15]}function ut(Z,Te){var Zt=Z[0],Gt=Z[1],On=Z[2],In=Z[3],pr=Z[4],Je=Z[5],we=Z[6],at=Z[7],wt=Z[8],it=Z[9],ht=Z[10],St=Z[11],Yt=Z[12],$t=Z[13],Ft=Z[14],xn=Z[15],cr=Te[0],nr=Te[1],Lr=Te[2],si=Te[3],Pr=Te[4],ys=Te[5],Ri=Te[6],Fi=Te[7],ui=Te[8],gs=Te[9],Di=Te[10],Nn=Te[11],cn=Te[12],jt=Te[13],ct=Te[14],pt=Te[15];return Math.abs(Zt-cr)<=m.Ib*Math.max(1,Math.abs(Zt),Math.abs(cr))&&Math.abs(Gt-nr)<=m.Ib*Math.max(1,Math.abs(Gt),Math.abs(nr))&&Math.abs(On-Lr)<=m.Ib*Math.max(1,Math.abs(On),Math.abs(Lr))&&Math.abs(In-si)<=m.Ib*Math.max(1,Math.abs(In),Math.abs(si))&&Math.abs(pr-Pr)<=m.Ib*Math.max(1,Math.abs(pr),Math.abs(Pr))&&Math.abs(Je-ys)<=m.Ib*Math.max(1,Math.abs(Je),Math.abs(ys))&&Math.abs(we-Ri)<=m.Ib*Math.max(1,Math.abs(we),Math.abs(Ri))&&Math.abs(at-Fi)<=m.Ib*Math.max(1,Math.abs(at),Math.abs(Fi))&&Math.abs(wt-ui)<=m.Ib*Math.max(1,Math.abs(wt),Math.abs(ui))&&Math.abs(it-gs)<=m.Ib*Math.max(1,Math.abs(it),Math.abs(gs))&&Math.abs(ht-Di)<=m.Ib*Math.max(1,Math.abs(ht),Math.abs(Di))&&Math.abs(St-Nn)<=m.Ib*Math.max(1,Math.abs(St),Math.abs(Nn))&&Math.abs(Yt-cn)<=m.Ib*Math.max(1,Math.abs(Yt),Math.abs(cn))&&Math.abs($t-jt)<=m.Ib*Math.max(1,Math.abs($t),Math.abs(jt))&&Math.abs(Ft-ct)<=m.Ib*Math.max(1,Math.abs(Ft),Math.abs(ct))&&Math.abs(xn-pt)<=m.Ib*Math.max(1,Math.abs(xn),Math.abs(pt))}var Bt=Y,un=Jt},94569:function(Ie,Be,_){"use strict";_.d(Be,{Fv:function(){return rn},JG:function(){return jn},Jp:function(){return V},Su:function(){return Vt},U_:function(){return ft},Ue:function(){return T},al:function(){return Ot},dC:function(){return Kn},t8:function(){return rr},yY:function(){return B}});var m=_(85551),K=_(79111),H=_(92421),L=_(97082);function T(){var pe=new m.WT(4);return m.WT!=Float32Array&&(pe[0]=0,pe[1]=0,pe[2]=0),pe[3]=1,pe}function F(pe){return pe[0]=0,pe[1]=0,pe[2]=0,pe[3]=1,pe}function B(pe,De,Ht){Ht=Ht*.5;var Jt=Math.sin(Ht);return pe[0]=Jt*De[0],pe[1]=Jt*De[1],pe[2]=Jt*De[2],pe[3]=Math.cos(Ht),pe}function U(pe,De){var Ht=Math.acos(De[3])*2,Jt=Math.sin(Ht/2);return Jt>glMatrix.EPSILON?(pe[0]=De[0]/Jt,pe[1]=De[1]/Jt,pe[2]=De[2]/Jt):(pe[0]=1,pe[1]=0,pe[2]=0),Ht}function Q(pe,De){var Ht=bn(pe,De);return Math.acos(2*Ht*Ht-1)}function V(pe,De,Ht){var Jt=De[0],At=De[1],dn=De[2],fn=De[3],ut=Ht[0],Bt=Ht[1],un=Ht[2],Z=Ht[3];return pe[0]=Jt*Z+fn*ut+At*un-dn*Bt,pe[1]=At*Z+fn*Bt+dn*ut-Jt*un,pe[2]=dn*Z+fn*un+Jt*Bt-At*ut,pe[3]=fn*Z-Jt*ut-At*Bt-dn*un,pe}function j(pe,De,Ht){Ht*=.5;var Jt=De[0],At=De[1],dn=De[2],fn=De[3],ut=Math.sin(Ht),Bt=Math.cos(Ht);return pe[0]=Jt*Bt+fn*ut,pe[1]=At*Bt+dn*ut,pe[2]=dn*Bt-At*ut,pe[3]=fn*Bt-Jt*ut,pe}function Y(pe,De,Ht){Ht*=.5;var Jt=De[0],At=De[1],dn=De[2],fn=De[3],ut=Math.sin(Ht),Bt=Math.cos(Ht);return pe[0]=Jt*Bt-dn*ut,pe[1]=At*Bt+fn*ut,pe[2]=dn*Bt+Jt*ut,pe[3]=fn*Bt-At*ut,pe}function fe(pe,De,Ht){Ht*=.5;var Jt=De[0],At=De[1],dn=De[2],fn=De[3],ut=Math.sin(Ht),Bt=Math.cos(Ht);return pe[0]=Jt*Bt+At*ut,pe[1]=At*Bt-Jt*ut,pe[2]=dn*Bt+fn*ut,pe[3]=fn*Bt-dn*ut,pe}function ue(pe,De){var Ht=De[0],Jt=De[1],At=De[2];return pe[0]=Ht,pe[1]=Jt,pe[2]=At,pe[3]=Math.sqrt(Math.abs(1-Ht*Ht-Jt*Jt-At*At)),pe}function Me(pe,De){var Ht=De[0],Jt=De[1],At=De[2],dn=De[3],fn=Math.sqrt(Ht*Ht+Jt*Jt+At*At),ut=Math.exp(dn),Bt=fn>0?ut*Math.sin(fn)/fn:0;return pe[0]=Ht*Bt,pe[1]=Jt*Bt,pe[2]=At*Bt,pe[3]=ut*Math.cos(fn),pe}function _e(pe,De){var Ht=De[0],Jt=De[1],At=De[2],dn=De[3],fn=Math.sqrt(Ht*Ht+Jt*Jt+At*At),ut=fn>0?Math.atan2(fn,dn)/fn:0;return pe[0]=Ht*ut,pe[1]=Jt*ut,pe[2]=At*ut,pe[3]=.5*Math.log(Ht*Ht+Jt*Jt+At*At+dn*dn),pe}function Ce(pe,De,Ht){return _e(pe,De),_r(pe,pe,Ht),Me(pe,pe),pe}function Xe(pe,De,Ht,Jt){var At=De[0],dn=De[1],fn=De[2],ut=De[3],Bt=Ht[0],un=Ht[1],Z=Ht[2],Te=Ht[3],Zt,Gt,On,In,pr;return Gt=At*Bt+dn*un+fn*Z+ut*Te,Gt<0&&(Gt=-Gt,Bt=-Bt,un=-un,Z=-Z,Te=-Te),1-Gt>m.Ib?(Zt=Math.acos(Gt),On=Math.sin(Zt),In=Math.sin((1-Jt)*Zt)/On,pr=Math.sin(Jt*Zt)/On):(In=1-Jt,pr=Jt),pe[0]=In*At+pr*Bt,pe[1]=In*dn+pr*un,pe[2]=In*fn+pr*Z,pe[3]=In*ut+pr*Te,pe}function Fe(pe){var De=glMatrix.RANDOM(),Ht=glMatrix.RANDOM(),Jt=glMatrix.RANDOM(),At=Math.sqrt(1-De),dn=Math.sqrt(De);return pe[0]=At*Math.sin(2*Math.PI*Ht),pe[1]=At*Math.cos(2*Math.PI*Ht),pe[2]=dn*Math.sin(2*Math.PI*Jt),pe[3]=dn*Math.cos(2*Math.PI*Jt),pe}function ft(pe,De){var Ht=De[0],Jt=De[1],At=De[2],dn=De[3],fn=Ht*Ht+Jt*Jt+At*At+dn*dn,ut=fn?1/fn:0;return pe[0]=-Ht*ut,pe[1]=-Jt*ut,pe[2]=-At*ut,pe[3]=dn*ut,pe}function _t(pe,De){return pe[0]=-De[0],pe[1]=-De[1],pe[2]=-De[2],pe[3]=De[3],pe}function lt(pe,De){var Ht=De[0]+De[4]+De[8],Jt;if(Ht>0)Jt=Math.sqrt(Ht+1),pe[3]=.5*Jt,Jt=.5/Jt,pe[0]=(De[5]-De[7])*Jt,pe[1]=(De[6]-De[2])*Jt,pe[2]=(De[1]-De[3])*Jt;else{var At=0;De[4]>De[0]&&(At=1),De[8]>De[At*3+At]&&(At=2);var dn=(At+1)%3,fn=(At+2)%3;Jt=Math.sqrt(De[At*3+At]-De[dn*3+dn]-De[fn*3+fn]+1),pe[At]=.5*Jt,Jt=.5/Jt,pe[3]=(De[dn*3+fn]-De[fn*3+dn])*Jt,pe[dn]=(De[dn*3+At]+De[At*3+dn])*Jt,pe[fn]=(De[fn*3+At]+De[At*3+fn])*Jt}return pe}function Vt(pe,De,Ht,Jt){var At=arguments.length>4&&arguments[4]!==void 0?arguments[4]:m.yy,dn=Math.PI/360;De*=dn,Jt*=dn,Ht*=dn;var fn=Math.sin(De),ut=Math.cos(De),Bt=Math.sin(Ht),un=Math.cos(Ht),Z=Math.sin(Jt),Te=Math.cos(Jt);switch(At){case"xyz":pe[0]=fn*un*Te+ut*Bt*Z,pe[1]=ut*Bt*Te-fn*un*Z,pe[2]=ut*un*Z+fn*Bt*Te,pe[3]=ut*un*Te-fn*Bt*Z;break;case"xzy":pe[0]=fn*un*Te-ut*Bt*Z,pe[1]=ut*Bt*Te-fn*un*Z,pe[2]=ut*un*Z+fn*Bt*Te,pe[3]=ut*un*Te+fn*Bt*Z;break;case"yxz":pe[0]=fn*un*Te+ut*Bt*Z,pe[1]=ut*Bt*Te-fn*un*Z,pe[2]=ut*un*Z-fn*Bt*Te,pe[3]=ut*un*Te+fn*Bt*Z;break;case"yzx":pe[0]=fn*un*Te+ut*Bt*Z,pe[1]=ut*Bt*Te+fn*un*Z,pe[2]=ut*un*Z-fn*Bt*Te,pe[3]=ut*un*Te-fn*Bt*Z;break;case"zxy":pe[0]=fn*un*Te-ut*Bt*Z,pe[1]=ut*Bt*Te+fn*un*Z,pe[2]=ut*un*Z+fn*Bt*Te,pe[3]=ut*un*Te-fn*Bt*Z;break;case"zyx":pe[0]=fn*un*Te-ut*Bt*Z,pe[1]=ut*Bt*Te+fn*un*Z,pe[2]=ut*un*Z-fn*Bt*Te,pe[3]=ut*un*Te+fn*Bt*Z;break;default:throw new Error("Unknown angle order "+At)}return pe}function It(pe){return"quat("+pe[0]+", "+pe[1]+", "+pe[2]+", "+pe[3]+")"}var Fn=L.d9,Ot=L.al,jn=L.JG,rr=L.t8,kn=L.IH,Kn=V,_r=L.bA,bn=L.AK,Cr=L.t7,Ke=L.kE,Rt=null,Qn=L.we,Yr=null,rn=L.Fv,An=L.I6;function Ln(pe,De){return Math.abs(vec4.dot(pe,De))>=1-glMatrix.EPSILON}var Tt=function(){var pe=H.Ue(),De=H.al(1,0,0),Ht=H.al(0,1,0);return function(Jt,At,dn){var fn=H.AK(At,dn);return fn<-.999999?(H.kC(pe,De,At),H.Zh(pe)<1e-6&&H.kC(pe,Ht,At),H.Fv(pe,pe),B(Jt,pe,Math.PI),Jt):fn>.999999?(Jt[0]=0,Jt[1]=0,Jt[2]=0,Jt[3]=1,Jt):(H.kC(pe,At,dn),Jt[0]=pe[0],Jt[1]=pe[1],Jt[2]=pe[2],Jt[3]=1+fn,rn(Jt,Jt))}}(),Mt=function(){var pe=T(),De=T();return function(Ht,Jt,At,dn,fn,ut){return Xe(pe,Jt,fn,ut),Xe(De,At,dn,ut),Xe(Ht,pe,De,2*ut*(1-ut)),Ht}}(),ge=function(){var pe=K.Ue();return function(De,Ht,Jt,At){return pe[0]=Jt[0],pe[3]=Jt[1],pe[6]=Jt[2],pe[1]=At[0],pe[4]=At[1],pe[7]=At[2],pe[2]=-Ht[0],pe[5]=-Ht[1],pe[8]=-Ht[2],rn(De,lt(De,pe))}}()},45545:function(Ie,Be,_){"use strict";_.d(Be,{AK:function(){return Fn},Fv:function(){return It},I6:function(){return rn},JG:function(){return T},Ue:function(){return K},t8:function(){return F}});var m=_(85551);function K(){var At=new m.WT(2);return m.WT!=Float32Array&&(At[0]=0,At[1]=0),At}function H(At){var dn=new glMatrix.ARRAY_TYPE(2);return dn[0]=At[0],dn[1]=At[1],dn}function L(At,dn){var fn=new glMatrix.ARRAY_TYPE(2);return fn[0]=At,fn[1]=dn,fn}function T(At,dn){return At[0]=dn[0],At[1]=dn[1],At}function F(At,dn,fn){return At[0]=dn,At[1]=fn,At}function B(At,dn,fn){return At[0]=dn[0]+fn[0],At[1]=dn[1]+fn[1],At}function U(At,dn,fn){return At[0]=dn[0]-fn[0],At[1]=dn[1]-fn[1],At}function Q(At,dn,fn){return At[0]=dn[0]*fn[0],At[1]=dn[1]*fn[1],At}function V(At,dn,fn){return At[0]=dn[0]/fn[0],At[1]=dn[1]/fn[1],At}function j(At,dn){return At[0]=Math.ceil(dn[0]),At[1]=Math.ceil(dn[1]),At}function Y(At,dn){return At[0]=Math.floor(dn[0]),At[1]=Math.floor(dn[1]),At}function fe(At,dn,fn){return At[0]=Math.min(dn[0],fn[0]),At[1]=Math.min(dn[1],fn[1]),At}function ue(At,dn,fn){return At[0]=Math.max(dn[0],fn[0]),At[1]=Math.max(dn[1],fn[1]),At}function Me(At,dn){return At[0]=glMatrix.round(dn[0]),At[1]=glMatrix.round(dn[1]),At}function _e(At,dn,fn){return At[0]=dn[0]*fn,At[1]=dn[1]*fn,At}function Ce(At,dn,fn,ut){return At[0]=dn[0]+fn[0]*ut,At[1]=dn[1]+fn[1]*ut,At}function Xe(At,dn){var fn=dn[0]-At[0],ut=dn[1]-At[1];return Math.sqrt(fn*fn+ut*ut)}function Fe(At,dn){var fn=dn[0]-At[0],ut=dn[1]-At[1];return fn*fn+ut*ut}function ft(At){var dn=At[0],fn=At[1];return Math.sqrt(dn*dn+fn*fn)}function _t(At){var dn=At[0],fn=At[1];return dn*dn+fn*fn}function lt(At,dn){return At[0]=-dn[0],At[1]=-dn[1],At}function Vt(At,dn){return At[0]=1/dn[0],At[1]=1/dn[1],At}function It(At,dn){var fn=dn[0],ut=dn[1],Bt=fn*fn+ut*ut;return Bt>0&&(Bt=1/Math.sqrt(Bt)),At[0]=dn[0]*Bt,At[1]=dn[1]*Bt,At}function Fn(At,dn){return At[0]*dn[0]+At[1]*dn[1]}function Ot(At,dn,fn){var ut=dn[0]*fn[1]-dn[1]*fn[0];return At[0]=At[1]=0,At[2]=ut,At}function jn(At,dn,fn,ut){var Bt=dn[0],un=dn[1];return At[0]=Bt+ut*(fn[0]-Bt),At[1]=un+ut*(fn[1]-un),At}function rr(At,dn){dn=dn===void 0?1:dn;var fn=glMatrix.RANDOM()*2*Math.PI;return At[0]=Math.cos(fn)*dn,At[1]=Math.sin(fn)*dn,At}function kn(At,dn,fn){var ut=dn[0],Bt=dn[1];return At[0]=fn[0]*ut+fn[2]*Bt,At[1]=fn[1]*ut+fn[3]*Bt,At}function Kn(At,dn,fn){var ut=dn[0],Bt=dn[1];return At[0]=fn[0]*ut+fn[2]*Bt+fn[4],At[1]=fn[1]*ut+fn[3]*Bt+fn[5],At}function _r(At,dn,fn){var ut=dn[0],Bt=dn[1];return At[0]=fn[0]*ut+fn[3]*Bt+fn[6],At[1]=fn[1]*ut+fn[4]*Bt+fn[7],At}function bn(At,dn,fn){var ut=dn[0],Bt=dn[1];return At[0]=fn[0]*ut+fn[4]*Bt+fn[12],At[1]=fn[1]*ut+fn[5]*Bt+fn[13],At}function Cr(At,dn,fn,ut){var Bt=dn[0]-fn[0],un=dn[1]-fn[1],Z=Math.sin(ut),Te=Math.cos(ut);return At[0]=Bt*Te-un*Z+fn[0],At[1]=Bt*Z+un*Te+fn[1],At}function Ke(At,dn){var fn=At[0],ut=At[1],Bt=dn[0],un=dn[1];return Math.abs(Math.atan2(ut*Bt-fn*un,fn*Bt+ut*un))}function Rt(At,dn){var fn=At[0],ut=At[1],Bt=dn[0],un=dn[1];return Math.atan2(fn*un-ut*Bt,fn*Bt+ut*un)}function Qn(At){return At[0]=0,At[1]=0,At}function Yr(At){return"vec2("+At[0]+", "+At[1]+")"}function rn(At,dn){return At[0]===dn[0]&&At[1]===dn[1]}function An(At,dn){var fn=At[0],ut=At[1],Bt=dn[0],un=dn[1];return Math.abs(fn-Bt)<=glMatrix.EPSILON*Math.max(1,Math.abs(fn),Math.abs(Bt))&&Math.abs(ut-un)<=glMatrix.EPSILON*Math.max(1,Math.abs(ut),Math.abs(un))}var Ln=null,Tt=null,Mt=null,ge=null,pe=null,De=null,Ht=null,Jt=function(){var At=K();return function(dn,fn,ut,Bt,un,Z){var Te,Zt;for(fn||(fn=2),ut||(ut=0),Bt?Zt=Math.min(Bt*fn+ut,dn.length):Zt=dn.length,Te=ut;Te0&&(Zt=1/Math.sqrt(Zt)),ut[0]=Bt[0]*Zt,ut[1]=Bt[1]*Zt,ut[2]=Bt[2]*Zt,ut}function Fn(ut,Bt){return ut[0]*Bt[0]+ut[1]*Bt[1]+ut[2]*Bt[2]}function Ot(ut,Bt,un){var Z=Bt[0],Te=Bt[1],Zt=Bt[2],Gt=un[0],On=un[1],In=un[2];return ut[0]=Te*In-Zt*On,ut[1]=Zt*Gt-Z*In,ut[2]=Z*On-Te*Gt,ut}function jn(ut,Bt,un,Z){var Te=Bt[0],Zt=Bt[1],Gt=Bt[2];return ut[0]=Te+Z*(un[0]-Te),ut[1]=Zt+Z*(un[1]-Zt),ut[2]=Gt+Z*(un[2]-Gt),ut}function rr(ut,Bt,un,Z){var Te=Math.acos(Math.min(Math.max(Fn(Bt,un),-1),1)),Zt=Math.sin(Te),Gt=Math.sin((1-Z)*Te)/Zt,On=Math.sin(Z*Te)/Zt;return ut[0]=Gt*Bt[0]+On*un[0],ut[1]=Gt*Bt[1]+On*un[1],ut[2]=Gt*Bt[2]+On*un[2],ut}function kn(ut,Bt,un,Z,Te,Zt){var Gt=Zt*Zt,On=Gt*(2*Zt-3)+1,In=Gt*(Zt-2)+Zt,pr=Gt*(Zt-1),Je=Gt*(3-2*Zt);return ut[0]=Bt[0]*On+un[0]*In+Z[0]*pr+Te[0]*Je,ut[1]=Bt[1]*On+un[1]*In+Z[1]*pr+Te[1]*Je,ut[2]=Bt[2]*On+un[2]*In+Z[2]*pr+Te[2]*Je,ut}function Kn(ut,Bt,un,Z,Te,Zt){var Gt=1-Zt,On=Gt*Gt,In=Zt*Zt,pr=On*Gt,Je=3*Zt*On,we=3*In*Gt,at=In*Zt;return ut[0]=Bt[0]*pr+un[0]*Je+Z[0]*we+Te[0]*at,ut[1]=Bt[1]*pr+un[1]*Je+Z[1]*we+Te[1]*at,ut[2]=Bt[2]*pr+un[2]*Je+Z[2]*we+Te[2]*at,ut}function _r(ut,Bt){Bt=Bt===void 0?1:Bt;var un=glMatrix.RANDOM()*2*Math.PI,Z=glMatrix.RANDOM()*2-1,Te=Math.sqrt(1-Z*Z)*Bt;return ut[0]=Math.cos(un)*Te,ut[1]=Math.sin(un)*Te,ut[2]=Z*Bt,ut}function bn(ut,Bt,un){var Z=Bt[0],Te=Bt[1],Zt=Bt[2],Gt=un[3]*Z+un[7]*Te+un[11]*Zt+un[15];return Gt=Gt||1,ut[0]=(un[0]*Z+un[4]*Te+un[8]*Zt+un[12])/Gt,ut[1]=(un[1]*Z+un[5]*Te+un[9]*Zt+un[13])/Gt,ut[2]=(un[2]*Z+un[6]*Te+un[10]*Zt+un[14])/Gt,ut}function Cr(ut,Bt,un){var Z=Bt[0],Te=Bt[1],Zt=Bt[2];return ut[0]=Z*un[0]+Te*un[3]+Zt*un[6],ut[1]=Z*un[1]+Te*un[4]+Zt*un[7],ut[2]=Z*un[2]+Te*un[5]+Zt*un[8],ut}function Ke(ut,Bt,un){var Z=un[0],Te=un[1],Zt=un[2],Gt=un[3],On=Bt[0],In=Bt[1],pr=Bt[2],Je=Te*pr-Zt*In,we=Zt*On-Z*pr,at=Z*In-Te*On;return Je=Je+Je,we=we+we,at=at+at,ut[0]=On+Gt*Je+Te*at-Zt*we,ut[1]=In+Gt*we+Zt*Je-Z*at,ut[2]=pr+Gt*at+Z*we-Te*Je,ut}function Rt(ut,Bt,un,Z){var Te=[],Zt=[];return Te[0]=Bt[0]-un[0],Te[1]=Bt[1]-un[1],Te[2]=Bt[2]-un[2],Zt[0]=Te[0],Zt[1]=Te[1]*Math.cos(Z)-Te[2]*Math.sin(Z),Zt[2]=Te[1]*Math.sin(Z)+Te[2]*Math.cos(Z),ut[0]=Zt[0]+un[0],ut[1]=Zt[1]+un[1],ut[2]=Zt[2]+un[2],ut}function Qn(ut,Bt,un,Z){var Te=[],Zt=[];return Te[0]=Bt[0]-un[0],Te[1]=Bt[1]-un[1],Te[2]=Bt[2]-un[2],Zt[0]=Te[2]*Math.sin(Z)+Te[0]*Math.cos(Z),Zt[1]=Te[1],Zt[2]=Te[2]*Math.cos(Z)-Te[0]*Math.sin(Z),ut[0]=Zt[0]+un[0],ut[1]=Zt[1]+un[1],ut[2]=Zt[2]+un[2],ut}function Yr(ut,Bt,un,Z){var Te=[],Zt=[];return Te[0]=Bt[0]-un[0],Te[1]=Bt[1]-un[1],Te[2]=Bt[2]-un[2],Zt[0]=Te[0]*Math.cos(Z)-Te[1]*Math.sin(Z),Zt[1]=Te[0]*Math.sin(Z)+Te[1]*Math.cos(Z),Zt[2]=Te[2],ut[0]=Zt[0]+un[0],ut[1]=Zt[1]+un[1],ut[2]=Zt[2]+un[2],ut}function rn(ut,Bt){var un=ut[0],Z=ut[1],Te=ut[2],Zt=Bt[0],Gt=Bt[1],On=Bt[2],In=Math.sqrt((un*un+Z*Z+Te*Te)*(Zt*Zt+Gt*Gt+On*On)),pr=In&&Fn(ut,Bt)/In;return Math.acos(Math.min(Math.max(pr,-1),1))}function An(ut){return ut[0]=0,ut[1]=0,ut[2]=0,ut}function Ln(ut){return"vec3("+ut[0]+", "+ut[1]+", "+ut[2]+")"}function Tt(ut,Bt){return ut[0]===Bt[0]&&ut[1]===Bt[1]&&ut[2]===Bt[2]}function Mt(ut,Bt){var un=ut[0],Z=ut[1],Te=ut[2],Zt=Bt[0],Gt=Bt[1],On=Bt[2];return Math.abs(un-Zt)<=m.Ib*Math.max(1,Math.abs(un),Math.abs(Zt))&&Math.abs(Z-Gt)<=m.Ib*Math.max(1,Math.abs(Z),Math.abs(Gt))&&Math.abs(Te-On)<=m.Ib*Math.max(1,Math.abs(Te),Math.abs(On))}var ge=Q,pe=null,De=null,Ht=Fe,Jt=null,At=L,dn=null,fn=function(){var ut=K();return function(Bt,un,Z,Te,Zt,Gt){var On,In;for(un||(un=3),Z||(Z=0),Te?In=Math.min(Te*un+Z,Bt.length):In=Bt.length,On=Z;On0&&(dn=1/Math.sqrt(dn)),ge[0]=De*dn,ge[1]=Ht*dn,ge[2]=Jt*dn,ge[3]=At*dn,ge}function Fn(ge,pe){return ge[0]*pe[0]+ge[1]*pe[1]+ge[2]*pe[2]+ge[3]*pe[3]}function Ot(ge,pe,De,Ht){var Jt=De[0]*Ht[1]-De[1]*Ht[0],At=De[0]*Ht[2]-De[2]*Ht[0],dn=De[0]*Ht[3]-De[3]*Ht[0],fn=De[1]*Ht[2]-De[2]*Ht[1],ut=De[1]*Ht[3]-De[3]*Ht[1],Bt=De[2]*Ht[3]-De[3]*Ht[2],un=pe[0],Z=pe[1],Te=pe[2],Zt=pe[3];return ge[0]=Z*Bt-Te*ut+Zt*fn,ge[1]=-(un*Bt)+Te*dn-Zt*At,ge[2]=un*ut-Z*dn+Zt*Jt,ge[3]=-(un*fn)+Z*At-Te*Jt,ge}function jn(ge,pe,De,Ht){var Jt=pe[0],At=pe[1],dn=pe[2],fn=pe[3];return ge[0]=Jt+Ht*(De[0]-Jt),ge[1]=At+Ht*(De[1]-At),ge[2]=dn+Ht*(De[2]-dn),ge[3]=fn+Ht*(De[3]-fn),ge}function rr(ge,pe){pe=pe===void 0?1:pe;var De,Ht,Jt,At,dn,fn,ut;ut=glMatrix.RANDOM(),De=ut*2-1,Ht=(4*glMatrix.RANDOM()-2)*Math.sqrt(ut*-ut+ut),dn=De*De+Ht*Ht,ut=glMatrix.RANDOM(),Jt=ut*2-1,At=(4*glMatrix.RANDOM()-2)*Math.sqrt(ut*-ut+ut),fn=Jt*Jt+At*At;var Bt=Math.sqrt((1-dn)/fn);return ge[0]=pe*De,ge[1]=pe*Ht,ge[2]=pe*Jt*Bt,ge[3]=pe*At*Bt,ge}function kn(ge,pe,De){var Ht=pe[0],Jt=pe[1],At=pe[2],dn=pe[3];return ge[0]=De[0]*Ht+De[4]*Jt+De[8]*At+De[12]*dn,ge[1]=De[1]*Ht+De[5]*Jt+De[9]*At+De[13]*dn,ge[2]=De[2]*Ht+De[6]*Jt+De[10]*At+De[14]*dn,ge[3]=De[3]*Ht+De[7]*Jt+De[11]*At+De[15]*dn,ge}function Kn(ge,pe,De){var Ht=De[0],Jt=De[1],At=De[2],dn=De[3],fn=pe[0],ut=pe[1],Bt=pe[2],un=Jt*Bt-At*ut,Z=At*fn-Ht*Bt,Te=Ht*ut-Jt*fn;return un=un+un,Z=Z+Z,Te=Te+Te,ge[0]=fn+dn*un+Jt*Te-At*Z,ge[1]=ut+dn*Z+At*un-Ht*Te,ge[2]=Bt+dn*Te+Ht*Z-Jt*un,ge[3]=pe[3],ge}function _r(ge){return ge[0]=0,ge[1]=0,ge[2]=0,ge[3]=0,ge}function bn(ge){return"vec4("+ge[0]+", "+ge[1]+", "+ge[2]+", "+ge[3]+")"}function Cr(ge,pe){return ge[0]===pe[0]&&ge[1]===pe[1]&&ge[2]===pe[2]&&ge[3]===pe[3]}function Ke(ge,pe){var De=ge[0],Ht=ge[1],Jt=ge[2],At=ge[3],dn=pe[0],fn=pe[1],ut=pe[2],Bt=pe[3];return Math.abs(De-dn)<=glMatrix.EPSILON*Math.max(1,Math.abs(De),Math.abs(dn))&&Math.abs(Ht-fn)<=glMatrix.EPSILON*Math.max(1,Math.abs(Ht),Math.abs(fn))&&Math.abs(Jt-ut)<=glMatrix.EPSILON*Math.max(1,Math.abs(Jt),Math.abs(ut))&&Math.abs(At-Bt)<=glMatrix.EPSILON*Math.max(1,Math.abs(At),Math.abs(Bt))}var Rt=null,Qn=null,Yr=null,rn=null,An=null,Ln=null,Tt=null,Mt=function(){var ge=K();return function(pe,De,Ht,Jt,At,dn){var fn,ut;for(De||(De=4),Ht||(Ht=0),Jt?ut=Math.min(Jt*De+Ht,pe.length):ut=pe.length,fn=Ht;fn0&&(Y=j.removeMin(),fe=V[Y],fe.distance!==Number.POSITIVE_INFINITY);)Q(Y).forEach(ue);return V}},59324:function(Ie,Be,_){var m=_(95329),K=_(94558);Ie.exports=H;function H(L){return m.filter(K(L),function(T){return T.length>1||T.length===1&&L.hasEdge(T[0],T[0])})}},22893:function(Ie,Be,_){var m=_(95329);Ie.exports=H;var K=m.constant(1);function H(T,F,B){return L(T,F||K,B||function(U){return T.outEdges(U)})}function L(T,F,B){var U={},Q=T.nodes();return Q.forEach(function(V){U[V]={},U[V][V]={distance:0},Q.forEach(function(j){V!==j&&(U[V][j]={distance:Number.POSITIVE_INFINITY})}),B(V).forEach(function(j){var Y=j.v===V?j.w:j.v,fe=F(j);U[V][Y]={distance:fe,predecessor:V}})}),Q.forEach(function(V){var j=U[V];Q.forEach(function(Y){var fe=U[Y];Q.forEach(function(ue){var Me=fe[V],_e=j[ue],Ce=fe[ue],Xe=Me.distance+_e.distance;Xe0;){if(V=Q.removeMin(),m.has(U,V))B.setEdge(V,U[V]);else{if(Y)throw new Error("Input graph is not connected: "+T);Y=!0}T.nodeEdges(V).forEach(j)}return B}},94558:function(Ie,Be,_){var m=_(95329);Ie.exports=K;function K(H){var L=0,T=[],F={},B=[];function U(Q){var V=F[Q]={onStack:!0,lowlink:L,index:L++};if(T.push(Q),H.successors(Q).forEach(function(fe){m.has(F,fe)?F[fe].onStack&&(V.lowlink=Math.min(V.lowlink,F[fe].index)):(U(fe),V.lowlink=Math.min(V.lowlink,F[fe].lowlink))}),V.lowlink===V.index){var j=[],Y;do Y=T.pop(),F[Y].onStack=!1,j.push(Y);while(Q!==Y);B.push(j)}}return H.nodes().forEach(function(Q){m.has(F,Q)||U(Q)}),B}},7793:function(Ie,Be,_){var m=_(95329);Ie.exports=K,K.CycleException=H;function K(L){var T={},F={},B=[];function U(Q){if(m.has(F,Q))throw new H;m.has(T,Q)||(F[Q]=!0,T[Q]=!0,m.each(L.predecessors(Q),U),delete F[Q],B.push(Q))}if(m.each(L.sinks(),U),m.size(T)!==L.nodeCount())throw new H;return B}function H(){}H.prototype=new Error},36614:function(Ie,Be,_){var m=_(95329);Ie.exports=K;function K(){this._arr=[],this._keyIndices={}}K.prototype.size=function(){return this._arr.length},K.prototype.keys=function(){return this._arr.map(function(H){return H.key})},K.prototype.has=function(H){return m.has(this._keyIndices,H)},K.prototype.priority=function(H){var L=this._keyIndices[H];if(L!==void 0)return this._arr[L].priority},K.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},K.prototype.add=function(H,L){var T=this._keyIndices;if(H=String(H),!m.has(T,H)){var F=this._arr,B=F.length;return T[H]=B,F.push({key:H,priority:L}),this._decrease(B),!0}return!1},K.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var H=this._arr.pop();return delete this._keyIndices[H.key],this._heapify(0),H.key},K.prototype.decrease=function(H,L){var T=this._keyIndices[H];if(L>this._arr[T].priority)throw new Error("New priority is greater than current priority. Key: "+H+" Old: "+this._arr[T].priority+" New: "+L);this._arr[T].priority=L,this._decrease(T)},K.prototype._heapify=function(H){var L=this._arr,T=2*H,F=T+1,B=H;T>1,!(L[F].priority1?ue.setNode(Me,Y):ue.setNode(Me)}),this},T.prototype.setNode=function(j,Y){return m.has(this._nodes,j)?(arguments.length>1&&(this._nodes[j]=Y),this):(this._nodes[j]=arguments.length>1?Y:this._defaultNodeLabelFn(j),this._isCompound&&(this._parent[j]=H,this._children[j]={},this._children[H][j]=!0),this._in[j]={},this._preds[j]={},this._out[j]={},this._sucs[j]={},++this._nodeCount,this)},T.prototype.node=function(j){return this._nodes[j]},T.prototype.hasNode=function(j){return m.has(this._nodes,j)},T.prototype.removeNode=function(j){var Y=this;if(m.has(this._nodes,j)){var fe=function(ue){Y.removeEdge(Y._edgeObjs[ue])};delete this._nodes[j],this._isCompound&&(this._removeFromParentsChildList(j),delete this._parent[j],m.each(this.children(j),function(ue){Y.setParent(ue)}),delete this._children[j]),m.each(m.keys(this._in[j]),fe),delete this._in[j],delete this._preds[j],m.each(m.keys(this._out[j]),fe),delete this._out[j],delete this._sucs[j],--this._nodeCount}return this},T.prototype.setParent=function(j,Y){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(m.isUndefined(Y))Y=H;else{Y+="";for(var fe=Y;!m.isUndefined(fe);fe=this.parent(fe))if(fe===j)throw new Error("Setting "+Y+" as parent of "+j+" would create a cycle");this.setNode(Y)}return this.setNode(j),this._removeFromParentsChildList(j),this._parent[j]=Y,this._children[Y][j]=!0,this},T.prototype._removeFromParentsChildList=function(j){delete this._children[this._parent[j]][j]},T.prototype.parent=function(j){if(this._isCompound){var Y=this._parent[j];if(Y!==H)return Y}},T.prototype.children=function(j){if(m.isUndefined(j)&&(j=H),this._isCompound){var Y=this._children[j];if(Y)return m.keys(Y)}else{if(j===H)return this.nodes();if(this.hasNode(j))return[]}},T.prototype.predecessors=function(j){var Y=this._preds[j];if(Y)return m.keys(Y)},T.prototype.successors=function(j){var Y=this._sucs[j];if(Y)return m.keys(Y)},T.prototype.neighbors=function(j){var Y=this.predecessors(j);if(Y)return m.union(Y,this.successors(j))},T.prototype.isLeaf=function(j){var Y;return this.isDirected()?Y=this.successors(j):Y=this.neighbors(j),Y.length===0},T.prototype.filterNodes=function(j){var Y=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});Y.setGraph(this.graph());var fe=this;m.each(this._nodes,function(_e,Ce){j(Ce)&&Y.setNode(Ce,_e)}),m.each(this._edgeObjs,function(_e){Y.hasNode(_e.v)&&Y.hasNode(_e.w)&&Y.setEdge(_e,fe.edge(_e))});var ue={};function Me(_e){var Ce=fe.parent(_e);return Ce===void 0||Y.hasNode(Ce)?(ue[_e]=Ce,Ce):Ce in ue?ue[Ce]:Me(Ce)}return this._isCompound&&m.each(Y.nodes(),function(_e){Y.setParent(_e,Me(_e))}),Y},T.prototype.setDefaultEdgeLabel=function(j){return m.isFunction(j)||(j=m.constant(j)),this._defaultEdgeLabelFn=j,this},T.prototype.edgeCount=function(){return this._edgeCount},T.prototype.edges=function(){return m.values(this._edgeObjs)},T.prototype.setPath=function(j,Y){var fe=this,ue=arguments;return m.reduce(j,function(Me,_e){return ue.length>1?fe.setEdge(Me,_e,Y):fe.setEdge(Me,_e),_e}),this},T.prototype.setEdge=function(){var j,Y,fe,ue,Me=!1,_e=arguments[0];typeof _e=="object"&&_e!==null&&"v"in _e?(j=_e.v,Y=_e.w,fe=_e.name,arguments.length===2&&(ue=arguments[1],Me=!0)):(j=_e,Y=arguments[1],fe=arguments[3],arguments.length>2&&(ue=arguments[2],Me=!0)),j=""+j,Y=""+Y,m.isUndefined(fe)||(fe=""+fe);var Ce=U(this._isDirected,j,Y,fe);if(m.has(this._edgeLabels,Ce))return Me&&(this._edgeLabels[Ce]=ue),this;if(!m.isUndefined(fe)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(j),this.setNode(Y),this._edgeLabels[Ce]=Me?ue:this._defaultEdgeLabelFn(j,Y,fe);var Xe=Q(this._isDirected,j,Y,fe);return j=Xe.v,Y=Xe.w,Object.freeze(Xe),this._edgeObjs[Ce]=Xe,F(this._preds[Y],j),F(this._sucs[j],Y),this._in[Y][Ce]=Xe,this._out[j][Ce]=Xe,this._edgeCount++,this},T.prototype.edge=function(j,Y,fe){var ue=arguments.length===1?V(this._isDirected,arguments[0]):U(this._isDirected,j,Y,fe);return this._edgeLabels[ue]},T.prototype.hasEdge=function(j,Y,fe){var ue=arguments.length===1?V(this._isDirected,arguments[0]):U(this._isDirected,j,Y,fe);return m.has(this._edgeLabels,ue)},T.prototype.removeEdge=function(j,Y,fe){var ue=arguments.length===1?V(this._isDirected,arguments[0]):U(this._isDirected,j,Y,fe),Me=this._edgeObjs[ue];return Me&&(j=Me.v,Y=Me.w,delete this._edgeLabels[ue],delete this._edgeObjs[ue],B(this._preds[Y],j),B(this._sucs[j],Y),delete this._in[Y][ue],delete this._out[j][ue],this._edgeCount--),this},T.prototype.inEdges=function(j,Y){var fe=this._in[j];if(fe){var ue=m.values(fe);return Y?m.filter(ue,function(Me){return Me.v===Y}):ue}},T.prototype.outEdges=function(j,Y){var fe=this._out[j];if(fe){var ue=m.values(fe);return Y?m.filter(ue,function(Me){return Me.w===Y}):ue}},T.prototype.nodeEdges=function(j,Y){var fe=this.inEdges(j,Y);if(fe)return fe.concat(this.outEdges(j,Y))};function F(j,Y){j[Y]?j[Y]++:j[Y]=1}function B(j,Y){--j[Y]||delete j[Y]}function U(j,Y,fe,ue){var Me=""+Y,_e=""+fe;if(!j&&Me>_e){var Ce=Me;Me=_e,_e=Ce}return Me+L+_e+L+(m.isUndefined(ue)?K:ue)}function Q(j,Y,fe,ue){var Me=""+Y,_e=""+fe;if(!j&&Me>_e){var Ce=Me;Me=_e,_e=Ce}var Xe={v:Me,w:_e};return ue&&(Xe.name=ue),Xe}function V(j,Y){return U(j,Y.v,Y.w,Y.name)}},89224:function(Ie,Be,_){Ie.exports={Graph:_(6349),version:_(16544)}},17401:function(Ie,Be,_){var m=_(95329),K=_(6349);Ie.exports={write:H,read:F};function H(B){var U={options:{directed:B.isDirected(),multigraph:B.isMultigraph(),compound:B.isCompound()},nodes:L(B),edges:T(B)};return m.isUndefined(B.graph())||(U.value=m.clone(B.graph())),U}function L(B){return m.map(B.nodes(),function(U){var Q=B.node(U),V=B.parent(U),j={v:U};return m.isUndefined(Q)||(j.value=Q),m.isUndefined(V)||(j.parent=V),j})}function T(B){return m.map(B.edges(),function(U){var Q=B.edge(U),V={v:U.v,w:U.w};return m.isUndefined(U.name)||(V.name=U.name),m.isUndefined(Q)||(V.value=Q),V})}function F(B){var U=new K(B.options).setGraph(B.value);return m.each(B.nodes,function(Q){U.setNode(Q.v,Q.value),Q.parent&&U.setParent(Q.v,Q.parent)}),m.each(B.edges,function(Q){U.setEdge({v:Q.v,w:Q.w,name:Q.name},Q.value)}),U}},95329:function(Ie,Be,_){var m;try{m={clone:_(76833),constant:_(13503),each:_(76934),filter:_(64725),has:_(99946),isArray:_(80744),isEmpty:_(61627),isFunction:_(9363),isUndefined:_(16513),keys:_(55451),map:_(9924),reduce:_(16473),size:_(40617),transform:_(91116),union:_(44065),values:_(81229)}}catch(K){}m||(m=window._),Ie.exports=m},16544:function(Ie){Ie.exports="2.1.8"},64270:function(Ie){(function(Be,_){Ie.exports=_()})(this,function(){"use strict";var Be=function(O,N){return Be=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(X,$){X.__proto__=$}||function(X,$){for(var Se in $)Object.prototype.hasOwnProperty.call($,Se)&&(X[Se]=$[Se])},Be(O,N)};function _(O,N){if(typeof N!="function"&&N!==null)throw new TypeError("Class extends value "+String(N)+" is not a constructor or null");Be(O,N);function X(){this.constructor=O}O.prototype=N===null?Object.create(N):(X.prototype=N.prototype,new X)}var m=function(){return m=Object.assign||function(N){for(var X,$=1,Se=arguments.length;$0&&rt[rt.length-1])&&(Er[0]===6||Er[0]===2)){X=0;continue}if(Er[0]===3&&(!rt||Er[1]>rt[0]&&Er[1]=55296&&Se<=56319&&X<$){var rt=O.charCodeAt(X++);(rt&64512)===56320?N.push(((Se&1023)<<10)+(rt&1023)+65536):(N.push(Se),X--)}else N.push(Se)}return N},Q=function(){for(var O=[],N=0;N>10)+55296,Dt%1024+56320)),(Se+1===X||$.length>16384)&&(rt+=String.fromCharCode.apply(String,$),$.length=0)}return rt},V="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",j=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),Y=0;Y>4,yr[Se++]=(Dt&15)<<4|yn>>2,yr[Se++]=(yn&3)<<6|mn&63;return Er},Ce=function(O){for(var N=O.length,X=[],$=0;$>Fe,It=1<>Fe,jn=Vt+Ot,rr=jn,kn=32,Kn=rr+kn,_r=65536>>ft,bn=1<=0){if(N<55296||N>56319&&N<=65535)return X=this.index[N>>Fe],X=(X<<_t)+(N&Fn),this.data[X];if(N<=65535)return X=this.index[Vt+(N-55296>>Fe)],X=(X<<_t)+(N&Fn),this.data[X];if(N>ft),X=this.index[X],X+=N>>Fe&Cr,X=this.index[X],X=(X<<_t)+(N&Fn),this.data[X];if(N<=1114111)return this.data[this.highValueIndex]}return this.errorValue},O}(),rn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",An=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),Ln=0;LnMt?(Se.push(!0),yn-=Mt):Se.push(!1),["normal","auto","loose"].indexOf(N)!==-1&&[8208,8211,12316,12448].indexOf(rt)!==-1)return $.push(Dt),X.push(Gt);if(yn===Ht||yn===Bt){if(Dt===0)return $.push(Dt),X.push(xn);var mn=X[Dt-1];return mi.indexOf(mn)===-1?($.push($[Dt-1]),X.push(mn)):($.push(Dt),X.push(xn))}if($.push(Dt),yn===cr)return X.push(N==="strict"?we:Ri);if(yn===Nn||yn===Ft)return X.push(xn);if(yn===cn)return rt>=131072&&rt<=196605||rt>=196608&&rt<=262141?X.push(Ri):X.push(xn);X.push(yn)}),[$,X,Se]},S=function(O,N,X,$){var Se=$[X];if(Array.isArray(O)?O.indexOf(Se)!==-1:O===Se)for(var rt=X;rt<=$.length;){rt++;var Dt=$[rt];if(Dt===N)return!0;if(Dt!==ut)break}if(Se===ut)for(var rt=X;rt>0;){rt--;var yn=$[rt];if(Array.isArray(O)?O.indexOf(yn)!==-1:O===yn)for(var mn=X;mn<=$.length;){mn++;var Dt=$[mn];if(Dt===N)return!0;if(Dt!==ut)break}if(yn!==ut)break}return!1},G=function(O,N){for(var X=O;X>=0;){var $=N[X];if($===ut)X--;else return $}return 0},ae=function(O,N,X,$,Se){if(X[$]===0)return pt;var rt=$-1;if(Array.isArray(Se)&&Se[rt]===!0)return pt;var Dt=rt-1,yn=rt+1,mn=N[rt],Er=Dt>=0?N[Dt]:0,yr=N[yn];if(mn===pe&&yr===De)return pt;if(ur.indexOf(mn)!==-1)return ct;if(ur.indexOf(yr)!==-1||lr.indexOf(yr)!==-1)return pt;if(G(rt,N)===dn)return zt;if(Mn.get(O[rt])===Bt||(mn===nr||mn===Lr)&&Mn.get(O[yn])===Bt||mn===At||yr===At||mn===fn||[ut,Z,Zt].indexOf(mn)===-1&&yr===fn||[On,In,pr,it,$t].indexOf(yr)!==-1||G(rt,N)===at||S(wt,at,rt,N)||S([On,In],we,rt,N)||S(un,un,rt,N))return pt;if(mn===ut)return zt;if(mn===wt||yr===wt)return pt;if(yr===Gt||mn===Gt)return zt;if([Z,Zt,we].indexOf(yr)!==-1||mn===Te||Er===ys&&k.indexOf(mn)!==-1||mn===$t&&yr===ys||yr===Je||sn.indexOf(yr)!==-1&&mn===ht||sn.indexOf(mn)!==-1&&yr===ht||mn===Yt&&[Ri,nr,Lr].indexOf(yr)!==-1||[Ri,nr,Lr].indexOf(mn)!==-1&&yr===St||sn.indexOf(mn)!==-1&&oi.indexOf(yr)!==-1||oi.indexOf(mn)!==-1&&sn.indexOf(yr)!==-1||[Yt,St].indexOf(mn)!==-1&&(yr===ht||[at,Zt].indexOf(yr)!==-1&&N[yn+1]===ht)||[at,Zt].indexOf(mn)!==-1&&yr===ht||mn===ht&&[ht,$t,it].indexOf(yr)!==-1)return pt;if([ht,$t,it,On,In].indexOf(yr)!==-1)for(var Wr=rt;Wr>=0;){var Ci=N[Wr];if(Ci===ht)return pt;if([$t,it].indexOf(Ci)!==-1)Wr--;else break}if([Yt,St].indexOf(yr)!==-1)for(var Wr=[On,In].indexOf(mn)!==-1?Dt:rt;Wr>=0;){var Ci=N[Wr];if(Ci===ht)return pt;if([$t,it].indexOf(Ci)!==-1)Wr--;else break}if(Fi===mn&&[Fi,ui,si,Pr].indexOf(yr)!==-1||[ui,si].indexOf(mn)!==-1&&[ui,gs].indexOf(yr)!==-1||[gs,Pr].indexOf(mn)!==-1&&yr===gs||Le.indexOf(mn)!==-1&&[Je,St].indexOf(yr)!==-1||Le.indexOf(yr)!==-1&&mn===Yt||sn.indexOf(mn)!==-1&&sn.indexOf(yr)!==-1||mn===it&&sn.indexOf(yr)!==-1||sn.concat(ht).indexOf(mn)!==-1&&yr===at&&jt.indexOf(O[yn])===-1||sn.concat(ht).indexOf(yr)!==-1&&mn===In)return pt;if(mn===Di&&yr===Di){for(var ya=X[rt],Ls=1;ya>0&&(ya--,N[ya]===Di);)Ls++;if(Ls%2!==0)return pt}return mn===nr&&yr===Lr?pt:zt},We=function(O,N){N||(N={lineBreak:"normal",wordBreak:"normal"});var X=W(O,N.lineBreak),$=X[0],Se=X[1],rt=X[2];(N.wordBreak==="break-all"||N.wordBreak==="break-word")&&(Se=Se.map(function(yn){return[ht,xn,Nn].indexOf(yn)!==-1?Ri:yn}));var Dt=N.wordBreak==="keep-all"?rt.map(function(yn,mn){return yn&&O[mn]>=19968&&O[mn]<=40959}):void 0;return[$,Se,Dt]},tt=function(){function O(N,X,$,Se){this.codePoints=N,this.required=X===ct,this.start=$,this.end=Se}return O.prototype.slice=function(){return Q.apply(void 0,this.codePoints.slice(this.start,this.end))},O}(),gt=function(O,N){var X=U(O),$=We(X,N),Se=$[0],rt=$[1],Dt=$[2],yn=X.length,mn=0,Er=0;return{next:function(){if(Er>=yn)return{done:!0,value:null};for(var yr=pt;Er=Mi&&O<=57},Ql=function(O){return O>=55296&&O<=57343},Cl=function(O){return nl(O)||O>=Oc&&O<=sc||O>=Do&&O<=Gl},Kc=function(O){return O>=Do&&O<=Tl},Xs=function(O){return O>=Oc&&O<=Xu},Uf=function(O){return Kc(O)||Xs(O)},of=function(O){return O>=Kt},Df=function(O){return O===Ne||O===an||O===xt},Sf=function(O){return Uf(O)||of(O)||O===Tn},Du=function(O){return Sf(O)||nl(O)||O===ir},ju=function(O){return O>=As&&O<=ks||O===Is||O>=Ks&&O<=Ya||O===Ba},pu=function(O,N){return O!==vt?!1:N!==Ne},$c=function(O,N,X){return O===ir?Sf(N)||pu(N,X):Sf(O)?!0:!!(O===vt&&pu(O,N))},lf=function(O,N,X){return O===Hn||O===ir?nl(N)?!0:N===Qi&&nl(X):nl(O===Qi?N:O)},Nh=function(O){var N=0,X=1;(O[N]===Hn||O[N]===ir)&&(O[N]===ir&&(X=-1),N++);for(var $=[];nl(O[N]);)$.push(O[N++]);var Se=$.length?parseInt(Q.apply(void 0,$),10):0;O[N]===Qi&&N++;for(var rt=[];nl(O[N]);)rt.push(O[N++]);var Dt=rt.length,yn=Dt?parseInt(Q.apply(void 0,rt),10):0;(O[N]===hc||O[N]===Hl)&&N++;var mn=1;(O[N]===Hn||O[N]===ir)&&(O[N]===ir&&(mn=-1),N++);for(var Er=[];nl(O[N]);)Er.push(O[N++]);var yr=Er.length?parseInt(Q.apply(void 0,Er),10):0;return X*(Se+yn*Math.pow(10,-Dt))*Math.pow(10,mn*yr)},Po={type:2},cf={type:3},Zh={type:4},Lh={type:13},kc={type:8},yl={type:21},xl={type:9},Of={type:10},nu={type:11},Rc={type:12},rl={type:14},gh={type:23},Fh={type:1},Kh={type:25},_l={type:24},Ss={type:26},Ru={type:27},$h={type:28},Xh={type:29},QA={type:31},Eh={type:32},uf=function(){function O(){this._value=[]}return O.prototype.write=function(N){this._value=this._value.concat(U(N))},O.prototype.read=function(){for(var N=[],X=this.consumeToken();X!==Eh;)N.push(X),X=this.consumeToken();return N},O.prototype.consumeToken=function(){var N=this.consumeCodePoint();switch(N){case tn:return this.consumeStringToken(tn);case hr:var X=this.peekCodePoint(0),$=this.peekCodePoint(1),Se=this.peekCodePoint(2);if(Du(X)||pu($,Se)){var rt=$c(X,$,Se)?Bn:bt,Dt=this.consumeName();return{type:5,value:Dt,flags:rt}}break;case or:if(this.peekCodePoint(0)===Un)return this.consumeCodePoint(),Lh;break;case xr:return this.consumeStringToken(xr);case Rr:return Po;case pi:return cf;case Sn:if(this.peekCodePoint(0)===Un)return this.consumeCodePoint(),rl;break;case Hn:if(lf(N,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(N),this.consumeNumericToken();break;case ar:return Zh;case ir:var yn=N,mn=this.peekCodePoint(0),Er=this.peekCodePoint(1);if(lf(yn,mn,Er))return this.reconsumeCodePoint(N),this.consumeNumericToken();if($c(yn,mn,Er))return this.reconsumeCodePoint(N),this.consumeIdentLikeToken();if(mn===ir&&Er===xs)return this.consumeCodePoint(),this.consumeCodePoint(),_l;break;case Qi:if(lf(N,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(N),this.consumeNumericToken();break;case Ye:if(this.peekCodePoint(0)===Sn)for(this.consumeCodePoint();;){var yr=this.consumeCodePoint();if(yr===Sn&&(yr=this.consumeCodePoint(),yr===Ye))return this.consumeToken();if(yr===Wa)return this.consumeToken()}break;case Hr:return Ss;case fi:return Ru;case zr:if(this.peekCodePoint(0)===ni&&this.peekCodePoint(1)===ir&&this.peekCodePoint(2)===ir)return this.consumeCodePoint(),this.consumeCodePoint(),Kh;break;case ms:var Wr=this.peekCodePoint(0),Ci=this.peekCodePoint(1),ya=this.peekCodePoint(2);if($c(Wr,Ci,ya)){var Dt=this.consumeName();return{type:7,value:Dt}}break;case ls:return $h;case vt:if(pu(N,this.peekCodePoint(0)))return this.reconsumeCodePoint(N),this.consumeIdentLikeToken();break;case Oi:return Xh;case Ds:if(this.peekCodePoint(0)===Un)return this.consumeCodePoint(),kc;break;case Bi:return nu;case Na:return Rc;case zl:case tu:var Ls=this.peekCodePoint(0),ha=this.peekCodePoint(1);return Ls===Hn&&(Cl(ha)||ha===Qs)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(N),this.consumeIdentLikeToken();case $n:if(this.peekCodePoint(0)===Un)return this.consumeCodePoint(),xl;if(this.peekCodePoint(0)===$n)return this.consumeCodePoint(),yl;break;case Ut:if(this.peekCodePoint(0)===Un)return this.consumeCodePoint(),Of;break;case Wa:return Eh}return Df(N)?(this.consumeWhiteSpace(),QA):nl(N)?(this.reconsumeCodePoint(N),this.consumeNumericToken()):Sf(N)?(this.reconsumeCodePoint(N),this.consumeIdentLikeToken()):{type:6,value:Q(N)}},O.prototype.consumeCodePoint=function(){var N=this._value.shift();return typeof N=="undefined"?-1:N},O.prototype.reconsumeCodePoint=function(N){this._value.unshift(N)},O.prototype.peekCodePoint=function(N){return N>=this._value.length?-1:this._value[N]},O.prototype.consumeUnicodeRangeToken=function(){for(var N=[],X=this.consumeCodePoint();Cl(X)&&N.length<6;)N.push(X),X=this.consumeCodePoint();for(var $=!1;X===Qs&&N.length<6;)N.push(X),X=this.consumeCodePoint(),$=!0;if($){var Se=parseInt(Q.apply(void 0,N.map(function(mn){return mn===Qs?Mi:mn})),16),rt=parseInt(Q.apply(void 0,N.map(function(mn){return mn===Qs?sc:mn})),16);return{type:30,start:Se,end:rt}}var Dt=parseInt(Q.apply(void 0,N),16);if(this.peekCodePoint(0)===ir&&Cl(this.peekCodePoint(1))){this.consumeCodePoint(),X=this.consumeCodePoint();for(var yn=[];Cl(X)&&yn.length<6;)yn.push(X),X=this.consumeCodePoint();var rt=parseInt(Q.apply(void 0,yn),16);return{type:30,start:Dt,end:rt}}else return{type:30,start:Dt,end:Dt}},O.prototype.consumeIdentLikeToken=function(){var N=this.consumeName();return N.toLowerCase()==="url"&&this.peekCodePoint(0)===Rr?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===Rr?(this.consumeCodePoint(),{type:19,value:N}):{type:20,value:N}},O.prototype.consumeUrlToken=function(){var N=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===Wa)return{type:22,value:""};var X=this.peekCodePoint(0);if(X===xr||X===tn){var $=this.consumeStringToken(this.consumeCodePoint());return $.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===Wa||this.peekCodePoint(0)===pi)?(this.consumeCodePoint(),{type:22,value:$.value}):(this.consumeBadUrlRemnants(),gh)}for(;;){var Se=this.consumeCodePoint();if(Se===Wa||Se===pi)return{type:22,value:Q.apply(void 0,N)};if(Df(Se))return this.consumeWhiteSpace(),this.peekCodePoint(0)===Wa||this.peekCodePoint(0)===pi?(this.consumeCodePoint(),{type:22,value:Q.apply(void 0,N)}):(this.consumeBadUrlRemnants(),gh);if(Se===tn||Se===xr||Se===Rr||ju(Se))return this.consumeBadUrlRemnants(),gh;if(Se===vt)if(pu(Se,this.peekCodePoint(0)))N.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),gh;else N.push(Se)}},O.prototype.consumeWhiteSpace=function(){for(;Df(this.peekCodePoint(0));)this.consumeCodePoint()},O.prototype.consumeBadUrlRemnants=function(){for(;;){var N=this.consumeCodePoint();if(N===pi||N===Wa)return;pu(N,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},O.prototype.consumeStringSlice=function(N){for(var X=5e4,$="";N>0;){var Se=Math.min(X,N);$+=Q.apply(void 0,this._value.splice(0,Se)),N-=Se}return this._value.shift(),$},O.prototype.consumeStringToken=function(N){var X="",$=0;do{var Se=this._value[$];if(Se===Wa||Se===void 0||Se===N)return X+=this.consumeStringSlice($),{type:0,value:X};if(Se===Ne)return this._value.splice(0,$),Fh;if(Se===vt){var rt=this._value[$+1];rt!==Wa&&rt!==void 0&&(rt===Ne?(X+=this.consumeStringSlice($),$=-1,this._value.shift()):pu(Se,rt)&&(X+=this.consumeStringSlice($),X+=Q(this.consumeEscapedCodePoint()),$=-1))}$++}while(!0)},O.prototype.consumeNumber=function(){var N=[],X=Ge,$=this.peekCodePoint(0);for(($===Hn||$===ir)&&N.push(this.consumeCodePoint());nl(this.peekCodePoint(0));)N.push(this.consumeCodePoint());$=this.peekCodePoint(0);var Se=this.peekCodePoint(1);if($===Qi&&nl(Se))for(N.push(this.consumeCodePoint(),this.consumeCodePoint()),X=$e;nl(this.peekCodePoint(0));)N.push(this.consumeCodePoint());$=this.peekCodePoint(0),Se=this.peekCodePoint(1);var rt=this.peekCodePoint(2);if(($===hc||$===Hl)&&((Se===Hn||Se===ir)&&nl(rt)||nl(Se)))for(N.push(this.consumeCodePoint(),this.consumeCodePoint()),X=$e;nl(this.peekCodePoint(0));)N.push(this.consumeCodePoint());return[Nh(N),X]},O.prototype.consumeNumericToken=function(){var N=this.consumeNumber(),X=N[0],$=N[1],Se=this.peekCodePoint(0),rt=this.peekCodePoint(1),Dt=this.peekCodePoint(2);if($c(Se,rt,Dt)){var yn=this.consumeName();return{type:15,number:X,flags:$,unit:yn}}return Se===$r?(this.consumeCodePoint(),{type:16,number:X,flags:$}):{type:17,number:X,flags:$}},O.prototype.consumeEscapedCodePoint=function(){var N=this.consumeCodePoint();if(Cl(N)){for(var X=Q(N);Cl(this.peekCodePoint(0))&&X.length<6;)X+=Q(this.consumeCodePoint());Df(this.peekCodePoint(0))&&this.consumeCodePoint();var $=parseInt(X,16);return $===0||Ql($)||$>1114111?Lt:$}return N===Wa?Lt:N},O.prototype.consumeName=function(){for(var N="";;){var X=this.consumeCodePoint();if(Du(X))N+=Q(X);else if(pu(X,this.peekCodePoint(0)))N+=Q(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(X),N}},O}(),jh=function(){function O(N){this._tokens=N}return O.create=function(N){var X=new uf;return X.write(N),new O(X.read())},O.parseValue=function(N){return O.create(N).parseComponentValue()},O.parseValues=function(N){return O.create(N).parseComponentValues()},O.prototype.parseComponentValue=function(){for(var N=this.consumeToken();N.type===31;)N=this.consumeToken();if(N.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(N);var X=this.consumeComponentValue();do N=this.consumeToken();while(N.type===31);if(N.type===32)return X;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},O.prototype.parseComponentValues=function(){for(var N=[];;){var X=this.consumeComponentValue();if(X.type===32)return N;N.push(X),N.push()}},O.prototype.consumeComponentValue=function(){var N=this.consumeToken();switch(N.type){case 11:case 28:case 2:return this.consumeSimpleBlock(N.type);case 19:return this.consumeFunction(N)}return N},O.prototype.consumeSimpleBlock=function(N){for(var X={type:N,values:[]},$=this.consumeToken();;){if($.type===32||lu($,N))return X;this.reconsumeToken($),X.values.push(this.consumeComponentValue()),$=this.consumeToken()}},O.prototype.consumeFunction=function(N){for(var X={name:N.value,values:[],type:18};;){var $=this.consumeToken();if($.type===32||$.type===3)return X;this.reconsumeToken($),X.values.push(this.consumeComponentValue())}},O.prototype.consumeToken=function(){var N=this._tokens.shift();return typeof N=="undefined"?Eh:N},O.prototype.reconsumeToken=function(N){this._tokens.unshift(N)},O}(),Pc=function(O){return O.type===15},Xc=function(O){return O.type===17},bl=function(O){return O.type===20},Fd=function(O){return O.type===0},Hi=function(O,N){return bl(O)&&O.value===N},sl=function(O){return O.type!==31},Bl=function(O){return O.type!==31&&O.type!==4},ac=function(O){var N=[],X=[];return O.forEach(function($){if($.type===4){if(X.length===0)throw new Error("Error parsing function args, zero tokens for arg");N.push(X),X=[];return}$.type!==31&&X.push($)}),X.length&&N.push(X),N},lu=function(O,N){return N===11&&O.type===12||N===28&&O.type===29?!0:N===2&&O.type===3},Ou=function(O){return O.type===17||O.type===15},al=function(O){return O.type===16||Ou(O)},ul=function(O){return O.length>1?[O[0],O[1]]:[O[0]]},hl={type:17,number:0,flags:Ge},bc={type:16,number:50,flags:Ge},ku={type:16,number:100,flags:Ge},oc=function(O,N,X){var $=O[0],Se=O[1];return[Yo($,N),Yo(typeof Se!="undefined"?Se:$,X)]},Yo=function(O,N){if(O.type===16)return O.number/100*N;if(Pc(O))switch(O.unit){case"rem":case"em":return 16*O.number;case"px":default:return O.number}return O.number},Su="deg",rd="grad",Vu="rad",js="turn",Qr={name:"angle",parse:function(O,N){if(N.type===15)switch(N.unit){case Su:return Math.PI*N.number/180;case rd:return Math.PI/200*N.number;case Vu:return N.number;case js:return Math.PI*2*N.number}throw new Error("Unsupported angle type")}},ri=function(O){return O.type===15&&(O.unit===Su||O.unit===rd||O.unit===Vu||O.unit===js)},Za=function(O){var N=O.filter(bl).map(function(X){return X.value}).join(" ");switch(N){case"to bottom right":case"to right bottom":case"left top":case"top left":return[hl,hl];case"to top":case"bottom":return Hu(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[hl,ku];case"to right":case"left":return Hu(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[ku,ku];case"to bottom":case"top":return Hu(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[ku,hl];case"to left":case"right":return Hu(270)}return 0},Hu=function(O){return Math.PI*O/180},wc={name:"color",parse:function(O,N){if(N.type===18){var X=Np[N.name];if(typeof X=="undefined")throw new Error('Attempting to parse an unsupported color function "'+N.name+'"');return X(O,N.values)}if(N.type===5){if(N.value.length===3){var $=N.value.substring(0,1),Se=N.value.substring(1,2),rt=N.value.substring(2,3);return Wl(parseInt($+$,16),parseInt(Se+Se,16),parseInt(rt+rt,16),1)}if(N.value.length===4){var $=N.value.substring(0,1),Se=N.value.substring(1,2),rt=N.value.substring(2,3),Dt=N.value.substring(3,4);return Wl(parseInt($+$,16),parseInt(Se+Se,16),parseInt(rt+rt,16),parseInt(Dt+Dt,16)/255)}if(N.value.length===6){var $=N.value.substring(0,2),Se=N.value.substring(2,4),rt=N.value.substring(4,6);return Wl(parseInt($,16),parseInt(Se,16),parseInt(rt,16),1)}if(N.value.length===8){var $=N.value.substring(0,2),Se=N.value.substring(2,4),rt=N.value.substring(4,6),Dt=N.value.substring(6,8);return Wl(parseInt($,16),parseInt(Se,16),parseInt(rt,16),parseInt(Dt,16)/255)}}if(N.type===20){var yn=_n[N.value.toUpperCase()];if(typeof yn!="undefined")return yn}return _n.TRANSPARENT}},Ro=function(O){return(255&O)===0},ro=function(O){var N=255&O,X=255&O>>8,$=255&O>>16,Se=255&O>>24;return N<255?"rgba("+Se+","+$+","+X+","+N/255+")":"rgb("+Se+","+$+","+X+")"},Wl=function(O,N,X,$){return(O<<24|N<<16|X<<8|Math.round($*255)<<0)>>>0},Uh=function(O,N){if(O.type===17)return O.number;if(O.type===16){var X=N===3?1:255;return N===3?O.number/100*X:Math.round(O.number/100*X)}return 0},Yu=function(O,N){var X=N.filter(Bl);if(X.length===3){var $=X.map(Uh),Se=$[0],rt=$[1],Dt=$[2];return Wl(Se,rt,Dt,1)}if(X.length===4){var yn=X.map(Uh),Se=yn[0],rt=yn[1],Dt=yn[2],mn=yn[3];return Wl(Se,rt,Dt,mn)}return 0};function to(O,N,X){return X<0&&(X+=1),X>=1&&(X-=1),X<1/6?(N-O)*X*6+O:X<1/2?N:X<2/3?(N-O)*6*(2/3-X)+O:O}var vd=function(O,N){var X=N.filter(Bl),$=X[0],Se=X[1],rt=X[2],Dt=X[3],yn=($.type===17?Hu($.number):Qr.parse(O,$))/(Math.PI*2),mn=al(Se)?Se.number/100:0,Er=al(rt)?rt.number/100:0,yr=typeof Dt!="undefined"&&al(Dt)?Yo(Dt,1):1;if(mn===0)return Wl(Er*255,Er*255,Er*255,1);var Wr=Er<=.5?Er*(mn+1):Er+mn-Er*mn,Ci=Er*2-Wr,ya=to(Ci,Wr,yn+1/3),Ls=to(Ci,Wr,yn),ha=to(Ci,Wr,yn-1/3);return Wl(ya*255,Ls*255,ha*255,yr)},Np={hsl:vd,hsla:vd,rgb:Yu,rgba:Yu},Vc=function(O,N){return wc.parse(O,jh.create(N).parseComponentValue())},_n={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Ud={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(O,N){return N.map(function(X){if(bl(X))switch(X.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},id={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},gu=function(O,N){var X=wc.parse(O,N[0]),$=N[1];return $&&al($)?{color:X,stop:$}:{color:X,stop:null}},Yh=function(O,N){var X=O[0],$=O[O.length-1];X.stop===null&&(X.stop=hl),$.stop===null&&($.stop=ku);for(var Se=[],rt=0,Dt=0;Dtrt?Se.push(mn):Se.push(rt),rt=mn}else Se.push(null)}for(var Er=null,Dt=0;DtDt.optimumDistance)?{optimumCorner:yn,optimumDistance:yr}:Dt},{optimumDistance:Se?1/0:-1/0,optimumCorner:null}).optimumCorner},Dh=function(O,N,X,$,Se){var rt=0,Dt=0;switch(O.size){case 0:O.shape===0?rt=Dt=Math.min(Math.abs(N),Math.abs(N-$),Math.abs(X),Math.abs(X-Se)):O.shape===1&&(rt=Math.min(Math.abs(N),Math.abs(N-$)),Dt=Math.min(Math.abs(X),Math.abs(X-Se)));break;case 2:if(O.shape===0)rt=Dt=Math.min(Rl(N,X),Rl(N,X-Se),Rl(N-$,X),Rl(N-$,X-Se));else if(O.shape===1){var yn=Math.min(Math.abs(X),Math.abs(X-Se))/Math.min(Math.abs(N),Math.abs(N-$)),mn=mu($,Se,N,X,!0),Er=mn[0],yr=mn[1];rt=Rl(Er-N,(yr-X)/yn),Dt=yn*rt}break;case 1:O.shape===0?rt=Dt=Math.max(Math.abs(N),Math.abs(N-$),Math.abs(X),Math.abs(X-Se)):O.shape===1&&(rt=Math.max(Math.abs(N),Math.abs(N-$)),Dt=Math.max(Math.abs(X),Math.abs(X-Se)));break;case 3:if(O.shape===0)rt=Dt=Math.max(Rl(N,X),Rl(N,X-Se),Rl(N-$,X),Rl(N-$,X-Se));else if(O.shape===1){var yn=Math.max(Math.abs(X),Math.abs(X-Se))/Math.max(Math.abs(N),Math.abs(N-$)),Wr=mu($,Se,N,X,!1),Er=Wr[0],yr=Wr[1];rt=Rl(Er-N,(yr-X)/yn),Dt=yn*rt}break}return Array.isArray(O.size)&&(rt=Yo(O.size[0],$),Dt=O.size.length===2?Yo(O.size[1],Se):rt),[rt,Dt]},hf=function(O,N){var X=Hu(180),$=[];return ac(N).forEach(function(Se,rt){if(rt===0){var Dt=Se[0];if(Dt.type===20&&Dt.value==="to"){X=Za(Se);return}else if(ri(Dt)){X=Qr.parse(O,Dt);return}}var yn=gu(O,Se);$.push(yn)}),{angle:X,stops:$,type:1}},Oh=function(O,N){var X=Hu(180),$=[];return ac(N).forEach(function(Se,rt){if(rt===0){var Dt=Se[0];if(Dt.type===20&&["top","left","right","bottom"].indexOf(Dt.value)!==-1){X=Za(Se);return}else if(ri(Dt)){X=(Qr.parse(O,Dt)+Hu(270))%Hu(360);return}}var yn=gu(O,Se);$.push(yn)}),{angle:X,stops:$,type:1}},kf=function(O,N){var X=Hu(180),$=[],Se=1,rt=0,Dt=3,yn=[];return ac(N).forEach(function(mn,Er){var yr=mn[0];if(Er===0){if(bl(yr)&&yr.value==="linear"){Se=1;return}else if(bl(yr)&&yr.value==="radial"){Se=2;return}}if(yr.type===18){if(yr.name==="from"){var Wr=wc.parse(O,yr.values[0]);$.push({stop:hl,color:Wr})}else if(yr.name==="to"){var Wr=wc.parse(O,yr.values[0]);$.push({stop:ku,color:Wr})}else if(yr.name==="color-stop"){var Ci=yr.values.filter(Bl);if(Ci.length===2){var Wr=wc.parse(O,Ci[1]),ya=Ci[0];Xc(ya)&&$.push({stop:{type:16,number:ya.number*100,flags:ya.flags},color:Wr})}}}}),Se===1?{angle:(X+Hu(180))%Hu(360),stops:$,type:Se}:{size:Dt,shape:rt,stops:$,position:yn,type:Se}},Vf="closest-side",ff="farthest-side",cu="closest-corner",Ze="farthest-corner",xe="circle",de="ellipse",je="cover",ce="contain",kt=function(O,N){var X=0,$=3,Se=[],rt=[];return ac(N).forEach(function(Dt,yn){var mn=!0;if(yn===0){var Er=!1;mn=Dt.reduce(function(Wr,Ci){if(Er)if(bl(Ci))switch(Ci.value){case"center":return rt.push(bc),Wr;case"top":case"left":return rt.push(hl),Wr;case"right":case"bottom":return rt.push(ku),Wr}else(al(Ci)||Ou(Ci))&&rt.push(Ci);else if(bl(Ci))switch(Ci.value){case xe:return X=0,!1;case de:return X=1,!1;case"at":return Er=!0,!1;case Vf:return $=0,!1;case je:case ff:return $=1,!1;case ce:case cu:return $=2,!1;case Ze:return $=3,!1}else if(Ou(Ci)||al(Ci))return Array.isArray($)||($=[]),$.push(Ci),!1;return Wr},mn)}if(mn){var yr=gu(O,Dt);Se.push(yr)}}),{size:$,shape:X,stops:Se,position:rt,type:2}},Qt=function(O,N){var X=0,$=3,Se=[],rt=[];return ac(N).forEach(function(Dt,yn){var mn=!0;if(yn===0?mn=Dt.reduce(function(yr,Wr){if(bl(Wr))switch(Wr.value){case"center":return rt.push(bc),!1;case"top":case"left":return rt.push(hl),!1;case"right":case"bottom":return rt.push(ku),!1}else if(al(Wr)||Ou(Wr))return rt.push(Wr),!1;return yr},mn):yn===1&&(mn=Dt.reduce(function(yr,Wr){if(bl(Wr))switch(Wr.value){case xe:return X=0,!1;case de:return X=1,!1;case ce:case Vf:return $=0,!1;case ff:return $=1,!1;case cu:return $=2,!1;case je:case Ze:return $=3,!1}else if(Ou(Wr)||al(Wr))return Array.isArray($)||($=[]),$.push(Wr),!1;return yr},mn)),mn){var Er=gu(O,Dt);Se.push(Er)}}),{size:$,shape:X,stops:Se,position:rt,type:2}},vn=function(O){return O.type===1},Wn=function(O){return O.type===2},mr={name:"image",parse:function(O,N){if(N.type===22){var X={url:N.value,type:0};return O.cache.addImage(N.value),X}if(N.type===18){var $=Mr[N.name];if(typeof $=="undefined")throw new Error('Attempting to parse an unsupported image function "'+N.name+'"');return $(O,N.values)}throw new Error("Unsupported image type "+N.type)}};function Tr(O){return!(O.type===20&&O.value==="none")&&(O.type!==18||!!Mr[O.name])}var Mr={"linear-gradient":hf,"-moz-linear-gradient":Oh,"-ms-linear-gradient":Oh,"-o-linear-gradient":Oh,"-webkit-linear-gradient":Oh,"radial-gradient":kt,"-moz-radial-gradient":Qt,"-ms-radial-gradient":Qt,"-o-radial-gradient":Qt,"-webkit-radial-gradient":Qt,"-webkit-gradient":kf},wr={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(O,N){if(N.length===0)return[];var X=N[0];return X.type===20&&X.value==="none"?[]:N.filter(function($){return Bl($)&&Tr($)}).map(function($){return mr.parse(O,$)})}},Gr={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(O,N){return N.map(function(X){if(bl(X))switch(X.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},yi={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(O,N){return ac(N).map(function(X){return X.filter(al)}).map(ul)}},Or={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(O,N){return ac(N).map(function(X){return X.filter(bl).map(function($){return $.value}).join(" ")}).map(Ti)}},Ti=function(O){switch(O){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},Wi;(function(O){O.AUTO="auto",O.CONTAIN="contain",O.COVER="cover"})(Wi||(Wi={}));var Cs={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(O,N){return ac(N).map(function(X){return X.filter(Bs)})}},Bs=function(O){return bl(O)||al(O)},Zs=function(O){return{name:"border-"+O+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},ea=Zs("top"),ss=Zs("right"),ts=Zs("bottom"),La=Zs("left"),ra=function(O){return{name:"border-radius-"+O,initialValue:"0 0",prefix:!1,type:1,parse:function(N,X){return ul(X.filter(al))}}},co=ra("top-left"),yo=ra("top-right"),le=ra("bottom-right"),se=ra("bottom-left"),q=function(O){return{name:"border-"+O+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(N,X){switch(X){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},te=q("top"),Ae=q("right"),Pe=q("bottom"),Qe=q("left"),He=function(O){return{name:"border-"+O+"-width",initialValue:"0",type:0,prefix:!1,parse:function(N,X){return Pc(X)?X.number:0}}},qe=He("top"),yt=He("right"),qt=He("bottom"),on=He("left"),pn={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Vn={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(O,N){switch(N){case"rtl":return 1;case"ltr":default:return 0}}},Jn={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(O,N){return N.filter(bl).reduce(function(X,$){return X|Ur($.value)},0)}},Ur=function(O){switch(O){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},Sr={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(O,N){switch(N){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Ai={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(O,N){return N.type===20&&N.value==="normal"?0:N.type===17||N.type===15?N.number:0}},hi;(function(O){O.NORMAL="normal",O.STRICT="strict"})(hi||(hi={}));var _i={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(O,N){switch(N){case"strict":return hi.STRICT;case"normal":default:return hi.NORMAL}}},Ii={name:"line-height",initialValue:"normal",prefix:!1,type:4},_s=function(O,N){return bl(O)&&O.value==="normal"?1.2*N:O.type===17?N*O.number:al(O)?Yo(O,N):N},Ns={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(O,N){return N.type===20&&N.value==="none"?null:mr.parse(O,N)}},Es={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(O,N){switch(N){case"inside":return 0;case"outside":default:return 1}}},da={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(O,N){switch(N){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},ua=function(O){return{name:"margin-"+O,initialValue:"0",prefix:!1,type:4}},Io=ua("top"),io=ua("right"),so=ua("bottom"),ti=ua("left"),uo={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(O,N){return N.filter(bl).map(function(X){switch(X.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},Ra={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(O,N){switch(N){case"break-word":return"break-word";case"normal":default:return"normal"}}},qo=function(O){return{name:"padding-"+O,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},ec=qo("top"),ga=qo("right"),fl=qo("bottom"),po=qo("left"),Sc={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(O,N){switch(N){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},ps={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(O,N){switch(N){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},xo={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(O,N){return N.length===1&&Hi(N[0],"none")?[]:ac(N).map(function(X){for(var $={color:_n.TRANSPARENT,offsetX:hl,offsetY:hl,blur:hl},Se=0,rt=0;rt1?1:0],this.overflowWrap=li(N,Ra,X.overflowWrap),this.paddingTop=li(N,ec,X.paddingTop),this.paddingRight=li(N,ga,X.paddingRight),this.paddingBottom=li(N,fl,X.paddingBottom),this.paddingLeft=li(N,po,X.paddingLeft),this.paintOrder=li(N,Mf,X.paintOrder),this.position=li(N,ps,X.position),this.textAlign=li(N,Sc,X.textAlign),this.textDecorationColor=li(N,ad,($=X.textDecorationColor)!==null&&$!==void 0?$:X.color),this.textDecorationLine=li(N,uA,(Se=X.textDecorationLine)!==null&&Se!==void 0?Se:X.textDecoration),this.textShadow=li(N,xo,X.textShadow),this.textTransform=li(N,lc,X.textTransform),this.transform=li(N,Ic,X.transform),this.transformOrigin=li(N,no,X.transformOrigin),this.visibility=li(N,Hf,X.visibility),this.webkitTextStrokeColor=li(N,Kl,X.webkitTextStrokeColor),this.webkitTextStrokeWidth=li(N,WA,X.webkitTextStrokeWidth),this.wordBreak=li(N,qu,X.wordBreak),this.zIndex=li(N,zu,X.zIndex)}return O.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},O.prototype.isTransparent=function(){return Ro(this.backgroundColor)},O.prototype.isTransformed=function(){return this.transform!==null},O.prototype.isPositioned=function(){return this.position!==0},O.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},O.prototype.isFloating=function(){return this.float!==0},O.prototype.isInlineLevel=function(){return Zl(this.display,4)||Zl(this.display,33554432)||Zl(this.display,268435456)||Zl(this.display,536870912)||Zl(this.display,67108864)||Zl(this.display,134217728)},O}(),hA=function(){function O(N,X){this.content=li(N,Ju,X.content),this.quotes=li(N,uu,X.quotes)}return O}(),vh=function(){function O(N,X){this.counterIncrement=li(N,Gf,X.counterIncrement),this.counterReset=li(N,Fl,X.counterReset)}return O}(),li=function(O,N,X){var $=new uf,Se=X!==null&&typeof X!="undefined"?X.toString():N.initialValue;$.write(Se);var rt=new jh($.read());switch(N.type){case 2:var Dt=rt.parseComponentValue();return N.parse(O,bl(Dt)?Dt.value:N.initialValue);case 0:return N.parse(O,rt.parseComponentValue());case 1:return N.parse(O,rt.parseComponentValues());case 4:return rt.parseComponentValue();case 3:switch(N.format){case"angle":return Qr.parse(O,rt.parseComponentValue());case"color":return wc.parse(O,rt.parseComponentValue());case"image":return mr.parse(O,rt.parseComponentValue());case"length":var yn=rt.parseComponentValue();return Ou(yn)?yn:hl;case"length-percentage":var mn=rt.parseComponentValue();return al(mn)?mn:hl;case"time":return df.parse(O,rt.parseComponentValue())}break}},$l="data-html2canvas-debug",Od=function(O){var N=O.getAttribute($l);switch(N){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},Nc=function(O,N){var X=Od(O);return X===1||N===X},Gc=function(){function O(N,X){if(this.context=N,this.textNodes=[],this.elements=[],this.flags=0,Nc(X,3))debugger;this.styles=new Tf(N,window.getComputedStyle(X,null)),Mg(X)&&(this.styles.animationDuration.some(function($){return $>0})&&(X.style.animationDuration="0s"),this.styles.transform!==null&&(X.style.transform="none")),this.bounds=F(this.context,X),Nc(X,4)&&(this.flags|=16)}return O}(),Af="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",ym="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ac=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),kd=0;kd>4,yr[Se++]=(Dt&15)<<4|yn>>2,yr[Se++]=(yn&3)<<6|mn&63;return Er},Xl=function(O){for(var N=O.length,X=[],$=0;$>ld,Hy=1<>ld,xg=Lp+E0,M0=xg,Pa=32,kh=M0+Pa,ef=65536>>jl,_m=1<=0){if(N<55296||N>56319&&N<=65535)return X=this.index[N>>ld],X=(X<>ld)],X=(X<>jl),X=this.index[X],X+=N>>ld&KA,X=this.index[X],X=(X<=55296&&Se<=56319&&X<$){var rt=O.charCodeAt(X++);(rt&64512)===56320?N.push(((Se&1023)<<10)+(rt&1023)+65536):(N.push(Se),X--)}else N.push(Se)}return N},B0=function(){for(var O=[],N=0;N>10)+55296,Dt%1024+56320)),(Se+1===X||$.length>16384)&&(rt+=String.fromCharCode.apply(String,$),$.length=0)}return rt},R0=nh(Af),zf="\xD7",JA="\xF7",tf=function(O){return R0.get(O)},AA=function(O,N,X){var $=X-2,Se=N[$],rt=N[X-1],Dt=N[X];if(rt===XA&&Dt===jA)return zf;if(rt===XA||rt===jA||rt===YA||Dt===XA||Dt===jA||Dt===YA)return JA;if(rt===bm&&[bm,qA,C0,Dp].indexOf(Dt)!==-1||(rt===C0||rt===qA)&&(Dt===qA||Dt===Mc)||(rt===Dp||rt===Mc)&&Dt===Mc||Dt===yd||Dt===Up||Dt===_g||rt===T0)return zf;if(rt===yd&&Dt===dA){for(;Se===Up;)Se=N[--$];if(Se===dA)return zf}if(rt===yh&&Dt===yh){for(var yn=0;Se===yh;)yn++,Se=N[--$];if(yn%2===0)return zf}return JA},cd=function(O){var N=Pv(O),X=N.length,$=0,Se=0,rt=N.map(tf);return{next:function(){if($>=X)return{done:!0,value:null};for(var Dt=zf;$Dt.x||yr.y>Dt.y;return Dt=yr,Er===0?!0:Wr});return O.body.removeChild(N),yn},ep=function(){return typeof new Image().crossOrigin!="undefined"},tp=function(){return typeof new XMLHttpRequest().responseType=="string"},bg=function(O){var N=new Image,X=O.createElement("canvas"),$=X.getContext("2d");if(!$)return!1;N.src="data:image/svg+xml,";try{$.drawImage(N,0,0),X.toDataURL()}catch(Se){return!1}return!0},pf=function(O){return O[0]===0&&O[1]===255&&O[2]===0&&O[3]===255},Sm=function(O){var N=O.createElement("canvas"),X=100;N.width=X,N.height=X;var $=N.getContext("2d");if(!$)return Promise.reject(!1);$.fillStyle="rgb(0, 255, 0)",$.fillRect(0,0,X,X);var Se=new Image,rt=N.toDataURL();Se.src=rt;var Dt=xd(X,X,0,0,Se);return $.fillStyle="red",$.fillRect(0,0,X,X),P0(Dt).then(function(yn){$.drawImage(yn,0,0);var mn=$.getImageData(0,0,X,X).data;$.fillStyle="red",$.fillRect(0,0,X,X);var Er=O.createElement("div");return Er.style.backgroundImage="url("+rt+")",Er.style.height=X+"px",pf(mn)?P0(xd(X,X,0,0,Er)):Promise.reject(!1)}).then(function(yn){return $.drawImage(yn,0,0),pf($.getImageData(0,0,X,X).data)}).catch(function(){return!1})},xd=function(O,N,X,$,Se){var rt="http://www.w3.org/2000/svg",Dt=document.createElementNS(rt,"svg"),yn=document.createElementNS(rt,"foreignObject");return Dt.setAttributeNS(null,"width",O.toString()),Dt.setAttributeNS(null,"height",N.toString()),yn.setAttributeNS(null,"width","100%"),yn.setAttributeNS(null,"height","100%"),yn.setAttributeNS(null,"x",X.toString()),yn.setAttributeNS(null,"y",$.toString()),yn.setAttributeNS(null,"externalResourcesRequired","true"),Dt.appendChild(yn),yn.appendChild(Se),Dt},P0=function(O){return new Promise(function(N,X){var $=new Image;$.onload=function(){return N($)},$.onerror=X,$.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(O))})},Mo={get SUPPORT_RANGE_BOUNDS(){var O=wm(document);return Object.defineProperty(Mo,"SUPPORT_RANGE_BOUNDS",{value:O}),O},get SUPPORT_WORD_BREAKING(){var O=Mo.SUPPORT_RANGE_BOUNDS&&Ko(document);return Object.defineProperty(Mo,"SUPPORT_WORD_BREAKING",{value:O}),O},get SUPPORT_SVG_DRAWING(){var O=bg(document);return Object.defineProperty(Mo,"SUPPORT_SVG_DRAWING",{value:O}),O},get SUPPORT_FOREIGNOBJECT_DRAWING(){var O=typeof Array.from=="function"&&typeof window.fetch=="function"?Sm(document):Promise.resolve(!1);return Object.defineProperty(Mo,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:O}),O},get SUPPORT_CORS_IMAGES(){var O=ep();return Object.defineProperty(Mo,"SUPPORT_CORS_IMAGES",{value:O}),O},get SUPPORT_RESPONSE_TYPE(){var O=tp();return Object.defineProperty(Mo,"SUPPORT_RESPONSE_TYPE",{value:O}),O},get SUPPORT_CORS_XHR(){var O="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Mo,"SUPPORT_CORS_XHR",{value:O}),O},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var O=!!(typeof Intl!="undefined"&&Intl.Segmenter);return Object.defineProperty(Mo,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:O}),O}},Th=function(){function O(N,X){this.text=N,this.bounds=X}return O}(),Em=function(O,N,X,$){var Se=Mm(N,X),rt=[],Dt=0;return Se.forEach(function(yn){if(X.textDecorationLine.length||yn.trim().length>0)if(Mo.SUPPORT_RANGE_BOUNDS){var mn=Vd($,Dt,yn.length).getClientRects();if(mn.length>1){var Er=_h(yn),yr=0;Er.forEach(function(Ci){rt.push(new Th(Ci,T.fromDOMRectList(O,Vd($,yr+Dt,Ci.length).getClientRects()))),yr+=Ci.length})}else rt.push(new Th(yn,T.fromDOMRectList(O,mn)))}else{var Wr=$.splitText(yn.length);rt.push(new Th(yn,Op(O,$))),$=Wr}else Mo.SUPPORT_RANGE_BOUNDS||($=$.splitText(yn.length));Dt+=yn.length}),rt},Op=function(O,N){var X=N.ownerDocument;if(X){var $=X.createElement("html2canvaswrapper");$.appendChild(N.cloneNode(!0));var Se=N.parentNode;if(Se){Se.replaceChild($,N);var rt=F(O,$);return $.firstChild&&Se.replaceChild($.firstChild,$),rt}}return T.EMPTY},Vd=function(O,N,X){var $=O.ownerDocument;if(!$)throw new Error("Node has no owner document");var Se=$.createRange();return Se.setStart(O,N),Se.setEnd(O,N+X),Se},_h=function(O){if(Mo.SUPPORT_NATIVE_TEXT_SEGMENTATION){var N=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(N.segment(O)).map(function(X){return X.segment})}return xh(O)},pA=function(O,N){if(Mo.SUPPORT_NATIVE_TEXT_SEGMENTATION){var X=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(X.segment(O)).map(function($){return $.segment})}return kp(O,N)},Mm=function(O,N){return N.letterSpacing!==0?_h(O):pA(O,N)},Cf=[32,160,4961,65792,65793,4153,4241],kp=function(O,N){for(var X=gt(O,{lineBreak:N.lineBreak,wordBreak:N.overflowWrap==="break-word"?"break-word":N.wordBreak}),$=[],Se,rt=function(){if(Se.value){var Dt=Se.value.slice(),yn=U(Dt),mn="";yn.forEach(function(Er){Cf.indexOf(Er)===-1?mn+=Q(Er):(mn.length&&$.push(mn),$.push(Q(Er)),mn="")}),mn.length&&$.push(mn)}};!(Se=X.next()).done;)rt();return $},Bf=function(){function O(N,X,$){this.text=np(X.data,$.textTransform),this.textBounds=Em(N,this.text,$,X)}return O}(),np=function(O,N){switch(N){case 1:return O.toLowerCase();case 3:return O.replace(rp,Vp);case 2:return O.toUpperCase();default:return O}},rp=/(^|\s|:|-|\(|\))([a-z])/g,Vp=function(O,N,X){return O.length>0?N+X.toUpperCase():O},gA=function(O){_(N,O);function N(X,$){var Se=O.call(this,X,$)||this;return Se.src=$.currentSrc||$.src,Se.intrinsicWidth=$.naturalWidth,Se.intrinsicHeight=$.naturalHeight,Se.context.cache.addImage(Se.src),Se}return N}(Gc),Qf=function(O){_(N,O);function N(X,$){var Se=O.call(this,X,$)||this;return Se.canvas=$,Se.intrinsicWidth=$.width,Se.intrinsicHeight=$.height,Se}return N}(Gc),_d=function(O){_(N,O);function N(X,$){var Se=O.call(this,X,$)||this,rt=new XMLSerializer,Dt=F(X,$);return $.setAttribute("width",Dt.width+"px"),$.setAttribute("height",Dt.height+"px"),Se.svg="data:image/svg+xml,"+encodeURIComponent(rt.serializeToString($)),Se.intrinsicWidth=$.width.baseVal.value,Se.intrinsicHeight=$.height.baseVal.value,Se.context.cache.addImage(Se.svg),Se}return N}(Gc),ip=function(O){_(N,O);function N(X,$){var Se=O.call(this,X,$)||this;return Se.value=$.value,Se}return N}(Gc),Hp=function(O){_(N,O);function N(X,$){var Se=O.call(this,X,$)||this;return Se.start=$.start,Se.reversed=typeof $.reversed=="boolean"&&$.reversed===!0,Se}return N}(Gc),sp=[{type:15,flags:0,unit:"px",number:3}],I0=[{type:16,flags:0,number:50}],N0=function(O){return O.width>O.height?new T(O.left+(O.width-O.height)/2,O.top,O.height,O.height):O.width0)X.textNodes.push(new Bf(O,Se,X.styles));else if(mA(Se))if(Lv(Se)&&Se.assignedNodes)Se.assignedNodes().forEach(function(yn){return ap(O,yn,X,$)});else{var Dt=Rm(O,Se);Dt.styles.isVisible()&&(ns(Se,Dt,$)?Dt.flags|=4:F0(Dt.styles)&&(Dt.flags|=2),Sg.indexOf(Se.tagName)!==-1&&(Dt.flags|=8),X.elements.push(Dt),Se.slot,Se.shadowRoot?ap(O,Se.shadowRoot,Dt,$):!Gh(Se)&&!pc(Se)&&!Wf(Se)&&ap(O,Se,Dt,$))}},Rm=function(O,N){return Nm(N)?new gA(O,N):Hh(N)?new Qf(O,N):pc(N)?new _d(O,N):mf(N)?new ip(O,N):Gd(N)?new Hp(O,N):Pm(N)?new wg(O,N):Wf(N)?new Cm(O,N):Gh(N)?new L0(O,N):gc(N)?new Bm(O,N):new Gc(O,N)},Eg=function(O,N){var X=Rm(O,N);return X.flags|=4,ap(O,N,X,X),X},ns=function(O,N,X){return N.styles.isPositionedWithZIndex()||N.styles.opacity<1||N.styles.isTransformed()||Im(O)&&X.styles.isTransparent()},F0=function(O){return O.isPositioned()||O.isFloating()},gf=function(O){return O.nodeType===Node.TEXT_NODE},mA=function(O){return O.nodeType===Node.ELEMENT_NODE},Mg=function(O){return mA(O)&&typeof O.style!="undefined"&&!zp(O)},zp=function(O){return typeof O.className=="object"},mf=function(O){return O.tagName==="LI"},Gd=function(O){return O.tagName==="OL"},Pm=function(O){return O.tagName==="INPUT"},Tg=function(O){return O.tagName==="HTML"},pc=function(O){return O.tagName==="svg"},Im=function(O){return O.tagName==="BODY"},Hh=function(O){return O.tagName==="CANVAS"},hd=function(O){return O.tagName==="VIDEO"},Nm=function(O){return O.tagName==="IMG"},gc=function(O){return O.tagName==="IFRAME"},Cg=function(O){return O.tagName==="STYLE"},Nv=function(O){return O.tagName==="SCRIPT"},Gh=function(O){return O.tagName==="TEXTAREA"},Wf=function(O){return O.tagName==="SELECT"},Lv=function(O){return O.tagName==="SLOT"},zd=function(O){return O.tagName.indexOf("-")>0},Qp=function(){function O(){this.counters={}}return O.prototype.getCounterValue=function(N){var X=this.counters[N];return X&&X.length?X[X.length-1]:1},O.prototype.getCounterValues=function(N){var X=this.counters[N];return X||[]},O.prototype.pop=function(N){var X=this;N.forEach(function($){return X.counters[$].pop()})},O.prototype.parse=function(N){var X=this,$=N.counterIncrement,Se=N.counterReset,rt=!0;$!==null&&$.forEach(function(yn){var mn=X.counters[yn.counter];mn&&yn.increment!==0&&(rt=!1,mn.length||mn.push(1),mn[Math.max(0,mn.length-1)]+=yn.increment)});var Dt=[];return rt&&Se.forEach(function(yn){var mn=X.counters[yn.counter];Dt.push(yn.counter),mn||(mn=X.counters[yn.counter]=[]),mn.push(yn.reset)}),Dt},O}(),Rf={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Pf={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u0554","\u0553","\u0552","\u0551","\u0550","\u054F","\u054E","\u054D","\u054C","\u054B","\u054A","\u0549","\u0548","\u0547","\u0546","\u0545","\u0544","\u0543","\u0542","\u0541","\u0540","\u053F","\u053E","\u053D","\u053C","\u053B","\u053A","\u0539","\u0538","\u0537","\u0536","\u0535","\u0534","\u0533","\u0532","\u0531"]},Lm={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["\u05D9\u05F3","\u05D8\u05F3","\u05D7\u05F3","\u05D6\u05F3","\u05D5\u05F3","\u05D4\u05F3","\u05D3\u05F3","\u05D2\u05F3","\u05D1\u05F3","\u05D0\u05F3","\u05EA","\u05E9","\u05E8","\u05E7","\u05E6","\u05E4","\u05E2","\u05E1","\u05E0","\u05DE","\u05DC","\u05DB","\u05D9\u05D8","\u05D9\u05D7","\u05D9\u05D6","\u05D8\u05D6","\u05D8\u05D5","\u05D9","\u05D8","\u05D7","\u05D6","\u05D5","\u05D4","\u05D3","\u05D2","\u05D1","\u05D0"]},Bg={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u10F5","\u10F0","\u10EF","\u10F4","\u10EE","\u10ED","\u10EC","\u10EB","\u10EA","\u10E9","\u10E8","\u10E7","\u10E6","\u10E5","\u10E4","\u10F3","\u10E2","\u10E1","\u10E0","\u10DF","\u10DE","\u10DD","\u10F2","\u10DC","\u10DB","\u10DA","\u10D9","\u10D8","\u10D7","\u10F1","\u10D6","\u10D5","\u10D4","\u10D3","\u10D2","\u10D1","\u10D0"]},Wp=function(O,N,X,$,Se,rt){return OX?Iu(O,Se,rt.length>0):$.integers.reduce(function(Dt,yn,mn){for(;O>=yn;)O-=yn,Dt+=$.values[mn];return Dt},"")+rt},Fm=function(O,N,X,$){var Se="";do X||O--,Se=$(O)+Se,O/=N;while(O*N>=N);return Se},Pu=function(O,N,X,$,Se){var rt=X-N+1;return(O<0?"-":"")+(Fm(Math.abs(O),rt,$,function(Dt){return Q(Math.floor(Dt%rt)+N)})+Se)},hu=function(O,N,X){X===void 0&&(X=". ");var $=N.length;return Fm(Math.abs(O),$,!1,function(Se){return N[Math.floor(Se%$)]})+X},Zp=1,fd=2,bd=4,vA=8,bh=function(O,N,X,$,Se,rt){if(O<-9999||O>9999)return Iu(O,4,Se.length>0);var Dt=Math.abs(O),yn=Se;if(Dt===0)return N[0]+yn;for(var mn=0;Dt>0&&mn<=4;mn++){var Er=Dt%10;Er===0&&Zl(rt,Zp)&&yn!==""?yn=N[Er]+yn:Er>1||Er===1&&mn===0||Er===1&&mn===1&&Zl(rt,fd)||Er===1&&mn===1&&Zl(rt,bd)&&O>100||Er===1&&mn>1&&Zl(rt,vA)?yn=N[Er]+(mn>0?X[mn-1]:"")+yn:Er===1&&mn>0&&(yn=X[mn-1]+yn),Dt=Math.floor(Dt/10)}return(O<0?$:"")+yn},Kp="\u5341\u767E\u5343\u842C",U0="\u62FE\u4F70\u4EDF\u842C",D0="\u30DE\u30A4\u30CA\u30B9",$p="\uB9C8\uC774\uB108\uC2A4",Iu=function(O,N,X){var $=X?". ":"",Se=X?"\u3001":"",rt=X?", ":"",Dt=X?" ":"";switch(N){case 0:return"\u2022"+Dt;case 1:return"\u25E6"+Dt;case 2:return"\u25FE"+Dt;case 5:var yn=Pu(O,48,57,!0,$);return yn.length<4?"0"+yn:yn;case 4:return hu(O,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",Se);case 6:return Wp(O,1,3999,Rf,3,$).toLowerCase();case 7:return Wp(O,1,3999,Rf,3,$);case 8:return Pu(O,945,969,!1,$);case 9:return Pu(O,97,122,!1,$);case 10:return Pu(O,65,90,!1,$);case 11:return Pu(O,1632,1641,!0,$);case 12:case 49:return Wp(O,1,9999,Pf,3,$);case 35:return Wp(O,1,9999,Pf,3,$).toLowerCase();case 13:return Pu(O,2534,2543,!0,$);case 14:case 30:return Pu(O,6112,6121,!0,$);case 15:return hu(O,"\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5",Se);case 16:return hu(O,"\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678",Se);case 17:case 48:return bh(O,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",Kp,"\u8CA0",Se,fd|bd|vA);case 47:return bh(O,"\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396",U0,"\u8CA0",Se,Zp|fd|bd|vA);case 42:return bh(O,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",Kp,"\u8D1F",Se,fd|bd|vA);case 41:return bh(O,"\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396",U0,"\u8D1F",Se,Zp|fd|bd|vA);case 26:return bh(O,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u4E07",D0,Se,0);case 25:return bh(O,"\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343\u4E07",D0,Se,Zp|fd|bd);case 31:return bh(O,"\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C","\uC2ED\uBC31\uCC9C\uB9CC",$p,rt,Zp|fd|bd);case 33:return bh(O,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u842C",$p,rt,0);case 32:return bh(O,"\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343",$p,rt,Zp|fd|bd);case 18:return Pu(O,2406,2415,!0,$);case 20:return Wp(O,1,19999,Bg,3,$);case 21:return Pu(O,2790,2799,!0,$);case 22:return Pu(O,2662,2671,!0,$);case 22:return Wp(O,1,10999,Lm,3,$);case 23:return hu(O,"\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093");case 24:return hu(O,"\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059");case 27:return Pu(O,3302,3311,!0,$);case 28:return hu(O,"\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3",Se);case 29:return hu(O,"\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9",Se);case 34:return Pu(O,3792,3801,!0,$);case 37:return Pu(O,6160,6169,!0,$);case 38:return Pu(O,4160,4169,!0,$);case 39:return Pu(O,2918,2927,!0,$);case 40:return Pu(O,1776,1785,!0,$);case 43:return Pu(O,3046,3055,!0,$);case 44:return Pu(O,3174,3183,!0,$);case 45:return Pu(O,3664,3673,!0,$);case 46:return Pu(O,3872,3881,!0,$);case 3:default:return Pu(O,48,57,!0,$)}},Rg="data-html2canvas-ignore",Fv=function(){function O(N,X,$){if(this.context=N,this.options=$,this.scrolledElements=[],this.referenceElement=X,this.counters=new Qp,this.quoteDepth=0,!X.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(X.ownerDocument.documentElement,!1)}return O.prototype.toIFrame=function(N,X){var $=this,Se=a_(N,X);if(!Se.contentWindow)return Promise.reject("Unable to find iframe window");var rt=N.defaultView.pageXOffset,Dt=N.defaultView.pageYOffset,yn=Se.contentWindow,mn=yn.document,Er=Um(Se).then(function(){return K($,void 0,void 0,function(){var yr,Wr;return H(this,function(Ci){switch(Ci.label){case 0:return this.scrolledElements.forEach(aa),yn&&(yn.scrollTo(X.left,X.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(yn.scrollY!==X.top||yn.scrollX!==X.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(yn.scrollX-X.left,yn.scrollY-X.top,0,0))),yr=this.options.onclone,Wr=this.clonedReferenceElement,typeof Wr=="undefined"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:mn.fonts&&mn.fonts.ready?[4,mn.fonts.ready]:[3,2];case 1:Ci.sent(),Ci.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,Pg(mn)]:[3,4];case 3:Ci.sent(),Ci.label=4;case 4:return typeof yr=="function"?[2,Promise.resolve().then(function(){return yr(mn,Wr)}).then(function(){return Se})]:[2,Se]}})})});return mn.open(),mn.write(op(document.doctype)+""),ol(this.referenceElement.ownerDocument,rt,Dt),mn.replaceChild(mn.adoptNode(this.documentElement),mn.documentElement),mn.close(),Er},O.prototype.createElementClone=function(N){if(Nc(N,2))debugger;if(Hh(N))return this.createCanvasClone(N);if(hd(N))return this.createVideoClone(N);if(Cg(N))return this.createStyleClone(N);var X=N.cloneNode(!1);return Nm(X)&&(Nm(N)&&N.currentSrc&&N.currentSrc!==N.src&&(X.src=N.currentSrc,X.srcset=""),X.loading==="lazy"&&(X.loading="eager")),zd(X)?this.createCustomElementClone(X):X},O.prototype.createCustomElementClone=function(N){var X=document.createElement("html2canvascustomelement");return wd(N.style,X),X},O.prototype.createStyleClone=function(N){try{var X=N.sheet;if(X&&X.cssRules){var $=[].slice.call(X.cssRules,0).reduce(function(rt,Dt){return Dt&&typeof Dt.cssText=="string"?rt+Dt.cssText:rt},""),Se=N.cloneNode(!1);return Se.textContent=$,Se}}catch(rt){if(this.context.logger.error("Unable to access cssRules property",rt),rt.name!=="SecurityError")throw rt}return N.cloneNode(!1)},O.prototype.createCanvasClone=function(N){var X;if(this.options.inlineImages&&N.ownerDocument){var $=N.ownerDocument.createElement("img");try{return $.src=N.toDataURL(),$}catch(Er){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",N)}}var Se=N.cloneNode(!1);try{Se.width=N.width,Se.height=N.height;var rt=N.getContext("2d"),Dt=Se.getContext("2d");if(Dt)if(!this.options.allowTaint&&rt)Dt.putImageData(rt.getImageData(0,0,N.width,N.height),0,0);else{var yn=(X=N.getContext("webgl2"))!==null&&X!==void 0?X:N.getContext("webgl");if(yn){var mn=yn.getContextAttributes();(mn==null?void 0:mn.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",N)}Dt.drawImage(N,0,0)}return Se}catch(Er){this.context.logger.info("Unable to clone canvas as it is tainted",N)}return Se},O.prototype.createVideoClone=function(N){var X=N.ownerDocument.createElement("canvas");X.width=N.offsetWidth,X.height=N.offsetHeight;var $=X.getContext("2d");try{return $&&($.drawImage(N,0,0,X.width,X.height),this.options.allowTaint||$.getImageData(0,0,X.width,X.height)),X}catch(rt){this.context.logger.info("Unable to clone video as it is tainted",N)}var Se=N.ownerDocument.createElement("canvas");return Se.width=N.offsetWidth,Se.height=N.offsetHeight,Se},O.prototype.appendChildNode=function(N,X,$){(!mA(X)||!Nv(X)&&!X.hasAttribute(Rg)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(X)))&&(!this.options.copyStyles||!mA(X)||!Cg(X))&&N.appendChild(this.cloneNode(X,$))},O.prototype.cloneChildNodes=function(N,X,$){for(var Se=this,rt=N.shadowRoot?N.shadowRoot.firstChild:N.firstChild;rt;rt=rt.nextSibling)if(mA(rt)&&Lv(rt)&&typeof rt.assignedNodes=="function"){var Dt=rt.assignedNodes();Dt.length&&Dt.forEach(function(yn){return Se.appendChildNode(X,yn,$)})}else this.appendChildNode(X,rt,$)},O.prototype.cloneNode=function(N,X){if(gf(N))return document.createTextNode(N.data);if(!N.ownerDocument)return N.cloneNode(!1);var $=N.ownerDocument.defaultView;if($&&mA(N)&&(Mg(N)||zp(N))){var Se=this.createElementClone(N);Se.style.transitionProperty="none";var rt=$.getComputedStyle(N),Dt=$.getComputedStyle(N,":before"),yn=$.getComputedStyle(N,":after");this.referenceElement===N&&Mg(Se)&&(this.clonedReferenceElement=Se),Im(Se)&&Gy(Se);var mn=this.counters.parse(new vh(this.context,rt)),Er=this.resolvePseudoContent(N,Se,Dt,Zf.BEFORE);zd(N)&&(X=!0),hd(N)||this.cloneChildNodes(N,Se,X),Er&&Se.insertBefore(Er,Se.firstChild);var yr=this.resolvePseudoContent(N,Se,yn,Zf.AFTER);return yr&&Se.appendChild(yr),this.counters.pop(mn),(rt&&(this.options.copyStyles||zp(N))&&!gc(N)||X)&&wd(rt,Se),(N.scrollTop!==0||N.scrollLeft!==0)&&this.scrolledElements.push([Se,N.scrollLeft,N.scrollTop]),(Gh(N)||Wf(N))&&(Gh(Se)||Wf(Se))&&(Se.value=N.value),Se}return N.cloneNode(!1)},O.prototype.resolvePseudoContent=function(N,X,$,Se){var rt=this;if($){var Dt=$.content,yn=X.ownerDocument;if(!(!yn||!Dt||Dt==="none"||Dt==="-moz-alt-content"||$.display==="none")){this.counters.parse(new vh(this.context,$));var mn=new hA(this.context,$),Er=yn.createElement("html2canvaspseudoelement");wd($,Er),mn.content.forEach(function(Wr){if(Wr.type===0)Er.appendChild(yn.createTextNode(Wr.value));else if(Wr.type===22){var Ci=yn.createElement("img");Ci.src=Wr.value,Ci.style.opacity="1",Er.appendChild(Ci)}else if(Wr.type===18){if(Wr.name==="attr"){var ya=Wr.values.filter(bl);ya.length&&Er.appendChild(yn.createTextNode(N.getAttribute(ya[0].value)||""))}else if(Wr.name==="counter"){var Ls=Wr.values.filter(Bl),ha=Ls[0],Oo=Ls[1];if(ha&&bl(ha)){var Ka=rt.counters.getCounterValue(ha.value),Da=Oo&&bl(Oo)?da.parse(rt.context,Oo.value):3;Er.appendChild(yn.createTextNode(Iu(Ka,Da,!1)))}}else if(Wr.name==="counters"){var Il=Wr.values.filter(Bl),ha=Il[0],So=Il[1],Oo=Il[2];if(ha&&bl(ha)){var _o=rt.counters.getCounterValues(ha.value),wa=Oo&&bl(Oo)?da.parse(rt.context,Oo.value):3,Sl=So&&So.type===0?So.value:"",$o=_o.map(function(yu){return Iu(yu,wa,!1)}).join(Sl);Er.appendChild(yn.createTextNode($o))}}}else if(Wr.type===20)switch(Wr.value){case"open-quote":Er.appendChild(yn.createTextNode(eh(mn.quotes,rt.quoteDepth++,!0)));break;case"close-quote":Er.appendChild(yn.createTextNode(eh(mn.quotes,--rt.quoteDepth,!1)));break;default:Er.appendChild(yn.createTextNode(Wr.value))}}),Er.className=Dm+" "+Xp;var yr=Se===Zf.BEFORE?" "+Dm:" "+Xp;return zp(X)?X.className.baseValue+=yr:X.className+=yr,Er}}},O.destroy=function(N){return N.parentNode?(N.parentNode.removeChild(N),!0):!1},O}(),Zf;(function(O){O[O.BEFORE=0]="BEFORE",O[O.AFTER=1]="AFTER"})(Zf||(Zf={}));var a_=function(O,N){var X=O.createElement("iframe");return X.className="html2canvas-container",X.style.visibility="hidden",X.style.position="fixed",X.style.left="-10000px",X.style.top="0px",X.style.border="0",X.width=N.width.toString(),X.height=N.height.toString(),X.scrolling="no",X.setAttribute(Rg,"true"),O.body.appendChild(X),X},zc=function(O){return new Promise(function(N){if(O.complete){N();return}if(!O.src){N();return}O.onload=N,O.onerror=N})},Pg=function(O){return Promise.all([].slice.call(O.images,0).map(zc))},Um=function(O){return new Promise(function(N,X){var $=O.contentWindow;if(!$)return X("No window assigned for iframe");var Se=$.document;$.onload=O.onload=function(){$.onload=O.onload=null;var rt=setInterval(function(){Se.body.childNodes.length>0&&Se.readyState==="complete"&&(clearInterval(rt),N(O))},50)}})},Uv=["all","d","content"],wd=function(O,N){for(var X=O.length-1;X>=0;X--){var $=O.item(X);Uv.indexOf($)===-1&&N.style.setProperty($,O.getPropertyValue($))}return N},op=function(O){var N="";return O&&(N+=""),N},ol=function(O,N,X){O&&O.defaultView&&(N!==O.defaultView.pageXOffset||X!==O.defaultView.pageYOffset)&&O.defaultView.scrollTo(N,X)},aa=function(O){var N=O[0],X=O[1],$=O[2];N.scrollLeft=X,N.scrollTop=$},Ch=":before",Ig=":after",Dm="___html2canvas___pseudoelement_before",Xp="___html2canvas___pseudoelement_after",Ng=`{ + content: "" !important; + display: none !important; +}`,Gy=function(O){O0(O,"."+Dm+Ch+Ng+` + .`+Xp+Ig+Ng)},O0=function(O,N){var X=O.ownerDocument;if(X){var $=X.createElement("style");$.textContent=N,O.appendChild($)}},Sd=function(){function O(){}return O.getOrigin=function(N){var X=O._link;return X?(X.href=N,X.href=X.href,X.protocol+X.hostname+X.port):"about:blank"},O.isSameOrigin=function(N){return O.getOrigin(N)===O._origin},O.setContext=function(N){O._link=N.document.createElement("a"),O._origin=O.getOrigin(N.location.href)},O._origin="about:blank",O}(),Bh=function(){function O(N,X){this.context=N,this._options=X,this._cache={}}return O.prototype.addImage=function(N){var X=Promise.resolve();return this.has(N)||(Md(N)||Om(N))&&(this._cache[N]=this.loadImage(N)).catch(function(){}),X},O.prototype.match=function(N){return this._cache[N]},O.prototype.loadImage=function(N){return K(this,void 0,void 0,function(){var X,$,Se,rt,Dt=this;return H(this,function(yn){switch(yn.label){case 0:return X=Sd.isSameOrigin(N),$=!km(N)&&this._options.useCORS===!0&&Mo.SUPPORT_CORS_IMAGES&&!X,Se=!km(N)&&!X&&!Md(N)&&typeof this._options.proxy=="string"&&Mo.SUPPORT_CORS_XHR&&!$,!X&&this._options.allowTaint===!1&&!km(N)&&!Md(N)&&!Se&&!$?[2]:(rt=N,Se?[4,this.proxy(rt)]:[3,2]);case 1:rt=yn.sent(),yn.label=2;case 2:return this.context.logger.debug("Added image "+N.substring(0,256)),[4,new Promise(function(mn,Er){var yr=new Image;yr.onload=function(){return mn(yr)},yr.onerror=Er,(lp(rt)||$)&&(yr.crossOrigin="anonymous"),yr.src=rt,yr.complete===!0&&setTimeout(function(){return mn(yr)},500),Dt._options.imageTimeout>0&&setTimeout(function(){return Er("Timed out ("+Dt._options.imageTimeout+"ms) loading image")},Dt._options.imageTimeout)})];case 3:return[2,yn.sent()]}})})},O.prototype.has=function(N){return typeof this._cache[N]!="undefined"},O.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},O.prototype.proxy=function(N){var X=this,$=this._options.proxy;if(!$)throw new Error("No proxy defined");var Se=N.substring(0,256);return new Promise(function(rt,Dt){var yn=Mo.SUPPORT_RESPONSE_TYPE?"blob":"text",mn=new XMLHttpRequest;mn.onload=function(){if(mn.status===200)if(yn==="text")rt(mn.response);else{var Wr=new FileReader;Wr.addEventListener("load",function(){return rt(Wr.result)},!1),Wr.addEventListener("error",function(Ci){return Dt(Ci)},!1),Wr.readAsDataURL(mn.response)}else Dt("Failed to proxy resource "+Se+" with status code "+mn.status)},mn.onerror=Dt;var Er=$.indexOf("?")>-1?"&":"?";if(mn.open("GET",""+$+Er+"url="+encodeURIComponent(N)+"&responseType="+yn),yn!=="text"&&mn instanceof XMLHttpRequest&&(mn.responseType=yn),X._options.imageTimeout){var yr=X._options.imageTimeout;mn.timeout=yr,mn.ontimeout=function(){return Dt("Timed out ("+yr+"ms) proxying "+Se)}}mn.send()})},O}(),Lg=/^data:image\/svg\+xml/i,Ed=/^data:image\/.*;base64,/i,k0=/^data:image\/.*/i,Om=function(O){return Mo.SUPPORT_SVG_DRAWING||!Fg(O)},km=function(O){return k0.test(O)},lp=function(O){return Ed.test(O)},Md=function(O){return O.substr(0,4)==="blob"},Fg=function(O){return O.substr(-3).toLowerCase()==="svg"||Lg.test(O)},Aa=function(){function O(N,X){this.type=0,this.x=N,this.y=X}return O.prototype.add=function(N,X){return new O(this.x+N,this.y+X)},O}(),Ug=function(O,N,X){return new Aa(O.x+(N.x-O.x)*X,O.y+(N.y-O.y)*X)},cp=function(){function O(N,X,$,Se){this.type=1,this.start=N,this.startControl=X,this.endControl=$,this.end=Se}return O.prototype.subdivide=function(N,X){var $=Ug(this.start,this.startControl,N),Se=Ug(this.startControl,this.endControl,N),rt=Ug(this.endControl,this.end,N),Dt=Ug($,Se,N),yn=Ug(Se,rt,N),mn=Ug(Dt,yn,N);return X?new O(this.start,$,Dt,mn):new O(mn,yn,rt,this.end)},O.prototype.add=function(N,X){return new O(this.start.add(N,X),this.startControl.add(N,X),this.endControl.add(N,X),this.end.add(N,X))},O.prototype.reverse=function(){return new O(this.end,this.endControl,this.startControl,this.start)},O}(),cc=function(O){return O.type===1},Dg=function(){function O(N){var X=N.styles,$=N.bounds,Se=oc(X.borderTopLeftRadius,$.width,$.height),rt=Se[0],Dt=Se[1],yn=oc(X.borderTopRightRadius,$.width,$.height),mn=yn[0],Er=yn[1],yr=oc(X.borderBottomRightRadius,$.width,$.height),Wr=yr[0],Ci=yr[1],ya=oc(X.borderBottomLeftRadius,$.width,$.height),Ls=ya[0],ha=ya[1],Oo=[];Oo.push((rt+mn)/$.width),Oo.push((Ls+Wr)/$.width),Oo.push((Dt+ha)/$.height),Oo.push((Er+Ci)/$.height);var Ka=Math.max.apply(Math,Oo);Ka>1&&(rt/=Ka,Dt/=Ka,mn/=Ka,Er/=Ka,Wr/=Ka,Ci/=Ka,Ls/=Ka,ha/=Ka);var Da=$.width-mn,Il=$.height-Ci,So=$.width-Wr,_o=$.height-ha,wa=X.borderTopWidth,Sl=X.borderRightWidth,$o=X.borderBottomWidth,To=X.borderLeftWidth,vu=Yo(X.paddingTop,N.bounds.width),yu=Yo(X.paddingRight,N.bounds.width),Qu=Yo(X.paddingBottom,N.bounds.width),Cc=Yo(X.paddingLeft,N.bounds.width);this.topLeftBorderDoubleOuterBox=rt>0||Dt>0?mc($.left+To/3,$.top+wa/3,rt-To/3,Dt-wa/3,Pl.TOP_LEFT):new Aa($.left+To/3,$.top+wa/3),this.topRightBorderDoubleOuterBox=rt>0||Dt>0?mc($.left+Da,$.top+wa/3,mn-Sl/3,Er-wa/3,Pl.TOP_RIGHT):new Aa($.left+$.width-Sl/3,$.top+wa/3),this.bottomRightBorderDoubleOuterBox=Wr>0||Ci>0?mc($.left+So,$.top+Il,Wr-Sl/3,Ci-$o/3,Pl.BOTTOM_RIGHT):new Aa($.left+$.width-Sl/3,$.top+$.height-$o/3),this.bottomLeftBorderDoubleOuterBox=Ls>0||ha>0?mc($.left+To/3,$.top+_o,Ls-To/3,ha-$o/3,Pl.BOTTOM_LEFT):new Aa($.left+To/3,$.top+$.height-$o/3),this.topLeftBorderDoubleInnerBox=rt>0||Dt>0?mc($.left+To*2/3,$.top+wa*2/3,rt-To*2/3,Dt-wa*2/3,Pl.TOP_LEFT):new Aa($.left+To*2/3,$.top+wa*2/3),this.topRightBorderDoubleInnerBox=rt>0||Dt>0?mc($.left+Da,$.top+wa*2/3,mn-Sl*2/3,Er-wa*2/3,Pl.TOP_RIGHT):new Aa($.left+$.width-Sl*2/3,$.top+wa*2/3),this.bottomRightBorderDoubleInnerBox=Wr>0||Ci>0?mc($.left+So,$.top+Il,Wr-Sl*2/3,Ci-$o*2/3,Pl.BOTTOM_RIGHT):new Aa($.left+$.width-Sl*2/3,$.top+$.height-$o*2/3),this.bottomLeftBorderDoubleInnerBox=Ls>0||ha>0?mc($.left+To*2/3,$.top+_o,Ls-To*2/3,ha-$o*2/3,Pl.BOTTOM_LEFT):new Aa($.left+To*2/3,$.top+$.height-$o*2/3),this.topLeftBorderStroke=rt>0||Dt>0?mc($.left+To/2,$.top+wa/2,rt-To/2,Dt-wa/2,Pl.TOP_LEFT):new Aa($.left+To/2,$.top+wa/2),this.topRightBorderStroke=rt>0||Dt>0?mc($.left+Da,$.top+wa/2,mn-Sl/2,Er-wa/2,Pl.TOP_RIGHT):new Aa($.left+$.width-Sl/2,$.top+wa/2),this.bottomRightBorderStroke=Wr>0||Ci>0?mc($.left+So,$.top+Il,Wr-Sl/2,Ci-$o/2,Pl.BOTTOM_RIGHT):new Aa($.left+$.width-Sl/2,$.top+$.height-$o/2),this.bottomLeftBorderStroke=Ls>0||ha>0?mc($.left+To/2,$.top+_o,Ls-To/2,ha-$o/2,Pl.BOTTOM_LEFT):new Aa($.left+To/2,$.top+$.height-$o/2),this.topLeftBorderBox=rt>0||Dt>0?mc($.left,$.top,rt,Dt,Pl.TOP_LEFT):new Aa($.left,$.top),this.topRightBorderBox=mn>0||Er>0?mc($.left+Da,$.top,mn,Er,Pl.TOP_RIGHT):new Aa($.left+$.width,$.top),this.bottomRightBorderBox=Wr>0||Ci>0?mc($.left+So,$.top+Il,Wr,Ci,Pl.BOTTOM_RIGHT):new Aa($.left+$.width,$.top+$.height),this.bottomLeftBorderBox=Ls>0||ha>0?mc($.left,$.top+_o,Ls,ha,Pl.BOTTOM_LEFT):new Aa($.left,$.top+$.height),this.topLeftPaddingBox=rt>0||Dt>0?mc($.left+To,$.top+wa,Math.max(0,rt-To),Math.max(0,Dt-wa),Pl.TOP_LEFT):new Aa($.left+To,$.top+wa),this.topRightPaddingBox=mn>0||Er>0?mc($.left+Math.min(Da,$.width-Sl),$.top+wa,Da>$.width+Sl?0:Math.max(0,mn-Sl),Math.max(0,Er-wa),Pl.TOP_RIGHT):new Aa($.left+$.width-Sl,$.top+wa),this.bottomRightPaddingBox=Wr>0||Ci>0?mc($.left+Math.min(So,$.width-To),$.top+Math.min(Il,$.height-$o),Math.max(0,Wr-Sl),Math.max(0,Ci-$o),Pl.BOTTOM_RIGHT):new Aa($.left+$.width-Sl,$.top+$.height-$o),this.bottomLeftPaddingBox=Ls>0||ha>0?mc($.left+To,$.top+Math.min(_o,$.height-$o),Math.max(0,Ls-To),Math.max(0,ha-$o),Pl.BOTTOM_LEFT):new Aa($.left+To,$.top+$.height-$o),this.topLeftContentBox=rt>0||Dt>0?mc($.left+To+Cc,$.top+wa+vu,Math.max(0,rt-(To+Cc)),Math.max(0,Dt-(wa+vu)),Pl.TOP_LEFT):new Aa($.left+To+Cc,$.top+wa+vu),this.topRightContentBox=mn>0||Er>0?mc($.left+Math.min(Da,$.width+To+Cc),$.top+wa+vu,Da>$.width+To+Cc?0:mn-To+Cc,Er-(wa+vu),Pl.TOP_RIGHT):new Aa($.left+$.width-(Sl+yu),$.top+wa+vu),this.bottomRightContentBox=Wr>0||Ci>0?mc($.left+Math.min(So,$.width-(To+Cc)),$.top+Math.min(Il,$.height+wa+vu),Math.max(0,Wr-(Sl+yu)),Ci-($o+Qu),Pl.BOTTOM_RIGHT):new Aa($.left+$.width-(Sl+yu),$.top+$.height-($o+Qu)),this.bottomLeftContentBox=Ls>0||ha>0?mc($.left+To+Cc,$.top+_o,Math.max(0,Ls-(To+Cc)),ha-($o+Qu),Pl.BOTTOM_LEFT):new Aa($.left+To+Cc,$.top+$.height-($o+Qu))}return O}(),Pl;(function(O){O[O.TOP_LEFT=0]="TOP_LEFT",O[O.TOP_RIGHT=1]="TOP_RIGHT",O[O.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",O[O.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(Pl||(Pl={}));var mc=function(O,N,X,$,Se){var rt=4*((Math.sqrt(2)-1)/3),Dt=X*rt,yn=$*rt,mn=O+X,Er=N+$;switch(Se){case Pl.TOP_LEFT:return new cp(new Aa(O,Er),new Aa(O,Er-yn),new Aa(mn-Dt,N),new Aa(mn,N));case Pl.TOP_RIGHT:return new cp(new Aa(O,N),new Aa(O+Dt,N),new Aa(mn,Er-yn),new Aa(mn,Er));case Pl.BOTTOM_RIGHT:return new cp(new Aa(mn,N),new Aa(mn,N+yn),new Aa(O+Dt,Er),new Aa(O,Er));case Pl.BOTTOM_LEFT:default:return new cp(new Aa(mn,Er),new Aa(mn-Dt,Er),new Aa(O,N+yn),new Aa(O,N))}},Nu=function(O){return[O.topLeftBorderBox,O.topRightBorderBox,O.bottomRightBorderBox,O.bottomLeftBorderBox]},Qd=function(O){return[O.topLeftContentBox,O.topRightContentBox,O.bottomRightContentBox,O.bottomLeftContentBox]},Kf=function(O){return[O.topLeftPaddingBox,O.topRightPaddingBox,O.bottomRightPaddingBox,O.bottomLeftPaddingBox]},Wd=function(){function O(N,X,$){this.offsetX=N,this.offsetY=X,this.matrix=$,this.type=0,this.target=6}return O}(),up=function(){function O(N,X){this.path=N,this.target=X,this.type=1}return O}(),Og=function(){function O(N){this.opacity=N,this.type=2,this.target=6}return O}(),kg=function(O){return O.type===0},jp=function(O){return O.type===1},hp=function(O){return O.type===2},V0=function(O,N){return O.length===N.length?O.some(function(X,$){return X===N[$]}):!1},$f=function(O,N,X,$,Se){return O.map(function(rt,Dt){switch(Dt){case 0:return rt.add(N,X);case 1:return rt.add(N+$,X);case 2:return rt.add(N+$,X+Se);case 3:return rt.add(N,X+Se)}return rt})},Yp=function(){function O(N){this.element=N,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return O}(),Vm=function(){function O(N,X){if(this.container=N,this.parent=X,this.effects=[],this.curves=new Dg(this.container),this.container.styles.opacity<1&&this.effects.push(new Og(this.container.styles.opacity)),this.container.styles.transform!==null){var $=this.container.bounds.left+this.container.styles.transformOrigin[0].number,Se=this.container.bounds.top+this.container.styles.transformOrigin[1].number,rt=this.container.styles.transform;this.effects.push(new Wd($,Se,rt))}if(this.container.styles.overflowX!==0){var Dt=Nu(this.curves),yn=Kf(this.curves);V0(Dt,yn)?this.effects.push(new up(Dt,6)):(this.effects.push(new up(Dt,2)),this.effects.push(new up(yn,4)))}}return O.prototype.getEffects=function(N){for(var X=[2,3].indexOf(this.container.styles.position)===-1,$=this.parent,Se=this.effects.slice(0);$;){var rt=$.effects.filter(function(mn){return!jp(mn)});if(X||$.container.styles.position!==0||!$.parent){if(Se.unshift.apply(Se,rt),X=[2,3].indexOf($.container.styles.position)===-1,$.container.styles.overflowX!==0){var Dt=Nu($.curves),yn=Kf($.curves);V0(Dt,yn)||Se.unshift(new up(yn,6))}}else Se.unshift.apply(Se,rt);$=$.parent}return Se.filter(function(mn){return Zl(mn.target,N)})},O}(),yA=function(O,N,X,$){O.container.elements.forEach(function(Se){var rt=Zl(Se.flags,4),Dt=Zl(Se.flags,2),yn=new Vm(Se,O);Zl(Se.styles.display,2048)&&$.push(yn);var mn=Zl(Se.flags,8)?[]:$;if(rt||Dt){var Er=rt||Se.styles.isPositioned()?X:N,yr=new Yp(yn);if(Se.styles.isPositioned()||Se.styles.opacity<1||Se.styles.isTransformed()){var Wr=Se.styles.zIndex.order;if(Wr<0){var Ci=0;Er.negativeZIndex.some(function(Ls,ha){return Wr>Ls.element.container.styles.zIndex.order?(Ci=ha,!1):Ci>0}),Er.negativeZIndex.splice(Ci,0,yr)}else if(Wr>0){var ya=0;Er.positiveZIndex.some(function(Ls,ha){return Wr>=Ls.element.container.styles.zIndex.order?(ya=ha+1,!1):ya>0}),Er.positiveZIndex.splice(ya,0,yr)}else Er.zeroOrAutoZIndexOrTransformedOrOpacity.push(yr)}else Se.styles.isFloating()?Er.nonPositionedFloats.push(yr):Er.nonPositionedInlineLevel.push(yr);yA(yn,yr,rt?yr:X,mn)}else Se.styles.isInlineLevel()?N.inlineLevel.push(yn):N.nonInlineLevel.push(yn),yA(yn,N,X,mn);Zl(Se.flags,8)&&fp(Se,mn)})},fp=function(O,N){for(var X=O instanceof Hp?O.start:1,$=O instanceof Hp?O.reversed:!1,Se=0;Se0&&X.intrinsicHeight>0){var rt=oe(X),Dt=Kf($);this.path(Dt),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(Se,0,0,X.intrinsicWidth,X.intrinsicHeight,rt.left,rt.top,rt.width,rt.height),this.ctx.restore()}},N.prototype.renderNodeContent=function(X){return K(this,void 0,void 0,function(){var $,Se,rt,Dt,yn,mn,Da,Da,Er,yr,Wr,Ci,So,ya,Ls,_o,ha,Oo,Ka,Da,Il,So,_o;return H(this,function(wa){switch(wa.label){case 0:this.applyEffects(X.getEffects(4)),$=X.container,Se=X.curves,rt=$.styles,Dt=0,yn=$.textNodes,wa.label=1;case 1:return Dt0&&Wu>0&&($o=rt.ctx.createPattern(_o,"repeat"),rt.renderRepeat(vu,$o,rh,ih))):Wn(yr)&&(To=ot(X,$,[null,null,null]),vu=To[0],yu=To[1],Qu=To[2],Cc=To[3],Wu=To[4],nf=yr.position.length===0?[bc]:yr.position,rh=Yo(nf[0],Cc),ih=Yo(nf[nf.length-1],Wu),xA=Dh(yr,rh,ih,Cc,Wu),If=xA[0],dp=xA[1],If>0&&dp>0&&(Xf=rt.ctx.createRadialGradient(yu+rh,Qu+ih,0,yu+rh,Qu+ih,If),Yh(yr.stops,If*2).forEach(function(Vg){return Xf.addColorStop(Vg.stop,ro(Vg.color))}),rt.path(vu),rt.ctx.fillStyle=Xf,If!==dp?(_A=X.bounds.left+.5*X.bounds.width,dd=X.bounds.top+.5*X.bounds.height,bA=dp/If,jf=1/bA,rt.ctx.save(),rt.ctx.translate(_A,dd),rt.ctx.transform(1,0,0,bA,0,0),rt.ctx.translate(-_A,-dd),rt.ctx.fillRect(yu,jf*(Qu-dd)+dd,Cc,Wu*jf),rt.ctx.restore()):rt.ctx.fill())),qp.label=6;case 6:return $--,[2]}})},rt=this,Dt=0,yn=X.styles.backgroundImage.slice(0).reverse(),Er.label=1;case 1:return Dt0?yr.style!==2?[3,5]:[4,this.renderDashedDottedBorder(yr.color,yr.width,yn,X.curves,2)]:[3,11]):[3,13];case 4:return Ci.sent(),[3,11];case 5:return yr.style!==3?[3,7]:[4,this.renderDashedDottedBorder(yr.color,yr.width,yn,X.curves,3)];case 6:return Ci.sent(),[3,11];case 7:return yr.style!==4?[3,9]:[4,this.renderDoubleBorder(yr.color,yr.width,yn,X.curves)];case 8:return Ci.sent(),[3,11];case 9:return[4,this.renderSolidBorder(yr.color,yn,X.curves)];case 10:Ci.sent(),Ci.label=11;case 11:yn++,Ci.label=12;case 12:return mn++,[3,3];case 13:return[2]}})})},N.prototype.renderDashedDottedBorder=function(X,$,Se,rt,Dt){return K(this,void 0,void 0,function(){var yn,mn,Er,yr,Wr,Ci,ya,Ls,ha,Oo,Ka,Da,Il,So,_o,wa,_o,wa;return H(this,function(Sl){return this.ctx.save(),yn=A(rt,Se),mn=x(rt,Se),Dt===2&&(this.path(mn),this.ctx.clip()),cc(mn[0])?(Er=mn[0].start.x,yr=mn[0].start.y):(Er=mn[0].x,yr=mn[0].y),cc(mn[1])?(Wr=mn[1].end.x,Ci=mn[1].end.y):(Wr=mn[1].x,Ci=mn[1].y),Se===0||Se===2?ya=Math.abs(Er-Wr):ya=Math.abs(yr-Ci),this.ctx.beginPath(),Dt===3?this.formatPath(yn):this.formatPath(mn.slice(0,2)),Ls=$<3?$*3:$*2,ha=$<3?$*2:$,Dt===3&&(Ls=$,ha=$),Oo=!0,ya<=Ls*2?Oo=!1:ya<=Ls*2+ha?(Ka=ya/(2*Ls+ha),Ls*=Ka,ha*=Ka):(Da=Math.floor((ya+ha)/(Ls+ha)),Il=(ya-Da*Ls)/(Da-1),So=(ya-(Da+1)*Ls)/Da,ha=So<=0||Math.abs(ha-Il)=0&&(_.splice instanceof Function||Object.getOwnPropertyDescriptor(_,_.length-1)&&_.constructor.name!=="String")}},15584:function(Ie,Be,_){var m=_(73893),K=_(33152),H=m(K,"DataView");Ie.exports=H},97288:function(Ie,Be,_){var m=_(73893),K=_(33152),H=m(K,"Promise");Ie.exports=H},23599:function(Ie,Be,_){var m=_(73893),K=_(33152),H=m(K,"Set");Ie.exports=H},98924:function(Ie,Be,_){var m=_(52166),K=_(34776),H=_(40393);function L(T){var F=-1,B=T==null?0:T.length;for(this.__data__=new m;++F-1}Ie.exports=K},94874:function(Ie){function Be(_,m,K){for(var H=-1,L=_==null?0:_.length;++H0&&F(j)?T>1?H(j,T-1,F,B,U):m(U,j):B||(U[U.length]=j)}return U}Ie.exports=H},85605:function(Ie,Be,_){var m=_(14018),K=_(55451);function H(L,T){return L&&m(L,T,K)}Ie.exports=H},89147:function(Ie,Be,_){var m=_(1186),K=_(9171);function H(L,T){T=m(T,L);for(var F=0,B=T.length;L!=null&&Fm}Ie.exports=Be},3251:function(Ie){var Be=Object.prototype,_=Be.hasOwnProperty;function m(K,H){return K!=null&&_.call(K,H)}Ie.exports=m},62348:function(Ie){function Be(_,m){return _!=null&&m in Object(_)}Ie.exports=Be},17424:function(Ie,Be,_){var m=_(51533),K=_(8373),H=_(49237);function L(T,F,B){return F===F?H(T,F,B):m(T,K,B)}Ie.exports=L},77295:function(Ie,Be,_){var m=_(84412),K=_(93913);function H(L,T,F,B,U){return L===T?!0:L==null||T==null||!K(L)&&!K(T)?L!==L&&T!==T:m(L,T,F,B,H,U)}Ie.exports=H},84412:function(Ie,Be,_){var m=_(91866),K=_(50401),H=_(57710),L=_(4983),T=_(66139),F=_(80744),B=_(57835),U=_(18397),Q=1,V="[object Arguments]",j="[object Array]",Y="[object Object]",fe=Object.prototype,ue=fe.hasOwnProperty;function Me(_e,Ce,Xe,Fe,ft,_t){var lt=F(_e),Vt=F(Ce),It=lt?j:T(_e),Fn=Vt?j:T(Ce);It=It==V?Y:It,Fn=Fn==V?Y:Fn;var Ot=It==Y,jn=Fn==Y,rr=It==Fn;if(rr&&B(_e)){if(!B(Ce))return!1;lt=!0,Ot=!1}if(rr&&!Ot)return _t||(_t=new m),lt||U(_e)?K(_e,Ce,Xe,Fe,ft,_t):H(_e,Ce,It,Xe,Fe,ft,_t);if(!(Xe&Q)){var kn=Ot&&ue.call(_e,"__wrapped__"),Kn=jn&&ue.call(Ce,"__wrapped__");if(kn||Kn){var _r=kn?_e.value():_e,bn=Kn?Ce.value():Ce;return _t||(_t=new m),ft(_r,bn,Xe,Fe,_t)}}return rr?(_t||(_t=new m),L(_e,Ce,Xe,Fe,ft,_t)):!1}Ie.exports=Me},55005:function(Ie,Be,_){var m=_(66139),K=_(93913),H="[object Map]";function L(T){return K(T)&&m(T)==H}Ie.exports=L},51524:function(Ie,Be,_){var m=_(91866),K=_(77295),H=1,L=2;function T(F,B,U,Q){var V=U.length,j=V,Y=!Q;if(F==null)return!j;for(F=Object(F);V--;){var fe=U[V];if(Y&&fe[2]?fe[1]!==F[fe[0]]:!(fe[0]in F))return!1}for(;++V=B){var Xe=V?null:T(Q);if(Xe)return F(Xe);Me=!1,fe=L,Ce=new m}else Ce=V?[]:_e;e:for(;++YL||U&&Q&&j&&!V&&!Y||F&&Q&&j||!T&&j||!B)return 1;if(!F&&!U&&!Y&&H=V)return j;var Y=T[F];return j*(Y=="desc"?-1:1)}}return H.index-L.index}Ie.exports=K},15168:function(Ie,Be,_){var m=_(95378),K=_(58966);function H(L,T){return m(L,K(L),T)}Ie.exports=H},71678:function(Ie,Be,_){var m=_(95378),K=_(66817);function H(L,T){return m(L,K(L),T)}Ie.exports=H},49164:function(Ie,Be,_){var m=_(24665);function K(H,L){return function(T,F){if(T==null)return T;if(!m(T))return H(T,F);for(var B=T.length,U=L?B:-1,Q=Object(T);(L?U--:++U-1?Q[V?F[j]:j]:void 0}}Ie.exports=L},76106:function(Ie,Be,_){var m=_(36121),K=_(8138),H=_(97341);function L(T){return function(F,B,U){return U&&typeof U!="number"&&K(F,B,U)&&(B=U=void 0),F=H(F),B===void 0?(B=F,F=0):B=H(B),U=U===void 0?Fue))return!1;var _e=Y.get(B),Ce=Y.get(U);if(_e&&Ce)return _e==U&&Ce==B;var Xe=-1,Fe=!0,ft=Q&T?new m:void 0;for(Y.set(B,U),Y.set(U,B);++Xe2?Q[2]:void 0;for(Y&&H(Q[0],Q[1],Y)&&(j=1);++V1&&L(F,B[0],B[1])?B=[]:U>2&&L(B[0],B[1],B[2])&&(B=[B[0]]),K(F,m(B,1),[])});Ie.exports=T},4134:function(Ie){function Be(){return[]}Ie.exports=Be},97341:function(Ie,Be,_){var m=_(59406),K=1/0,H=17976931348623157e292;function L(T){if(!T)return T===0?T:0;if(T=m(T),T===K||T===-K){var F=T<0?-1:1;return F*H}return T===T?T:0}Ie.exports=L},12824:function(Ie,Be,_){var m=_(97341);function K(H){var L=m(H),T=L%1;return L===L?T?L-T:L:0}Ie.exports=K},59406:function(Ie,Be,_){var m=_(13927),K=_(20816),H=_(45029),L=NaN,T=/^[-+]0x[0-9a-f]+$/i,F=/^0b[01]+$/i,B=/^0o[0-7]+$/i,U=parseInt;function Q(V){if(typeof V=="number")return V;if(H(V))return L;if(K(V)){var j=typeof V.valueOf=="function"?V.valueOf():V;V=K(j)?j+"":j}if(typeof V!="string")return V===0?V:+V;V=m(V);var Y=F.test(V);return Y||B.test(V)?U(V.slice(2),Y?2:8):T.test(V)?L:+V}Ie.exports=Q},44140:function(Ie,Be,_){var m=_(50230);function K(H){return H==null?"":m(H)}Ie.exports=K},91116:function(Ie,Be,_){var m=_(74809),K=_(35024),H=_(85605),L=_(95979),T=_(49217),F=_(80744),B=_(57835),U=_(9363),Q=_(20816),V=_(18397);function j(Y,fe,ue){var Me=F(Y),_e=Me||B(Y)||V(Y);if(fe=L(fe,4),ue==null){var Ce=Y&&Y.constructor;_e?ue=Me?new Ce:[]:Q(Y)?ue=U(Ce)?K(T(Y)):{}:ue={}}return(_e?m:H)(Y,function(Xe,Fe,ft){return fe(ue,Xe,Fe,ft)}),ue}Ie.exports=j},44065:function(Ie,Be,_){var m=_(9256),K=_(92918),H=_(29098),L=_(41590),T=K(function(F){return H(m(F,1,L,!0))});Ie.exports=T},95708:function(Ie,Be,_){var m=_(44140),K=0;function H(L){var T=++K;return m(L)+T}Ie.exports=H},81229:function(Ie,Be,_){var m=_(20720),K=_(55451);function H(L){return L==null?[]:m(L,K(L))}Ie.exports=H},65441:function(Ie,Be,_){var m=_(60348),K=_(94484);function H(L,T){return K(L||[],T||[],m)}Ie.exports=H},34402:function(Ie,Be,_){"use strict";_.r(Be),_.d(Be,{default:function(){return L}});var m=_(34634);function K(T){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(0,m.isAnyArray)(T))throw new TypeError("input must be an array");if(T.length===0)throw new TypeError("input must not be empty");var B=F.fromIndex,U=B===void 0?0:B,Q=F.toIndex,V=Q===void 0?T.length:Q;if(U<0||U>=T.length||!Number.isInteger(U))throw new Error("fromIndex must be a positive integer smaller than length");if(V<=U||V>T.length||!Number.isInteger(V))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var j=T[U],Y=U+1;Yj&&(j=T[Y]);return j}function H(T){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(0,m.isAnyArray)(T))throw new TypeError("input must be an array");if(T.length===0)throw new TypeError("input must not be empty");var B=F.fromIndex,U=B===void 0?0:B,Q=F.toIndex,V=Q===void 0?T.length:Q;if(U<0||U>=T.length||!Number.isInteger(U))throw new Error("fromIndex must be a positive integer smaller than length");if(V<=U||V>T.length||!Number.isInteger(V))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var j=T[U],Y=U+1;Y1&&arguments[1]!==void 0?arguments[1]:{};if((0,m.isAnyArray)(T)){if(T.length===0)throw new TypeError("input must not be empty")}else throw new TypeError("input must be an array");var B;if(F.output!==void 0){if(!(0,m.isAnyArray)(F.output))throw new TypeError("output option must be an array if specified");B=F.output}else B=new Array(T.length);var U=H(T),Q=K(T);if(U===Q)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var V=F.min,j=V===void 0?F.autoMinMax?U:0:V,Y=F.max,fe=Y===void 0?F.autoMinMax?Q:1:Y;if(j>=fe)throw new RangeError("min option must be smaller than max option");for(var ue=(fe-j)/(Q-U),Me=0;Me19?Cr:bn;T&&typeof T.nodeMass=="function"&&(U=T.nodeMass);var Q=new Map,V={},j=0,Y=B.settings.springTransform||H;Vt(),ft();var fe=!1,ue={step:function(){if(j===0)return Me(!0),!0;var Ke=B.step();ue.lastMove=Ke,ue.fire("step");var Rt=Ke/j,Qn=Rt<=.01;return Me(Qn),Qn},getNodePosition:function(Ke){return _r(Ke).pos},setNodePosition:function(Ke){var Rt=_r(Ke);Rt.setPosition.apply(Rt,Array.prototype.slice.call(arguments,1))},getLinkPosition:function(Ke){var Rt=V[Ke];if(Rt)return{from:Rt.from.pos,to:Rt.to.pos}},getGraphRect:function(){return B.getBBox()},forEachBody:_e,pinNode:function(Ke,Rt){var Qn=_r(Ke.id);Qn.isPinned=!!Rt},isNodePinned:function(Ke){return _r(Ke.id).isPinned},dispose:function(){L.off("changed",lt),ue.fire("disposed")},getBody:Fe,getSpring:Xe,getForceVectorLength:Ce,simulator:B,graph:L,lastMove:0};return m(ue),ue;function Me(Ke){fe!==Ke&&(fe=Ke,_t(Ke))}function _e(Ke){Q.forEach(Ke)}function Ce(){var Ke=0,Rt=0;return _e(function(Qn){Ke+=Math.abs(Qn.force.x),Rt+=Math.abs(Qn.force.y)}),Math.sqrt(Ke*Ke+Rt*Rt)}function Xe(Ke,Rt){var Qn;if(Rt===void 0)typeof Ke!="object"?Qn=Ke:Qn=Ke.id;else{var Yr=L.hasLink(Ke,Rt);if(!Yr)return;Qn=Yr.id}return V[Qn]}function Fe(Ke){return Q.get(Ke)}function ft(){L.on("changed",lt)}function _t(Ke){ue.fire("stable",Ke)}function lt(Ke){for(var Rt=0;Rt max_{var}) max_{var} = bodyPos.{var};",{indent:6})} + } + + ${T("boundingBox.min_{var} = min_{var};",{indent:4})} + ${T("boundingBox.max_{var} = max_{var};",{indent:4})} + } + + function resetBoundingBox() { + ${T("boundingBox.min_{var} = boundingBox.max_{var} = 0;",{indent:4})} + } +`}},53623:function(Ie,Be,_){const m=_(98786);Ie.exports=K,Ie.exports.generateCreateBodyFunctionBody=H,Ie.exports.getVectorCode=T,Ie.exports.getBodyCode=L;function K(F,B){let U=H(F,B),{Body:Q}=new Function(U)();return Q}function H(F,B){return` +${T(F,B)} +${L(F,B)} +return {Body: Body, Vector: Vector}; +`}function L(F){let B=m(F),U=B("{var}",{join:", "});return` +function Body(${U}) { + this.isPinned = false; + this.pos = new Vector(${U}); + this.force = new Vector(); + this.velocity = new Vector(); + this.mass = 1; + + this.springCount = 0; + this.springLength = 0; +} + +Body.prototype.reset = function() { + this.force.reset(); + this.springCount = 0; + this.springLength = 0; +} + +Body.prototype.setPosition = function (${U}) { + ${B("this.pos.{var} = {var} || 0;",{indent:2})} +};`}function T(F,B){let U=m(F),Q="";return B&&(Q=`${U(` + var v{var}; +Object.defineProperty(this, '{var}', { + set: function(v) { + if (!Number.isFinite(v)) throw new Error('Cannot set non-numbers to {var}'); + v{var} = v; + }, + get: function() { return v{var}; } +});`)}`),`function Vector(${U("{var}",{join:", "})}) { + ${Q} + if (typeof arguments[0] === 'object') { + // could be another vector + let v = arguments[0]; + ${U('if (!Number.isFinite(v.{var})) throw new Error("Expected value is not a finite number at Vector constructor ({var})");',{indent:4})} + ${U("this.{var} = v.{var};",{indent:4})} + } else { + ${U('this.{var} = typeof {var} === "number" ? {var} : 0;',{indent:4})} + } + } + + Vector.prototype.reset = function () { + ${U("this.{var} = ",{join:""})}0; + };`}},48812:function(Ie,Be,_){const m=_(98786);Ie.exports=K,Ie.exports.generateCreateDragForceFunctionBody=H;function K(L){let T=H(L);return new Function("options",T)}function H(L){return` + if (!Number.isFinite(options.dragCoefficient)) throw new Error('dragCoefficient is not a finite number'); + + return { + update: function(body) { + ${m(L)("body.force.{var} -= options.dragCoefficient * body.velocity.{var};",{indent:6})} + } + }; +`}},7584:function(Ie,Be,_){const m=_(98786);Ie.exports=K,Ie.exports.generateCreateSpringForceFunctionBody=H;function K(L){let T=H(L);return new Function("options","random",T)}function H(L){let T=m(L);return` + if (!Number.isFinite(options.springCoefficient)) throw new Error('Spring coefficient is not a number'); + if (!Number.isFinite(options.springLength)) throw new Error('Spring length is not a number'); + + return { + /** + * Updates forces acting on a spring + */ + update: function (spring) { + var body1 = spring.from; + var body2 = spring.to; + var length = spring.length < 0 ? options.springLength : spring.length; + ${T("var d{var} = body2.pos.{var} - body1.pos.{var};",{indent:6})} + var r = Math.sqrt(${T("d{var} * d{var}",{join:" + "})}); + + if (r === 0) { + ${T("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:8})} + r = Math.sqrt(${T("d{var} * d{var}",{join:" + "})}); + } + + var d = r - length; + var coefficient = ((spring.coefficient > 0) ? spring.coefficient : options.springCoefficient) * d / r; + + ${T("body1.force.{var} += coefficient * d{var}",{indent:6})}; + body1.springCount += 1; + body1.springLength += r; + + ${T("body2.force.{var} -= coefficient * d{var}",{indent:6})}; + body2.springCount += 1; + body2.springLength += r; + } + }; +`}},26302:function(Ie,Be,_){const m=_(98786);Ie.exports=K,Ie.exports.generateIntegratorFunctionBody=H;function K(L){let T=H(L);return new Function("bodies","timeStep","adaptiveTimeStepWeight",T)}function H(L){let T=m(L);return` + var length = bodies.length; + if (length === 0) return 0; + + ${T("var d{var} = 0, t{var} = 0;",{indent:2})} + + for (var i = 0; i < length; ++i) { + var body = bodies[i]; + if (body.isPinned) continue; + + if (adaptiveTimeStepWeight && body.springCount) { + timeStep = (adaptiveTimeStepWeight * body.springLength/body.springCount); + } + + var coeff = timeStep / body.mass; + + ${T("body.velocity.{var} += coeff * body.force.{var};",{indent:4})} + ${T("var v{var} = body.velocity.{var};",{indent:4})} + var v = Math.sqrt(${T("v{var} * v{var}",{join:" + "})}); + + if (v > 1) { + // We normalize it so that we move within timeStep range. + // for the case when v <= 1 - we let velocity to fade out. + ${T("body.velocity.{var} = v{var} / v;",{indent:6})} + } + + ${T("d{var} = timeStep * body.velocity.{var};",{indent:4})} + + ${T("body.pos.{var} += d{var};",{indent:4})} + + ${T("t{var} += Math.abs(d{var});",{indent:4})} + } + + return (${T("t{var} * t{var}",{join:" + "})})/length; +`}},24454:function(Ie,Be,_){const m=_(98786),K=_(59321);Ie.exports=H,Ie.exports.generateQuadTreeFunctionBody=L,Ie.exports.getInsertStackCode=Q,Ie.exports.getQuadNodeCode=U,Ie.exports.isSamePosition=T,Ie.exports.getChildBodyCode=B,Ie.exports.setChildBodyCode=F;function H(V){let j=L(V);return new Function(j)()}function L(V){let j=m(V),Y=Math.pow(2,V);return` +${Q()} +${U(V)} +${T(V)} +${B(V)} +${F(V)} + +function createQuadTree(options, random) { + options = options || {}; + options.gravity = typeof options.gravity === 'number' ? options.gravity : -1; + options.theta = typeof options.theta === 'number' ? options.theta : 0.8; + + var gravity = options.gravity; + var updateQueue = []; + var insertStack = new InsertStack(); + var theta = options.theta; + + var nodesCache = []; + var currentInCache = 0; + var root = newNode(); + + return { + insertBodies: insertBodies, + + /** + * Gets root node if it is present + */ + getRoot: function() { + return root; + }, + + updateBodyForce: update, + + options: function(newOptions) { + if (newOptions) { + if (typeof newOptions.gravity === 'number') { + gravity = newOptions.gravity; + } + if (typeof newOptions.theta === 'number') { + theta = newOptions.theta; + } + + return this; + } + + return { + gravity: gravity, + theta: theta + }; + } + }; + + function newNode() { + // To avoid pressure on GC we reuse nodes. + var node = nodesCache[currentInCache]; + if (node) { +${_e(" node.")} + node.body = null; + node.mass = ${j("node.mass_{var} = ",{join:""})}0; + ${j("node.min_{var} = node.max_{var} = ",{join:""})}0; + } else { + node = new QuadNode(); + nodesCache[currentInCache] = node; + } + + ++currentInCache; + return node; + } + + function update(sourceBody) { + var queue = updateQueue; + var v; + ${j("var d{var};",{indent:4})} + var r; + ${j("var f{var} = 0;",{indent:4})} + var queueLength = 1; + var shiftIdx = 0; + var pushIdx = 1; + + queue[0] = root; + + while (queueLength) { + var node = queue[shiftIdx]; + var body = node.body; + + queueLength -= 1; + shiftIdx += 1; + var differentBody = (body !== sourceBody); + if (body && differentBody) { + // If the current node is a leaf node (and it is not source body), + // calculate the force exerted by the current node on body, and add this + // amount to body's net force. + ${j("d{var} = body.pos.{var} - sourceBody.pos.{var};",{indent:8})} + r = Math.sqrt(${j("d{var} * d{var}",{join:" + "})}); + + if (r === 0) { + // Poor man's protection against zero distance. + ${j("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:10})} + r = Math.sqrt(${j("d{var} * d{var}",{join:" + "})}); + } + + // This is standard gravitation force calculation but we divide + // by r^3 to save two operations when normalizing force vector. + v = gravity * body.mass * sourceBody.mass / (r * r * r); + ${j("f{var} += v * d{var};",{indent:8})} + } else if (differentBody) { + // Otherwise, calculate the ratio s / r, where s is the width of the region + // represented by the internal node, and r is the distance between the body + // and the node's center-of-mass + ${j("d{var} = node.mass_{var} / node.mass - sourceBody.pos.{var};",{indent:8})} + r = Math.sqrt(${j("d{var} * d{var}",{join:" + "})}); + + if (r === 0) { + // Sorry about code duplication. I don't want to create many functions + // right away. Just want to see performance first. + ${j("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:10})} + r = Math.sqrt(${j("d{var} * d{var}",{join:" + "})}); + } + // If s / r < \u03B8, treat this internal node as a single body, and calculate the + // force it exerts on sourceBody, and add this amount to sourceBody's net force. + if ((node.max_${K(0)} - node.min_${K(0)}) / r < theta) { + // in the if statement above we consider node's width only + // because the region was made into square during tree creation. + // Thus there is no difference between using width or height. + v = gravity * node.mass * sourceBody.mass / (r * r * r); + ${j("f{var} += v * d{var};",{indent:10})} + } else { + // Otherwise, run the procedure recursively on each of the current node's children. + + // I intentionally unfolded this loop, to save several CPU cycles. +${Me()} + } + } + } + + ${j("sourceBody.force.{var} += f{var};",{indent:4})} + } + + function insertBodies(bodies) { + ${j("var {var}min = Number.MAX_VALUE;",{indent:4})} + ${j("var {var}max = Number.MIN_VALUE;",{indent:4})} + var i = bodies.length; + + // To reduce quad tree depth we are looking for exact bounding box of all particles. + while (i--) { + var pos = bodies[i].pos; + ${j("if (pos.{var} < {var}min) {var}min = pos.{var};",{indent:6})} + ${j("if (pos.{var} > {var}max) {var}max = pos.{var};",{indent:6})} + } + + // Makes the bounds square. + var maxSideLength = -Infinity; + ${j("if ({var}max - {var}min > maxSideLength) maxSideLength = {var}max - {var}min ;",{indent:4})} + + currentInCache = 0; + root = newNode(); + ${j("root.min_{var} = {var}min;",{indent:4})} + ${j("root.max_{var} = {var}min + maxSideLength;",{indent:4})} + + i = bodies.length - 1; + if (i >= 0) { + root.body = bodies[i]; + } + while (i--) { + insert(bodies[i], root); + } + } + + function insert(newBody) { + insertStack.reset(); + insertStack.push(root, newBody); + + while (!insertStack.isEmpty()) { + var stackItem = insertStack.pop(); + var node = stackItem.node; + var body = stackItem.body; + + if (!node.body) { + // This is internal node. Update the total mass of the node and center-of-mass. + ${j("var {var} = body.pos.{var};",{indent:8})} + node.mass += body.mass; + ${j("node.mass_{var} += body.mass * {var};",{indent:8})} + + // Recursively insert the body in the appropriate quadrant. + // But first find the appropriate quadrant. + var quadIdx = 0; // Assume we are in the 0's quad. + ${j("var min_{var} = node.min_{var};",{indent:8})} + ${j("var max_{var} = (min_{var} + node.max_{var}) / 2;",{indent:8})} + +${ue(8)} + + var child = getChild(node, quadIdx); + + if (!child) { + // The node is internal but this quadrant is not taken. Add + // subnode to it. + child = newNode(); + ${j("child.min_{var} = min_{var};",{indent:10})} + ${j("child.max_{var} = max_{var};",{indent:10})} + child.body = body; + + setChild(node, quadIdx, child); + } else { + // continue searching in this quadrant. + insertStack.push(child, body); + } + } else { + // We are trying to add to the leaf node. + // We have to convert current leaf into internal node + // and continue adding two nodes. + var oldBody = node.body; + node.body = null; // internal nodes do not cary bodies + + if (isSamePosition(oldBody.pos, body.pos)) { + // Prevent infinite subdivision by bumping one node + // anywhere in this quadrant + var retriesCount = 3; + do { + var offset = random.nextDouble(); + ${j("var d{var} = (node.max_{var} - node.min_{var}) * offset;",{indent:12})} + + ${j("oldBody.pos.{var} = node.min_{var} + d{var};",{indent:12})} + retriesCount -= 1; + // Make sure we don't bump it out of the box. If we do, next iteration should fix it + } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos)); + + if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) { + // This is very bad, we ran out of precision. + // if we do not return from the method we'll get into + // infinite loop here. So we sacrifice correctness of layout, and keep the app running + // Next layout iteration should get larger bounding box in the first step and fix this + return; + } + } + // Next iteration should subdivide node further. + insertStack.push(node, oldBody); + insertStack.push(node, body); + } + } + } +} +return createQuadTree; + +`;function ue(Ce){let Xe=[],Fe=Array(Ce+1).join(" ");for(let ft=0;ft max_${K(ft)}) {`),Xe.push(Fe+` quadIdx = quadIdx + ${Math.pow(2,ft)};`),Xe.push(Fe+` min_${K(ft)} = max_${K(ft)};`),Xe.push(Fe+` max_${K(ft)} = node.max_${K(ft)};`),Xe.push(Fe+"}");return Xe.join(` +`)}function Me(){let Ce=Array(11).join(" "),Xe=[];for(let Fe=0;Fe 0) { + return this.stack[--this.popIdx]; + } + }, + reset: function () { + this.popIdx = 0; + } +}; + +function InsertStackElement(node, body) { + this.node = node; // QuadTree node + this.body = body; // physical body which needs to be inserted to node +} +`}},59321:function(Ie){Ie.exports=function(_){return _===0?"x":_===1?"y":_===2?"z":"c"+(_+1)}},72879:function(Ie,Be,_){Ie.exports=U;var m=_(53623),K=_(24454),H=_(41085),L=_(48812),T=_(7584),F=_(26302),B={};function U(j){var Y=_(75877),fe=_(35764),ue=_(82396);if(j){if(j.springCoeff!==void 0)throw new Error("springCoeff was renamed to springCoefficient");if(j.dragCoeff!==void 0)throw new Error("dragCoeff was renamed to dragCoefficient")}j=fe(j,{springLength:10,springCoefficient:.8,gravity:-12,theta:.8,dragCoefficient:.9,timeStep:.5,adaptiveTimeStepWeight:0,dimensions:2,debug:!1});var Me=B[j.dimensions];if(!Me){var _e=j.dimensions;Me={Body:m(_e,j.debug),createQuadTree:K(_e),createBounds:H(_e),createDragForce:L(_e),createSpringForce:T(_e),integrate:F(_e)},B[_e]=Me}var Ce=Me.Body,Xe=Me.createQuadTree,Fe=Me.createBounds,ft=Me.createDragForce,_t=Me.createSpringForce,lt=Me.integrate,Vt=Mt=>new Ce(Mt),It=_(40232).random(42),Fn=[],Ot=[],jn=Xe(j,It),rr=Fe(Fn,j,It),kn=_t(j,It),Kn=ft(j),_r=0,bn=[],Cr=new Map,Ke=0;Yr("nbody",Ln),Yr("spring",Tt);var Rt={bodies:Fn,quadTree:jn,springs:Ot,settings:j,addForce:Yr,removeForce:rn,getForces:An,step:function(){for(var Mt=0;Mt=0?De:-1);return Ot.push(Ht),Ht},getTotalMovement:function(){return _r},removeSpring:function(Mt){if(Mt){var ge=Ot.indexOf(Mt);if(ge>-1)return Ot.splice(ge,1),!0}},getBestNewBodyPosition:function(Mt){return rr.getBestNewPosition(Mt)},getBBox:Qn,getBoundingBox:Qn,invalidateBBox:function(){console.warn("invalidateBBox() is deprecated, bounds always recomputed on `getBBox()` call")},gravity:function(Mt){return Mt!==void 0?(j.gravity=Mt,jn.options({gravity:Mt}),this):j.gravity},theta:function(Mt){return Mt!==void 0?(j.theta=Mt,jn.options({theta:Mt}),this):j.theta},random:It};return Q(j,Rt),ue(Rt),Rt;function Qn(){return rr.update(),rr.box}function Yr(Mt,ge){if(Cr.has(Mt))throw new Error("Force "+Mt+" is already added");Cr.set(Mt,ge),bn.push(ge)}function rn(Mt){var ge=bn.indexOf(Cr.get(Mt));ge<0||(bn.splice(ge,1),Cr.delete(Mt))}function An(){return Cr}function Ln(){if(Fn.length!==0){jn.insertBodies(Fn);for(var Mt=Fn.length;Mt--;){var ge=Fn[Mt];ge.isPinned||(ge.reset(),jn.updateBodyForce(ge),Kn.update(ge))}}}function Tt(){for(var Mt=Ot.length;Mt--;)kn.update(Ot[Mt])}}function Q(j,Y){for(var fe in j)V(j,Y,fe)}function V(j,Y,fe){if(j.hasOwnProperty(fe)&&typeof Y[fe]!="function"){var ue=Number.isFinite(j[fe]);ue?Y[fe]=function(Me){if(Me!==void 0){if(!Number.isFinite(Me))throw new Error("Value of "+fe+" should be a valid number.");return j[fe]=Me,Y}return j[fe]}:Y[fe]=function(Me){return Me!==void 0?(j[fe]=Me,Y):j[fe]}}}},75877:function(Ie){Ie.exports=Be;function Be(_,m,K,H){this.from=_,this.to=m,this.length=K,this.coefficient=H}},35764:function(Ie){Ie.exports=Be;function Be(_,m){var K;if(_||(_={}),m){for(K in m)if(m.hasOwnProperty(K)){var H=_.hasOwnProperty(K),L=typeof m[K],T=!H||typeof _[K]!==L;T?_[K]=m[K]:L==="object"&&(_[K]=Be(_[K],m[K]))}}return _}},40232:function(Ie){Ie.exports=Be,Ie.exports.random=Be,Ie.exports.randomIterator=F;function Be(B){var U=typeof B=="number"?B:+new Date;return new _(U)}function _(B){this.seed=B}_.prototype.next=T,_.prototype.nextDouble=L,_.prototype.uniform=L,_.prototype.gaussian=m,_.prototype.random=L;function m(){var B,U,Q;do U=this.nextDouble()*2-1,Q=this.nextDouble()*2-1,B=U*U+Q*Q;while(B>=1||B===0);return U*Math.sqrt(-2*Math.log(B)/B)}_.prototype.levy=K;function K(){var B=1.5,U=Math.pow(H(1+B)*Math.sin(Math.PI*B/2)/(H((1+B)/2)*B*Math.pow(2,(B-1)/2)),1/B);return this.gaussian()*U/Math.pow(Math.abs(this.gaussian()),1/B)}function H(B){return Math.sqrt(2*Math.PI/B)*Math.pow(1/Math.E*(B+1/(12*B-1/(10*B))),B)}function L(){var B=this.seed;return B=B+2127912214+(B<<12)&4294967295,B=(B^3345072700^B>>>19)&4294967295,B=B+374761393+(B<<5)&4294967295,B=(B+3550635116^B<<9)&4294967295,B=B+4251993797+(B<<3)&4294967295,B=(B^3042594569^B>>>16)&4294967295,this.seed=B,(B&268435455)/268435456}function T(B){return Math.floor(this.nextDouble()*B)}function F(B,U){var Q=U||Be();if(typeof Q.next!="function")throw new Error("customRandom does not match expected API: next() function is missing");return{forEach:j,shuffle:V};function V(){var Y,fe,ue;for(Y=B.length-1;Y>0;--Y)fe=Q.next(Y+1),ue=B[fe],B[fe]=B[Y],B[Y]=ue;return B}function j(Y){var fe,ue,Me;for(fe=B.length-1;fe>0;--fe)ue=Q.next(fe+1),Me=B[ue],B[ue]=B[fe],B[fe]=Me,Y(Me);B.length&&Y(B[0])}}},5630:function(Ie,Be,_){"use strict";var m=_(54476),K=_(33885),H=_(20068),L=_(42978),T=_(75931),F=_(92310),B=_.n(F),U=_(18929),Q=_(59301),V=["prefixCls","className","style","checked","disabled","defaultChecked","type","title","onChange"],j=(0,Q.forwardRef)(function(Y,fe){var ue,Me=Y.prefixCls,_e=Me===void 0?"rc-checkbox":Me,Ce=Y.className,Xe=Y.style,Fe=Y.checked,ft=Y.disabled,_t=Y.defaultChecked,lt=_t===void 0?!1:_t,Vt=Y.type,It=Vt===void 0?"checkbox":Vt,Fn=Y.title,Ot=Y.onChange,jn=(0,T.Z)(Y,V),rr=(0,Q.useRef)(null),kn=(0,U.Z)(lt,{value:Fe}),Kn=(0,L.Z)(kn,2),_r=Kn[0],bn=Kn[1];(0,Q.useImperativeHandle)(fe,function(){return{focus:function(){var Qn;(Qn=rr.current)===null||Qn===void 0||Qn.focus()},blur:function(){var Qn;(Qn=rr.current)===null||Qn===void 0||Qn.blur()},input:rr.current}});var Cr=B()(_e,Ce,(ue={},(0,H.Z)(ue,"".concat(_e,"-checked"),_r),(0,H.Z)(ue,"".concat(_e,"-disabled"),ft),ue)),Ke=function(Qn){ft||("checked"in Y||bn(Qn.target.checked),Ot==null||Ot({target:(0,K.Z)((0,K.Z)({},Y),{},{type:It,checked:Qn.target.checked}),stopPropagation:function(){Qn.stopPropagation()},preventDefault:function(){Qn.preventDefault()},nativeEvent:Qn.nativeEvent}))};return Q.createElement("span",{className:Cr,title:Fn,style:Xe},Q.createElement("input",(0,m.Z)({},jn,{className:"".concat(_e,"-input"),ref:rr,onChange:Ke,disabled:ft,checked:!!_r,type:It})),Q.createElement("span",{className:"".concat(_e,"-inner")}))});Be.Z=j},81683:function(Ie,Be,_){"use strict";var m=_(55973),K=Array.prototype.concat,H=Array.prototype.slice,L=Ie.exports=function(F){for(var B=[],U=0,Q=F.length;U"u")return H=Object.create(null),K;if(H[L])if(typeof T!="function")delete H[L];else{const F=H[L];for(let B=0;B1&&(F=Array.prototype.slice.call(arguments,1));for(let B=0;B=0;--e)if(i[e]>=65535)return!0;return!1}const ul={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function hl(i,e){return new ul[i](e)}function bc(i){return ArrayBuffer.isView(i)&&!(i instanceof DataView)}function ku(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function oc(){const i=ku("canvas");return i.style.display="block",i}const Yo={};let Su=null;function rd(i){Su=i}function Vu(){return Su}function js(...i){const e="THREE."+i.shift();Su?Su("log",e,...i):console.log(e,...i)}function Qr(...i){const e="THREE."+i.shift();Su?Su("warn",e,...i):console.warn(e,...i)}function ri(...i){const e="THREE."+i.shift();Su?Su("error",e,...i):console.error(e,...i)}function Za(...i){const e=i.join(" ");e in Yo||(Yo[e]=!0,Qr(...i))}function Hu(i,e,t){return new Promise(function(n,r){function a(){switch(i.clientWaitSync(e,i.SYNC_FLUSH_COMMANDS_BIT,0)){case i.WAIT_FAILED:r();break;case i.TIMEOUT_EXPIRED:setTimeout(a,t);break;default:n()}}setTimeout(a,t)})}class wc{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const r=n[e];if(r!==void 0){const a=r.indexOf(t);a!==-1&&r.splice(a,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const r=n.slice(0);for(let a=0,o=r.length;a>8&255]+Ro[i>>16&255]+Ro[i>>24&255]+"-"+Ro[e&255]+Ro[e>>8&255]+"-"+Ro[e>>16&15|64]+Ro[e>>24&255]+"-"+Ro[t&63|128]+Ro[t>>8&255]+"-"+Ro[t>>16&255]+Ro[t>>24&255]+Ro[n&255]+Ro[n>>8&255]+Ro[n>>16&255]+Ro[n>>24&255]).toLowerCase()}function to(i,e,t){return Math.max(e,Math.min(t,i))}function vd(i,e){return(i%e+e)%e}function Np(i,e,t,n,r){return n+(i-e)*(r-n)/(t-e)}function Vc(i,e,t){return i!==e?(t-i)/(e-i):0}function _n(i,e,t){return(1-t)*i+t*e}function Ud(i,e,t,n){return _n(i,e,1-Math.exp(-t*n))}function id(i,e=1){return e-Math.abs(vd(i,e*2)-e)}function gu(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*(3-2*i))}function Yh(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*i*(i*(i*6-15)+10))}function Mh(i,e){return i+Math.floor(Math.random()*(e-i+1))}function Ef(i,e){return i+Math.random()*(e-i)}function Rl(i){return i*(.5-Math.random())}function mu(i){i!==void 0&&(ro=i);let e=ro+=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 Dh(i){return i*Wl}function hf(i){return i*Uh}function Oh(i){return(i&i-1)===0&&i!==0}function kf(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function Vf(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function ff(i,e,t,n,r){const a=Math.cos,o=Math.sin,c=a(t/2),u=o(t/2),f=a((e+n)/2),g=o((e+n)/2),v=a((e-n)/2),M=o((e-n)/2),R=a((n-e)/2),I=o((n-e)/2);switch(r){case"XYX":i.set(c*g,u*v,u*M,c*f);break;case"YZY":i.set(u*M,c*g,u*v,c*f);break;case"ZXZ":i.set(u*v,u*M,c*g,c*f);break;case"XZX":i.set(c*g,u*I,u*R,c*f);break;case"YXY":i.set(u*R,c*g,u*I,c*f);break;case"ZYZ":i.set(u*I,u*R,c*g,c*f);break;default:Qr("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function cu(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function Ze(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}const xe={DEG2RAD:Wl,RAD2DEG:Uh,generateUUID:Yu,clamp:to,euclideanModulo:vd,mapLinear:Np,inverseLerp:Vc,lerp:_n,damp:Ud,pingpong:id,smoothstep:gu,smootherstep:Yh,randInt:Mh,randFloat:Ef,randFloatSpread:Rl,seededRandom:mu,degToRad:Dh,radToDeg:hf,isPowerOfTwo:Oh,ceilPowerOfTwo:kf,floorPowerOfTwo:Vf,setQuaternionFromProperEuler:ff,normalize:Ze,denormalize:cu};class de{constructor(e=0,t=0){de.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){const t=this.x,n=this.y,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[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=to(this.x,e.x,t.x),this.y=to(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=to(this.x,e,t),this.y=to(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(to(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){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(to(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const 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){const n=Math.cos(t),r=Math.sin(t),a=this.x-e.x,o=this.y-e.y;return this.x=a*n-o*r+e.x,this.y=a*r+o*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class je{constructor(e=0,t=0,n=0,r=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=r}static slerpFlat(e,t,n,r,a,o,c){let u=n[r+0],f=n[r+1],g=n[r+2],v=n[r+3],M=a[o+0],R=a[o+1],I=a[o+2],re=a[o+3];if(c<=0){e[t+0]=u,e[t+1]=f,e[t+2]=g,e[t+3]=v;return}if(c>=1){e[t+0]=M,e[t+1]=R,e[t+2]=I,e[t+3]=re;return}if(v!==re||u!==M||f!==R||g!==I){let ne=u*M+f*R+g*I+v*re;ne<0&&(M=-M,R=-R,I=-I,re=-re,ne=-ne);let J=1-c;if(ne<.9995){const be=Math.acos(ne),Re=Math.sin(be);J=Math.sin(J*be)/Re,c=Math.sin(c*be)/Re,u=u*J+M*c,f=f*J+R*c,g=g*J+I*c,v=v*J+re*c}else{u=u*J+M*c,f=f*J+R*c,g=g*J+I*c,v=v*J+re*c;const be=1/Math.sqrt(u*u+f*f+g*g+v*v);u*=be,f*=be,g*=be,v*=be}}e[t]=u,e[t+1]=f,e[t+2]=g,e[t+3]=v}static multiplyQuaternionsFlat(e,t,n,r,a,o){const c=n[r],u=n[r+1],f=n[r+2],g=n[r+3],v=a[o],M=a[o+1],R=a[o+2],I=a[o+3];return e[t]=c*I+g*v+u*R-f*M,e[t+1]=u*I+g*M+f*v-c*R,e[t+2]=f*I+g*R+c*M-u*v,e[t+3]=g*I-c*v-u*M-f*R,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,r){return this._x=e,this._y=t,this._z=n,this._w=r,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){const n=e._x,r=e._y,a=e._z,o=e._order,c=Math.cos,u=Math.sin,f=c(n/2),g=c(r/2),v=c(a/2),M=u(n/2),R=u(r/2),I=u(a/2);switch(o){case"XYZ":this._x=M*g*v+f*R*I,this._y=f*R*v-M*g*I,this._z=f*g*I+M*R*v,this._w=f*g*v-M*R*I;break;case"YXZ":this._x=M*g*v+f*R*I,this._y=f*R*v-M*g*I,this._z=f*g*I-M*R*v,this._w=f*g*v+M*R*I;break;case"ZXY":this._x=M*g*v-f*R*I,this._y=f*R*v+M*g*I,this._z=f*g*I+M*R*v,this._w=f*g*v-M*R*I;break;case"ZYX":this._x=M*g*v-f*R*I,this._y=f*R*v+M*g*I,this._z=f*g*I-M*R*v,this._w=f*g*v+M*R*I;break;case"YZX":this._x=M*g*v+f*R*I,this._y=f*R*v+M*g*I,this._z=f*g*I-M*R*v,this._w=f*g*v-M*R*I;break;case"XZY":this._x=M*g*v-f*R*I,this._y=f*R*v-M*g*I,this._z=f*g*I+M*R*v,this._w=f*g*v+M*R*I;break;default:Qr("Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,r=Math.sin(n);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],r=t[4],a=t[8],o=t[1],c=t[5],u=t[9],f=t[2],g=t[6],v=t[10],M=n+c+v;if(M>0){const R=.5/Math.sqrt(M+1);this._w=.25/R,this._x=(g-u)*R,this._y=(a-f)*R,this._z=(o-r)*R}else if(n>c&&n>v){const R=2*Math.sqrt(1+n-c-v);this._w=(g-u)/R,this._x=.25*R,this._y=(r+o)/R,this._z=(a+f)/R}else if(c>v){const R=2*Math.sqrt(1+c-n-v);this._w=(a-f)/R,this._x=(r+o)/R,this._y=.25*R,this._z=(u+g)/R}else{const R=2*Math.sqrt(1+v-n-c);this._w=(o-r)/R,this._x=(a+f)/R,this._y=(u+g)/R,this._z=.25*R}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>Math.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(to(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const r=Math.min(1,t/n);return this.slerp(e,r),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){const n=e._x,r=e._y,a=e._z,o=e._w,c=t._x,u=t._y,f=t._z,g=t._w;return this._x=n*g+o*c+r*f-a*u,this._y=r*g+o*u+a*c-n*f,this._z=a*g+o*f+n*u-r*c,this._w=o*g-n*c-r*u-a*f,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let n=e._x,r=e._y,a=e._z,o=e._w,c=this.dot(e);c<0&&(n=-n,r=-r,a=-a,o=-o,c=-c);let u=1-t;if(c<.9995){const f=Math.acos(c),g=Math.sin(f);u=Math.sin(u*f)/g,t=Math.sin(t*f)/g,this._x=this._x*u+n*t,this._y=this._y*u+r*t,this._z=this._z*u+a*t,this._w=this._w*u+o*t,this._onChangeCallback()}else this._x=this._x*u+n*t,this._y=this._y*u+r*t,this._z=this._z*u+a*t,this._w=this._w*u+o*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),a=Math.sqrt(n);return this.set(r*Math.sin(e),r*Math.cos(e),a*Math.sin(t),a*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}}class ce{constructor(e=0,t=0,n=0){ce.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(Qt.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Qt.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,r=this.z,a=e.elements;return this.x=a[0]*t+a[3]*n+a[6]*r,this.y=a[1]*t+a[4]*n+a[7]*r,this.z=a[2]*t+a[5]*n+a[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,a=e.elements,o=1/(a[3]*t+a[7]*n+a[11]*r+a[15]);return this.x=(a[0]*t+a[4]*n+a[8]*r+a[12])*o,this.y=(a[1]*t+a[5]*n+a[9]*r+a[13])*o,this.z=(a[2]*t+a[6]*n+a[10]*r+a[14])*o,this}applyQuaternion(e){const t=this.x,n=this.y,r=this.z,a=e.x,o=e.y,c=e.z,u=e.w,f=2*(o*r-c*n),g=2*(c*t-a*r),v=2*(a*n-o*t);return this.x=t+u*f+o*v-c*g,this.y=n+u*g+c*f-a*v,this.z=r+u*v+a*g-o*f,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,r=this.z,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r,this.y=a[1]*t+a[5]*n+a[9]*r,this.z=a[2]*t+a[6]*n+a[10]*r,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=to(this.x,e.x,t.x),this.y=to(this.y,e.y,t.y),this.z=to(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=to(this.x,e,t),this.y=to(this.y,e,t),this.z=to(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(to(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){const n=e.x,r=e.y,a=e.z,o=t.x,c=t.y,u=t.z;return this.x=r*u-a*c,this.y=a*o-n*u,this.z=n*c-r*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return kt.copy(this).projectOnVector(e),this.sub(kt)}reflect(e){return this.sub(kt.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(to(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r}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){const r=Math.sin(t)*e;return this.x=r*Math.sin(n),this.y=Math.cos(t)*e,this.z=r*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){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=r,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(){const 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}}const kt=new ce,Qt=new je;class vn{constructor(e,t,n,r,a,o,c,u,f){vn.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,r,a,o,c,u,f)}set(e,t,n,r,a,o,c,u,f){const g=this.elements;return g[0]=e,g[1]=r,g[2]=c,g[3]=t,g[4]=a,g[5]=u,g[6]=n,g[7]=o,g[8]=f,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const 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){const 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){const n=e.elements,r=t.elements,a=this.elements,o=n[0],c=n[3],u=n[6],f=n[1],g=n[4],v=n[7],M=n[2],R=n[5],I=n[8],re=r[0],ne=r[3],J=r[6],be=r[1],Re=r[4],ze=r[7],st=r[2],et=r[5],dt=r[8];return a[0]=o*re+c*be+u*st,a[3]=o*ne+c*Re+u*et,a[6]=o*J+c*ze+u*dt,a[1]=f*re+g*be+v*st,a[4]=f*ne+g*Re+v*et,a[7]=f*J+g*ze+v*dt,a[2]=M*re+R*be+I*st,a[5]=M*ne+R*Re+I*et,a[8]=M*J+R*ze+I*dt,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],n=e[1],r=e[2],a=e[3],o=e[4],c=e[5],u=e[6],f=e[7],g=e[8];return t*o*g-t*c*f-n*a*g+n*c*u+r*a*f-r*o*u}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],a=e[3],o=e[4],c=e[5],u=e[6],f=e[7],g=e[8],v=g*o-c*f,M=c*u-g*a,R=f*a-o*u,I=t*v+n*M+r*R;if(I===0)return this.set(0,0,0,0,0,0,0,0,0);const re=1/I;return e[0]=v*re,e[1]=(r*f-g*n)*re,e[2]=(c*n-r*o)*re,e[3]=M*re,e[4]=(g*t-r*u)*re,e[5]=(r*a-c*t)*re,e[6]=R*re,e[7]=(n*u-f*t)*re,e[8]=(o*t-n*a)*re,this}transpose(){let e;const 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){const 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,r,a,o,c){const u=Math.cos(a),f=Math.sin(a);return this.set(n*u,n*f,-n*(u*o+f*c)+o+e,-r*f,r*u,-r*(-f*o+u*c)+c+t,0,0,1),this}scale(e,t){return this.premultiply(Wn.makeScale(e,t)),this}rotate(e){return this.premultiply(Wn.makeRotation(-e)),this}translate(e,t){return this.premultiply(Wn.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){const 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){const t=this.elements,n=e.elements;for(let r=0;r<9;r++)if(t[r]!==n[r])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){const 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)}}const Wn=new vn,mr=new vn().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Tr=new vn().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Mr(){const i={enabled:!0,workingColorSpace:Cl,spaces:{},convert:function(r,a,o){return this.enabled===!1||a===o||!a||!o||(this.spaces[a].transfer===Xs&&(r.r=Gr(r.r),r.g=Gr(r.g),r.b=Gr(r.b)),this.spaces[a].primaries!==this.spaces[o].primaries&&(r.applyMatrix3(this.spaces[a].toXYZ),r.applyMatrix3(this.spaces[o].fromXYZ)),this.spaces[o].transfer===Xs&&(r.r=yi(r.r),r.g=yi(r.g),r.b=yi(r.b))),r},workingToColorSpace:function(r,a){return this.convert(r,this.workingColorSpace,a)},colorSpaceToWorking:function(r,a){return this.convert(r,a,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===nl?Kc:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,a=this.workingColorSpace){return r.fromArray(this.spaces[a].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,a,o){return r.copy(this.spaces[a].toXYZ).multiply(this.spaces[o].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,a){return Za("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),i.workingToColorSpace(r,a)},toWorkingColorSpace:function(r,a){return Za("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),i.colorSpaceToWorking(r,a)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return i.define({[Cl]:{primaries:e,whitePoint:n,transfer:Kc,toXYZ:mr,fromXYZ:Tr,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Ql},outputColorSpaceConfig:{drawingBufferColorSpace:Ql}},[Ql]:{primaries:e,whitePoint:n,transfer:Xs,toXYZ:mr,fromXYZ:Tr,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Ql}}}),i}const wr=Mr();function Gr(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function yi(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let Or;class Ti{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement=="undefined")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{Or===void 0&&(Or=ku("canvas")),Or.width=e.width,Or.height=e.height;const r=Or.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),n=Or}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){const t=ku("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const r=n.getImageData(0,0,e.width,e.height),a=r.data;for(let o=0;o1),this.pmremVersion=0}get width(){return this.source.getSize(ea).x}get height(){return this.source.getSize(ea).y}get depth(){return this.source.getSize(ea).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){Qr(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){Qr(`Texture.setValues(): property '${t}' does not exist.`);continue}r&&n&&r.isVector2&&n.isVector2||r&&n&&r.isVector3&&n.isVector3||r&&n&&r.isMatrix3&&n.isMatrix3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==we)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Yt:e.x=e.x-Math.floor(e.x);break;case $t:e.x=e.x<0?0:1;break;case Ft: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 Yt:e.y=e.y-Math.floor(e.y);break;case $t:e.y=e.y<0?0:1;break;case Ft: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++}}ss.DEFAULT_IMAGE=null,ss.DEFAULT_MAPPING=we,ss.DEFAULT_ANISOTROPY=1;class ts{constructor(e=0,t=0,n=0,r=1){ts.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=r}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,r){return this.x=e,this.y=t,this.z=n,this.w=r,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){const t=this.x,n=this.y,r=this.z,a=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*r+o[12]*a,this.y=o[1]*t+o[5]*n+o[9]*r+o[13]*a,this.z=o[2]*t+o[6]*n+o[10]*r+o[14]*a,this.w=o[3]*t+o[7]*n+o[11]*r+o[15]*a,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);const 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,r,a;const u=e.elements,f=u[0],g=u[4],v=u[8],M=u[1],R=u[5],I=u[9],re=u[2],ne=u[6],J=u[10];if(Math.abs(g-M)<.01&&Math.abs(v-re)<.01&&Math.abs(I-ne)<.01){if(Math.abs(g+M)<.1&&Math.abs(v+re)<.1&&Math.abs(I+ne)<.1&&Math.abs(f+R+J-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const Re=(f+1)/2,ze=(R+1)/2,st=(J+1)/2,et=(g+M)/4,dt=(v+re)/4,Nt=(I+ne)/4;return Re>ze&&Re>st?Re<.01?(n=0,r=.707106781,a=.707106781):(n=Math.sqrt(Re),r=et/n,a=dt/n):ze>st?ze<.01?(n=.707106781,r=0,a=.707106781):(r=Math.sqrt(ze),n=et/r,a=Nt/r):st<.01?(n=.707106781,r=.707106781,a=0):(a=Math.sqrt(st),n=dt/a,r=Nt/a),this.set(n,r,a,t),this}let be=Math.sqrt((ne-I)*(ne-I)+(v-re)*(v-re)+(M-g)*(M-g));return Math.abs(be)<.001&&(be=1),this.x=(ne-I)/be,this.y=(v-re)/be,this.z=(M-g)/be,this.w=Math.acos((f+R+J-1)/2),this}setFromMatrixPosition(e){const 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=to(this.x,e.x,t.x),this.y=to(this.y,e.y,t.y),this.z=to(this.z,e.z,t.z),this.w=to(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=to(this.x,e,t),this.y=to(this.y,e,t),this.z=to(this.z,e,t),this.w=to(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(to(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}}class La extends wc{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Pr,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new ts(0,0,e,t),this.scissorTest=!1,this.viewport=new ts(0,0,e,t);const r={width:e,height:t,depth:n.depth},a=new ss(r);this.textures=[];const o=n.count;for(let c=0;c1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.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,Ae),Ae.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(pn),Vn.subVectors(this.max,pn),Qe.subVectors(e.a,pn),He.subVectors(e.b,pn),qe.subVectors(e.c,pn),yt.subVectors(He,Qe),qt.subVectors(qe,He),on.subVectors(Qe,qe);let t=[0,-yt.z,yt.y,0,-qt.z,qt.y,0,-on.z,on.y,yt.z,0,-yt.x,qt.z,0,-qt.x,on.z,0,-on.x,-yt.y,yt.x,0,-qt.y,qt.x,0,-on.y,on.x,0];return!Sr(t,Qe,He,qe,Vn)||(t=[1,0,0,0,1,0,0,0,1],!Sr(t,Qe,He,qe,Vn))?!1:(Jn.crossVectors(yt,qt),t=[Jn.x,Jn.y,Jn.z],Sr(t,Qe,He,qe,Vn))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Ae).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Ae).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:(te[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),te[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),te[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),te[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),te[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),te[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),te[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),te[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(te),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)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const te=[new ce,new ce,new ce,new ce,new ce,new ce,new ce,new ce],Ae=new ce,Pe=new q,Qe=new ce,He=new ce,qe=new ce,yt=new ce,qt=new ce,on=new ce,pn=new ce,Vn=new ce,Jn=new ce,Ur=new ce;function Sr(i,e,t,n,r){for(let a=0,o=i.length-3;a<=o;a+=3){Ur.fromArray(i,a);const c=r.x*Math.abs(Ur.x)+r.y*Math.abs(Ur.y)+r.z*Math.abs(Ur.z),u=e.dot(Ur),f=t.dot(Ur),g=n.dot(Ur);if(Math.max(-Math.max(u,f,g),Math.min(u,f,g))>c)return!1}return!0}const Ai=new q,hi=new ce,_i=new ce;class Ii{constructor(e=new ce,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){const n=this.center;t!==void 0?n.copy(t):Ai.setFromPoints(e).getCenter(n);let r=0;for(let a=0,o=e.length;athis.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;hi.subVectors(e,this.center);const t=hi.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),r=(n-this.radius)*.5;this.center.addScaledVector(hi,r/n),this.radius+=r}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):(_i.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(hi.copy(e.center).add(_i)),this.expandByPoint(hi.copy(e.center).sub(_i))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const _s=new ce,Ns=new ce,Es=new ce,da=new ce,ua=new ce,Io=new ce,io=new ce;class so{constructor(e=new ce,t=new ce(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,_s)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const 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){const t=_s.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(_s.copy(this.origin).addScaledVector(this.direction,t),_s.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){Ns.copy(e).add(t).multiplyScalar(.5),Es.copy(t).sub(e).normalize(),da.copy(this.origin).sub(Ns);const a=e.distanceTo(t)*.5,o=-this.direction.dot(Es),c=da.dot(this.direction),u=-da.dot(Es),f=da.lengthSq(),g=Math.abs(1-o*o);let v,M,R,I;if(g>0)if(v=o*u-c,M=o*c-u,I=a*g,v>=0)if(M>=-I)if(M<=I){const re=1/g;v*=re,M*=re,R=v*(v+o*M+2*c)+M*(o*v+M+2*u)+f}else M=a,v=Math.max(0,-(o*M+c)),R=-v*v+M*(M+2*u)+f;else M=-a,v=Math.max(0,-(o*M+c)),R=-v*v+M*(M+2*u)+f;else M<=-I?(v=Math.max(0,-(-o*a+c)),M=v>0?-a:Math.min(Math.max(-a,-u),a),R=-v*v+M*(M+2*u)+f):M<=I?(v=0,M=Math.min(Math.max(-a,-u),a),R=M*(M+2*u)+f):(v=Math.max(0,-(o*a+c)),M=v>0?a:Math.min(Math.max(-a,-u),a),R=-v*v+M*(M+2*u)+f);else M=o>0?-a:a,v=Math.max(0,-(o*M+c)),R=-v*v+M*(M+2*u)+f;return n&&n.copy(this.origin).addScaledVector(this.direction,v),r&&r.copy(Ns).addScaledVector(Es,M),R}intersectSphere(e,t){_s.subVectors(e.center,this.origin);const n=_s.dot(this.direction),r=_s.dot(_s)-n*n,a=e.radius*e.radius;if(r>a)return null;const o=Math.sqrt(a-r),c=n-o,u=n+o;return u<0?null:c<0?this.at(u,t):this.at(c,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,a,o,c,u;const f=1/this.direction.x,g=1/this.direction.y,v=1/this.direction.z,M=this.origin;return f>=0?(n=(e.min.x-M.x)*f,r=(e.max.x-M.x)*f):(n=(e.max.x-M.x)*f,r=(e.min.x-M.x)*f),g>=0?(a=(e.min.y-M.y)*g,o=(e.max.y-M.y)*g):(a=(e.max.y-M.y)*g,o=(e.min.y-M.y)*g),n>o||a>r||((a>n||isNaN(n))&&(n=a),(o=0?(c=(e.min.z-M.z)*v,u=(e.max.z-M.z)*v):(c=(e.max.z-M.z)*v,u=(e.min.z-M.z)*v),n>u||c>r)||((c>n||n!==n)&&(n=c),(u=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,_s)!==null}intersectTriangle(e,t,n,r,a){ua.subVectors(t,e),Io.subVectors(n,e),io.crossVectors(ua,Io);let o=this.direction.dot(io),c;if(o>0){if(r)return null;c=1}else if(o<0)c=-1,o=-o;else return null;da.subVectors(this.origin,e);const u=c*this.direction.dot(Io.crossVectors(da,Io));if(u<0)return null;const f=c*this.direction.dot(ua.cross(da));if(f<0||u+f>o)return null;const g=-c*da.dot(io);return g<0?null:this.at(g/o,a)}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)}}class ti{constructor(e,t,n,r,a,o,c,u,f,g,v,M,R,I,re,ne){ti.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,r,a,o,c,u,f,g,v,M,R,I,re,ne)}set(e,t,n,r,a,o,c,u,f,g,v,M,R,I,re,ne){const J=this.elements;return J[0]=e,J[4]=t,J[8]=n,J[12]=r,J[1]=a,J[5]=o,J[9]=c,J[13]=u,J[2]=f,J[6]=g,J[10]=v,J[14]=M,J[3]=R,J[7]=I,J[11]=re,J[15]=ne,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 ti().fromArray(this.elements)}copy(e){const 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){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const 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 this.determinant()===0?(e.set(1,0,0),t.set(0,1,0),n.set(0,0,1),this):(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){if(e.determinant()===0)return this.identity();const t=this.elements,n=e.elements,r=1/uo.setFromMatrixColumn(e,0).length(),a=1/uo.setFromMatrixColumn(e,1).length(),o=1/uo.setFromMatrixColumn(e,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*a,t[5]=n[5]*a,t[6]=n[6]*a,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){const t=this.elements,n=e.x,r=e.y,a=e.z,o=Math.cos(n),c=Math.sin(n),u=Math.cos(r),f=Math.sin(r),g=Math.cos(a),v=Math.sin(a);if(e.order==="XYZ"){const M=o*g,R=o*v,I=c*g,re=c*v;t[0]=u*g,t[4]=-u*v,t[8]=f,t[1]=R+I*f,t[5]=M-re*f,t[9]=-c*u,t[2]=re-M*f,t[6]=I+R*f,t[10]=o*u}else if(e.order==="YXZ"){const M=u*g,R=u*v,I=f*g,re=f*v;t[0]=M+re*c,t[4]=I*c-R,t[8]=o*f,t[1]=o*v,t[5]=o*g,t[9]=-c,t[2]=R*c-I,t[6]=re+M*c,t[10]=o*u}else if(e.order==="ZXY"){const M=u*g,R=u*v,I=f*g,re=f*v;t[0]=M-re*c,t[4]=-o*v,t[8]=I+R*c,t[1]=R+I*c,t[5]=o*g,t[9]=re-M*c,t[2]=-o*f,t[6]=c,t[10]=o*u}else if(e.order==="ZYX"){const M=o*g,R=o*v,I=c*g,re=c*v;t[0]=u*g,t[4]=I*f-R,t[8]=M*f+re,t[1]=u*v,t[5]=re*f+M,t[9]=R*f-I,t[2]=-f,t[6]=c*u,t[10]=o*u}else if(e.order==="YZX"){const M=o*u,R=o*f,I=c*u,re=c*f;t[0]=u*g,t[4]=re-M*v,t[8]=I*v+R,t[1]=v,t[5]=o*g,t[9]=-c*g,t[2]=-f*g,t[6]=R*v+I,t[10]=M-re*v}else if(e.order==="XZY"){const M=o*u,R=o*f,I=c*u,re=c*f;t[0]=u*g,t[4]=-v,t[8]=f*g,t[1]=M*v+re,t[5]=o*g,t[9]=R*v-I,t[2]=I*v-R,t[6]=c*g,t[10]=re*v+M}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(qo,e,ec)}lookAt(e,t,n){const r=this.elements;return po.subVectors(e,t),po.lengthSq()===0&&(po.z=1),po.normalize(),ga.crossVectors(n,po),ga.lengthSq()===0&&(Math.abs(n.z)===1?po.x+=1e-4:po.z+=1e-4,po.normalize(),ga.crossVectors(n,po)),ga.normalize(),fl.crossVectors(po,ga),r[0]=ga.x,r[4]=fl.x,r[8]=po.x,r[1]=ga.y,r[5]=fl.y,r[9]=po.y,r[2]=ga.z,r[6]=fl.z,r[10]=po.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,a=this.elements,o=n[0],c=n[4],u=n[8],f=n[12],g=n[1],v=n[5],M=n[9],R=n[13],I=n[2],re=n[6],ne=n[10],J=n[14],be=n[3],Re=n[7],ze=n[11],st=n[15],et=r[0],dt=r[4],Nt=r[8],nt=r[12],mt=r[1],En=r[5],vr=r[9],br=r[13],kr=r[2],qr=r[6],jr=r[10],ai=r[14],zi=r[3],Os=r[7],Hs=r[11],ci=r[15];return a[0]=o*et+c*mt+u*kr+f*zi,a[4]=o*dt+c*En+u*qr+f*Os,a[8]=o*Nt+c*vr+u*jr+f*Hs,a[12]=o*nt+c*br+u*ai+f*ci,a[1]=g*et+v*mt+M*kr+R*zi,a[5]=g*dt+v*En+M*qr+R*Os,a[9]=g*Nt+v*vr+M*jr+R*Hs,a[13]=g*nt+v*br+M*ai+R*ci,a[2]=I*et+re*mt+ne*kr+J*zi,a[6]=I*dt+re*En+ne*qr+J*Os,a[10]=I*Nt+re*vr+ne*jr+J*Hs,a[14]=I*nt+re*br+ne*ai+J*ci,a[3]=be*et+Re*mt+ze*kr+st*zi,a[7]=be*dt+Re*En+ze*qr+st*Os,a[11]=be*Nt+Re*vr+ze*jr+st*Hs,a[15]=be*nt+Re*br+ze*ai+st*ci,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],n=e[4],r=e[8],a=e[12],o=e[1],c=e[5],u=e[9],f=e[13],g=e[2],v=e[6],M=e[10],R=e[14],I=e[3],re=e[7],ne=e[11],J=e[15],be=u*R-f*M,Re=c*R-f*v,ze=c*M-u*v,st=o*R-f*g,et=o*M-u*g,dt=o*v-c*g;return t*(re*be-ne*Re+J*ze)-n*(I*be-ne*st+J*et)+r*(I*Re-re*st+J*dt)-a*(I*ze-re*et+ne*dt)}transpose(){const e=this.elements;let 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){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],a=e[3],o=e[4],c=e[5],u=e[6],f=e[7],g=e[8],v=e[9],M=e[10],R=e[11],I=e[12],re=e[13],ne=e[14],J=e[15],be=v*ne*f-re*M*f+re*u*R-c*ne*R-v*u*J+c*M*J,Re=I*M*f-g*ne*f-I*u*R+o*ne*R+g*u*J-o*M*J,ze=g*re*f-I*v*f+I*c*R-o*re*R-g*c*J+o*v*J,st=I*v*u-g*re*u-I*c*M+o*re*M+g*c*ne-o*v*ne,et=t*be+n*Re+r*ze+a*st;if(et===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const dt=1/et;return e[0]=be*dt,e[1]=(re*M*a-v*ne*a-re*r*R+n*ne*R+v*r*J-n*M*J)*dt,e[2]=(c*ne*a-re*u*a+re*r*f-n*ne*f-c*r*J+n*u*J)*dt,e[3]=(v*u*a-c*M*a-v*r*f+n*M*f+c*r*R-n*u*R)*dt,e[4]=Re*dt,e[5]=(g*ne*a-I*M*a+I*r*R-t*ne*R-g*r*J+t*M*J)*dt,e[6]=(I*u*a-o*ne*a-I*r*f+t*ne*f+o*r*J-t*u*J)*dt,e[7]=(o*M*a-g*u*a+g*r*f-t*M*f-o*r*R+t*u*R)*dt,e[8]=ze*dt,e[9]=(I*v*a-g*re*a-I*n*R+t*re*R+g*n*J-t*v*J)*dt,e[10]=(o*re*a-I*c*a+I*n*f-t*re*f-o*n*J+t*c*J)*dt,e[11]=(g*c*a-o*v*a-g*n*f+t*v*f+o*n*R-t*c*R)*dt,e[12]=st*dt,e[13]=(g*re*r-I*v*r+I*n*M-t*re*M-g*n*ne+t*v*ne)*dt,e[14]=(I*c*r-o*re*r-I*n*u+t*re*u+o*n*ne-t*c*ne)*dt,e[15]=(o*v*r-g*c*r+g*n*u-t*v*u-o*n*M+t*c*M)*dt,this}scale(e){const t=this.elements,n=e.x,r=e.y,a=e.z;return t[0]*=n,t[4]*=r,t[8]*=a,t[1]*=n,t[5]*=r,t[9]*=a,t[2]*=n,t[6]*=r,t[10]*=a,t[3]*=n,t[7]*=r,t[11]*=a,this}getMaxScaleOnAxis(){const 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],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,r))}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){const 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){const 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){const 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){const n=Math.cos(t),r=Math.sin(t),a=1-n,o=e.x,c=e.y,u=e.z,f=a*o,g=a*c;return this.set(f*o+n,f*c-r*u,f*u+r*c,0,f*c+r*u,g*c+n,g*u-r*o,0,f*u-r*c,g*u+r*o,a*u*u+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,r,a,o){return this.set(1,n,a,0,e,1,o,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){const r=this.elements,a=t._x,o=t._y,c=t._z,u=t._w,f=a+a,g=o+o,v=c+c,M=a*f,R=a*g,I=a*v,re=o*g,ne=o*v,J=c*v,be=u*f,Re=u*g,ze=u*v,st=n.x,et=n.y,dt=n.z;return r[0]=(1-(re+J))*st,r[1]=(R+ze)*st,r[2]=(I-Re)*st,r[3]=0,r[4]=(R-ze)*et,r[5]=(1-(M+J))*et,r[6]=(ne+be)*et,r[7]=0,r[8]=(I+Re)*dt,r[9]=(ne-be)*dt,r[10]=(1-(M+re))*dt,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){const r=this.elements;if(e.x=r[12],e.y=r[13],e.z=r[14],this.determinant()===0)return n.set(1,1,1),t.identity(),this;let a=uo.set(r[0],r[1],r[2]).length();const o=uo.set(r[4],r[5],r[6]).length(),c=uo.set(r[8],r[9],r[10]).length();this.determinant()<0&&(a=-a),Ra.copy(this);const f=1/a,g=1/o,v=1/c;return Ra.elements[0]*=f,Ra.elements[1]*=f,Ra.elements[2]*=f,Ra.elements[4]*=g,Ra.elements[5]*=g,Ra.elements[6]*=g,Ra.elements[8]*=v,Ra.elements[9]*=v,Ra.elements[10]*=v,t.setFromRotationMatrix(Ra),n.x=a,n.y=o,n.z=c,this}makePerspective(e,t,n,r,a,o,c=sl,u=!1){const f=this.elements,g=2*a/(t-e),v=2*a/(n-r),M=(t+e)/(t-e),R=(n+r)/(n-r);let I,re;if(u)I=a/(o-a),re=o*a/(o-a);else if(c===sl)I=-(o+a)/(o-a),re=-2*o*a/(o-a);else if(c===Bl)I=-o/(o-a),re=-o*a/(o-a);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+c);return f[0]=g,f[4]=0,f[8]=M,f[12]=0,f[1]=0,f[5]=v,f[9]=R,f[13]=0,f[2]=0,f[6]=0,f[10]=I,f[14]=re,f[3]=0,f[7]=0,f[11]=-1,f[15]=0,this}makeOrthographic(e,t,n,r,a,o,c=sl,u=!1){const f=this.elements,g=2/(t-e),v=2/(n-r),M=-(t+e)/(t-e),R=-(n+r)/(n-r);let I,re;if(u)I=1/(o-a),re=o/(o-a);else if(c===sl)I=-2/(o-a),re=-(o+a)/(o-a);else if(c===Bl)I=-1/(o-a),re=-a/(o-a);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+c);return f[0]=g,f[4]=0,f[8]=0,f[12]=M,f[1]=0,f[5]=v,f[9]=0,f[13]=R,f[2]=0,f[6]=0,f[10]=I,f[14]=re,f[3]=0,f[7]=0,f[11]=0,f[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<16;r++)if(t[r]!==n[r])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){const 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}}const uo=new ce,Ra=new ti,qo=new ce(0,0,0),ec=new ce(1,1,1),ga=new ce,fl=new ce,po=new ce,Sc=new ti,ps=new je;class xo{constructor(e=0,t=0,n=0,r=xo.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=r}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,r=this._order){return this._x=e,this._y=t,this._z=n,this._order=r,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){const r=e.elements,a=r[0],o=r[4],c=r[8],u=r[1],f=r[5],g=r[9],v=r[2],M=r[6],R=r[10];switch(t){case"XYZ":this._y=Math.asin(to(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-g,R),this._z=Math.atan2(-o,a)):(this._x=Math.atan2(M,f),this._z=0);break;case"YXZ":this._x=Math.asin(-to(g,-1,1)),Math.abs(g)<.9999999?(this._y=Math.atan2(c,R),this._z=Math.atan2(u,f)):(this._y=Math.atan2(-v,a),this._z=0);break;case"ZXY":this._x=Math.asin(to(M,-1,1)),Math.abs(M)<.9999999?(this._y=Math.atan2(-v,R),this._z=Math.atan2(-o,f)):(this._y=0,this._z=Math.atan2(u,a));break;case"ZYX":this._y=Math.asin(-to(v,-1,1)),Math.abs(v)<.9999999?(this._x=Math.atan2(M,R),this._z=Math.atan2(u,a)):(this._x=0,this._z=Math.atan2(-o,f));break;case"YZX":this._z=Math.asin(to(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(-g,f),this._y=Math.atan2(-v,a)):(this._x=0,this._y=Math.atan2(c,R));break;case"XZY":this._z=Math.asin(-to(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(M,f),this._y=Math.atan2(c,a)):(this._x=Math.atan2(-g,R),this._y=0);break;default:Qr("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Sc.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Sc,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return ps.setFromEuler(this),this.setFromQuaternion(ps,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}}xo.DEFAULT_ORDER="XYZ";class lc{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&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(c=>cA(Dc({},c),{boundingBox:c.boundingBox?c.boundingBox.toJSON():void 0,boundingSphere:c.boundingSphere?c.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(c=>Dc({},c)),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function a(c,u){return c[u.uuid]===void 0&&(c[u.uuid]=u.toJSON(e)),u.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=a(e.geometries,this.geometry);const c=this.geometry.parameters;if(c!==void 0&&c.shapes!==void 0){const u=c.shapes;if(Array.isArray(u))for(let f=0,g=u.length;f0){r.children=[];for(let c=0;c0){r.animations=[];for(let c=0;c0&&(n.geometries=c),u.length>0&&(n.materials=u),f.length>0&&(n.textures=f),g.length>0&&(n.images=g),v.length>0&&(n.shapes=v),M.length>0&&(n.skeletons=M),R.length>0&&(n.animations=R),I.length>0&&(n.nodes=I)}return n.object=r,n;function o(c){const u=[];for(const f in c){const g=c[f];delete g.metadata,u.push(g)}return u}}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?r.multiplyScalar(1/Math.sqrt(a)):r.set(0,0,0)}static getBarycoord(e,t,n,r,a){mh.subVectors(r,t),qh.subVectors(n,t),Dd.subVectors(e,t);const o=mh.dot(mh),c=mh.dot(qh),u=mh.dot(Dd),f=qh.dot(qh),g=qh.dot(Dd),v=o*f-c*c;if(v===0)return a.set(0,0,0),null;const M=1/v,R=(f*u-c*g)*M,I=(o*g-c*u)*M;return a.set(1-R-I,I,R)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,Jh)===null?!1:Jh.x>=0&&Jh.y>=0&&Jh.x+Jh.y<=1}static getInterpolation(e,t,n,r,a,o,c,u){return this.getBarycoord(e,t,n,r,Jh)===null?(u.x=0,u.y=0,"z"in u&&(u.z=0),"w"in u&&(u.w=0),null):(u.setScalar(0),u.addScaledVector(a,Jh.x),u.addScaledVector(o,Jh.y),u.addScaledVector(c,Jh.z),u)}static getInterpolatedAttribute(e,t,n,r,a,o){return eh.setScalar(0),th.setScalar(0),Mf.setScalar(0),eh.fromBufferAttribute(e,t),th.fromBufferAttribute(e,n),Mf.fromBufferAttribute(e,r),o.setScalar(0),o.addScaledVector(eh,a.x),o.addScaledVector(th,a.y),o.addScaledVector(Mf,a.z),o}static isFrontFacing(e,t,n,r){return mh.subVectors(n,t),qh.subVectors(e,t),mh.cross(qh).dot(r)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,n,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,r),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 mh.subVectors(this.c,this.b),qh.subVectors(this.a,this.b),mh.cross(qh).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Kl.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Kl.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,r,a){return Kl.getInterpolation(e,this.a,this.b,this.c,t,n,r,a)}containsPoint(e){return Kl.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Kl.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,r=this.b,a=this.c;let o,c;Zl.subVectors(r,n),Ju.subVectors(a,n),Fl.subVectors(e,n);const u=Zl.dot(Fl),f=Ju.dot(Fl);if(u<=0&&f<=0)return t.copy(n);ml.subVectors(e,r);const g=Zl.dot(ml),v=Ju.dot(ml);if(g>=0&&v<=g)return t.copy(r);const M=u*v-g*f;if(M<=0&&u>=0&&g<=0)return o=u/(u-g),t.copy(n).addScaledVector(Zl,o);uu.subVectors(e,a);const R=Zl.dot(uu),I=Ju.dot(uu);if(I>=0&&R<=I)return t.copy(a);const re=R*f-u*I;if(re<=0&&f>=0&&I<=0)return c=f/(f-I),t.copy(n).addScaledVector(Ju,c);const ne=g*I-R*v;if(ne<=0&&v-g>=0&&R-I>=0)return Gf.subVectors(a,r),c=(v-g)/(v-g+(R-I)),t.copy(r).addScaledVector(Gf,c);const J=1/(ne+re+M);return o=re*J,c=M*J,t.copy(n).addScaledVector(Zl,o).addScaledVector(Ju,c)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const WA={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},Tf={h:0,s:0,l:0},hA={h:0,s:0,l:0};function vh(i,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?i+(e-i)*6*t:t<1/2?e:t<2/3?i+(e-i)*6*(2/3-t):i}class li{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){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Ql){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,wr.colorSpaceToWorking(this,t),this}setRGB(e,t,n,r=wr.workingColorSpace){return this.r=e,this.g=t,this.b=n,wr.colorSpaceToWorking(this,r),this}setHSL(e,t,n,r=wr.workingColorSpace){if(e=vd(e,1),t=to(t,0,1),n=to(n,0,1),t===0)this.r=this.g=this.b=n;else{const a=n<=.5?n*(1+t):n+t-n*t,o=2*n-a;this.r=vh(o,a,e+1/3),this.g=vh(o,a,e),this.b=vh(o,a,e-1/3)}return wr.colorSpaceToWorking(this,r),this}setStyle(e,t=Ql){function n(a){a!==void 0&&parseFloat(a)<1&&Qr("Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let a;const o=r[1],c=r[2];switch(o){case"rgb":case"rgba":if(a=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(c))return n(a[4]),this.setRGB(Math.min(255,parseInt(a[1],10))/255,Math.min(255,parseInt(a[2],10))/255,Math.min(255,parseInt(a[3],10))/255,t);if(a=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(c))return n(a[4]),this.setRGB(Math.min(100,parseInt(a[1],10))/100,Math.min(100,parseInt(a[2],10))/100,Math.min(100,parseInt(a[3],10))/100,t);break;case"hsl":case"hsla":if(a=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(c))return n(a[4]),this.setHSL(parseFloat(a[1])/360,parseFloat(a[2])/100,parseFloat(a[3])/100,t);break;default:Qr("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const a=r[1],o=a.length;if(o===3)return this.setRGB(parseInt(a.charAt(0),16)/15,parseInt(a.charAt(1),16)/15,parseInt(a.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(a,16),t);Qr("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Ql){const n=WA[e.toLowerCase()];return n!==void 0?this.setHex(n,t):Qr("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=Gr(e.r),this.g=Gr(e.g),this.b=Gr(e.b),this}copyLinearToSRGB(e){return this.r=yi(e.r),this.g=yi(e.g),this.b=yi(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Ql){return wr.workingToColorSpace($l.copy(this),e),Math.round(to($l.r*255,0,255))*65536+Math.round(to($l.g*255,0,255))*256+Math.round(to($l.b*255,0,255))}getHexString(e=Ql){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=wr.workingColorSpace){wr.workingToColorSpace($l.copy(this),t);const n=$l.r,r=$l.g,a=$l.b,o=Math.max(n,r,a),c=Math.min(n,r,a);let u,f;const g=(c+o)/2;if(c===o)u=0,f=0;else{const v=o-c;switch(f=g<=.5?v/(o+c):v/(2-o-c),o){case n:u=(r-a)/v+(r0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){Qr(`Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){Qr(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,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.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),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!==_e&&(n.blending=this.blending),this.side!==Y&&(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!==Kn&&(n.blendSrc=this.blendSrc),this.blendDst!==_r&&(n.blendDst=this.blendDst),this.blendEquation!==_t&&(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!==pe&&(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!==nu&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Du&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Du&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Du&&(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.allowOverride===!1&&(n.allowOverride=!1),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 r(a){const o=[];for(const c in a){const u=a[c];delete u.metadata,o.push(u)}return o}if(t){const a=r(e.textures),o=r(e.images);a.length>0&&(n.textures=a),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;const t=e.clippingPlanes;let n=null;if(t!==null){const r=t.length;n=new Array(r);for(let a=0;a!==r;++a)n[a]=t[a].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.allowOverride=e.allowOverride,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++}}class Gc extends Nc{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new li(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 xo,this.combine=dn,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}}const Af=ym();function ym(){const i=new ArrayBuffer(4),e=new Float32Array(i),t=new Uint32Array(i),n=new Uint32Array(512),r=new Uint32Array(512);for(let u=0;u<256;++u){const f=u-127;f<-27?(n[u]=0,n[u|256]=32768,r[u]=24,r[u|256]=24):f<-14?(n[u]=1024>>-f-14,n[u|256]=1024>>-f-14|32768,r[u]=-f-1,r[u|256]=-f-1):f<=15?(n[u]=f+15<<10,n[u|256]=f+15<<10|32768,r[u]=13,r[u|256]=13):f<128?(n[u]=31744,n[u|256]=64512,r[u]=24,r[u|256]=24):(n[u]=31744,n[u|256]=64512,r[u]=13,r[u|256]=13)}const a=new Uint32Array(2048),o=new Uint32Array(64),c=new Uint32Array(64);for(let u=1;u<1024;++u){let f=u<<13,g=0;for(;!(f&8388608);)f<<=1,g-=8388608;f&=-8388609,g+=947912704,a[u]=f|g}for(let u=1024;u<2048;++u)a[u]=939524096+(u-1024<<13);for(let u=1;u<31;++u)o[u]=u<<23;o[31]=1199570944,o[32]=2147483648;for(let u=33;u<63;++u)o[u]=2147483648+(u-32<<23);o[63]=3347054592;for(let u=1;u<64;++u)u!==32&&(c[u]=1024);return{floatView:e,uint32View:t,baseTable:n,shiftTable:r,mantissaTable:a,exponentTable:o,offsetTable:c}}function Ac(i){Math.abs(i)>65504&&Qr("DataUtils.toHalfFloat(): Value out of range."),i=to(i,-65504,65504),Af.floatView[0]=i;const e=Af.uint32View[0],t=e>>23&511;return Af.baseTable[t]+((e&8388607)>>Af.shiftTable[t])}function kd(i){const e=i>>10;return Af.uint32View[0]=Af.mantissaTable[Af.offsetTable[e]+(i&1023)]+Af.exponentTable[e],Af.floatView[0]}class Vy{static toHalfFloat(e){return Ac(e)}static fromHalfFloat(e){return kd(e)}}const Xl=new ce,od=new de;let ld=0;class jl{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:ld++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=$h,this.updateRanges=[],this.gpuType=pt,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 r=0,a=this.itemSize;rt.count&&Qr("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 q);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){ri("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new ce(-1/0,-1/0,-1/0),new ce(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,r=t.length;n0&&(e.userData=this.userData),this.parameters!==void 0){const u=this.parameters;for(const f in u)u[f]!==void 0&&(e[f]=u[f]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const u in n){const f=n[u];e.data.attributes[u]=f.toJSON(e.data)}const r={};let a=!1;for(const u in this.morphAttributes){const f=this.morphAttributes[u],g=[];for(let v=0,M=f.length;v0&&(r[u]=g,a=!0)}a&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const c=this.boundingSphere;return c!==null&&(e.data.boundingSphere=c.toJSON()),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;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const r=e.attributes;for(const f in r){const g=r[f];this.setAttribute(f,g.clone(t))}const a=e.morphAttributes;for(const f in a){const g=[],v=a[f];for(let M=0,R=v.length;M0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,o=r.length;ayg(e.far-e.near,2)))&&(Fp.copy(a).invert(),Lc.copy(e.ray).applyMatrix4(Fp),!(n.boundingBox!==null&&Lc.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Lc)))}_computeIntersections(e,t,n){let r;const a=this.geometry,o=this.material,c=a.index,u=a.attributes.position,f=a.attributes.uv,g=a.attributes.uv1,v=a.attributes.normal,M=a.groups,R=a.drawRange;if(c!==null)if(Array.isArray(o))for(let I=0,re=M.length;It.far?null:{distance:f,point:qA.clone(),object:i}}function Dp(i,e,t,n,r,a,o,c,u,f){i.getVertexPosition(c,XA),i.getVertexPosition(u,jA),i.getVertexPosition(f,YA);const g=C0(i,e,t,n,XA,jA,YA,bm);if(g){const v=new ce;Kl.getBarycoord(bm,XA,jA,YA,v),r&&(g.uv=Kl.getInterpolatedAttribute(r,c,u,f,v,new de)),a&&(g.uv1=Kl.getInterpolatedAttribute(a,c,u,f,v,new de)),o&&(g.normal=Kl.getInterpolatedAttribute(o,c,u,f,v,new ce),g.normal.dot(n.direction)>0&&g.normal.multiplyScalar(-1));const M={a:c,b:u,c:f,normal:new ce,materialIndex:0};Kl.getNormal(XA,jA,YA,M.normal),g.face=M,g.barycoord=v}return g}class yd extends Eo{constructor(e=1,t=1,n=1,r=1,a=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:a,depthSegments:o};const c=this;r=Math.floor(r),a=Math.floor(a),o=Math.floor(o);const u=[],f=[],g=[],v=[];let M=0,R=0;I("z","y","x",-1,-1,n,t,e,o,a,0),I("z","y","x",1,-1,n,t,-e,o,a,1),I("x","z","y",1,1,e,n,t,r,o,2),I("x","z","y",1,-1,e,n,-t,r,o,3),I("x","y","z",1,-1,e,t,n,r,a,4),I("x","y","z",-1,-1,e,t,-n,r,a,5),this.setIndex(u),this.setAttribute("position",new Pa(f,3)),this.setAttribute("normal",new Pa(g,3)),this.setAttribute("uv",new Pa(v,2));function I(re,ne,J,be,Re,ze,st,et,dt,Nt,nt){const mt=ze/dt,En=st/Nt,vr=ze/2,br=st/2,kr=et/2,qr=dt+1,jr=Nt+1;let ai=0,zi=0;const Os=new ce;for(let Hs=0;Hs0?1:-1,g.push(Os.x,Os.y,Os.z),v.push(ws/dt),v.push(1-Hs/Nt),ai+=1}}for(let Hs=0;Hs0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const r in this.extensions)this.extensions[r]===!0&&(n[r]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class AA extends dc{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ti,this.projectionMatrix=new ti,this.projectionMatrixInverse=new ti,this.coordinateSystem=sl,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}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)}}const cd=new ce,xh=new de,wm=new de;class Ko extends AA{constructor(e=50,t=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=r,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){const t=.5*this.getFilmHeight()/e;this.fov=Uh*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Wl*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Uh*2*Math.atan(Math.tan(Wl*.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){cd.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(cd.x,cd.y).multiplyScalar(-e/cd.z),cd.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(cd.x,cd.y).multiplyScalar(-e/cd.z)}getViewSize(e,t){return this.getViewBounds(e,xh,wm),t.subVectors(wm,xh)}setViewOffset(e,t,n,r,a,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=r,this.view.width=a,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Wl*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,a=-.5*r;const o=this.view;if(this.view!==null&&this.view.enabled){const u=o.fullWidth,f=o.fullHeight;a+=o.offsetX*r/u,t-=o.offsetY*n/f,r*=o.width/u,n*=o.height/f}const c=this.filmOffset;c!==0&&(a+=e*c/this.getFilmWidth()),this.projectionMatrix.makePerspective(a,a+r,t,t-n,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const 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}}const ep=-90,tp=1;class bg extends dc{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new Ko(ep,tp,e,t);r.layers=this.layers,this.add(r);const a=new Ko(ep,tp,e,t);a.layers=this.layers,this.add(a);const o=new Ko(ep,tp,e,t);o.layers=this.layers,this.add(o);const c=new Ko(ep,tp,e,t);c.layers=this.layers,this.add(c);const u=new Ko(ep,tp,e,t);u.layers=this.layers,this.add(u);const f=new Ko(ep,tp,e,t);f.layers=this.layers,this.add(f)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,r,a,o,c,u]=t;for(const f of t)this.remove(f);if(e===sl)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),a.up.set(0,0,-1),a.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),c.up.set(0,1,0),c.lookAt(0,0,1),u.up.set(0,1,0),u.lookAt(0,0,-1);else if(e===Bl)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),a.up.set(0,0,1),a.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),c.up.set(0,-1,0),c.lookAt(0,0,1),u.up.set(0,-1,0),u.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const f of t)this.add(f),f.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[a,o,c,u,f,g]=this.children,v=e.getRenderTarget(),M=e.getActiveCubeFace(),R=e.getActiveMipmapLevel(),I=e.xr.enabled;e.xr.enabled=!1;const re=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,r),e.render(t,a),e.setRenderTarget(n,1,r),e.render(t,o),e.setRenderTarget(n,2,r),e.render(t,c),e.setRenderTarget(n,3,r),e.render(t,u),e.setRenderTarget(n,4,r),e.render(t,f),n.texture.generateMipmaps=re,e.setRenderTarget(n,5,r),e.render(t,g),e.setRenderTarget(v,M,R),e.xr.enabled=I,n.texture.needsPMREMUpdate=!0}}class pf extends ss{constructor(e=[],t=at,n,r,a,o,c,u,f,g){super(e,t,n,r,a,o,c,u,f,g),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Sm extends ra{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new pf(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}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;const n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},r=new yd(5,5,5),a=new tf({name:"CubemapFromEquirect",uniforms:dA(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:fe,blending:Me});a.uniforms.tEquirect.value=t;const o=new Mc(r,a),c=t.minFilter;return t.minFilter===Fi&&(t.minFilter=Pr),new bg(1,10,this).update(e,o),t.minFilter=c,o.geometry.dispose(),o.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){const a=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,n,r);e.setRenderTarget(a)}}class xd extends dc{constructor(){super(),this.isGroup=!0,this.type="Group"}}const P0={type:"move"};class Mo{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new xd,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 xd,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new ce,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new ce),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new xd,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new ce,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new ce),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){const t=this._hand;if(t)for(const 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 r=null,a=null,o=null;const c=this._targetRay,u=this._grip,f=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(f&&e.hand){o=!0;for(const re of e.hand.values()){const ne=t.getJointPose(re,n),J=this._getHandJoint(f,re);ne!==null&&(J.matrix.fromArray(ne.transform.matrix),J.matrix.decompose(J.position,J.rotation,J.scale),J.matrixWorldNeedsUpdate=!0,J.jointRadius=ne.radius),J.visible=ne!==null}const g=f.joints["index-finger-tip"],v=f.joints["thumb-tip"],M=g.position.distanceTo(v.position),R=.02,I=.005;f.inputState.pinching&&M>R+I?(f.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!f.inputState.pinching&&M<=R-I&&(f.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else u!==null&&e.gripSpace&&(a=t.getPose(e.gripSpace,n),a!==null&&(u.matrix.fromArray(a.transform.matrix),u.matrix.decompose(u.position,u.rotation,u.scale),u.matrixWorldNeedsUpdate=!0,a.linearVelocity?(u.hasLinearVelocity=!0,u.linearVelocity.copy(a.linearVelocity)):u.hasLinearVelocity=!1,a.angularVelocity?(u.hasAngularVelocity=!0,u.angularVelocity.copy(a.angularVelocity)):u.hasAngularVelocity=!1));c!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&a!==null&&(r=a),r!==null&&(c.matrix.fromArray(r.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.matrixWorldNeedsUpdate=!0,r.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(r.linearVelocity)):c.hasLinearVelocity=!1,r.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(r.angularVelocity)):c.hasAngularVelocity=!1,this.dispatchEvent(P0)))}return c!==null&&(c.visible=r!==null),u!==null&&(u.visible=a!==null),f!==null&&(f.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new xd;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Th{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new li(e),this.density=t}clone(){return new Th(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class Em{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new li(e),this.near=t,this.far=n}clone(){return new Em(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Op extends dc{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 xo,this.environmentIntensity=1,this.environmentRotation=new xo,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__!="undefined"&&__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){const 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}}class Vd{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=$h,this.updateRanges=[],this.version=0,this.uuid=Yu()}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.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let r=0,a=this.stride;re.far||t.push({distance:u,point:kp.clone(),uv:Kl.getInterpolation(kp,Qf,_d,ip,Hp,sp,I0,new de),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function ud(i,e,t,n,r,a){rp.subVectors(i,t).addScalar(.5).multiply(n),r!==void 0?(Vp.x=a*rp.x-r*rp.y,Vp.y=r*rp.x+a*rp.y):Vp.copy(rp),i.copy(e),i.x+=Vp.x,i.y+=Vp.y,i.applyMatrix4(gA)}const Hd=new ce,Gp=new ce;class Iv extends null{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,r=t.length;n0){let n,r;for(n=1,r=t.length;n0){Hd.setFromMatrixPosition(this.matrixWorld);const r=e.ray.origin.distanceTo(Hd);this.getObjectForDistance(r).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){Hd.setFromMatrixPosition(e.matrixWorld),Gp.setFromMatrixPosition(this.matrixWorld);const n=Hd.distanceTo(Gp)/e.zoom;t[0].object.visible=!0;let r,a;for(r=1,a=t.length;r=o)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r1?null:t.copy(e.start).addScaledVector(n,a)}intersectsLine(e){const 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){const n=t||Nv.getNormalMatrix(e),r=this.coplanarPoint(gc).applyMatrix4(e),a=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(a),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)}}const Wf=new Ii,Lv=new de(.5,.5),zd=new ce;class Qp{constructor(e=new Gh,t=new Gh,n=new Gh,r=new Gh,a=new Gh,o=new Gh){this.planes=[e,t,n,r,a,o]}set(e,t,n,r,a,o){const c=this.planes;return c[0].copy(e),c[1].copy(t),c[2].copy(n),c[3].copy(r),c[4].copy(a),c[5].copy(o),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=sl,n=!1){const r=this.planes,a=e.elements,o=a[0],c=a[1],u=a[2],f=a[3],g=a[4],v=a[5],M=a[6],R=a[7],I=a[8],re=a[9],ne=a[10],J=a[11],be=a[12],Re=a[13],ze=a[14],st=a[15];if(r[0].setComponents(f-o,R-g,J-I,st-be).normalize(),r[1].setComponents(f+o,R+g,J+I,st+be).normalize(),r[2].setComponents(f+c,R+v,J+re,st+Re).normalize(),r[3].setComponents(f-c,R-v,J-re,st-Re).normalize(),n)r[4].setComponents(u,M,ne,ze).normalize(),r[5].setComponents(f-u,R-M,J-ne,st-ze).normalize();else if(r[4].setComponents(f-u,R-M,J-ne,st-ze).normalize(),t===sl)r[5].setComponents(f+u,R+M,J+ne,st+ze).normalize();else if(t===Bl)r[5].setComponents(u,M,ne,ze).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(),Wf.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Wf.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Wf)}intersectsSprite(e){Wf.center.set(0,0,0);const t=Lv.distanceTo(e.center);return Wf.radius=.7071067811865476+t,Wf.applyMatrix4(e.matrixWorld),this.intersectsSphere(Wf)}intersectsSphere(e){const t=this.planes,n=e.center,r=-e.radius;for(let a=0;a<6;a++)if(t[a].distanceToPoint(n)0?e.max.x:e.min.x,zd.y=r.normal.y>0?e.max.y:e.min.y,zd.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(zd)<0)return!1}return!0}containsPoint(e){const 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)}}const Rf=new ti,Pf=new Qp;class Lm{constructor(){this.coordinateSystem=sl}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let n=0;n=a.length&&a.push({start:-1,count:-1,z:-1,index:-1});const c=a[this.index];o.push(c),this.index++,c.start=e,c.count=t,c.z=n,c.index=r}reset(){this.list.length=0,this.index=0}}const hu=new ti,Zp=new li(1,1,1),fd=new Qp,bd=new Lm,vA=new q,bh=new Ii,Kp=new ce,U0=new ce,D0=new ce,$p=new Pu,Iu=new Mc,Rg=null;function Fv(i,e,t=0){const n=e.itemSize;if(i.isInterleavedBufferAttribute||i.array.constructor!==e.array.constructor){const r=i.count;for(let a=0;a65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new jl(a,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const n in t.attributes){if(!e.hasAttribute(n))throw new Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);const r=e.getAttribute(n),a=t.getAttribute(n);if(r.itemSize!==a.itemSize||r.normalized!==a.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new q);const e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,r=t.length;n=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const n={visible:!0,active:!0,geometryIndex:e};let r=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(Bg),r=this._availableInstanceIds.shift(),this._instanceInfo[r]=n):(r=this._instanceInfo.length,this._instanceInfo.push(n));const a=this._matricesTexture;hu.identity().toArray(a.image.data,r*16),a.needsUpdate=!0;const o=this._colorsTexture;return o&&(Zp.toArray(o.image.data,r*4),o.needsUpdate=!0),this._visibilityChanged=!0,r}addGeometry(e,t=-1,n=-1){this._initializeGeometry(e),this._validateGeometry(e);const r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},a=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=t===-1?e.getAttribute("position").count:t;const o=e.getIndex();if(o!==null&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=n===-1?o.count:n),r.indexStart!==-1&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let u;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(Bg),u=this._availableGeometryIds.shift(),a[u]=r):(u=this._geometryCount,this._geometryCount++,a.push(r)),this.setGeometryAt(u,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,u}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const n=this.geometry,r=n.getIndex()!==null,a=n.getIndex(),o=t.getIndex(),c=this._geometryInfo[e];if(r&&o.count>c.reservedIndexCount||t.attributes.position.count>c.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const u=c.vertexStart,f=c.reservedVertexCount;c.vertexCount=t.getAttribute("position").count;for(const g in n.attributes){const v=t.getAttribute(g),M=n.getAttribute(g);Fv(v,M,u);const R=v.itemSize;for(let I=v.count,re=f;I=t.length||t[e].active===!1)return this;const n=this._instanceInfo;for(let r=0,a=n.length;rc).sort((o,c)=>n[o].vertexStart-n[c].vertexStart),a=this.geometry;for(let o=0,c=n.length;o=this._geometryCount)return null;const n=this.geometry,r=this._geometryInfo[e];if(r.boundingBox===null){const a=new q,o=n.index,c=n.attributes.position;for(let u=r.start,f=r.start+r.count;u=this._geometryCount)return null;const n=this.geometry,r=this._geometryInfo[e];if(r.boundingSphere===null){const a=new Ii;this.getBoundingBoxAt(e,vA),vA.getCenter(a.center);const o=n.index,c=n.attributes.position;let u=0;for(let f=r.start,g=r.start+r.count;fc.active);if(Math.max(...n.map(c=>c.vertexStart+c.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(u=>u.indexStart+u.reservedIndexCount))>t)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);const a=this.geometry;a.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Eo,this._initializeGeometry(a));const o=this.geometry;a.index&&Zf(a.index.array,o.index.array);for(const c in a.attributes)Zf(a.attributes[c].array,o.attributes[c].array)}raycast(e,t){const n=this._instanceInfo,r=this._geometryInfo,a=this.matrixWorld,o=this.geometry;Iu.material=this.material,Iu.geometry.index=o.index,Iu.geometry.attributes=o.attributes,Iu.geometry.boundingBox===null&&(Iu.geometry.boundingBox=new q),Iu.geometry.boundingSphere===null&&(Iu.geometry.boundingSphere=new Ii);for(let c=0,u=n.length;ccA(Dc({},t),{boundingBox:t.boundingBox!==null?t.boundingBox.clone():null,boundingSphere:t.boundingSphere!==null?t.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(t=>Dc({},t)),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,n,r,a){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const o=r.getIndex(),c=o===null?1:o.array.BYTES_PER_ELEMENT,u=this._instanceInfo,f=this._multiDrawStarts,g=this._multiDrawCounts,v=this._geometryInfo,M=this.perObjectFrustumCulled,R=this._indirectTexture,I=R.image.data,re=n.isArrayCamera?bd:fd;M&&!n.isArrayCamera&&(hu.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),fd.setFromProjectionMatrix(hu,n.coordinateSystem,n.reversedDepth));let ne=0;if(this.sortObjects){hu.copy(this.matrixWorld).invert(),Kp.setFromMatrixPosition(n.matrixWorld).applyMatrix4(hu),U0.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(hu);for(let Re=0,ze=u.length;Re0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,o=r.length;an)return;ol.applyMatrix4(i.matrixWorld);const f=e.ray.origin.distanceTo(ol);if(!(fe.far))return{distance:f,point:aa.clone().applyMatrix4(i.matrixWorld),index:o,face:null,faceIndex:null,barycoord:null,object:i}}const Dm=new ce,Xp=new ce;class Ng extends null{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let r=0,a=t.count;r0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,o=r.length;ar.far)return;a.push({distance:f,distanceToRay:Math.sqrt(c),point:u,index:e,face:null,faceIndex:null,barycoord:null,object:o})}}class km extends null{constructor(e,t,n,r,a=Pr,o=Pr,c,u,f){super(e,t,n,r,a,o,c,u,f),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const g=this;function v(){g.needsUpdate=!0,g._requestVideoFrameCallbackId=e.requestVideoFrameCallback(v)}"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(v))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class lp extends null{constructor(e,t,n,r,a,o,c,u){super({},e,t,n,r,a,o,c,u),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class Md extends ss{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=xn,this.minFilter=xn,this.generateMipmaps=!1,this.needsUpdate=!0}}class Fg extends null{constructor(e,t,n,r,a,o,c,u,f,g,v,M){super(null,o,c,u,f,g,r,a,v,M),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class Aa extends null{constructor(e,t,n,r,a,o){super(e,t,n,a,o),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=$t,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Ug extends null{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,at),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class cp extends null{constructor(e,t,n,r,a,o,c,u,f){super(e,t,n,r,a,o,c,u,f),this.isCanvasTexture=!0,this.needsUpdate=!0}}class cc extends ss{constructor(e,t,n=ct,r,a,o,c=xn,u=xn,f,g=W,v=1){if(g!==W&&g!==S)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const M={width:e,height:t,depth:v};super(M,r,a,o,c,u,g,n,f),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Cs(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class Dg extends cc{constructor(e,t=ct,n=at,r,a,o=xn,c=xn,u,f=W){const g={width:e,height:e,depth:1},v=[g,g,g,g,g,g];super(e,e,t,n,r,a,o,c,u,f),this.image=v,this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}}class Pl extends ss{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class mc extends Eo{constructor(e=1,t=1,n=4,r=8,a=1){super(),this.type="CapsuleGeometry",this.parameters={radius:e,height:t,capSegments:n,radialSegments:r,heightSegments:a},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),r=Math.max(3,Math.floor(r)),a=Math.max(1,Math.floor(a));const o=[],c=[],u=[],f=[],g=t/2,v=Math.PI/2*e,M=t,R=2*v+M,I=n*2+a,re=r+1,ne=new ce,J=new ce;for(let be=0;be<=I;be++){let Re=0,ze=0,st=0,et=0;if(be<=n){const nt=be/n,mt=nt*Math.PI/2;ze=-g-e*Math.cos(mt),st=e*Math.sin(mt),et=-e*Math.cos(mt),Re=nt*v}else if(be<=n+a){const nt=(be-n)/a;ze=-g+nt*t,st=e,et=0,Re=v+nt*M}else{const nt=(be-n-a)/n,mt=nt*Math.PI/2;ze=g+e*Math.sin(mt),st=e*Math.cos(mt),et=e*Math.sin(mt),Re=v+M+nt*v}const dt=Math.max(0,Math.min(1,Re/R));let Nt=0;be===0?Nt=.5/r:be===I&&(Nt=-.5/r);for(let nt=0;nt<=r;nt++){const mt=nt/r,En=mt*Math.PI*2,vr=Math.sin(En),br=Math.cos(En);J.x=-st*br,J.y=ze,J.z=st*vr,c.push(J.x,J.y,J.z),ne.set(-st*br,et,st*vr),ne.normalize(),u.push(ne.x,ne.y,ne.z),f.push(mt+Nt,dt)}if(be>0){const nt=(be-1)*re;for(let mt=0;mt0&&Re(!0),t>0&&Re(!1)),this.setIndex(g),this.setAttribute("position",new Pa(v,3)),this.setAttribute("normal",new Pa(M,3)),this.setAttribute("uv",new Pa(R,2));function be(){const ze=new ce,st=new ce;let et=0;const dt=(t-e)/n;for(let Nt=0;Nt<=a;Nt++){const nt=[],mt=Nt/a,En=mt*(t-e)+e;for(let vr=0;vr<=r;vr++){const br=vr/r,kr=br*u+c,qr=Math.sin(kr),jr=Math.cos(kr);st.x=En*qr,st.y=-mt*n+ne,st.z=En*jr,v.push(st.x,st.y,st.z),ze.set(qr,dt,jr).normalize(),M.push(ze.x,ze.y,ze.z),R.push(br,1-mt),nt.push(I++)}re.push(nt)}for(let Nt=0;Nt0||nt!==0)&&(g.push(mt,En,br),et+=3),(t>0||nt!==a-1)&&(g.push(En,vr,br),et+=3)}f.addGroup(J,et,0),J+=et}function Re(ze){const st=I,et=new de,dt=new ce;let Nt=0;const nt=ze===!0?e:t,mt=ze===!0?1:-1;for(let vr=1;vr<=r;vr++)v.push(0,ne*mt,0),M.push(0,mt,0),R.push(.5,.5),I++;const En=I;for(let vr=0;vr<=r;vr++){const kr=vr/r*u+c,qr=Math.cos(kr),jr=Math.sin(kr);dt.x=nt*jr,dt.y=ne*mt,dt.z=nt*qr,v.push(dt.x,dt.y,dt.z),M.push(0,mt,0),et.x=qr*.5+.5,et.y=jr*.5*mt+.5,R.push(et.x,et.y),I++}for(let vr=0;vr.9&&dt<.1&&(Re<.2&&(o[be+0]+=1),ze<.2&&(o[be+2]+=1),st<.2&&(o[be+4]+=1))}}function M(be){a.push(be.x,be.y,be.z)}function R(be,Re){const ze=be*3;Re.x=e[ze+0],Re.y=e[ze+1],Re.z=e[ze+2]}function I(){const be=new ce,Re=new ce,ze=new ce,st=new ce,et=new de,dt=new de,Nt=new de;for(let nt=0,mt=0;nt0)u=r-1;else{u=r;break}if(r=u,n[r]===o)return r/(a-1);const g=n[r],M=n[r+1]-g,R=(o-g)/M;return(r+R)/(a-1)}getTangent(e,t){let r=e-1e-4,a=e+1e-4;r<0&&(r=0),a>1&&(a=1);const o=this.getPoint(r),c=this.getPoint(a),u=t||(o.isVector2?new de:new ce);return u.copy(c).sub(o).normalize(),u}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){const n=new ce,r=[],a=[],o=[],c=new ce,u=new ti;for(let R=0;R<=e;R++){const I=R/e;r[R]=this.getTangentAt(I,new ce)}a[0]=new ce,o[0]=new ce;let f=Number.MAX_VALUE;const g=Math.abs(r[0].x),v=Math.abs(r[0].y),M=Math.abs(r[0].z);g<=f&&(f=g,n.set(1,0,0)),v<=f&&(f=v,n.set(0,1,0)),M<=f&&n.set(0,0,1),c.crossVectors(r[0],n).normalize(),a[0].crossVectors(r[0],c),o[0].crossVectors(r[0],a[0]);for(let R=1;R<=e;R++){if(a[R]=a[R-1].clone(),o[R]=o[R-1].clone(),c.crossVectors(r[R-1],r[R]),c.length()>Number.EPSILON){c.normalize();const I=Math.acos(to(r[R-1].dot(r[R]),-1,1));a[R].applyMatrix4(u.makeRotationAxis(c,I))}o[R].crossVectors(r[R],a[R])}if(t===!0){let R=Math.acos(to(a[0].dot(a[e]),-1,1));R/=e,r[0].dot(c.crossVectors(a[0],a[e]))>0&&(R=-R);for(let I=1;I<=e;I++)a[I].applyMatrix4(u.makeRotationAxis(r[I],R*I)),o[I].crossVectors(r[I],a[I])}return{tangents:r,normals:a,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Yp extends $f{constructor(e=0,t=0,n=1,r=1,a=0,o=Math.PI*2,c=!1,u=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=r,this.aStartAngle=a,this.aEndAngle=o,this.aClockwise=c,this.aRotation=u}getPoint(e,t=new de){const n=t,r=Math.PI*2;let a=this.aEndAngle-this.aStartAngle;const o=Math.abs(a)r;)a-=r;a0?0:(Math.floor(Math.abs(c)/a)+1)*a:u===0&&c===a-1&&(c=a-2,u=1);let f,g;this.closed||c>0?f=r[(c-1)%a]:(fp.subVectors(r[0],r[1]).add(r[0]),f=fp);const v=r[c%a],M=r[(c+1)%a];if(this.closed||c+2r.length-2?r.length-1:o+1],v=r[o>r.length-3?r.length-1:o+2];return n.set(A(c,u.x,f.x,g.x,v.x),A(c,u.y,f.y,g.y,v.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){const o=r[a]-n,c=this.curves[a],u=c.getLength(),f=u===0?0:1-o/u;return c.getPointAt(f,t)}a++}return null}getLength(){const 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;const e=[];let t=0;for(let n=0,r=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){const v=f.getPoint(0);v.equals(this.currentPoint)||this.lineTo(v.x,v.y)}this.curves.push(f);const g=f.getPoint(1);return this.currentPoint.copy(g),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class Li extends Rs{constructor(e){super(e),this.uuid=Yu(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let n=0,r=this.holes.length;n80*t){c=i[0],u=i[1];let g=c,v=u;for(let M=t;Mg&&(g=R),I>v&&(v=I)}f=Math.max(g-c,v-u),f=f!==0?32767/f:0}return va(a,o,t,c,u,f,0),o}function ma(i,e,t,n,r){let a;if(r===wa(i,e,t,n)>0)for(let o=e;o=e;o-=n)a=Il(o/n|0,i[o],i[o+1],a);return a&&Wr(a,a.next)&&(So(a),a=a.next),a}function $s(i,e){if(!i)return i;e||(e=i);let t=i,n;do if(n=!1,!t.steiner&&(Wr(t,t.next)||yr(t.prev,t,t.next)===0)){if(So(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function va(i,e,t,n,r,a,o){if(!i)return;!o&&a&&$(i,n,r,a);let c=i;for(;i.prev!==i.next;){const u=i.prev,f=i.next;if(a?ho(i,n,r,a):ba(i)){e.push(u.i,i.i,f.i),So(i),i=f.next,c=f.next;continue}if(i=f,i===c){o?o===1?(i=Ul($s(i),e),va(i,e,t,n,r,a,2)):o===2&&Tc(i,e,t,n,r,a):va($s(i),e,t,n,r,a,1);break}}}function ba(i){const e=i.prev,t=i,n=i.next;if(yr(e,t,n)>=0)return!1;const r=e.x,a=t.x,o=n.x,c=e.y,u=t.y,f=n.y,g=Math.min(r,a,o),v=Math.min(c,u,f),M=Math.max(r,a,o),R=Math.max(c,u,f);let I=n.next;for(;I!==e;){if(I.x>=g&&I.x<=M&&I.y>=v&&I.y<=R&&mn(r,c,a,u,o,f,I.x,I.y)&&yr(I.prev,I,I.next)>=0)return!1;I=I.next}return!0}function ho(i,e,t,n){const r=i.prev,a=i,o=i.next;if(yr(r,a,o)>=0)return!1;const c=r.x,u=a.x,f=o.x,g=r.y,v=a.y,M=o.y,R=Math.min(c,u,f),I=Math.min(g,v,M),re=Math.max(c,u,f),ne=Math.max(g,v,M),J=rt(R,I,e,t,n),be=rt(re,ne,e,t,n);let Re=i.prevZ,ze=i.nextZ;for(;Re&&Re.z>=J&&ze&&ze.z<=be;){if(Re.x>=R&&Re.x<=re&&Re.y>=I&&Re.y<=ne&&Re!==r&&Re!==o&&mn(c,g,u,v,f,M,Re.x,Re.y)&&yr(Re.prev,Re,Re.next)>=0||(Re=Re.prevZ,ze.x>=R&&ze.x<=re&&ze.y>=I&&ze.y<=ne&&ze!==r&&ze!==o&&mn(c,g,u,v,f,M,ze.x,ze.y)&&yr(ze.prev,ze,ze.next)>=0))return!1;ze=ze.nextZ}for(;Re&&Re.z>=J;){if(Re.x>=R&&Re.x<=re&&Re.y>=I&&Re.y<=ne&&Re!==r&&Re!==o&&mn(c,g,u,v,f,M,Re.x,Re.y)&&yr(Re.prev,Re,Re.next)>=0)return!1;Re=Re.prevZ}for(;ze&&ze.z<=be;){if(ze.x>=R&&ze.x<=re&&ze.y>=I&&ze.y<=ne&&ze!==r&&ze!==o&&mn(c,g,u,v,f,M,ze.x,ze.y)&&yr(ze.prev,ze,ze.next)>=0)return!1;ze=ze.nextZ}return!0}function Ul(i,e){let t=i;do{const n=t.prev,r=t.next.next;!Wr(n,r)&&Ci(n,t,t.next,r)&&Oo(n,r)&&Oo(r,n)&&(e.push(n.i,t.i,r.i),So(t),So(t.next),t=i=r),t=t.next}while(t!==i);return $s(t)}function Tc(i,e,t,n,r,a){let o=i;do{let c=o.next.next;for(;c!==o.prev;){if(o.i!==c.i&&Er(o,c)){let u=Da(o,c);o=$s(o,o.next),u=$s(u,u.next),va(o,e,t,n,r,a,0),va(u,e,t,n,r,a,0);return}c=c.next}o=o.next}while(o!==i)}function Fc(i,e,t,n){const r=[];for(let a=0,o=e.length;a=t.next.y&&t.next.y!==t.y){const v=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(v<=n&&v>a&&(a=v,o=t.x=t.x&&t.x>=u&&n!==t.x&&yn(ro.x||t.x===o.x&&X(o,t)))&&(o=t,g=v)}t=t.next}while(t!==c);return o}function X(i,e){return yr(i.prev,i,e.prev)<0&&yr(e.next,i,i.next)<0}function $(i,e,t,n){let r=i;do r.z===0&&(r.z=rt(r.x,r.y,e,t,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==i);r.prevZ.nextZ=null,r.prevZ=null,Se(r)}function Se(i){let e,t=1;do{let n=i,r;i=null;let a=null;for(e=0;n;){e++;let o=n,c=0;for(let f=0;f0||u>0&&o;)c!==0&&(u===0||!o||n.z<=o.z)?(r=n,n=n.nextZ,c--):(r=o,o=o.nextZ,u--),a?a.nextZ=r:i=r,r.prevZ=a,a=r;n=o}a.nextZ=null,t*=2}while(e>1);return i}function rt(i,e,t,n,r){return i=(i-t)*r|0,e=(e-n)*r|0,i=(i|i<<8)&16711935,i=(i|i<<4)&252645135,i=(i|i<<2)&858993459,i=(i|i<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,i|e<<1}function Dt(i){let e=i,t=i;do(e.x=(i-o)*(a-c)&&(i-o)*(n-c)>=(t-o)*(e-c)&&(t-o)*(a-c)>=(r-o)*(n-c)}function mn(i,e,t,n,r,a,o,c){return!(i===o&&e===c)&&yn(i,e,t,n,r,a,o,c)}function Er(i,e){return i.next.i!==e.i&&i.prev.i!==e.i&&!ha(i,e)&&(Oo(i,e)&&Oo(e,i)&&Ka(i,e)&&(yr(i.prev,i,e.prev)||yr(i,e.prev,e))||Wr(i,e)&&yr(i.prev,i,i.next)>0&&yr(e.prev,e,e.next)>0)}function yr(i,e,t){return(e.y-i.y)*(t.x-e.x)-(e.x-i.x)*(t.y-e.y)}function Wr(i,e){return i.x===e.x&&i.y===e.y}function Ci(i,e,t,n){const r=Ls(yr(i,e,t)),a=Ls(yr(i,e,n)),o=Ls(yr(t,n,i)),c=Ls(yr(t,n,e));return!!(r!==a&&o!==c||r===0&&ya(i,t,e)||a===0&&ya(i,n,e)||o===0&&ya(t,i,n)||c===0&&ya(t,e,n))}function ya(i,e,t){return e.x<=Math.max(i.x,t.x)&&e.x>=Math.min(i.x,t.x)&&e.y<=Math.max(i.y,t.y)&&e.y>=Math.min(i.y,t.y)}function Ls(i){return i>0?1:i<0?-1:0}function ha(i,e){let t=i;do{if(t.i!==i.i&&t.next.i!==i.i&&t.i!==e.i&&t.next.i!==e.i&&Ci(t,t.next,i,e))return!0;t=t.next}while(t!==i);return!1}function Oo(i,e){return yr(i.prev,i,i.next)<0?yr(i,e,i.next)>=0&&yr(i,i.prev,e)>=0:yr(i,e,i.prev)<0||yr(i,i.next,e)<0}function Ka(i,e){let t=i,n=!1;const r=(i.x+e.x)/2,a=(i.y+e.y)/2;do t.y>a!=t.next.y>a&&t.next.y!==t.y&&r<(t.next.x-t.x)*(a-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==i);return n}function Da(i,e){const t=_o(i.i,i.x,i.y),n=_o(e.i,e.x,e.y),r=i.next,a=e.prev;return i.next=e,e.prev=i,t.next=r,r.prev=t,n.next=t,t.prev=n,a.next=n,n.prev=a,n}function Il(i,e,t,n){const r=_o(i,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function So(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function _o(i,e,t){return{i,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function wa(i,e,t,n){let r=0;for(let a=e,o=t-n;a2&&i[e-1].equals(i[0])&&i.pop()}function vu(i,e){for(let t=0;tNumber.EPSILON){const Ni=Math.sqrt(Ct),fs=Math.sqrt(la*la+Pn*Pn),Ui=Ps.x-Zo/Ni,mo=Ps.y+$a/Ni,pa=is.x-Pn/fs,fo=is.y+la/fs,jo=((pa-Ui)*Pn-(fo-mo)*la)/($a*Pn-Zo*la);oa=Ui+$a*jo-Ji.x,Gn=mo+Zo*jo-Ji.y;const Us=oa*oa+Gn*Gn;if(Us<=2)return new de(oa,Gn);Uo=Math.sqrt(Us/2)}else{let Ni=!1;$a>Number.EPSILON?la>Number.EPSILON&&(Ni=!0):$a<-Number.EPSILON?la<-Number.EPSILON&&(Ni=!0):Math.sign(Zo)===Math.sign(Pn)&&(Ni=!0),Ni?(oa=-Zo,Gn=$a,Uo=Math.sqrt(Ct)):(oa=$a,Gn=Zo,Uo=Math.sqrt(Ct/2))}return new de(oa/Uo,Gn/Uo)}const Os=[];for(let Ji=0,Ps=qr.length,is=Ps-1,oa=Ji+1;Ji=0;Ji--){const Ps=Ji/ne,is=R*Math.cos(Ps*Math.PI/2),oa=I*Math.sin(Ps*Math.PI/2)+re;for(let Gn=0,Uo=qr.length;Gn=0;){const oa=is;let Gn=is-1;Gn<0&&(Gn=Ji.length-1);for(let Uo=0,$a=g+ne*2;Uo<$a;Uo++){const Zo=ai*Uo,la=ai*(Uo+1),Pn=Ps+oa+Zo,Ct=Ps+Gn+Zo,Fr=Ps+Gn+la,Ni=Ps+oa+la;Co(Pn,Ct,Fr,Ni)}}}function za(Ji,Ps,is){u.push(Ji),u.push(Ps),u.push(is)}function Js(Ji,Ps,is){kl(Ji),kl(Ps),kl(is);const oa=r.length/3,Gn=be.generateTopUV(n,r,oa-3,oa-2,oa-1);Wo(Gn[0]),Wo(Gn[1]),Wo(Gn[2])}function Co(Ji,Ps,is,oa){kl(Ji),kl(Ps),kl(oa),kl(Ps),kl(is),kl(oa);const Gn=r.length/3,Uo=be.generateSideWallUV(n,r,Gn-6,Gn-3,Gn-2,Gn-1);Wo(Uo[0]),Wo(Uo[1]),Wo(Uo[3]),Wo(Uo[1]),Wo(Uo[2]),Wo(Uo[3])}function kl(Ji){r.push(u[Ji*3+0]),r.push(u[Ji*3+1]),r.push(u[Ji*3+2])}function Wo(Ji){a.push(Ji.x),a.push(Ji.y)}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON(),t=this.parameters.shapes,n=this.parameters.options;return Cc(t,n,e)}static fromJSON(e,t){const n=[];for(let a=0,o=e.shapes.length;a0)&&R.push(Re,ze,et),(J!==n-1||u0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class dw extends Nc{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new li(16777215),this.specular=new li(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new li(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=tu,this.normalScale=new de(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new xo,this.combine=dn,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,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.flatShading=e.flatShading,this.fog=e.fog,this}}class Aw extends Nc{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new li(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new li(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=tu,this.normalScale=new de(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,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.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class pw extends Nc{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=tu,this.normalScale=new de(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class l_ extends Nc{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new li(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new li(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=tu,this.normalScale=new de(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new xo,this.combine=dn,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,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.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,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.flatShading=e.flatShading,this.fog=e.fog,this}}class gw extends Nc{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Tl,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}}class mw extends Nc{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}}class c_ extends Nc{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new li(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=tu,this.normalScale=new de(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class zy extends zc{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Gm(i,e){return!i||i.constructor===e?i:typeof e.BYTES_PER_ELEMENT=="number"?new e(i):Array.prototype.slice.call(i)}function vw(i){function e(r,a){return i[r]-i[a]}const t=i.length,n=new Array(t);for(let r=0;r!==t;++r)n[r]=r;return n.sort(e),n}function u_(i,e,t){const n=i.length,r=new i.constructor(n);for(let a=0,o=0;o!==n;++a){const c=t[a]*e;for(let u=0;u!==e;++u)r[o++]=i[c+u]}return r}function h_(i,e,t,n){let r=1,a=i[0];for(;a!==void 0&&a[n]===void 0;)a=i[r++];if(a===void 0)return;let o=a[n];if(o!==void 0)if(Array.isArray(o))do o=a[n],o!==void 0&&(e.push(a.time),t.push(...o)),a=i[r++];while(a!==void 0);else if(o.toArray!==void 0)do o=a[n],o!==void 0&&(e.push(a.time),o.toArray(t,t.length)),a=i[r++];while(a!==void 0);else do o=a[n],o!==void 0&&(e.push(a.time),t.push(o)),a=i[r++];while(a!==void 0)}function IE(i,e,t,n,r=30){const a=i.clone();a.name=e;const o=[];for(let u=0;u=n)){v.push(f.times[R]);for(let re=0;rea.tracks[u].times[0]&&(c=a.tracks[u].times[0]);for(let u=0;u=c.times[I]){const J=I*v+g,be=J+v-g;re=c.values.slice(J,be)}else{const J=c.createInterpolant(),be=g,Re=v-g;J.evaluate(a),re=J.resultBuffer.slice(be,Re)}u==="quaternion"&&new je().fromArray(re).normalize().conjugate().toArray(re);const ne=f.times.length;for(let J=0;J=a)){const c=t[1];e=a)break t}o=n,n=0;break n}break e}for(;n>>1;et;)--o;if(++o,a!==0||o!==r){a>=o&&(o=Math.max(o,1),a=o-1);const c=this.getValueSize();this.times=n.slice(a,o),this.values=this.values.slice(a*c,o*c)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(ri("KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,r=this.values,a=n.length;a===0&&(ri("KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let c=0;c!==a;c++){const u=n[c];if(typeof u=="number"&&isNaN(u)){ri("KeyframeTrack: Time is not a valid number.",this,c,u),e=!1;break}if(o!==null&&o>u){ri("KeyframeTrack: Out of order keys.",this,c,u,o),e=!1;break}o=u}if(r!==void 0&&bc(r))for(let c=0,u=r.length;c!==u;++c){const f=r[c];if(isNaN(f)){ri("KeyframeTrack: Value is not a valid number.",this,c,f),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===Ks,a=e.length-1;let o=1;for(let c=1;c0){e[o]=e[a];for(let c=a*n,u=o*n,f=0;f!==n;++f)t[u+f]=t[c+f];++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(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}wA.prototype.ValueTypeName="",wA.prototype.TimeBufferType=Float32Array,wA.prototype.ValueBufferType=Float32Array,wA.prototype.DefaultInterpolation=Is;class zm extends wA{constructor(e,t,n){super(e,t,n)}}zm.prototype.ValueTypeName="bool",zm.prototype.ValueBufferType=Array,zm.prototype.DefaultInterpolation=ks,zm.prototype.InterpolantFactoryMethodLinear=void 0,zm.prototype.InterpolantFactoryMethodSmooth=void 0;class yw extends wA{constructor(e,t,n,r){super(e,t,n,r)}}yw.prototype.ValueTypeName="color";class Zy extends wA{constructor(e,t,n,r){super(e,t,n,r)}}Zy.prototype.ValueTypeName="number";class UE extends Qy{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){const a=this.resultBuffer,o=this.sampleValues,c=this.valueSize,u=(n-t)/(r-t);let f=e*c;for(let g=f+c;f!==g;f+=4)je.slerpFlat(a,0,o,f-c,o,f,u);return a}}class Dv extends wA{constructor(e,t,n,r){super(e,t,n,r)}InterpolantFactoryMethodLinear(e){return new UE(this.times,this.values,this.getValueSize(),e)}}Dv.prototype.ValueTypeName="quaternion",Dv.prototype.InterpolantFactoryMethodSmooth=void 0;class Zd extends wA{constructor(e,t,n){super(e,t,n)}}Zd.prototype.ValueTypeName="string",Zd.prototype.ValueBufferType=Array,Zd.prototype.DefaultInterpolation=ks,Zd.prototype.InterpolantFactoryMethodLinear=void 0,Zd.prototype.InterpolantFactoryMethodSmooth=void 0;class Ky extends wA{constructor(e,t,n,r){super(e,t,n,r)}}Ky.prototype.ValueTypeName="vector";class H0{constructor(e="",t=-1,n=[],r=Mi){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=Yu(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,r=1/(e.fps||1);for(let o=0,c=n.length;o!==c;++o)t.push(DE(n[o]).scale(r));const a=new this(e.name,e.duration,t,e.blendMode);return a.uuid=e.uuid,a.userData=JSON.parse(e.userData||"{}"),a}static toJSON(e){const t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let a=0,o=n.length;a!==o;++a)t.push(wA.toJSON(n[a]));return r}static CreateFromMorphTargetSequence(e,t,n,r){const a=t.length,o=[];for(let c=0;c1){const v=g[1];let M=r[v];M||(r[v]=M=[]),M.push(f)}}const o=[];for(const c in r)o.push(this.CreateFromMorphTargetSequence(c,r[c],t,n));return o}static parseAnimation(e,t){if(Qr("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return ri("AnimationClip: No animation in JSONLoader data."),null;const n=function(v,M,R,I,re){if(R.length!==0){const ne=[],J=[];h_(R,ne,J,I),ne.length!==0&&re.push(new v(M,ne,J))}},r=[],a=e.name||"default",o=e.fps||30,c=e.blendMode;let u=e.length||-1;const f=e.hierarchy||[];for(let v=0;v{t&&t(a),this.manager.itemEnd(e)},0),a;if(Kd[e]!==void 0){Kd[e].push({onLoad:t,onProgress:n,onError:r});return}Kd[e]=[],Kd[e].push({onLoad:t,onProgress:n,onError:r});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),c=this.mimeType,u=this.responseType;fetch(o).then(f=>{if(f.status===200||f.status===0){if(f.status===0&&Qr("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||f.body===void 0||f.body.getReader===void 0)return f;const g=Kd[e],v=f.body.getReader(),M=f.headers.get("X-File-Size")||f.headers.get("Content-Length"),R=M?parseInt(M):0,I=R!==0;let re=0;const ne=new ReadableStream({start(J){be();function be(){v.read().then(({done:Re,value:ze})=>{if(Re)J.close();else{re+=ze.byteLength;const st=new ProgressEvent("progress",{lengthComputable:I,loaded:re,total:R});for(let et=0,dt=g.length;et{J.error(Re)})}}});return new Response(ne)}else throw new $y(`fetch for "${f.url}" responded with ${f.status}: ${f.statusText}`,f)}).then(f=>{switch(u){case"arraybuffer":return f.arrayBuffer();case"blob":return f.blob();case"document":return f.text().then(g=>new DOMParser().parseFromString(g,c));case"json":return f.json();default:if(c==="")return f.text();{const v=/charset="?([^;"\s]*)"?/i.exec(c),M=v&&v[1]?v[1].toLowerCase():void 0,R=new TextDecoder(M);return f.arrayBuffer().then(I=>R.decode(I))}}}).then(f=>{Jp.add(`file:${e}`,f);const g=Kd[e];delete Kd[e];for(let v=0,M=g.length;v{const g=Kd[e];if(g===void 0)throw this.manager.itemError(e),f;delete Kd[e];for(let v=0,M=g.length;v{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class Ov extends null{constructor(e){super(e)}load(e,t,n,r){const a=this,o=new Ap(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(c){try{t(a.parse(JSON.parse(c)))}catch(u){r?r(u):ri(u),a.manager.itemError(e)}},n,r)}parse(e){const t=[];for(let n=0;n0:r.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const a in e.uniforms){const o=e.uniforms[a];switch(r.uniforms[a]={},o.type){case"t":r.uniforms[a].value=n(o.value);break;case"c":r.uniforms[a].value=new li().setHex(o.value);break;case"v2":r.uniforms[a].value=new de().fromArray(o.value);break;case"v3":r.uniforms[a].value=new ce().fromArray(o.value);break;case"v4":r.uniforms[a].value=new ts().fromArray(o.value);break;case"m3":r.uniforms[a].value=new vn().fromArray(o.value);break;case"m4":r.uniforms[a].value=new ti().fromArray(o.value);break;default:r.uniforms[a].value=o.value}}if(e.defines!==void 0&&(r.defines=e.defines),e.vertexShader!==void 0&&(r.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(r.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(r.glslVersion=e.glslVersion),e.extensions!==void 0)for(const a in e.extensions)r.extensions[a]=e.extensions[a];if(e.lights!==void 0&&(r.lights=e.lights),e.clipping!==void 0&&(r.clipping=e.clipping),e.size!==void 0&&(r.size=e.size),e.sizeAttenuation!==void 0&&(r.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(r.map=n(e.map)),e.matcap!==void 0&&(r.matcap=n(e.matcap)),e.alphaMap!==void 0&&(r.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(r.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(r.bumpScale=e.bumpScale),e.normalMap!==void 0&&(r.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(r.normalMapType=e.normalMapType),e.normalScale!==void 0){let a=e.normalScale;Array.isArray(a)===!1&&(a=[a,a]),r.normalScale=new de().fromArray(a)}return e.displacementMap!==void 0&&(r.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(r.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(r.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(r.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(r.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(r.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(r.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(r.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(r.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(r.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(r.envMap=n(e.envMap)),e.envMapRotation!==void 0&&r.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(r.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(r.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(r.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(r.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(r.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(r.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(r.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(r.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(r.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new de().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(r.iridescenceMap=n(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(r.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(r.thicknessMap=n(e.thicknessMap)),e.anisotropyMap!==void 0&&(r.anisotropyMap=n(e.anisotropyMap)),e.sheenColorMap!==void 0&&(r.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=n(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return Jy.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:uw,SpriteMaterial:Mm,RawShaderMaterial:hw,ShaderMaterial:tf,PointsMaterial:O0,MeshPhysicalMaterial:fw,MeshStandardMaterial:o_,MeshPhongMaterial:dw,MeshToonMaterial:Aw,MeshNormalMaterial:pw,MeshLambertMaterial:l_,MeshDepthMaterial:gw,MeshDistanceMaterial:mw,MeshBasicMaterial:Gc,MeshMatcapMaterial:c_,LineDashedMaterial:zy,LineBasicMaterial:zc,Material:Nc};return new t[e]}}class ww{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class Sw extends null{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class y_ extends null{constructor(e){super(e)}load(e,t,n,r){const a=this,o=new Ap(a.manager);o.setPath(a.path),o.setRequestHeader(a.requestHeader),o.setWithCredentials(a.withCredentials),o.load(e,function(c){try{t(a.parse(JSON.parse(c)))}catch(u){r?r(u):ri(u),a.manager.itemError(e)}},n,r)}parse(e){const t={},n={};function r(R,I){if(t[I]!==void 0)return t[I];const ne=R.interleavedBuffers[I],J=a(R,ne.buffer),be=hl(ne.type,J),Re=new Vd(be,ne.stride);return Re.uuid=ne.uuid,t[I]=Re,Re}function a(R,I){if(n[I]!==void 0)return n[I];const ne=R.arrayBuffers[I],J=new Uint32Array(ne).buffer;return n[I]=J,J}const o=e.isInstancedBufferGeometry?new Sw:new Eo,c=e.data.index;if(c!==void 0){const R=hl(c.type,c.array);o.setIndex(new jl(R,1))}const u=e.data.attributes;for(const R in u){const I=u[R];let re;if(I.isInterleavedBufferAttribute){const ne=r(e.data,I.data);re=new pA(ne,I.itemSize,I.offset,I.normalized)}else{const ne=hl(I.type,I.array),J=I.isInstancedBufferAttribute?mf:jl;re=new J(ne,I.itemSize,I.normalized)}I.name!==void 0&&(re.name=I.name),I.usage!==void 0&&re.setUsage(I.usage),o.setAttribute(R,re)}const f=e.data.morphAttributes;if(f)for(const R in f){const I=f[R],re=[];for(let ne=0,J=I.length;ne0){const u=new _w(t);a=new Qm(u),a.setCrossOrigin(this.crossOrigin);for(let f=0,g=e.length;f0){r=new Qm(this.manager),r.setCrossOrigin(this.crossOrigin);for(let o=0,c=e.length;o{let J=null,be=null;return ne.boundingBox!==void 0&&(J=new q().fromJSON(ne.boundingBox)),ne.boundingSphere!==void 0&&(be=new Ii().fromJSON(ne.boundingSphere)),cA(Dc({},ne),{boundingBox:J,boundingSphere:be})}),o._instanceInfo=e.instanceInfo,o._availableInstanceIds=e._availableInstanceIds,o._availableGeometryIds=e._availableGeometryIds,o._nextIndexStart=e.nextIndexStart,o._nextVertexStart=e.nextVertexStart,o._geometryCount=e.geometryCount,o._maxInstanceCount=e.maxInstanceCount,o._maxVertexCount=e.maxVertexCount,o._maxIndexCount=e.maxIndexCount,o._geometryInitialized=e.geometryInitialized,o._matricesTexture=f(e.matricesTexture.uuid),o._indirectTexture=f(e.indirectTexture.uuid),e.colorsTexture!==void 0&&(o._colorsTexture=f(e.colorsTexture.uuid)),e.boundingSphere!==void 0&&(o.boundingSphere=new Ii().fromJSON(e.boundingSphere)),e.boundingBox!==void 0&&(o.boundingBox=new q().fromJSON(e.boundingBox));break;case"LOD":o=new Iv;break;case"Line":o=new Ch(c(e.geometry),u(e.material));break;case"LineLoop":o=new Gy(c(e.geometry),u(e.material));break;case"LineSegments":o=new Ng(c(e.geometry),u(e.material));break;case"PointCloud":case"Points":o=new k0(c(e.geometry),u(e.material));break;case"Sprite":o=new N0(u(e.material));break;case"Group":o=new xd;break;case"Bone":o=new F0;break;default:o=new dc}if(o.uuid=e.uuid,e.name!==void 0&&(o.name=e.name),e.matrix!==void 0?(o.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(o.matrixAutoUpdate=e.matrixAutoUpdate),o.matrixAutoUpdate&&o.matrix.decompose(o.position,o.quaternion,o.scale)):(e.position!==void 0&&o.position.fromArray(e.position),e.rotation!==void 0&&o.rotation.fromArray(e.rotation),e.quaternion!==void 0&&o.quaternion.fromArray(e.quaternion),e.scale!==void 0&&o.scale.fromArray(e.scale)),e.up!==void 0&&o.up.fromArray(e.up),e.castShadow!==void 0&&(o.castShadow=e.castShadow),e.receiveShadow!==void 0&&(o.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(o.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(o.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(o.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(o.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&o.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(o.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(o.visible=e.visible),e.frustumCulled!==void 0&&(o.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(o.renderOrder=e.renderOrder),e.userData!==void 0&&(o.userData=e.userData),e.layers!==void 0&&(o.layers.mask=e.layers),e.children!==void 0){const M=e.children;for(let R=0;R{if(Gv.has(o)===!0)r&&r(Gv.get(o)),a.manager.itemError(e),a.manager.itemEnd(e);else return t&&t(f),a.manager.itemEnd(e),f});return}return setTimeout(function(){t&&t(o),a.manager.itemEnd(e)},0),o}const c={};c.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",c.headers=this.requestHeader,c.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const u=fetch(e,c).then(function(f){return f.blob()}).then(function(f){return createImageBitmap(f,Object.assign(a.options,{colorSpaceConversion:"none"}))}).then(function(f){return Jp.add(`image-bitmap:${e}`,f),t&&t(f),a.manager.itemEnd(e),f}).catch(function(f){r&&r(f),Gv.set(u,f),Jp.remove(`image-bitmap:${e}`),a.manager.itemError(e),a.manager.itemEnd(e)});Jp.add(`image-bitmap:${e}`,u),a.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let Qv;class __{static getContext(){return Qv===void 0&&(Qv=new(window.AudioContext||window.webkitAudioContext)),Qv}static setContext(e){Qv=e}}class b_ extends null{constructor(e){super(e)}load(e,t,n,r){const a=this,o=new Ap(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(u){try{const f=u.slice(0);__.getContext().decodeAudioData(f,function(v){t(v)}).catch(c)}catch(f){c(f)}},n,r);function c(u){r?r(u):ri(u),a.manager.itemError(e)}}}const W0=new ti,w_=new ti,Zu=new ti;class OE{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new Ko,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new Ko,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Zu.copy(e.projectionMatrix);const r=t.eyeSep/2,a=r*t.near/t.focus,o=t.near*Math.tan(Wl*t.fov*.5)/t.zoom;let c,u;w_.elements[12]=-r,W0.elements[12]=r,c=-o*t.aspect+a,u=o*t.aspect+a,Zu.elements[0]=2*t.near/(u-c),Zu.elements[8]=(u+c)/(u-c),this.cameraL.projectionMatrix.copy(Zu),c=-o*t.aspect-a,u=o*t.aspect-a,Zu.elements[0]=2*t.near/(u-c),Zu.elements[8]=(u+c)/(u-c),this.cameraR.projectionMatrix.copy(Zu)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(w_),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(W0)}}class S_ extends Ko{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class ex{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}const tg=new ce,Z0=new je,$m=new ce,Hg=new ce,Gg=new ce;class Wv extends null{constructor(){super(),this.type="AudioListener",this.context=__.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new ex}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(tg,Z0,$m),Hg.set(0,0,-1).applyQuaternion(Z0),Gg.set(0,1,0).applyQuaternion(Z0),t.positionX){const n=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(tg.x,n),t.positionY.linearRampToValueAtTime(tg.y,n),t.positionZ.linearRampToValueAtTime(tg.z,n),t.forwardX.linearRampToValueAtTime(Hg.x,n),t.forwardY.linearRampToValueAtTime(Hg.y,n),t.forwardZ.linearRampToValueAtTime(Hg.z,n),t.upX.linearRampToValueAtTime(Gg.x,n),t.upY.linearRampToValueAtTime(Gg.y,n),t.upZ.linearRampToValueAtTime(Gg.z,n)}else t.setPosition(tg.x,tg.y,tg.z),t.setOrientation(Hg.x,Hg.y,Hg.z,Gg.x,Gg.y,Gg.z)}}class kE extends null{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){Qr("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){Qr("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){Qr("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){Qr("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,r,this._addIndex*t,1,t);for(let u=t,f=t+t;u!==f;++u)if(n[u]!==n[u+t]){c.setValue(n,r);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,r=n*this._origIndex;e.getValue(t,r);for(let a=n,o=r;a!==o;++a)t[a]=t[r+a%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let o=0;o!==a;++o)e[t+o]=e[n+o]}_slerp(e,t,n,r){je.slerpFlat(e,t,e,t,e,n,r)}_slerpAdditive(e,t,n,r,a){const o=this._workIndex*a;je.multiplyQuaternionsFlat(e,o,e,t,e,n),je.slerpFlat(e,t,e,t,e,o,r)}_lerp(e,t,n,r,a){const o=1-r;for(let c=0;c!==a;++c){const u=t+c;e[u]=e[u]*o+e[n+c]*r}}_lerpAdditive(e,t,n,r,a){for(let o=0;o!==a;++o){const c=t+o;e[c]=e[c]+e[n+o]*r}}}const C_="\\[\\]\\.:\\/",HE=new RegExp("["+C_+"]","g"),tx="[^"+C_+"]",Cw="[^"+C_.replace("\\.","")+"]",jd=/((?:WC+[\/:])*)/.source.replace("WC",tx),nx=/(WCOD+)?/.source.replace("WCOD",Cw),Bw=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",tx),B_=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",tx),rx=new RegExp("^"+jd+nx+Bw+B_+"$"),R_=["material","materials","bones","map"];class P_{constructor(e,t,n){const r=n||uc.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,a=n.length;r!==a;++r)n[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class uc{constructor(e,t,n){this.path=t,this.parsedPath=n||uc.parseTrackName(t),this.node=uc.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new uc.Composite(e,t,n):new uc(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(HE,"")}static parseTrackName(e){const t=rx.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const a=n.nodeName.substring(r+1);R_.indexOf(a)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=a)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(a){for(let o=0;o=a){const v=a++,M=e[v];t[M.uuid]=g,e[g]=M,t[f]=v,e[v]=u;for(let R=0,I=r;R!==I;++R){const re=n[R],ne=re[v],J=re[g];re[g]=ne,re[v]=J}}}this.nCachedObjects_=a}uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,r=n.length;let a=this.nCachedObjects_,o=e.length;for(let c=0,u=arguments.length;c!==u;++c){const f=arguments[c],g=f.uuid,v=t[g];if(v!==void 0)if(delete t[g],v0&&(t[R.uuid]=v),e[v]=R,e.pop();for(let I=0,re=r;I!==re;++I){const ne=n[I];ne[v]=ne[M],ne.pop()}}}this.nCachedObjects_=a}subscribe_(e,t){const n=this._bindingsIndicesByPath;let r=n[e];const a=this._bindings;if(r!==void 0)return a[r];const o=this._paths,c=this._parsedPaths,u=this._objects,f=u.length,g=this.nCachedObjects_,v=new Array(f);r=a.length,n[e]=r,o.push(e),c.push(t),a.push(v);for(let M=g,R=u.length;M!==R;++M){const I=u[M];v[M]=new uc(I,e,t)}return v}unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){const r=this._paths,a=this._parsedPaths,o=this._bindings,c=o.length-1,u=o[c],f=e[c];t[f]=n,o[n]=u,o.pop(),a[n]=a[c],a.pop(),r[n]=r[c],r.pop()}}}class Rw{constructor(e,t,n=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=r;const a=t.tracks,o=a.length,c=new Array(o),u={endingStart:Ya,endingEnd:Ya};for(let f=0;f!==o;++f){const g=a[f].createInterpolant(null);c[f]=g,g.settings=u}this._interpolantSettings=u,this._interpolants=c,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Qi,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n=!1){if(e.fadeOut(t),this.fadeIn(t),n===!0){const r=this._clip.duration,a=e._clip.duration,o=a/r,c=r/a;e.warp(1,o,t),this.warp(c,1,t)}return this}crossFadeTo(e,t,n=!1){return e.crossFadeFrom(this,t,n)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){const r=this._mixer,a=r.time,o=this.timeScale;let c=this._timeScaleInterpolant;c===null&&(c=r._lendControlInterpolant(),this._timeScaleInterpolant=c);const u=c.parameterPositions,f=c.sampleValues;return u[0]=a,u[1]=a+n,f[0]=e/o,f[1]=t/o,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,r){if(!this.enabled){this._updateWeight(e);return}const a=this._startTime;if(a!==null){const u=(e-a)*n;u<0||n===0?t=0:(this._startTime=null,t=n*u)}t*=this._updateTimeScale(e);const o=this._updateTime(t),c=this._updateWeight(e);if(c>0){const u=this._interpolants,f=this._propertyBindings;switch(this.blendMode){case Do:for(let g=0,v=u.length;g!==v;++g)u[g].evaluate(o),f[g].accumulateAdditive(c);break;case Mi:default:for(let g=0,v=u.length;g!==v;++g)u[g].evaluate(o),f[g].accumulate(r,c)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(n!==null){const r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;if(n!==null){const r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let r=this.time+e,a=this._loopCount;const o=n===As;if(e===0)return a===-1?r:o&&(a&1)===1?t-r:r;if(n===fi){a===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(a===-1&&(e>=0?(a=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),r>=t||r<0){const c=Math.floor(r/t);r-=t*c,a+=Math.abs(c);const u=this.repetitions-a;if(u<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(u===1){const f=e<0;this._setEndings(f,!f,o)}else this._setEndings(!1,!1,o);this._loopCount=a,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:c})}}else this.time=r;if(o&&(a&1)===1)return t-r}return r}_setEndings(e,t,n){const r=this._interpolantSettings;n?(r.endingStart=Ba,r.endingEnd=Ba):(e?r.endingStart=this.zeroSlopeAtStart?Ba:Ya:r.endingStart=Wa,t?r.endingEnd=this.zeroSlopeAtEnd?Ba:Ya:r.endingEnd=Wa)}_scheduleFading(e,t,n){const r=this._mixer,a=r.time;let o=this._weightInterpolant;o===null&&(o=r._lendControlInterpolant(),this._weightInterpolant=o);const c=o.parameterPositions,u=o.sampleValues;return c[0]=a,u[0]=t,c[1]=a+e,u[1]=n,this}}const zE=new Float32Array(1);class rR extends null{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,r=e._clip.tracks,a=r.length,o=e._propertyBindings,c=e._interpolants,u=n.uuid,f=this._bindingsByRootAndName;let g=f[u];g===void 0&&(g={},f[u]=g);for(let v=0;v!==a;++v){const M=r[v],R=M.name;let I=g[R];if(I!==void 0)++I.referenceCount,o[v]=I;else{if(I=o[v],I!==void 0){I._cacheIndex===null&&(++I.referenceCount,this._addInactiveBinding(I,u,R));continue}const re=t&&t._propertyBindings[v].binding.parsedPath;I=new Tw(uc.create(n,R,re),M.ValueTypeName,M.getValueSize()),++I.referenceCount,this._addInactiveBinding(I,u,R),o[v]=I}c[v].resultBuffer=I.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const n=(e._localRoot||this._root).uuid,r=e._clip.uuid,a=this._actionsByClip[r];this._bindAction(e,a&&a.knownActions[0]),this._addInactiveAction(e,r,n)}const t=e._propertyBindings;for(let n=0,r=t.length;n!==r;++n){const a=t[n];a.useCount++===0&&(this._lendBinding(a),a.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let n=0,r=t.length;n!==r;++n){const a=t[n];--a.useCount===0&&(a.restoreOriginalState(),this._takeBackBinding(a))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,r=this.time+=e,a=Math.sign(e),o=this._accuIndex^=1;for(let f=0;f!==n;++f)t[f]._update(r,e,a,o);const c=this._bindings,u=this._nActiveBindings;for(let f=0;f!==u;++f)c[f].apply(o);return this}setTime(e){this.time=0;for(let t=0;t=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,Iw).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Y0=new ce,Xm=new ce,rg=new ce,SA=new ce,q0=new ce,zg=new ce,ox=new ce;class L_{constructor(e=new ce,t=new ce){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){Y0.subVectors(e,this.start),Xm.subVectors(this.end,this.start);const n=Xm.dot(Xm);let a=Xm.dot(Y0)/n;return t&&(a=to(a,0,1)),a}closestPointToPoint(e,t,n){const r=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(r).add(this.start)}distanceSqToLine3(e,t=zg,n=ox){const r=10000000000000001e-32;let a,o;const c=this.start,u=e.start,f=this.end,g=e.end;rg.subVectors(f,c),SA.subVectors(g,u),q0.subVectors(c,u);const v=rg.dot(rg),M=SA.dot(SA),R=SA.dot(q0);if(v<=r&&M<=r)return t.copy(c),n.copy(u),t.sub(n),t.dot(t);if(v<=r)a=0,o=R/M,o=to(o,0,1);else{const I=rg.dot(q0);if(M<=r)o=0,a=to(-I/v,0,1);else{const re=rg.dot(SA),ne=v*M-re*re;ne!==0?a=to((re*R-I*M)/ne,0,1):a=0,o=(re*a+R)/M,o<0?(o=0,a=to(-I/v,0,1)):o>1&&(o=1,a=to((re-I)/v,0,1))}}return t.copy(c).add(rg.multiplyScalar(a)),n.copy(u).add(SA.multiplyScalar(o)),t.sub(n),t.dot(t)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const Zv=new ce;class Nw extends null{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new Eo,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,c=1,u=32;o1)for(let v=0;v.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{D_.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(D_,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class ux extends null{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new Eo;r.setAttribute("position",new Pa(t,3)),r.setAttribute("color",new Pa(n,3));const a=new zc({vertexColors:!0,toneMapped:!1});super(r,a),this.type="AxesHelper"}setColors(e,t,n){const r=new li,a=this.geometry.attributes.color.array;return r.set(e),r.toArray(a,0),r.toArray(a,3),r.set(t),r.toArray(a,6),r.toArray(a,9),r.set(n),r.toArray(a,12),r.toArray(a,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class pR{constructor(){this.type="ShapePath",this.color=new li,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Rs,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,r){return this.currentPath.quadraticCurveTo(e,t,n,r),this}bezierCurveTo(e,t,n,r,a,o){return this.currentPath.bezierCurveTo(e,t,n,r,a,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(J){const be=[];for(let Re=0,ze=J.length;ReNumber.EPSILON){if(mt<0&&(dt=be[et],nt=-nt,Nt=be[st],mt=-mt),J.yNt.y)continue;if(J.y===dt.y){if(J.x===dt.x)return!0}else{const En=mt*(J.x-dt.x)-nt*(J.y-dt.y);if(En===0)return!0;if(En<0)continue;ze=!ze}}else{if(J.y!==dt.y)continue;if(Nt.x<=J.x&&J.x<=dt.x||dt.x<=J.x&&J.x<=Nt.x)return!0}}return ze}const r=$o.isClockWise,a=this.subPaths;if(a.length===0)return[];let o,c,u;const f=[];if(a.length===1)return c=a[0],u=new Li,u.curves=c.curves,f.push(u),f;let g=!r(a[0].getPoints());g=e?!g:g;const v=[],M=[];let R=[],I=0,re;M[I]=void 0,R[I]=[];for(let J=0,be=a.length;J1){let J=!1,be=0;for(let Re=0,ze=M.length;Re0&&J===!1&&(R=v)}let ne;for(let J=0,be=M.length;Je?(i.repeat.x=1,i.repeat.y=t/e,i.offset.x=0,i.offset.y=(1-i.repeat.y)/2):(i.repeat.x=e/t,i.repeat.y=1,i.offset.x=(1-i.repeat.x)/2,i.offset.y=0),i}function jv(i,e){const t=i.image&&i.image.width?i.image.width/i.image.height:1;return t>e?(i.repeat.x=e/t,i.repeat.y=1,i.offset.x=(1-i.repeat.x)/2,i.offset.y=0):(i.repeat.x=1,i.repeat.y=t/e,i.offset.x=0,i.offset.y=(1-i.repeat.y)/2),i}function O_(i){return i.repeat.x=1,i.repeat.y=1,i.offset.x=0,i.offset.y=0,i}function hx(i,e,t,n){const r=sg(n);switch(t){case mi:return i*e;case G:return i*e/r.components*r.byteLength;case ae:return i*e/r.components*r.byteLength;case We:return i*e*2/r.components*r.byteLength;case tt:return i*e*2/r.components*r.byteLength;case Le:return i*e*3/r.components*r.byteLength;case k:return i*e*4/r.components*r.byteLength;case bt:return i*e*4/r.components*r.byteLength;case Bn:case Ge:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case $e:case Ne:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case vt:case xt:return Math.max(i,16)*Math.max(e,8)/4;case Ye:case an:return Math.max(i,8)*Math.max(e,8)/2;case tn:case Un:case or:case $r:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case hr:case xr:case Rr:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case pi:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case Tn:return Math.floor((i+4)/5)*Math.floor((e+3)/4)*16;case ir:return Math.floor((i+4)/5)*Math.floor((e+4)/5)*16;case ni:return Math.floor((i+5)/6)*Math.floor((e+4)/5)*16;case zr:return Math.floor((i+5)/6)*Math.floor((e+5)/6)*16;case xs:return Math.floor((i+7)/8)*Math.floor((e+4)/5)*16;case ms:return Math.floor((i+7)/8)*Math.floor((e+5)/6)*16;case ls:return Math.floor((i+7)/8)*Math.floor((e+7)/8)*16;case Oi:return Math.floor((i+9)/10)*Math.floor((e+4)/5)*16;case Ds:return Math.floor((i+9)/10)*Math.floor((e+5)/6)*16;case Bi:return Math.floor((i+9)/10)*Math.floor((e+7)/8)*16;case Qs:return Math.floor((i+9)/10)*Math.floor((e+9)/10)*16;case Na:return Math.floor((i+11)/12)*Math.floor((e+9)/10)*16;case $n:return Math.floor((i+11)/12)*Math.floor((e+11)/12)*16;case Ut:case Kt:case Lt:return Math.ceil(i/4)*Math.ceil(e/4)*16;case Sn:case Hn:return Math.ceil(i/4)*Math.ceil(e/4)*8;case ar:case Hr:return Math.ceil(i/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function sg(i){switch(i){case gs:case Di:return{byteLength:1,components:1};case cn:case Nn:case zt:return{byteLength:2,components:1};case Mn:case sn:return{byteLength:2,components:4};case ct:case jt:case pt:return{byteLength:4,components:1};case lr:case oi:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${i}.`)}class ZE{static contain(e,t){return kw(e,t)}static cover(e,t){return jv(e,t)}static fill(e){return O_(e)}static getByteLength(e,t,n,r){return hx(e,t,n,r)}}typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:m}})),typeof window!="undefined"&&(window.__THREE__?Qr("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=m);const qm=new Gh,Nf=new de,Vw=new ce,k_=new de,Jm=new de,Qg=new ce,ev=new ce,tv=new ti,Hw=new ce,e0=new ce;let zh=null,Td=null;const Yd=[],TA={NONE:-1,PAN:0,ROTATE:1};class Gw extends Xv{constructor(e,t,n=null){super(t,n),this.objects=e,this.recursive=!0,this.transformGroup=!1,this.rotateSpeed=1,this.raycaster=new ix,this.mouseButtons={LEFT:K.PAN,MIDDLE:K.PAN,RIGHT:K.ROTATE},this.touches={ONE:H.PAN},this._onPointerMove=zw.bind(this),this._onPointerDown=Qw.bind(this),this._onPointerCancel=Ww.bind(this),this._onContextMenu=Zw.bind(this),n!==null&&this.connect(n)}connect(e){super.connect(e),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointerup",this._onPointerCancel),this.domElement.addEventListener("pointerleave",this._onPointerCancel),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointerup",this._onPointerCancel),this.domElement.removeEventListener("pointerleave",this._onPointerCancel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="auto",this.domElement.style.cursor=""}dispose(){this.disconnect()}_updatePointer(e){const t=this.domElement.getBoundingClientRect();Nf.x=(e.clientX-t.left)/t.width*2-1,Nf.y=-(e.clientY-t.top)/t.height*2+1}_updateState(e){let t;if(e.pointerType==="touch")t=this.touches.ONE;else switch(e.button){case 0:t=this.mouseButtons.LEFT;break;case 1:t=this.mouseButtons.MIDDLE;break;case 2:t=this.mouseButtons.RIGHT;break;default:t=null}switch(t){case K.PAN:case H.PAN:this.state=TA.PAN;break;case K.ROTATE:case H.ROTATE:this.state=TA.ROTATE;break;default:this.state=TA.NONE}}}function zw(i){const e=this.object,t=this.domElement,n=this.raycaster;if(this.enabled!==!1){if(this._updatePointer(i),n.setFromCamera(Nf,e),zh)this.state===TA.PAN?n.ray.intersectPlane(qm,Qg)&&(zh.position.copy(Qg.sub(Vw).applyMatrix4(tv)),this.dispatchEvent({type:"drag",object:zh})):this.state===TA.ROTATE&&(k_.subVectors(Nf,Jm).multiplyScalar(this.rotateSpeed),zh.rotateOnWorldAxis(Hw,k_.x),zh.rotateOnWorldAxis(e0.normalize(),-k_.y),this.dispatchEvent({type:"drag",object:zh})),Jm.copy(Nf);else if(i.pointerType==="mouse"||i.pointerType==="pen")if(Yd.length=0,n.setFromCamera(Nf,e),n.intersectObjects(this.objects,this.recursive,Yd),Yd.length>0){const r=Yd[0].object;qm.setFromNormalAndCoplanarPoint(e.getWorldDirection(qm.normal),ev.setFromMatrixPosition(r.matrixWorld)),Td!==r&&Td!==null&&(this.dispatchEvent({type:"hoveroff",object:Td}),t.style.cursor="auto",Td=null),Td!==r&&(this.dispatchEvent({type:"hoveron",object:r}),t.style.cursor="pointer",Td=r)}else Td!==null&&(this.dispatchEvent({type:"hoveroff",object:Td}),t.style.cursor="auto",Td=null);Jm.copy(Nf)}}function Qw(i){const e=this.object,t=this.domElement,n=this.raycaster;this.enabled!==!1&&(this._updatePointer(i),this._updateState(i),Yd.length=0,n.setFromCamera(Nf,e),n.intersectObjects(this.objects,this.recursive,Yd),Yd.length>0&&(this.transformGroup===!0?zh=fx(Yd[0].object):zh=Yd[0].object,qm.setFromNormalAndCoplanarPoint(e.getWorldDirection(qm.normal),ev.setFromMatrixPosition(zh.matrixWorld)),n.ray.intersectPlane(qm,Qg)&&(this.state===TA.PAN?(tv.copy(zh.parent.matrixWorld).invert(),Vw.copy(Qg).sub(ev.setFromMatrixPosition(zh.matrixWorld)),t.style.cursor="move",this.dispatchEvent({type:"dragstart",object:zh})):this.state===TA.ROTATE&&(Hw.set(0,1,0).applyQuaternion(e.quaternion).normalize(),e0.set(1,0,0).applyQuaternion(e.quaternion).normalize(),t.style.cursor="move",this.dispatchEvent({type:"dragstart",object:zh})))),Jm.copy(Nf))}function Ww(){this.enabled!==!1&&(zh&&(this.dispatchEvent({type:"dragend",object:zh}),zh=null),this.domElement.style.cursor=Td?"pointer":"auto",this.state=TA.NONE)}function Zw(i){this.enabled!==!1&&i.preventDefault()}function fx(i,e=null){return i.isGroup&&(e=i),i.parent===null?e:fx(i.parent,e)}var Kw=_(21668),V_=_(76633),$w=_(61147),Xw=_(38192),Yv=_(85320);function jw(i,e,t,n){var r,a,o=(0,Yv.Z)(.1),c,u;typeof i!="function"&&(i=(0,Yv.Z)(+i)),e==null&&(e=0),t==null&&(t=0),n==null&&(n=0);function f(v){for(var M=0,R=r.length;M1&&(I.vy+=ne*Re),a>2&&(I.vz+=J*Re)}}function g(){if(r){var v,M=r.length;for(c=new Array(M),u=new Array(M),v=0;v[1,2,3].includes(R))||2,g()},f.strength=function(v){return arguments.length?(o=typeof v=="function"?v:(0,Yv.Z)(+v),g(),f):o},f.radius=function(v){return arguments.length?(i=typeof v=="function"?v:(0,Yv.Z)(+v),g(),f):i},f.x=function(v){return arguments.length?(e=+v,f):e},f.y=function(v){return arguments.length?(t=+v,f):t},f.z=function(v){return arguments.length?(n=+v,f):n},f}function Yw(i){Lu(i);const e=KE(i);return i.on=e.on,i.off=e.off,i.fire=e.fire,i}function KE(i){let e=Object.create(null);return{on:function(t,n,r){if(typeof n!="function")throw new Error("callback is expected to be a function");let a=e[t];return a||(a=e[t]=[]),a.push({callback:n,ctx:r}),i},off:function(t,n){if(typeof t=="undefined")return e=Object.create(null),i;if(e[t])if(typeof n!="function")delete e[t];else{const o=e[t];for(let c=0;c1&&(r=Array.prototype.slice.call(arguments,1));for(let a=0;a0&&(v.fire("changed",o),o.length=0)}function Hs(ci){if(typeof ci!="function")throw new Error("Function is expected to iterate over graph nodes. You passed "+ci);for(var ws=e.values(),Gs=ws.next();!Gs.done;){if(ci(Gs.value))return!0;Gs=ws.next()}}}function qw(i,e){this.id=i,this.links=null,this.data=e}function Jw(i,e){i.links?i.links.add(e):i.links=new Set([e])}function CA(i,e,t,n){this.fromId=i,this.toId=e,this.data=t,this.id=n}function ag(i,e){return i.toString()+"\u{1F449} "+e.toString()}var e1=_(91998),nv=_(91519),XE=_(12778),qv=function(){return XE.Z.Date.now()},Zg=qv,dx=/\s/;function Ax(i){for(var e=i.length;e--&&dx.test(i.charAt(e)););return e}var jE=Ax,YE=/^\s+/;function rv(i){return i&&i.slice(0,jE(i)+1).replace(YE,"")}var t1=rv,qE=_(90681),Kg=_(64162),og="[object Symbol]";function $g(i){return typeof i=="symbol"||(0,Kg.Z)(i)&&(0,qE.Z)(i)==og}var gR=$g,JE=NaN,px=/^[-+]0x[0-9a-f]+$/i,eM=/^0b[01]+$/i,mR=/^0o[0-7]+$/i,tM=parseInt;function gp(i){if(typeof i=="number")return i;if(gR(i))return JE;if((0,nv.Z)(i)){var e=typeof i.valueOf=="function"?i.valueOf():i;i=(0,nv.Z)(e)?e+"":e}if(typeof i!="string")return i===0?i:+i;i=t1(i);var t=eM.test(i);return t||mR.test(i)?tM(i.slice(2),t?2:8):px.test(i)?JE:+i}var H_=gp,n1="Expected a function",r1=Math.max,i1=Math.min;function G_(i,e,t){var n,r,a,o,c,u,f=0,g=!1,v=!1,M=!0;if(typeof i!="function")throw new TypeError(n1);e=H_(e)||0,(0,nv.Z)(t)&&(g=!!t.leading,v="maxWait"in t,a=v?r1(H_(t.maxWait)||0,e):a,M="trailing"in t?!!t.trailing:M);function R(et){var dt=n,Nt=r;return n=r=void 0,f=et,o=i.apply(Nt,dt),o}function I(et){return f=et,c=setTimeout(J,e),g?R(et):o}function re(et){var dt=et-u,Nt=et-f,nt=e-dt;return v?i1(nt,a-Nt):nt}function ne(et){var dt=et-u,Nt=et-f;return u===void 0||dt>=e||dt<0||v&&Nt>=a}function J(){var et=Zg();if(ne(et))return be(et);c=setTimeout(J,re(et))}function be(et){return c=void 0,M&&n?R(et):(n=r=void 0,o)}function Re(){c!==void 0&&clearTimeout(c),f=0,n=u=r=c=void 0}function ze(){return c===void 0?o:be(Zg())}function st(){var et=Zg(),dt=ne(et);if(n=arguments,r=this,u=et,dt){if(c===void 0)return I(u);if(v)return clearTimeout(c),c=setTimeout(J,e),R(u)}return c===void 0&&(c=setTimeout(J,e)),o}return st.cancel=Re,st.flush=ze,st}var s1=G_;function z_(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);tn||t===void 0&&n>=n)&&(t=n);else{let n=-1;for(let r of i)(r=e(r,++n,i))!=null&&(t>r||t===void 0&&r>=r)&&(t=r)}return t}function nM(i,e){let t;if(e===void 0)for(const n of i)n!=null&&(t=n)&&(t=n);else{let n=-1;for(let r of i)(r=e(r,++n,i))!=null&&(t=r)&&(t=r)}return t}function ty(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);ti.length)&&(e=i.length);for(var t=0,n=Array(e);t1&&arguments[1]!==void 0?arguments[1]:{},a=r.dataBindAttr,o=a===void 0?"__data":a,c=r.objBindAttr,u=c===void 0?"__threeObj":c;return vx(this,e),n=C1(this,e),j_(n,"scene",void 0),B1(n,ov,void 0),B1(n,Eu,void 0),n.scene=t,mM(ov,n,o),mM(Eu,n,u),n.onRemoveObj(function(){}),n}return Y_(e,i),vM(e,[{key:"onCreateObj",value:function(n){var r=this;return bx(e,"onCreateObj",this)([function(a){var o=n(a);return a[K_(Eu,r)]=o,o[K_(ov,r)]=a,r.scene.add(o),o}]),this}},{key:"onRemoveObj",value:function(n){var r=this;return bx(e,"onRemoveObj",this)([function(a,o){var c=bx(e,"getData",r)([a]);n(a,o),r.scene.remove(a),N1(a),delete c[K_(Eu,r)]}]),this}}])}(y1),Mu=function(e){return isNaN(e)?parseInt((0,T1.Z)(e).toHex(),16):e},lv=function(e){return isNaN(e)?(0,T1.Z)(e).getAlpha():1},_R=M1(fM);function bM(i,e,t){!e||typeof t!="string"||i.filter(function(n){return!n[t]}).forEach(function(n){n[t]=_R(e(n))})}function bR(i,e){var t=i.nodes,n=i.links,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=r.nodeFilter,o=a===void 0?function(){return!0}:a,c=r.onLoopError,u=c===void 0?function(R){throw"Invalid DAG structure! Found cycle in node path: ".concat(R.join(" -> "),".")}:c,f={};t.forEach(function(R){return f[e(R)]={data:R,out:[],depth:-1,skip:!o(R)}}),n.forEach(function(R){var I=R.source,re=R.target,ne=ze(I),J=ze(re);if(!f.hasOwnProperty(ne))throw"Missing source node with id: ".concat(ne);if(!f.hasOwnProperty(J))throw"Missing target node with id: ".concat(J);var be=f[ne],Re=f[J];be.out.push(Re);function ze(st){return I1(st)==="object"?e(st):st}});var g=[];M(Object.values(f));var v=Object.assign.apply(Object,[{}].concat(Jd(Object.entries(f).filter(function(R){var I=_x(R,2),re=I[1];return!re.skip}).map(function(R){var I=_x(R,2),re=I[0],ne=I[1];return j_({},re,ne.depth)}))));return v;function M(R){for(var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],re=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,ne=function(){var ze=R[J];if(I.indexOf(ze)!==-1){var st=[].concat(Jd(I.slice(I.indexOf(ze))),[ze]).map(function(et){return e(et.data)});return g.some(function(et){return et.length===st.length&&et.every(function(dt,Nt){return dt===st[Nt]})})||(g.push(st),u(st)),1}re>ze.depth&&(ze.depth=re,M(ze.out,[].concat(Jd(I),[ze]),re+(ze.skip?0:1)))},J=0,be=R.length;J2?-60:-30),e<3&&r(t.graphData.nodes,"z"),e<2&&r(t.graphData.nodes,"y");function r(a,o){a.forEach(function(c){delete c[o],delete c["v".concat(o)]})}}},dagMode:{onChange:function(e,t){!e&&t.forceEngine==="d3"&&(t.graphData.nodes||[]).forEach(function(n){return n.fx=n.fy=n.fz=void 0})}},dagLevelDistance:{},dagNodeFilter:{default:function(e){return!0}},onDagError:{triggerUpdate:!1},nodeRelSize:{default:4},nodeId:{default:"id"},nodeVal:{default:"val"},nodeResolution:{default:8},nodeColor:{default:"color"},nodeAutoColorBy:{},nodeOpacity:{default:.75},nodeVisibility:{default:!0},nodeThreeObject:{},nodeThreeObjectExtend:{default:!1},nodePositionUpdate:{triggerUpdate:!1},linkSource:{default:"source"},linkTarget:{default:"target"},linkVisibility:{default:!0},linkColor:{default:"color"},linkAutoColorBy:{},linkOpacity:{default:.2},linkWidth:{},linkResolution:{default:6},linkCurvature:{default:0,triggerUpdate:!1},linkCurveRotation:{default:0,triggerUpdate:!1},linkMaterial:{},linkThreeObject:{},linkThreeObjectExtend:{default:!1},linkPositionUpdate:{triggerUpdate:!1},linkDirectionalArrowLength:{default:0},linkDirectionalArrowColor:{},linkDirectionalArrowRelPos:{default:.5,triggerUpdate:!1},linkDirectionalArrowResolution:{default:8},linkDirectionalParticles:{default:0},linkDirectionalParticleSpeed:{default:.01,triggerUpdate:!1},linkDirectionalParticleOffset:{default:0,triggerUpdate:!1},linkDirectionalParticleWidth:{default:.5},linkDirectionalParticleColor:{},linkDirectionalParticleResolution:{default:4},linkDirectionalParticleThreeObject:{},forceEngine:{default:"d3"},d3AlphaMin:{default:0},d3AlphaDecay:{default:.0228,triggerUpdate:!1,onChange:function(e,t){t.d3ForceLayout.alphaDecay(e)}},d3AlphaTarget:{default:0,triggerUpdate:!1,onChange:function(e,t){t.d3ForceLayout.alphaTarget(e)}},d3VelocityDecay:{default:.4,triggerUpdate:!1,onChange:function(e,t){t.d3ForceLayout.velocityDecay(e)}},ngraphPhysics:{default:{timeStep:20,gravity:-1.2,theta:.8,springLength:30,springCoefficient:8e-4,dragCoefficient:.02}},warmupTicks:{default:0,triggerUpdate:!1},cooldownTicks:{default:1/0,triggerUpdate:!1},cooldownTime:{default:15e3,triggerUpdate:!1},onLoading:{default:function(){},triggerUpdate:!1},onFinishLoading:{default:function(){},triggerUpdate:!1},onUpdate:{default:function(){},triggerUpdate:!1},onFinishUpdate:{default:function(){},triggerUpdate:!1},onEngineTick:{default:function(){},triggerUpdate:!1},onEngineStop:{default:function(){},triggerUpdate:!1}},methods:{refresh:function(e){return e._flushObjects=!0,e._rerender(),this},d3Force:function(e,t,n){return n===void 0?e.d3ForceLayout.force(t):(e.d3ForceLayout.force(t,n),this)},d3ReheatSimulation:function(e){return e.d3ForceLayout.alpha(1),this.resetCountdown(),this},resetCountdown:function(e){return e.cntTicks=0,e.startTickTime=new Date,e.engineRunning=!0,this},tickFrame:function(e){var t=e.forceEngine!=="ngraph";return e.engineRunning&&n(),r(),a(),this;function n(){++e.cntTicks>e.cooldownTicks||new Date-e.startTickTime>e.cooldownTime||t&&e.d3AlphaMin>0&&e.d3ForceLayout.alpha()0){var et=re.x-I.x,dt=re.y-I.y||0,Nt=new No.Vector3().subVectors(be,J),nt=Nt.clone().multiplyScalar(ne).cross(et!==0||dt!==0?new No.Vector3(0,0,1):new No.Vector3(0,1,0)).applyAxisAngle(Nt.normalize(),st).add(new No.Vector3().addVectors(J,be).divideScalar(2));ze=new No.QuadraticBezierCurve3(J,nt,be)}else{var mt=ne*70,En=-st,vr=En+Math.PI/2;ze=new No.CubicBezierCurve3(J,new No.Vector3(mt*Math.cos(vr),mt*Math.sin(vr),0).add(J),new No.Vector3(mt*Math.cos(En),mt*Math.sin(En),0).add(J),be)}M.__curve=ze}}}}function r(){var o=Nl(e.linkDirectionalArrowRelPos),c=Nl(e.linkDirectionalArrowLength),u=Nl(e.nodeVal);e.arrowDataMapper.entries().forEach(function(f){var g=_x(f,2),v=g[0],M=g[1];if(M){var R=t?v:e.layout.getLinkPosition(e.layout.graph.getLink(v.source,v.target).id),I=R[t?"source":"from"],re=R[t?"target":"to"];if(!(!I||!re||!I.hasOwnProperty("x")||!re.hasOwnProperty("x"))){var ne=Math.cbrt(Math.max(0,u(I)||1))*e.nodeRelSize,J=Math.cbrt(Math.max(0,u(re)||1))*e.nodeRelSize,be=c(v),Re=o(v),ze=v.__curve?function(mt){return v.__curve.getPoint(mt)}:function(mt){var En=function(br,kr,qr,jr){return kr[br]+(qr[br]-kr[br])*jr||0};return{x:En("x",I,re,mt),y:En("y",I,re,mt),z:En("z",I,re,mt)}},st=v.__curve?v.__curve.getLength():Math.sqrt(["x","y","z"].map(function(mt){return Math.pow((re[mt]||0)-(I[mt]||0),2)}).reduce(function(mt,En){return mt+En},0)),et=ne+be+(st-ne-J-be)*Re,dt=ze(et/st),Nt=ze((et-be)/st);["x","y","z"].forEach(function(mt){return M.position[mt]=Nt[mt]});var nt=$_(No.Vector3,Jd(["x","y","z"].map(function(mt){return dt[mt]})));M.parent.localToWorld(nt),M.lookAt(nt)}}})}function a(){var o=Nl(e.linkDirectionalParticleSpeed),c=Nl(e.linkDirectionalParticleOffset);e.graphData.links.forEach(function(u){var f=e.particlesDataMapper.getObj(u),g=f&&f.children,v=u.__singleHopPhotonsObj&&u.__singleHopPhotonsObj.children;if(!((!v||!v.length)&&(!g||!g.length))){var M=t?u:e.layout.getLinkPosition(e.layout.graph.getLink(u.source,u.target).id),R=M[t?"source":"from"],I=M[t?"target":"to"];if(!(!R||!I||!R.hasOwnProperty("x")||!I.hasOwnProperty("x"))){var re=o(u),ne=Math.abs(c(u)),J=u.__curve?function(Re){return u.__curve.getPoint(Re)}:function(Re){var ze=function(et,dt,Nt,nt){return dt[et]+(Nt[et]-dt[et])*nt||0};return{x:ze("x",R,I,Re),y:ze("y",R,I,Re),z:ze("z",R,I,Re)}},be=[].concat(Jd(g||[]),Jd(v||[]));be.forEach(function(Re,ze){var st=Re.parent.__linkThreeObjType==="singleHopPhotons";if(Re.hasOwnProperty("__progressRatio")||(Re.__progressRatio=st?0:(ze+ne)/g.length),Re.__progressRatio+=re,Re.__progressRatio>=1)if(!st)Re.__progressRatio=Re.__progressRatio%1;else{Re.parent.remove(Re),N1(Re);return}var et=Re.__progressRatio,dt=J(et);Re.geometry.type!=="SphereGeometry"&&Re.lookAt(dt.x,dt.y,dt.z),["x","y","z"].forEach(function(Nt){return Re.position[Nt]=dt[Nt]})})}}})}},emitParticle:function(e,t){if(t&&e.graphData.links.includes(t)){if(!t.__singleHopPhotonsObj){var n=new No.Group;n.__linkThreeObjType="singleHopPhotons",t.__singleHopPhotonsObj=n,e.graphScene.add(n)}var r=Nl(e.linkDirectionalParticleThreeObject)(t);if(r&&e.linkDirectionalParticleThreeObject===r&&(r=r.clone()),!r){var a=Nl(e.linkDirectionalParticleWidth),o=Math.ceil(a(t)*10)/10/2,c=e.linkDirectionalParticleResolution,u=new No.SphereGeometry(o,c,c),f=Nl(e.linkColor),g=Nl(e.linkDirectionalParticleColor),v=g(t)||f(t)||"#f0f0f0",M=new No.Color(Mu(v)),R=e.linkOpacity*3,I=new No.MeshLambertMaterial({color:M,transparent:!0,opacity:R});r=new No.Mesh(u,I)}t.__singleHopPhotonsObj.add(r)}return this},getGraphBbox:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){return!0};if(!e.initialised)return null;var n=function r(a){var o=[];if(a.geometry){a.geometry.computeBoundingBox();var c=new No.Box3;c.copy(a.geometry.boundingBox).applyMatrix4(a.matrixWorld),o.push(c)}return o.concat.apply(o,Jd((a.children||[]).filter(function(u){return!u.hasOwnProperty("__graphObjType")||u.__graphObjType==="node"&&t(u.__data)}).map(r)))}(e.graphScene);return n.length?Object.assign.apply(Object,Jd(["x","y","z"].map(function(r){return j_({},r,[gx(n,function(a){return a.min[r]}),nM(n,function(a){return a.max[r]})])}))):null}},stateInit:function(){return{d3ForceLayout:(0,Kw.Z)().force("link",(0,V_.Z)()).force("charge",(0,$w.Z)()).force("center",(0,Xw.Z)()).force("dagRadial",null).stop(),engineRunning:!1}},init:function(e,t){t.graphScene=e,t.nodeDataMapper=new wx(e,{objBindAttr:"__threeObj"}),t.linkDataMapper=new wx(e,{objBindAttr:"__lineObj"}),t.arrowDataMapper=new wx(e,{objBindAttr:"__arrowObj"}),t.particlesDataMapper=new wx(e,{objBindAttr:"__photonsObj"})},update:function(e,t){var n=function(Vr){return Vr.some(function(di){return t.hasOwnProperty(di)})};if(e.engineRunning=!1,typeof e.onUpdate=="function"&&e.onUpdate(),e.nodeAutoColorBy!==null&&n(["nodeAutoColorBy","graphData","nodeColor"])&&bM(e.graphData.nodes,Nl(e.nodeAutoColorBy),e.nodeColor),e.linkAutoColorBy!==null&&n(["linkAutoColorBy","graphData","linkColor"])&&bM(e.graphData.links,Nl(e.linkAutoColorBy),e.linkColor),e._flushObjects||n(["graphData","nodeThreeObject","nodeThreeObjectExtend","nodeVal","nodeColor","nodeVisibility","nodeRelSize","nodeResolution","nodeOpacity"])){var r=Nl(e.nodeThreeObject),a=Nl(e.nodeThreeObjectExtend),o=Nl(e.nodeVal),c=Nl(e.nodeColor),u=Nl(e.nodeVisibility),f={},g={};(e._flushObjects||n(["nodeThreeObject","nodeThreeObjectExtend"]))&&e.nodeDataMapper.clear(),e.nodeDataMapper.onCreateObj(function(qi){var Vr=r(qi),di=a(qi);Vr&&e.nodeThreeObject===Vr&&(Vr=Vr.clone());var Fs;return Vr&&!di?Fs=Vr:(Fs=new No.Mesh,Fs.__graphDefaultObj=!0,Vr&&di&&Fs.add(Vr)),Fs.__graphObjType="node",Fs}).onUpdateObj(function(qi,Vr){if(qi.__graphDefaultObj){var di=o(Vr)||1,Fs=Math.cbrt(di)*e.nodeRelSize,za=e.nodeResolution;(!qi.geometry.type.match(/^Sphere(Buffer)?Geometry$/)||qi.geometry.parameters.radius!==Fs||qi.geometry.parameters.widthSegments!==za)&&(f.hasOwnProperty(di)||(f[di]=new No.SphereGeometry(Fs,za,za)),qi.geometry.dispose(),qi.geometry=f[di]);var Js=c(Vr),Co=new No.Color(Mu(Js||"#ffffaa")),kl=e.nodeOpacity*lv(Js);(qi.material.type!=="MeshLambertMaterial"||!qi.material.color.equals(Co)||qi.material.opacity!==kl)&&(g.hasOwnProperty(Js)||(g[Js]=new No.MeshLambertMaterial({color:Co,transparent:!0,opacity:kl})),qi.material.dispose(),qi.material=g[Js])}}).digest(e.graphData.nodes.filter(u))}if(e._flushObjects||n(["graphData","linkThreeObject","linkThreeObjectExtend","linkMaterial","linkColor","linkWidth","linkVisibility","linkResolution","linkOpacity","linkDirectionalArrowLength","linkDirectionalArrowColor","linkDirectionalArrowResolution","linkDirectionalParticles","linkDirectionalParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleResolution","linkDirectionalParticleThreeObject"])){var v=Nl(e.linkThreeObject),M=Nl(e.linkThreeObjectExtend),R=Nl(e.linkMaterial),I=Nl(e.linkVisibility),re=Nl(e.linkColor),ne=Nl(e.linkWidth),J={},be={},Re={},ze=e.graphData.links.filter(I);if((e._flushObjects||n(["linkThreeObject","linkThreeObjectExtend","linkWidth"]))&&e.linkDataMapper.clear(),e.linkDataMapper.onRemoveObj(function(qi){var Vr=qi.__data&&qi.__data.__singleHopPhotonsObj;Vr&&(Vr.parent.remove(Vr),N1(Vr),delete qi.__data.__singleHopPhotonsObj)}).onCreateObj(function(qi){var Vr=v(qi),di=M(qi);Vr&&e.linkThreeObject===Vr&&(Vr=Vr.clone());var Fs;if(!Vr||di){var za=!!ne(qi);if(za)Fs=new No.Mesh;else{var Js=new No.BufferGeometry;Js[L1]("position",new No.BufferAttribute(new Float32Array(2*3),3)),Fs=new No.Line(Js)}}var Co;return Vr?di?(Co=new No.Group,Co.__graphDefaultObj=!0,Co.add(Fs),Co.add(Vr)):Co=Vr:(Co=Fs,Co.__graphDefaultObj=!0),Co.renderOrder=10,Co.__graphObjType="link",Co}).onUpdateObj(function(qi,Vr){if(qi.__graphDefaultObj){var di=qi.children.length?qi.children[0]:qi,Fs=Math.ceil(ne(Vr)*10)/10,za=!!Fs;if(za){var Js=Fs/2,Co=e.linkResolution;if(!di.geometry.type.match(/^Cylinder(Buffer)?Geometry$/)||di.geometry.parameters.radiusTop!==Js||di.geometry.parameters.radialSegments!==Co){if(!J.hasOwnProperty(Fs)){var kl=new No.CylinderGeometry(Js,Js,1,Co,1,!1);kl[nb](new No.Matrix4().makeTranslation(0,1/2,0)),kl[nb](new No.Matrix4().makeRotationX(Math.PI/2)),J[Fs]=kl}di.geometry.dispose(),di.geometry=J[Fs]}}var Wo=R(Vr);if(Wo)di.material=Wo;else{var Ji=re(Vr),Ps=new No.Color(Mu(Ji||"#f0f0f0")),is=e.linkOpacity*lv(Ji),oa=za?"MeshLambertMaterial":"LineBasicMaterial";if(di.material.type!==oa||!di.material.color.equals(Ps)||di.material.opacity!==is){var Gn=za?be:Re;Gn.hasOwnProperty(Ji)||(Gn[Ji]=new No[oa]({color:Ps,transparent:is<1,opacity:is,depthWrite:is>=1})),di.material.dispose(),di.material=Gn[Ji]}}}}).digest(ze),e.linkDirectionalArrowLength||t.hasOwnProperty("linkDirectionalArrowLength")){var st=Nl(e.linkDirectionalArrowLength),et=Nl(e.linkDirectionalArrowColor);e.arrowDataMapper.onCreateObj(function(){var qi=new No.Mesh(void 0,new No.MeshLambertMaterial({transparent:!0}));return qi.__linkThreeObjType="arrow",qi}).onUpdateObj(function(qi,Vr){var di=st(Vr),Fs=e.linkDirectionalArrowResolution;if(!qi.geometry.type.match(/^Cone(Buffer)?Geometry$/)||qi.geometry.parameters.height!==di||qi.geometry.parameters.radialSegments!==Fs){var za=new No.ConeGeometry(di*.25,di,Fs);za.translate(0,di/2,0),za.rotateX(Math.PI/2),qi.geometry.dispose(),qi.geometry=za}var Js=et(Vr)||re(Vr)||"#f0f0f0";qi.material.color=new No.Color(Mu(Js)),qi.material.opacity=e.linkOpacity*3*lv(Js)}).digest(ze.filter(st))}if(e.linkDirectionalParticles||t.hasOwnProperty("linkDirectionalParticles")){var dt=Nl(e.linkDirectionalParticles),Nt=Nl(e.linkDirectionalParticleWidth),nt=Nl(e.linkDirectionalParticleColor),mt=Nl(e.linkDirectionalParticleThreeObject),En={},vr={};e.particlesDataMapper.onCreateObj(function(){var qi=new No.Group;return qi.__linkThreeObjType="photons",qi.__photonDataMapper=new wx(qi),qi}).onUpdateObj(function(qi,Vr){var di=!!qi.children.length&&qi.children[0],Fs=mt(Vr),za,Js;if(Fs)za=Fs.geometry,Js=Fs.material;else{var Co=Math.ceil(Nt(Vr)*10)/10/2,kl=e.linkDirectionalParticleResolution;di&&di.geometry.parameters.radius===Co&&di.geometry.parameters.widthSegments===kl?za=di.geometry:(vr.hasOwnProperty(Co)||(vr[Co]=new No.SphereGeometry(Co,kl,kl)),za=vr[Co]);var Wo=nt(Vr)||re(Vr)||"#f0f0f0",Ji=new No.Color(Mu(Wo)),Ps=e.linkOpacity*3;di&&di.material.color.equals(Ji)&&di.material.opacity===Ps?Js=di.material:(En.hasOwnProperty(Wo)||(En[Wo]=new No.MeshLambertMaterial({color:Ji,transparent:!0,opacity:Ps})),Js=En[Wo])}di&&(di.geometry!==za&&di.geometry.dispose(),di.material!==Js&&di.material.dispose());var is=Math.round(Math.abs(dt(Vr)));qi.__photonDataMapper.id(function(oa){return oa.idx}).onCreateObj(function(){return new No.Mesh(za,Js)}).onUpdateObj(function(oa){oa.geometry=za,oa.material=Js}).digest(Jd(new Array(is)).map(function(oa,Gn){return{idx:Gn}}))}).digest(ze.filter(dt))}}if(e._flushObjects=!1,n(["graphData","nodeId","linkSource","linkTarget","numDimensions","forceEngine","dagMode","dagNodeFilter","dagLevelDistance"])){e.engineRunning=!1,e.graphData.links.forEach(function(qi){qi.source=qi[e.linkSource],qi.target=qi[e.linkTarget]});var br=e.forceEngine!=="ngraph",kr;if(br){(kr=e.d3ForceLayout).stop().alpha(1).numDimensions(e.numDimensions).nodes(e.graphData.nodes);var qr=e.d3ForceLayout.force("link");qr&&qr.id(function(qi){return qi[e.nodeId]}).links(e.graphData.links);var jr=e.dagMode&&bR(e.graphData,function(qi){return qi[e.nodeId]},{nodeFilter:e.dagNodeFilter,onLoopError:e.onDagError||void 0}),ai=Math.max.apply(Math,Jd(Object.values(jr||[]))),zi=e.dagLevelDistance||e.graphData.nodes.length/(ai||1)*tb*(["radialin","radialout"].indexOf(e.dagMode)!==-1?.7:1);if(["lr","rl","td","bu","zin","zout"].includes(t.dagMode)){var Os=["lr","rl"].includes(t.dagMode)?"fx":["td","bu"].includes(t.dagMode)?"fy":"fz";e.graphData.nodes.filter(e.dagNodeFilter).forEach(function(qi){return delete qi[Os]})}if(["lr","rl","td","bu","zin","zout"].includes(e.dagMode)){var Hs=["rl","td","zout"].includes(e.dagMode),ci=function(Vr){return(jr[Vr[e.nodeId]]-ai/2)*zi*(Hs?-1:1)},ws=["lr","rl"].includes(e.dagMode)?"fx":["td","bu"].includes(e.dagMode)?"fy":"fz";e.graphData.nodes.filter(e.dagNodeFilter).forEach(function(qi){return qi[ws]=ci(qi)})}e.d3ForceLayout.force("dagRadial",["radialin","radialout"].indexOf(e.dagMode)!==-1?jw(function(qi){var Vr=jr[qi[e.nodeId]]||-1;return(e.dagMode==="radialin"?ai-Vr:Vr)*zi}).strength(function(qi){return e.dagNodeFilter(qi)?1:0}):null)}else{var Gs=sy.graph();e.graphData.nodes.forEach(function(qi){Gs.addNode(qi[e.nodeId])}),e.graphData.links.forEach(function(qi){Gs.addLink(qi.source,qi.target)}),kr=sy.forcelayout(Gs,q_({dimensions:e.numDimensions},e.ngraphPhysics)),kr.graph=Gs}for(var Fo=0;Fo0&&e.d3ForceLayout.alpha()1&&arguments[1]!==void 0?arguments[1]:Object,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=function(r){function a(){var o;vx(this,a);for(var c=arguments.length,u=new Array(c),f=0;fR.start-I.start);let M=0;for(let R=1;R 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,DR=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,OR=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,kR=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,VR=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,HR=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,GR=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,zR=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,QR=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 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 ); +} +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`,WR=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,ZR=`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,KR=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,$R=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,XR=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE + emissiveColor = sRGBTransferEOTF( emissiveColor ); + #endif + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,jR=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,YR="gl_FragColor = linearToOutputTexel( gl_FragColor );",qR=`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 ); +}`,JR=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,e2=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif +#endif`,t2=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,n2=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,r2=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,i2=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,s2=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,a2=`#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`,o2=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,l2=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + 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 +}`,c2=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,u2=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,h2=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,f2=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + 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 ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,d2=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,b=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,s=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,l=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,h=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,p=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.diffuseContribution = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +material.metalness = metalnessFactor; +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor; + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = vec3( 0.04 ); + material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + 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; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.0001, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + 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`,y=`uniform sampler2D dfgLUT; +struct PhysicalMaterial { + vec3 diffuseColor; + vec3 diffuseContribution; + vec3 specularColor; + vec3 specularColorBlended; + float roughness; + float metalness; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + vec3 iridescenceFresnelDielectric; + vec3 iridescenceFresnelMetallic; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return v; + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColorBlended; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transpose( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float rInv = 1.0 / ( roughness + 0.1 ); + float a = -1.9362 + 1.0678 * roughness + 0.4573 * r2 - 0.8469 * rInv; + float b = -0.6014 + 0.5538 * roughness - 0.4670 * r2 - 0.1255 * rInv; + float DG = exp( a * dotNV + b ); + return saturate( DG ); +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +vec3 BRDF_GGX_Multiscatter( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 singleScatter = BRDF_GGX( lightDir, viewDir, normal, material ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 dfgV = texture2D( dfgLUT, vec2( material.roughness, dotNV ) ).rg; + vec2 dfgL = texture2D( dfgLUT, vec2( material.roughness, dotNL ) ).rg; + vec3 FssEss_V = material.specularColorBlended * dfgV.x + material.specularF90 * dfgV.y; + vec3 FssEss_L = material.specularColorBlended * dfgL.x + material.specularF90 * dfgL.y; + float Ess_V = dfgV.x + dfgV.y; + float Ess_L = dfgL.x + dfgL.y; + float Ems_V = 1.0 - Ess_V; + float Ems_L = 1.0 - Ess_L; + vec3 Favg = material.specularColorBlended + ( 1.0 - material.specularColorBlended ) * 0.047619; + vec3 Fms = FssEss_V * FssEss_L * Favg / ( 1.0 - Ems_V * Ems_L * Favg + EPSILON ); + float compensationFactor = Ems_V * Ems_L; + vec3 multiScatter = Fms * compensationFactor; + return singleScatter + multiScatter; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColorBlended * t2.x + ( vec3( 1.0 ) - material.specularColorBlended ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseContribution * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + + float sheenAlbedoV = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenAlbedoL = IBLSheenBRDF( geometryNormal, directLight.direction, material.sheenRoughness ); + + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * max( sheenAlbedoV, sheenAlbedoL ); + + irradiance *= sheenEnergyComp; + + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX_Multiscatter( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseContribution ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 diffuse = irradiance * BRDF_Lambert( material.diffuseContribution ); + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + diffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectDiffuse += diffuse; +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ) * RECIPROCAL_PI; + #endif + vec3 singleScatteringDielectric = vec3( 0.0 ); + vec3 multiScatteringDielectric = vec3( 0.0 ); + vec3 singleScatteringMetallic = vec3( 0.0 ); + vec3 multiScatteringMetallic = vec3( 0.0 ); + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnelDielectric, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.iridescence, material.iridescenceFresnelMetallic, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); + computeMultiscattering( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); + #endif + vec3 singleScattering = mix( singleScatteringDielectric, singleScatteringMetallic, material.metalness ); + vec3 multiScattering = mix( multiScatteringDielectric, multiScatteringMetallic, material.metalness ); + vec3 totalScatteringDielectric = singleScatteringDielectric + multiScatteringDielectric; + vec3 diffuse = material.diffuseContribution * ( 1.0 - totalScatteringDielectric ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + vec3 indirectSpecular = radiance * singleScattering; + indirectSpecular += multiScattering * cosineWeightedIrradiance; + vec3 indirectDiffuse = diffuse * cosineWeightedIrradiance; + #ifdef USE_SHEEN + float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; + indirectSpecular *= sheenEnergyComp; + indirectDiffuse *= sheenEnergyComp; + #endif + reflectedLight.indirectSpecular += indirectSpecular; + reflectedLight.indirectDiffuse += indirectDiffuse; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#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 ); +}`,C=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnelDielectric = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceFresnelMetallic = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.diffuseColor ); + material.iridescenceFresnel = mix( material.iridescenceFresnelDielectric, material.iridescenceFresnelMetallic, material.metalness ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + pointLightShadow = pointLightShadows[ i ]; + 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 ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #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.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + 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.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,P=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,ee=`#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`,ie=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,he=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,me=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + varying float vFragDepth; + varying float vIsPerspective; +#endif`,ve=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,Ee=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,Ve=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,Ue=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,Oe=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,Pt=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,Wt=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,gn=`#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`,en=`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,Dn=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,Zn=`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + 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`,Br=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,ln=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,er=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,Zr=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,ei=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,cs=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,Ys=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,Jr=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,$i=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,Si=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,us=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,vs=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Vi=`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 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 ) { + 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, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +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( 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 ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,Xi=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,ia=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,Ms=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,Ia=`#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`,bo=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,Lo=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,es=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #else + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform sampler2DShadow spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #else + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + uniform samplerCubeShadow pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #elif defined( SHADOWMAP_TYPE_BASIC ) + uniform samplerCube pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float interleavedGradientNoise( vec2 position ) { + return fract( 52.9829189 * fract( dot( position, vec2( 0.06711056, 0.00583715 ) ) ) ); + } + vec2 vogelDiskSample( int sampleIndex, int samplesCount, float phi ) { + const float goldenAngle = 2.399963229728653; + float r = sqrt( ( float( sampleIndex ) + 0.5 ) / float( samplesCount ) ); + float theta = float( sampleIndex ) * goldenAngle + phi; + return vec2( cos( theta ), sin( theta ) ) * r; + } + #endif + #if defined( SHADOWMAP_TYPE_PCF ) + float getShadow( sampler2DShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float radius = shadowRadius * texelSize.x; + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 0, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 1, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 2, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 3, 5, phi ) * radius, shadowCoord.z ) ) + + texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 4, 5, phi ) * radius, shadowCoord.z ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_VSM ) + 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; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + vec2 distribution = texture2D( shadowMap, shadowCoord.xy ).rg; + float mean = distribution.x; + float variance = distribution.y * distribution.y; + #ifdef USE_REVERSED_DEPTH_BUFFER + float hard_shadow = step( mean, shadowCoord.z ); + #else + float hard_shadow = step( shadowCoord.z, mean ); + #endif + if ( hard_shadow == 1.0 ) { + shadow = 1.0; + } else { + variance = max( variance, 0.0000001 ); + float d = shadowCoord.z - mean; + float p_max = variance / ( variance + d * d ); + p_max = clamp( ( p_max - 0.3 ) / 0.65, 0.0, 1.0 ); + shadow = max( hard_shadow, p_max ); + } + } + return mix( 1.0, shadow, shadowIntensity ); + } + #else + 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; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + float depth = texture2D( shadowMap, shadowCoord.xy ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, shadowCoord.z ); + #else + shadow = step( shadowCoord.z, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #if defined( SHADOWMAP_TYPE_PCF ) + float getPointShadow( samplerCubeShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float texelSize = shadowRadius / shadowMapSize.x; + vec3 absDir = abs( bd3D ); + vec3 tangent = absDir.x > absDir.z ? vec3( 0.0, 1.0, 0.0 ) : vec3( 1.0, 0.0, 0.0 ); + tangent = normalize( cross( bd3D, tangent ) ); + vec3 bitangent = cross( bd3D, tangent ); + float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; + shadow = ( + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 0, 5, phi ).x + bitangent * vogelDiskSample( 0, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 1, 5, phi ).x + bitangent * vogelDiskSample( 1, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 2, 5, phi ).x + bitangent * vogelDiskSample( 2, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 3, 5, phi ).x + bitangent * vogelDiskSample( 3, 5, phi ).y ) * texelSize, dp ) ) + + texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 4, 5, phi ).x + bitangent * vogelDiskSample( 4, 5, phi ).y ) * texelSize, dp ) ) + ) * 0.2; + } + return mix( 1.0, shadow, shadowIntensity ); + } + #elif defined( SHADOWMAP_TYPE_BASIC ) + float getPointShadow( samplerCube shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + vec3 bd3D = normalize( lightToPosition ); + vec3 absVec = abs( lightToPosition ); + float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); + if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { + float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); + dp += shadowBias; + float depth = textureCube( shadowMap, bd3D ).r; + #ifdef USE_REVERSED_DEPTH_BUFFER + shadow = step( depth, dp ); + #else + shadow = step( dp, depth ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + #endif + #endif +#endif`,Qc=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,ll=`#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 +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,El=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #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.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #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.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) + PointLightShadow pointLight; + #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.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,xa=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,tc=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,hs=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,as=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,ca=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,go=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,Oa=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,vl=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + 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 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + 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 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 ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,Jo=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90, + 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`,ko=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + 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 dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float 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`,Tu=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,fu=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,qn=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,Cn=`#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; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const ta={alphahash_fragment:RA,alphahash_pars_fragment:sb,alphamap_fragment:cv,alphamap_pars_fragment:U1,alphatest_fragment:ER,alphatest_pars_fragment:MR,aomap_fragment:TR,aomap_pars_fragment:CR,batching_pars_vertex:BR,batching_vertex:RR,begin_vertex:PR,beginnormal_vertex:IR,bsdfs:NR,iridescence_fragment:LR,bumpmap_pars_fragment:FR,clipping_planes_fragment:UR,clipping_planes_pars_fragment:DR,clipping_planes_pars_vertex:OR,clipping_planes_vertex:kR,color_fragment:VR,color_pars_fragment:HR,color_pars_vertex:GR,color_vertex:zR,common:QR,cube_uv_reflection_fragment:WR,defaultnormal_vertex:ZR,displacementmap_pars_vertex:KR,displacementmap_vertex:$R,emissivemap_fragment:XR,emissivemap_pars_fragment:jR,colorspace_fragment:YR,colorspace_pars_fragment:qR,envmap_fragment:JR,envmap_common_pars_fragment:e2,envmap_pars_fragment:t2,envmap_pars_vertex:n2,envmap_physical_pars_fragment:d2,envmap_vertex:r2,fog_vertex:i2,fog_pars_vertex:s2,fog_fragment:a2,fog_pars_fragment:o2,gradientmap_pars_fragment:l2,lightmap_pars_fragment:c2,lights_lambert_fragment:u2,lights_lambert_pars_fragment:h2,lights_pars_begin:f2,lights_toon_fragment:b,lights_toon_pars_fragment:s,lights_phong_fragment:l,lights_phong_pars_fragment:h,lights_physical_fragment:p,lights_physical_pars_fragment:y,lights_fragment_begin:C,lights_fragment_maps:P,lights_fragment_end:ee,logdepthbuf_fragment:ie,logdepthbuf_pars_fragment:he,logdepthbuf_pars_vertex:me,logdepthbuf_vertex:ve,map_fragment:Ee,map_pars_fragment:Ve,map_particle_fragment:Ue,map_particle_pars_fragment:Oe,metalnessmap_fragment:Pt,metalnessmap_pars_fragment:Wt,morphinstance_vertex:gn,morphcolor_vertex:en,morphnormal_vertex:Dn,morphtarget_pars_vertex:Zn,morphtarget_vertex:Br,normal_fragment_begin:ln,normal_fragment_maps:er,normal_pars_fragment:Zr,normal_pars_vertex:ei,normal_vertex:cs,normalmap_pars_fragment:Ys,clearcoat_normal_fragment_begin:Jr,clearcoat_normal_fragment_maps:$i,clearcoat_pars_fragment:Si,iridescence_pars_fragment:us,opaque_fragment:vs,packing:Vi,premultiplied_alpha_fragment:Xi,project_vertex:ia,dithering_fragment:Ms,dithering_pars_fragment:Ia,roughnessmap_fragment:bo,roughnessmap_pars_fragment:Lo,shadowmap_pars_fragment:es,shadowmap_pars_vertex:Qc,shadowmap_vertex:ll,shadowmask_pars_fragment:El,skinbase_vertex:xa,skinning_pars_vertex:tc,skinning_vertex:hs,skinnormal_vertex:as,specularmap_fragment:ca,specularmap_pars_fragment:go,tonemapping_fragment:Oa,tonemapping_pars_fragment:vl,transmission_fragment:Jo,transmission_pars_fragment:ko,uv_pars_fragment:Tu,uv_pars_vertex:fu,uv_vertex:qn,worldpos_vertex:Cn,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,backgroundCube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + #ifdef USE_REVERSED_DEPTH_BUFFER + float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ]; + #else + float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5; + #endif + #if DEPTH_PACKING == 3200 + 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 +}`,distance_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distance_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = vec4( dist, 0.0, 0.0, 1.0 ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshlambert_frag:`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( normalize( normal ) * 0.5 + 0.5, diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + + outgoingLight = outgoingLight + sheenSpecularDirect + sheenSpecularIndirect; + + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + 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; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},ji={common:{diffuse:{value:new li(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new vn},alphaMap:{value:null},alphaMapTransform:{value:new vn},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new vn}},envmap:{envMap:{value:null},envMapRotation:{value:new vn},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new vn}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new vn}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new vn},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new vn},normalScale:{value:new de(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new vn},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new vn}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new vn}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new vn}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new li(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 li(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new vn},alphaTest:{value:0},uvTransform:{value:new vn}},sprite:{diffuse:{value:new li(16777215)},opacity:{value:1},center:{value:new de(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new vn},alphaMap:{value:null},alphaMapTransform:{value:new vn},alphaTest:{value:0}}},tl={basic:{uniforms:yh([ji.common,ji.specularmap,ji.envmap,ji.aomap,ji.lightmap,ji.fog]),vertexShader:ta.meshbasic_vert,fragmentShader:ta.meshbasic_frag},lambert:{uniforms:yh([ji.common,ji.specularmap,ji.envmap,ji.aomap,ji.lightmap,ji.emissivemap,ji.bumpmap,ji.normalmap,ji.displacementmap,ji.fog,ji.lights,{emissive:{value:new li(0)}}]),vertexShader:ta.meshlambert_vert,fragmentShader:ta.meshlambert_frag},phong:{uniforms:yh([ji.common,ji.specularmap,ji.envmap,ji.aomap,ji.lightmap,ji.emissivemap,ji.bumpmap,ji.normalmap,ji.displacementmap,ji.fog,ji.lights,{emissive:{value:new li(0)},specular:{value:new li(1118481)},shininess:{value:30}}]),vertexShader:ta.meshphong_vert,fragmentShader:ta.meshphong_frag},standard:{uniforms:yh([ji.common,ji.envmap,ji.aomap,ji.lightmap,ji.emissivemap,ji.bumpmap,ji.normalmap,ji.displacementmap,ji.roughnessmap,ji.metalnessmap,ji.fog,ji.lights,{emissive:{value:new li(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ta.meshphysical_vert,fragmentShader:ta.meshphysical_frag},toon:{uniforms:yh([ji.common,ji.aomap,ji.lightmap,ji.emissivemap,ji.bumpmap,ji.normalmap,ji.displacementmap,ji.gradientmap,ji.fog,ji.lights,{emissive:{value:new li(0)}}]),vertexShader:ta.meshtoon_vert,fragmentShader:ta.meshtoon_frag},matcap:{uniforms:yh([ji.common,ji.bumpmap,ji.normalmap,ji.displacementmap,ji.fog,{matcap:{value:null}}]),vertexShader:ta.meshmatcap_vert,fragmentShader:ta.meshmatcap_frag},points:{uniforms:yh([ji.points,ji.fog]),vertexShader:ta.points_vert,fragmentShader:ta.points_frag},dashed:{uniforms:yh([ji.common,ji.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ta.linedashed_vert,fragmentShader:ta.linedashed_frag},depth:{uniforms:yh([ji.common,ji.displacementmap]),vertexShader:ta.depth_vert,fragmentShader:ta.depth_frag},normal:{uniforms:yh([ji.common,ji.bumpmap,ji.normalmap,ji.displacementmap,{opacity:{value:1}}]),vertexShader:ta.meshnormal_vert,fragmentShader:ta.meshnormal_frag},sprite:{uniforms:yh([ji.sprite,ji.fog]),vertexShader:ta.sprite_vert,fragmentShader:ta.sprite_frag},background:{uniforms:{uvTransform:{value:new vn},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:ta.background_vert,fragmentShader:ta.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new vn}},vertexShader:ta.backgroundCube_vert,fragmentShader:ta.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:ta.cube_vert,fragmentShader:ta.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ta.equirect_vert,fragmentShader:ta.equirect_frag},distance:{uniforms:yh([ji.common,ji.displacementmap,{referencePosition:{value:new ce},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ta.distance_vert,fragmentShader:ta.distance_frag},shadow:{uniforms:yh([ji.lights,ji.fog,{color:{value:new li(0)},opacity:{value:1}}]),vertexShader:ta.shadow_vert,fragmentShader:ta.shadow_frag}};tl.physical={uniforms:yh([tl.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new vn},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new vn},clearcoatNormalScale:{value:new de(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new vn},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new vn},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new vn},sheen:{value:0},sheenColor:{value:new li(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new vn},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new vn},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new vn},transmissionSamplerSize:{value:new de},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new vn},attenuationDistance:{value:0},attenuationColor:{value:new li(0)},specularColor:{value:new li(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new vn},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new vn},anisotropyVector:{value:new de},anisotropyMap:{value:null},anisotropyMapTransform:{value:new vn}}]),vertexShader:ta.meshphysical_vert,fragmentShader:ta.meshphysical_frag};const pl={r:0,b:0,g:0},nc=new xo,xc=new ti;function Bc(i,e,t,n,r,a,o){const c=new li(0);let u=a===!0?0:1,f,g,v=null,M=0,R=null;function I(Re){let ze=Re.isScene===!0?Re.background:null;return ze&&ze.isTexture&&(ze=(Re.backgroundBlurriness>0?t:e).get(ze)),ze}function re(Re){let ze=!1;const st=I(Re);st===null?J(c,u):st&&st.isColor&&(J(st,1),ze=!0);const et=i.xr.getEnvironmentBlendMode();et==="additive"?n.buffers.color.setClear(0,0,0,1,o):et==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,o),(i.autoClear||ze)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil))}function ne(Re,ze){const st=I(ze);st&&(st.isCubeTexture||st.mapping===St)?(g===void 0&&(g=new Mc(new yd(1,1,1),new tf({name:"BackgroundCubeMaterial",uniforms:dA(tl.backgroundCube.uniforms),vertexShader:tl.backgroundCube.vertexShader,fragmentShader:tl.backgroundCube.fragmentShader,side:fe,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),g.geometry.deleteAttribute("normal"),g.geometry.deleteAttribute("uv"),g.onBeforeRender=function(et,dt,Nt){this.matrixWorld.copyPosition(Nt.matrixWorld)},Object.defineProperty(g.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(g)),nc.copy(ze.backgroundRotation),nc.x*=-1,nc.y*=-1,nc.z*=-1,st.isCubeTexture&&st.isRenderTargetTexture===!1&&(nc.y*=-1,nc.z*=-1),g.material.uniforms.envMap.value=st,g.material.uniforms.flipEnvMap.value=st.isCubeTexture&&st.isRenderTargetTexture===!1?-1:1,g.material.uniforms.backgroundBlurriness.value=ze.backgroundBlurriness,g.material.uniforms.backgroundIntensity.value=ze.backgroundIntensity,g.material.uniforms.backgroundRotation.value.setFromMatrix4(xc.makeRotationFromEuler(nc)),g.material.toneMapped=wr.getTransfer(st.colorSpace)!==Xs,(v!==st||M!==st.version||R!==i.toneMapping)&&(g.material.needsUpdate=!0,v=st,M=st.version,R=i.toneMapping),g.layers.enableAll(),Re.unshift(g,g.geometry,g.material,0,0,null)):st&&st.isTexture&&(f===void 0&&(f=new Mc(new ih(2,2),new tf({name:"BackgroundMaterial",uniforms:dA(tl.background.uniforms),vertexShader:tl.background.vertexShader,fragmentShader:tl.background.fragmentShader,side:Y,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),f.geometry.deleteAttribute("normal"),Object.defineProperty(f.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(f)),f.material.uniforms.t2D.value=st,f.material.uniforms.backgroundIntensity.value=ze.backgroundIntensity,f.material.toneMapped=wr.getTransfer(st.colorSpace)!==Xs,st.matrixAutoUpdate===!0&&st.updateMatrix(),f.material.uniforms.uvTransform.value.copy(st.matrix),(v!==st||M!==st.version||R!==i.toneMapping)&&(f.material.needsUpdate=!0,v=st,M=st.version,R=i.toneMapping),f.layers.enableAll(),Re.unshift(f,f.geometry,f.material,0,0,null))}function J(Re,ze){Re.getRGB(pl,B0(i)),n.buffers.color.setClear(pl.r,pl.g,pl.b,ze,o)}function be(){g!==void 0&&(g.geometry.dispose(),g.material.dispose(),g=void 0),f!==void 0&&(f.geometry.dispose(),f.material.dispose(),f=void 0)}return{getClearColor:function(){return c},setClearColor:function(Re,ze=1){c.set(Re),u=ze,J(c,u)},getClearAlpha:function(){return u},setClearAlpha:function(Re){u=Re,J(c,u)},render:re,addToRenderList:ne,dispose:be}}function oh(i,e){const t=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},r=M(null);let a=r,o=!1;function c(mt,En,vr,br,kr){let qr=!1;const jr=v(br,vr,En);a!==jr&&(a=jr,f(a.object)),qr=R(mt,br,vr,kr),qr&&I(mt,br,vr,kr),kr!==null&&e.update(kr,i.ELEMENT_ARRAY_BUFFER),(qr||o)&&(o=!1,ze(mt,En,vr,br),kr!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,e.get(kr).buffer))}function u(){return i.createVertexArray()}function f(mt){return i.bindVertexArray(mt)}function g(mt){return i.deleteVertexArray(mt)}function v(mt,En,vr){const br=vr.wireframe===!0;let kr=n[mt.id];kr===void 0&&(kr={},n[mt.id]=kr);let qr=kr[En.id];qr===void 0&&(qr={},kr[En.id]=qr);let jr=qr[br];return jr===void 0&&(jr=M(u()),qr[br]=jr),jr}function M(mt){const En=[],vr=[],br=[];for(let kr=0;kr=0){const Hs=kr[zi];let ci=qr[zi];if(ci===void 0&&(zi==="instanceMatrix"&&mt.instanceMatrix&&(ci=mt.instanceMatrix),zi==="instanceColor"&&mt.instanceColor&&(ci=mt.instanceColor)),Hs===void 0||Hs.attribute!==ci||ci&&Hs.data!==ci.data)return!0;jr++}return a.attributesNum!==jr||a.index!==br}function I(mt,En,vr,br){const kr={},qr=En.attributes;let jr=0;const ai=vr.getAttributes();for(const zi in ai)if(ai[zi].location>=0){let Hs=qr[zi];Hs===void 0&&(zi==="instanceMatrix"&&mt.instanceMatrix&&(Hs=mt.instanceMatrix),zi==="instanceColor"&&mt.instanceColor&&(Hs=mt.instanceColor));const ci={};ci.attribute=Hs,Hs&&Hs.data&&(ci.data=Hs.data),kr[zi]=ci,jr++}a.attributes=kr,a.attributesNum=jr,a.index=br}function re(){const mt=a.newAttributes;for(let En=0,vr=mt.length;En=0){let Os=kr[ai];if(Os===void 0&&(ai==="instanceMatrix"&&mt.instanceMatrix&&(Os=mt.instanceMatrix),ai==="instanceColor"&&mt.instanceColor&&(Os=mt.instanceColor)),Os!==void 0){const Hs=Os.normalized,ci=Os.itemSize,ws=e.get(Os);if(ws===void 0)continue;const Gs=ws.buffer,Fo=ws.type,qi=ws.bytesPerElement,Vr=Fo===i.INT||Fo===i.UNSIGNED_INT||Os.gpuType===jt;if(Os.isInterleavedBufferAttribute){const di=Os.data,Fs=di.stride,za=Os.offset;if(di.isInstancedInterleavedBuffer){for(let Js=0;Js0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";dt="mediump"}return dt==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let f=t.precision!==void 0?t.precision:"highp";const g=u(f);g!==f&&(Qr("WebGLRenderer:",f,"not supported, using",g,"instead."),f=g);const v=t.logarithmicDepthBuffer===!0,M=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),R=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),I=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),re=i.getParameter(i.MAX_TEXTURE_SIZE),ne=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),J=i.getParameter(i.MAX_VERTEX_ATTRIBS),be=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),Re=i.getParameter(i.MAX_VARYING_VECTORS),ze=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),st=i.getParameter(i.MAX_SAMPLES),et=i.getParameter(i.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:a,getMaxPrecision:u,textureFormatReadable:o,textureTypeReadable:c,precision:f,logarithmicDepthBuffer:v,reversedDepthBuffer:M,maxTextures:R,maxVertexTextures:I,maxTextureSize:re,maxCubemapSize:ne,maxAttributes:J,maxVertexUniforms:be,maxVaryings:Re,maxFragmentUniforms:ze,maxSamples:st,samples:et}}function hv(i){const e=this;let t=null,n=0,r=!1,a=!1;const o=new Gh,c=new vn,u={value:null,needsUpdate:!1};this.uniform=u,this.numPlanes=0,this.numIntersection=0,this.init=function(v,M){const R=v.length!==0||M||n!==0||r;return r=M,n=v.length,R},this.beginShadows=function(){a=!0,g(null)},this.endShadows=function(){a=!1},this.setGlobalState=function(v,M){t=g(v,M,0)},this.setState=function(v,M,R){const I=v.clippingPlanes,re=v.clipIntersection,ne=v.clipShadows,J=i.get(v);if(!r||I===null||I.length===0||a&&!ne)a?g(null):f();else{const be=a?0:n,Re=be*4;let ze=J.clippingState||null;u.value=ze,ze=g(I,M,Re,R);for(let st=0;st!==Re;++st)ze[st]=t[st];J.clippingState=ze,this.numIntersection=re?this.numPlanes:0,this.numPlanes+=be}};function f(){u.value!==t&&(u.value=t,u.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function g(v,M,R,I){const re=v!==null?v.length:0;let ne=null;if(re!==0){if(ne=u.value,I!==!0||ne===null){const J=R+re*4,be=M.matrixWorldInverse;c.getNormalMatrix(be),(ne===null||ne.length0){const f=new Sm(u.height);return f.fromEquirectangularTexture(i,o),e.set(o,f),o.addEventListener("dispose",r),t(f.texture,o.mapping)}else return null}}return o}function r(o){const c=o.target;c.removeEventListener("dispose",r);const u=e.get(c);u!==void 0&&(e.delete(c),u.dispose())}function a(){e=new WeakMap}return{get:n,dispose:a}}const Ol=4,s0=[.125,.215,.35,.446,.526,.582],xu=20,yp=256,eA=new eg,fv=new li;let ay=null,yf=0,a0=0,oy=!1;const xp=new ce;class y2{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,r=100,a={}){const{size:o=256,position:c=xp}=a;ay=this._renderer.getRenderTarget(),yf=this._renderer.getActiveCubeFace(),a0=this._renderer.getActiveMipmapLevel(),oy=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(o);const u=this._allocateTargets();return u.depthBuffer=!0,this._sceneToCubeUV(e,n,r,u,c),t>0&&this._blur(u,0,0,t),this._applyPMREM(u),this._cleanup(u),u}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=b2(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=_2(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.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._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?st:0,st,st),v.setRenderTarget(r),J&&v.render(re,u),v.render(e,u)}v.toneMapping=R,v.autoClear=M,e.background=be}_textureToCubeUV(e,t){const n=this._renderer,r=e.mapping===at||e.mapping===wt;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=b2()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=_2());const a=r?this._cubemapMaterial:this._equirectMaterial,o=this._lodMeshes[0];o.material=a;const c=a.uniforms;c.envMap.value=e;const u=this._cubeSize;Sx(t,0,0,3*u,2*u),n.setRenderTarget(t),n.render(o,eA)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const r=this._lodMeshes.length;for(let a=1;aI-Ol?n-I+Ol:0),J=4*(this._cubeSize-re);u.envMap.value=e.texture,u.roughness.value=R,u.mipInt.value=I-t,Sx(a,ne,J,3*re,2*re),r.setRenderTarget(a),r.render(c,eA),u.envMap.value=a.texture,u.roughness.value=0,u.mipInt.value=I-n,Sx(e,ne,J,3*re,2*re),r.setRenderTarget(e),r.render(c,eA)}_blur(e,t,n,r,a){const o=this._pingPongRenderTarget;this._halfBlur(e,o,t,n,r,"latitudinal",a),this._halfBlur(o,e,n,n,r,"longitudinal",a)}_halfBlur(e,t,n,r,a,o,c){const u=this._renderer,f=this._blurMaterial;o!=="latitudinal"&&o!=="longitudinal"&&ri("blur direction must be either latitudinal or longitudinal!");const g=3,v=this._lodMeshes[r];v.material=f;const M=f.uniforms,R=this._sizeLods[n]-1,I=isFinite(a)?Math.PI/(2*R):2*Math.PI/(2*xu-1),re=a/I,ne=isFinite(a)?1+Math.floor(g*re):xu;ne>xu&&Qr(`sigmaRadians, ${a}, is too large and will clip, as it requested ${ne} samples when the maximum is set to ${xu}`);const J=[];let be=0;for(let dt=0;dtRe-Ol?r-Re+Ol:0),et=4*(this._cubeSize-ze);Sx(t,st,et,3*ze,2*ze),u.setRenderTarget(t),u.render(v,eA)}}function S3(i){const e=[],t=[],n=[];let r=i;const a=i-Ol+1+s0.length;for(let o=0;oi-Ol?u=s0[o-i+Ol-1]:o===0&&(u=0),t.push(u);const f=1/(c-2),g=-f,v=1+f,M=[g,g,v,g,v,v,g,g,v,v,g,v],R=6,I=6,re=3,ne=2,J=1,be=new Float32Array(re*I*R),Re=new Float32Array(ne*I*R),ze=new Float32Array(J*I*R);for(let et=0;et2?0:-1,nt=[dt,Nt,0,dt+2/3,Nt,0,dt+2/3,Nt+1,0,dt,Nt,0,dt+2/3,Nt+1,0,dt,Nt+1,0];be.set(nt,re*I*et),Re.set(M,ne*I*et);const mt=[et,et,et,et,et,et];ze.set(mt,J*I*et)}const st=new Eo;st.setAttribute("position",new jl(be,re)),st.setAttribute("uv",new jl(Re,ne)),st.setAttribute("faceIndex",new jl(ze,J)),n.push(new Mc(st,null)),r>Ol&&r--}return{lodMeshes:n,sizeLods:e,sigmas:t}}function x2(i,e,t){const n=new ra(i,e,t);return n.texture.mapping=St,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Sx(i,e,t,n,r){i.viewport.set(e,t,n,r),i.scissor.set(e,t,n,r)}function E3(i,e,t){return new tf({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:yp,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:O1(),fragmentShader:` + + precision highp float; + precision highp int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform float roughness; + uniform float mipInt; + + #define ENVMAP_TYPE_CUBE_UV + #include + + #define PI 3.14159265359 + + // Van der Corput radical inverse + float radicalInverse_VdC(uint bits) { + bits = (bits << 16u) | (bits >> 16u); + bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); + bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); + bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); + bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); + return float(bits) * 2.3283064365386963e-10; // / 0x100000000 + } + + // Hammersley sequence + vec2 hammersley(uint i, uint N) { + return vec2(float(i) / float(N), radicalInverse_VdC(i)); + } + + // GGX VNDF importance sampling (Eric Heitz 2018) + // "Sampling the GGX Distribution of Visible Normals" + // https://jcgt.org/published/0007/04/01/ + vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) { + float alpha = roughness * roughness; + + // Section 3.2: Transform view direction to hemisphere configuration + vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z)); + + // Section 4.1: Orthonormal basis + float lensq = Vh.x * Vh.x + Vh.y * Vh.y; + vec3 T1 = lensq > 0.0 ? vec3(-Vh.y, Vh.x, 0.0) / sqrt(lensq) : vec3(1.0, 0.0, 0.0); + vec3 T2 = cross(Vh, T1); + + // Section 4.2: Parameterization of projected area + float r = sqrt(Xi.x); + float phi = 2.0 * PI * Xi.y; + float t1 = r * cos(phi); + float t2 = r * sin(phi); + float s = 0.5 * (1.0 + Vh.z); + t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2; + + // Section 4.3: Reprojection onto hemisphere + vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * Vh; + + // Section 3.4: Transform back to ellipsoid configuration + return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z))); + } + + void main() { + vec3 N = normalize(vOutputDirection); + vec3 V = N; // Assume view direction equals normal for pre-filtering + + vec3 prefilteredColor = vec3(0.0); + float totalWeight = 0.0; + + // For very low roughness, just sample the environment directly + if (roughness < 0.001) { + gl_FragColor = vec4(bilinearCubeUV(envMap, N, mipInt), 1.0); + return; + } + + // Tangent space basis for VNDF sampling + vec3 up = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(cross(up, N)); + vec3 bitangent = cross(N, tangent); + + for(uint i = 0u; i < uint(GGX_SAMPLES); i++) { + vec2 Xi = hammersley(i, uint(GGX_SAMPLES)); + + // For PMREM, V = N, so in tangent space V is always (0, 0, 1) + vec3 H_tangent = importanceSampleGGX_VNDF(Xi, vec3(0.0, 0.0, 1.0), roughness); + + // Transform H back to world space + vec3 H = normalize(tangent * H_tangent.x + bitangent * H_tangent.y + N * H_tangent.z); + vec3 L = normalize(2.0 * dot(V, H) * H - V); + + float NdotL = max(dot(N, L), 0.0); + + if(NdotL > 0.0) { + // Sample environment at fixed mip level + // VNDF importance sampling handles the distribution filtering + vec3 sampleColor = bilinearCubeUV(envMap, L, mipInt); + + // Weight by NdotL for the split-sum approximation + // VNDF PDF naturally accounts for the visible microfacet distribution + prefilteredColor += sampleColor * NdotL; + totalWeight += NdotL; + } + } + + if (totalWeight > 0.0) { + prefilteredColor = prefilteredColor / totalWeight; + } + + gl_FragColor = vec4(prefilteredColor, 1.0); + } + `,blending:Me,depthTest:!1,depthWrite:!1})}function M3(i,e,t){const n=new Float32Array(xu),r=new ce(0,1,0);return new tf({name:"SphericalGaussianBlur",defines:{n:xu,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:O1(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:Me,depthTest:!1,depthWrite:!1})}function _2(){return new tf({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:O1(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:Me,depthTest:!1,depthWrite:!1})}function b2(){return new tf({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:O1(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:Me,depthTest:!1,depthWrite:!1})}function O1(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function T3(i){let e=new WeakMap,t=null;function n(c){if(c&&c.isTexture){const u=c.mapping,f=u===it||u===ht,g=u===at||u===wt;if(f||g){let v=e.get(c);const M=v!==void 0?v.texture.pmremVersion:0;if(c.isRenderTargetTexture&&c.pmremVersion!==M)return t===null&&(t=new y2(i)),v=f?t.fromEquirectangular(c,v):t.fromCubemap(c,v),v.texture.pmremVersion=c.pmremVersion,e.set(c,v),v.texture;if(v!==void 0)return v.texture;{const R=c.image;return f&&R&&R.height>0||g&&R&&r(R)?(t===null&&(t=new y2(i)),v=f?t.fromEquirectangular(c):t.fromCubemap(c),v.texture.pmremVersion=c.pmremVersion,e.set(c,v),c.addEventListener("dispose",a),v.texture):null}}}return c}function r(c){let u=0;const f=6;for(let g=0;ge.maxTextureSize&&(st=Math.ceil(ze/e.maxTextureSize),ze=e.maxTextureSize);const et=new Float32Array(ze*st*4*v),dt=new co(et,ze,st,v);dt.type=pt,dt.needsUpdate=!0;const Nt=Re*4;for(let mt=0;mt + #include + + void main() { + gl_FragColor = texture2D( tDiffuse, vUv ); + + #ifdef LINEAR_TONE_MAPPING + gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb ); + #elif defined( REINHARD_TONE_MAPPING ) + gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb ); + #elif defined( CINEON_TONE_MAPPING ) + gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb ); + #elif defined( ACES_FILMIC_TONE_MAPPING ) + gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb ); + #elif defined( AGX_TONE_MAPPING ) + gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb ); + #elif defined( NEUTRAL_TONE_MAPPING ) + gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb ); + #elif defined( CUSTOM_TONE_MAPPING ) + gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb ); + #endif + + #ifdef SRGB_TRANSFER + gl_FragColor = sRGBTransferOETF( gl_FragColor ); + #endif + }`,depthTest:!1,depthWrite:!1}),f=new Mc(c,u),g=new eg(-1,1,1,-1,0,1);let v=null,M=null,R=!1,I,re=null,ne=[],J=!1;this.setSize=function(be,Re){a.setSize(be,Re),o.setSize(be,Re);for(let ze=0;ze0&&ne[0].isRenderPass===!0;const Re=a.width,ze=a.height;for(let st=0;st0)return i;const r=e*t;let a=T2[r];if(a===void 0&&(a=new Float32Array(r),T2[r]=a),e!==0){n.toArray(a,0);for(let o=1,c=0;o!==e;++o)c+=t,i[o].toArray(a,c)}return a}function xf(i,e){if(i.length!==e.length)return!1;for(let t=0,n=i.length;t0&&(this.seq=r.concat(a))}setValue(e,t,n,r){const a=this.map[t];a!==void 0&&a.setValue(e,n,r)}setOptional(e,t,n){const r=t[n];r!==void 0&&this.setValue(e,n,r)}static upload(e,t,n,r){for(let a=0,o=t.length;a!==o;++a){const c=t[a],u=n[c.id];u.needsUpdate!==!1&&c.setValue(e,u.value,r)}}static seqWithValue(e,t){const n=[];for(let r=0,a=e.length;r!==a;++r){const o=e[r];o.id in t&&n.push(o)}return n}}function N2(i,e,t){const n=i.createShader(e);return i.shaderSource(n,t),i.compileShader(n),n}const MO=37297;let TO=0;function CO(i,e){const t=i.split(` +`),n=[],r=Math.max(e-6,0),a=Math.min(e+6,t.length);for(let o=r;o":" "} ${c}: ${t[o]}`)}return n.join(` +`)}const L2=new vn;function BO(i){wr._getMatrix(L2,wr.workingColorSpace,i);const e=`mat3( ${L2.elements.map(t=>t.toFixed(4))} )`;switch(wr.getTransfer(i)){case Kc:return[e,"LinearTransferOETF"];case Xs:return[e,"sRGBTransferOETF"];default:return Qr("WebGLProgram: Unsupported color space: ",i),[e,"LinearTransferOETF"]}}function F2(i,e,t){const n=i.getShaderParameter(e,i.COMPILE_STATUS),a=(i.getShaderInfoLog(e)||"").trim();if(n&&a==="")return"";const o=/ERROR: 0:(\d+)/.exec(a);if(o){const c=parseInt(o[1]);return t.toUpperCase()+` + +`+a+` + +`+CO(i.getShaderSource(e),c)}else return a}function RO(i,e){const t=BO(e);return[`vec4 ${i}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` +`)}const PO={[un]:"Linear",[Z]:"Reinhard",[Te]:"Cineon",[Zt]:"ACESFilmic",[On]:"AgX",[In]:"Neutral",[Gt]:"Custom"};function IO(i,e){const t=PO[e];return t===void 0?(Qr("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+i+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+i+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const H1=new ce;function NO(){wr.getLuminanceCoefficients(H1);const i=H1.x.toFixed(4),e=H1.y.toFixed(4),t=H1.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${i}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` +`)}function LO(i){return[i.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",i.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(ob).join(` +`)}function FO(i){const e=[];for(const t in i){const n=i[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(` +`)}function UO(i,e){const t={},n=i.getProgramParameter(e,i.ACTIVE_ATTRIBUTES);for(let r=0;r/gm;function MM(i){return i.replace(DO,kO)}const OO=new Map;function kO(i,e){let t=ta[e];if(t===void 0){const n=OO.get(e);if(n!==void 0)t=ta[n],Qr('WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return MM(t)}const VO=/#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 O2(i){return i.replace(VO,HO)}function HO(i,e,t,n){let r="";for(let a=parseInt(e);a0&&(ne+=` +`),J=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,I].filter(ob).join(` +`),J.length>0&&(J+=` +`)):(ne=[k2(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,I,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 "+g:"",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 "+u:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","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(ob).join(` +`),J=[k2(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,I,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 "+f:"",t.envMap?"#define "+g:"",t.envMap?"#define "+v:"",M?"#define CUBEUV_TEXEL_WIDTH "+M.texelWidth:"",M?"#define CUBEUV_TEXEL_HEIGHT "+M.texelHeight:"",M?"#define CUBEUV_MAX_MIP "+M.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 "+u:"",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_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==Bt?"#define TONE_MAPPING":"",t.toneMapping!==Bt?ta.tonemapping_pars_fragment:"",t.toneMapping!==Bt?IO("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",ta.colorspace_pars_fragment,RO("linearToOutputTexel",t.outputColorSpace),NO(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(ob).join(` +`)),o=MM(o),o=U2(o,t),o=D2(o,t),c=MM(c),c=U2(c,t),c=D2(c,t),o=O2(o),c=O2(c),t.isRawShaderMaterial!==!0&&(be=`#version 300 es +`,ne=[R,"#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+ne,J=["#define varying in",t.glslVersion===Hi?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===Hi?"":"#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(` +`)+` +`+J);const Re=be+ne+o,ze=be+J+c,st=N2(r,r.VERTEX_SHADER,Re),et=N2(r,r.FRAGMENT_SHADER,ze);r.attachShader(re,st),r.attachShader(re,et),t.index0AttributeName!==void 0?r.bindAttribLocation(re,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(re,0,"position"),r.linkProgram(re);function dt(En){if(i.debug.checkShaderErrors){const vr=r.getProgramInfoLog(re)||"",br=r.getShaderInfoLog(st)||"",kr=r.getShaderInfoLog(et)||"",qr=vr.trim(),jr=br.trim(),ai=kr.trim();let zi=!0,Os=!0;if(r.getProgramParameter(re,r.LINK_STATUS)===!1)if(zi=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(r,re,st,et);else{const Hs=F2(r,st,"vertex"),ci=F2(r,et,"fragment");ri("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(re,r.VALIDATE_STATUS)+` + +Material Name: `+En.name+` +Material Type: `+En.type+` + +Program Info Log: `+qr+` +`+Hs+` +`+ci)}else qr!==""?Qr("WebGLProgram: Program Info Log:",qr):(jr===""||ai==="")&&(Os=!1);Os&&(En.diagnostics={runnable:zi,programLog:qr,vertexShader:{log:jr,prefix:ne},fragmentShader:{log:ai,prefix:J}})}r.deleteShader(st),r.deleteShader(et),Nt=new V1(r,re),nt=UO(r,re)}let Nt;this.getUniforms=function(){return Nt===void 0&&dt(this),Nt};let nt;this.getAttributes=function(){return nt===void 0&&dt(this),nt};let mt=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return mt===!1&&(mt=r.getProgramParameter(re,MO)),mt},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(re),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=TO++,this.cacheKey=e,this.usedTimes=1,this.program=re,this.vertexShader=st,this.fragmentShader=et,this}let qO=0;class JO{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),a=this._getShaderStage(n),o=this._getShaderCacheForMaterial(e);return o.has(r)===!1&&(o.add(r),r.usedTimes++),o.has(a)===!1&&(o.add(a),a.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const 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){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new ek(e),t.set(e,n)),n}}class ek{constructor(e){this.id=qO++,this.code=e,this.usedTimes=0}}function tk(i,e,t,n,r,a,o){const c=new lc,u=new JO,f=new Set,g=[],v=new Map,M=r.logarithmicDepthBuffer;let R=r.precision;const I={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",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 re(nt){return f.add(nt),nt===0?"uv":`uv${nt}`}function ne(nt,mt,En,vr,br){const kr=vr.fog,qr=br.geometry,jr=nt.isMeshStandardMaterial?vr.environment:null,ai=(nt.isMeshStandardMaterial?t:e).get(nt.envMap||jr),zi=ai&&ai.mapping===St?ai.image.height:null,Os=I[nt.type];nt.precision!==null&&(R=r.getMaxPrecision(nt.precision),R!==nt.precision&&Qr("WebGLProgram.getParameters:",nt.precision,"not supported, using",R,"instead."));const Hs=qr.morphAttributes.position||qr.morphAttributes.normal||qr.morphAttributes.color,ci=Hs!==void 0?Hs.length:0;let ws=0;qr.morphAttributes.position!==void 0&&(ws=1),qr.morphAttributes.normal!==void 0&&(ws=2),qr.morphAttributes.color!==void 0&&(ws=3);let Gs,Fo,qi,Vr;if(Os){const du=tl[Os];Gs=du.vertexShader,Fo=du.fragmentShader}else Gs=nt.vertexShader,Fo=nt.fragmentShader,u.update(nt),qi=u.getVertexShaderID(nt),Vr=u.getFragmentShaderID(nt);const di=i.getRenderTarget(),Fs=i.state.buffers.depth.getReversed(),za=br.isInstancedMesh===!0,Js=br.isBatchedMesh===!0,Co=!!nt.map,kl=!!nt.matcap,Wo=!!ai,Ji=!!nt.aoMap,Ps=!!nt.lightMap,is=!!nt.bumpMap,oa=!!nt.normalMap,Gn=!!nt.displacementMap,Uo=!!nt.emissiveMap,$a=!!nt.metalnessMap,Zo=!!nt.roughnessMap,la=nt.anisotropy>0,Pn=nt.clearcoat>0,Ct=nt.dispersion>0,Fr=nt.iridescence>0,Ni=nt.sheen>0,fs=nt.transmission>0,Ui=la&&!!nt.anisotropyMap,mo=Pn&&!!nt.clearcoatMap,pa=Pn&&!!nt.clearcoatNormalMap,fo=Pn&&!!nt.clearcoatRoughnessMap,jo=Fr&&!!nt.iridescenceMap,Us=Fr&&!!nt.iridescenceThicknessMap,Ta=Ni&&!!nt.sheenColorMap,Ao=Ni&&!!nt.sheenRoughnessMap,wo=!!nt.specularMap,Ea=!!nt.specularColorMap,Vl=!!nt.specularIntensityMap,Nr=fs&&!!nt.transmissionMap,Qa=fs&&!!nt.thicknessMap,na=!!nt.gradientMap,Xa=!!nt.alphaMap,zs=nt.alphaTest>0,ds=!!nt.alphaHash,_a=!!nt.extensions;let gl=Bt;nt.toneMapped&&(di===null||di.isXRRenderTarget===!0)&&(gl=i.toneMapping);const Fu={shaderID:Os,shaderType:nt.type,shaderName:nt.name,vertexShader:Gs,fragmentShader:Fo,defines:nt.defines,customVertexShaderID:qi,customFragmentShaderID:Vr,isRawShaderMaterial:nt.isRawShaderMaterial===!0,glslVersion:nt.glslVersion,precision:R,batching:Js,batchingColor:Js&&br._colorsTexture!==null,instancing:za,instancingColor:za&&br.instanceColor!==null,instancingMorph:za&&br.morphTexture!==null,outputColorSpace:di===null?i.outputColorSpace:di.isXRRenderTarget===!0?di.texture.colorSpace:Cl,alphaToCoverage:!!nt.alphaToCoverage,map:Co,matcap:kl,envMap:Wo,envMapMode:Wo&&ai.mapping,envMapCubeUVHeight:zi,aoMap:Ji,lightMap:Ps,bumpMap:is,normalMap:oa,displacementMap:Gn,emissiveMap:Uo,normalMapObjectSpace:oa&&nt.normalMapType===Xu,normalMapTangentSpace:oa&&nt.normalMapType===tu,metalnessMap:$a,roughnessMap:Zo,anisotropy:la,anisotropyMap:Ui,clearcoat:Pn,clearcoatMap:mo,clearcoatNormalMap:pa,clearcoatRoughnessMap:fo,dispersion:Ct,iridescence:Fr,iridescenceMap:jo,iridescenceThicknessMap:Us,sheen:Ni,sheenColorMap:Ta,sheenRoughnessMap:Ao,specularMap:wo,specularColorMap:Ea,specularIntensityMap:Vl,transmission:fs,transmissionMap:Nr,thicknessMap:Qa,gradientMap:na,opaque:nt.transparent===!1&&nt.blending===_e&&nt.alphaToCoverage===!1,alphaMap:Xa,alphaTest:zs,alphaHash:ds,combine:nt.combine,mapUv:Co&&re(nt.map.channel),aoMapUv:Ji&&re(nt.aoMap.channel),lightMapUv:Ps&&re(nt.lightMap.channel),bumpMapUv:is&&re(nt.bumpMap.channel),normalMapUv:oa&&re(nt.normalMap.channel),displacementMapUv:Gn&&re(nt.displacementMap.channel),emissiveMapUv:Uo&&re(nt.emissiveMap.channel),metalnessMapUv:$a&&re(nt.metalnessMap.channel),roughnessMapUv:Zo&&re(nt.roughnessMap.channel),anisotropyMapUv:Ui&&re(nt.anisotropyMap.channel),clearcoatMapUv:mo&&re(nt.clearcoatMap.channel),clearcoatNormalMapUv:pa&&re(nt.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:fo&&re(nt.clearcoatRoughnessMap.channel),iridescenceMapUv:jo&&re(nt.iridescenceMap.channel),iridescenceThicknessMapUv:Us&&re(nt.iridescenceThicknessMap.channel),sheenColorMapUv:Ta&&re(nt.sheenColorMap.channel),sheenRoughnessMapUv:Ao&&re(nt.sheenRoughnessMap.channel),specularMapUv:wo&&re(nt.specularMap.channel),specularColorMapUv:Ea&&re(nt.specularColorMap.channel),specularIntensityMapUv:Vl&&re(nt.specularIntensityMap.channel),transmissionMapUv:Nr&&re(nt.transmissionMap.channel),thicknessMapUv:Qa&&re(nt.thicknessMap.channel),alphaMapUv:Xa&&re(nt.alphaMap.channel),vertexTangents:!!qr.attributes.tangent&&(oa||la),vertexColors:nt.vertexColors,vertexAlphas:nt.vertexColors===!0&&!!qr.attributes.color&&qr.attributes.color.itemSize===4,pointsUvs:br.isPoints===!0&&!!qr.attributes.uv&&(Co||Xa),fog:!!kr,useFog:nt.fog===!0,fogExp2:!!kr&&kr.isFogExp2,flatShading:nt.flatShading===!0&&nt.wireframe===!1,sizeAttenuation:nt.sizeAttenuation===!0,logarithmicDepthBuffer:M,reversedDepthBuffer:Fs,skinning:br.isSkinnedMesh===!0,morphTargets:qr.morphAttributes.position!==void 0,morphNormals:qr.morphAttributes.normal!==void 0,morphColors:qr.morphAttributes.color!==void 0,morphTargetsCount:ci,morphTextureStride:ws,numDirLights:mt.directional.length,numPointLights:mt.point.length,numSpotLights:mt.spot.length,numSpotLightMaps:mt.spotLightMap.length,numRectAreaLights:mt.rectArea.length,numHemiLights:mt.hemi.length,numDirLightShadows:mt.directionalShadowMap.length,numPointLightShadows:mt.pointShadowMap.length,numSpotLightShadows:mt.spotShadowMap.length,numSpotLightShadowsWithMaps:mt.numSpotLightShadowsWithMaps,numLightProbes:mt.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:nt.dithering,shadowMapEnabled:i.shadowMap.enabled&&En.length>0,shadowMapType:i.shadowMap.type,toneMapping:gl,decodeVideoTexture:Co&&nt.map.isVideoTexture===!0&&wr.getTransfer(nt.map.colorSpace)===Xs,decodeVideoTextureEmissive:Uo&&nt.emissiveMap.isVideoTexture===!0&&wr.getTransfer(nt.emissiveMap.colorSpace)===Xs,premultipliedAlpha:nt.premultipliedAlpha,doubleSided:nt.side===ue,flipSided:nt.side===fe,useDepthPacking:nt.depthPacking>=0,depthPacking:nt.depthPacking||0,index0AttributeName:nt.index0AttributeName,extensionClipCullDistance:_a&&nt.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(_a&&nt.extensions.multiDraw===!0||Js)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:nt.customProgramCacheKey()};return Fu.vertexUv1s=f.has(1),Fu.vertexUv2s=f.has(2),Fu.vertexUv3s=f.has(3),f.clear(),Fu}function J(nt){const mt=[];if(nt.shaderID?mt.push(nt.shaderID):(mt.push(nt.customVertexShaderID),mt.push(nt.customFragmentShaderID)),nt.defines!==void 0)for(const En in nt.defines)mt.push(En),mt.push(nt.defines[En]);return nt.isRawShaderMaterial===!1&&(be(mt,nt),Re(mt,nt),mt.push(i.outputColorSpace)),mt.push(nt.customProgramCacheKey),mt.join()}function be(nt,mt){nt.push(mt.precision),nt.push(mt.outputColorSpace),nt.push(mt.envMapMode),nt.push(mt.envMapCubeUVHeight),nt.push(mt.mapUv),nt.push(mt.alphaMapUv),nt.push(mt.lightMapUv),nt.push(mt.aoMapUv),nt.push(mt.bumpMapUv),nt.push(mt.normalMapUv),nt.push(mt.displacementMapUv),nt.push(mt.emissiveMapUv),nt.push(mt.metalnessMapUv),nt.push(mt.roughnessMapUv),nt.push(mt.anisotropyMapUv),nt.push(mt.clearcoatMapUv),nt.push(mt.clearcoatNormalMapUv),nt.push(mt.clearcoatRoughnessMapUv),nt.push(mt.iridescenceMapUv),nt.push(mt.iridescenceThicknessMapUv),nt.push(mt.sheenColorMapUv),nt.push(mt.sheenRoughnessMapUv),nt.push(mt.specularMapUv),nt.push(mt.specularColorMapUv),nt.push(mt.specularIntensityMapUv),nt.push(mt.transmissionMapUv),nt.push(mt.thicknessMapUv),nt.push(mt.combine),nt.push(mt.fogExp2),nt.push(mt.sizeAttenuation),nt.push(mt.morphTargetsCount),nt.push(mt.morphAttributeCount),nt.push(mt.numDirLights),nt.push(mt.numPointLights),nt.push(mt.numSpotLights),nt.push(mt.numSpotLightMaps),nt.push(mt.numHemiLights),nt.push(mt.numRectAreaLights),nt.push(mt.numDirLightShadows),nt.push(mt.numPointLightShadows),nt.push(mt.numSpotLightShadows),nt.push(mt.numSpotLightShadowsWithMaps),nt.push(mt.numLightProbes),nt.push(mt.shadowMapType),nt.push(mt.toneMapping),nt.push(mt.numClippingPlanes),nt.push(mt.numClipIntersection),nt.push(mt.depthPacking)}function Re(nt,mt){c.disableAll(),mt.instancing&&c.enable(0),mt.instancingColor&&c.enable(1),mt.instancingMorph&&c.enable(2),mt.matcap&&c.enable(3),mt.envMap&&c.enable(4),mt.normalMapObjectSpace&&c.enable(5),mt.normalMapTangentSpace&&c.enable(6),mt.clearcoat&&c.enable(7),mt.iridescence&&c.enable(8),mt.alphaTest&&c.enable(9),mt.vertexColors&&c.enable(10),mt.vertexAlphas&&c.enable(11),mt.vertexUv1s&&c.enable(12),mt.vertexUv2s&&c.enable(13),mt.vertexUv3s&&c.enable(14),mt.vertexTangents&&c.enable(15),mt.anisotropy&&c.enable(16),mt.alphaHash&&c.enable(17),mt.batching&&c.enable(18),mt.dispersion&&c.enable(19),mt.batchingColor&&c.enable(20),mt.gradientMap&&c.enable(21),nt.push(c.mask),c.disableAll(),mt.fog&&c.enable(0),mt.useFog&&c.enable(1),mt.flatShading&&c.enable(2),mt.logarithmicDepthBuffer&&c.enable(3),mt.reversedDepthBuffer&&c.enable(4),mt.skinning&&c.enable(5),mt.morphTargets&&c.enable(6),mt.morphNormals&&c.enable(7),mt.morphColors&&c.enable(8),mt.premultipliedAlpha&&c.enable(9),mt.shadowMapEnabled&&c.enable(10),mt.doubleSided&&c.enable(11),mt.flipSided&&c.enable(12),mt.useDepthPacking&&c.enable(13),mt.dithering&&c.enable(14),mt.transmission&&c.enable(15),mt.sheen&&c.enable(16),mt.opaque&&c.enable(17),mt.pointsUvs&&c.enable(18),mt.decodeVideoTexture&&c.enable(19),mt.decodeVideoTextureEmissive&&c.enable(20),mt.alphaToCoverage&&c.enable(21),nt.push(c.mask)}function ze(nt){const mt=I[nt.type];let En;if(mt){const vr=tl[mt];En=R0.clone(vr.uniforms)}else En=nt.uniforms;return En}function st(nt,mt){let En=v.get(mt);return En!==void 0?++En.usedTimes:(En=new YO(i,mt,nt,a),g.push(En),v.set(mt,En)),En}function et(nt){if(--nt.usedTimes===0){const mt=g.indexOf(nt);g[mt]=g[g.length-1],g.pop(),v.delete(nt.cacheKey),nt.destroy()}}function dt(nt){u.remove(nt)}function Nt(){u.dispose()}return{getParameters:ne,getProgramCacheKey:J,getUniforms:ze,acquireProgram:st,releaseProgram:et,releaseShaderCache:dt,programs:g,dispose:Nt}}function nk(){let i=new WeakMap;function e(o){return i.has(o)}function t(o){let c=i.get(o);return c===void 0&&(c={},i.set(o,c)),c}function n(o){i.delete(o)}function r(o,c,u){i.get(o)[c]=u}function a(){i=new WeakMap}return{has:e,get:t,remove:n,update:r,dispose:a}}function rk(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.material.id!==e.material.id?i.material.id-e.material.id:i.z!==e.z?i.z-e.z:i.id-e.id}function V2(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.z!==e.z?e.z-i.z:i.id-e.id}function H2(){const i=[];let e=0;const t=[],n=[],r=[];function a(){e=0,t.length=0,n.length=0,r.length=0}function o(v,M,R,I,re,ne){let J=i[e];return J===void 0?(J={id:v.id,object:v,geometry:M,material:R,groupOrder:I,renderOrder:v.renderOrder,z:re,group:ne},i[e]=J):(J.id=v.id,J.object=v,J.geometry=M,J.material=R,J.groupOrder=I,J.renderOrder=v.renderOrder,J.z=re,J.group=ne),e++,J}function c(v,M,R,I,re,ne){const J=o(v,M,R,I,re,ne);R.transmission>0?n.push(J):R.transparent===!0?r.push(J):t.push(J)}function u(v,M,R,I,re,ne){const J=o(v,M,R,I,re,ne);R.transmission>0?n.unshift(J):R.transparent===!0?r.unshift(J):t.unshift(J)}function f(v,M){t.length>1&&t.sort(v||rk),n.length>1&&n.sort(M||V2),r.length>1&&r.sort(M||V2)}function g(){for(let v=e,M=i.length;v=a.length?(o=new H2,a.push(o)):o=a[r],o}function t(){i=new WeakMap}return{get:e,dispose:t}}function sk(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new ce,color:new li};break;case"SpotLight":t={position:new ce,direction:new ce,color:new li,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new ce,color:new li,distance:0,decay:0};break;case"HemisphereLight":t={direction:new ce,skyColor:new li,groundColor:new li};break;case"RectAreaLight":t={color:new li,position:new ce,halfWidth:new ce,halfHeight:new ce};break}return i[e.id]=t,t}}}function ak(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new de};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new de};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new de,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[e.id]=t,t}}}let ok=0;function lk(i,e){return(e.castShadow?2:0)-(i.castShadow?2:0)+(e.map?1:0)-(i.map?1:0)}function ck(i){const e=new sk,t=ak(),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 f=0;f<9;f++)n.probe.push(new ce);const r=new ce,a=new ti,o=new ti;function c(f){let g=0,v=0,M=0;for(let nt=0;nt<9;nt++)n.probe[nt].set(0,0,0);let R=0,I=0,re=0,ne=0,J=0,be=0,Re=0,ze=0,st=0,et=0,dt=0;f.sort(lk);for(let nt=0,mt=f.length;nt0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=ji.LTC_FLOAT_1,n.rectAreaLTC2=ji.LTC_FLOAT_2):(n.rectAreaLTC1=ji.LTC_HALF_1,n.rectAreaLTC2=ji.LTC_HALF_2)),n.ambient[0]=g,n.ambient[1]=v,n.ambient[2]=M;const Nt=n.hash;(Nt.directionalLength!==R||Nt.pointLength!==I||Nt.spotLength!==re||Nt.rectAreaLength!==ne||Nt.hemiLength!==J||Nt.numDirectionalShadows!==be||Nt.numPointShadows!==Re||Nt.numSpotShadows!==ze||Nt.numSpotMaps!==st||Nt.numLightProbes!==dt)&&(n.directional.length=R,n.spot.length=re,n.rectArea.length=ne,n.point.length=I,n.hemi.length=J,n.directionalShadow.length=be,n.directionalShadowMap.length=be,n.pointShadow.length=Re,n.pointShadowMap.length=Re,n.spotShadow.length=ze,n.spotShadowMap.length=ze,n.directionalShadowMatrix.length=be,n.pointShadowMatrix.length=Re,n.spotLightMatrix.length=ze+st-et,n.spotLightMap.length=st,n.numSpotLightShadowsWithMaps=et,n.numLightProbes=dt,Nt.directionalLength=R,Nt.pointLength=I,Nt.spotLength=re,Nt.rectAreaLength=ne,Nt.hemiLength=J,Nt.numDirectionalShadows=be,Nt.numPointShadows=Re,Nt.numSpotShadows=ze,Nt.numSpotMaps=st,Nt.numLightProbes=dt,n.version=ok++)}function u(f,g){let v=0,M=0,R=0,I=0,re=0;const ne=g.matrixWorldInverse;for(let J=0,be=f.length;J=o.length?(c=new G2(i),o.push(c)):c=o[a],c}function n(){e=new WeakMap}return{get:t,dispose:n}}const hk=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,fk=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ).rg; + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ).r; + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) ); + gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 ); +}`,dk=[new ce(1,0,0),new ce(-1,0,0),new ce(0,1,0),new ce(0,-1,0),new ce(0,0,1),new ce(0,0,-1)],Ak=[new ce(0,-1,0),new ce(0,-1,0),new ce(0,0,1),new ce(0,0,-1),new ce(0,-1,0),new ce(0,-1,0)],z2=new ti,lb=new ce,TM=new ce;function pk(i,e,t){let n=new Qp;const r=new de,a=new de,o=new ts,c=new gw,u=new mw,f={},g=t.maxTextureSize,v={[Y]:fe,[fe]:Y,[ue]:ue},M=new tf({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new de},radius:{value:4}},vertexShader:hk,fragmentShader:fk}),R=M.clone();R.defines.HORIZONTAL_PASS=1;const I=new Eo;I.setAttribute("position",new jl(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const re=new Mc(I,M),ne=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Q;let J=this.type;this.render=function(et,dt,Nt){if(ne.enabled===!1||ne.autoUpdate===!1&&ne.needsUpdate===!1||et.length===0)return;et.type===V&&(Qr("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),et.type=Q);const nt=i.getRenderTarget(),mt=i.getActiveCubeFace(),En=i.getActiveMipmapLevel(),vr=i.state;vr.setBlending(Me),vr.buffers.depth.getReversed()===!0?vr.buffers.color.setClear(0,0,0,0):vr.buffers.color.setClear(1,1,1,1),vr.buffers.depth.setTest(!0),vr.setScissorTest(!1);const br=J!==this.type;br&&dt.traverse(function(kr){kr.material&&(Array.isArray(kr.material)?kr.material.forEach(qr=>qr.needsUpdate=!0):kr.material.needsUpdate=!0)});for(let kr=0,qr=et.length;krg||r.y>g)&&(r.x>g&&(a.x=Math.floor(g/zi.x),r.x=a.x*zi.x,ai.mapSize.x=a.x),r.y>g&&(a.y=Math.floor(g/zi.y),r.y=a.y*zi.y,ai.mapSize.y=a.y)),ai.map===null||br===!0){if(ai.map!==null&&(ai.map.depthTexture!==null&&(ai.map.depthTexture.dispose(),ai.map.depthTexture=null),ai.map.dispose()),this.type===j){if(jr.isPointLight){Qr("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}ai.map=new ra(r.x,r.y,{format:We,type:zt,minFilter:Pr,magFilter:Pr,generateMipmaps:!1}),ai.map.texture.name=jr.name+".shadowMap",ai.map.depthTexture=new cc(r.x,r.y,pt),ai.map.depthTexture.name=jr.name+".shadowMapDepth",ai.map.depthTexture.format=W,ai.map.depthTexture.compareFunction=null,ai.map.depthTexture.minFilter=xn,ai.map.depthTexture.magFilter=xn}else{jr.isPointLight?(ai.map=new Sm(r.x),ai.map.depthTexture=new Dg(r.x,ct)):(ai.map=new ra(r.x,r.y),ai.map.depthTexture=new cc(r.x,r.y,ct)),ai.map.depthTexture.name=jr.name+".shadowMap",ai.map.depthTexture.format=W;const Hs=i.state.buffers.depth.getReversed();this.type===Q?(ai.map.depthTexture.compareFunction=Hs?Ss:Fh,ai.map.depthTexture.minFilter=Pr,ai.map.depthTexture.magFilter=Pr):(ai.map.depthTexture.compareFunction=null,ai.map.depthTexture.minFilter=xn,ai.map.depthTexture.magFilter=xn)}ai.camera.updateProjectionMatrix()}const Os=ai.map.isWebGLCubeRenderTarget?6:1;for(let Hs=0;Hs0||dt.map&&dt.alphaTest>0||dt.alphaToCoverage===!0){const vr=mt.uuid,br=dt.uuid;let kr=f[vr];kr===void 0&&(kr={},f[vr]=kr);let qr=kr[br];qr===void 0&&(qr=mt.clone(),kr[br]=qr,dt.addEventListener("dispose",st)),mt=qr}if(mt.visible=dt.visible,mt.wireframe=dt.wireframe,nt===j?mt.side=dt.shadowSide!==null?dt.shadowSide:dt.side:mt.side=dt.shadowSide!==null?dt.shadowSide:v[dt.side],mt.alphaMap=dt.alphaMap,mt.alphaTest=dt.alphaToCoverage===!0?.5:dt.alphaTest,mt.map=dt.map,mt.clipShadows=dt.clipShadows,mt.clippingPlanes=dt.clippingPlanes,mt.clipIntersection=dt.clipIntersection,mt.displacementMap=dt.displacementMap,mt.displacementScale=dt.displacementScale,mt.displacementBias=dt.displacementBias,mt.wireframeLinewidth=dt.wireframeLinewidth,mt.linewidth=dt.linewidth,Nt.isPointLight===!0&&mt.isMeshDistanceMaterial===!0){const vr=i.properties.get(mt);vr.light=Nt}return mt}function ze(et,dt,Nt,nt,mt){if(et.visible===!1)return;if(et.layers.test(dt.layers)&&(et.isMesh||et.isLine||et.isPoints)&&(et.castShadow||et.receiveShadow&&mt===j)&&(!et.frustumCulled||n.intersectsObject(et))){et.modelViewMatrix.multiplyMatrices(Nt.matrixWorldInverse,et.matrixWorld);const br=e.update(et),kr=et.material;if(Array.isArray(kr)){const qr=br.groups;for(let jr=0,ai=qr.length;jr=1):zi.indexOf("OpenGL ES")!==-1&&(ai=parseFloat(/^OpenGL ES (\d)/.exec(zi)[1]),jr=ai>=2);let Os=null,Hs={};const ci=i.getParameter(i.SCISSOR_BOX),ws=i.getParameter(i.VIEWPORT),Gs=new ts().fromArray(ci),Fo=new ts().fromArray(ws);function qi(Nr,Qa,na,Xa){const zs=new Uint8Array(4),ds=i.createTexture();i.bindTexture(Nr,ds),i.texParameteri(Nr,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(Nr,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let _a=0;_aFr||fs.height>Fr)&&(Ni=Fr/Math.max(fs.width,fs.height)),Ni<1)if(typeof HTMLImageElement!="undefined"&&Pn instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&Pn instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&Pn instanceof ImageBitmap||typeof VideoFrame!="undefined"&&Pn instanceof VideoFrame){const Ui=Math.floor(Ni*fs.width),mo=Math.floor(Ni*fs.height);v===void 0&&(v=I(Ui,mo));const pa=Ct?I(Ui,mo):v;return pa.width=Ui,pa.height=mo,pa.getContext("2d").drawImage(Pn,0,0,Ui,mo),Qr("WebGLRenderer: Texture has been resized from ("+fs.width+"x"+fs.height+") to ("+Ui+"x"+mo+")."),pa}else return"data"in Pn&&Qr("WebGLRenderer: Image in DataTexture is too big ("+fs.width+"x"+fs.height+")."),Pn;return Pn}function ne(Pn){return Pn.generateMipmaps}function J(Pn){i.generateMipmap(Pn)}function be(Pn){return Pn.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:Pn.isWebGL3DRenderTarget?i.TEXTURE_3D:Pn.isWebGLArrayRenderTarget||Pn.isCompressedArrayTexture?i.TEXTURE_2D_ARRAY:i.TEXTURE_2D}function Re(Pn,Ct,Fr,Ni,fs=!1){if(Pn!==null){if(i[Pn]!==void 0)return i[Pn];Qr("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+Pn+"'")}let Ui=Ct;if(Ct===i.RED&&(Fr===i.FLOAT&&(Ui=i.R32F),Fr===i.HALF_FLOAT&&(Ui=i.R16F),Fr===i.UNSIGNED_BYTE&&(Ui=i.R8)),Ct===i.RED_INTEGER&&(Fr===i.UNSIGNED_BYTE&&(Ui=i.R8UI),Fr===i.UNSIGNED_SHORT&&(Ui=i.R16UI),Fr===i.UNSIGNED_INT&&(Ui=i.R32UI),Fr===i.BYTE&&(Ui=i.R8I),Fr===i.SHORT&&(Ui=i.R16I),Fr===i.INT&&(Ui=i.R32I)),Ct===i.RG&&(Fr===i.FLOAT&&(Ui=i.RG32F),Fr===i.HALF_FLOAT&&(Ui=i.RG16F),Fr===i.UNSIGNED_BYTE&&(Ui=i.RG8)),Ct===i.RG_INTEGER&&(Fr===i.UNSIGNED_BYTE&&(Ui=i.RG8UI),Fr===i.UNSIGNED_SHORT&&(Ui=i.RG16UI),Fr===i.UNSIGNED_INT&&(Ui=i.RG32UI),Fr===i.BYTE&&(Ui=i.RG8I),Fr===i.SHORT&&(Ui=i.RG16I),Fr===i.INT&&(Ui=i.RG32I)),Ct===i.RGB_INTEGER&&(Fr===i.UNSIGNED_BYTE&&(Ui=i.RGB8UI),Fr===i.UNSIGNED_SHORT&&(Ui=i.RGB16UI),Fr===i.UNSIGNED_INT&&(Ui=i.RGB32UI),Fr===i.BYTE&&(Ui=i.RGB8I),Fr===i.SHORT&&(Ui=i.RGB16I),Fr===i.INT&&(Ui=i.RGB32I)),Ct===i.RGBA_INTEGER&&(Fr===i.UNSIGNED_BYTE&&(Ui=i.RGBA8UI),Fr===i.UNSIGNED_SHORT&&(Ui=i.RGBA16UI),Fr===i.UNSIGNED_INT&&(Ui=i.RGBA32UI),Fr===i.BYTE&&(Ui=i.RGBA8I),Fr===i.SHORT&&(Ui=i.RGBA16I),Fr===i.INT&&(Ui=i.RGBA32I)),Ct===i.RGB&&(Fr===i.UNSIGNED_INT_5_9_9_9_REV&&(Ui=i.RGB9_E5),Fr===i.UNSIGNED_INT_10F_11F_11F_REV&&(Ui=i.R11F_G11F_B10F)),Ct===i.RGBA){const mo=fs?Kc:wr.getTransfer(Ni);Fr===i.FLOAT&&(Ui=i.RGBA32F),Fr===i.HALF_FLOAT&&(Ui=i.RGBA16F),Fr===i.UNSIGNED_BYTE&&(Ui=mo===Xs?i.SRGB8_ALPHA8:i.RGBA8),Fr===i.UNSIGNED_SHORT_4_4_4_4&&(Ui=i.RGBA4),Fr===i.UNSIGNED_SHORT_5_5_5_1&&(Ui=i.RGB5_A1)}return(Ui===i.R16F||Ui===i.R32F||Ui===i.RG16F||Ui===i.RG32F||Ui===i.RGBA16F||Ui===i.RGBA32F)&&e.get("EXT_color_buffer_float"),Ui}function ze(Pn,Ct){let Fr;return Pn?Ct===null||Ct===ct||Ct===ur?Fr=i.DEPTH24_STENCIL8:Ct===pt?Fr=i.DEPTH32F_STENCIL8:Ct===cn&&(Fr=i.DEPTH24_STENCIL8,Qr("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):Ct===null||Ct===ct||Ct===ur?Fr=i.DEPTH_COMPONENT24:Ct===pt?Fr=i.DEPTH_COMPONENT32F:Ct===cn&&(Fr=i.DEPTH_COMPONENT16),Fr}function st(Pn,Ct){return ne(Pn)===!0||Pn.isFramebufferTexture&&Pn.minFilter!==xn&&Pn.minFilter!==Pr?Math.log2(Math.max(Ct.width,Ct.height))+1:Pn.mipmaps!==void 0&&Pn.mipmaps.length>0?Pn.mipmaps.length:Pn.isCompressedTexture&&Array.isArray(Pn.image)?Ct.mipmaps.length:1}function et(Pn){const Ct=Pn.target;Ct.removeEventListener("dispose",et),Nt(Ct),Ct.isVideoTexture&&g.delete(Ct)}function dt(Pn){const Ct=Pn.target;Ct.removeEventListener("dispose",dt),mt(Ct)}function Nt(Pn){const Ct=n.get(Pn);if(Ct.__webglInit===void 0)return;const Fr=Pn.source,Ni=M.get(Fr);if(Ni){const fs=Ni[Ct.__cacheKey];fs.usedTimes--,fs.usedTimes===0&&nt(Pn),Object.keys(Ni).length===0&&M.delete(Fr)}n.remove(Pn)}function nt(Pn){const Ct=n.get(Pn);i.deleteTexture(Ct.__webglTexture);const Fr=Pn.source,Ni=M.get(Fr);delete Ni[Ct.__cacheKey],o.memory.textures--}function mt(Pn){const Ct=n.get(Pn);if(Pn.depthTexture&&(Pn.depthTexture.dispose(),n.remove(Pn.depthTexture)),Pn.isWebGLCubeRenderTarget)for(let Ni=0;Ni<6;Ni++){if(Array.isArray(Ct.__webglFramebuffer[Ni]))for(let fs=0;fs=r.maxTextures&&Qr("WebGLTextures: Trying to use "+Pn+" texture units while this GPU supports only "+r.maxTextures),En+=1,Pn}function kr(Pn){const Ct=[];return Ct.push(Pn.wrapS),Ct.push(Pn.wrapT),Ct.push(Pn.wrapR||0),Ct.push(Pn.magFilter),Ct.push(Pn.minFilter),Ct.push(Pn.anisotropy),Ct.push(Pn.internalFormat),Ct.push(Pn.format),Ct.push(Pn.type),Ct.push(Pn.generateMipmaps),Ct.push(Pn.premultiplyAlpha),Ct.push(Pn.flipY),Ct.push(Pn.unpackAlignment),Ct.push(Pn.colorSpace),Ct.join()}function qr(Pn,Ct){const Fr=n.get(Pn);if(Pn.isVideoTexture&&$a(Pn),Pn.isRenderTargetTexture===!1&&Pn.isExternalTexture!==!0&&Pn.version>0&&Fr.__version!==Pn.version){const Ni=Pn.image;if(Ni===null)Qr("WebGLRenderer: Texture marked for update but no image data found.");else if(Ni.complete===!1)Qr("WebGLRenderer: Texture marked for update but image is incomplete");else{Vr(Fr,Pn,Ct);return}}else Pn.isExternalTexture&&(Fr.__webglTexture=Pn.sourceTexture?Pn.sourceTexture:null);t.bindTexture(i.TEXTURE_2D,Fr.__webglTexture,i.TEXTURE0+Ct)}function jr(Pn,Ct){const Fr=n.get(Pn);if(Pn.isRenderTargetTexture===!1&&Pn.version>0&&Fr.__version!==Pn.version){Vr(Fr,Pn,Ct);return}else Pn.isExternalTexture&&(Fr.__webglTexture=Pn.sourceTexture?Pn.sourceTexture:null);t.bindTexture(i.TEXTURE_2D_ARRAY,Fr.__webglTexture,i.TEXTURE0+Ct)}function ai(Pn,Ct){const Fr=n.get(Pn);if(Pn.isRenderTargetTexture===!1&&Pn.version>0&&Fr.__version!==Pn.version){Vr(Fr,Pn,Ct);return}t.bindTexture(i.TEXTURE_3D,Fr.__webglTexture,i.TEXTURE0+Ct)}function zi(Pn,Ct){const Fr=n.get(Pn);if(Pn.isCubeDepthTexture!==!0&&Pn.version>0&&Fr.__version!==Pn.version){di(Fr,Pn,Ct);return}t.bindTexture(i.TEXTURE_CUBE_MAP,Fr.__webglTexture,i.TEXTURE0+Ct)}const Os={[Yt]:i.REPEAT,[$t]:i.CLAMP_TO_EDGE,[Ft]:i.MIRRORED_REPEAT},Hs={[xn]:i.NEAREST,[cr]:i.NEAREST_MIPMAP_NEAREST,[Lr]:i.NEAREST_MIPMAP_LINEAR,[Pr]:i.LINEAR,[ys]:i.LINEAR_MIPMAP_NEAREST,[Fi]:i.LINEAR_MIPMAP_LINEAR},ci={[Rc]:i.NEVER,[Ru]:i.ALWAYS,[rl]:i.LESS,[Fh]:i.LEQUAL,[gh]:i.EQUAL,[Ss]:i.GEQUAL,[Kh]:i.GREATER,[_l]:i.NOTEQUAL};function ws(Pn,Ct){if(Ct.type===pt&&e.has("OES_texture_float_linear")===!1&&(Ct.magFilter===Pr||Ct.magFilter===ys||Ct.magFilter===Lr||Ct.magFilter===Fi||Ct.minFilter===Pr||Ct.minFilter===ys||Ct.minFilter===Lr||Ct.minFilter===Fi)&&Qr("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(Pn,i.TEXTURE_WRAP_S,Os[Ct.wrapS]),i.texParameteri(Pn,i.TEXTURE_WRAP_T,Os[Ct.wrapT]),(Pn===i.TEXTURE_3D||Pn===i.TEXTURE_2D_ARRAY)&&i.texParameteri(Pn,i.TEXTURE_WRAP_R,Os[Ct.wrapR]),i.texParameteri(Pn,i.TEXTURE_MAG_FILTER,Hs[Ct.magFilter]),i.texParameteri(Pn,i.TEXTURE_MIN_FILTER,Hs[Ct.minFilter]),Ct.compareFunction&&(i.texParameteri(Pn,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(Pn,i.TEXTURE_COMPARE_FUNC,ci[Ct.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(Ct.magFilter===xn||Ct.minFilter!==Lr&&Ct.minFilter!==Fi||Ct.type===pt&&e.has("OES_texture_float_linear")===!1)return;if(Ct.anisotropy>1||n.get(Ct).__currentAnisotropy){const Fr=e.get("EXT_texture_filter_anisotropic");i.texParameterf(Pn,Fr.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(Ct.anisotropy,r.getMaxAnisotropy())),n.get(Ct).__currentAnisotropy=Ct.anisotropy}}}function Gs(Pn,Ct){let Fr=!1;Pn.__webglInit===void 0&&(Pn.__webglInit=!0,Ct.addEventListener("dispose",et));const Ni=Ct.source;let fs=M.get(Ni);fs===void 0&&(fs={},M.set(Ni,fs));const Ui=kr(Ct);if(Ui!==Pn.__cacheKey){fs[Ui]===void 0&&(fs[Ui]={texture:i.createTexture(),usedTimes:0},o.memory.textures++,Fr=!0),fs[Ui].usedTimes++;const mo=fs[Pn.__cacheKey];mo!==void 0&&(fs[Pn.__cacheKey].usedTimes--,mo.usedTimes===0&&nt(Ct)),Pn.__cacheKey=Ui,Pn.__webglTexture=fs[Ui].texture}return Fr}function Fo(Pn,Ct,Fr){return Math.floor(Math.floor(Pn/Fr)/Ct)}function qi(Pn,Ct,Fr,Ni){const Ui=Pn.updateRanges;if(Ui.length===0)t.texSubImage2D(i.TEXTURE_2D,0,0,0,Ct.width,Ct.height,Fr,Ni,Ct.data);else{Ui.sort((Us,Ta)=>Us.start-Ta.start);let mo=0;for(let Us=1;Us0){Nr&&Qa&&t.texStorage2D(i.TEXTURE_2D,Xa,wo,Vl[0].width,Vl[0].height);for(let zs=0,ds=Vl.length;zs0){const _a=hx(Ea.width,Ea.height,Ct.format,Ct.type);for(const gl of Ct.layerUpdates){const Fu=Ea.data.subarray(gl*_a/Ea.data.BYTES_PER_ELEMENT,(gl+1)*_a/Ea.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,zs,0,0,gl,Ea.width,Ea.height,1,Ta,Fu)}Ct.clearLayerUpdates()}else t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,zs,0,0,0,Ea.width,Ea.height,Us.depth,Ta,Ea.data)}else t.compressedTexImage3D(i.TEXTURE_2D_ARRAY,zs,wo,Ea.width,Ea.height,Us.depth,0,Ea.data,0,0);else Qr("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else Nr?na&&t.texSubImage3D(i.TEXTURE_2D_ARRAY,zs,0,0,0,Ea.width,Ea.height,Us.depth,Ta,Ao,Ea.data):t.texImage3D(i.TEXTURE_2D_ARRAY,zs,wo,Ea.width,Ea.height,Us.depth,0,Ta,Ao,Ea.data)}else{Nr&&Qa&&t.texStorage2D(i.TEXTURE_2D,Xa,wo,Vl[0].width,Vl[0].height);for(let zs=0,ds=Vl.length;zs0){const zs=hx(Us.width,Us.height,Ct.format,Ct.type);for(const ds of Ct.layerUpdates){const _a=Us.data.subarray(ds*zs/Us.data.BYTES_PER_ELEMENT,(ds+1)*zs/Us.data.BYTES_PER_ELEMENT);t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,ds,Us.width,Us.height,1,Ta,Ao,_a)}Ct.clearLayerUpdates()}else t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,Us.width,Us.height,Us.depth,Ta,Ao,Us.data)}else t.texImage3D(i.TEXTURE_2D_ARRAY,0,wo,Us.width,Us.height,Us.depth,0,Ta,Ao,Us.data);else if(Ct.isData3DTexture)Nr?(Qa&&t.texStorage3D(i.TEXTURE_3D,Xa,wo,Us.width,Us.height,Us.depth),na&&t.texSubImage3D(i.TEXTURE_3D,0,0,0,0,Us.width,Us.height,Us.depth,Ta,Ao,Us.data)):t.texImage3D(i.TEXTURE_3D,0,wo,Us.width,Us.height,Us.depth,0,Ta,Ao,Us.data);else if(Ct.isFramebufferTexture){if(Qa)if(Nr)t.texStorage2D(i.TEXTURE_2D,Xa,wo,Us.width,Us.height);else{let zs=Us.width,ds=Us.height;for(let _a=0;_a>=1,ds>>=1}}else if(Vl.length>0){if(Nr&&Qa){const zs=la(Vl[0]);t.texStorage2D(i.TEXTURE_2D,Xa,wo,zs.width,zs.height)}for(let zs=0,ds=Vl.length;zs0&&Xa++;const ds=la(Ta[0]);t.texStorage2D(i.TEXTURE_CUBE_MAP,Xa,Vl,ds.width,ds.height)}for(let ds=0;ds<6;ds++)if(Us){Nr?na&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ds,0,0,0,Ta[ds].width,Ta[ds].height,wo,Ea,Ta[ds].data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+ds,0,Vl,Ta[ds].width,Ta[ds].height,0,wo,Ea,Ta[ds].data);for(let _a=0;_a>Ui),Ao=Math.max(1,Ct.height>>Ui);fs===i.TEXTURE_3D||fs===i.TEXTURE_2D_ARRAY?t.texImage3D(fs,Ui,fo,Ta,Ao,Ct.depth,0,mo,pa,null):t.texImage2D(fs,Ui,fo,Ta,Ao,0,mo,pa,null)}t.bindFramebuffer(i.FRAMEBUFFER,Pn),Uo(Ct)?c.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,Ni,fs,Us.__webglTexture,0,Gn(Ct)):(fs===i.TEXTURE_2D||fs>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&fs<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,Ni,fs,Us.__webglTexture,Ui),t.bindFramebuffer(i.FRAMEBUFFER,null)}function za(Pn,Ct,Fr){if(i.bindRenderbuffer(i.RENDERBUFFER,Pn),Ct.depthBuffer){const Ni=Ct.depthTexture,fs=Ni&&Ni.isDepthTexture?Ni.type:null,Ui=ze(Ct.stencilBuffer,fs),mo=Ct.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT;Uo(Ct)?c.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,Gn(Ct),Ui,Ct.width,Ct.height):Fr?i.renderbufferStorageMultisample(i.RENDERBUFFER,Gn(Ct),Ui,Ct.width,Ct.height):i.renderbufferStorage(i.RENDERBUFFER,Ui,Ct.width,Ct.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,mo,i.RENDERBUFFER,Pn)}else{const Ni=Ct.textures;for(let fs=0;fs{delete Ct.__boundDepthTexture,delete Ct.__depthDisposeCallback,Ni.removeEventListener("dispose",fs)};Ni.addEventListener("dispose",fs),Ct.__depthDisposeCallback=fs}Ct.__boundDepthTexture=Ni}if(Pn.depthTexture&&!Ct.__autoAllocateDepthBuffer)if(Fr)for(let Ni=0;Ni<6;Ni++)Js(Ct.__webglFramebuffer[Ni],Pn,Ni);else{const Ni=Pn.texture.mipmaps;Ni&&Ni.length>0?Js(Ct.__webglFramebuffer[0],Pn,0):Js(Ct.__webglFramebuffer,Pn,0)}else if(Fr){Ct.__webglDepthbuffer=[];for(let Ni=0;Ni<6;Ni++)if(t.bindFramebuffer(i.FRAMEBUFFER,Ct.__webglFramebuffer[Ni]),Ct.__webglDepthbuffer[Ni]===void 0)Ct.__webglDepthbuffer[Ni]=i.createRenderbuffer(),za(Ct.__webglDepthbuffer[Ni],Pn,!1);else{const fs=Pn.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Ui=Ct.__webglDepthbuffer[Ni];i.bindRenderbuffer(i.RENDERBUFFER,Ui),i.framebufferRenderbuffer(i.FRAMEBUFFER,fs,i.RENDERBUFFER,Ui)}}else{const Ni=Pn.texture.mipmaps;if(Ni&&Ni.length>0?t.bindFramebuffer(i.FRAMEBUFFER,Ct.__webglFramebuffer[0]):t.bindFramebuffer(i.FRAMEBUFFER,Ct.__webglFramebuffer),Ct.__webglDepthbuffer===void 0)Ct.__webglDepthbuffer=i.createRenderbuffer(),za(Ct.__webglDepthbuffer,Pn,!1);else{const fs=Pn.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Ui=Ct.__webglDepthbuffer;i.bindRenderbuffer(i.RENDERBUFFER,Ui),i.framebufferRenderbuffer(i.FRAMEBUFFER,fs,i.RENDERBUFFER,Ui)}}t.bindFramebuffer(i.FRAMEBUFFER,null)}function kl(Pn,Ct,Fr){const Ni=n.get(Pn);Ct!==void 0&&Fs(Ni.__webglFramebuffer,Pn,Pn.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),Fr!==void 0&&Co(Pn)}function Wo(Pn){const Ct=Pn.texture,Fr=n.get(Pn),Ni=n.get(Ct);Pn.addEventListener("dispose",dt);const fs=Pn.textures,Ui=Pn.isWebGLCubeRenderTarget===!0,mo=fs.length>1;if(mo||(Ni.__webglTexture===void 0&&(Ni.__webglTexture=i.createTexture()),Ni.__version=Ct.version,o.memory.textures++),Ui){Fr.__webglFramebuffer=[];for(let pa=0;pa<6;pa++)if(Ct.mipmaps&&Ct.mipmaps.length>0){Fr.__webglFramebuffer[pa]=[];for(let fo=0;fo0){Fr.__webglFramebuffer=[];for(let pa=0;pa0&&Uo(Pn)===!1){Fr.__webglMultisampledFramebuffer=i.createFramebuffer(),Fr.__webglColorRenderbuffer=[],t.bindFramebuffer(i.FRAMEBUFFER,Fr.__webglMultisampledFramebuffer);for(let pa=0;pa0)for(let fo=0;fo0)for(let fo=0;fo0){if(Uo(Pn)===!1){const Ct=Pn.textures,Fr=Pn.width,Ni=Pn.height;let fs=i.COLOR_BUFFER_BIT;const Ui=Pn.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,mo=n.get(Pn),pa=Ct.length>1;if(pa)for(let jo=0;jo0?t.bindFramebuffer(i.DRAW_FRAMEBUFFER,mo.__webglFramebuffer[0]):t.bindFramebuffer(i.DRAW_FRAMEBUFFER,mo.__webglFramebuffer);for(let jo=0;jo0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&Ct.__useRenderToTexture!==!1}function $a(Pn){const Ct=o.render.frame;g.get(Pn)!==Ct&&(g.set(Pn,Ct),Pn.update())}function Zo(Pn,Ct){const Fr=Pn.colorSpace,Ni=Pn.format,fs=Pn.type;return Pn.isCompressedTexture===!0||Pn.isVideoTexture===!0||Fr!==Cl&&Fr!==nl&&(wr.getTransfer(Fr)===Xs?(Ni!==k||fs!==gs)&&Qr("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):ri("WebGLTextures: Unsupported texture color space:",Fr)),Ct}function la(Pn){return typeof HTMLImageElement!="undefined"&&Pn instanceof HTMLImageElement?(f.width=Pn.naturalWidth||Pn.width,f.height=Pn.naturalHeight||Pn.height):typeof VideoFrame!="undefined"&&Pn instanceof VideoFrame?(f.width=Pn.displayWidth,f.height=Pn.displayHeight):(f.width=Pn.width,f.height=Pn.height),f}this.allocateTextureUnit=br,this.resetTextureUnits=vr,this.setTexture2D=qr,this.setTexture2DArray=jr,this.setTexture3D=ai,this.setTextureCube=zi,this.rebindTextures=kl,this.setupRenderTarget=Wo,this.updateRenderTargetMipmap=Ji,this.updateMultisampleRenderTarget=oa,this.setupDepthRenderbuffer=Co,this.setupFrameBufferTexture=Fs,this.useMultisampledRTT=Uo,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function yk(i,e){function t(n,r=nl){let a;const o=wr.getTransfer(r);if(n===gs)return i.UNSIGNED_BYTE;if(n===Mn)return i.UNSIGNED_SHORT_4_4_4_4;if(n===sn)return i.UNSIGNED_SHORT_5_5_5_1;if(n===lr)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===oi)return i.UNSIGNED_INT_10F_11F_11F_REV;if(n===Di)return i.BYTE;if(n===Nn)return i.SHORT;if(n===cn)return i.UNSIGNED_SHORT;if(n===jt)return i.INT;if(n===ct)return i.UNSIGNED_INT;if(n===pt)return i.FLOAT;if(n===zt)return i.HALF_FLOAT;if(n===mi)return i.ALPHA;if(n===Le)return i.RGB;if(n===k)return i.RGBA;if(n===W)return i.DEPTH_COMPONENT;if(n===S)return i.DEPTH_STENCIL;if(n===G)return i.RED;if(n===ae)return i.RED_INTEGER;if(n===We)return i.RG;if(n===tt)return i.RG_INTEGER;if(n===bt)return i.RGBA_INTEGER;if(n===Bn||n===Ge||n===$e||n===Ne)if(o===Xs)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(n===Bn)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===Ge)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===$e)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Ne)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(n===Bn)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===Ge)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===$e)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Ne)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Ye||n===vt||n===an||n===xt)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(n===Ye)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===vt)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===an)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===xt)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===tn||n===Un||n===hr||n===or||n===$r||n===xr||n===Rr)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(n===tn||n===Un)return o===Xs?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(n===hr)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC;if(n===or)return a.COMPRESSED_R11_EAC;if(n===$r)return a.COMPRESSED_SIGNED_R11_EAC;if(n===xr)return a.COMPRESSED_RG11_EAC;if(n===Rr)return a.COMPRESSED_SIGNED_RG11_EAC}else return null;if(n===pi||n===Tn||n===ir||n===ni||n===zr||n===xs||n===ms||n===ls||n===Oi||n===Ds||n===Bi||n===Qs||n===Na||n===$n)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(n===pi)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Tn)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===ir)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===ni)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===zr)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===xs)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===ms)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===ls)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Oi)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Ds)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Bi)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Qs)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Na)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===$n)return o===Xs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Ut||n===Kt||n===Lt)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(n===Ut)return o===Xs?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Kt)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Lt)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Sn||n===Hn||n===ar||n===Hr)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(n===Sn)return a.COMPRESSED_RED_RGTC1_EXT;if(n===Hn)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===ar)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Hr)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===ur?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:t}}const xk=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,_k=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class bk{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const n=new Pl(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new tf({vertexShader:xk,fragmentShader:_k,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Mc(new ih(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class wk extends wc{constructor(e,t){super();const n=this;let r=null,a=1,o=null,c="local-floor",u=1,f=null,g=null,v=null,M=null,R=null,I=null;const re=typeof XRWebGLBinding!="undefined",ne=new bk,J={},be=t.getContextAttributes();let Re=null,ze=null;const st=[],et=[],dt=new de;let Nt=null;const nt=new Ko;nt.viewport=new ts;const mt=new Ko;mt.viewport=new ts;const En=[nt,mt],vr=new S_;let br=null,kr=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(Vr){let di=st[Vr];return di===void 0&&(di=new Mo,st[Vr]=di),di.getTargetRaySpace()},this.getControllerGrip=function(Vr){let di=st[Vr];return di===void 0&&(di=new Mo,st[Vr]=di),di.getGripSpace()},this.getHand=function(Vr){let di=st[Vr];return di===void 0&&(di=new Mo,st[Vr]=di),di.getHandSpace()};function qr(Vr){const di=et.indexOf(Vr.inputSource);if(di===-1)return;const Fs=st[di];Fs!==void 0&&(Fs.update(Vr.inputSource,Vr.frame,f||o),Fs.dispatchEvent({type:Vr.type,data:Vr.inputSource}))}function jr(){r.removeEventListener("select",qr),r.removeEventListener("selectstart",qr),r.removeEventListener("selectend",qr),r.removeEventListener("squeeze",qr),r.removeEventListener("squeezestart",qr),r.removeEventListener("squeezeend",qr),r.removeEventListener("end",jr),r.removeEventListener("inputsourceschange",ai);for(let Vr=0;Vr=0&&(et[za]=null,st[za].disconnect(Fs))}for(let di=0;di=et.length){et.push(Fs),za=Co;break}else if(et[Co]===null){et[Co]=Fs,za=Co;break}if(za===-1)break}const Js=st[za];Js&&Js.connect(Fs)}}const zi=new ce,Os=new ce;function Hs(Vr,di,Fs){zi.setFromMatrixPosition(di.matrixWorld),Os.setFromMatrixPosition(Fs.matrixWorld);const za=zi.distanceTo(Os),Js=di.projectionMatrix.elements,Co=Fs.projectionMatrix.elements,kl=Js[14]/(Js[10]-1),Wo=Js[14]/(Js[10]+1),Ji=(Js[9]+1)/Js[5],Ps=(Js[9]-1)/Js[5],is=(Js[8]-1)/Js[0],oa=(Co[8]+1)/Co[0],Gn=kl*is,Uo=kl*oa,$a=za/(-is+oa),Zo=$a*-is;if(di.matrixWorld.decompose(Vr.position,Vr.quaternion,Vr.scale),Vr.translateX(Zo),Vr.translateZ($a),Vr.matrixWorld.compose(Vr.position,Vr.quaternion,Vr.scale),Vr.matrixWorldInverse.copy(Vr.matrixWorld).invert(),Js[10]===-1)Vr.projectionMatrix.copy(di.projectionMatrix),Vr.projectionMatrixInverse.copy(di.projectionMatrixInverse);else{const la=kl+$a,Pn=Wo+$a,Ct=Gn-Zo,Fr=Uo+(za-Zo),Ni=Ji*Wo/Pn*la,fs=Ps*Wo/Pn*la;Vr.projectionMatrix.makePerspective(Ct,Fr,Ni,fs,la,Pn),Vr.projectionMatrixInverse.copy(Vr.projectionMatrix).invert()}}function ci(Vr,di){di===null?Vr.matrixWorld.copy(Vr.matrix):Vr.matrixWorld.multiplyMatrices(di.matrixWorld,Vr.matrix),Vr.matrixWorldInverse.copy(Vr.matrixWorld).invert()}this.updateCamera=function(Vr){if(r===null)return;let di=Vr.near,Fs=Vr.far;ne.texture!==null&&(ne.depthNear>0&&(di=ne.depthNear),ne.depthFar>0&&(Fs=ne.depthFar)),vr.near=mt.near=nt.near=di,vr.far=mt.far=nt.far=Fs,(br!==vr.near||kr!==vr.far)&&(r.updateRenderState({depthNear:vr.near,depthFar:vr.far}),br=vr.near,kr=vr.far),vr.layers.mask=Vr.layers.mask|6,nt.layers.mask=vr.layers.mask&3,mt.layers.mask=vr.layers.mask&5;const za=Vr.parent,Js=vr.cameras;ci(vr,za);for(let Co=0;Co0&&(ne.alphaTest.value=J.alphaTest);const be=e.get(J),Re=be.envMap,ze=be.envMapRotation;Re&&(ne.envMap.value=Re,ly.copy(ze),ly.x*=-1,ly.y*=-1,ly.z*=-1,Re.isCubeTexture&&Re.isRenderTargetTexture===!1&&(ly.y*=-1,ly.z*=-1),ne.envMapRotation.value.setFromMatrix4(Sk.makeRotationFromEuler(ly)),ne.flipEnvMap.value=Re.isCubeTexture&&Re.isRenderTargetTexture===!1?-1:1,ne.reflectivity.value=J.reflectivity,ne.ior.value=J.ior,ne.refractionRatio.value=J.refractionRatio),J.lightMap&&(ne.lightMap.value=J.lightMap,ne.lightMapIntensity.value=J.lightMapIntensity,t(J.lightMap,ne.lightMapTransform)),J.aoMap&&(ne.aoMap.value=J.aoMap,ne.aoMapIntensity.value=J.aoMapIntensity,t(J.aoMap,ne.aoMapTransform))}function o(ne,J){ne.diffuse.value.copy(J.color),ne.opacity.value=J.opacity,J.map&&(ne.map.value=J.map,t(J.map,ne.mapTransform))}function c(ne,J){ne.dashSize.value=J.dashSize,ne.totalSize.value=J.dashSize+J.gapSize,ne.scale.value=J.scale}function u(ne,J,be,Re){ne.diffuse.value.copy(J.color),ne.opacity.value=J.opacity,ne.size.value=J.size*be,ne.scale.value=Re*.5,J.map&&(ne.map.value=J.map,t(J.map,ne.uvTransform)),J.alphaMap&&(ne.alphaMap.value=J.alphaMap,t(J.alphaMap,ne.alphaMapTransform)),J.alphaTest>0&&(ne.alphaTest.value=J.alphaTest)}function f(ne,J){ne.diffuse.value.copy(J.color),ne.opacity.value=J.opacity,ne.rotation.value=J.rotation,J.map&&(ne.map.value=J.map,t(J.map,ne.mapTransform)),J.alphaMap&&(ne.alphaMap.value=J.alphaMap,t(J.alphaMap,ne.alphaMapTransform)),J.alphaTest>0&&(ne.alphaTest.value=J.alphaTest)}function g(ne,J){ne.specular.value.copy(J.specular),ne.shininess.value=Math.max(J.shininess,1e-4)}function v(ne,J){J.gradientMap&&(ne.gradientMap.value=J.gradientMap)}function M(ne,J){ne.metalness.value=J.metalness,J.metalnessMap&&(ne.metalnessMap.value=J.metalnessMap,t(J.metalnessMap,ne.metalnessMapTransform)),ne.roughness.value=J.roughness,J.roughnessMap&&(ne.roughnessMap.value=J.roughnessMap,t(J.roughnessMap,ne.roughnessMapTransform)),J.envMap&&(ne.envMapIntensity.value=J.envMapIntensity)}function R(ne,J,be){ne.ior.value=J.ior,J.sheen>0&&(ne.sheenColor.value.copy(J.sheenColor).multiplyScalar(J.sheen),ne.sheenRoughness.value=J.sheenRoughness,J.sheenColorMap&&(ne.sheenColorMap.value=J.sheenColorMap,t(J.sheenColorMap,ne.sheenColorMapTransform)),J.sheenRoughnessMap&&(ne.sheenRoughnessMap.value=J.sheenRoughnessMap,t(J.sheenRoughnessMap,ne.sheenRoughnessMapTransform))),J.clearcoat>0&&(ne.clearcoat.value=J.clearcoat,ne.clearcoatRoughness.value=J.clearcoatRoughness,J.clearcoatMap&&(ne.clearcoatMap.value=J.clearcoatMap,t(J.clearcoatMap,ne.clearcoatMapTransform)),J.clearcoatRoughnessMap&&(ne.clearcoatRoughnessMap.value=J.clearcoatRoughnessMap,t(J.clearcoatRoughnessMap,ne.clearcoatRoughnessMapTransform)),J.clearcoatNormalMap&&(ne.clearcoatNormalMap.value=J.clearcoatNormalMap,t(J.clearcoatNormalMap,ne.clearcoatNormalMapTransform),ne.clearcoatNormalScale.value.copy(J.clearcoatNormalScale),J.side===fe&&ne.clearcoatNormalScale.value.negate())),J.dispersion>0&&(ne.dispersion.value=J.dispersion),J.iridescence>0&&(ne.iridescence.value=J.iridescence,ne.iridescenceIOR.value=J.iridescenceIOR,ne.iridescenceThicknessMinimum.value=J.iridescenceThicknessRange[0],ne.iridescenceThicknessMaximum.value=J.iridescenceThicknessRange[1],J.iridescenceMap&&(ne.iridescenceMap.value=J.iridescenceMap,t(J.iridescenceMap,ne.iridescenceMapTransform)),J.iridescenceThicknessMap&&(ne.iridescenceThicknessMap.value=J.iridescenceThicknessMap,t(J.iridescenceThicknessMap,ne.iridescenceThicknessMapTransform))),J.transmission>0&&(ne.transmission.value=J.transmission,ne.transmissionSamplerMap.value=be.texture,ne.transmissionSamplerSize.value.set(be.width,be.height),J.transmissionMap&&(ne.transmissionMap.value=J.transmissionMap,t(J.transmissionMap,ne.transmissionMapTransform)),ne.thickness.value=J.thickness,J.thicknessMap&&(ne.thicknessMap.value=J.thicknessMap,t(J.thicknessMap,ne.thicknessMapTransform)),ne.attenuationDistance.value=J.attenuationDistance,ne.attenuationColor.value.copy(J.attenuationColor)),J.anisotropy>0&&(ne.anisotropyVector.value.set(J.anisotropy*Math.cos(J.anisotropyRotation),J.anisotropy*Math.sin(J.anisotropyRotation)),J.anisotropyMap&&(ne.anisotropyMap.value=J.anisotropyMap,t(J.anisotropyMap,ne.anisotropyMapTransform))),ne.specularIntensity.value=J.specularIntensity,ne.specularColor.value.copy(J.specularColor),J.specularColorMap&&(ne.specularColorMap.value=J.specularColorMap,t(J.specularColorMap,ne.specularColorMapTransform)),J.specularIntensityMap&&(ne.specularIntensityMap.value=J.specularIntensityMap,t(J.specularIntensityMap,ne.specularIntensityMapTransform))}function I(ne,J){J.matcap&&(ne.matcap.value=J.matcap)}function re(ne,J){const be=e.get(J).light;ne.referencePosition.value.setFromMatrixPosition(be.matrixWorld),ne.nearDistance.value=be.shadow.camera.near,ne.farDistance.value=be.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function Mk(i,e,t,n){let r={},a={},o=[];const c=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function u(be,Re){const ze=Re.program;n.uniformBlockBinding(be,ze)}function f(be,Re){let ze=r[be.id];ze===void 0&&(I(be),ze=g(be),r[be.id]=ze,be.addEventListener("dispose",ne));const st=Re.program;n.updateUBOMapping(be,st);const et=e.render.frame;a[be.id]!==et&&(M(be),a[be.id]=et)}function g(be){const Re=v();be.__bindingPointIndex=Re;const ze=i.createBuffer(),st=be.__size,et=be.usage;return i.bindBuffer(i.UNIFORM_BUFFER,ze),i.bufferData(i.UNIFORM_BUFFER,st,et),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,Re,ze),ze}function v(){for(let be=0;be0&&(ze+=st-et),be.__size=ze,be.__cache={},this}function re(be){const Re={boundary:0,storage:0};return typeof be=="number"||typeof be=="boolean"?(Re.boundary=4,Re.storage=4):be.isVector2?(Re.boundary=8,Re.storage=8):be.isVector3||be.isColor?(Re.boundary=16,Re.storage=12):be.isVector4?(Re.boundary=16,Re.storage=16):be.isMatrix3?(Re.boundary=48,Re.storage=48):be.isMatrix4?(Re.boundary=64,Re.storage=64):be.isTexture?Qr("WebGLRenderer: Texture samplers can not be part of an uniforms group."):Qr("WebGLRenderer: Unsupported uniform value type.",be),Re}function ne(be){const Re=be.target;Re.removeEventListener("dispose",ne);const ze=o.indexOf(Re.__bindingPointIndex);o.splice(ze,1),i.deleteBuffer(r[Re.id]),delete r[Re.id],delete a[Re.id]}function J(){for(const be in r)i.deleteBuffer(r[be]);o=[],r={},a={}}return{bind:u,update:f,dispose:J}}const Tk=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]);let Yg=null;function Ck(){return Yg===null&&(Yg=new gf(Tk,16,16,We,zt),Yg.name="DFG_LUT",Yg.minFilter=Pr,Yg.magFilter=Pr,Yg.wrapS=$t,Yg.wrapT=$t,Yg.generateMipmaps=!1,Yg.needsUpdate=!0),Yg}class Bk{constructor(e={}){const{canvas:t=oc(),context:n=null,depth:r=!0,stencil:a=!1,alpha:o=!1,antialias:c=!1,premultipliedAlpha:u=!0,preserveDrawingBuffer:f=!1,powerPreference:g="default",failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:M=!1,outputBufferType:R=gs}=e;this.isWebGLRenderer=!0;let I;if(n!==null){if(typeof WebGLRenderingContext!="undefined"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");I=n.getContextAttributes().alpha}else I=o;const re=R,ne=new Set([bt,tt,ae]),J=new Set([gs,ct,cn,ur,Mn,sn]),be=new Uint32Array(4),Re=new Int32Array(4);let ze=null,st=null;const et=[],dt=[];let Nt=null;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=Bt,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const nt=this;let mt=!1;this._outputColorSpace=Ql;let En=0,vr=0,br=null,kr=-1,qr=null;const jr=new ts,ai=new ts;let zi=null;const Os=new li(0);let Hs=0,ci=t.width,ws=t.height,Gs=1,Fo=null,qi=null;const Vr=new ts(0,0,ci,ws),di=new ts(0,0,ci,ws);let Fs=!1;const za=new Qp;let Js=!1,Co=!1;const kl=new ti,Wo=new ce,Ji=new ts,Ps={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let is=!1;function oa(){return br===null?Gs:1}let Gn=n;function Uo(hn,Kr){return t.getContext(hn,Kr)}try{const hn={alpha:!0,depth:r,stencil:a,antialias:c,premultipliedAlpha:u,preserveDrawingBuffer:f,powerPreference:g,failIfMajorPerformanceCaveat:v};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${m}`),t.addEventListener("webglcontextlost",gl,!1),t.addEventListener("webglcontextrestored",Fu,!1),t.addEventListener("webglcontextcreationerror",du,!1),Gn===null){const Kr="webgl2";if(Gn=Uo(Kr,hn),Gn===null)throw Uo(Kr)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(hn){throw ri("WebGLRenderer: "+hn.message),hn}let $a,Zo,la,Pn,Ct,Fr,Ni,fs,Ui,mo,pa,fo,jo,Us,Ta,Ao,wo,Ea,Vl,Nr,Qa,na,Xa,zs;function ds(){$a=new C3(Gn),$a.init(),na=new yk(Gn,$a),Zo=new uv(Gn,$a,e,na),la=new mk(Gn,$a),Zo.reversedDepthBuffer&&M&&la.buffers.depth.setReversed(!0),Pn=new P3(Gn),Ct=new nk,Fr=new vk(Gn,$a,la,Ct,Zo,na,Pn),Ni=new vp(nt),fs=new T3(nt),Ui=new BA(Gn),Xa=new oh(Gn,Ui),mo=new B3(Gn,Ui,Pn,Xa),pa=new N3(Gn,mo,Ui,Pn),Vl=new I3(Gn,Zo,Fr),Ao=new hv(Ct),fo=new tk(nt,Ni,fs,$a,Zo,Xa,Ao),jo=new Ek(nt,Ct),Us=new ik,Ta=new uk($a),Ea=new Bc(nt,Ni,fs,la,pa,I,u),wo=new pk(nt,pa,Zo),zs=new Mk(Gn,Pn,Zo,la),Nr=new i0(Gn,$a,Pn),Qa=new R3(Gn,$a,Pn),Pn.programs=fo.programs,nt.capabilities=Zo,nt.extensions=$a,nt.properties=Ct,nt.renderLists=Us,nt.shadowMap=wo,nt.state=la,nt.info=Pn}ds(),re!==gs&&(Nt=new F3(re,t.width,t.height,r,a));const _a=new wk(nt,Gn);this.xr=_a,this.getContext=function(){return Gn},this.getContextAttributes=function(){return Gn.getContextAttributes()},this.forceContextLoss=function(){const hn=$a.get("WEBGL_lose_context");hn&&hn.loseContext()},this.forceContextRestore=function(){const hn=$a.get("WEBGL_lose_context");hn&&hn.restoreContext()},this.getPixelRatio=function(){return Gs},this.setPixelRatio=function(hn){hn!==void 0&&(Gs=hn,this.setSize(ci,ws,!1))},this.getSize=function(hn){return hn.set(ci,ws)},this.setSize=function(hn,Kr,wi=!0){if(_a.isPresenting){Qr("WebGLRenderer: Can't change size while VR device is presenting.");return}ci=hn,ws=Kr,t.width=Math.floor(hn*Gs),t.height=Math.floor(Kr*Gs),wi===!0&&(t.style.width=hn+"px",t.style.height=Kr+"px"),Nt!==null&&Nt.setSize(t.width,t.height),this.setViewport(0,0,hn,Kr)},this.getDrawingBufferSize=function(hn){return hn.set(ci*Gs,ws*Gs).floor()},this.setDrawingBufferSize=function(hn,Kr,wi){ci=hn,ws=Kr,Gs=wi,t.width=Math.floor(hn*wi),t.height=Math.floor(Kr*wi),this.setViewport(0,0,hn,Kr)},this.setEffects=function(hn){if(re===gs){console.error("THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.");return}if(hn){for(let Kr=0;Kr{function Ca(){if(xi.forEach(function(eo){Ct.get(eo).currentProgram.isReady()&&xi.delete(eo)}),xi.size===0){ii(hn);return}setTimeout(Ca,10)}$a.get("KHR_parallel_shader_compile")!==null?Ca():setTimeout(Ca,10)})};let YB=null;function SX(hn){YB&&YB(hn)}function p3(){Oy.stop()}function g3(){Oy.start()}const Oy=new ib;Oy.setAnimationLoop(SX),typeof self!="undefined"&&Oy.setContext(self),this.setAnimationLoop=function(hn){YB=hn,_a.setAnimationLoop(hn),hn===null?Oy.stop():Oy.start()},_a.addEventListener("sessionstart",p3),_a.addEventListener("sessionend",g3),this.render=function(hn,Kr){if(Kr!==void 0&&Kr.isCamera!==!0){ri("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(mt===!0)return;const wi=_a.enabled===!0&&_a.isPresenting===!0,xi=Nt!==null&&(br===null||wi)&&Nt.begin(nt,br);if(hn.matrixWorldAutoUpdate===!0&&hn.updateMatrixWorld(),Kr.parent===null&&Kr.matrixWorldAutoUpdate===!0&&Kr.updateMatrixWorld(),_a.enabled===!0&&_a.isPresenting===!0&&(Nt===null||Nt.isCompositing()===!1)&&(_a.cameraAutoUpdate===!0&&_a.updateCamera(Kr),Kr=_a.getCamera()),hn.isScene===!0&&hn.onBeforeRender(nt,hn,Kr,br),st=Ta.get(hn,dt.length),st.init(Kr),dt.push(st),kl.multiplyMatrices(Kr.projectionMatrix,Kr.matrixWorldInverse),za.setFromProjectionMatrix(kl,sl,Kr.reversedDepth),Co=this.localClippingEnabled,Js=Ao.init(this.clippingPlanes,Co),ze=Us.get(hn,et.length),ze.init(),et.push(ze),_a.enabled===!0&&_a.isPresenting===!0){const eo=nt.xr.getDepthSensingMesh();eo!==null&&qB(eo,Kr,-1/0,nt.sortObjects)}qB(hn,Kr,0,nt.sortObjects),ze.finish(),nt.sortObjects===!0&&ze.sort(Fo,qi),is=_a.enabled===!1||_a.isPresenting===!1||_a.hasDepthSensing()===!1,is&&Ea.addToRenderList(ze,hn),this.info.render.frame++,Js===!0&&Ao.beginShadows();const ii=st.state.shadowsArray;if(wo.render(ii,hn,Kr),Js===!0&&Ao.endShadows(),this.info.autoReset===!0&&this.info.reset(),(xi&&Nt.hasRenderPass())===!1){const eo=ze.opaque,Ha=ze.transmissive;if(st.setupLights(),Kr.isArrayCamera){const oo=Kr.cameras;if(Ha.length>0)for(let Bo=0,il=oo.length;Bo0&&v3(eo,Ha,hn,Kr),is&&Ea.render(hn),m3(ze,hn,Kr)}br!==null&&vr===0&&(Fr.updateMultisampleRenderTarget(br),Fr.updateRenderTargetMipmap(br)),xi&&Nt.end(nt),hn.isScene===!0&&hn.onAfterRender(nt,hn,Kr),Xa.resetDefaultState(),kr=-1,qr=null,dt.pop(),dt.length>0?(st=dt[dt.length-1],Js===!0&&Ao.setGlobalState(nt.clippingPlanes,st.state.camera)):st=null,et.pop(),et.length>0?ze=et[et.length-1]:ze=null};function qB(hn,Kr,wi,xi){if(hn.visible===!1)return;if(hn.layers.test(Kr.layers)){if(hn.isGroup)wi=hn.renderOrder;else if(hn.isLOD)hn.autoUpdate===!0&&hn.update(Kr);else if(hn.isLight)st.pushLight(hn),hn.castShadow&&st.pushShadow(hn);else if(hn.isSprite){if(!hn.frustumCulled||za.intersectsSprite(hn)){xi&&Ji.setFromMatrixPosition(hn.matrixWorld).applyMatrix4(kl);const eo=pa.update(hn),Ha=hn.material;Ha.visible&&ze.push(hn,eo,Ha,wi,Ji.z,null)}}else if((hn.isMesh||hn.isLine||hn.isPoints)&&(!hn.frustumCulled||za.intersectsObject(hn))){const eo=pa.update(hn),Ha=hn.material;if(xi&&(hn.boundingSphere!==void 0?(hn.boundingSphere===null&&hn.computeBoundingSphere(),Ji.copy(hn.boundingSphere.center)):(eo.boundingSphere===null&&eo.computeBoundingSphere(),Ji.copy(eo.boundingSphere.center)),Ji.applyMatrix4(hn.matrixWorld).applyMatrix4(kl)),Array.isArray(Ha)){const oo=eo.groups;for(let Bo=0,il=oo.length;Bo0&&RE(ii,Kr,wi),Ca.length>0&&RE(Ca,Kr,wi),eo.length>0&&RE(eo,Kr,wi),la.buffers.depth.setTest(!0),la.buffers.depth.setMask(!0),la.buffers.color.setMask(!0),la.setPolygonOffset(!1)}function v3(hn,Kr,wi,xi){if((wi.isScene===!0?wi.overrideMaterial:null)!==null)return;if(st.state.transmissionRenderTarget[xi.id]===void 0){const Jl=$a.has("EXT_color_buffer_half_float")||$a.has("EXT_color_buffer_float");st.state.transmissionRenderTarget[xi.id]=new ra(1,1,{generateMipmaps:!0,type:Jl?zt:gs,minFilter:Fi,samples:Zo.samples,stencilBuffer:a,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:wr.workingColorSpace})}const Ca=st.state.transmissionRenderTarget[xi.id],eo=xi.viewport||jr;Ca.setSize(eo.z*nt.transmissionResolutionScale,eo.w*nt.transmissionResolutionScale);const Ha=nt.getRenderTarget(),oo=nt.getActiveCubeFace(),Bo=nt.getActiveMipmapLevel();nt.setRenderTarget(Ca),nt.getClearColor(Os),Hs=nt.getClearAlpha(),Hs<1&&nt.setClearColor(16777215,.5),nt.clear(),is&&Ea.render(wi);const il=nt.toneMapping;nt.toneMapping=Bt;const zo=xi.viewport;if(xi.viewport!==void 0&&(xi.viewport=void 0),st.setupLightsView(xi),Js===!0&&Ao.setGlobalState(nt.clippingPlanes,xi),RE(hn,wi,xi),Fr.updateMultisampleRenderTarget(Ca),Fr.updateRenderTargetMipmap(Ca),$a.has("WEBGL_multisampled_render_to_texture")===!1){let Jl=!1;for(let wu=0,Ph=Kr.length;wu0),zo=!!wi.morphAttributes.position,Jl=!!wi.morphAttributes.normal,wu=!!wi.morphAttributes.color;let Ph=Bt;xi.toneMapped&&(br===null||br.isXRRenderTarget===!0)&&(Ph=nt.toneMapping);const Ih=wi.morphAttributes.position||wi.morphAttributes.normal||wi.morphAttributes.color,Bu=Ih!==void 0?Ih.length:0,Qo=Ct.get(xi),Au=st.state.lights;if(Js===!0&&(Co===!0||hn!==qr)){const Ld=hn===qr&&xi.id===kr;Ao.setState(xi,hn,Ld)}let Zc=!1;xi.version===Qo.__version?(Qo.needsLights&&Qo.lightsStateVersion!==Au.state.version||Qo.outputColorSpace!==Ha||ii.isBatchedMesh&&Qo.batching===!1||!ii.isBatchedMesh&&Qo.batching===!0||ii.isBatchedMesh&&Qo.batchingColor===!0&&ii.colorTexture===null||ii.isBatchedMesh&&Qo.batchingColor===!1&&ii.colorTexture!==null||ii.isInstancedMesh&&Qo.instancing===!1||!ii.isInstancedMesh&&Qo.instancing===!0||ii.isSkinnedMesh&&Qo.skinning===!1||!ii.isSkinnedMesh&&Qo.skinning===!0||ii.isInstancedMesh&&Qo.instancingColor===!0&&ii.instanceColor===null||ii.isInstancedMesh&&Qo.instancingColor===!1&&ii.instanceColor!==null||ii.isInstancedMesh&&Qo.instancingMorph===!0&&ii.morphTexture===null||ii.isInstancedMesh&&Qo.instancingMorph===!1&&ii.morphTexture!==null||Qo.envMap!==oo||xi.fog===!0&&Qo.fog!==Ca||Qo.numClippingPlanes!==void 0&&(Qo.numClippingPlanes!==Ao.numPlanes||Qo.numIntersection!==Ao.numIntersection)||Qo.vertexAlphas!==Bo||Qo.vertexTangents!==il||Qo.morphTargets!==zo||Qo.morphNormals!==Jl||Qo.morphColors!==wu||Qo.toneMapping!==Ph||Qo.morphTargetsCount!==Bu)&&(Zc=!0):(Zc=!0,Qo.__version=xi.version);let GA=Qo.currentProgram;Zc===!0&&(GA=PE(xi,Kr,ii));let s_=!1,zA=!1,lw=!1;const Uu=GA.getUniforms(),oA=Qo.uniforms;if(la.useProgram(GA.program)&&(s_=!0,zA=!0,lw=!0),xi.id!==kr&&(kr=xi.id,zA=!0),s_||qr!==hn){la.buffers.depth.getReversed()&&hn.reversedDepth!==!0&&(hn._reversedDepth=!0,hn.updateProjectionMatrix()),Uu.setValue(Gn,"projectionMatrix",hn.projectionMatrix),Uu.setValue(Gn,"viewMatrix",hn.matrixWorldInverse);const lA=Uu.map.cameraPosition;lA!==void 0&&lA.setValue(Gn,Wo.setFromMatrixPosition(hn.matrixWorld)),Zo.logarithmicDepthBuffer&&Uu.setValue(Gn,"logDepthBufFC",2/(Math.log(hn.far+1)/Math.LN2)),(xi.isMeshPhongMaterial||xi.isMeshToonMaterial||xi.isMeshLambertMaterial||xi.isMeshBasicMaterial||xi.isMeshStandardMaterial||xi.isShaderMaterial)&&Uu.setValue(Gn,"isOrthographic",hn.isOrthographicCamera===!0),qr!==hn&&(qr=hn,zA=!0,lw=!0)}if(Qo.needsLights&&(Au.state.directionalShadowMap.length>0&&Uu.setValue(Gn,"directionalShadowMap",Au.state.directionalShadowMap,Fr),Au.state.spotShadowMap.length>0&&Uu.setValue(Gn,"spotShadowMap",Au.state.spotShadowMap,Fr),Au.state.pointShadowMap.length>0&&Uu.setValue(Gn,"pointShadowMap",Au.state.pointShadowMap,Fr)),ii.isSkinnedMesh){Uu.setOptional(Gn,ii,"bindMatrix"),Uu.setOptional(Gn,ii,"bindMatrixInverse");const Ld=ii.skeleton;Ld&&(Ld.boneTexture===null&&Ld.computeBoneTexture(),Uu.setValue(Gn,"boneTexture",Ld.boneTexture,Fr))}ii.isBatchedMesh&&(Uu.setOptional(Gn,ii,"batchingTexture"),Uu.setValue(Gn,"batchingTexture",ii._matricesTexture,Fr),Uu.setOptional(Gn,ii,"batchingIdTexture"),Uu.setValue(Gn,"batchingIdTexture",ii._indirectTexture,Fr),Uu.setOptional(Gn,ii,"batchingColorTexture"),ii._colorsTexture!==null&&Uu.setValue(Gn,"batchingColorTexture",ii._colorsTexture,Fr));const Ip=wi.morphAttributes;if((Ip.position!==void 0||Ip.normal!==void 0||Ip.color!==void 0)&&Vl.update(ii,wi,GA),(zA||Qo.receiveShadow!==ii.receiveShadow)&&(Qo.receiveShadow=ii.receiveShadow,Uu.setValue(Gn,"receiveShadow",ii.receiveShadow)),xi.isMeshGouraudMaterial&&xi.envMap!==null&&(oA.envMap.value=oo,oA.flipEnvMap.value=oo.isCubeTexture&&oo.isRenderTargetTexture===!1?-1:1),xi.isMeshStandardMaterial&&xi.envMap===null&&Kr.environment!==null&&(oA.envMapIntensity.value=Kr.environmentIntensity),oA.dfgLUT!==void 0&&(oA.dfgLUT.value=Ck()),zA&&(Uu.setValue(Gn,"toneMappingExposure",nt.toneMappingExposure),Qo.needsLights&&MX(oA,lw),Ca&&xi.fog===!0&&jo.refreshFogUniforms(oA,Ca),jo.refreshMaterialUniforms(oA,xi,Gs,ws,st.state.transmissionRenderTarget[hn.id]),V1.upload(Gn,x3(Qo),oA,Fr)),xi.isShaderMaterial&&xi.uniformsNeedUpdate===!0&&(V1.upload(Gn,x3(Qo),oA,Fr),xi.uniformsNeedUpdate=!1),xi.isSpriteMaterial&&Uu.setValue(Gn,"center",ii.center),Uu.setValue(Gn,"modelViewMatrix",ii.modelViewMatrix),Uu.setValue(Gn,"normalMatrix",ii.normalMatrix),Uu.setValue(Gn,"modelMatrix",ii.matrixWorld),xi.isShaderMaterial||xi.isRawShaderMaterial){const Ld=xi.uniformsGroups;for(let lA=0,JB=Ld.length;lA0&&Fr.useMultisampledRTT(hn)===!1?xi=Ct.get(hn).__webglMultisampledFramebuffer:Array.isArray(Bo)?xi=Bo[wi]:xi=Bo,jr.copy(hn.viewport),ai.copy(hn.scissor),zi=hn.scissorTest}else jr.copy(Vr).multiplyScalar(Gs).floor(),ai.copy(di).multiplyScalar(Gs).floor(),zi=Fs;if(wi!==0&&(xi=CX),la.bindFramebuffer(Gn.FRAMEBUFFER,xi)&&la.drawBuffers(hn,xi),la.viewport(jr),la.scissor(ai),la.setScissorTest(zi),ii){const Ha=Ct.get(hn.texture);Gn.framebufferTexture2D(Gn.FRAMEBUFFER,Gn.COLOR_ATTACHMENT0,Gn.TEXTURE_CUBE_MAP_POSITIVE_X+Kr,Ha.__webglTexture,wi)}else if(Ca){const Ha=Kr;for(let oo=0;oo=0&&Kr<=hn.width-xi&&wi>=0&&wi<=hn.height-ii&&(hn.textures.length>1&&Gn.readBuffer(Gn.COLOR_ATTACHMENT0+Ha),Gn.readPixels(Kr,wi,xi,ii,na.convert(il),na.convert(zo),Ca))}finally{const Bo=br!==null?Ct.get(br).__webglFramebuffer:null;la.bindFramebuffer(Gn.FRAMEBUFFER,Bo)}}},this.readRenderTargetPixelsAsync=function(hn,Kr,wi,xi,ii,Ca,eo,Ha=0){return lo(this,null,function*(){if(!(hn&&hn.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let oo=Ct.get(hn).__webglFramebuffer;if(hn.isWebGLCubeRenderTarget&&eo!==void 0&&(oo=oo[eo]),oo)if(Kr>=0&&Kr<=hn.width-xi&&wi>=0&&wi<=hn.height-ii){la.bindFramebuffer(Gn.FRAMEBUFFER,oo);const Bo=hn.textures[Ha],il=Bo.format,zo=Bo.type;if(!Zo.textureFormatReadable(il))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Zo.textureTypeReadable(zo))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Jl=Gn.createBuffer();Gn.bindBuffer(Gn.PIXEL_PACK_BUFFER,Jl),Gn.bufferData(Gn.PIXEL_PACK_BUFFER,Ca.byteLength,Gn.STREAM_READ),hn.textures.length>1&&Gn.readBuffer(Gn.COLOR_ATTACHMENT0+Ha),Gn.readPixels(Kr,wi,xi,ii,na.convert(il),na.convert(zo),0);const wu=br!==null?Ct.get(br).__webglFramebuffer:null;la.bindFramebuffer(Gn.FRAMEBUFFER,wu);const Ph=Gn.fenceSync(Gn.SYNC_GPU_COMMANDS_COMPLETE,0);return Gn.flush(),yield Hu(Gn,Ph,4),Gn.bindBuffer(Gn.PIXEL_PACK_BUFFER,Jl),Gn.getBufferSubData(Gn.PIXEL_PACK_BUFFER,0,Ca),Gn.deleteBuffer(Jl),Gn.deleteSync(Ph),Ca}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")})},this.copyFramebufferToTexture=function(hn,Kr=null,wi=0){const xi=Math.pow(2,-wi),ii=Math.floor(hn.image.width*xi),Ca=Math.floor(hn.image.height*xi),eo=Kr!==null?Kr.x:0,Ha=Kr!==null?Kr.y:0;Fr.setTexture2D(hn,0),Gn.copyTexSubImage2D(Gn.TEXTURE_2D,wi,0,0,eo,Ha,ii,Ca),la.unbindTexture()};const BX=Gn.createFramebuffer(),RX=Gn.createFramebuffer();this.copyTextureToTexture=function(hn,Kr,wi=null,xi=null,ii=0,Ca=null){Ca===null&&(ii!==0?(Za("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Ca=ii,ii=0):Ca=0);let eo,Ha,oo,Bo,il,zo,Jl,wu,Ph;const Ih=hn.isCompressedTexture?hn.mipmaps[Ca]:hn.image;if(wi!==null)eo=wi.max.x-wi.min.x,Ha=wi.max.y-wi.min.y,oo=wi.isBox3?wi.max.z-wi.min.z:1,Bo=wi.min.x,il=wi.min.y,zo=wi.isBox3?wi.min.z:0;else{const Ip=Math.pow(2,-ii);eo=Math.floor(Ih.width*Ip),Ha=Math.floor(Ih.height*Ip),hn.isDataArrayTexture?oo=Ih.depth:hn.isData3DTexture?oo=Math.floor(Ih.depth*Ip):oo=1,Bo=0,il=0,zo=0}xi!==null?(Jl=xi.x,wu=xi.y,Ph=xi.z):(Jl=0,wu=0,Ph=0);const Bu=na.convert(Kr.format),Qo=na.convert(Kr.type);let Au;Kr.isData3DTexture?(Fr.setTexture3D(Kr,0),Au=Gn.TEXTURE_3D):Kr.isDataArrayTexture||Kr.isCompressedArrayTexture?(Fr.setTexture2DArray(Kr,0),Au=Gn.TEXTURE_2D_ARRAY):(Fr.setTexture2D(Kr,0),Au=Gn.TEXTURE_2D),Gn.pixelStorei(Gn.UNPACK_FLIP_Y_WEBGL,Kr.flipY),Gn.pixelStorei(Gn.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Kr.premultiplyAlpha),Gn.pixelStorei(Gn.UNPACK_ALIGNMENT,Kr.unpackAlignment);const Zc=Gn.getParameter(Gn.UNPACK_ROW_LENGTH),GA=Gn.getParameter(Gn.UNPACK_IMAGE_HEIGHT),s_=Gn.getParameter(Gn.UNPACK_SKIP_PIXELS),zA=Gn.getParameter(Gn.UNPACK_SKIP_ROWS),lw=Gn.getParameter(Gn.UNPACK_SKIP_IMAGES);Gn.pixelStorei(Gn.UNPACK_ROW_LENGTH,Ih.width),Gn.pixelStorei(Gn.UNPACK_IMAGE_HEIGHT,Ih.height),Gn.pixelStorei(Gn.UNPACK_SKIP_PIXELS,Bo),Gn.pixelStorei(Gn.UNPACK_SKIP_ROWS,il),Gn.pixelStorei(Gn.UNPACK_SKIP_IMAGES,zo);const Uu=hn.isDataArrayTexture||hn.isData3DTexture,oA=Kr.isDataArrayTexture||Kr.isData3DTexture;if(hn.isDepthTexture){const Ip=Ct.get(hn),Ld=Ct.get(Kr),lA=Ct.get(Ip.__renderTarget),JB=Ct.get(Ld.__renderTarget);la.bindFramebuffer(Gn.READ_FRAMEBUFFER,lA.__webglFramebuffer),la.bindFramebuffer(Gn.DRAW_FRAMEBUFFER,JB.__webglFramebuffer);for(let ky=0;ky0){const{width:o,height:c}=e.context;t.bufferWidth=o,t.bufferHeight=c}t.lights=this.getLightsData(e.lightsNode.getLights()),this.renderObjects.set(e,t)}return t}getAttributesData(e){const t={};for(const n in e){const r=e[n];t[n]={version:r.version}}return t}containsNode(e){const t=e.material;for(const n in t)if(t[n]&&t[n].isNode)return!0;return!!(e.context.modelViewMatrix||e.context.modelNormalViewMatrix||e.context.getAO||e.context.getShadow)}getMaterialData(e){const t={};for(const n of this.refreshUniforms){const r=e[n];r!=null&&(typeof r=="object"&&r.clone!==void 0?r.isTexture===!0?t[n]={id:r.id,version:r.version}:t[n]=r.clone():t[n]=r)}return t}equals(e,t){const{object:n,material:r,geometry:a}=e,o=this.getRenderObjectData(e);if(o.worldMatrix.equals(n.matrixWorld)!==!0)return o.worldMatrix.copy(n.matrixWorld),!1;const c=o.material;for(const ne in c){const J=c[ne],be=r[ne];if(J.equals!==void 0){if(J.equals(be)===!1)return J.copy(be),!1}else if(be.isTexture===!0){if(J.id!==be.id||J.version!==be.version)return J.id=be.id,J.version=be.version,!1}else if(J!==be)return c[ne]=be,!1}if(c.transmission>0){const{width:ne,height:J}=e.context;if(o.bufferWidth!==ne||o.bufferHeight!==J)return o.bufferWidth=ne,o.bufferHeight=J,!1}const u=o.geometry,f=a.attributes,g=u.attributes,v=Object.keys(g),M=Object.keys(f);if(u.id!==a.id)return u.id=a.id,!1;if(v.length!==M.length)return o.geometry.attributes=this.getAttributesData(f),!1;for(const ne of v){const J=g[ne],be=f[ne];if(be===void 0)return delete g[ne],!1;if(J.version!==be.version)return J.version=be.version,!1}const R=a.index,I=u.indexVersion,re=R?R.version:null;if(I!==re)return u.indexVersion=re,!1;if(u.drawRange.start!==a.drawRange.start||u.drawRange.count!==a.drawRange.count)return u.drawRange.start=a.drawRange.start,u.drawRange.count=a.drawRange.count,!1;if(o.morphTargetInfluences){let ne=!1;for(let J=0;J>>16,2246822507),t^=Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(t^t>>>13,3266489909),4294967296*(2097151&n)+(t>>>0)}const Mx=i=>BM(i),cy=i=>BM(i),Tx=(...i)=>BM(i),Ik=new Map([[1,"float"],[2,"vec2"],[3,"vec3"],[4,"vec4"],[9,"mat3"],[16,"mat4"]]),Q2=new WeakMap;function RM(i){return Ik.get(i)}function cb(i){if(/[iu]?vec\d/.test(i))return i.startsWith("ivec")?Int32Array:i.startsWith("uvec")?Uint32Array:Float32Array;if(/mat\d/.test(i)||/float/.test(i))return Float32Array;if(/uint/.test(i))return Uint32Array;if(/int/.test(i))return Int32Array;throw new Error(`THREE.NodeUtils: Unsupported type: ${i}`)}function PM(i){if(/float|int|uint/.test(i))return 1;if(/vec2/.test(i))return 2;if(/vec3/.test(i))return 3;if(/vec4/.test(i)||/mat2/.test(i))return 4;if(/mat3/.test(i))return 9;if(/mat4/.test(i))return 16;ri("TSL: Unsupported type:",i)}function W2(i){if(/float|int|uint/.test(i))return 1;if(/vec2/.test(i))return 2;if(/vec3/.test(i))return 3;if(/vec4/.test(i)||/mat2/.test(i))return 4;if(/mat3/.test(i))return 12;if(/mat4/.test(i))return 16;ri("TSL: Unsupported type:",i)}function Z2(i){if(/float|int|uint/.test(i))return 4;if(/vec2/.test(i))return 8;if(/vec3/.test(i)||/vec4/.test(i))return 16;if(/mat2/.test(i))return 8;if(/mat3/.test(i)||/mat4/.test(i))return 16;ri("TSL: Unsupported type:",i)}function o0(i){if(i==null)return null;const e=typeof i;return i.isNode===!0?"node":e==="number"?"float":e==="boolean"?"bool":e==="string"?"string":e==="function"?"shader":i.isVector2===!0?"vec2":i.isVector3===!0?"vec3":i.isVector4===!0?"vec4":i.isMatrix2===!0?"mat2":i.isMatrix3===!0?"mat3":i.isMatrix4===!0?"mat4":i.isColor===!0?"color":i instanceof ArrayBuffer?"ArrayBuffer":null}function G1(i,...e){const t=i?i.slice(-4):void 0;return e.length===1&&(t==="vec2"?e=[e[0],e[0]]:t==="vec3"?e=[e[0],e[0],e[0]]:t==="vec4"&&(e=[e[0],e[0],e[0],e[0]])),i==="color"?new li(...e):t==="vec2"?new de(...e):t==="vec3"?new ce(...e):t==="vec4"?new ts(...e):t==="mat2"?new j0(...e):t==="mat3"?new vn(...e):t==="mat4"?new ti(...e):i==="bool"?e[0]||!1:i==="float"||i==="int"||i==="uint"?e[0]||0:i==="string"?e[0]||"":i==="ArrayBuffer"?LM(e[0]):null}function IM(i){let e=Q2.get(i);return e===void 0&&(e={},Q2.set(i,e)),e}function NM(i){let e="";const t=new Uint8Array(i);for(let n=0;ne.charCodeAt(0)).buffer}var OX=Object.freeze({__proto__:null,arrayBufferToBase64:NM,base64ToArrayBuffer:LM,getAlignmentFromType:Z2,getDataFromObject:IM,getLengthFromType:PM,getMemoryLengthFromType:W2,getTypeFromLength:RM,getTypedArrayFromType:cb,getValueFromType:G1,getValueType:o0,hash:Tx,hashArray:cy,hashString:Mx});const ub={VERTEX:"vertex",FRAGMENT:"fragment"},Xo={NONE:"none",FRAME:"frame",RENDER:"render",OBJECT:"object"},Nk={BOOLEAN:"bool",INTEGER:"int",FLOAT:"float",VECTOR2:"vec2",VECTOR3:"vec3",VECTOR4:"vec4",MATRIX2:"mat2",MATRIX3:"mat3",MATRIX4:"mat4"},Yf={READ_ONLY:"readOnly",WRITE_ONLY:"writeOnly",READ_WRITE:"readWrite"},K2=["fragment","vertex"],FM=["setup","analyze","generate"],UM=[...K2,"compute"],uy=["x","y","z","w"],Lk={analyze:"setup",generate:"analyze"};let Fk=0;class Ua extends wc{static get type(){return"Node"}constructor(e=null){super(),this.nodeType=e,this.updateType=Xo.NONE,this.updateBeforeType=Xo.NONE,this.updateAfterType=Xo.NONE,this.uuid=xe.generateUUID(),this.version=0,this.name="",this.global=!1,this.parents=!1,this.isNode=!0,this._beforeNodes=null,this._cacheKey=null,this._cacheKeyVersion=0,Object.defineProperty(this,"id",{value:Fk++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this),this}onFrameUpdate(e){return this.onUpdate(e,Xo.FRAME)}onRenderUpdate(e){return this.onUpdate(e,Xo.RENDER)}onObjectUpdate(e){return this.onUpdate(e,Xo.OBJECT)}onReference(e){return this.updateReference=e.bind(this),this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(const{childNode:e}of this._getChildren())yield e}dispose(){this.dispatchEvent({type:"dispose"})}traverse(e){e(this);for(const t of this.getChildren())t.traverse(e)}_getChildren(e=new Set){const t=[];e.add(this);for(const n of Object.getOwnPropertyNames(this)){const r=this[n];if(!(n.startsWith("_")===!0||e.has(r))){if(Array.isArray(r)===!0)for(let a=0;a0&&(e.inputNodes=n)}deserialize(e){if(e.inputNodes!==void 0){const t=e.meta.nodes;for(const n in e.inputNodes)if(Array.isArray(e.inputNodes[n])){const r=[];for(const a of e.inputNodes[n])r.push(t[a]);this[n]=r}else if(typeof e.inputNodes[n]=="object"){const r={};for(const a in e.inputNodes[n]){const o=e.inputNodes[n][a];r[a]=t[o]}this[n]=r}else{const r=e.inputNodes[n];this[n]=t[r]}}}toJSON(e){const{uuid:t,type:n}=this,r=e===void 0||typeof e=="string";r&&(e={textures:{},images:{},nodes:{}});let a=e.nodes[t];a===void 0&&(a={uuid:t,type:n,meta:e,metadata:{version:4.7,type:"Node",generator:"Node.toJSON"}},r!==!0&&(e.nodes[a.uuid]=a),this.serialize(a),delete a.meta);function o(c){const u=[];for(const f in c){const g=c[f];delete g.metadata,u.push(g)}return u}if(r){const c=o(e.textures),u=o(e.images),f=o(e.nodes);c.length>0&&(a.textures=c),u.length>0&&(a.images=u),f.length>0&&(a.nodes=f)}return a}}class hy extends Ua{static get type(){return"ArrayElementNode"}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}getMemberType(e,t){return this.node.getMemberType(e,t)}generate(e){const t=this.indexNode.getNodeType(e),n=this.node.build(e),r=this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:"uint");return`${n}[ ${r} ]`}}class $2 extends Ua{static get type(){return"ConvertNode"}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(e){const t=this.node.getNodeType(e);let n=null;for(const r of this.convertTo.split("|"))(n===null||e.getTypeLength(t)===e.getTypeLength(r))&&(n=r);return n}serialize(e){super.serialize(e),e.convertTo=this.convertTo}deserialize(e){super.deserialize(e),this.convertTo=e.convertTo}generate(e,t){const n=this.node,r=this.getNodeType(e),a=n.build(e,r);return e.format(a,r,t)}}class lh extends Ua{static get type(){return"TempNode"}constructor(e=null){super(e),this.isTempNode=!0}hasDependencies(e){return e.getDataFromNode(this).usageCount>1}build(e,t){if(e.getBuildStage()==="generate"){const r=e.getVectorType(this.getNodeType(e,t)),a=e.getDataFromNode(this);if(a.propertyName!==void 0)return e.format(a.propertyName,r,t);if(r!=="void"&&t!=="void"&&this.hasDependencies(e)){const o=super.build(e,r),c=e.getVarFromNode(this,null,r),u=e.getPropertyName(c);return e.addLineFlowCode(`${u} = ${o}`,this),a.snippet=o,a.propertyName=u,e.format(a.propertyName,r,t)}}return super.build(e,t)}}class Uk extends lh{static get type(){return"JoinNode"}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(e){return this.nodeType!==null?e.getVectorType(this.nodeType):e.getTypeFromLength(this.nodes.reduce((t,n)=>t+e.getTypeLength(n.getNodeType(e)),0))}generate(e,t){const n=this.getNodeType(e),r=e.getTypeLength(n),a=this.nodes,o=e.getComponentType(n),c=[];let u=0;for(const g of a){if(u>=r){ri(`TSL: Length of parameters exceeds maximum length of function '${n}()' type.`);break}let v=g.getNodeType(e),M=e.getTypeLength(v),R;if(u+M>r&&(ri(`TSL: Length of '${n}()' data exceeds maximum length of output type.`),M=r-u,v=e.getTypeFromLength(M)),u+=M,R=g.build(e,v),e.getComponentType(v)!==o){const re=e.getTypeFromLength(M,o);R=e.format(R,v,re)}c.push(R)}const f=`${e.getType(n)}( ${c.join(", ")} )`;return e.format(f,n,t)}}const Dk=uy.join("");class X2 extends Ua{static get type(){return"SplitNode"}constructor(e,t="x"){super(),this.node=e,this.components=t,this.isSplitNode=!0}getVectorLength(){let e=this.components.length;for(const t of this.components)e=Math.max(uy.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}getScope(){return this.node.getScope()}generate(e,t){const n=this.node,r=e.getTypeLength(n.getNodeType(e));let a=null;if(r>1){let o=null;this.getVectorLength()>=r&&(o=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));const u=n.build(e,o);this.components.length===r&&this.components===Dk.slice(0,this.components.length)?a=e.format(u,o,t):a=e.format(`${u}.${this.components}`,this.getNodeType(e),t)}else a=n.build(e,t);return a}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}}class Ok extends lh{static get type(){return"SetNode"}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){const{sourceNode:t,components:n,targetNode:r}=this,a=this.getNodeType(e),o=e.getComponentType(r.getNodeType(e)),c=e.getTypeFromLength(n.length,o),u=r.build(e,c),f=t.build(e,a),g=e.getTypeLength(a),v=[];for(let M=0;Mi.replace(/r|s/g,"x").replace(/g|t/g,"y").replace(/b|p/g,"z").replace(/a|q/g,"w"),Y2=i=>Hk(i).split("").sort().join("");Ua.prototype.assign=function(...i){if(this.isStackNode!==!0)return dv!==null?dv.assign(this,...i):ri("TSL: No stack defined for assign operation. Make sure the assign is inside a Fn()."),this;{const e=OM.get("assign");return this.addToStack(e(...i))}},Ua.prototype.toVarIntent=function(){return this},Ua.prototype.get=function(i){return new Vk(this,i)};const hb={};function z1(i,e,t){hb[i]=hb[e]=hb[t]={get(){this._cache=this._cache||{};let o=this._cache[i];return o===void 0&&(o=new X2(this,i),this._cache[i]=o),o},set(o){this[i].assign(qs(o))}};const n=i.toUpperCase(),r=e.toUpperCase(),a=t.toUpperCase();Ua.prototype["set"+n]=Ua.prototype["set"+r]=Ua.prototype["set"+a]=function(o){const c=Y2(i);return new Ok(this,c,qs(o))},Ua.prototype["flip"+n]=Ua.prototype["flip"+r]=Ua.prototype["flip"+a]=function(){const o=Y2(i);return new kk(this,o)}}const qg=["x","y","z","w"],Jg=["r","g","b","a"],em=["s","t","p","q"];for(let i=0;i<4;i++){let e=qg[i],t=Jg[i],n=em[i];z1(e,t,n);for(let r=0;r<4;r++){e=qg[i]+qg[r],t=Jg[i]+Jg[r],n=em[i]+em[r],z1(e,t,n);for(let a=0;a<4;a++){e=qg[i]+qg[r]+qg[a],t=Jg[i]+Jg[r]+Jg[a],n=em[i]+em[r]+em[a],z1(e,t,n);for(let o=0;o<4;o++)e=qg[i]+qg[r]+qg[a]+qg[o],t=Jg[i]+Jg[r]+Jg[a]+Jg[o],n=em[i]+em[r]+em[a]+em[o],z1(e,t,n)}}}for(let i=0;i<32;i++)hb[i]={get(){this._cache=this._cache||{};let e=this._cache[i];return e===void 0&&(e=new hy(this,new _p(i,"uint")),this._cache[i]=e),e},set(e){this[i].assign(qs(e))}};Object.defineProperties(Ua.prototype,hb);const q2=new WeakMap,Gk=function(i,e=null){const t=o0(i);return t==="node"?i:e===null&&(t==="float"||t==="boolean")||t&&t!=="shader"&&t!=="string"?qs(GM(i,e)):t==="shader"?i.isFn?i:Ar(i):i},zk=function(i,e=null){for(const t in i)i[t]=qs(i[t],e);return i},Qk=function(i,e=null){const t=i.length;for(let n=0;nu?(ri(`TSL: "${v}" parameter length exceeds limit.`),g.slice(0,u)):g}return e===null?a=(...g)=>r(new i(...fy(f(g)))):t!==null?(t=qs(t),a=(...g)=>r(new i(e,...fy(f(g)),t))):a=(...g)=>r(new i(e,...fy(f(g)))),a.setParameterLength=(...g)=>(g.length===1?c=u=g[0]:g.length===2&&([c,u]=g),a),a.setName=g=>(o=g,a),a},Wk=function(i,...e){return new i(...fy(e))};class Zk extends Ua{constructor(e,t){super(),this.shaderNode=e,this.rawInputs=t,this.isShaderCallNodeInternal=!0}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}getElementType(e){return this.getOutputNode(e).getElementType(e)}getMemberType(e,t){return this.getOutputNode(e).getMemberType(e,t)}call(e){const{shaderNode:t,rawInputs:n}=this,r=e.getNodeProperties(t),a=e.getClosestSubBuild(t.subBuilds)||"",o=a||"default";if(r[o])return r[o];const c=e.subBuildFn,u=e.fnCall;e.subBuildFn=a,e.fnCall=this;let f=null;if(t.layout){let g=q2.get(e.constructor);g===void 0&&(g=new WeakMap,q2.set(e.constructor,g));let v=g.get(t);v===void 0&&(v=qs(e.buildFunctionNode(t)),g.set(t,v)),e.addInclude(v);const M=n?Kk(n):null;f=qs(v.call(M))}else{const g=new Proxy(e,{get:(re,ne,J)=>{let be;return Symbol.iterator===ne?be=function*(){yield void 0}:be=Reflect.get(re,ne,J),be}}),v=n?$k(n):null,M=Array.isArray(n)?n.length>0:n!==null,R=t.jsFunc,I=M||R.length>1?R(v,g):R(g);f=qs(I)}return e.subBuildFn=c,e.fnCall=u,t.once&&(r[o]=f),f}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){const t=e.getNodeProperties(this),n=e.getSubBuildOutput(this);return t[n]=t[n]||this.setupOutput(e),t[n].subBuild=e.getClosestSubBuild(this),t[n]}build(e,t=null){let n=null;const r=e.getBuildStage(),a=e.getNodeProperties(this),o=e.getSubBuildOutput(this),c=this.getOutputNode(e),u=e.fnCall;if(e.fnCall=this,r==="setup"){const f=e.getSubBuildProperty("initialized",this);if(a[f]!==!0&&(a[f]=!0,a[o]=this.getOutputNode(e),a[o].build(e),this.shaderNode.subBuilds))for(const g of e.chaining){const v=e.getDataFromNode(g,"any");v.subBuilds=v.subBuilds||new Set;for(const M of this.shaderNode.subBuilds)v.subBuilds.add(M)}n=a[o]}else r==="analyze"?c.build(e,t):r==="generate"&&(n=c.build(e,t)||"");return e.fnCall=u,n}}function Kk(i){let e;return Z1(i),i[0]&&(i[0].isNode||Object.getPrototypeOf(i[0])!==Object.prototype)?e=[...i]:e=i[0],e}function $k(i){let e=0;return Z1(i),new Proxy(i,{get:(t,n,r)=>{let a;if(n==="length")return a=i.length,a;if(Symbol.iterator===n)a=function*(){for(const o of i)yield qs(o)};else{if(i.length>0)if(Object.getPrototypeOf(i[0])===Object.prototype){const o=i[0];o[n]===void 0?a=o[e++]:a=Reflect.get(o,n,r)}else i[0]instanceof Ua&&(i[n]===void 0?a=i[e++]:a=Reflect.get(i,n,r));else a=Reflect.get(t,n,r);a=qs(a)}return a}})}class Xk extends Ua{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}getLayout(){return this.layout}call(e=null){return new Zk(this,e)}setup(){return this.call()}}const jk=[!1,!0],Yk=[0,1,2,3],qk=[-1,-2],eP=[.5,1.5,1/3,1e-6,1e6,Math.PI,Math.PI*2,1/Math.PI,2/Math.PI,1/(Math.PI*2),Math.PI/2],kM=new Map;for(const i of jk)kM.set(i,new _p(i));const VM=new Map;for(const i of Yk)VM.set(i,new _p(i,"uint"));const HM=new Map([...VM].map(i=>new _p(i.value,"int")));for(const i of qk)HM.set(i,new _p(i,"int"));const Q1=new Map([...HM].map(i=>new _p(i.value)));for(const i of eP)Q1.set(i,new _p(i));for(const i of eP)Q1.set(-i,new _p(-i));const W1={bool:kM,uint:VM,ints:HM,float:Q1},tP=new Map([...kM,...Q1]),GM=(i,e)=>tP.has(i)?tP.get(i):i.isNode===!0?i:new _p(i,e),rf=function(i,e=null){return(...t)=>{for(const r of t)if(r===void 0)return ri(`TSL: Invalid parameter for the type "${i}".`),new _p(0,i);if((t.length===0||!["bool","float","int","uint"].includes(i)&&t.every(r=>{const a=typeof r;return a!=="object"&&a!=="function"}))&&(t=[G1(i,...t)]),t.length===1&&e!==null&&e.has(t[0]))return db(e.get(t[0]));if(t.length===1){const r=GM(t[0],i);return r.nodeType===i?db(r):db(new $2(r,i))}const n=t.map(r=>GM(r));return db(new Uk(n,i))}},fb=i=>typeof i=="object"&&i!==null?i.value:i,nP=i=>i!=null?i.nodeType||i.convertTo||(typeof i=="string"?i:null):null;function Cx(i,e){return new Xk(i,e)}const qs=(i,e=null)=>Gk(i,e),db=(i,e=null)=>qs(i,e).toVarIntent(),Z1=(i,e=null)=>new zk(i,e),fy=(i,e=null)=>new Qk(i,e),Vo=(i,e=null,t=null,n=null)=>new J2(i,e,t,n),Ws=(i,...e)=>new Wk(i,...e),bs=(i,e=null,t=null,n={})=>new J2(i,e,t,cA(Dc({},n),{intent:!0}));let Jk=0;class e4 extends Ua{constructor(e,t=null){super();let n=null;t!==null&&(typeof t=="object"?n=t.return:(typeof t=="string"?n=t:ri("TSL: Invalid layout type."),t=null)),this.shaderNode=new Cx(e,n),t!==null&&this.setLayout(t),this.isFn=!0}setLayout(e){const t=this.shaderNode.nodeType;if(typeof e.inputs!="object"){const n={name:"fn"+Jk++,type:t,inputs:[]};for(const r in e)r!=="return"&&n.inputs.push({name:r,type:e[r]});e=n}return this.shaderNode.setLayout(e),this}getNodeType(e){return this.shaderNode.getNodeType(e)||"float"}call(...e){const t=this.shaderNode.call(e);return this.shaderNode.nodeType==="void"&&t.toStack(),t.toVarIntent()}once(e=null){return this.shaderNode.once=!0,this.shaderNode.subBuilds=e,this}generate(e){const t=this.getNodeType(e);return ri('TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".'),e.generateConst(t)}}function Ar(i,e=null){const t=new e4(i,e);return new Proxy(()=>{},{apply(n,r,a){return t.call(...a)},get(n,r,a){return Reflect.get(t,r,a)},set(n,r,a,o){return Reflect.set(t,r,a,o)}})}const Ab=i=>{dv=i},zM=()=>dv,Va=(...i)=>dv.If(...i),t4=(...i)=>dv.Switch(...i);function K1(i){return dv&&dv.addToStack(i),i}bi("toStack",K1);const rP=new rf("color"),nn=new rf("float",W1.float),Yn=new rf("int",W1.ints),Yi=new rf("uint",W1.uint),bp=new rf("bool",W1.bool),rs=new rf("vec2"),sf=new rf("ivec2"),QM=new rf("uvec2"),iP=new rf("bvec2"),tr=new rf("vec3"),WM=new rf("ivec3"),dy=new rf("uvec3"),ZM=new rf("bvec3"),Sa=new rf("vec4"),KM=new rf("ivec4"),$M=new rf("uvec4"),sP=new rf("bvec4"),$1=new rf("mat2"),qf=new rf("mat3"),Av=new rf("mat4"),n4=(i="")=>new _p(i,"string"),r4=i=>new _p(i,"ArrayBuffer");bi("toColor",rP),bi("toFloat",nn),bi("toInt",Yn),bi("toUint",Yi),bi("toBool",bp),bi("toVec2",rs),bi("toIVec2",sf),bi("toUVec2",QM),bi("toBVec2",iP),bi("toVec3",tr),bi("toIVec3",WM),bi("toUVec3",dy),bi("toBVec3",ZM),bi("toVec4",Sa),bi("toIVec4",KM),bi("toUVec4",$M),bi("toBVec4",sP),bi("toMat2",$1),bi("toMat3",qf),bi("toMat4",Av);const aP=Vo(hy).setParameterLength(2),oP=(i,e)=>qs(new $2(qs(i),e)),i4=(i,e)=>qs(new X2(qs(i),e));bi("element",aP),bi("convert",oP);const s4=i=>(Qr("TSL: append() has been renamed to Stack()."),K1(i));bi("append",i=>(Qr("TSL: .append() has been renamed to .toStack()."),K1(i)));class Uc extends Ua{static get type(){return"PropertyNode"}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0,this.global=!0}customCacheKey(){return Mx(this.type+":"+(this.name||"")+":"+(this.varying?"1":"0"))}getHash(e){return this.name||super.getHash(e)}generate(e){let t;return this.varying===!0?(t=e.getVaryingFromNode(this,this.name),t.needsInterpolation=!0):t=e.getVarFromNode(this,this.name),e.getPropertyName(t)}}const hg=(i,e)=>new Uc(i,e),PA=(i,e)=>new Uc(i,e,!0),Yc=Ws(Uc,"vec4","DiffuseColor"),Ay=Ws(Uc,"vec3","DiffuseContribution"),XM=Ws(Uc,"vec3","EmissiveColor"),tm=Ws(Uc,"float","Roughness"),l0=Ws(Uc,"float","Metalness"),X1=Ws(Uc,"float","Clearcoat"),pb=Ws(Uc,"float","ClearcoatRoughness"),IA=Ws(Uc,"vec3","Sheen"),pv=Ws(Uc,"float","SheenRoughness"),j1=Ws(Uc,"float","Iridescence"),Y1=Ws(Uc,"float","IridescenceIOR"),q1=Ws(Uc,"float","IridescenceThickness"),J1=Ws(Uc,"float","AlphaT"),gv=Ws(Uc,"float","Anisotropy"),gb=Ws(Uc,"vec3","AnisotropyT"),py=Ws(Uc,"vec3","AnisotropyB"),mv=Ws(Uc,"color","SpecularColor"),gy=Ws(Uc,"color","SpecularColorBlended"),Bx=Ws(Uc,"float","SpecularF90"),eS=Ws(Uc,"float","Shininess"),Rx=Ws(Uc,"vec4","Output"),my=Ws(Uc,"float","dashSize"),mb=Ws(Uc,"float","gapSize"),a4=Ws(Uc,"float","pointWidth"),vb=Ws(Uc,"float","IOR"),tS=Ws(Uc,"float","Transmission"),jM=Ws(Uc,"float","Thickness"),YM=Ws(Uc,"float","AttenuationDistance"),qM=Ws(Uc,"color","AttenuationColor"),JM=Ws(Uc,"float","Dispersion");class lP extends Ua{static get type(){return"UniformGroupNode"}constructor(e,t=!1,n=1){super("string"),this.name=e,this.shared=t,this.order=n,this.isUniformGroup=!0}serialize(e){super.serialize(e),e.name=this.name,e.version=this.version,e.shared=this.shared}deserialize(e){super.deserialize(e),this.name=e.name,this.version=e.version,this.shared=e.shared}}const cP=i=>new lP(i),nS=(i,e=0)=>new lP(i,!0,e),uP=nS("frame"),Ja=nS("render"),eT=cP("object");class yb extends DM{static get type(){return"UniformNode"}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name="",this.groupNode=eT}setName(e){return this.name=e,this}label(e){return Qr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){return e=e.bind(this),super.onUpdate(n=>{const r=e(n,this);r!==void 0&&(this.value=r)},t)}getInputType(e){let t=super.getInputType(e);return t==="bool"&&(t="uint"),t}generate(e,t){const n=this.getNodeType(e),r=this.getUniformHash(e);let a=e.getNodeFromHash(r);a===void 0&&(e.setHashNode(this,r),a=this);const o=a.getInputType(e),c=e.getUniformFromNode(a,o,e.shaderStage,this.name||e.context.nodeName),u=e.getPropertyName(c);e.context.nodeName!==void 0&&delete e.context.nodeName;let f=u;if(n==="bool"){const g=e.getDataFromNode(this);let v=g.propertyName;if(v===void 0){const M=e.getVarFromNode(this,null,"bool");v=e.getPropertyName(M),g.propertyName=v,f=e.format(u,o,n),e.addLineFlowCode(`${v} = ${f}`,this)}f=v}return e.format(f,n,t)}}const ja=(i,e)=>{const t=nP(e||i);if(t===i&&(i=G1(t)),i&&i.isNode===!0){let n=i.value;i.traverse(r=>{r.isConstNode===!0&&(n=r.value)}),i=n}return new yb(i,t)};class hP extends lh{static get type(){return"ArrayNode"}constructor(e,t,n=null){super(e),this.count=t,this.values=n,this.isArrayNode=!0}getArrayCount(){return this.count}getNodeType(e){return this.nodeType===null?this.values[0].getNodeType(e):this.nodeType}getElementType(e){return this.getNodeType(e)}getMemberType(e,t){return this.nodeType===null?this.values[0].getMemberType(e,t):super.getMemberType(e,t)}generate(e){const t=this.getNodeType(e);return e.generateArray(t,this.count,this.values)}}const fP=(...i)=>{let e;if(i.length===1){const t=i[0];e=new hP(null,t.length,t)}else{const t=i[0],n=i[1];e=new hP(t,n)}return qs(e)};bi("toArray",(i,e)=>fP(Array(e).fill(i)));class o4 extends lh{static get type(){return"AssignNode"}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t,this.isAssignNode=!0}hasDependencies(){return!1}getNodeType(e,t){return t!=="void"?this.targetNode.getNodeType(e):"void"}needsSplitAssign(e){const{targetNode:t}=this;if(e.isAvailable("swizzleAssign")===!1&&t.isSplitNode&&t.components.length>1){const n=e.getTypeLength(t.node.getNodeType(e));return uy.join("").slice(0,n)!==t.components}return!1}setup(e){const{targetNode:t,sourceNode:n}=this,r=t.getScope(),a=e.getDataFromNode(r);a.assign=!0;const o=e.getNodeProperties(this);o.sourceNode=n,o.targetNode=t.context({assign:!0})}generate(e,t){const{targetNode:n,sourceNode:r}=e.getNodeProperties(this),a=this.needsSplitAssign(e),o=n.build(e),c=n.getNodeType(e),u=r.build(e,c),f=r.getNodeType(e),g=e.getDataFromNode(this);let v;if(g.initialized===!0)t!=="void"&&(v=o);else if(a){const M=e.getVarFromNode(this,null,c),R=e.getPropertyName(M);e.addLineFlowCode(`${R} = ${u}`,this);const I=n.node,ne=I.node.context({assign:!0}).build(e);for(let J=0;J{const g=f.type,v=g==="pointer";let M;return v?M="&"+u.build(e):M=u.build(e,g),M};if(Array.isArray(a)){if(a.length>r.length)ri("TSL: The number of provided parameters exceeds the expected number of inputs in 'Fn()'."),a.length=r.length;else if(a.length(e=e.length>1||e[0]&&e[0].isNode===!0?fy(e):Z1(e[0]),new l4(qs(i),e));bi("call",AP);const c4={"==":"equal","!=":"notEqual","<":"lessThan",">":"greaterThan","<=":"lessThanEqual",">=":"greaterThanEqual","%":"mod"};class ch extends lh{static get type(){return"OperatorNode"}constructor(e,t,n,...r){if(super(),r.length>0){let a=new ch(e,t,n);for(let o=0;o>"||n==="<<")return e.getIntegerType(o);if(n==="!"||n==="&&"||n==="||"||n==="^^")return"bool";if(n==="=="||n==="!="||n==="<"||n===">"||n==="<="||n===">="){const u=Math.max(e.getTypeLength(o),e.getTypeLength(c));return u>1?`bvec${u}`:"bool"}else{if(e.isMatrix(o)){if(c==="float")return o;if(e.isVector(c))return e.getVectorFromMatrix(o);if(e.isMatrix(c))return o}else if(e.isMatrix(c)){if(o==="float")return c;if(e.isVector(o))return e.getVectorFromMatrix(c)}return e.getTypeLength(c)>e.getTypeLength(o)?c:o}}generate(e,t){const n=this.op,{aNode:r,bNode:a}=this,o=this.getNodeType(e,t);let c=null,u=null;o!=="void"?(c=r.getNodeType(e),u=a?a.getNodeType(e):null,n==="<"||n===">"||n==="<="||n===">="||n==="=="||n==="!="?e.isVector(c)?u=c:e.isVector(u)?c=u:c!==u&&(c=u="float"):n===">>"||n==="<<"?(c=o,u=e.changeComponentType(u,"uint")):n==="%"?(c=o,u=e.isInteger(c)&&e.isInteger(u)?u:c):e.isMatrix(c)?u==="float"?u="float":e.isVector(u)?u=e.getVectorFromMatrix(c):e.isMatrix(u)||(c=u=o):e.isMatrix(u)?c==="float"?c="float":e.isVector(c)?c=e.getVectorFromMatrix(u):c=u=o:c=u=o):c=u=o;const f=r.build(e,c),g=a?a.build(e,u):null,v=e.getFunctionOperator(n);if(t!=="void"){const M=e.renderer.coordinateSystem===sl;if(n==="=="||n==="!="||n==="<"||n===">"||n==="<="||n===">=")return M?e.isVector(c)?e.format(`${this.getOperatorMethod(e,t)}( ${f}, ${g} )`,o,t):e.format(`( ${f} ${n} ${g} )`,o,t):e.format(`( ${f} ${n} ${g} )`,o,t);if(n==="%")return e.isInteger(u)?e.format(`( ${f} % ${g} )`,o,t):e.format(`${this.getOperatorMethod(e,o)}( ${f}, ${g} )`,o,t);if(n==="!"||n==="~")return e.format(`(${n}${f})`,c,t);if(v)return e.format(`${v}( ${f}, ${g} )`,o,t);if(e.isMatrix(c)&&u==="float")return e.format(`( ${g} ${n} ${f} )`,o,t);if(c==="float"&&e.isMatrix(u))return e.format(`${f} ${n} ${g}`,o,t);{let R=`( ${f} ${n} ${g} )`;return!M&&o==="bool"&&e.isVector(c)&&e.isVector(u)&&(R=`all${R}`),e.format(R,o,t)}}else if(c!=="void")return v?e.format(`${v}( ${f}, ${g} )`,o,t):e.isMatrix(c)&&u==="float"?e.format(`${g} ${n} ${f}`,o,t):e.format(`${f} ${n} ${g}`,o,t)}serialize(e){super.serialize(e),e.op=this.op}deserialize(e){super.deserialize(e),this.op=e.op}}const Qh=bs(ch,"+").setParameterLength(2,1/0).setName("add"),Yl=bs(ch,"-").setParameterLength(2,1/0).setName("sub"),Ho=bs(ch,"*").setParameterLength(2,1/0).setName("mul"),NA=bs(ch,"/").setParameterLength(2,1/0).setName("div"),xb=bs(ch,"%").setParameterLength(2).setName("mod"),tT=bs(ch,"==").setParameterLength(2).setName("equal"),pP=bs(ch,"!=").setParameterLength(2).setName("notEqual"),gP=bs(ch,"<").setParameterLength(2).setName("lessThan"),nT=bs(ch,">").setParameterLength(2).setName("greaterThan"),mP=bs(ch,"<=").setParameterLength(2).setName("lessThanEqual"),vP=bs(ch,">=").setParameterLength(2).setName("greaterThanEqual"),yP=bs(ch,"&&").setParameterLength(2,1/0).setName("and"),xP=bs(ch,"||").setParameterLength(2,1/0).setName("or"),_P=bs(ch,"!").setParameterLength(1).setName("not"),bP=bs(ch,"^^").setParameterLength(2).setName("xor"),wP=bs(ch,"&").setParameterLength(2).setName("bitAnd"),SP=bs(ch,"~").setParameterLength(1).setName("bitNot"),EP=bs(ch,"|").setParameterLength(2).setName("bitOr"),MP=bs(ch,"^").setParameterLength(2).setName("bitXor"),TP=bs(ch,"<<").setParameterLength(2).setName("shiftLeft"),CP=bs(ch,">>").setParameterLength(2).setName("shiftRight"),BP=Ar(([i])=>(i.addAssign(1),i)),RP=Ar(([i])=>(i.subAssign(1),i)),PP=Ar(([i])=>{const e=Yn(i).toConst();return i.addAssign(1),e}),IP=Ar(([i])=>{const e=Yn(i).toConst();return i.subAssign(1),e});bi("add",Qh),bi("sub",Yl),bi("mul",Ho),bi("div",NA),bi("mod",xb),bi("equal",tT),bi("notEqual",pP),bi("lessThan",gP),bi("greaterThan",nT),bi("lessThanEqual",mP),bi("greaterThanEqual",vP),bi("and",yP),bi("or",xP),bi("not",_P),bi("xor",bP),bi("bitAnd",wP),bi("bitNot",SP),bi("bitOr",EP),bi("bitXor",MP),bi("shiftLeft",TP),bi("shiftRight",CP),bi("incrementBefore",BP),bi("decrementBefore",RP),bi("increment",PP),bi("decrement",IP);const NP=(i,e)=>(Qr('TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.'),xb(Yn(i),Yn(e)));bi("modInt",NP);class Xr extends lh{static get type(){return"MathNode"}constructor(e,t,n=null,r=null){if(super(),(e===Xr.MAX||e===Xr.MIN)&&arguments.length>3){let a=new Xr(e,t,n);for(let o=2;oo&&a>c?t:o>c?n:c>a?r:t}getNodeType(e){const t=this.method;return t===Xr.LENGTH||t===Xr.DISTANCE||t===Xr.DOT?"float":t===Xr.CROSS?"vec3":t===Xr.ALL||t===Xr.ANY?"bool":t===Xr.EQUALS?e.changeComponentType(this.aNode.getNodeType(e),"bool"):this.getInputType(e)}setup(e){const{aNode:t,bNode:n,method:r}=this;let a=null;if(r===Xr.ONE_MINUS)a=Yl(1,t);else if(r===Xr.RECIPROCAL)a=NA(1,t);else if(r===Xr.DIFFERENCE)a=_u(Yl(t,n));else if(r===Xr.TRANSFORM_DIRECTION){let o=t,c=n;e.isMatrix(o.getNodeType(e))?c=Sa(tr(c),0):o=Sa(tr(o),0);const u=Ho(o,c).xyz;a=Cd(u)}return a!==null?a:super.setup(e)}generate(e,t){if(e.getNodeProperties(this).outputNode)return super.generate(e,t);let r=this.method;const a=this.getNodeType(e),o=this.getInputType(e),c=this.aNode,u=this.bNode,f=this.cNode,g=e.renderer.coordinateSystem;if(r===Xr.NEGATE)return e.format("( - "+c.build(e,o)+" )",a,t);{const v=[];return r===Xr.CROSS?v.push(c.build(e,a),u.build(e,a)):g===sl&&r===Xr.STEP?v.push(c.build(e,e.getTypeLength(c.getNodeType(e))===1?"float":o),u.build(e,o)):g===sl&&(r===Xr.MIN||r===Xr.MAX)?v.push(c.build(e,o),u.build(e,e.getTypeLength(u.getNodeType(e))===1?"float":o)):r===Xr.REFRACT?v.push(c.build(e,o),u.build(e,o),f.build(e,"float")):r===Xr.MIX?v.push(c.build(e,o),u.build(e,o),f.build(e,e.getTypeLength(f.getNodeType(e))===1?"float":o)):(g===Bl&&r===Xr.ATAN&&u!==null&&(r="atan2"),e.shaderStage!=="fragment"&&(r===Xr.DFDX||r===Xr.DFDY)&&(Qr(`TSL: '${r}' is not supported in the ${e.shaderStage} stage.`),r="/*"+r+"*/"),v.push(c.build(e,o)),u!==null&&v.push(u.build(e,o)),f!==null&&v.push(f.build(e,o))),e.format(`${e.getMethod(r,a)}( ${v.join(", ")} )`,a,t)}}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}}Xr.ALL="all",Xr.ANY="any",Xr.RADIANS="radians",Xr.DEGREES="degrees",Xr.EXP="exp",Xr.EXP2="exp2",Xr.LOG="log",Xr.LOG2="log2",Xr.SQRT="sqrt",Xr.INVERSE_SQRT="inversesqrt",Xr.FLOOR="floor",Xr.CEIL="ceil",Xr.NORMALIZE="normalize",Xr.FRACT="fract",Xr.SIN="sin",Xr.COS="cos",Xr.TAN="tan",Xr.ASIN="asin",Xr.ACOS="acos",Xr.ATAN="atan",Xr.ABS="abs",Xr.SIGN="sign",Xr.LENGTH="length",Xr.NEGATE="negate",Xr.ONE_MINUS="oneMinus",Xr.DFDX="dFdx",Xr.DFDY="dFdy",Xr.ROUND="round",Xr.RECIPROCAL="reciprocal",Xr.TRUNC="trunc",Xr.FWIDTH="fwidth",Xr.TRANSPOSE="transpose",Xr.DETERMINANT="determinant",Xr.INVERSE="inverse",Xr.EQUALS="equals",Xr.MIN="min",Xr.MAX="max",Xr.STEP="step",Xr.REFLECT="reflect",Xr.DISTANCE="distance",Xr.DIFFERENCE="difference",Xr.DOT="dot",Xr.CROSS="cross",Xr.POW="pow",Xr.TRANSFORM_DIRECTION="transformDirection",Xr.MIX="mix",Xr.CLAMP="clamp",Xr.REFRACT="refract",Xr.SMOOTHSTEP="smoothstep",Xr.FACEFORWARD="faceforward";const rT=nn(1e-6),u4=nn(1e6),rS=nn(Math.PI),h4=nn(Math.PI*2),f4=nn(Math.PI*2),d4=nn(Math.PI*.5),LP=bs(Xr,Xr.ALL).setParameterLength(1),FP=bs(Xr,Xr.ANY).setParameterLength(1),UP=bs(Xr,Xr.RADIANS).setParameterLength(1),DP=bs(Xr,Xr.DEGREES).setParameterLength(1),iT=bs(Xr,Xr.EXP).setParameterLength(1),Px=bs(Xr,Xr.EXP2).setParameterLength(1),iS=bs(Xr,Xr.LOG).setParameterLength(1),nm=bs(Xr,Xr.LOG2).setParameterLength(1),pd=bs(Xr,Xr.SQRT).setParameterLength(1),sT=bs(Xr,Xr.INVERSE_SQRT).setParameterLength(1),rm=bs(Xr,Xr.FLOOR).setParameterLength(1),sS=bs(Xr,Xr.CEIL).setParameterLength(1),Cd=bs(Xr,Xr.NORMALIZE).setParameterLength(1),fg=bs(Xr,Xr.FRACT).setParameterLength(1),Bd=bs(Xr,Xr.SIN).setParameterLength(1),dg=bs(Xr,Xr.COS).setParameterLength(1),OP=bs(Xr,Xr.TAN).setParameterLength(1),kP=bs(Xr,Xr.ASIN).setParameterLength(1),aT=bs(Xr,Xr.ACOS).setParameterLength(1),aS=bs(Xr,Xr.ATAN).setParameterLength(1,2),_u=bs(Xr,Xr.ABS).setParameterLength(1),oT=bs(Xr,Xr.SIGN).setParameterLength(1),im=bs(Xr,Xr.LENGTH).setParameterLength(1),lT=bs(Xr,Xr.NEGATE).setParameterLength(1),VP=bs(Xr,Xr.ONE_MINUS).setParameterLength(1),cT=bs(Xr,Xr.DFDX).setParameterLength(1),uT=bs(Xr,Xr.DFDY).setParameterLength(1),HP=bs(Xr,Xr.ROUND).setParameterLength(1),GP=bs(Xr,Xr.RECIPROCAL).setParameterLength(1),hT=bs(Xr,Xr.TRUNC).setParameterLength(1),fT=bs(Xr,Xr.FWIDTH).setParameterLength(1),zP=bs(Xr,Xr.TRANSPOSE).setParameterLength(1),QP=bs(Xr,Xr.DETERMINANT).setParameterLength(1),WP=bs(Xr,Xr.INVERSE).setParameterLength(1),ZP=(i,e)=>(Qr('TSL: "equals" is deprecated. Use "equal" inside a vector instead, like: "bvec*( equal( ... ) )"'),tT(i,e)),tA=bs(Xr,Xr.MIN).setParameterLength(2,1/0),uh=bs(Xr,Xr.MAX).setParameterLength(2,1/0),oS=bs(Xr,Xr.STEP).setParameterLength(2),KP=bs(Xr,Xr.REFLECT).setParameterLength(2),$P=bs(Xr,Xr.DISTANCE).setParameterLength(2),XP=bs(Xr,Xr.DIFFERENCE).setParameterLength(2),wp=bs(Xr,Xr.DOT).setParameterLength(2),c0=bs(Xr,Xr.CROSS).setParameterLength(2),Sp=bs(Xr,Xr.POW).setParameterLength(2),dT=i=>Ho(i,i),jP=i=>Ho(i,i,i),AT=i=>Ho(i,i,i,i),YP=bs(Xr,Xr.TRANSFORM_DIRECTION).setParameterLength(2),qP=i=>Ho(oT(i),Sp(_u(i),1/3)),pT=i=>wp(i,i),Ll=bs(Xr,Xr.MIX).setParameterLength(3),Ag=(i,e=0,t=1)=>qs(new Xr(Xr.CLAMP,qs(i),qs(e),qs(t))),lS=i=>Ag(i),gT=bs(Xr,Xr.REFRACT).setParameterLength(3),LA=bs(Xr,Xr.SMOOTHSTEP).setParameterLength(3),mT=bs(Xr,Xr.FACEFORWARD).setParameterLength(3),JP=Ar(([i])=>{const n=43758.5453,r=wp(i.xy,rs(12.9898,78.233)),a=xb(r,rS);return fg(Bd(a).mul(n))}),eI=(i,e,t)=>Ll(e,t,i),tI=(i,e,t)=>LA(e,t,i),nI=(i,e)=>oS(e,i),rI=(i,e)=>(Qr('TSL: "atan2" is overloaded. Use "atan" instead.'),aS(i,e)),A4=mT,p4=sT;bi("all",LP),bi("any",FP),bi("equals",ZP),bi("radians",UP),bi("degrees",DP),bi("exp",iT),bi("exp2",Px),bi("log",iS),bi("log2",nm),bi("sqrt",pd),bi("inverseSqrt",sT),bi("floor",rm),bi("ceil",sS),bi("normalize",Cd),bi("fract",fg),bi("sin",Bd),bi("cos",dg),bi("tan",OP),bi("asin",kP),bi("acos",aT),bi("atan",aS),bi("abs",_u),bi("sign",oT),bi("length",im),bi("lengthSq",pT),bi("negate",lT),bi("oneMinus",VP),bi("dFdx",cT),bi("dFdy",uT),bi("round",HP),bi("reciprocal",GP),bi("trunc",hT),bi("fwidth",fT),bi("atan2",rI),bi("min",tA),bi("max",uh),bi("step",nI),bi("reflect",KP),bi("distance",$P),bi("dot",wp),bi("cross",c0),bi("pow",Sp),bi("pow2",dT),bi("pow3",jP),bi("pow4",AT),bi("transformDirection",YP),bi("mix",eI),bi("clamp",Ag),bi("refract",gT),bi("smoothstep",tI),bi("faceForward",mT),bi("difference",XP),bi("saturate",lS),bi("cbrt",qP),bi("transpose",zP),bi("determinant",QP),bi("inverse",WP),bi("rand",JP);class g4 extends Ua{static get type(){return"ConditionalNode"}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){const{ifNode:t,elseNode:n}=e.getNodeProperties(this);if(t===void 0)return e.flowBuildStage(this,"setup"),this.getNodeType(e);const r=t.getNodeType(e);if(n!==null){const a=n.getNodeType(e);if(e.getTypeLength(a)>e.getTypeLength(r))return a}return r}setup(e){const t=this.condNode,n=this.ifNode.isolate(),r=this.elseNode?this.elseNode.isolate():null,a=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=a,r!==null&&(e.getDataFromNode(r).parentNodeBlock=a);const o=e.context.uniformFlow,c=e.getNodeProperties(this);c.condNode=t,c.ifNode=o?n:n.context({nodeBlock:n}),c.elseNode=r?o?r:r.context({nodeBlock:r}):null}generate(e,t){const n=this.getNodeType(e),r=e.getDataFromNode(this);if(r.nodeProperty!==void 0)return r.nodeProperty;const{condNode:a,ifNode:o,elseNode:c}=e.getNodeProperties(this),u=e.currentFunctionNode,f=t!=="void",g=f?hg(n).build(e):"";r.nodeProperty=g;const v=a.build(e,"bool");if(e.context.uniformFlow&&c!==null){const I=o.build(e,n),re=c.build(e,n),ne=e.getTernary(v,I,re);return e.format(ne,n,t)}e.addFlowCode(` +${e.tab}if ( ${v} ) { + +`).addFlowTab();let R=o.build(e,n);if(R&&(f?R=g+" = "+R+";":(R="return "+R+";",u===null&&(Qr("TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values."),R="// "+R))),e.removeFlowTab().addFlowCode(e.tab+" "+R+` + +`+e.tab+"}"),c!==null){e.addFlowCode(` else { + +`).addFlowTab();let I=c.build(e,n);I&&(f?I=g+" = "+I+";":(I="return "+I+";",u===null&&(Qr("TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values."),I="// "+I))),e.removeFlowTab().addFlowCode(e.tab+" "+I+` + +`+e.tab+`} + +`)}else e.addFlowCode(` + +`);return e.format(g,n,t)}}const Jf=Vo(g4).setParameterLength(2,3);bi("select",Jf);class iI extends Ua{static get type(){return"ContextNode"}constructor(e=null,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}getFlowContextData(){const e=[];return this.traverse(t=>{t.isContextNode===!0&&e.push(t.value)}),Object.assign({},...e)}getMemberType(e,t){return this.node.getMemberType(e,t)}analyze(e){const t=e.addContext(this.value);this.node.build(e),e.setContext(t)}setup(e){const t=e.addContext(this.value);this.node.build(e),e.setContext(t)}generate(e,t){const n=e.addContext(this.value),r=this.node.build(e,t);return e.setContext(n),r}}const u0=(i=null,e={})=>{let t=i;return(t===null||t.isNode!==!0)&&(e=t||e,t=null),new iI(t,e)},sI=i=>u0(i,{uniformFlow:!0}),vT=(i,e)=>u0(i,{nodeName:e});function aI(i,e,t=null){return u0(t,{getShadow:({light:n,shadowColorNode:r})=>e===n?r.mul(i):r})}function oI(i,e=null){return u0(e,{getAO:(t,{material:n})=>n.transparent===!0?t:t!==null?t.mul(i):i})}function lI(i,e){return Qr('TSL: "label()" has been deprecated. Use "setName()" instead.'),vT(i,e)}bi("context",u0),bi("label",lI),bi("uniformFlow",sI),bi("setName",vT),bi("builtinShadowContext",(i,e,t)=>aI(e,t,i)),bi("builtinAOContext",(i,e)=>oI(e,i));class cS extends Ua{static get type(){return"VarNode"}constructor(e,t=null,n=!1){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0,this.readOnly=n,this.parents=!0,this.intent=!1}setIntent(e){return this.intent=e,this}isIntent(e){return e.getDataFromNode(this).forceDeclaration===!0?!1:this.intent}getIntent(){return this.intent}getMemberType(e,t){return this.node.getMemberType(e,t)}getElementType(e){return this.node.getElementType(e)}getNodeType(e){return this.node.getNodeType(e)}getArrayCount(e){return this.node.getArrayCount(e)}isAssign(e){return e.getDataFromNode(this).assign}build(...e){const t=e[0];if(this._hasStack(t)===!1&&t.buildStage==="setup"&&(t.context.nodeLoop||t.context.nodeBlock)){let n=!1;if(this.node.isShaderCallNodeInternal&&this.node.shaderNode.getLayout()===null&&t.fnCall&&t.fnCall.shaderNode&&t.getDataFromNode(this.node.shaderNode).hasLoop){const o=t.getDataFromNode(this);o.forceDeclaration=!0,n=!0}const r=t.getBaseStack();n?r.addToStackBefore(this):r.addToStack(this)}return this.isIntent(t)&&this.isAssign(t)!==!0?this.node.build(...e):super.build(...e)}generate(e){const{node:t,name:n,readOnly:r}=this,{renderer:a}=e,o=a.backend.isWebGPUBackend===!0;let c=!1,u=!1;r&&(c=e.isDeterministic(t),u=o?r:c);const f=this.getNodeType(e);if(f=="void")return this.isIntent(e)!==!0&&ri('TSL: ".toVar()" can not be used with void type.'),t.build(e);const g=e.getVectorType(f),v=t.build(e,g),M=e.getVarFromNode(this,n,g,void 0,u),R=e.getPropertyName(M);let I=R;if(u)if(o)I=c?`const ${R}`:`let ${R}`;else{const re=t.getArrayCount(e);I=`const ${e.getVar(M.type,R,re)}`}return e.addLineFlowCode(`${I} = ${v}`,this),R}_hasStack(e){return e.getDataFromNode(this).stack!==void 0}}const yT=Vo(cS),cI=(i,e=null)=>yT(i,e).toStack(),uI=(i,e=null)=>yT(i,e,!0).toStack(),hI=i=>yT(i).setIntent(!0).toStack();bi("toVar",cI),bi("toConst",uI),bi("toVarIntent",hI);class m4 extends Ua{static get type(){return"SubBuild"}constructor(e,t,n=null){super(n),this.node=e,this.name=t,this.isSubBuildNode=!0}getNodeType(e){if(this.nodeType!==null)return this.nodeType;e.addSubBuild(this.name);const t=this.node.getNodeType(e);return e.removeSubBuild(),t}build(e,...t){e.addSubBuild(this.name);const n=this.node.build(e,...t);return e.removeSubBuild(),n}}const Ix=(i,e,t=null)=>qs(new m4(qs(i),e,t));class v4 extends Ua{static get type(){return"VaryingNode"}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0,this.interpolationType=null,this.interpolationSampling=null,this.global=!0}setInterpolation(e,t=null){return this.interpolationType=e,this.interpolationSampling=t,this}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){const t=e.getNodeProperties(this);let n=t.varying;if(n===void 0){const r=this.name,a=this.getNodeType(e),o=this.interpolationType,c=this.interpolationSampling;t.varying=n=e.getVaryingFromNode(this,r,a,o,c),t.node=Ix(this.node,"VERTEX")}return n.needsInterpolation||(n.needsInterpolation=e.shaderStage==="fragment"),n}setup(e){this.setupVarying(e),e.flowNodeFromShaderStage(ub.VERTEX,this.node)}analyze(e){this.setupVarying(e),e.flowNodeFromShaderStage(ub.VERTEX,this.node)}generate(e){const t=e.getSubBuildProperty("property",e.currentStack),n=e.getNodeProperties(this),r=this.setupVarying(e);if(n[t]===void 0){const a=this.getNodeType(e),o=e.getPropertyName(r,ub.VERTEX);e.flowNodeFromShaderStage(ub.VERTEX,n.node,a,o),n[t]=o}return e.getPropertyName(r)}}const sm=Vo(v4).setParameterLength(1,2),fI=i=>sm(i);bi("toVarying",sm),bi("toVertexStage",fI),bi("varying",(...i)=>(Qr("TSL: .varying() has been renamed to .toVarying()."),sm(...i))),bi("vertexStage",(...i)=>(Qr("TSL: .vertexStage() has been renamed to .toVertexStage()."),sm(...i)));const dI=Ar(([i])=>{const e=i.mul(.9478672986).add(.0521327014).pow(2.4),t=i.mul(.0773993808),n=i.lessThanEqual(.04045);return Ll(e,t,n)}).setLayout({name:"sRGBTransferEOTF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),AI=Ar(([i])=>{const e=i.pow(.41666).mul(1.055).sub(.055),t=i.mul(12.92),n=i.lessThanEqual(.0031308);return Ll(e,t,n)}).setLayout({name:"sRGBTransferOETF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),xT="WorkingColorSpace",y4="OutputColorSpace";class _T extends lh{static get type(){return"ColorSpaceNode"}constructor(e,t,n){super("vec4"),this.colorNode=e,this.source=t,this.target=n}resolveColorSpace(e,t){return t===xT?wr.workingColorSpace:t===y4?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){const{colorNode:t}=this,n=this.resolveColorSpace(e,this.source),r=this.resolveColorSpace(e,this.target);let a=t;return wr.enabled===!1||n===r||!n||!r||(wr.getTransfer(n)===Xs&&(a=Sa(dI(a.rgb),a.a)),wr.getPrimaries(n)!==wr.getPrimaries(r)&&(a=Sa(qf(wr._getMatrix(new vn,n,r)).mul(a.rgb),a.a)),wr.getTransfer(r)===Xs&&(a=Sa(AI(a.rgb),a.a))),a}}const pI=(i,e)=>qs(new _T(qs(i),xT,e)),uS=(i,e)=>qs(new _T(qs(i),e,xT)),x4=(i,e,t)=>qs(new _T(qs(i),e,t));bi("workingToColorSpace",pI),bi("colorSpaceToWorking",uS);let _4=class extends hy{static get type(){return"ReferenceElementNode"}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){const t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}};class gI extends Ua{static get type(){return"ReferenceBaseNode"}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split("."),this.reference=n,this.node=null,this.group=null,this.updateType=Xo.OBJECT}setGroup(e){return this.group=e,this}element(e){return new _4(this,qs(e))}setNodeType(e){const t=ja(null,e);this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){const{properties:t}=this;let n=e[t[0]];for(let r=1;rnew gI(i,e,t);class w4 extends gI{static get type(){return"RendererReferenceNode"}constructor(e,t,n=null){super(e,t,n),this.renderer=n,this.setGroup(Ja)}updateReference(e){return this.reference=this.renderer!==null?this.renderer:e.renderer,this.reference}}const mI=(i,e,t=null)=>new w4(i,e,t);class S4 extends lh{static get type(){return"ToneMappingNode"}constructor(e,t=yI,n=null){super("vec3"),this._toneMapping=e,this.exposureNode=t,this.colorNode=n}customCacheKey(){return Tx(this._toneMapping)}setToneMapping(e){return this._toneMapping=e,this}getToneMapping(){return this._toneMapping}setup(e){const t=this.colorNode||e.context.color,n=this._toneMapping;if(n===Bt)return t;let r=null;const a=e.renderer.library.getToneMappingFunction(n);return a!==null?r=Sa(a(t.rgb,this.exposureNode),t.a):(ri("ToneMappingNode: Unsupported Tone Mapping configuration.",n),r=t),r}}const vI=(i,e,t)=>qs(new S4(i,qs(e),qs(t))),yI=mI("toneMappingExposure","float");bi("toneMapping",(i,e,t)=>vI(e,t,i));const xI=new WeakMap;function _I(i,e){let t=xI.get(i);return t===void 0&&(t=new Vd(i,e),xI.set(i,t)),t}class vv extends DM{static get type(){return"BufferAttributeNode"}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=$h,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&e.itemSize<=4&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;const t=this.getNodeType(e),n=e.getTypeLength(t),r=this.value,a=this.bufferStride||n,o=this.bufferOffset;let c;r.isInterleavedBuffer===!0?c=r:r.isBufferAttribute===!0?c=_I(r.array,a):c=_I(r,a);const u=new pA(c,n,o);c.setUsage(this.usage),this.attribute=u,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){const t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),r=e.getPropertyName(n);let a=null;return e.shaderStage==="vertex"||e.shaderStage==="compute"?(this.name=r,a=r):a=sm(this).build(e,t),a}getInputType(){return"bufferAttribute"}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}}function hS(i,e=null,t=0,n=0,r=$h,a=!1){return e==="mat3"||e===null&&i.itemSize===9?qf(new vv(i,"vec3",9,0).setUsage(r).setInstanced(a),new vv(i,"vec3",9,3).setUsage(r).setInstanced(a),new vv(i,"vec3",9,6).setUsage(r).setInstanced(a)):e==="mat4"||e===null&&i.itemSize===16?Av(new vv(i,"vec4",16,0).setUsage(r).setInstanced(a),new vv(i,"vec4",16,4).setUsage(r).setInstanced(a),new vv(i,"vec4",16,8).setUsage(r).setInstanced(a),new vv(i,"vec4",16,12).setUsage(r).setInstanced(a)):new vv(i,e,t,n)}const bT=(i,e=null,t=0,n=0)=>hS(i,e,t,n),E4=(i,e=null,t=0,n=0)=>hS(i,e,t,n,Xh),fS=(i,e=null,t=0,n=0)=>hS(i,e,t,n,$h,!0),wT=(i,e=null,t=0,n=0)=>hS(i,e,t,n,Xh,!0);bi("toAttribute",i=>bT(i.value));class M4 extends Ua{static get type(){return"ComputeNode"}constructor(e,t){super("void"),this.isComputeNode=!0,this.computeNode=e,this.workgroupSize=t,this.count=null,this.version=1,this.name="",this.updateBeforeType=Xo.OBJECT,this.onInitFunction=null}setCount(e){return this.count=e,this}getCount(){return this.count}dispose(){this.dispatchEvent({type:"dispose"})}setName(e){return this.name=e,this}label(e){return Qr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}onInit(e){return this.onInitFunction=e,this}updateBefore({renderer:e}){e.compute(this)}setup(e){const t=this.computeNode.build(e);if(t){const n=e.getNodeProperties(this);n.outputComputeNode=t.outputNode,t.outputNode=null}return t}generate(e,t){const{shaderStage:n}=e;if(n==="compute"){const r=this.computeNode.build(e,"void");r!==""&&e.addLineFlowCode(r,this)}else{const a=e.getNodeProperties(this).outputComputeNode;if(a)return a.build(e,t)}}}const ST=(i,e=[64])=>{(e.length===0||e.length>3)&&ri("TSL: compute() workgroupSize must have 1, 2, or 3 elements");for(let t=0;tST(i,t).setCount(e);bi("compute",bI),bi("computeKernel",ST);class T4 extends Ua{static get type(){return"IsolateNode"}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isIsolateNode=!0}getNodeType(e){const t=e.getCache(),n=e.getCacheFromNode(this,this.parent);e.setCache(n);const r=this.node.getNodeType(e);return e.setCache(t),r}build(e,...t){const n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);const a=this.node.build(e,...t);return e.setCache(n),a}setParent(e){return this.parent=e,this}getParent(){return this.parent}}const Nx=i=>new T4(qs(i));function wI(i,e=!0){return Qr('TSL: "cache()" has been deprecated. Use "isolate()" instead.'),Nx(i).setParent(e)}bi("cache",wI),bi("isolate",Nx);class C4 extends Ua{static get type(){return"BypassNode"}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){const t=this.callNode.build(e,"void");return t!==""&&e.addLineFlowCode(t,this),this.outputNode.build(e)}}const SI=Vo(C4).setParameterLength(2);bi("bypass",SI);class EI extends Ua{static get type(){return"RemapNode"}constructor(e,t,n,r=nn(0),a=nn(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=r,this.outHighNode=a,this.doClamp=!0}setup(){const{node:e,inLowNode:t,inHighNode:n,outLowNode:r,outHighNode:a,doClamp:o}=this;let c=e.sub(t).div(n.sub(t));return o===!0&&(c=c.clamp()),c.mul(a.sub(r)).add(r)}}const MI=Vo(EI,null,null,{doClamp:!1}).setParameterLength(3,5),TI=Vo(EI).setParameterLength(3,5);bi("remap",MI),bi("remapClamp",TI);class dS extends Ua{static get type(){return"ExpressionNode"}constructor(e="",t="void"){super(t),this.snippet=e}generate(e,t){const n=this.getNodeType(e),r=this.snippet;if(n==="void")e.addLineFlowCode(r,this);else return e.format(r,n,t)}}const h0=Vo(dS).setParameterLength(1,2),CI=i=>(i?Jf(i,h0("discard")):h0("discard")).toStack(),B4=()=>h0("return").toStack();bi("discard",CI);class R4 extends lh{static get type(){return"RenderOutputNode"}constructor(e,t,n){super("vec4"),this.colorNode=e,this._toneMapping=t,this.outputColorSpace=n,this.isRenderOutputNode=!0}setToneMapping(e){return this._toneMapping=e,this}getToneMapping(){return this._toneMapping}setup({context:e}){let t=this.colorNode||e.color;const n=(this._toneMapping!==null?this._toneMapping:e.toneMapping)||Bt,r=(this.outputColorSpace!==null?this.outputColorSpace:e.outputColorSpace)||nl;return n!==Bt&&(t=t.toneMapping(n)),r!==nl&&r!==wr.workingColorSpace&&(t=t.workingToColorSpace(r)),t}}const ET=(i,e=null,t=null)=>qs(new R4(qs(i),e,t));bi("renderOutput",ET);class P4 extends lh{static get type(){return"DebugNode"}constructor(e,t=null){super(),this.node=e,this.callback=t}getNodeType(e){return this.node.getNodeType(e)}setup(e){return this.node.build(e)}analyze(e){return this.node.build(e)}generate(e){const t=this.callback,n=this.node.build(e),r="--- TSL debug - "+e.shaderStage+" shader ---",a="-".repeat(r.length);let o="";return o+="// #"+r+`# +`,o+=e.flow.code.replace(/^\t/mg,"")+` +`,o+="/* ... */ "+n+` /* ... */ +`,o+="// #"+a+`# +`,t!==null?t(e,o):js(o),n}}const BI=(i,e=null)=>qs(new P4(qs(i),e)).toStack();bi("debug",BI);class RI{constructor(){this._renderer=null,this.currentFrame=null}get nodeFrame(){return this._renderer._nodes.nodeFrame}setRenderer(e){return this._renderer=e,this}getRenderer(){return this._renderer}init(){}begin(){}finish(){}inspect(){}computeAsync(){}beginCompute(){}finishCompute(){}beginRender(){}finishRender(){}copyTextureToTexture(){}copyFramebufferToTexture(){}}class I4 extends Ua{static get type(){return"InspectorNode"}constructor(e,t="",n=null){super(),this.node=e,this.name=t,this.callback=n,this.updateType=Xo.FRAME,this.isInspectorNode=!0}getName(){return this.name||this.node.name}update(e){e.renderer.inspector.inspect(this)}getNodeType(e){return this.node.getNodeType(e)}setup(e){let t=this.node;return e.context.inspector===!0&&this.callback!==null&&(t=this.callback(t)),e.renderer.backend.isWebGPUBackend!==!0&&e.renderer.inspector.constructor!==RI&&Za('TSL: ".toInspector()" is only available with WebGPU.'),t}}function PI(i,e="",t=null){return i=qs(i),i.before(new I4(i,e,t))}bi("toInspector",PI);function N4(i){Qr("TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add",i)}class II extends Ua{static get type(){return"AttributeNode"}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){const n=this.getAttributeName(e);if(e.hasGeometryAttribute(n)){const r=e.geometry.getAttribute(n);t=e.getTypeFromAttribute(r)}else t="float"}return t}setAttributeName(e){return this._attributeName=e,this}getAttributeName(){return this._attributeName}generate(e){const t=this.getAttributeName(e),n=this.getNodeType(e);if(e.hasGeometryAttribute(t)===!0){const a=e.geometry.getAttribute(t),o=e.getTypeFromAttribute(a),c=e.getAttribute(t,o);return e.shaderStage==="vertex"?e.format(c.name,o,n):sm(this).build(e,n)}else return Qr(`AttributeNode: Vertex attribute "${t}" not found on geometry.`),e.generateConst(n)}serialize(e){super.serialize(e),e.global=this.global,e._attributeName=this._attributeName}deserialize(e){super.deserialize(e),this.global=e.global,this._attributeName=e._attributeName}}const Rd=(i,e=null)=>new II(i,e),qc=(i=0)=>Rd("uv"+(i>0?i:""),"vec2");class L4 extends Ua{static get type(){return"TextureSizeNode"}constructor(e,t=null){super("uvec2"),this.isTextureSizeNode=!0,this.textureNode=e,this.levelNode=t}generate(e,t){const n=this.textureNode.build(e,"property"),r=this.levelNode===null?"0":this.levelNode.build(e,"int");return e.format(`${e.getMethod("textureDimensions")}( ${n}, ${r} )`,this.getNodeType(e),t)}}const f0=Vo(L4).setParameterLength(1,2);class F4 extends yb{static get type(){return"MaxMipLevelNode"}constructor(e){super(0),this._textureNode=e,this.updateType=Xo.FRAME}get textureNode(){return this._textureNode}get texture(){return this._textureNode.value}update(){const e=this.texture,t=e.images,n=t&&t.length>0?t[0]&&t[0].image||t[0]:e.image;if(n&&n.width!==void 0){const{width:r,height:a}=n;this.value=Math.log2(Math.max(r,a))}}}const MT=Vo(F4).setParameterLength(1),TT=new ss;class am extends yb{static get type(){return"TextureNode"}constructor(e=TT,t=null,n=null,r=null){super(e),this.isTextureNode=!0,this.uvNode=t,this.levelNode=n,this.biasNode=r,this.compareNode=null,this.depthNode=null,this.gradNode=null,this.offsetNode=null,this.sampler=!0,this.updateMatrix=!1,this.updateType=Xo.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this._flipYUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?"float":this.value.type===ct?"uvec4":this.value.type===jt?"ivec4":"vec4"}getInputType(){return"texture"}getDefaultUV(){return qc(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=ja(this.value.matrix)),this._matrixUniform.mul(tr(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this}setupUV(e,t){return e.isFlipY()&&(this._flipYUniform===null&&(this._flipYUniform=ja(!1)),t=t.toVar(),this.sampler?t=this._flipYUniform.select(t.flipY(),t):t=this._flipYUniform.select(t.setY(Yn(f0(this,this.levelNode).y).sub(t.y).sub(1)),t)),t}setup(e){const t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;const n=this.value;if(!n||n.isTexture!==!0)throw new Error("THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().");const r=Ar(()=>{let o=this.uvNode;return(o===null||e.context.forceUVContext===!0)&&e.context.getUV&&(o=e.context.getUV(this,e)),o||(o=this.getDefaultUV()),this.updateMatrix===!0&&(o=this.getTransformedUV(o)),o=this.setupUV(e,o),this.updateType=this._matrixUniform!==null||this._flipYUniform!==null?Xo.OBJECT:Xo.NONE,o})();let a=this.levelNode;a===null&&e.context.getTextureLevel&&(a=e.context.getTextureLevel(this)),t.uvNode=r,t.levelNode=a,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode,t.offsetNode=this.offsetNode}generateUV(e,t){return t.build(e,this.sampler===!0?"vec2":"ivec2")}generateOffset(e,t){return t.build(e,"ivec2")}generateSnippet(e,t,n,r,a,o,c,u,f){const g=this.value;let v;return a?v=e.generateTextureBias(g,t,n,a,o,f):u?v=e.generateTextureGrad(g,t,n,u,o,f):c?v=e.generateTextureCompare(g,t,n,c,o,f):this.sampler===!1?v=e.generateTextureLoad(g,t,n,r,o,f):r?v=e.generateTextureLevel(g,t,n,r,o,f):v=e.generateTexture(g,t,n,o,f),v}generate(e,t){const n=this.value,r=e.getNodeProperties(this),a=super.generate(e,"property");if(/^sampler/.test(t))return a+"_sampler";if(e.isReference(t))return a;{const o=e.getDataFromNode(this);let c=o.propertyName;if(c===void 0){const{uvNode:g,levelNode:v,biasNode:M,compareNode:R,depthNode:I,gradNode:re,offsetNode:ne}=r,J=this.generateUV(e,g),be=v?v.build(e,"float"):null,Re=M?M.build(e,"float"):null,ze=I?I.build(e,"int"):null,st=R?R.build(e,"float"):null,et=re?[re[0].build(e,"vec2"),re[1].build(e,"vec2")]:null,dt=ne?this.generateOffset(e,ne):null,Nt=e.getVarFromNode(this);c=e.getPropertyName(Nt);const nt=this.generateSnippet(e,a,J,be,Re,ze,st,et,dt);e.addLineFlowCode(`${c} = ${nt}`,this),o.snippet=nt,o.propertyName=c}let u=c;const f=this.getNodeType(e);return e.needsToWorkingColorSpace(n)&&(u=uS(h0(u,f),n.colorSpace).setup(e).build(e,f)),e.format(u,f,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){return Qr("TextureNode: .uv() has been renamed. Use .sample() instead."),this.sample(e)}sample(e){const t=this.clone();return t.uvNode=qs(e),t.referenceNode=this.getBase(),qs(t)}load(e){return this.sample(e).setSampler(!1)}blur(e){const t=this.clone();t.biasNode=qs(e).mul(MT(t)),t.referenceNode=this.getBase();const n=t.value;return t.generateMipmaps===!1&&(n&&n.generateMipmaps===!1||n.minFilter===xn||n.magFilter===xn)&&(Qr("TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture."),t.biasNode=null),qs(t)}level(e){const t=this.clone();return t.levelNode=qs(e),t.referenceNode=this.getBase(),qs(t)}size(e){return f0(this,e)}bias(e){const t=this.clone();return t.biasNode=qs(e),t.referenceNode=this.getBase(),qs(t)}getBase(){return this.referenceNode?this.referenceNode.getBase():this}compare(e){const t=this.clone();return t.compareNode=qs(e),t.referenceNode=this.getBase(),qs(t)}grad(e,t){const n=this.clone();return n.gradNode=[qs(e),qs(t)],n.referenceNode=this.getBase(),qs(n)}depth(e){const t=this.clone();return t.depthNode=qs(e),t.referenceNode=this.getBase(),qs(t)}offset(e){const t=this.clone();return t.offsetNode=qs(e),t.referenceNode=this.getBase(),qs(t)}serialize(e){super.serialize(e),e.value=this.value.toJSON(e.meta).uuid,e.sampler=this.sampler,e.updateMatrix=this.updateMatrix,e.updateType=this.updateType}deserialize(e){super.deserialize(e),this.value=e.meta.textures[e.value],this.sampler=e.sampler,this.updateMatrix=e.updateMatrix,this.updateType=e.updateType}update(){const e=this.value,t=this._matrixUniform;t!==null&&(t.value=e.matrix),e.matrixAutoUpdate===!0&&e.updateMatrix();const n=this._flipYUniform;n!==null&&(n.value=e.image instanceof ImageBitmap&&e.flipY===!0||e.isRenderTargetTexture===!0||e.isFramebufferTexture===!0||e.isDepthTexture===!0)}clone(){const e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.offsetNode=this.offsetNode,e}}const U4=Vo(am).setParameterLength(1,4).setName("texture"),_c=(i=TT,e=null,t=null,n=null)=>{let r;return i&&i.isTextureNode===!0?(r=qs(i.clone()),r.referenceNode=i.getBase(),e!==null&&(r.uvNode=qs(e)),t!==null&&(r.levelNode=qs(t)),n!==null&&(r.biasNode=qs(n))):r=U4(i,e,t,n),r},D4=(i=TT)=>_c(i),Sh=(...i)=>_c(...i).setSampler(!1),O4=(i,e,t)=>_c(i,e).level(t),k4=i=>(i.isNode===!0?i:_c(i)).convert("sampler"),V4=i=>(i.isNode===!0?i:_c(i)).convert("samplerComparison");class CT extends yb{static get type(){return"BufferNode"}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n,this.updateRanges=[]}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}getElementType(e){return this.getNodeType(e)}getInputType(){return"buffer"}}const _b=(i,e,t)=>new CT(i,e,t);class H4 extends hy{static get type(){return"UniformArrayElementNode"}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){const t=super.generate(e),n=this.getNodeType(),r=this.node.getPaddedType();return e.format(t,r,n)}}class G4 extends CT{static get type(){return"UniformArrayNode"}constructor(e,t=null){super(null),this.array=e,this.elementType=t===null?o0(e[0]):t,this.paddedType=this.getPaddedType(),this.updateType=Xo.RENDER,this.isArrayBufferNode=!0}getNodeType(){return this.paddedType}getElementType(){return this.elementType}getPaddedType(){const e=this.elementType;let t="vec4";return e==="mat2"?t="mat2":/mat/.test(e)===!0?t="mat4":e.charAt(0)==="i"?t="ivec4":e.charAt(0)==="u"&&(t="uvec4"),t}update(){const{array:e,value:t}=this,n=this.elementType;if(n==="float"||n==="int"||n==="uint")for(let r=0;rnew G4(i,e);class z4 extends Ua{constructor(e){super("float"),this.name=e,this.isBuiltinNode=!0}generate(){return this.name}}const d0=Vo(z4).setParameterLength(1);let bb,wb;class Cu extends Ua{static get type(){return"ScreenNode"}constructor(e){super(),this.scope=e,this._output=null,this.isViewportNode=!0}getNodeType(){return this.scope===Cu.DPR?"float":this.scope===Cu.VIEWPORT?"vec4":"vec2"}getUpdateType(){let e=Xo.NONE;return(this.scope===Cu.SIZE||this.scope===Cu.VIEWPORT||this.scope===Cu.DPR)&&(e=Xo.RENDER),this.updateType=e,e}update({renderer:e}){const t=e.getRenderTarget();this.scope===Cu.VIEWPORT?t!==null?wb.copy(t.viewport):(e.getViewport(wb),wb.multiplyScalar(e.getPixelRatio())):this.scope===Cu.DPR?this._output.value=e.getPixelRatio():t!==null?(bb.width=t.width,bb.height=t.height):e.getDrawingBufferSize(bb)}setup(){const e=this.scope;let t=null;return e===Cu.SIZE?t=ja(bb||(bb=new de)):e===Cu.VIEWPORT?t=ja(wb||(wb=new ts)):e===Cu.DPR?t=ja(1):t=rs(yy.div(vy)),this._output=t,t}generate(e){if(this.scope===Cu.COORDINATE){let t=e.getFragCoord();if(e.isFlipY()){const n=e.getNodeProperties(vy).outputNode.build(e);t=`${e.getType("vec2")}( ${t}.x, ${n}.y - ${t}.y )`}return t}return super.generate(e)}}Cu.COORDINATE="coordinate",Cu.VIEWPORT="viewport",Cu.SIZE="size",Cu.UV="uv",Cu.DPR="dpr";const BT=Ws(Cu,Cu.DPR),A0=Ws(Cu,Cu.UV),vy=Ws(Cu,Cu.SIZE),yy=Ws(Cu,Cu.COORDINATE),Lx=Ws(Cu,Cu.VIEWPORT),RT=Lx.zw,NI=yy.sub(Lx.xy),Q4=NI.div(RT),W4=Ar(()=>(Qr('TSL: "viewportResolution" is deprecated. Use "screenSize" instead.'),vy),"vec2").once()(),yv=ja(0,"uint").setName("u_cameraIndex").setGroup(nS("cameraIndex")).toVarying("v_cameraIndex"),p0=ja("float").setName("cameraNear").setGroup(Ja).onRenderUpdate(({camera:i})=>i.near),g0=ja("float").setName("cameraFar").setGroup(Ja).onRenderUpdate(({camera:i})=>i.far),Pd=Ar(({camera:i})=>{let e;if(i.isArrayCamera&&i.cameras.length>0){const t=[];for(const r of i.cameras)t.push(r.projectionMatrix);e=gd(t).setGroup(Ja).setName("cameraProjectionMatrices").element(i.isMultiViewCamera?d0("gl_ViewID_OVR"):yv).toConst("cameraProjectionMatrix")}else e=ja("mat4").setName("cameraProjectionMatrix").setGroup(Ja).onRenderUpdate(({camera:t})=>t.projectionMatrix);return e}).once()(),Z4=Ar(({camera:i})=>{let e;if(i.isArrayCamera&&i.cameras.length>0){const t=[];for(const r of i.cameras)t.push(r.projectionMatrixInverse);e=gd(t).setGroup(Ja).setName("cameraProjectionMatricesInverse").element(i.isMultiViewCamera?d0("gl_ViewID_OVR"):yv).toConst("cameraProjectionMatrixInverse")}else e=ja("mat4").setName("cameraProjectionMatrixInverse").setGroup(Ja).onRenderUpdate(({camera:t})=>t.projectionMatrixInverse);return e}).once()(),FA=Ar(({camera:i})=>{let e;if(i.isArrayCamera&&i.cameras.length>0){const t=[];for(const r of i.cameras)t.push(r.matrixWorldInverse);e=gd(t).setGroup(Ja).setName("cameraViewMatrices").element(i.isMultiViewCamera?d0("gl_ViewID_OVR"):yv).toConst("cameraViewMatrix")}else e=ja("mat4").setName("cameraViewMatrix").setGroup(Ja).onRenderUpdate(({camera:t})=>t.matrixWorldInverse);return e}).once()(),K4=Ar(({camera:i})=>{let e;if(i.isArrayCamera&&i.cameras.length>0){const t=[];for(const r of i.cameras)t.push(r.matrixWorld);e=gd(t).setGroup(Ja).setName("cameraWorldMatrices").element(i.isMultiViewCamera?d0("gl_ViewID_OVR"):yv).toConst("cameraWorldMatrix")}else e=ja("mat4").setName("cameraWorldMatrix").setGroup(Ja).onRenderUpdate(({camera:t})=>t.matrixWorld);return e}).once()(),$4=Ar(({camera:i})=>{let e;if(i.isArrayCamera&&i.cameras.length>0){const t=[];for(const r of i.cameras)t.push(r.normalMatrix);e=gd(t).setGroup(Ja).setName("cameraNormalMatrices").element(i.isMultiViewCamera?d0("gl_ViewID_OVR"):yv).toConst("cameraNormalMatrix")}else e=ja("mat3").setName("cameraNormalMatrix").setGroup(Ja).onRenderUpdate(({camera:t})=>t.normalMatrix);return e}).once()(),Sb=Ar(({camera:i})=>{let e;if(i.isArrayCamera&&i.cameras.length>0){const t=[];for(let r=0,a=i.cameras.length;r{const o=r.cameras,c=a.array;for(let u=0,f=o.length;un.value.setFromMatrixPosition(t.matrixWorld));return e}).once()(),X4=Ar(({camera:i})=>{let e;if(i.isArrayCamera&&i.cameras.length>0){const t=[];for(const r of i.cameras)t.push(r.viewport);e=gd(t,"vec4").setGroup(Ja).setName("cameraViewports").element(yv).toConst("cameraViewport")}else e=Sa(0,0,vy.x,vy.y).toConst("cameraViewport");return e}).once()(),LI=new Ii;class ql extends Ua{static get type(){return"Object3DNode"}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=Xo.OBJECT,this.uniformNode=new yb(null)}getNodeType(){const e=this.scope;if(e===ql.WORLD_MATRIX)return"mat4";if(e===ql.POSITION||e===ql.VIEW_POSITION||e===ql.DIRECTION||e===ql.SCALE)return"vec3";if(e===ql.RADIUS)return"float"}update(e){const t=this.object3d,n=this.uniformNode,r=this.scope;if(r===ql.WORLD_MATRIX)n.value=t.matrixWorld;else if(r===ql.POSITION)n.value=n.value||new ce,n.value.setFromMatrixPosition(t.matrixWorld);else if(r===ql.SCALE)n.value=n.value||new ce,n.value.setFromMatrixScale(t.matrixWorld);else if(r===ql.DIRECTION)n.value=n.value||new ce,t.getWorldDirection(n.value);else if(r===ql.VIEW_POSITION){const a=e.camera;n.value=n.value||new ce,n.value.setFromMatrixPosition(t.matrixWorld),n.value.applyMatrix4(a.matrixWorldInverse)}else if(r===ql.RADIUS){const a=e.object.geometry;a.boundingSphere===null&&a.computeBoundingSphere(),LI.copy(a.boundingSphere).applyMatrix4(t.matrixWorld),n.value=LI.radius}}generate(e){const t=this.scope;return t===ql.WORLD_MATRIX?this.uniformNode.nodeType="mat4":t===ql.POSITION||t===ql.VIEW_POSITION||t===ql.DIRECTION||t===ql.SCALE?this.uniformNode.nodeType="vec3":t===ql.RADIUS&&(this.uniformNode.nodeType="float"),this.uniformNode.build(e)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}}ql.WORLD_MATRIX="worldMatrix",ql.POSITION="position",ql.SCALE="scale",ql.VIEW_POSITION="viewPosition",ql.DIRECTION="direction",ql.RADIUS="radius";const j4=Vo(ql,ql.DIRECTION).setParameterLength(1),Y4=Vo(ql,ql.WORLD_MATRIX).setParameterLength(1),FI=Vo(ql,ql.POSITION).setParameterLength(1),q4=Vo(ql,ql.SCALE).setParameterLength(1),J4=Vo(ql,ql.VIEW_POSITION).setParameterLength(1),eV=Vo(ql,ql.RADIUS).setParameterLength(1);class Ep extends ql{static get type(){return"ModelNode"}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}}const tV=Ws(Ep,Ep.DIRECTION),Mp=Ws(Ep,Ep.WORLD_MATRIX),nV=Ws(Ep,Ep.POSITION),rV=Ws(Ep,Ep.SCALE),iV=Ws(Ep,Ep.VIEW_POSITION),UI=Ws(Ep,Ep.RADIUS),DI=ja(new vn).onObjectUpdate(({object:i},e)=>e.value.getNormalMatrix(i.matrixWorld)),sV=ja(new ti).onObjectUpdate(({object:i},e)=>e.value.copy(i.matrixWorld).invert()),om=Ar(i=>i.context.modelViewMatrix||OI).once()().toVar("modelViewMatrix"),OI=FA.mul(Mp),PT=Ar(i=>(i.context.isHighPrecisionModelViewMatrix=!0,ja("mat4").onObjectUpdate(({object:e,camera:t})=>e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld)))).once()().toVar("highpModelViewMatrix"),IT=Ar(i=>{const e=i.context.isHighPrecisionModelViewMatrix;return ja("mat3").onObjectUpdate(({object:t,camera:n})=>(e!==!0&&t.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,t.matrixWorld),t.normalMatrix.getNormalMatrix(t.modelViewMatrix)))}).once()().toVar("highpModelNormalViewMatrix"),ed=Rd("position","vec3"),hh=ed.toVarying("positionLocal"),AS=ed.toVarying("positionPrevious"),UA=Ar(i=>Mp.mul(hh).xyz.toVarying(i.getSubBuildProperty("v_positionWorld")),"vec3").once(["POSITION"])(),NT=Ar(()=>hh.transformDirection(Mp).toVarying("v_positionWorldDirection").normalize().toVar("positionWorldDirection"),"vec3").once(["POSITION"])(),Rh=Ar(i=>i.context.setupPositionView().toVarying("v_positionView"),"vec3").once(["POSITION"])(),su=Ar(i=>{let e;return i.camera.isOrthographicCamera?e=tr(0,0,1):e=Rh.negate().toVarying("v_positionViewDirection").normalize(),e.toVar("positionViewDirection")},"vec3").once(["POSITION"])();class aV extends Ua{static get type(){return"FrontFacingNode"}constructor(){super("bool"),this.isFrontFacingNode=!0}generate(e){if(e.shaderStage!=="fragment")return"true";const{material:t}=e;return t.side===fe?"false":e.getFrontFacing()}}const kI=Ws(aV),LT=nn(kI).mul(2).sub(1),Fx=Ar(([i],{material:e})=>{const t=e.side;return t===fe?i=i.mul(-1):t===ue&&(i=i.mul(LT)),i}),pS=Rd("normal","vec3"),nA=Ar(i=>i.geometry.hasAttribute("normal")===!1?(Qr('TSL: Vertex attribute "normal" not found on geometry.'),tr(0,1,0)):pS,"vec3").once()().toVar("normalLocal"),VI=Rh.dFdx().cross(Rh.dFdy()).normalize().toVar("normalFlat"),Ux=Ar(i=>{let e;return i.material.flatShading===!0?e=VI:e=FT(nA).toVarying("v_normalViewGeometry").normalize(),e},"vec3").once()().toVar("normalViewGeometry"),HI=Ar(i=>{let e=Ux.transformDirection(FA);return i.material.flatShading!==!0&&(e=e.toVarying("v_normalWorldGeometry")),e.normalize().toVar("normalWorldGeometry")},"vec3").once()(),rc=Ar(({subBuildFn:i,material:e,context:t})=>{let n;return i==="NORMAL"||i==="VERTEX"?(n=Ux,e.flatShading!==!0&&(n=Fx(n))):n=t.setupNormal().context({getUV:null}),n},"vec3").once(["NORMAL","VERTEX"])().toVar("normalView"),xv=rc.transformDirection(FA).toVar("normalWorld"),xy=Ar(({subBuildFn:i,context:e})=>{let t;return i==="NORMAL"||i==="VERTEX"?t=rc:t=e.setupClearcoatNormal().context({getUV:null}),t},"vec3").once(["NORMAL","VERTEX"])().toVar("clearcoatNormalView"),GI=Ar(([i,e=Mp])=>{const t=qf(e),n=i.div(tr(t[0].dot(t[0]),t[1].dot(t[1]),t[2].dot(t[2])));return t.mul(n).xyz}),FT=Ar(([i],e)=>{const t=e.context.modelNormalViewMatrix;if(t)return t.transformDirection(i);const n=DI.mul(i);return FA.transformDirection(n)}),oV=Ar(()=>(Qr('TSL: "transformedNormalView" is deprecated. Use "normalView" instead.'),rc)).once(["NORMAL","VERTEX"])(),lV=Ar(()=>(Qr('TSL: "transformedNormalWorld" is deprecated. Use "normalWorld" instead.'),xv)).once(["NORMAL","VERTEX"])(),cV=Ar(()=>(Qr('TSL: "transformedClearcoatNormalView" is deprecated. Use "clearcoatNormalView" instead.'),xy)).once(["NORMAL","VERTEX"])(),zI=new xo,UT=new ti,QI=ja(0).onReference(({material:i})=>i).onObjectUpdate(({material:i})=>i.refractionRatio),gS=ja(1).onReference(({material:i})=>i).onObjectUpdate(function({material:i,scene:e}){return i.envMap?i.envMapIntensity:e.environmentIntensity}),DT=ja(new ti).onReference(function(i){return i.material}).onObjectUpdate(function({material:i,scene:e}){const t=e.environment!==null&&i.envMap===null?e.environmentRotation:i.envMapRotation;return t?(zI.copy(t),UT.makeRotationFromEuler(zI)):UT.identity(),UT}),WI=su.negate().reflect(rc),ZI=su.negate().refract(rc,QI),KI=WI.transformDirection(FA).toVar("reflectVector"),$I=ZI.transformDirection(FA).toVar("reflectVector"),XI=new pf;class uV extends am{static get type(){return"CubeTextureNode"}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return this.value.isDepthTexture===!0?"cubeDepthTexture":"cubeTexture"}getDefaultUV(){const e=this.value;return e.mapping===at?KI:e.mapping===wt?$I:(ri('CubeTextureNode: Mapping "%s" not supported.',e.mapping),tr(0,0,0))}setUpdateMatrix(){}setupUV(e,t){const n=this.value;return n.isDepthTexture===!0?e.renderer.coordinateSystem===Bl?tr(t.x,t.y.negate(),t.z):t:((e.renderer.coordinateSystem===Bl||!n.isRenderTargetTexture)&&(t=tr(t.x.negate(),t.yz)),DT.mul(t))}generateUV(e,t){return t.build(e,this.sampler===!0?"vec3":"ivec3")}}const OT=Vo(uV).setParameterLength(1,4).setName("cubeTexture"),Id=(i=XI,e=null,t=null,n=null)=>{let r;return i&&i.isCubeTextureNode===!0?(r=qs(i.clone()),r.referenceNode=i,e!==null&&(r.uvNode=qs(e)),t!==null&&(r.levelNode=qs(t)),n!==null&&(r.biasNode=qs(n))):r=OT(i,e,t,n),r},hV=(i=XI)=>OT(i);class fV extends hy{static get type(){return"ReferenceElementNode"}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){const t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}}class mS extends Ua{static get type(){return"ReferenceNode"}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split("."),this.reference=n,this.node=null,this.group=null,this.name=null,this.updateType=Xo.OBJECT}element(e){return new fV(this,qs(e))}setGroup(e){return this.group=e,this}setName(e){return this.name=e,this}label(e){return Qr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}setNodeType(e){let t=null;this.count!==null?t=_b(null,e,this.count):Array.isArray(this.getValueFromReference())?t=gd(null,e):e==="texture"?t=_c(null):e==="cubeTexture"?t=Id(null):t=ja(null,e),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.setName(this.name),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){const{properties:t}=this;let n=e[t[0]];for(let r=1;rnew mS(i,e,t),kT=(i,e,t,n)=>new mS(i,e,n,t);class dV extends mS{static get type(){return"MaterialReferenceNode"}constructor(e,t,n=null){super(e,t,n),this.material=n,this.isMaterialReferenceNode=!0}updateReference(e){return this.reference=this.material!==null?this.material:e.material,this.reference}}const m0=(i,e,t=null)=>new dV(i,e,t),jI=qc(),AV=Rh.dFdx(),pV=Rh.dFdy(),YI=jI.dFdx(),qI=jI.dFdy(),JI=rc,eN=pV.cross(JI),tN=JI.cross(AV),VT=eN.mul(YI.x).add(tN.mul(qI.x)),HT=eN.mul(YI.y).add(tN.mul(qI.y)),nN=VT.dot(VT).max(HT.dot(HT)),rN=nN.equal(0).select(0,nN.inverseSqrt()),gV=VT.mul(rN).toVar("tangentViewFrame"),mV=HT.mul(rN).toVar("bitangentViewFrame"),vS=Rd("tangent","vec4"),Eb=vS.xyz.toVar("tangentLocal"),yS=Ar(({subBuildFn:i,geometry:e,material:t})=>{let n;return i==="VERTEX"||e.hasAttribute("tangent")?n=om.mul(Sa(Eb,0)).xyz.toVarying("v_tangentView").normalize():n=gV,t.flatShading!==!0&&(n=Fx(n)),n},"vec3").once(["NORMAL","VERTEX"])().toVar("tangentView"),iN=yS.transformDirection(FA).toVarying("v_tangentWorld").normalize().toVar("tangentWorld"),xS=Ar(([i,e],{subBuildFn:t,material:n})=>{let r=i.mul(vS.w).xyz;return t==="NORMAL"&&n.flatShading!==!0&&(r=r.toVarying(e)),r}).once(["NORMAL"]),vV=xS(pS.cross(vS),"v_bitangentGeometry").normalize().toVar("bitangentGeometry"),yV=xS(nA.cross(Eb),"v_bitangentLocal").normalize().toVar("bitangentLocal"),sN=Ar(({subBuildFn:i,geometry:e,material:t})=>{let n;return i==="VERTEX"||e.hasAttribute("tangent")?n=xS(rc.cross(yS),"v_bitangentView").normalize():n=mV,t.flatShading!==!0&&(n=Fx(n)),n},"vec3").once(["NORMAL","VERTEX"])().toVar("bitangentView"),xV=xS(xv.cross(iN),"v_bitangentWorld").normalize().toVar("bitangentWorld"),_y=qf(yS,sN,rc).toVar("TBNViewMatrix"),aN=su.mul(_y),_V=(i,e)=>i.sub(aN.mul(e)),oN=Ar(()=>{let i=py.cross(su);return i=i.cross(py).normalize(),i=Ll(i,rc,gv.mul(tm.oneMinus()).oneMinus().pow2().pow2()).normalize(),i}).once()(),lN=i=>qs(i).mul(.5).add(.5),bV=i=>qs(i).mul(2).sub(1),GT=i=>tr(i,pd(lS(nn(1).sub(wp(i,i)))));class wV extends lh{static get type(){return"NormalMapNode"}constructor(e,t=null){super("vec3"),this.node=e,this.scaleNode=t,this.normalMapType=tu,this.unpackNormalMode=Uf}setup({material:e}){const{normalMapType:t,scaleNode:n,unpackNormalMode:r}=this;let a=this.node.mul(2).sub(1);if(t===tu?r===of?a=GT(a.xy):r===Df?a=GT(a.yw):r!==Uf&&console.error(`THREE.NodeMaterial: Unexpected unpack normal mode: ${r}`):r!==Uf&&console.error(`THREE.NodeMaterial: Normal map type '${t}' is not compatible with unpack normal mode '${r}'`),n!==null){let c=n;e.flatShading===!0&&(c=Fx(c)),a=tr(a.xy.mul(c),a.z)}let o=null;return t===Xu?o=FT(a):t===tu?o=_y.mul(a).normalize():(ri(`NodeMaterial: Unsupported normal map type: ${t}`),o=rc),o}}const zT=Vo(wV).setParameterLength(1,2),SV=Ar(({textureNode:i,bumpScale:e})=>{const t=r=>i.isolate().context({getUV:a=>r(a.uvNode||qc()),forceUVContext:!0}),n=nn(t(r=>r));return rs(nn(t(r=>r.add(r.dFdx()))).sub(n),nn(t(r=>r.add(r.dFdy()))).sub(n)).mul(e)}),EV=Ar(i=>{const{surf_pos:e,surf_norm:t,dHdxy:n}=i,r=e.dFdx().normalize(),a=e.dFdy().normalize(),o=t,c=a.cross(o),u=o.cross(r),f=r.dot(c).mul(LT),g=f.sign().mul(n.x.mul(c).add(n.y.mul(u)));return f.abs().mul(t).sub(g).normalize()});class MV extends lh{static get type(){return"BumpMapNode"}constructor(e,t=null){super("vec3"),this.textureNode=e,this.scaleNode=t}setup(){const e=this.scaleNode!==null?this.scaleNode:1,t=SV({textureNode:this.textureNode,bumpScale:e});return EV({surf_pos:Rh,surf_norm:rc,dHdxy:t})}}const QT=Vo(MV).setParameterLength(1,2),cN=new Map;class Pi extends Ua{static get type(){return"MaterialNode"}constructor(e){super(),this.scope=e}getCache(e,t){let n=cN.get(e);return n===void 0&&(n=m0(e,t),cN.set(e,n)),n}getFloat(e){return this.getCache(e,"float")}getColor(e){return this.getCache(e,"color")}getTexture(e){return this.getCache(e==="map"?"map":e+"Map","texture")}setup(e){const t=e.context.material,n=this.scope;let r=null;if(n===Pi.COLOR){const a=t.color!==void 0?this.getColor(n):tr();t.map&&t.map.isTexture===!0?r=a.mul(this.getTexture("map")):r=a}else if(n===Pi.OPACITY){const a=this.getFloat(n);t.alphaMap&&t.alphaMap.isTexture===!0?r=a.mul(this.getTexture("alpha")):r=a}else if(n===Pi.SPECULAR_STRENGTH)t.specularMap&&t.specularMap.isTexture===!0?r=this.getTexture("specular").r:r=nn(1);else if(n===Pi.SPECULAR_INTENSITY){const a=this.getFloat(n);t.specularIntensityMap&&t.specularIntensityMap.isTexture===!0?r=a.mul(this.getTexture(n).a):r=a}else if(n===Pi.SPECULAR_COLOR){const a=this.getColor(n);t.specularColorMap&&t.specularColorMap.isTexture===!0?r=a.mul(this.getTexture(n).rgb):r=a}else if(n===Pi.ROUGHNESS){const a=this.getFloat(n);t.roughnessMap&&t.roughnessMap.isTexture===!0?r=a.mul(this.getTexture(n).g):r=a}else if(n===Pi.METALNESS){const a=this.getFloat(n);t.metalnessMap&&t.metalnessMap.isTexture===!0?r=a.mul(this.getTexture(n).b):r=a}else if(n===Pi.EMISSIVE){const a=this.getFloat("emissiveIntensity"),o=this.getColor(n).mul(a);t.emissiveMap&&t.emissiveMap.isTexture===!0?r=o.mul(this.getTexture(n)):r=o}else if(n===Pi.NORMAL)t.normalMap?(r=zT(this.getTexture("normal"),this.getCache("normalScale","vec2")),r.normalMapType=t.normalMapType,(t.normalMap.format==We||t.normalMap.format==ar||t.normalMap.format==xr)&&(r.unpackNormalMode=of)):t.bumpMap?r=QT(this.getTexture("bump").r,this.getFloat("bumpScale")):r=rc;else if(n===Pi.CLEARCOAT){const a=this.getFloat(n);t.clearcoatMap&&t.clearcoatMap.isTexture===!0?r=a.mul(this.getTexture(n).r):r=a}else if(n===Pi.CLEARCOAT_ROUGHNESS){const a=this.getFloat(n);t.clearcoatRoughnessMap&&t.clearcoatRoughnessMap.isTexture===!0?r=a.mul(this.getTexture(n).r):r=a}else if(n===Pi.CLEARCOAT_NORMAL)t.clearcoatNormalMap?r=zT(this.getTexture(n),this.getCache(n+"Scale","vec2")):r=rc;else if(n===Pi.SHEEN){const a=this.getColor("sheenColor").mul(this.getFloat("sheen"));t.sheenColorMap&&t.sheenColorMap.isTexture===!0?r=a.mul(this.getTexture("sheenColor").rgb):r=a}else if(n===Pi.SHEEN_ROUGHNESS){const a=this.getFloat(n);t.sheenRoughnessMap&&t.sheenRoughnessMap.isTexture===!0?r=a.mul(this.getTexture(n).a):r=a,r=r.clamp(1e-4,1)}else if(n===Pi.ANISOTROPY)if(t.anisotropyMap&&t.anisotropyMap.isTexture===!0){const a=this.getTexture(n);r=$1(Dx.x,Dx.y,Dx.y.negate(),Dx.x).mul(a.rg.mul(2).sub(rs(1)).normalize().mul(a.b))}else r=Dx;else if(n===Pi.IRIDESCENCE_THICKNESS){const a=au("1","float",t.iridescenceThicknessRange);if(t.iridescenceThicknessMap){const o=au("0","float",t.iridescenceThicknessRange);r=a.sub(o).mul(this.getTexture(n).g).add(o)}else r=a}else if(n===Pi.TRANSMISSION){const a=this.getFloat(n);t.transmissionMap?r=a.mul(this.getTexture(n).r):r=a}else if(n===Pi.THICKNESS){const a=this.getFloat(n);t.thicknessMap?r=a.mul(this.getTexture(n).g):r=a}else if(n===Pi.IOR)r=this.getFloat(n);else if(n===Pi.LIGHT_MAP)r=this.getTexture(n).rgb.mul(this.getFloat("lightMapIntensity"));else if(n===Pi.AO)r=this.getTexture(n).r.sub(1).mul(this.getFloat("aoMapIntensity")).add(1);else if(n===Pi.LINE_DASH_OFFSET)r=t.dashOffset?this.getFloat(n):nn(0);else{const a=this.getNodeType(e);r=this.getCache(n,a)}return r}}Pi.ALPHA_TEST="alphaTest",Pi.COLOR="color",Pi.OPACITY="opacity",Pi.SHININESS="shininess",Pi.SPECULAR="specular",Pi.SPECULAR_STRENGTH="specularStrength",Pi.SPECULAR_INTENSITY="specularIntensity",Pi.SPECULAR_COLOR="specularColor",Pi.REFLECTIVITY="reflectivity",Pi.ROUGHNESS="roughness",Pi.METALNESS="metalness",Pi.NORMAL="normal",Pi.CLEARCOAT="clearcoat",Pi.CLEARCOAT_ROUGHNESS="clearcoatRoughness",Pi.CLEARCOAT_NORMAL="clearcoatNormal",Pi.EMISSIVE="emissive",Pi.ROTATION="rotation",Pi.SHEEN="sheen",Pi.SHEEN_ROUGHNESS="sheenRoughness",Pi.ANISOTROPY="anisotropy",Pi.IRIDESCENCE="iridescence",Pi.IRIDESCENCE_IOR="iridescenceIOR",Pi.IRIDESCENCE_THICKNESS="iridescenceThickness",Pi.IOR="ior",Pi.TRANSMISSION="transmission",Pi.THICKNESS="thickness",Pi.ATTENUATION_DISTANCE="attenuationDistance",Pi.ATTENUATION_COLOR="attenuationColor",Pi.LINE_SCALE="scale",Pi.LINE_DASH_SIZE="dashSize",Pi.LINE_GAP_SIZE="gapSize",Pi.LINE_WIDTH="linewidth",Pi.LINE_DASH_OFFSET="dashOffset",Pi.POINT_SIZE="size",Pi.DISPERSION="dispersion",Pi.LIGHT_MAP="light",Pi.AO="ao";const uN=Ws(Pi,Pi.ALPHA_TEST),_S=Ws(Pi,Pi.COLOR),hN=Ws(Pi,Pi.SHININESS),fN=Ws(Pi,Pi.EMISSIVE),bS=Ws(Pi,Pi.OPACITY),dN=Ws(Pi,Pi.SPECULAR),WT=Ws(Pi,Pi.SPECULAR_INTENSITY),AN=Ws(Pi,Pi.SPECULAR_COLOR),Mb=Ws(Pi,Pi.SPECULAR_STRENGTH),wS=Ws(Pi,Pi.REFLECTIVITY),pN=Ws(Pi,Pi.ROUGHNESS),gN=Ws(Pi,Pi.METALNESS),mN=Ws(Pi,Pi.NORMAL),vN=Ws(Pi,Pi.CLEARCOAT),yN=Ws(Pi,Pi.CLEARCOAT_ROUGHNESS),xN=Ws(Pi,Pi.CLEARCOAT_NORMAL),_N=Ws(Pi,Pi.ROTATION),bN=Ws(Pi,Pi.SHEEN),wN=Ws(Pi,Pi.SHEEN_ROUGHNESS),SN=Ws(Pi,Pi.ANISOTROPY),EN=Ws(Pi,Pi.IRIDESCENCE),MN=Ws(Pi,Pi.IRIDESCENCE_IOR),TN=Ws(Pi,Pi.IRIDESCENCE_THICKNESS),CN=Ws(Pi,Pi.TRANSMISSION),BN=Ws(Pi,Pi.THICKNESS),RN=Ws(Pi,Pi.IOR),PN=Ws(Pi,Pi.ATTENUATION_DISTANCE),IN=Ws(Pi,Pi.ATTENUATION_COLOR),ZT=Ws(Pi,Pi.LINE_SCALE),KT=Ws(Pi,Pi.LINE_DASH_SIZE),$T=Ws(Pi,Pi.LINE_GAP_SIZE),SS=Ws(Pi,Pi.LINE_WIDTH),XT=Ws(Pi,Pi.LINE_DASH_OFFSET),NN=Ws(Pi,Pi.POINT_SIZE),LN=Ws(Pi,Pi.DISPERSION),jT=Ws(Pi,Pi.LIGHT_MAP),FN=Ws(Pi,Pi.AO),Dx=ja(new de).onReference(function(i){return i.material}).onRenderUpdate(function({material:i}){this.value.set(i.anisotropy*Math.cos(i.anisotropyRotation),i.anisotropy*Math.sin(i.anisotropyRotation))}),UN=Ar(i=>i.context.setupModelViewProjection(),"vec4").once()().toVarying("v_modelViewProjection");class TV extends hy{static get type(){return"StorageArrayElementNode"}constructor(e,t){super(e,t),this.isStorageArrayElementNode=!0}set storageBufferNode(e){this.node=e}get storageBufferNode(){return this.node}getMemberType(e,t){const n=this.storageBufferNode.structTypeNode;return n?n.getMemberType(e,t):"void"}setup(e){return e.isAvailable("storageBuffer")===!1&&this.node.isPBO===!0&&e.setupPBO(this.node),super.setup(e)}generate(e,t){let n;const r=e.context.assign;if(e.isAvailable("storageBuffer")===!1?this.node.isPBO===!0&&r!==!0&&(this.node.value.isInstancedBufferAttribute||e.shaderStage!=="compute")?n=e.generatePBO(this):n=this.node.build(e):n=super.generate(e),r!==!0){const a=this.getNodeType(e);n=e.format(n,a,t)}return n}}const CV=Vo(TV).setParameterLength(2);class BV extends CT{static get type(){return"StorageBufferNode"}constructor(e,t=null,n=0){let r,a=null;t&&t.isStruct?(r="struct",a=t.layout,(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)&&(n=e.count)):t===null&&(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)?(r=RM(e.itemSize),n=e.count):r=t,super(e,r,n),this.isStorageBufferNode=!0,this.structTypeNode=a,this.access=Yf.READ_WRITE,this.isAtomic=!1,this.isPBO=!1,this._attribute=null,this._varying=null,this.global=!0,e.isStorageBufferAttribute!==!0&&e.isStorageInstancedBufferAttribute!==!0&&(e.isInstancedBufferAttribute?e.isStorageInstancedBufferAttribute=!0:e.isStorageBufferAttribute=!0)}getHash(e){if(this.bufferCount===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getInputType(){return this.value.isIndirectStorageBufferAttribute?"indirectStorageBuffer":"storageBuffer"}element(e){return CV(this,e)}setPBO(e){return this.isPBO=e,this}getPBO(){return this.isPBO}setAccess(e){return this.access=e,this}toReadOnly(){return this.setAccess(Yf.READ_ONLY)}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}getAttributeData(){return this._attribute===null&&(this._attribute=bT(this.value),this._varying=sm(this._attribute)),{attribute:this._attribute,varying:this._varying}}getNodeType(e){if(this.structTypeNode!==null)return this.structTypeNode.getNodeType(e);if(e.isAvailable("storageBuffer")||e.isAvailable("indirectStorageBuffer"))return super.getNodeType(e);const{attribute:t}=this.getAttributeData();return t.getNodeType(e)}getMemberType(e,t){return this.structTypeNode!==null?this.structTypeNode.getMemberType(e,t):"void"}generate(e){if(this.structTypeNode!==null&&this.structTypeNode.build(e),e.isAvailable("storageBuffer")||e.isAvailable("indirectStorageBuffer"))return super.generate(e);const{attribute:t,varying:n}=this.getAttributeData(),r=n.build(e);return e.registerTransform(r,t),r}}const v0=(i,e=null,t=0)=>new BV(i,e,t),RV=(i,e,t)=>(Qr('TSL: "storageObject()" is deprecated. Use "storage().setPBO( true )" instead.'),v0(i,e,t).setPBO(!0));class Ku extends Ua{static get type(){return"IndexNode"}constructor(e){super("uint"),this.scope=e,this.isIndexNode=!0}generate(e){const t=this.getNodeType(e),n=this.scope;let r;if(n===Ku.VERTEX)r=e.getVertexIndex();else if(n===Ku.INSTANCE)r=e.getInstanceIndex();else if(n===Ku.DRAW)r=e.getDrawIndex();else if(n===Ku.INVOCATION_LOCAL)r=e.getInvocationLocalIndex();else if(n===Ku.INVOCATION_SUBGROUP)r=e.getInvocationSubgroupIndex();else if(n===Ku.SUBGROUP)r=e.getSubgroupIndex();else throw new Error("THREE.IndexNode: Unknown scope: "+n);let a;return e.shaderStage==="vertex"||e.shaderStage==="compute"?a=r:a=sm(this).build(e,t),a}}Ku.VERTEX="vertex",Ku.INSTANCE="instance",Ku.SUBGROUP="subgroup",Ku.INVOCATION_LOCAL="invocationLocal",Ku.INVOCATION_SUBGROUP="invocationSubgroup",Ku.DRAW="draw";const DN=Ws(Ku,Ku.VERTEX),lm=Ws(Ku,Ku.INSTANCE),PV=Ws(Ku,Ku.SUBGROUP),IV=Ws(Ku,Ku.INVOCATION_SUBGROUP),NV=Ws(Ku,Ku.INVOCATION_LOCAL),ON=Ws(Ku,Ku.DRAW);class kN extends Ua{static get type(){return"InstanceNode"}constructor(e,t,n=null){super("void"),this.count=e,this.instanceMatrix=t,this.instanceColor=n,this.instanceMatrixNode=null,this.instanceColorNode=null,this.updateType=Xo.FRAME,this.buffer=null,this.bufferColor=null}get isStorageMatrix(){const{instanceMatrix:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}get isStorageColor(){const{instanceColor:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}setup(e){const{instanceMatrix:t,instanceColor:n,isStorageMatrix:r,isStorageColor:a}=this,{count:o}=t;let{instanceMatrixNode:c,instanceColorNode:u}=this;if(c===null){if(r)c=v0(t,"mat4",Math.max(o,1)).element(lm);else if(o<=1e3)c=_b(t.array,"mat4",Math.max(o,1)).element(lm);else{const g=new WE(t.array,16,1);this.buffer=g;const v=t.usage===Xh?wT:fS,M=[v(g,"vec4",16,0),v(g,"vec4",16,4),v(g,"vec4",16,8),v(g,"vec4",16,12)];c=Av(...M)}this.instanceMatrixNode=c}if(n&&u===null){if(a)u=v0(n,"vec3",Math.max(n.count,1)).element(lm);else{const g=new mf(n.array,3),v=n.usage===Xh?wT:fS;this.bufferColor=g,u=tr(v(g,"vec3",3,0))}this.instanceColorNode=u}const f=c.mul(hh).xyz;if(hh.assign(f),e.hasGeometryAttribute("normal")){const g=GI(nA,c);nA.assign(g)}this.instanceColorNode!==null&&PA("vec3","vInstanceColor").assign(this.instanceColorNode)}update(){this.buffer!==null&&this.isStorageMatrix!==!0&&(this.buffer.clearUpdateRanges(),this.buffer.updateRanges.push(...this.instanceMatrix.updateRanges),this.instanceMatrix.usage!==Xh&&this.instanceMatrix.version!==this.buffer.version&&(this.buffer.version=this.instanceMatrix.version)),this.instanceColor&&this.bufferColor!==null&&this.isStorageColor!==!0&&(this.bufferColor.clearUpdateRanges(),this.bufferColor.updateRanges.push(...this.instanceColor.updateRanges),this.instanceColor.usage!==Xh&&this.instanceColor.version!==this.bufferColor.version&&(this.bufferColor.version=this.instanceColor.version))}}const LV=Vo(kN).setParameterLength(2,3);class FV extends kN{static get type(){return"InstancedMeshNode"}constructor(e){const{count:t,instanceMatrix:n,instanceColor:r}=e;super(t,n,r),this.instancedMesh=e}}const VN=Vo(FV).setParameterLength(1);class UV extends Ua{static get type(){return"BatchNode"}constructor(e){super("void"),this.batchMesh=e,this.batchingIdNode=null}setup(e){this.batchingIdNode===null&&(e.getDrawIndex()===null?this.batchingIdNode=lm:this.batchingIdNode=ON);const n=Ar(([I])=>{const re=Yn(f0(Sh(this.batchMesh._indirectTexture),0).x).toConst(),ne=Yn(I).mod(re).toConst(),J=Yn(I).div(re).toConst();return Sh(this.batchMesh._indirectTexture,sf(ne,J)).x}).setLayout({name:"getIndirectIndex",type:"uint",inputs:[{name:"id",type:"int"}]})(Yn(this.batchingIdNode)),r=this.batchMesh._matricesTexture,a=Yn(f0(Sh(r),0).x).toConst(),o=nn(n).mul(4).toInt().toConst(),c=o.mod(a).toConst(),u=o.div(a).toConst(),f=Av(Sh(r,sf(c,u)),Sh(r,sf(c.add(1),u)),Sh(r,sf(c.add(2),u)),Sh(r,sf(c.add(3),u))),g=this.batchMesh._colorsTexture;if(g!==null){const re=Ar(([ne])=>{const J=Yn(f0(Sh(g),0).x).toConst(),be=ne,Re=be.mod(J).toConst(),ze=be.div(J).toConst();return Sh(g,sf(Re,ze)).rgb}).setLayout({name:"getBatchingColor",type:"vec3",inputs:[{name:"id",type:"int"}]})(n);PA("vec3","vBatchColor").assign(re)}const v=qf(f);hh.assign(f.mul(hh));const M=nA.div(tr(v[0].dot(v[0]),v[1].dot(v[1]),v[2].dot(v[2]))),R=v.mul(M).xyz;nA.assign(R),e.hasGeometryAttribute("tangent")&&Eb.mulAssign(v)}}const HN=Vo(UV).setParameterLength(1),GN=new WeakMap;class zN extends Ua{static get type(){return"SkinningNode"}constructor(e){super("void"),this.skinnedMesh=e,this.updateType=Xo.OBJECT,this.skinIndexNode=Rd("skinIndex","uvec4"),this.skinWeightNode=Rd("skinWeight","vec4"),this.bindMatrixNode=au("bindMatrix","mat4"),this.bindMatrixInverseNode=au("bindMatrixInverse","mat4"),this.boneMatricesNode=kT("skeleton.boneMatrices","mat4",e.skeleton.bones.length),this.positionNode=hh,this.toPositionNode=hh,this.previousBoneMatricesNode=null}getSkinnedPosition(e=this.boneMatricesNode,t=this.positionNode){const{skinIndexNode:n,skinWeightNode:r,bindMatrixNode:a,bindMatrixInverseNode:o}=this,c=e.element(n.x),u=e.element(n.y),f=e.element(n.z),g=e.element(n.w),v=a.mul(t),M=Qh(c.mul(r.x).mul(v),u.mul(r.y).mul(v),f.mul(r.z).mul(v),g.mul(r.w).mul(v));return o.mul(M).xyz}getSkinnedNormal(e=this.boneMatricesNode,t=nA){const{skinIndexNode:n,skinWeightNode:r,bindMatrixNode:a,bindMatrixInverseNode:o}=this,c=e.element(n.x),u=e.element(n.y),f=e.element(n.z),g=e.element(n.w);let v=Qh(r.x.mul(c),r.y.mul(u),r.z.mul(f),r.w.mul(g));return v=o.mul(v).mul(a),v.transformDirection(t).xyz}getPreviousSkinnedPosition(e){const t=e.object;return this.previousBoneMatricesNode===null&&(t.skeleton.previousBoneMatrices=new Float32Array(t.skeleton.boneMatrices),this.previousBoneMatricesNode=kT("skeleton.previousBoneMatrices","mat4",t.skeleton.bones.length)),this.getSkinnedPosition(this.previousBoneMatricesNode,AS)}needsPreviousBoneMatrices(e){const t=e.renderer.getMRT();return t&&t.has("velocity")||IM(e.object).useVelocity===!0}setup(e){this.needsPreviousBoneMatrices(e)&&AS.assign(this.getPreviousSkinnedPosition(e));const t=this.getSkinnedPosition();if(this.toPositionNode&&this.toPositionNode.assign(t),e.hasGeometryAttribute("normal")){const n=this.getSkinnedNormal();nA.assign(n),e.hasGeometryAttribute("tangent")&&Eb.assign(n)}return t}generate(e,t){if(t!=="void")return super.generate(e,t)}update(e){const t=e.object&&e.object.skeleton?e.object.skeleton:this.skinnedMesh.skeleton;GN.get(t)!==e.frameId&&(GN.set(t,e.frameId),this.previousBoneMatricesNode!==null&&(t.previousBoneMatrices===null&&(t.previousBoneMatrices=new Float32Array(t.boneMatrices)),t.previousBoneMatrices.set(t.boneMatrices)),t.update())}}const QN=i=>new zN(i),DV=(i,e=null)=>{const t=new zN(i);return t.positionNode=v0(new mf(i.geometry.getAttribute("position").array,3),"vec3").setPBO(!0).toReadOnly().element(lm).toVar(),t.skinIndexNode=v0(new mf(new Uint32Array(i.geometry.getAttribute("skinIndex").array),4),"uvec4").setPBO(!0).toReadOnly().element(lm).toVar(),t.skinWeightNode=v0(new mf(i.geometry.getAttribute("skinWeight").array,4),"vec4").setPBO(!0).toReadOnly().element(lm).toVar(),t.bindMatrixNode=ja(i.bindMatrix,"mat4"),t.bindMatrixInverseNode=ja(i.bindMatrixInverse,"mat4"),t.boneMatricesNode=_b(i.skeleton.boneMatrices,"mat4",i.skeleton.bones.length),t.toPositionNode=e,qs(t)};class OV extends Ua{static get type(){return"LoopNode"}constructor(e=[]){super("void"),this.params=e}getVarName(e){return String.fromCharCode(105+e)}getProperties(e){const t=e.getNodeProperties(this);if(t.stackNode!==void 0)return t;const n={};for(let c=0,u=this.params.length-1;cNumber(v)?I=">=":I="<"));let ne;if(f)ne=`while ( ${v} )`;else{const J={start:g,end:v},be=J.start,Re=J.end;let ze;const st=()=>I.includes("<")?"+=":"-=";if(re!=null)switch(typeof re){case"function":ze=e.flowStagesNode(t.updateNode,"void").code.replace(/\t|;/g,"");break;case"number":ze=M+" "+st()+" "+e.generateConst(R,re);break;case"string":ze=M+" "+re;break;default:re.isNode?ze=M+" "+st()+" "+re.build(e):(ri("TSL: 'Loop( { update: ... } )' is not a function, string or number."),ze="break /* invalid update */")}else R==="int"||R==="uint"?re=I.includes("<")?"++":"--":re=st()+" 1.",ze=M+" "+re;const et=e.getVar(R,M)+" = "+be,dt=M+" "+I+" "+Re;ne=`for ( ${et}; ${dt}; ${ze} )`}e.addFlowCode((o===0?` +`:"")+e.tab+ne+` { + +`).addFlowTab()}const a=r.build(e,"void");t.returnsNode.build(e,"void"),e.removeFlowTab().addFlowCode(` +`+e.tab+a);for(let o=0,c=this.params.length-1;onew OV(fy(i,"int")).toStack(),kV=()=>h0("continue").toStack(),WN=()=>h0("break").toStack(),YT=new WeakMap,DA=new ts,ZN=Ar(({bufferMap:i,influence:e,stride:t,width:n,depth:r,offset:a})=>{const o=Yn(DN).mul(t).add(a),c=o.div(n),u=o.sub(c.mul(n));return Sh(i,sf(u,c)).depth(r).xyz.mul(e)});function VV(i){const e=i.morphAttributes.position!==void 0,t=i.morphAttributes.normal!==void 0,n=i.morphAttributes.color!==void 0,r=i.morphAttributes.position||i.morphAttributes.normal||i.morphAttributes.color,a=r!==void 0?r.length:0;let o=YT.get(i);if(o===void 0||o.count!==a){let J=function(){re.dispose(),YT.delete(i),i.removeEventListener("dispose",J)};o!==void 0&&o.texture.dispose();const c=i.morphAttributes.position||[],u=i.morphAttributes.normal||[],f=i.morphAttributes.color||[];let g=0;e===!0&&(g=1),t===!0&&(g=2),n===!0&&(g=3);let v=i.attributes.position.count*g,M=1;const R=4096;v>R&&(M=Math.ceil(v/R),v=R);const I=new Float32Array(v*M*4*a),re=new co(I,v,M,a);re.type=pt,re.needsUpdate=!0;const ne=g*4;for(let be=0;be{const M=nn(0).toVar();this.mesh.count>1&&this.mesh.morphTexture!==null&&this.mesh.morphTexture!==void 0?M.assign(Sh(this.mesh.morphTexture,sf(Yn(v).add(1),Yn(lm))).r):M.assign(au("morphTargetInfluences","float").element(v).toVar()),Va(M.notEqual(0),()=>{n===!0&&hh.addAssign(ZN({bufferMap:c,influence:M,stride:u,width:g,depth:v,offset:Yn(0)})),r===!0&&nA.addAssign(ZN({bufferMap:c,influence:M,stride:u,width:g,depth:v,offset:Yn(1)}))})})}update(){const e=this.morphBaseInfluence;this.mesh.geometry.morphTargetsRelative?e.value=1:e.value=1-this.mesh.morphTargetInfluences.reduce((t,n)=>t+n,0)}}const KN=Vo(HV).setParameterLength(1);class Ox extends Ua{static get type(){return"LightingNode"}constructor(){super("vec3"),this.isLightingNode=!0}}class GV extends Ox{static get type(){return"AONode"}constructor(e=null){super(),this.aoNode=e}setup(e){e.context.ambientOcclusion.mulAssign(this.aoNode)}}class zV extends iI{static get type(){return"LightingContextNode"}constructor(e,t=null,n=null,r=null){super(e),this.lightingModel=t,this.backdropNode=n,this.backdropAlphaNode=r,this._value=null}getContext(){const{backdropNode:e,backdropAlphaNode:t}=this,n=tr().toVar("directDiffuse"),r=tr().toVar("directSpecular"),a=tr().toVar("indirectDiffuse"),o=tr().toVar("indirectSpecular"),c={directDiffuse:n,directSpecular:r,indirectDiffuse:a,indirectSpecular:o};return{radiance:tr().toVar("radiance"),irradiance:tr().toVar("irradiance"),iblIrradiance:tr().toVar("iblIrradiance"),ambientOcclusion:nn(1).toVar("ambientOcclusion"),reflectedLight:c,backdrop:e,backdropAlpha:t}}setup(e){return this.value=this._value||(this._value=this.getContext()),this.value.lightingModel=this.lightingModel||e.context.lightingModel,super.setup(e)}}const $N=Vo(zV);class QV extends Ox{static get type(){return"IrradianceNode"}constructor(e){super(),this.node=e}setup(e){e.context.irradiance.addAssign(this.node)}}const kx=new de;class ES extends am{static get type(){return"ViewportTextureNode"}constructor(e=A0,t=null,n=null){let r=null;n===null?(r=new Md,r.minFilter=Fi,n=r):r=n,super(n,e,t),this.generateMipmaps=!1,this.defaultFramebuffer=r,this.isOutputTextureNode=!0,this.updateBeforeType=Xo.FRAME,this._cacheTextures=new WeakMap}getTextureForReference(e=null){let t,n;if(this.referenceNode?(t=this.referenceNode.defaultFramebuffer,n=this.referenceNode._cacheTextures):(t=this.defaultFramebuffer,n=this._cacheTextures),e===null)return t;if(n.has(e)===!1){const r=t.clone();n.set(e,r)}return n.get(e)}updateReference(e){const t=e.renderer.getRenderTarget();return this.value=this.getTextureForReference(t),this.value}updateBefore(e){const t=e.renderer,n=t.getRenderTarget();n===null?t.getDrawingBufferSize(kx):kx.set(n.width,n.height);const r=this.getTextureForReference(n);(r.image.width!==kx.width||r.image.height!==kx.height)&&(r.image.width=kx.width,r.image.height=kx.height,r.needsUpdate=!0);const a=r.generateMipmaps;r.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(r),r.generateMipmaps=a}clone(){const e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}}const WV=Vo(ES).setParameterLength(0,3),qT=Vo(ES,null,null,{generateMipmaps:!0}).setParameterLength(0,3);let MS=null;class ZV extends ES{static get type(){return"ViewportDepthTextureNode"}constructor(e=A0,t=null){MS===null&&(MS=new cc),super(e,t,MS)}getTextureForReference(){return MS}}const JT=Vo(ZV).setParameterLength(0,2);class rA extends Ua{static get type(){return"ViewportDepthNode"}constructor(e,t=null){super("float"),this.scope=e,this.valueNode=t,this.isViewportDepthNode=!0}generate(e){const{scope:t}=this;return t===rA.DEPTH_BASE?e.getFragDepth():super.generate(e)}setup({camera:e}){const{scope:t}=this,n=this.valueNode;let r=null;if(t===rA.DEPTH_BASE)n!==null&&(r=XN().assign(n));else if(t===rA.DEPTH)e.isPerspectiveCamera?r=eC(Rh.z,p0,g0):r=Vx(Rh.z,p0,g0);else if(t===rA.LINEAR_DEPTH)if(n!==null)if(e.isPerspectiveCamera){const a=tC(n,p0,g0);r=Vx(a,p0,g0)}else r=n;else r=Vx(Rh.z,p0,g0);return r}}rA.DEPTH_BASE="depthBase",rA.DEPTH="depth",rA.LINEAR_DEPTH="linearDepth";const Vx=(i,e,t)=>i.add(e).div(e.sub(t)),KV=(i,e,t)=>e.sub(t).mul(i).sub(e),eC=(i,e,t)=>e.add(i).mul(t).div(t.sub(e).mul(i)),tC=(i,e,t)=>e.mul(t).div(t.sub(e).mul(i).sub(t)),nC=(i,e,t)=>{e=e.max(1e-6).toVar();const n=nm(i.negate().div(e)),r=nm(t.div(e));return n.div(r)},$V=(i,e,t)=>{const n=i.mul(iS(t.div(e)));return nn(Math.E).pow(n).mul(e).negate()},XN=Vo(rA,rA.DEPTH_BASE),rC=Ws(rA,rA.DEPTH),Hx=Vo(rA,rA.LINEAR_DEPTH).setParameterLength(0,1),XV=Hx(JT());rC.assign=i=>XN(i);class Tp extends Ua{static get type(){return"ClippingNode"}constructor(e=Tp.DEFAULT){super(),this.scope=e}setup(e){super.setup(e);const t=e.clippingContext,{intersectionPlanes:n,unionPlanes:r}=t;return this.hardwareClipping=e.material.hardwareClipping,this.scope===Tp.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n,r):this.scope===Tp.HARDWARE?this.setupHardwareClipping(r,e):this.setupDefault(n,r)}setupAlphaToCoverage(e,t){return Ar(()=>{const n=nn().toVar("distanceToPlane"),r=nn().toVar("distanceToGradient"),a=nn(1).toVar("clipOpacity"),o=t.length;if(this.hardwareClipping===!1&&o>0){const u=gd(t).setGroup(Ja);Wc(o,({i:f})=>{const g=u.element(f);n.assign(Rh.dot(g.xyz).negate().add(g.w)),r.assign(n.fwidth().div(2)),a.mulAssign(LA(r.negate(),r,n))})}const c=e.length;if(c>0){const u=gd(e).setGroup(Ja),f=nn(1).toVar("intersectionClipOpacity");Wc(c,({i:g})=>{const v=u.element(g);n.assign(Rh.dot(v.xyz).negate().add(v.w)),r.assign(n.fwidth().div(2)),f.mulAssign(LA(r.negate(),r,n).oneMinus())}),a.mulAssign(f.oneMinus())}Yc.a.mulAssign(a),Yc.a.equal(0).discard()})()}setupDefault(e,t){return Ar(()=>{const n=t.length;if(this.hardwareClipping===!1&&n>0){const a=gd(t).setGroup(Ja);Wc(n,({i:o})=>{const c=a.element(o);Rh.dot(c.xyz).greaterThan(c.w).discard()})}const r=e.length;if(r>0){const a=gd(e).setGroup(Ja),o=bp(!0).toVar("clipped");Wc(r,({i:c})=>{const u=a.element(c);o.assign(Rh.dot(u.xyz).greaterThan(u.w).and(o))}),o.discard()}})()}setupHardwareClipping(e,t){const n=e.length;return t.enableHardwareClipping(n),Ar(()=>{const r=gd(e).setGroup(Ja),a=d0(t.getClipDistance());Wc(n,({i:o})=>{const c=r.element(o),u=Rh.dot(c.xyz).sub(c.w).negate();a.element(o).assign(u)})})()}}Tp.ALPHA_TO_COVERAGE="alphaToCoverage",Tp.DEFAULT="default",Tp.HARDWARE="hardware";const jV=()=>new Tp,YV=()=>new Tp(Tp.ALPHA_TO_COVERAGE),qV=()=>new Tp(Tp.HARDWARE),JV=.05,jN=Ar(([i])=>fg(Ho(1e4,Bd(Ho(17,i.x).add(Ho(.1,i.y)))).mul(Qh(.1,_u(Bd(Ho(13,i.y).add(i.x))))))),YN=Ar(([i])=>jN(rs(jN(i.xy),i.z))),eH=Ar(([i])=>{const e=uh(im(cT(i.xyz)),im(uT(i.xyz))),t=nn(1).div(nn(JV).mul(e)).toVar("pixScale"),n=rs(Px(rm(nm(t))),Px(sS(nm(t)))),r=rs(YN(rm(n.x.mul(i.xyz))),YN(rm(n.y.mul(i.xyz)))),a=fg(nm(t)),o=Qh(Ho(a.oneMinus(),r.x),Ho(a,r.y)),c=tA(a,a.oneMinus()),u=tr(o.mul(o).div(Ho(2,c).mul(Yl(1,c))),o.sub(Ho(.5,c)).div(Yl(1,c)),Yl(1,Yl(1,o).mul(Yl(1,o)).div(Ho(2,c).mul(Yl(1,c))))),f=o.lessThan(c.oneMinus()).select(o.lessThan(c).select(u.x,u.y),u.z);return Ag(f,1e-6,1)}).setLayout({name:"getAlphaHashThreshold",type:"float",inputs:[{name:"position",type:"vec3"}]});class tH extends II{static get type(){return"VertexColorNode"}constructor(e){super(null,"vec4"),this.isVertexColorNode=!0,this.index=e}getAttributeName(){const e=this.index;return"color"+(e>0?e:"")}generate(e){const t=this.getAttributeName(e),n=e.hasGeometryAttribute(t);let r;return n===!0?r=super.generate(e):r=e.generateConst(this.nodeType,new ts(1,1,1,1)),r}serialize(e){super.serialize(e),e.index=this.index}deserialize(e){super.deserialize(e),this.index=e.index}}const qN=(i=0)=>new tH(i),JN=Ar(([i,e])=>tA(1,i.oneMinus().div(e)).oneMinus()).setLayout({name:"blendBurn",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),eL=Ar(([i,e])=>tA(i.div(e.oneMinus()),1)).setLayout({name:"blendDodge",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),tL=Ar(([i,e])=>i.oneMinus().mul(e.oneMinus()).oneMinus()).setLayout({name:"blendScreen",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),nL=Ar(([i,e])=>Ll(i.mul(2).mul(e),i.oneMinus().mul(2).mul(e.oneMinus()).oneMinus(),oS(.5,i))).setLayout({name:"blendOverlay",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),nH=Ar(([i,e])=>{const t=e.a.add(i.a.mul(e.a.oneMinus()));return Sa(e.rgb.mul(e.a).add(i.rgb.mul(i.a).mul(e.a.oneMinus())).div(t),t)}).setLayout({name:"blendColor",type:"vec4",inputs:[{name:"base",type:"vec4"},{name:"blend",type:"vec4"}]}),rL=Ar(([i])=>Sa(i.rgb.mul(i.a),i.a),{color:"vec4",return:"vec4"}),rH=Ar(([i])=>(Va(i.a.equal(0),()=>Sa(0)),Sa(i.rgb.div(i.a),i.a)),{color:"vec4",return:"vec4"}),iH=(...i)=>(Qr('TSL: "burn" has been renamed. Use "blendBurn" instead.'),JN(i)),sH=(...i)=>(Qr('TSL: "dodge" has been renamed. Use "blendDodge" instead.'),eL(i)),aH=(...i)=>(Qr('TSL: "screen" has been renamed. Use "blendScreen" instead.'),tL(i)),oH=(...i)=>(Qr('TSL: "overlay" has been renamed. Use "blendOverlay" instead.'),nL(i));class fh extends Nc{static get type(){return"NodeMaterial"}get type(){return this.constructor.type}set type(e){}constructor(){super(),this.isNodeMaterial=!0,this.fog=!0,this.lights=!1,this.hardwareClipping=!1,this.lightsNode=null,this.envNode=null,this.aoNode=null,this.colorNode=null,this.normalNode=null,this.opacityNode=null,this.backdropNode=null,this.backdropAlphaNode=null,this.alphaTestNode=null,this.maskNode=null,this.positionNode=null,this.geometryNode=null,this.depthNode=null,this.receivedShadowPositionNode=null,this.castShadowPositionNode=null,this.receivedShadowNode=null,this.castShadowNode=null,this.outputNode=null,this.mrtNode=null,this.fragmentNode=null,this.vertexNode=null,this.contextNode=null,Object.defineProperty(this,"shadowPositionNode",{get:()=>this.receivedShadowPositionNode,set:e=>{Qr('NodeMaterial: ".shadowPositionNode" was renamed to ".receivedShadowPositionNode".'),this.receivedShadowPositionNode=e}})}_getNodeChildren(){const e=[];for(const t of Object.getOwnPropertyNames(this)){if(t.startsWith("_")===!0)continue;const n=this[t];n&&n.isNode===!0&&e.push({property:t,childNode:n})}return e}customProgramCacheKey(){const e=[];for(const{property:t,childNode:n}of this._getNodeChildren())e.push(Mx(t.slice(0,-4)),n.getCacheKey());return this.type+cy(e)}build(e){this.setup(e)}setupObserver(e){return new Pk(e)}setup(e){e.context.setupNormal=()=>Ix(this.setupNormal(e),"NORMAL","vec3"),e.context.setupPositionView=()=>this.setupPositionView(e),e.context.setupModelViewProjection=()=>this.setupModelViewProjection(e);const t=e.renderer,n=t.getRenderTarget();t.contextNode.isContextNode===!0?e.context=Dc(Dc({},e.context),t.contextNode.getFlowContextData()):ri('NodeMaterial: "renderer.contextNode" must be an instance of `context()`.'),this.contextNode!==null&&(this.contextNode.isContextNode===!0?e.context=Dc(Dc({},e.context),this.contextNode.getFlowContextData()):ri('NodeMaterial: "material.contextNode" must be an instance of `context()`.')),e.addStack();const r=Ix(this.setupVertex(e),"VERTEX"),a=this.vertexNode||r;e.stack.outputNode=a,this.setupHardwareClipping(e),this.geometryNode!==null&&(e.stack.outputNode=e.stack.outputNode.bypass(this.geometryNode)),e.addFlow("vertex",e.removeStack()),e.addStack();let o;const c=this.setupClipping(e);if((this.depthWrite===!0||this.depthTest===!0)&&(n!==null?n.depthBuffer===!0&&this.setupDepth(e):t.depth===!0&&this.setupDepth(e)),this.fragmentNode===null){this.setupDiffuseColor(e),this.setupVariants(e);const u=this.setupLighting(e);c!==null&&e.stack.addToStack(c);const f=Sa(u,Yc.a).max(0);o=this.setupOutput(e,f),Rx.assign(o);const g=this.outputNode!==null;if(g&&(o=this.outputNode),e.context.getOutput&&(o=e.context.getOutput(o,e)),n!==null){const v=t.getMRT(),M=this.mrtNode;v!==null?(g&&Rx.assign(o),o=v,M!==null&&(o=v.merge(M))):M!==null&&(o=M)}}else{let u=this.fragmentNode;u.isOutputStructNode!==!0&&(u=Sa(u)),o=this.setupOutput(e,u)}e.stack.outputNode=o,e.addFlow("fragment",e.removeStack()),e.observer=this.setupObserver(e)}setupClipping(e){if(e.clippingContext===null)return null;const{unionPlanes:t,intersectionPlanes:n}=e.clippingContext;let r=null;if(t.length>0||n.length>0){const a=e.renderer.currentSamples;this.alphaToCoverage&&a>1?r=YV():e.stack.addToStack(jV())}return r}setupHardwareClipping(e){if(this.hardwareClipping=!1,e.clippingContext===null)return;const t=e.clippingContext.unionPlanes.length;t>0&&t<=8&&e.isAvailable("clipDistance")&&(e.stack.addToStack(qV()),this.hardwareClipping=!0)}setupDepth(e){const{renderer:t,camera:n}=e;let r=this.depthNode;if(r===null){const a=t.getMRT();a&&a.has("depth")?r=a.get("depth"):t.logarithmicDepthBuffer===!0&&(n.isPerspectiveCamera?r=nC(Rh.z,p0,g0):r=Vx(Rh.z,p0,g0))}r!==null&&rC.assign(r).toStack()}setupPositionView(){return om.mul(hh).xyz}setupModelViewProjection(){return Pd.mul(Rh)}setupVertex(e){return e.addStack(),this.setupPosition(e),e.context.vertex=e.removeStack(),UN}setupPosition(e){const{object:t,geometry:n}=e;if((n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color)&&KN(t).toStack(),t.isSkinnedMesh===!0&&QN(t).toStack(),this.displacementMap){const r=m0("displacementMap","texture"),a=m0("displacementScale","float"),o=m0("displacementBias","float");hh.addAssign(nA.normalize().mul(r.x.mul(a).add(o)))}return t.isBatchedMesh&&HN(t).toStack(),t.isInstancedMesh&&t.instanceMatrix&&t.instanceMatrix.isInstancedBufferAttribute===!0&&VN(t).toStack(),this.positionNode!==null&&hh.assign(Ix(this.positionNode,"POSITION","vec3")),hh}setupDiffuseColor(e){const{object:t,geometry:n}=e;this.maskNode!==null&&bp(this.maskNode).not().discard();let r=this.colorNode?Sa(this.colorNode):_S;this.vertexColors===!0&&n.hasAttribute("color")&&(r=r.mul(qN())),t.instanceColor&&(r=PA("vec3","vInstanceColor").mul(r)),t.isBatchedMesh&&t._colorsTexture&&(r=PA("vec3","vBatchColor").mul(r)),Yc.assign(r);const a=this.opacityNode?nn(this.opacityNode):bS;Yc.a.assign(Yc.a.mul(a));let o=null;(this.alphaTestNode!==null||this.alphaTest>0)&&(o=this.alphaTestNode!==null?nn(this.alphaTestNode):uN,this.alphaToCoverage===!0?(Yc.a=LA(o,o.add(fT(Yc.a)),Yc.a),Yc.a.lessThanEqual(0).discard()):Yc.a.lessThanEqual(o).discard()),this.alphaHash===!0&&Yc.a.lessThan(eH(hh)).discard(),e.isOpaque()&&Yc.a.assign(1)}setupVariants(){}setupOutgoingLight(){return this.lights===!0?tr(0):Yc.rgb}setupNormal(){return this.normalNode?tr(this.normalNode):mN}setupEnvironment(){let e=null;return this.envNode?e=this.envNode:this.envMap&&(e=this.envMap.isCubeTexture?m0("envMap","cubeTexture"):m0("envMap","texture")),e}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new QV(jT)),t}setupLights(e){const t=[],n=this.setupEnvironment(e);n&&n.isLightingNode&&t.push(n);const r=this.setupLightMap(e);r&&r.isLightingNode&&t.push(r);let a=this.aoNode;a===null&&e.material.aoMap&&(a=FN),e.context.getAO&&(a=e.context.getAO(a,e)),a&&t.push(new GV(a));let o=this.lightsNode||e.lightsNode;return t.length>0&&(o=e.renderer.lighting.createNode([...o.getLights(),...t])),o}setupLightingModel(){}setupLighting(e){const{material:t}=e,{backdropNode:n,backdropAlphaNode:r,emissiveNode:a}=this,c=this.lights===!0||this.lightsNode!==null?this.setupLights(e):null;let u=this.setupOutgoingLight(e);if(c&&c.getScope().hasLights){const f=this.setupLightingModel(e)||null;u=$N(c,f,n,r)}else n!==null&&(u=tr(r!==null?Ll(u,n,r):n));return(a&&a.isNode===!0||t.emissive&&t.emissive.isColor===!0)&&(XM.assign(tr(a||fN)),u=u.add(XM)),u}setupFog(e,t){const n=e.fogNode;return n&&(Rx.assign(t),t=Sa(n.toVar())),t}setupPremultipliedAlpha(e,t){return rL(t)}setupOutput(e,t){return this.fog===!0&&(t=this.setupFog(e,t)),this.premultipliedAlpha===!0&&(t=this.setupPremultipliedAlpha(e,t)),t}setDefaultValues(e){for(const n in e){const r=e[n];this[n]===void 0&&(this[n]=r,r&&r.clone&&(this[n]=r.clone()))}const t=Object.getOwnPropertyDescriptors(e.constructor.prototype);for(const n in t)Object.getOwnPropertyDescriptor(this.constructor.prototype,n)===void 0&&t[n].get!==void 0&&Object.defineProperty(this.constructor.prototype,n,t[n])}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{},nodes:{}});const n=Nc.prototype.toJSON.call(this,e);n.inputNodes={};for(const{property:a,childNode:o}of this._getNodeChildren())n.inputNodes[a]=o.toJSON(e).uuid;function r(a){const o=[];for(const c in a){const u=a[c];delete u.metadata,o.push(u)}return o}if(t){const a=r(e.textures),o=r(e.images),c=r(e.nodes);a.length>0&&(n.textures=a),o.length>0&&(n.images=o),c.length>0&&(n.nodes=c)}return n}copy(e){return this.lightsNode=e.lightsNode,this.envNode=e.envNode,this.aoNode=e.aoNode,this.colorNode=e.colorNode,this.normalNode=e.normalNode,this.opacityNode=e.opacityNode,this.backdropNode=e.backdropNode,this.backdropAlphaNode=e.backdropAlphaNode,this.alphaTestNode=e.alphaTestNode,this.maskNode=e.maskNode,this.positionNode=e.positionNode,this.geometryNode=e.geometryNode,this.depthNode=e.depthNode,this.receivedShadowPositionNode=e.receivedShadowPositionNode,this.castShadowPositionNode=e.castShadowPositionNode,this.receivedShadowNode=e.receivedShadowNode,this.castShadowNode=e.castShadowNode,this.outputNode=e.outputNode,this.mrtNode=e.mrtNode,this.fragmentNode=e.fragmentNode,this.vertexNode=e.vertexNode,this.contextNode=e.contextNode,super.copy(e)}}const lH=new zc;class cH extends fh{static get type(){return"LineBasicNodeMaterial"}constructor(e){super(),this.isLineBasicNodeMaterial=!0,this.setDefaultValues(lH),this.setValues(e)}}const uH=new zy;class hH extends fh{static get type(){return"LineDashedNodeMaterial"}constructor(e){super(),this.isLineDashedNodeMaterial=!0,this.setDefaultValues(uH),this.dashOffset=0,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setupVariants(){const e=this.offsetNode?nn(this.offsetNode):XT,t=this.dashScaleNode?nn(this.dashScaleNode):ZT,n=this.dashSizeNode?nn(this.dashSizeNode):KT,r=this.gapSizeNode?nn(this.gapSizeNode):$T;my.assign(n),mb.assign(r);const a=sm(Rd("lineDistance").mul(t));(e?a.add(e):a).mod(my.add(mb)).greaterThan(my).discard()}}let TS=null;class fH extends ES{static get type(){return"ViewportSharedTextureNode"}constructor(e=A0,t=null){TS===null&&(TS=new Md),super(e,t,TS)}getTextureForReference(){return TS}updateReference(){return this}}const iL=Vo(fH).setParameterLength(0,2),dH=new zy;class kX extends null{static get type(){return"Line2NodeMaterial"}constructor(e={}){super(),this.isLine2NodeMaterial=!0,this.setDefaultValues(dH),this.useColor=e.vertexColors,this.dashOffset=0,this.lineColorNode=null,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.blending=NoBlending,this._useDash=e.dashed,this._useAlphaToCoverage=!0,this._useWorldUnits=!1,this.setValues(e)}setup(e){const{renderer:t}=e,n=this._useAlphaToCoverage,r=this.useColor,a=this._useDash,o=this._useWorldUnits,c=Ar(({start:f,end:g})=>{const v=Pd.element(2).element(2),I=Pd.element(3).element(2).mul(-.5).div(v).sub(f.z).div(g.z.sub(f.z));return Sa(Ll(f.xyz,g.xyz,I),g.w)}).setLayout({name:"trimSegment",type:"vec4",inputs:[{name:"start",type:"vec4"},{name:"end",type:"vec4"}]});this.vertexNode=Ar(()=>{const f=Rd("instanceStart"),g=Rd("instanceEnd"),v=Sa(om.mul(Sa(f,1))).toVar("start"),M=Sa(om.mul(Sa(g,1))).toVar("end");if(a){const st=this.dashScaleNode?nn(this.dashScaleNode):ZT,et=this.offsetNode?nn(this.offsetNode):XT,dt=Rd("instanceDistanceStart"),Nt=Rd("instanceDistanceEnd");let nt=ed.y.lessThan(.5).select(st.mul(dt),st.mul(Nt));nt=nt.add(et),PA("float","lineDistance").assign(nt)}o&&(PA("vec3","worldStart").assign(v.xyz),PA("vec3","worldEnd").assign(M.xyz));const R=Lx.z.div(Lx.w),I=Pd.element(2).element(3).equal(-1);Va(I,()=>{Va(v.z.lessThan(0).and(M.z.greaterThan(0)),()=>{M.assign(c({start:v,end:M}))}).ElseIf(M.z.lessThan(0).and(v.z.greaterThanEqual(0)),()=>{v.assign(c({start:M,end:v}))})});const re=Pd.mul(v),ne=Pd.mul(M),J=re.xyz.div(re.w),be=ne.xyz.div(ne.w),Re=be.xy.sub(J.xy).toVar();Re.x.assign(Re.x.mul(R)),Re.assign(Re.normalize());const ze=Sa().toVar();if(o){const st=M.xyz.sub(v.xyz).normalize(),et=Ll(v.xyz,M.xyz,.5).normalize(),dt=st.cross(et).normalize(),Nt=st.cross(dt),nt=PA("vec4","worldPos");nt.assign(ed.y.lessThan(.5).select(v,M));const mt=SS.mul(.5);nt.addAssign(Sa(ed.x.lessThan(0).select(dt.mul(mt),dt.mul(mt).negate()),0)),a||(nt.addAssign(Sa(ed.y.lessThan(.5).select(st.mul(mt).negate(),st.mul(mt)),0)),nt.addAssign(Sa(Nt.mul(mt),0)),Va(ed.y.greaterThan(1).or(ed.y.lessThan(0)),()=>{nt.subAssign(Sa(Nt.mul(2).mul(mt),0))})),ze.assign(Pd.mul(nt));const En=tr().toVar();En.assign(ed.y.lessThan(.5).select(J,be)),ze.z.assign(En.z.mul(ze.w))}else{const st=rs(Re.y,Re.x.negate()).toVar("offset");Re.x.assign(Re.x.div(R)),st.x.assign(st.x.div(R)),st.assign(ed.x.lessThan(0).select(st.negate(),st)),Va(ed.y.lessThan(0),()=>{st.assign(st.sub(Re))}).ElseIf(ed.y.greaterThan(1),()=>{st.assign(st.add(Re))}),st.assign(st.mul(SS)),st.assign(st.div(Lx.w.div(BT))),ze.assign(ed.y.lessThan(.5).select(re,ne)),st.assign(st.mul(ze.w)),ze.assign(ze.add(Sa(st,0,0)))}return ze})();const u=Ar(({p1:f,p2:g,p3:v,p4:M})=>{const R=f.sub(v),I=M.sub(v),re=g.sub(f),ne=R.dot(I),J=I.dot(re),be=R.dot(re),Re=I.dot(I),st=re.dot(re).mul(Re).sub(J.mul(J)),dt=ne.mul(J).sub(be.mul(Re)).div(st).clamp(),Nt=ne.add(J.mul(dt)).div(Re).clamp();return rs(dt,Nt)});if(this.colorNode=Ar(()=>{const f=qc();if(a){const M=this.dashSizeNode?nn(this.dashSizeNode):KT,R=this.gapSizeNode?nn(this.gapSizeNode):$T;my.assign(M),mb.assign(R);const I=PA("float","lineDistance");f.y.lessThan(-1).or(f.y.greaterThan(1)).discard(),I.mod(my.add(mb)).greaterThan(my).discard()}const g=nn(1).toVar("alpha");if(o){const M=PA("vec3","worldStart"),R=PA("vec3","worldEnd"),I=PA("vec4","worldPos").xyz.normalize().mul(1e5),re=R.sub(M),ne=u({p1:M,p2:R,p3:tr(0,0,0),p4:I}),J=M.add(re.mul(ne.x)),be=I.mul(ne.y),st=J.sub(be).length().div(SS);if(!a)if(n&&t.currentSamples>0){const et=st.fwidth();g.assign(LA(et.negate().add(.5),et.add(.5),st).oneMinus())}else st.greaterThan(.5).discard()}else if(n&&t.currentSamples>0){const M=f.x,R=f.y.greaterThan(0).select(f.y.sub(1),f.y.add(1)),I=M.mul(M).add(R.mul(R)),re=nn(I.fwidth()).toVar("dlen");Va(f.y.abs().greaterThan(1),()=>{g.assign(LA(re.oneMinus(),re.add(1),I).oneMinus())})}else Va(f.y.abs().greaterThan(1),()=>{const M=f.x,R=f.y.greaterThan(0).select(f.y.sub(1),f.y.add(1));M.mul(M).add(R.mul(R)).greaterThan(1).discard()});let v;if(this.lineColorNode)v=this.lineColorNode;else if(r){const M=Rd("instanceColorStart"),R=Rd("instanceColorEnd");v=ed.y.lessThan(.5).select(M,R).mul(_S)}else v=_S;return Sa(v,g)})(),this.transparent){const f=this.opacityNode?nn(this.opacityNode):bS;this.outputNode=Sa(this.colorNode.rgb.mul(f).add(iL().rgb.mul(f.oneMinus())),this.colorNode.a)}super.setup(e)}get worldUnits(){return this._useWorldUnits}set worldUnits(e){this._useWorldUnits!==e&&(this._useWorldUnits=e,this.needsUpdate=!0)}get dashed(){return this._useDash}set dashed(e){this._useDash!==e&&(this._useDash=e,this.needsUpdate=!0)}get alphaToCoverage(){return this._useAlphaToCoverage}set alphaToCoverage(e){this._useAlphaToCoverage!==e&&(this._useAlphaToCoverage=e,this.needsUpdate=!0)}}const AH=new pw;class pH extends fh{static get type(){return"MeshNormalNodeMaterial"}constructor(e){super(),this.isMeshNormalNodeMaterial=!0,this.setDefaultValues(AH),this.setValues(e)}setupDiffuseColor(){const e=this.opacityNode?nn(this.opacityNode):bS;Yc.assign(uS(Sa(lN(rc),e),Ql))}}const iC=Ar(([i=NT])=>{const e=i.z.atan(i.x).mul(1/(Math.PI*2)).add(.5),t=i.y.clamp(-1,1).asin().mul(1/Math.PI).add(.5);return rs(e,t)});class sL extends Sm{constructor(e=1,t={}){super(e,t),this.isCubeRenderTarget=!0}fromEquirectangularTexture(e,t){const n=t.minFilter,r=t.generateMipmaps;t.generateMipmaps=!0,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;const a=new yd(5,5,5),o=iC(NT),c=new fh;c.colorNode=_c(t,o,0),c.side=fe,c.blending=Me;const u=new Mc(a,c),f=new Op;f.add(u),t.minFilter===Fi&&(t.minFilter=Pr);const g=new bg(1,10,this),v=e.getMRT();return e.setMRT(null),g.update(e,f),e.setMRT(v),t.minFilter=n,t.currentGenerateMipmaps=r,u.geometry.dispose(),u.material.dispose(),this}}const Tb=new WeakMap;class gH extends lh{static get type(){return"CubeMapNode"}constructor(e){super("vec3"),this.envNode=e,this._cubeTexture=null,this._cubeTextureNode=Id(null);const t=new pf;t.isRenderTargetTexture=!0,this._defaultTexture=t,this.updateBeforeType=Xo.RENDER}updateBefore(e){const{renderer:t,material:n}=e,r=this.envNode;if(r.isTextureNode||r.isMaterialReferenceNode){const a=r.isTextureNode?r.value:n[r.property];if(a&&a.isTexture){const o=a.mapping;if(o===it||o===ht){if(Tb.has(a)){const c=Tb.get(a);oL(c,a.mapping),this._cubeTexture=c}else{const c=a.image;if(mH(c)){const u=new sL(c.height);u.fromEquirectangularTexture(t,a),oL(u.texture,a.mapping),this._cubeTexture=u.texture,Tb.set(a,u.texture),a.addEventListener("dispose",aL)}else this._cubeTexture=this._defaultTexture}this._cubeTextureNode.value=this._cubeTexture}else this._cubeTextureNode=this.envNode}}}setup(e){return this.updateBefore(e),this._cubeTextureNode}}function mH(i){return i==null?!1:i.height>0}function aL(i){const e=i.target;e.removeEventListener("dispose",aL);const t=Tb.get(e);t!==void 0&&(Tb.delete(e),t.dispose())}function oL(i,e){e===it?i.mapping=at:e===ht&&(i.mapping=wt)}const lL=Vo(gH).setParameterLength(1);class sC extends Ox{static get type(){return"BasicEnvironmentNode"}constructor(e=null){super(),this.envNode=e}setup(e){e.context.environment=lL(this.envNode)}}class vH extends Ox{static get type(){return"BasicLightMapNode"}constructor(e=null){super(),this.lightMapNode=e}setup(e){const t=nn(1/Math.PI);e.context.irradianceLightMap=this.lightMapNode.mul(t)}}class CS{start(e){e.lightsNode.setupLights(e,e.lightsNode.getLightNodes(e)),this.indirect(e)}finish(){}direct(){}directRectArea(){}indirect(){}ambientOcclusion(){}}class cL extends CS{constructor(){super()}indirect({context:e}){const t=e.ambientOcclusion,n=e.reflectedLight,r=e.irradianceLightMap;n.indirectDiffuse.assign(Sa(0)),r?n.indirectDiffuse.addAssign(r):n.indirectDiffuse.addAssign(Sa(1,1,1,0)),n.indirectDiffuse.mulAssign(t),n.indirectDiffuse.mulAssign(Yc.rgb)}finish(e){const{material:t,context:n}=e,r=n.outgoingLight,a=e.context.environment;if(a)switch(t.combine){case dn:r.rgb.assign(Ll(r.rgb,r.rgb.mul(a.rgb),Mb.mul(wS)));break;case fn:r.rgb.assign(Ll(r.rgb,a.rgb,Mb.mul(wS)));break;case ut:r.rgb.addAssign(a.rgb.mul(Mb.mul(wS)));break;default:Qr("BasicLightingModel: Unsupported .combine value:",t.combine);break}}}const yH=new Gc;class xH extends fh{static get type(){return"MeshBasicNodeMaterial"}constructor(e){super(),this.isMeshBasicNodeMaterial=!0,this.lights=!0,this.setDefaultValues(yH),this.setValues(e)}setupNormal(){return Fx(Ux)}setupEnvironment(e){const t=super.setupEnvironment(e);return t?new sC(t):null}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new vH(jT)),t}setupOutgoingLight(){return Yc.rgb}setupLightingModel(){return new cL}}const Gx=Ar(({f0:i,f90:e,dotVH:t})=>{const n=t.mul(-5.55473).sub(6.98316).mul(t).exp2();return i.mul(n.oneMinus()).add(e.mul(n))}),by=Ar(i=>i.diffuseColor.mul(1/Math.PI)),_H=()=>nn(.25),bH=Ar(({dotNH:i})=>eS.mul(nn(.5)).add(1).mul(nn(1/Math.PI)).mul(i.pow(eS))),wH=Ar(({lightDirection:i})=>{const e=i.add(su).normalize(),t=rc.dot(e).clamp(),n=su.dot(e).clamp(),r=Gx({f0:mv,f90:1,dotVH:n}),a=_H(),o=bH({dotNH:t});return r.mul(a).mul(o)});class uL extends cL{constructor(e=!0){super(),this.specular=e}direct({lightDirection:e,lightColor:t,reflectedLight:n}){const a=rc.dot(e).clamp().mul(t);n.directDiffuse.addAssign(a.mul(by({diffuseColor:Yc.rgb}))),this.specular===!0&&n.directSpecular.addAssign(a.mul(wH({lightDirection:e})).mul(Mb))}indirect(e){const{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(by({diffuseColor:Yc}))),r.indirectDiffuse.mulAssign(t)}}const SH=new l_;class EH extends fh{static get type(){return"MeshLambertNodeMaterial"}constructor(e){super(),this.isMeshLambertNodeMaterial=!0,this.lights=!0,this.setDefaultValues(SH),this.setValues(e)}setupEnvironment(e){const t=super.setupEnvironment(e);return t?new sC(t):null}setupLightingModel(){return new uL(!1)}}const MH=new dw;class TH extends fh{static get type(){return"MeshPhongNodeMaterial"}constructor(e){super(),this.isMeshPhongNodeMaterial=!0,this.lights=!0,this.shininessNode=null,this.specularNode=null,this.setDefaultValues(MH),this.setValues(e)}setupEnvironment(e){const t=super.setupEnvironment(e);return t?new sC(t):null}setupLightingModel(){return new uL}setupVariants(){const e=(this.shininessNode?nn(this.shininessNode):hN).max(1e-4);eS.assign(e);const t=this.specularNode||dN;mv.assign(t)}copy(e){return this.shininessNode=e.shininessNode,this.specularNode=e.specularNode,super.copy(e)}}const hL=Ar(i=>{if(i.geometry.hasAttribute("normal")===!1)return nn(0);const e=Ux.dFdx().abs().max(Ux.dFdy().abs());return e.x.max(e.y).max(e.z)}),aC=Ar(i=>{const{roughness:e}=i,t=hL();let n=e.max(.0525);return n=n.add(t),n=n.min(1),n}),fL=Ar(({alpha:i,dotNL:e,dotNV:t})=>{const n=i.pow2(),r=e.mul(n.add(n.oneMinus().mul(t.pow2())).sqrt()),a=t.mul(n.add(n.oneMinus().mul(e.pow2())).sqrt());return NA(.5,r.add(a).max(rT))}).setLayout({name:"V_GGX_SmithCorrelated",type:"float",inputs:[{name:"alpha",type:"float"},{name:"dotNL",type:"float"},{name:"dotNV",type:"float"}]}),CH=Ar(({alphaT:i,alphaB:e,dotTV:t,dotBV:n,dotTL:r,dotBL:a,dotNV:o,dotNL:c})=>{const u=c.mul(tr(i.mul(t),e.mul(n),o).length()),f=o.mul(tr(i.mul(r),e.mul(a),c).length());return NA(.5,u.add(f))}).setLayout({name:"V_GGX_SmithCorrelated_Anisotropic",type:"float",inputs:[{name:"alphaT",type:"float",qualifier:"in"},{name:"alphaB",type:"float",qualifier:"in"},{name:"dotTV",type:"float",qualifier:"in"},{name:"dotBV",type:"float",qualifier:"in"},{name:"dotTL",type:"float",qualifier:"in"},{name:"dotBL",type:"float",qualifier:"in"},{name:"dotNV",type:"float",qualifier:"in"},{name:"dotNL",type:"float",qualifier:"in"}]}),dL=Ar(({alpha:i,dotNH:e})=>{const t=i.pow2(),n=e.pow2().mul(t.oneMinus()).oneMinus();return t.div(n.pow2()).mul(1/Math.PI)}).setLayout({name:"D_GGX",type:"float",inputs:[{name:"alpha",type:"float"},{name:"dotNH",type:"float"}]}),BH=nn(1/Math.PI),RH=Ar(({alphaT:i,alphaB:e,dotNH:t,dotTH:n,dotBH:r})=>{const a=i.mul(e),o=tr(e.mul(n),i.mul(r),a.mul(t)),c=o.dot(o),u=a.div(c);return BH.mul(a.mul(u.pow2()))}).setLayout({name:"D_GGX_Anisotropic",type:"float",inputs:[{name:"alphaT",type:"float",qualifier:"in"},{name:"alphaB",type:"float",qualifier:"in"},{name:"dotNH",type:"float",qualifier:"in"},{name:"dotTH",type:"float",qualifier:"in"},{name:"dotBH",type:"float",qualifier:"in"}]}),oC=Ar(({lightDirection:i,f0:e,f90:t,roughness:n,f:r,normalView:a=rc,USE_IRIDESCENCE:o,USE_ANISOTROPY:c})=>{const u=n.pow2(),f=i.add(su).normalize(),g=a.dot(i).clamp(),v=a.dot(su).clamp(),M=a.dot(f).clamp(),R=su.dot(f).clamp();let I=Gx({f0:e,f90:t,dotVH:R}),re,ne;if(fb(o)&&(I=j1.mix(I,r)),fb(c)){const J=gb.dot(i),be=gb.dot(su),Re=gb.dot(f),ze=py.dot(i),st=py.dot(su),et=py.dot(f);re=CH({alphaT:J1,alphaB:u,dotTV:be,dotBV:st,dotTL:J,dotBL:ze,dotNV:v,dotNL:g}),ne=RH({alphaT:J1,alphaB:u,dotNH:M,dotTH:Re,dotBH:et})}else re=fL({alpha:u,dotNL:g,dotNV:v}),ne=dL({alpha:u,dotNH:M});return I.mul(re).mul(ne)}),PH=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]);let cm=null;const Cb=Ar(({roughness:i,dotNV:e})=>{cm===null&&(cm=new gf(PH,16,16,We,zt),cm.name="DFG_LUT",cm.minFilter=Pr,cm.magFilter=Pr,cm.wrapS=$t,cm.wrapT=$t,cm.generateMipmaps=!1,cm.needsUpdate=!0);const t=rs(i,e);return _c(cm,t).rg}),IH=Ar(({lightDirection:i,f0:e,f90:t,roughness:n,f:r,USE_IRIDESCENCE:a,USE_ANISOTROPY:o})=>{const c=oC({lightDirection:i,f0:e,f90:t,roughness:n,f:r,USE_IRIDESCENCE:a,USE_ANISOTROPY:o}),u=rc.dot(i).clamp(),f=rc.dot(su).clamp(),g=Cb({roughness:n,dotNV:f}),v=Cb({roughness:n,dotNV:u}),M=e.mul(g.x).add(t.mul(g.y)),R=e.mul(v.x).add(t.mul(v.y)),I=g.x.add(g.y),re=v.x.add(v.y),ne=nn(1).sub(I),J=nn(1).sub(re),be=e.add(e.oneMinus().mul(.047619)),Re=M.mul(R).mul(be).div(nn(1).sub(ne.mul(J).mul(be).mul(be)).add(rT)),ze=ne.mul(J),st=Re.mul(ze);return c.add(st)}),AL=Ar(i=>{const{dotNV:e,specularColor:t,specularF90:n,roughness:r}=i,a=Cb({dotNV:e,roughness:r});return t.mul(a.x).add(n.mul(a.y))}),lC=Ar(({f:i,f90:e,dotVH:t})=>{const n=t.oneMinus().saturate(),r=n.mul(n),a=n.mul(r,r).clamp(0,.9999);return i.sub(tr(e).mul(a)).div(a.oneMinus())}).setLayout({name:"Schlick_to_F0",type:"vec3",inputs:[{name:"f",type:"vec3"},{name:"f90",type:"float"},{name:"dotVH",type:"float"}]}),NH=Ar(({roughness:i,dotNH:e})=>{const t=i.pow2(),n=nn(1).div(t),a=e.pow2().oneMinus().max(.0078125);return nn(2).add(n).mul(a.pow(n.mul(.5))).div(2*Math.PI)}).setLayout({name:"D_Charlie",type:"float",inputs:[{name:"roughness",type:"float"},{name:"dotNH",type:"float"}]}),LH=Ar(({dotNV:i,dotNL:e})=>nn(1).div(nn(4).mul(e.add(i).sub(e.mul(i))))).setLayout({name:"V_Neubelt",type:"float",inputs:[{name:"dotNV",type:"float"},{name:"dotNL",type:"float"}]}),FH=Ar(({lightDirection:i})=>{const e=i.add(su).normalize(),t=rc.dot(i).clamp(),n=rc.dot(su).clamp(),r=rc.dot(e).clamp(),a=NH({roughness:pv,dotNH:r}),o=LH({dotNV:n,dotNL:t});return IA.mul(a).mul(o)}),UH=Ar(({N:i,V:e,roughness:t})=>{const a=.0078125,o=i.dot(e).saturate(),c=rs(t,o.oneMinus().sqrt());return c.assign(c.mul(.984375).add(a)),c}).setLayout({name:"LTC_Uv",type:"vec2",inputs:[{name:"N",type:"vec3"},{name:"V",type:"vec3"},{name:"roughness",type:"float"}]}),pL=Ar(({f:i})=>{const e=i.length();return uh(e.mul(e).add(i.z).div(e.add(1)),0)}).setLayout({name:"LTC_ClippedSphereFormFactor",type:"float",inputs:[{name:"f",type:"vec3"}]}),_v=Ar(({v1:i,v2:e})=>{const t=i.dot(e),n=t.abs().toVar(),r=n.mul(.0145206).add(.4965155).mul(n).add(.8543985).toVar(),a=n.add(4.1616724).mul(n).add(3.417594).toVar(),o=r.div(a),c=t.greaterThan(0).select(o,uh(t.mul(t).oneMinus(),1e-7).inverseSqrt().mul(.5).sub(o));return i.cross(e).mul(c)}).setLayout({name:"LTC_EdgeVectorFormFactor",type:"vec3",inputs:[{name:"v1",type:"vec3"},{name:"v2",type:"vec3"}]}),gL=Ar(({N:i,V:e,P:t,mInv:n,p0:r,p1:a,p2:o,p3:c})=>{const u=a.sub(r).toVar(),f=c.sub(r).toVar(),g=u.cross(f),v=tr().toVar();return Va(g.dot(t.sub(r)).greaterThanEqual(0),()=>{const M=e.sub(i.mul(e.dot(i))).normalize(),R=i.cross(M).negate(),I=n.mul(qf(M,R,i).transpose()).toVar(),re=I.mul(r.sub(t)).normalize().toVar(),ne=I.mul(a.sub(t)).normalize().toVar(),J=I.mul(o.sub(t)).normalize().toVar(),be=I.mul(c.sub(t)).normalize().toVar(),Re=tr(0).toVar();Re.addAssign(_v({v1:re,v2:ne})),Re.addAssign(_v({v1:ne,v2:J})),Re.addAssign(_v({v1:J,v2:be})),Re.addAssign(_v({v1:be,v2:re})),v.assign(tr(pL({f:Re})))}),v}).setLayout({name:"LTC_Evaluate",type:"vec3",inputs:[{name:"N",type:"vec3"},{name:"V",type:"vec3"},{name:"P",type:"vec3"},{name:"mInv",type:"mat3"},{name:"p0",type:"vec3"},{name:"p1",type:"vec3"},{name:"p2",type:"vec3"},{name:"p3",type:"vec3"}]}),DH=Ar(({P:i,p0:e,p1:t,p2:n,p3:r})=>{const a=t.sub(e).toVar(),o=r.sub(e).toVar(),c=a.cross(o),u=tr().toVar();return Va(c.dot(i.sub(e)).greaterThanEqual(0),()=>{const f=e.sub(i).normalize().toVar(),g=t.sub(i).normalize().toVar(),v=n.sub(i).normalize().toVar(),M=r.sub(i).normalize().toVar(),R=tr(0).toVar();R.addAssign(_v({v1:f,v2:g})),R.addAssign(_v({v1:g,v2:v})),R.addAssign(_v({v1:v,v2:M})),R.addAssign(_v({v1:M,v2:f})),u.assign(tr(pL({f:R.abs()})))}),u}).setLayout({name:"LTC_Evaluate",type:"vec3",inputs:[{name:"P",type:"vec3"},{name:"p0",type:"vec3"},{name:"p1",type:"vec3"},{name:"p2",type:"vec3"},{name:"p3",type:"vec3"}]}),BS=1/6,mL=i=>Ho(BS,Ho(i,Ho(i,i.negate().add(3)).sub(3)).add(1)),cC=i=>Ho(BS,Ho(i,Ho(i,Ho(3,i).sub(6))).add(4)),vL=i=>Ho(BS,Ho(i,Ho(i,Ho(-3,i).add(3)).add(3)).add(1)),uC=i=>Ho(BS,Sp(i,3)),yL=i=>mL(i).add(cC(i)),xL=i=>vL(i).add(uC(i)),_L=i=>Qh(-1,cC(i).div(mL(i).add(cC(i)))),bL=i=>Qh(1,uC(i).div(vL(i).add(uC(i)))),wL=(i,e,t)=>{const n=i.uvNode,r=Ho(n,e.zw).add(.5),a=rm(r),o=fg(r),c=yL(o.x),u=xL(o.x),f=_L(o.x),g=bL(o.x),v=_L(o.y),M=bL(o.y),R=rs(a.x.add(f),a.y.add(v)).sub(.5).mul(e.xy),I=rs(a.x.add(g),a.y.add(v)).sub(.5).mul(e.xy),re=rs(a.x.add(f),a.y.add(M)).sub(.5).mul(e.xy),ne=rs(a.x.add(g),a.y.add(M)).sub(.5).mul(e.xy),J=yL(o.y).mul(Qh(c.mul(i.sample(R).level(t)),u.mul(i.sample(I).level(t)))),be=xL(o.y).mul(Qh(c.mul(i.sample(re).level(t)),u.mul(i.sample(ne).level(t))));return J.add(be)},hC=Ar(([i,e])=>{const t=rs(i.size(Yn(e))),n=rs(i.size(Yn(e.add(1)))),r=NA(1,t),a=NA(1,n),o=wL(i,Sa(r,t),rm(e)),c=wL(i,Sa(a,n),sS(e));return fg(e).mix(o,c)}),OH=Ar(([i,e])=>{const t=e.mul(MT(i));return hC(i,t)}),SL=Ar(([i,e,t,n,r])=>{const a=tr(gT(e.negate(),Cd(i),NA(1,n))),o=tr(im(r[0].xyz),im(r[1].xyz),im(r[2].xyz));return Cd(a).mul(t.mul(o))}).setLayout({name:"getVolumeTransmissionRay",type:"vec3",inputs:[{name:"n",type:"vec3"},{name:"v",type:"vec3"},{name:"thickness",type:"float"},{name:"ior",type:"float"},{name:"modelMatrix",type:"mat4"}]}),kH=Ar(([i,e])=>i.mul(Ag(e.mul(2).sub(2),0,1))).setLayout({name:"applyIorToRoughness",type:"float",inputs:[{name:"roughness",type:"float"},{name:"ior",type:"float"}]}),VH=qT(),HH=qT(),EL=Ar(([i,e,t],{material:n})=>{const a=(n.side===fe?VH:HH).sample(i),o=nm(vy.x).mul(kH(e,t));return hC(a,o)}),ML=Ar(([i,e,t])=>(Va(t.notEqual(0),()=>{const n=iS(e).negate().div(t);return iT(n.negate().mul(i))}),tr(1))).setLayout({name:"volumeAttenuation",type:"vec3",inputs:[{name:"transmissionDistance",type:"float"},{name:"attenuationColor",type:"vec3"},{name:"attenuationDistance",type:"float"}]}),GH=Ar(([i,e,t,n,r,a,o,c,u,f,g,v,M,R,I])=>{let re,ne;if(I){re=Sa().toVar(),ne=tr().toVar();const st=g.sub(1).mul(I.mul(.025)),et=tr(g.sub(st),g,g.add(st));Wc({start:0,end:3},({i:dt})=>{const Nt=et.element(dt),nt=SL(i,e,v,Nt,c),mt=o.add(nt),En=f.mul(u.mul(Sa(mt,1))),vr=rs(En.xy.div(En.w)).toVar();vr.addAssign(1),vr.divAssign(2),vr.assign(rs(vr.x,vr.y.oneMinus()));const br=EL(vr,t,Nt);re.element(dt).assign(br.element(dt)),re.a.addAssign(br.a),ne.element(dt).assign(n.element(dt).mul(ML(im(nt),M,R).element(dt)))}),re.a.divAssign(3)}else{const st=SL(i,e,v,g,c),et=o.add(st),dt=f.mul(u.mul(Sa(et,1))),Nt=rs(dt.xy.div(dt.w)).toVar();Nt.addAssign(1),Nt.divAssign(2),Nt.assign(rs(Nt.x,Nt.y.oneMinus())),re=EL(Nt,t,g),ne=n.mul(ML(im(st),M,R))}const J=ne.rgb.mul(re.rgb),be=i.dot(e).clamp(),Re=tr(AL({dotNV:be,specularColor:r,specularF90:a,roughness:t})),ze=ne.r.add(ne.g,ne.b).div(3);return Sa(Re.oneMinus().mul(J),re.a.oneMinus().mul(ze).oneMinus())}),zH=qf(3.2404542,-.969266,.0556434,-1.5371385,1.8760108,-.2040259,-.4985314,.041556,1.0572252),QH=i=>{const e=i.sqrt();return tr(1).add(e).div(tr(1).sub(e))},TL=(i,e)=>i.sub(e).div(i.add(e)).pow2(),WH=(i,e)=>{const t=i.mul(2*Math.PI*1e-9),n=tr(54856e-17,44201e-17,52481e-17),r=tr(1681e3,1795300,2208400),a=tr(43278e5,93046e5,66121e5),o=nn(9747e-17*Math.sqrt(2*Math.PI*45282e5)).mul(t.mul(2239900).add(e.x).cos()).mul(t.pow2().mul(-45282e5).exp());let c=n.mul(a.mul(2*Math.PI).sqrt()).mul(r.mul(t).add(e).cos()).mul(t.pow2().negate().mul(a).exp());return c=tr(c.x.add(o),c.y,c.z).div(10685e-11),zH.mul(c)},CL=Ar(({outsideIOR:i,eta2:e,cosTheta1:t,thinFilmThickness:n,baseF0:r})=>{const a=Ll(i,e,LA(0,.03,n)),c=i.div(a).pow2().mul(t.pow2().oneMinus()).oneMinus();Va(c.lessThan(0),()=>tr(1));const u=c.sqrt(),f=TL(a,i),g=Gx({f0:f,f90:1,dotVH:t}),v=g.oneMinus(),M=a.lessThan(i).select(Math.PI,0),R=nn(Math.PI).sub(M),I=QH(r.clamp(0,.9999)),re=TL(I,a.toVec3()),ne=Gx({f0:re,f90:1,dotVH:u}),J=tr(I.x.lessThan(a).select(Math.PI,0),I.y.lessThan(a).select(Math.PI,0),I.z.lessThan(a).select(Math.PI,0)),be=a.mul(n,u,2),Re=tr(R).add(J),ze=g.mul(ne).clamp(1e-5,.9999),st=ze.sqrt(),et=v.pow2().mul(ne).div(tr(1).sub(ze)),Nt=g.add(et).toVar(),nt=et.sub(v).toVar();return Wc({start:1,end:2,condition:"<=",name:"m"},({m:mt})=>{nt.mulAssign(st);const En=WH(nn(mt).mul(be),nn(mt).mul(Re)).mul(2);Nt.addAssign(nt.mul(En))}),Nt.max(tr(0))}).setLayout({name:"evalIridescence",type:"vec3",inputs:[{name:"outsideIOR",type:"float"},{name:"eta2",type:"float"},{name:"cosTheta1",type:"float"},{name:"thinFilmThickness",type:"float"},{name:"baseF0",type:"vec3"}]}),Bb=Ar(({normal:i,viewDir:e,roughness:t})=>{const n=i.dot(e).saturate(),r=t.mul(t),a=t.add(.1).reciprocal(),o=nn(-1.9362).add(t.mul(1.0678)).add(r.mul(.4573)).sub(a.mul(.8469)),c=nn(-.6014).add(t.mul(.5538)).sub(r.mul(.467)).sub(a.mul(.1255));return o.mul(n).add(c).exp().saturate()}),fC=tr(.04),dC=nn(1);class BL extends CS{constructor(e=!1,t=!1,n=!1,r=!1,a=!1,o=!1){super(),this.clearcoat=e,this.sheen=t,this.iridescence=n,this.anisotropy=r,this.transmission=a,this.dispersion=o,this.clearcoatRadiance=null,this.clearcoatSpecularDirect=null,this.clearcoatSpecularIndirect=null,this.sheenSpecularDirect=null,this.sheenSpecularIndirect=null,this.iridescenceFresnel=null,this.iridescenceF0=null,this.iridescenceF0Dielectric=null,this.iridescenceF0Metallic=null}start(e){if(this.clearcoat===!0&&(this.clearcoatRadiance=tr().toVar("clearcoatRadiance"),this.clearcoatSpecularDirect=tr().toVar("clearcoatSpecularDirect"),this.clearcoatSpecularIndirect=tr().toVar("clearcoatSpecularIndirect")),this.sheen===!0&&(this.sheenSpecularDirect=tr().toVar("sheenSpecularDirect"),this.sheenSpecularIndirect=tr().toVar("sheenSpecularIndirect")),this.iridescence===!0){const t=rc.dot(su).clamp(),n=CL({outsideIOR:nn(1),eta2:Y1,cosTheta1:t,thinFilmThickness:q1,baseF0:mv}),r=CL({outsideIOR:nn(1),eta2:Y1,cosTheta1:t,thinFilmThickness:q1,baseF0:Yc.rgb});this.iridescenceFresnel=Ll(n,r,l0),this.iridescenceF0Dielectric=lC({f:n,f90:1,dotVH:t}),this.iridescenceF0Metallic=lC({f:r,f90:1,dotVH:t}),this.iridescenceF0=Ll(this.iridescenceF0Dielectric,this.iridescenceF0Metallic,l0)}if(this.transmission===!0){const t=UA,n=Sb.sub(UA).normalize(),r=xv,a=e.context;a.backdrop=GH(r,n,tm,Ay,gy,Bx,t,Mp,FA,Pd,vb,jM,qM,YM,this.dispersion?JM:null),a.backdropAlpha=tS,Yc.a.mulAssign(Ll(1,a.backdrop.a,tS))}super.start(e)}computeMultiscattering(e,t,n,r,a=null){const o=rc.dot(su).clamp(),c=Cb({roughness:tm,dotNV:o}),u=a?j1.mix(r,a):r,f=u.mul(c.x).add(n.mul(c.y)),v=c.x.add(c.y).oneMinus(),M=u.add(u.oneMinus().mul(.047619)),R=f.mul(M).div(v.mul(M).oneMinus());e.addAssign(f),t.addAssign(R.mul(v))}direct({lightDirection:e,lightColor:t,reflectedLight:n}){const a=rc.dot(e).clamp().mul(t).toVar();if(this.sheen===!0){this.sheenSpecularDirect.addAssign(a.mul(FH({lightDirection:e})));const o=Bb({normal:rc,viewDir:su,roughness:pv}),c=Bb({normal:rc,viewDir:e,roughness:pv}),u=IA.r.max(IA.g).max(IA.b).mul(o.max(c)).oneMinus();a.mulAssign(u)}if(this.clearcoat===!0){const c=xy.dot(e).clamp().mul(t);this.clearcoatSpecularDirect.addAssign(c.mul(oC({lightDirection:e,f0:fC,f90:dC,roughness:pb,normalView:xy})))}n.directDiffuse.addAssign(a.mul(by({diffuseColor:Ay}))),n.directSpecular.addAssign(a.mul(IH({lightDirection:e,f0:gy,f90:1,roughness:tm,f:this.iridescenceFresnel,USE_IRIDESCENCE:this.iridescence,USE_ANISOTROPY:this.anisotropy})))}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:r,reflectedLight:a,ltc_1:o,ltc_2:c}){const u=t.add(n).sub(r),f=t.sub(n).sub(r),g=t.sub(n).add(r),v=t.add(n).add(r),M=rc,R=su,I=Rh.toVar(),re=UH({N:M,V:R,roughness:tm}),ne=o.sample(re).toVar(),J=c.sample(re).toVar(),be=qf(tr(ne.x,0,ne.y),tr(0,1,0),tr(ne.z,0,ne.w)).toVar(),Re=gy.mul(J.x).add(gy.oneMinus().mul(J.y)).toVar();a.directSpecular.addAssign(e.mul(Re).mul(gL({N:M,V:R,P:I,mInv:be,p0:u,p1:f,p2:g,p3:v}))),a.directDiffuse.addAssign(e.mul(Ay).mul(gL({N:M,V:R,P:I,mInv:qf(1,0,0,0,1,0,0,0,1),p0:u,p1:f,p2:g,p3:v})))}indirect(e){this.indirectDiffuse(e),this.indirectSpecular(e),this.ambientOcclusion(e)}indirectDiffuse(e){const{irradiance:t,reflectedLight:n}=e.context,r=t.mul(by({diffuseColor:Ay})).toVar();if(this.sheen===!0){const a=Bb({normal:rc,viewDir:su,roughness:pv}),o=IA.r.max(IA.g).max(IA.b).mul(a).oneMinus();r.mulAssign(o)}n.indirectDiffuse.addAssign(r)}indirectSpecular(e){const{radiance:t,iblIrradiance:n,reflectedLight:r}=e.context;if(this.sheen===!0&&this.sheenSpecularIndirect.addAssign(n.mul(IA,Bb({normal:rc,viewDir:su,roughness:pv}))),this.clearcoat===!0){const ne=xy.dot(su).clamp(),J=AL({dotNV:ne,specularColor:fC,specularF90:dC,roughness:pb});this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(J))}const a=tr().toVar("singleScatteringDielectric"),o=tr().toVar("multiScatteringDielectric"),c=tr().toVar("singleScatteringMetallic"),u=tr().toVar("multiScatteringMetallic");this.computeMultiscattering(a,o,Bx,mv,this.iridescenceF0Dielectric),this.computeMultiscattering(c,u,Bx,Yc.rgb,this.iridescenceF0Metallic);const f=Ll(a,c,l0),g=Ll(o,u,l0),v=a.add(o),M=Ay.mul(v.oneMinus()),R=n.mul(1/Math.PI),I=t.mul(f).add(g.mul(R)).toVar(),re=M.mul(R).toVar();if(this.sheen===!0){const ne=Bb({normal:rc,viewDir:su,roughness:pv}),J=IA.r.max(IA.g).max(IA.b).mul(ne).oneMinus();I.mulAssign(J),re.mulAssign(J)}r.indirectSpecular.addAssign(I),r.indirectDiffuse.addAssign(re)}ambientOcclusion(e){const{ambientOcclusion:t,reflectedLight:n}=e.context,a=rc.dot(su).clamp().add(t),o=tm.mul(-16).oneMinus().negate().exp2(),c=t.sub(a.pow(o).oneMinus()).clamp();this.clearcoat===!0&&this.clearcoatSpecularIndirect.mulAssign(t),this.sheen===!0&&this.sheenSpecularIndirect.mulAssign(t),n.indirectDiffuse.mulAssign(t),n.indirectSpecular.mulAssign(c)}finish({context:e}){const{outgoingLight:t}=e;if(this.clearcoat===!0){const n=xy.dot(su).clamp(),r=Gx({dotVH:n,f0:fC,f90:dC}),a=t.mul(X1.mul(r).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(X1));t.assign(a)}if(this.sheen===!0){const n=t.add(this.sheenSpecularDirect,this.sheenSpecularIndirect.mul(1/Math.PI));t.assign(n)}}}const RL=nn(1),AC=nn(-2),RS=nn(.8),pC=nn(-1),PS=nn(.4),gC=nn(2),IS=nn(.305),mC=nn(3),PL=nn(.21),ZH=nn(4),IL=nn(4),KH=nn(16),$H=Ar(([i])=>{const e=tr(_u(i)).toVar(),t=nn(-1).toVar();return Va(e.x.greaterThan(e.z),()=>{Va(e.x.greaterThan(e.y),()=>{t.assign(Jf(i.x.greaterThan(0),0,3))}).Else(()=>{t.assign(Jf(i.y.greaterThan(0),1,4))})}).Else(()=>{Va(e.z.greaterThan(e.y),()=>{t.assign(Jf(i.z.greaterThan(0),2,5))}).Else(()=>{t.assign(Jf(i.y.greaterThan(0),1,4))})}),t}).setLayout({name:"getFace",type:"float",inputs:[{name:"direction",type:"vec3"}]}),XH=Ar(([i,e])=>{const t=rs().toVar();return Va(e.equal(0),()=>{t.assign(rs(i.z,i.y).div(_u(i.x)))}).ElseIf(e.equal(1),()=>{t.assign(rs(i.x.negate(),i.z.negate()).div(_u(i.y)))}).ElseIf(e.equal(2),()=>{t.assign(rs(i.x.negate(),i.y).div(_u(i.z)))}).ElseIf(e.equal(3),()=>{t.assign(rs(i.z.negate(),i.y).div(_u(i.x)))}).ElseIf(e.equal(4),()=>{t.assign(rs(i.x.negate(),i.z).div(_u(i.y)))}).Else(()=>{t.assign(rs(i.x,i.y).div(_u(i.z)))}),Ho(.5,t.add(1))}).setLayout({name:"getUV",type:"vec2",inputs:[{name:"direction",type:"vec3"},{name:"face",type:"float"}]}),jH=Ar(([i])=>{const e=nn(0).toVar();return Va(i.greaterThanEqual(RS),()=>{e.assign(RL.sub(i).mul(pC.sub(AC)).div(RL.sub(RS)).add(AC))}).ElseIf(i.greaterThanEqual(PS),()=>{e.assign(RS.sub(i).mul(gC.sub(pC)).div(RS.sub(PS)).add(pC))}).ElseIf(i.greaterThanEqual(IS),()=>{e.assign(PS.sub(i).mul(mC.sub(gC)).div(PS.sub(IS)).add(gC))}).ElseIf(i.greaterThanEqual(PL),()=>{e.assign(IS.sub(i).mul(ZH.sub(mC)).div(IS.sub(PL)).add(mC))}).Else(()=>{e.assign(nn(-2).mul(nm(Ho(1.16,i))))}),e}).setLayout({name:"roughnessToMip",type:"float",inputs:[{name:"roughness",type:"float"}]}),NL=Ar(([i,e])=>{const t=i.toVar();t.assign(Ho(2,t).sub(1));const n=tr(t,1).toVar();return Va(e.equal(0),()=>{n.assign(n.zyx)}).ElseIf(e.equal(1),()=>{n.assign(n.xzy),n.xz.mulAssign(-1)}).ElseIf(e.equal(2),()=>{n.x.mulAssign(-1)}).ElseIf(e.equal(3),()=>{n.assign(n.zyx),n.xz.mulAssign(-1)}).ElseIf(e.equal(4),()=>{n.assign(n.xzy),n.xy.mulAssign(-1)}).ElseIf(e.equal(5),()=>{n.z.mulAssign(-1)}),n}).setLayout({name:"getDirection",type:"vec3",inputs:[{name:"uv",type:"vec2"},{name:"face",type:"float"}]}),LL=Ar(([i,e,t,n,r,a])=>{const o=nn(t),c=tr(e),u=Ag(jH(o),AC,a),f=fg(u),g=rm(u),v=tr(Rb(i,c,g,n,r,a)).toVar();return Va(f.notEqual(0),()=>{const M=tr(Rb(i,c,g.add(1),n,r,a)).toVar();v.assign(Ll(v,M,f))}),v}),Rb=Ar(([i,e,t,n,r,a])=>{const o=nn(t).toVar(),c=tr(e),u=nn($H(c)).toVar(),f=nn(uh(IL.sub(o),0)).toVar();o.assign(uh(o,IL));const g=nn(Px(o)).toVar(),v=rs(XH(c,u).mul(g.sub(2)).add(1)).toVar();return Va(u.greaterThan(2),()=>{v.y.addAssign(g),u.subAssign(3)}),v.x.addAssign(u.mul(g)),v.x.addAssign(f.mul(Ho(3,KH))),v.y.addAssign(Ho(4,Px(a).sub(g))),v.x.mulAssign(n),v.y.mulAssign(r),i.sample(v).grad(rs(),rs())}),vC=Ar(({envMap:i,mipInt:e,outputDirection:t,theta:n,axis:r,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:c})=>{const u=dg(n),f=t.mul(u).add(r.cross(t).mul(Bd(n))).add(r.mul(r.dot(t).mul(u.oneMinus())));return Rb(i,f,e,a,o,c)}),FL=Ar(({n:i,latitudinal:e,poleAxis:t,outputDirection:n,weights:r,samples:a,dTheta:o,mipInt:c,envMap:u,CUBEUV_TEXEL_WIDTH:f,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v})=>{const M=tr(Jf(e,t,c0(t,n))).toVar();Va(M.equal(tr(0)),()=>{M.assign(tr(n.z,0,n.x.negate()))}),M.assign(Cd(M));const R=tr().toVar();return R.addAssign(r.element(0).mul(vC({theta:0,axis:M,outputDirection:n,mipInt:c,envMap:u,CUBEUV_TEXEL_WIDTH:f,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v}))),Wc({start:Yn(1),end:i},({i:I})=>{Va(I.greaterThanEqual(a),()=>{WN()});const re=nn(o.mul(nn(I))).toVar();R.addAssign(r.element(I).mul(vC({theta:re.mul(-1),axis:M,outputDirection:n,mipInt:c,envMap:u,CUBEUV_TEXEL_WIDTH:f,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v}))),R.addAssign(r.element(I).mul(vC({theta:re,axis:M,outputDirection:n,mipInt:c,envMap:u,CUBEUV_TEXEL_WIDTH:f,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v})))}),Sa(R,1)}),YH=Ar(([i])=>{const e=Yi(i).toVar();return e.assign(e.shiftLeft(Yi(16)).bitOr(e.shiftRight(Yi(16)))),e.assign(e.bitAnd(Yi(1431655765)).shiftLeft(Yi(1)).bitOr(e.bitAnd(Yi(2863311530)).shiftRight(Yi(1)))),e.assign(e.bitAnd(Yi(858993459)).shiftLeft(Yi(2)).bitOr(e.bitAnd(Yi(3435973836)).shiftRight(Yi(2)))),e.assign(e.bitAnd(Yi(252645135)).shiftLeft(Yi(4)).bitOr(e.bitAnd(Yi(4042322160)).shiftRight(Yi(4)))),e.assign(e.bitAnd(Yi(16711935)).shiftLeft(Yi(8)).bitOr(e.bitAnd(Yi(4278255360)).shiftRight(Yi(8)))),nn(e).mul(23283064365386963e-26)}),qH=Ar(([i,e])=>rs(nn(i).div(nn(e)),YH(i))),JH=Ar(([i,e,t])=>{const n=tr(e).toVar(),r=nn(t),a=r.mul(r).toVar(),o=Cd(tr(a.mul(n.x),a.mul(n.y),n.z)).toVar(),c=o.x.mul(o.x).add(o.y.mul(o.y)),u=Jf(c.greaterThan(0),tr(o.y.negate(),o.x,0).div(pd(c)),tr(1,0,0)).toVar(),f=c0(o,u).toVar(),g=pd(i.x),v=Ho(2,3.14159265359).mul(i.y),M=g.mul(dg(v)).toVar(),R=g.mul(Bd(v)).toVar(),I=Ho(.5,o.z.add(1));R.assign(I.oneMinus().mul(pd(M.mul(M).oneMinus())).add(I.mul(R)));const re=u.mul(M).add(f.mul(R)).add(o.mul(pd(uh(0,M.mul(M).add(R.mul(R)).oneMinus()))));return Cd(tr(a.mul(re.x),a.mul(re.y),uh(0,re.z)))}),UL=Ar(({roughness:i,mipInt:e,envMap:t,N_immutable:n,GGX_SAMPLES:r,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:c})=>{const u=tr(n).toVar(),f=tr(0).toVar(),g=nn(0).toVar();return Va(i.lessThan(.001),()=>{f.assign(Rb(t,u,e,a,o,c))}).Else(()=>{const v=Jf(_u(u.z).lessThan(.999),tr(0,0,1),tr(1,0,0)),M=Cd(c0(v,u)).toVar(),R=c0(u,M).toVar();Wc({start:Yi(0),end:r},({i:I})=>{const re=qH(I,r),ne=JH(re,tr(0,0,1),i),J=Cd(M.mul(ne.x).add(R.mul(ne.y)).add(u.mul(ne.z))),be=Cd(J.mul(wp(u,J).mul(2)).sub(u)),Re=uh(wp(u,be),0);Va(Re.greaterThan(0),()=>{const ze=Rb(t,be,e,a,o,c);f.addAssign(ze.mul(Re)),g.addAssign(Re)})}),Va(g.greaterThan(0),()=>{f.assign(f.div(g))})}),Sa(f,1)}),bv=4,DL=[.125,.215,.35,.446,.526,.582],wy=20,eG=512,Pb=new eg(-1,1,1,-1,0,1),tG=new Ko(90,1),OL=new li;let yC=null,xC=0,_C=0;const nG=new ce,NS=new WeakMap,rG=[3,1,5,0,4,2],bC=NL(qc(),Rd("faceIndex")).normalize(),LS=tr(bC.x,bC.y,bC.z);class iG{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._blurMaterial=null,this._ggxMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._backgroundBox=null}get _hasInitialized(){return this._renderer.hasInitialized()}fromScene(e,t=0,n=.1,r=100,a={}){const{size:o=256,position:c=nG,renderTarget:u=null}=a;if(this._setSize(o),this._hasInitialized===!1){Qr('PMREMGenerator: ".fromScene()" called before the backend is initialized. Try using "await renderer.init()" instead.');const g=u||this._allocateTarget();return a.renderTarget=g,this.fromSceneAsync(e,t,n,r,a),g}yC=this._renderer.getRenderTarget(),xC=this._renderer.getActiveCubeFace(),_C=this._renderer.getActiveMipmapLevel();const f=u||this._allocateTarget();return f.depthBuffer=!0,this._init(f),this._sceneToCubeUV(e,n,r,f,c),t>0&&this._blur(f,0,0,t),this._applyPMREM(f),this._cleanup(f),f}fromSceneAsync(o){return lo(this,arguments,function*(e,t=0,n=.1,r=100,a={}){return Za('PMREMGenerator: ".fromSceneAsync()" is deprecated. Use "await renderer.init()" instead.'),yield this._renderer.init(),this.fromScene(e,t,n,r,a)})}fromEquirectangular(e,t=null){if(this._hasInitialized===!1){Qr('PMREMGenerator: .fromEquirectangular() called before the backend is initialized. Try using "await renderer.init()" instead.'),this._setSizeFromTexture(e);const n=t||this._allocateTarget();return this.fromEquirectangularAsync(e,n),n}return this._fromTexture(e,t)}fromEquirectangularAsync(e,t=null){return lo(this,null,function*(){return Za('PMREMGenerator: ".fromEquirectangularAsync()" is deprecated. Use "await renderer.init()" instead.'),yield this._renderer.init(),this._fromTexture(e,t)})}fromCubemap(e,t=null){if(this._hasInitialized===!1){Qr("PMREMGenerator: .fromCubemap() called before the backend is initialized. Try using .fromCubemapAsync() instead."),this._setSizeFromTexture(e);const n=t||this._allocateTarget();return this.fromCubemapAsync(e,t),n}return this._fromTexture(e,t)}fromCubemapAsync(e,t=null){return lo(this,null,function*(){return Za('PMREMGenerator: ".fromCubemapAsync()" is deprecated. Use "await renderer.init()" instead.'),yield this._renderer.init(),this._fromTexture(e,t)})}compileCubemapShader(){return lo(this,null,function*(){this._cubemapMaterial===null&&(this._cubemapMaterial=VL(),yield this._compileMaterial(this._cubemapMaterial))})}compileEquirectangularShader(){return lo(this,null,function*(){this._equirectMaterial===null&&(this._equirectMaterial=HL(),yield this._compileMaterial(this._equirectMaterial))})}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSizeFromTexture(e){e.mapping===at||e.mapping===wt?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4)}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?J:0,J,J),f.render(e,o)}f.autoClear=g,e.background=I}_textureToCubeUV(e,t){const n=this._renderer,r=e.mapping===at||e.mapping===wt;r?this._cubemapMaterial===null&&(this._cubemapMaterial=VL(e)):this._equirectMaterial===null&&(this._equirectMaterial=HL(e));const a=r?this._cubemapMaterial:this._equirectMaterial;a.fragmentNode.value=e;const o=this._lodMeshes[0];o.material=a;const c=this._cubeSize;zx(t,0,0,3*c,2*c),n.setRenderTarget(t),n.render(o,Pb)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const r=this._lodMeshes.length;for(let a=1;aI-bv?n-I+bv:0),J=4*(this._cubeSize-re);e.texture.frame=(e.texture.frame||0)+1,u.envMap.value=e.texture,u.roughness.value=R,u.mipInt.value=I-t,zx(a,ne,J,3*re,2*re),r.setRenderTarget(a),r.render(c,Pb),a.texture.frame=(a.texture.frame||0)+1,u.envMap.value=a.texture,u.roughness.value=0,u.mipInt.value=I-n,zx(e,ne,J,3*re,2*re),r.setRenderTarget(e),r.render(c,Pb)}_blur(e,t,n,r,a){const o=this._pingPongRenderTarget;this._halfBlur(e,o,t,n,r,"latitudinal",a),this._halfBlur(o,e,n,n,r,"longitudinal",a)}_halfBlur(e,t,n,r,a,o,c){const u=this._renderer,f=this._blurMaterial;o!=="latitudinal"&&o!=="longitudinal"&&ri("blur direction must be either latitudinal or longitudinal!");const g=3,v=this._lodMeshes[r];v.material=f;const M=NS.get(f),R=this._sizeLods[n]-1,I=isFinite(a)?Math.PI/(2*R):2*Math.PI/(2*wy-1),re=a/I,ne=isFinite(a)?1+Math.floor(g*re):wy;ne>wy&&Qr(`sigmaRadians, ${a}, is too large and will clip, as it requested ${ne} samples when the maximum is set to ${wy}`);const J=[];let be=0;for(let dt=0;dtRe-bv?r-Re+bv:0),et=4*(this._cubeSize-ze);zx(t,st,et,3*ze,2*ze),u.setRenderTarget(t),u.render(v,Pb)}}function sG(i){const e=[],t=[],n=[];let r=i;const a=i-bv+1+DL.length;for(let o=0;oi-bv?u=DL[o-i+bv-1]:o===0&&(u=0),t.push(u);const f=1/(c-2),g=-f,v=1+f,M=[g,g,v,g,v,v,g,g,v,v,g,v],R=6,I=6,re=3,ne=2,J=1,be=new Float32Array(re*I*R),Re=new Float32Array(ne*I*R),ze=new Float32Array(J*I*R);for(let et=0;et2?0:-1,nt=[dt,Nt,0,dt+2/3,Nt,0,dt+2/3,Nt+1,0,dt,Nt,0,dt+2/3,Nt+1,0,dt,Nt+1,0],mt=rG[et];be.set(nt,re*I*mt),Re.set(M,ne*I*mt);const En=[mt,mt,mt,mt,mt,mt];ze.set(En,J*I*mt)}const st=new Eo;st.setAttribute("position",new jl(be,re)),st.setAttribute("uv",new jl(Re,ne)),st.setAttribute("faceIndex",new jl(ze,J)),n.push(new Mc(st,null)),r>bv&&r--}return{lodMeshes:n,sizeLods:e,sigmas:t}}function kL(i,e){const t={magFilter:Pr,minFilter:Pr,generateMipmaps:!1,type:zt,format:k,colorSpace:Cl},n=new La(i,e,t);return n.texture.mapping=St,n.texture.name="PMREM.cubeUv",n.texture.isPMREMTexture=!0,n.scissorTest=!0,n}function zx(i,e,t,n,r){i.viewport.set(e,t,n,r),i.scissor.set(e,t,n,r)}function FS(i){const e=new fh;return e.depthTest=!1,e.depthWrite=!1,e.blending=Me,e.name=`PMREM_${i}`,e}function aG(i,e,t){const n=gd(new Array(wy).fill(0)),r=ja(new ce(0,1,0)),a=ja(0),o=nn(wy),c=ja(0),u=ja(1),f=_c(),g=ja(0),v=nn(1/e),M=nn(1/t),R=nn(i),I={n:o,latitudinal:c,weights:n,poleAxis:r,outputDirection:LS,dTheta:a,samples:u,envMap:f,mipInt:g,CUBEUV_TEXEL_WIDTH:v,CUBEUV_TEXEL_HEIGHT:M,CUBEUV_MAX_MIP:R},re=FS("blur");return re.fragmentNode=FL(cA(Dc({},I),{latitudinal:c.equal(1)})),NS.set(re,I),re}function oG(i,e,t){const n=_c(),r=ja(0),a=ja(0),o=nn(1/e),c=nn(1/t),u=nn(i),f={envMap:n,roughness:r,mipInt:a,CUBEUV_TEXEL_WIDTH:o,CUBEUV_TEXEL_HEIGHT:c,CUBEUV_MAX_MIP:u},g=FS("ggx");return g.fragmentNode=UL(cA(Dc({},f),{N_immutable:LS,GGX_SAMPLES:Yi(eG)})),NS.set(g,f),g}function VL(i){const e=FS("cubemap");return e.fragmentNode=Id(i,LS),e}function HL(i){const e=FS("equirect");return e.fragmentNode=_c(i,iC(LS),0),e}const GL=new WeakMap;function lG(i){const e=Math.log2(i)-2,t=1/i;return{texelWidth:1/(3*Math.max(Math.pow(2,e),7*16)),texelHeight:t,maxMip:e}}function cG(i,e,t){const n=uG(e);let r=n.get(i);if((r!==void 0?r.pmremVersion:-1)!==i.pmremVersion){const o=i.image;if(i.isCubeTexture)if(fG(o))r=t.fromCubemap(i,r);else return null;else if(dG(o))r=t.fromEquirectangular(i,r);else return null;r.pmremVersion=i.pmremVersion,n.set(i,r)}return r.texture}function uG(i){let e=GL.get(i);return e===void 0&&(e=new WeakMap,GL.set(i,e)),e}class hG extends lh{static get type(){return"PMREMNode"}constructor(e,t=null,n=null){super("vec3"),this._value=e,this._pmrem=null,this.uvNode=t,this.levelNode=n,this._generator=null;const r=new ss;r.isRenderTargetTexture=!0,this._texture=_c(r),this._width=ja(0),this._height=ja(0),this._maxMip=ja(0),this.updateBeforeType=Xo.RENDER}set value(e){this._value=e,this._pmrem=null}get value(){return this._value}updateFromTexture(e){const t=lG(e.image.height);this._texture.value=e,this._width.value=t.texelWidth,this._height.value=t.texelHeight,this._maxMip.value=t.maxMip}updateBefore(e){let t=this._pmrem;const n=t?t.pmremVersion:-1,r=this._value;n!==r.pmremVersion&&(r.isPMREMTexture===!0?t=r:t=cG(r,e.renderer,this._generator),t!==null&&(this._pmrem=t,this.updateFromTexture(t)))}setup(e){this._generator===null&&(this._generator=new iG(e.renderer)),this.updateBefore(e);let t=this.uvNode;t===null&&e.context.getUV&&(t=e.context.getUV(this,e)),t=DT.mul(tr(t.x,t.y.negate(),t.z));let n=this.levelNode;return n===null&&e.context.getTextureLevel&&(n=e.context.getTextureLevel(this)),LL(this._texture,t,n,this._width,this._height,this._maxMip)}dispose(){super.dispose(),this._generator!==null&&this._generator.dispose()}}function fG(i){if(i==null)return!1;let e=0;const t=6;for(let n=0;n0}const wC=Vo(hG).setParameterLength(1,3),zL=new WeakMap;class AG extends Ox{static get type(){return"EnvironmentNode"}constructor(e=null){super(),this.envNode=e}setup(e){const{material:t}=e;let n=this.envNode;if(n.isTextureNode||n.isMaterialReferenceNode){const v=n.isTextureNode?n.value:t[n.property];let M=zL.get(v);M===void 0&&(M=wC(v),zL.set(v,M)),n=M}const a=t.useAnisotropy===!0||t.anisotropy>0?oN:rc,o=n.context(QL(tm,a)).mul(gS),c=n.context(pG(xv)).mul(Math.PI).mul(gS),u=Nx(o),f=Nx(c);e.context.radiance.addAssign(u),e.context.iblIrradiance.addAssign(f);const g=e.context.lightingModel.clearcoatRadiance;if(g){const v=n.context(QL(pb,xy)).mul(gS),M=Nx(v);g.addAssign(M)}}}const QL=(i,e)=>{let t=null;return{getUV:()=>(t===null&&(t=su.negate().reflect(e),t=AT(i).mix(t,e).normalize(),t=t.transformDirection(FA)),t),getTextureLevel:()=>i}},pG=i=>({getUV:()=>i,getTextureLevel:()=>nn(1)}),gG=new o_;class WL extends fh{static get type(){return"MeshStandardNodeMaterial"}constructor(e){super(),this.isMeshStandardNodeMaterial=!0,this.lights=!0,this.emissiveNode=null,this.metalnessNode=null,this.roughnessNode=null,this.setDefaultValues(gG),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t===null&&e.environmentNode&&(t=e.environmentNode),t?new AG(t):null}setupLightingModel(){return new BL}setupSpecular(){const e=Ll(tr(.04),Yc.rgb,l0);mv.assign(tr(.04)),gy.assign(e),Bx.assign(1)}setupVariants(){const e=this.metalnessNode?nn(this.metalnessNode):gN;l0.assign(e);let t=this.roughnessNode?nn(this.roughnessNode):pN;t=aC({roughness:t}),tm.assign(t),this.setupSpecular(),Ay.assign(Yc.rgb.mul(e.oneMinus()))}copy(e){return this.emissiveNode=e.emissiveNode,this.metalnessNode=e.metalnessNode,this.roughnessNode=e.roughnessNode,super.copy(e)}}const mG=new fw;class vG extends WL{static get type(){return"MeshPhysicalNodeMaterial"}constructor(e){super(),this.isMeshPhysicalNodeMaterial=!0,this.clearcoatNode=null,this.clearcoatRoughnessNode=null,this.clearcoatNormalNode=null,this.sheenNode=null,this.sheenRoughnessNode=null,this.iridescenceNode=null,this.iridescenceIORNode=null,this.iridescenceThicknessNode=null,this.specularIntensityNode=null,this.specularColorNode=null,this.iorNode=null,this.transmissionNode=null,this.thicknessNode=null,this.attenuationDistanceNode=null,this.attenuationColorNode=null,this.dispersionNode=null,this.anisotropyNode=null,this.setDefaultValues(mG),this.setValues(e)}get useClearcoat(){return this.clearcoat>0||this.clearcoatNode!==null}get useIridescence(){return this.iridescence>0||this.iridescenceNode!==null}get useSheen(){return this.sheen>0||this.sheenNode!==null}get useAnisotropy(){return this.anisotropy>0||this.anisotropyNode!==null}get useTransmission(){return this.transmission>0||this.transmissionNode!==null}get useDispersion(){return this.dispersion>0||this.dispersionNode!==null}setupSpecular(){const e=this.iorNode?nn(this.iorNode):RN;vb.assign(e),mv.assign(tA(dT(vb.sub(1).div(vb.add(1))).mul(AN),tr(1)).mul(WT)),gy.assign(Ll(mv,Yc.rgb,l0)),Bx.assign(Ll(WT,1,l0))}setupLightingModel(){return new BL(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion)}setupVariants(e){if(super.setupVariants(e),this.useClearcoat){const t=this.clearcoatNode?nn(this.clearcoatNode):vN,n=this.clearcoatRoughnessNode?nn(this.clearcoatRoughnessNode):yN;X1.assign(t),pb.assign(aC({roughness:n}))}if(this.useSheen){const t=this.sheenNode?tr(this.sheenNode):bN,n=this.sheenRoughnessNode?nn(this.sheenRoughnessNode):wN;IA.assign(t),pv.assign(n)}if(this.useIridescence){const t=this.iridescenceNode?nn(this.iridescenceNode):EN,n=this.iridescenceIORNode?nn(this.iridescenceIORNode):MN,r=this.iridescenceThicknessNode?nn(this.iridescenceThicknessNode):TN;j1.assign(t),Y1.assign(n),q1.assign(r)}if(this.useAnisotropy){const t=(this.anisotropyNode?rs(this.anisotropyNode):SN).toVar();gv.assign(t.length()),Va(gv.equal(0),()=>{t.assign(rs(1,0))}).Else(()=>{t.divAssign(rs(gv)),gv.assign(gv.saturate())}),J1.assign(gv.pow2().mix(tm.pow2(),1)),gb.assign(_y[0].mul(t.x).add(_y[1].mul(t.y))),py.assign(_y[1].mul(t.x).sub(_y[0].mul(t.y)))}if(this.useTransmission){const t=this.transmissionNode?nn(this.transmissionNode):CN,n=this.thicknessNode?nn(this.thicknessNode):BN,r=this.attenuationDistanceNode?nn(this.attenuationDistanceNode):PN,a=this.attenuationColorNode?tr(this.attenuationColorNode):IN;if(tS.assign(t),jM.assign(n),YM.assign(r),qM.assign(a),this.useDispersion){const o=this.dispersionNode?nn(this.dispersionNode):LN;JM.assign(o)}}}setupClearcoatNormal(){return this.clearcoatNormalNode?tr(this.clearcoatNormalNode):xN}setup(e){e.context.setupClearcoatNormal=()=>Ix(this.setupClearcoatNormal(e),"NORMAL","vec3"),super.setup(e)}copy(e){return this.clearcoatNode=e.clearcoatNode,this.clearcoatRoughnessNode=e.clearcoatRoughnessNode,this.clearcoatNormalNode=e.clearcoatNormalNode,this.sheenNode=e.sheenNode,this.sheenRoughnessNode=e.sheenRoughnessNode,this.iridescenceNode=e.iridescenceNode,this.iridescenceIORNode=e.iridescenceIORNode,this.iridescenceThicknessNode=e.iridescenceThicknessNode,this.specularIntensityNode=e.specularIntensityNode,this.specularColorNode=e.specularColorNode,this.transmissionNode=e.transmissionNode,this.thicknessNode=e.thicknessNode,this.attenuationDistanceNode=e.attenuationDistanceNode,this.attenuationColorNode=e.attenuationColorNode,this.dispersionNode=e.dispersionNode,this.anisotropyNode=e.anisotropyNode,super.copy(e)}}class yG extends null{constructor(e=!1,t=!1,n=!1,r=!1,a=!1,o=!1,c=!1){super(e,t,n,r,a,o),this.useSSS=c}direct({lightDirection:e,lightColor:t,reflectedLight:n},r){if(this.useSSS===!0){const a=r.material,{thicknessColorNode:o,thicknessDistortionNode:c,thicknessAmbientNode:u,thicknessAttenuationNode:f,thicknessPowerNode:g,thicknessScaleNode:v}=a,M=e.add(rc.mul(c)).normalize(),R=nn(su.dot(M.negate()).saturate().pow(g).mul(v)),I=tr(R.add(u).mul(o));n.directDiffuse.addAssign(I.mul(f.mul(t)))}super.direct({lightDirection:e,lightColor:t,reflectedLight:n},r)}}class VX extends null{static get type(){return"MeshSSSNodeMaterial"}constructor(e){super(e),this.thicknessColorNode=null,this.thicknessDistortionNode=nn(.1),this.thicknessAmbientNode=nn(0),this.thicknessAttenuationNode=nn(.1),this.thicknessPowerNode=nn(2),this.thicknessScaleNode=nn(10)}get useSSS(){return this.thicknessColorNode!==null}setupLightingModel(){return new yG(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion,this.useSSS)}copy(e){return this.thicknessColorNode=e.thicknessColorNode,this.thicknessDistortionNode=e.thicknessDistortionNode,this.thicknessAmbientNode=e.thicknessAmbientNode,this.thicknessAttenuationNode=e.thicknessAttenuationNode,this.thicknessPowerNode=e.thicknessPowerNode,this.thicknessScaleNode=e.thicknessScaleNode,super.copy(e)}}const xG=Ar(({normal:i,lightDirection:e,builder:t})=>{const n=i.dot(e),r=rs(n.mul(.5).add(.5),0);if(t.material.gradientMap){const a=m0("gradientMap","texture").context({getUV:()=>r});return tr(a.r)}else{const a=r.fwidth().mul(.5);return Ll(tr(.7),tr(1),LA(nn(.7).sub(a.x),nn(.7).add(a.x),r.x))}});class _G extends CS{direct({lightDirection:e,lightColor:t,reflectedLight:n},r){const a=xG({normal:pS,lightDirection:e,builder:r}).mul(t);n.directDiffuse.addAssign(a.mul(by({diffuseColor:Yc.rgb})))}indirect(e){const{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(by({diffuseColor:Yc}))),r.indirectDiffuse.mulAssign(t)}}const bG=new Aw;class wG extends fh{static get type(){return"MeshToonNodeMaterial"}constructor(e){super(),this.isMeshToonNodeMaterial=!0,this.lights=!0,this.setDefaultValues(bG),this.setValues(e)}setupLightingModel(){return new _G}}const ZL=Ar(()=>{const i=tr(su.z,0,su.x.negate()).normalize(),e=su.cross(i);return rs(i.dot(rc),e.dot(rc)).mul(.495).add(.5)}).once(["NORMAL","VERTEX"])().toVar("matcapUV"),SG=new c_;class EG extends fh{static get type(){return"MeshMatcapNodeMaterial"}constructor(e){super(),this.isMeshMatcapNodeMaterial=!0,this.setDefaultValues(SG),this.setValues(e)}setupVariants(e){const t=ZL;let n;e.material.matcap?n=m0("matcap","texture").context({getUV:()=>t}):n=tr(Ll(.2,.8,t.y)),Yc.rgb.mulAssign(n.rgb)}}class MG extends lh{static get type(){return"RotateNode"}constructor(e,t){super(),this.positionNode=e,this.rotationNode=t}getNodeType(e){return this.positionNode.getNodeType(e)}setup(e){const{rotationNode:t,positionNode:n}=this;if(this.getNodeType(e)==="vec2"){const a=t.cos(),o=t.sin();return $1(a,o,o.negate(),a).mul(n)}else{const a=t,o=Av(Sa(1,0,0,0),Sa(0,dg(a.x),Bd(a.x).negate(),0),Sa(0,Bd(a.x),dg(a.x),0),Sa(0,0,0,1)),c=Av(Sa(dg(a.y),0,Bd(a.y),0),Sa(0,1,0,0),Sa(Bd(a.y).negate(),0,dg(a.y),0),Sa(0,0,0,1)),u=Av(Sa(dg(a.z),Bd(a.z).negate(),0,0),Sa(Bd(a.z),dg(a.z),0,0),Sa(0,0,1,0),Sa(0,0,0,1));return o.mul(c).mul(u).mul(Sa(n,1)).xyz}}}const Ib=Vo(MG).setParameterLength(2),TG=new Mm;class KL extends fh{static get type(){return"SpriteNodeMaterial"}constructor(e){super(),this.isSpriteNodeMaterial=!0,this._useSizeAttenuation=!0,this.positionNode=null,this.rotationNode=null,this.scaleNode=null,this.transparent=!0,this.setDefaultValues(TG),this.setValues(e)}setupPositionView(e){const{object:t,camera:n}=e,{positionNode:r,rotationNode:a,scaleNode:o,sizeAttenuation:c}=this,u=om.mul(tr(r||0));let f=rs(Mp[0].xyz.length(),Mp[1].xyz.length());o!==null&&(f=f.mul(rs(o))),n.isPerspectiveCamera&&c===!1&&(f=f.mul(u.z.negate()));let g=ed.xy;if(t.center&&t.center.isVector2===!0){const R=b4("center","vec2",t);g=g.sub(R.sub(.5))}g=g.mul(f);const v=nn(a||_N),M=Ib(g,v);return Sa(u.xy.add(M),u.zw)}copy(e){return this.positionNode=e.positionNode,this.rotationNode=e.rotationNode,this.scaleNode=e.scaleNode,super.copy(e)}get sizeAttenuation(){return this._useSizeAttenuation}set sizeAttenuation(e){this._useSizeAttenuation!==e&&(this._useSizeAttenuation=e,this.needsUpdate=!0)}}const CG=new O0,BG=new de;class RG extends KL{static get type(){return"PointsNodeMaterial"}constructor(e){super(),this.sizeNode=null,this.isPointsNodeMaterial=!0,this.setDefaultValues(CG),this.setValues(e)}setupPositionView(){const{positionNode:e}=this;return om.mul(tr(e||hh)).xyz}setupVertexSprite(e){const{material:t,camera:n}=e,{rotationNode:r,scaleNode:a,sizeNode:o,sizeAttenuation:c}=this;let u=super.setupVertex(e);if(t.isNodeMaterial!==!0)return u;let f=o!==null?rs(o):NN;f=f.mul(BT),n.isPerspectiveCamera&&c===!0&&(f=f.mul(PG.div(Rh.z.negate()))),a&&a.isNode&&(f=f.mul(rs(a)));let g=ed.xy;if(r&&r.isNode){const v=nn(r);g=Ib(g,v)}return g=g.mul(f),g=g.div(RT.div(2)),g=g.mul(u.w),u=u.add(Sa(g,0,0)),u}setupVertex(e){return e.object.isPoints?super.setupVertex(e):this.setupVertexSprite(e)}get alphaToCoverage(){return this._useAlphaToCoverage}set alphaToCoverage(e){this._useAlphaToCoverage!==e&&(this._useAlphaToCoverage=e,this.needsUpdate=!0)}}const PG=ja(1).onFrameUpdate(function({renderer:i}){const e=i.getSize(BG);this.value=.5*e.y});class IG extends CS{constructor(){super(),this.shadowNode=nn(1).toVar("shadowMask")}direct({lightNode:e}){e.shadowNode!==null&&this.shadowNode.mulAssign(e.shadowNode)}finish({context:e}){Yc.a.mulAssign(this.shadowNode.oneMinus()),e.outgoingLight.rgb.assign(Yc.rgb)}}const NG=new uw;class LG extends fh{static get type(){return"ShadowNodeMaterial"}constructor(e){super(),this.isShadowNodeMaterial=!0,this.lights=!0,this.transparent=!0,this.setDefaultValues(NG),this.setValues(e)}setupLightingModel(){return new IG}}const Nb=hg("vec3"),$L=hg("vec3"),XL=hg("vec3");class FG extends null{constructor(){super()}start(e){const{material:t}=e,n=hg("vec3"),r=hg("vec3");Va(Sb.sub(UA).length().greaterThan(UI.mul(2)),()=>{n.assign(Sb),r.assign(UA)}).Else(()=>{n.assign(UA),r.assign(Sb)});const a=r.sub(n),o=ja("int").onRenderUpdate(({material:v})=>v.steps),c=a.length().div(o).toVar(),u=a.normalize().toVar(),f=nn(0).toVar(),g=tr(1).toVar();t.offsetNode&&f.addAssign(t.offsetNode.mul(c)),Wc(o,()=>{const v=n.add(u.mul(f)),M=FA.mul(Sa(v,1)).xyz;t.depthNode!==null&&($L.assign(Hx(eC(M.z,p0,g0))),e.context.sceneDepthNode=Hx(t.depthNode).toVar()),e.context.positionWorld=v,e.context.shadowPositionWorld=v,e.context.positionView=M,Nb.assign(0);let R;t.scatteringNode&&(R=t.scatteringNode({positionRay:v})),super.start(e),R&&Nb.mulAssign(R);const I=Nb.mul(.01).negate().mul(c).exp();g.mulAssign(I),f.addAssign(c)}),XL.addAssign(g.saturate().oneMinus())}scatteringLight(e,t){const n=t.context.sceneDepthNode;n?Va(n.greaterThanEqual($L),()=>{Nb.addAssign(e)}):Nb.addAssign(e)}direct({lightNode:e,lightColor:t},n){if(e.light.distance===void 0)return;const r=t.xyz.toVar();r.mulAssign(e.shadowNode),this.scatteringLight(r,n)}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:r},a){const o=t.add(n).sub(r),c=t.sub(n).sub(r),u=t.sub(n).add(r),f=t.add(n).add(r),g=a.context.positionView,v=e.xyz.mul(DH({P:g,p0:o,p1:c,p2:u,p3:f})).pow(1.5);this.scatteringLight(v,a)}finish(e){e.context.outgoingLight.assign(XL)}}class HX extends null{static get type(){return"VolumeNodeMaterial"}constructor(e){super(),this.isVolumeNodeMaterial=!0,this.steps=25,this.offsetNode=null,this.scatteringNode=null,this.lights=!0,this.transparent=!0,this.side=BackSide,this.depthTest=!1,this.depthWrite=!1,this.setValues(e)}setupLightingModel(){return new FG}}class UG{constructor(e,t,n){this.renderer=e,this.nodes=t,this.info=n,this._context=typeof self!="undefined"?self:null,this._animationLoop=null,this._requestId=null}start(){const e=(t,n)=>{this._requestId=this._context.requestAnimationFrame(e),this.info.autoReset===!0&&this.info.reset(),this.nodes.nodeFrame.update(),this.info.frame=this.nodes.nodeFrame.frameId,this.renderer._inspector.begin(),this._animationLoop!==null&&this._animationLoop(t,n),this.renderer._inspector.finish()};e()}stop(){this._context.cancelAnimationFrame(this._requestId),this._requestId=null}getAnimationLoop(){return this._animationLoop}setAnimationLoop(e){this._animationLoop=e}getContext(){return this._context}setContext(e){this._context=e}dispose(){this.stop()}}class pg{constructor(){this.weakMaps={}}_getWeakMap(e){const t=e.length;let n=this.weakMaps[t];return n===void 0&&(n=new WeakMap,this.weakMaps[t]=n),n}get(e){let t=this._getWeakMap(e);for(let n=0;n{this.dispose()},this.onGeometryDispose=()=>{this.attributes=null,this.attributesId=null},this.material.addEventListener("dispose",this.onMaterialDispose),this.geometry.addEventListener("dispose",this.onGeometryDispose)}updateClipping(e){this.clippingContext=e}get clippingNeedsUpdate(){return this.clippingContext===null||this.clippingContext.cacheKey===this.clippingContextCacheKey?!1:(this.clippingContextCacheKey=this.clippingContext.cacheKey,!0)}get hardwareClippingPlanes(){return this.material.hardwareClipping===!0?this.clippingContext.unionClippingCount:0}getNodeBuilderState(){return this._nodeBuilderState||(this._nodeBuilderState=this._nodes.getForRender(this))}getMonitor(){return this._monitor||(this._monitor=this.getNodeBuilderState().observer)}getBindings(){return this._bindings||(this._bindings=this.getNodeBuilderState().createBindings())}getBindingGroup(e){for(const t of this.getBindings())if(t.name===e)return t}getIndex(){return this._geometries.getIndex(this)}getIndirect(){return this._geometries.getIndirect(this)}getIndirectOffset(){return this._geometries.getIndirectOffset(this)}getChainArray(){return[this.object,this.material,this.context,this.lightsNode]}setGeometry(e){this.geometry=e,this.attributes=null,this.attributesId=null}getAttributes(){if(this.attributes!==null)return this.attributes;const e=this.getNodeBuilderState().nodeAttributes,t=this.geometry,n=[],r=new Set,a={};for(const o of e){let c;if(o.node&&o.node.attribute?c=o.node.attribute:(c=t.getAttribute(o.name),a[o.name]=c.version),c===void 0)continue;n.push(c);const u=c.isInterleavedBufferAttribute?c.data:c;r.add(u)}return this.attributes=n,this.attributesId=a,this.vertexBuffers=Array.from(r.values()),n}getVertexBuffers(){return this.vertexBuffers===null&&this.getAttributes(),this.vertexBuffers}getDrawParameters(){const{object:e,material:t,geometry:n,group:r,drawRange:a}=this,o=this.drawParams||(this.drawParams={vertexCount:0,firstVertex:0,instanceCount:0,firstInstance:0}),c=this.getIndex(),u=c!==null;let f=1;if(n.isInstancedBufferGeometry===!0?f=n.instanceCount:e.count!==void 0&&(f=Math.max(0,e.count)),f===0)return null;if(o.instanceCount=f,e.isBatchedMesh===!0)return o;let g=1;t.wireframe===!0&&!e.isPoints&&!e.isLineSegments&&!e.isLine&&!e.isLineLoop&&(g=2);let v=a.start*g,M=(a.start+a.count)*g;r!==null&&(v=Math.max(v,r.start*g),M=Math.min(M,(r.start+r.count)*g));const R=n.attributes.position;let I=1/0;u?I=c.count:R!=null&&(I=R.count),v=Math.max(v,0),M=Math.min(M,I);const re=M-v;return re<0||re===1/0?null:(o.vertexCount=re,o.firstVertex=v,o)}getGeometryCacheKey(){const{geometry:e}=this;let t="";for(const n of Object.keys(e.attributes).sort()){const r=e.attributes[n];t+=n+",",r.data&&(t+=r.data.stride+","),r.offset&&(t+=r.offset+","),r.itemSize&&(t+=r.itemSize+","),r.normalized&&(t+="n,")}for(const n of Object.keys(e.morphAttributes).sort()){const r=e.morphAttributes[n];t+="morph-"+n+",";for(let a=0,o=r.length;a1||Array.isArray(e.morphTargetInfluences))&&(r+=e.uuid+","),r+=this.context.id+",",r+=e.receiveShadow+",",Mx(r)}get needsGeometryUpdate(){if(this.geometry.id!==this.object.geometry.id)return!0;if(this.attributes!==null){const e=this.attributesId;for(const t in e){const n=this.geometry.getAttribute(t);if(n===void 0||e[t]!==n.id)return!0}}return!1}get needsUpdate(){return this.initialNodesCacheKey!==this.getDynamicCacheKey()||this.clippingNeedsUpdate}getDynamicCacheKey(){let e=0;return this.material.isShadowPassMaterial!==!0&&(e=this._nodes.getCacheKey(this.scene,this.lightsNode)),this.camera.isArrayCamera&&(e=Tx(e,this.camera.cameras.length)),this.object.receiveShadow&&(e=Tx(e,1)),e=Tx(e,this.camera.id,this.renderer.contextNode.id,this.renderer.contextNode.version),e}getCacheKey(){return this.getMaterialCacheKey()+this.getDynamicCacheKey()}dispose(){this.material.removeEventListener("dispose",this.onMaterialDispose),this.geometry.removeEventListener("dispose",this.onGeometryDispose),this.onDispose()}}const Sy=[];class VG{constructor(e,t,n,r,a,o){this.renderer=e,this.nodes=t,this.geometries=n,this.pipelines=r,this.bindings=a,this.info=o,this.chainMaps={}}get(e,t,n,r,a,o,c,u){const f=this.getChainMap(u);Sy[0]=e,Sy[1]=t,Sy[2]=o,Sy[3]=a;let g=f.get(Sy);return g===void 0?(g=this.createRenderObject(this.nodes,this.geometries,this.renderer,e,t,n,r,a,o,c,u),f.set(Sy,g)):(g.updateClipping(c),g.needsGeometryUpdate&&g.setGeometry(e.geometry),(g.version!==t.version||g.needsUpdate)&&(g.initialCacheKey!==g.getCacheKey()?(g.dispose(),g=this.get(e,t,n,r,a,o,c,u)):g.version=t.version)),Sy.length=0,g}getChainMap(e="default"){return this.chainMaps[e]||(this.chainMaps[e]=new pg)}dispose(){this.chainMaps={}}createRenderObject(e,t,n,r,a,o,c,u,f,g,v){const M=this.getChainMap(v),R=new kG(e,t,n,r,a,o,c,u,f,g);return R.onDispose=()=>{this.pipelines.delete(R),this.bindings.deleteForRender(R),this.nodes.delete(R),M.delete(R.getChainArray())},R}}class wv{constructor(){this.data=new WeakMap}get(e){let t=this.data.get(e);return t===void 0&&(t={},this.data.set(e,t)),t}delete(e){let t=null;return this.data.has(e)&&(t=this.data.get(e),this.data.delete(e)),t}has(e){return this.data.has(e)}dispose(){this.data=new WeakMap}}const Cp={VERTEX:1,INDEX:2,STORAGE:3,INDIRECT:4},Sv=16,HG=211,GG=212;class zG extends wv{constructor(e){super(),this.backend=e}delete(e){const t=super.delete(e);return t!==null&&this.backend.destroyAttribute(e),t}update(e,t){const n=this.get(e);if(n.version===void 0)t===Cp.VERTEX?this.backend.createAttribute(e):t===Cp.INDEX?this.backend.createIndexAttribute(e):t===Cp.STORAGE?this.backend.createStorageAttribute(e):t===Cp.INDIRECT&&this.backend.createIndirectStorageAttribute(e),n.version=this._getBufferAttribute(e).version;else{const r=this._getBufferAttribute(e);(n.version{this.info.memory.geometries--;const a=t.index,o=e.getAttributes();a!==null&&this.attributes.delete(a);for(const u of o)this.attributes.delete(u);const c=this.wireframes.get(t);c!==void 0&&this.attributes.delete(c),t.removeEventListener("dispose",r),this._geometryDisposeListeners.delete(t)};t.addEventListener("dispose",r),this._geometryDisposeListeners.set(t,r)}updateAttributes(e){const t=e.getAttributes();for(const a of t)a.isStorageBufferAttribute||a.isStorageInstancedBufferAttribute?this.updateAttribute(a,Cp.STORAGE):this.updateAttribute(a,Cp.VERTEX);const n=this.getIndex(e);n!==null&&this.updateAttribute(n,Cp.INDEX);const r=e.geometry.indirect;r!==null&&this.updateAttribute(r,Cp.INDIRECT)}updateAttribute(e,t){const n=this.info.render.calls;e.isInterleavedBufferAttribute?this.attributeCall.get(e)===void 0?(this.attributes.update(e,t),this.attributeCall.set(e,n)):this.attributeCall.get(e.data)!==n&&(this.attributes.update(e,t),this.attributeCall.set(e.data,n),this.attributeCall.set(e,n)):this.attributeCall.get(e)!==n&&(this.attributes.update(e,t),this.attributeCall.set(e,n))}getIndirect(e){return e.geometry.indirect}getIndirectOffset(e){return e.geometry.indirectOffset}getIndex(e){const{geometry:t,material:n}=e;let r=t.index;if(n.wireframe===!0){const a=this.wireframes;let o=a.get(t);o===void 0?(o=YL(t),a.set(t,o)):o.version!==jL(t)&&(this.attributes.delete(o),o=YL(t),a.set(t,o)),r=o}return r}dispose(){for(const[e,t]of this._geometryDisposeListeners.entries())e.removeEventListener("dispose",t);this._geometryDisposeListeners.clear()}}class WG{constructor(){this.autoReset=!0,this.frame=0,this.calls=0,this.render={calls:0,frameCalls:0,drawCalls:0,triangles:0,points:0,lines:0,timestamp:0},this.compute={calls:0,frameCalls:0,timestamp:0},this.memory={geometries:0,textures:0}}update(e,t,n){this.render.drawCalls++,e.isMesh||e.isSprite?this.render.triangles+=n*(t/3):e.isPoints?this.render.points+=n*t:e.isLineSegments?this.render.lines+=n*(t/2):e.isLine?this.render.lines+=n*(t-1):ri("WebGPUInfo: Unknown object type.")}reset(){this.render.drawCalls=0,this.render.frameCalls=0,this.compute.frameCalls=0,this.render.triangles=0,this.render.points=0,this.render.lines=0}dispose(){this.reset(),this.calls=0,this.render.calls=0,this.compute.calls=0,this.render.timestamp=0,this.compute.timestamp=0,this.memory.geometries=0,this.memory.textures=0}}class qL{constructor(e){this.cacheKey=e,this.usedTimes=0}}class ZG extends qL{constructor(e,t,n){super(e),this.vertexProgram=t,this.fragmentProgram=n}}class KG extends qL{constructor(e,t){super(e),this.computeProgram=t,this.isComputePipeline=!0}}let $G=0;class SC{constructor(e,t,n,r=null,a=null){this.id=$G++,this.code=e,this.stage=t,this.name=n,this.transforms=r,this.attributes=a,this.usedTimes=0}}class XG extends wv{constructor(e,t){super(),this.backend=e,this.nodes=t,this.bindings=null,this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}getForCompute(e,t){const{backend:n}=this,r=this.get(e);if(this._needsComputeUpdate(e)){const a=r.pipeline;a&&(a.usedTimes--,a.computeProgram.usedTimes--);const o=this.nodes.getForCompute(e);let c=this.programs.compute.get(o.computeShader);c===void 0&&(a&&a.computeProgram.usedTimes===0&&this._releaseProgram(a.computeProgram),c=new SC(o.computeShader,"compute",e.name,o.transforms,o.nodeAttributes),this.programs.compute.set(o.computeShader,c),n.createProgram(c));const u=this._getComputeCacheKey(e,c);let f=this.caches.get(u);f===void 0&&(a&&a.usedTimes===0&&this._releasePipeline(a),f=this._getComputePipeline(e,c,u,t)),f.usedTimes++,c.usedTimes++,r.version=e.version,r.pipeline=f}return r.pipeline}getForRender(e,t=null){const{backend:n}=this,r=this.get(e);if(this._needsRenderUpdate(e)){const a=r.pipeline;a&&(a.usedTimes--,a.vertexProgram.usedTimes--,a.fragmentProgram.usedTimes--);const o=e.getNodeBuilderState(),c=e.material?e.material.name:"";let u=this.programs.vertex.get(o.vertexShader);u===void 0&&(a&&a.vertexProgram.usedTimes===0&&this._releaseProgram(a.vertexProgram),u=new SC(o.vertexShader,"vertex",c),this.programs.vertex.set(o.vertexShader,u),n.createProgram(u));let f=this.programs.fragment.get(o.fragmentShader);f===void 0&&(a&&a.fragmentProgram.usedTimes===0&&this._releaseProgram(a.fragmentProgram),f=new SC(o.fragmentShader,"fragment",c),this.programs.fragment.set(o.fragmentShader,f),n.createProgram(f));const g=this._getRenderCacheKey(e,u,f);let v=this.caches.get(g);v===void 0?(a&&a.usedTimes===0&&this._releasePipeline(a),v=this._getRenderPipeline(e,u,f,g,t)):e.pipeline=v,v.usedTimes++,u.usedTimes++,f.usedTimes++,r.pipeline=v}return r.pipeline}delete(e){const t=this.get(e).pipeline;return t&&(t.usedTimes--,t.usedTimes===0&&this._releasePipeline(t),t.isComputePipeline?(t.computeProgram.usedTimes--,t.computeProgram.usedTimes===0&&this._releaseProgram(t.computeProgram)):(t.fragmentProgram.usedTimes--,t.vertexProgram.usedTimes--,t.vertexProgram.usedTimes===0&&this._releaseProgram(t.vertexProgram),t.fragmentProgram.usedTimes===0&&this._releaseProgram(t.fragmentProgram))),super.delete(e)}dispose(){super.dispose(),this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}updateForRender(e){this.getForRender(e)}_getComputePipeline(e,t,n,r){n=n||this._getComputeCacheKey(e,t);let a=this.caches.get(n);return a===void 0&&(a=new KG(n,t),this.caches.set(n,a),this.backend.createComputePipeline(a,r)),a}_getRenderPipeline(e,t,n,r,a){r=r||this._getRenderCacheKey(e,t,n);let o=this.caches.get(r);return o===void 0&&(o=new ZG(r,t,n),this.caches.set(r,o),e.pipeline=o,this.backend.createRenderPipeline(e,a)),o}_getComputeCacheKey(e,t){return e.id+","+t.id}_getRenderCacheKey(e,t,n){return t.id+","+n.id+","+this.backend.getRenderCacheKey(e)}_releasePipeline(e){this.caches.delete(e.cacheKey)}_releaseProgram(e){const t=e.code,n=e.stage;this.programs[n].delete(t)}_needsComputeUpdate(e){const t=this.get(e);return t.pipeline===void 0||t.version!==e.version}_needsRenderUpdate(e){return this.get(e).pipeline===void 0||this.backend.needsRenderUpdate(e)}}class jG extends wv{constructor(e,t,n,r,a,o){super(),this.backend=e,this.textures=n,this.pipelines=a,this.attributes=r,this.nodes=t,this.info=o,this.pipelines.bindings=this}getForRender(e){const t=e.getBindings();for(const n of t){const r=this.get(n);r.bindGroup===void 0&&(this._init(n),this.backend.createBindings(n,t,0),r.bindGroup=n)}return t}getForCompute(e){const t=this.nodes.getForCompute(e).bindings;for(const n of t){const r=this.get(n);r.bindGroup===void 0&&(this._init(n),this.backend.createBindings(n,t,0),r.bindGroup=n)}return t}updateForCompute(e){this._updateBindings(this.getForCompute(e))}updateForRender(e){this._updateBindings(this.getForRender(e))}deleteForCompute(e){const t=this.nodes.getForCompute(e).bindings;for(const n of t)this.backend.deleteBindGroupData(n),this.delete(n)}deleteForRender(e){const t=e.getBindings();for(const n of t)this.backend.deleteBindGroupData(n),this.delete(n)}_updateBindings(e){for(const t of e)this._update(t,e)}_init(e){for(const t of e.bindings)if(t.isSampledTexture)this.textures.updateTexture(t.texture);else if(t.isSampler)this.textures.updateSampler(t.texture);else if(t.isStorageBuffer){const n=t.attribute,r=n.isIndirectStorageBufferAttribute?Cp.INDIRECT:Cp.STORAGE;this.attributes.update(n,r)}}_update(e,t){const{backend:n}=this;let r=!1,a=!0,o=0,c=0;for(const u of e.bindings)if(this.nodes.updateGroup(u)!==!1){if(u.isStorageBuffer){const g=u.attribute,v=g.isIndirectStorageBufferAttribute?Cp.INDIRECT:Cp.STORAGE;this.attributes.update(g,v)}if(u.isUniformBuffer)u.update()&&n.updateBinding(u);else if(u.isSampledTexture){const g=u.update(),v=u.texture,M=this.textures.get(v);if(g&&(this.textures.updateTexture(v),u.generation!==M.generation&&(u.generation=M.generation,r=!0,a=!1)),n.get(v).externalTexture!==void 0||M.isDefaultTexture?a=!1:(o=o*10+v.id,c+=v.version),v.isStorageTexture===!0&&v.mipmapsAutoUpdate===!0){const I=this.get(v);u.store===!0?I.needsMipmap=!0:this.textures.needsMipmaps(v)&&I.needsMipmap===!0&&(this.backend.generateMipmaps(v),I.needsMipmap=!1)}}else if(u.isSampler&&u.update()){const v=this.textures.updateSampler(u.texture);u.samplerKey!==v&&(u.samplerKey=v,r=!0,a=!1)}}r===!0&&this.backend.updateBindings(e,t,a?o:0,c)}}function YG(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.z!==e.z?i.z-e.z:i.id-e.id}function JL(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.z!==e.z?e.z-i.z:i.id-e.id}function eF(i){return(i.transmission>0||i.transmissionNode&&i.transmissionNode.isNode)&&i.side===ue&&i.forceSinglePass===!1}class qG{constructor(e,t,n){this.renderItems=[],this.renderItemsIndex=0,this.opaque=[],this.transparentDoublePass=[],this.transparent=[],this.bundles=[],this.lightsNode=e.getNode(t,n),this.lightsArray=[],this.scene=t,this.camera=n,this.occlusionQueryCount=0}begin(){return this.renderItemsIndex=0,this.opaque.length=0,this.transparentDoublePass.length=0,this.transparent.length=0,this.bundles.length=0,this.lightsArray.length=0,this.occlusionQueryCount=0,this}getNextRenderItem(e,t,n,r,a,o,c){let u=this.renderItems[this.renderItemsIndex];return u===void 0?(u={id:e.id,object:e,geometry:t,material:n,groupOrder:r,renderOrder:e.renderOrder,z:a,group:o,clippingContext:c},this.renderItems[this.renderItemsIndex]=u):(u.id=e.id,u.object=e,u.geometry=t,u.material=n,u.groupOrder=r,u.renderOrder=e.renderOrder,u.z=a,u.group=o,u.clippingContext=c),this.renderItemsIndex++,u}push(e,t,n,r,a,o,c){const u=this.getNextRenderItem(e,t,n,r,a,o,c);e.occlusionTest===!0&&this.occlusionQueryCount++,n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(eF(n)&&this.transparentDoublePass.push(u),this.transparent.push(u)):this.opaque.push(u)}unshift(e,t,n,r,a,o,c){const u=this.getNextRenderItem(e,t,n,r,a,o,c);n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(eF(n)&&this.transparentDoublePass.unshift(u),this.transparent.unshift(u)):this.opaque.unshift(u)}pushBundle(e){this.bundles.push(e)}pushLight(e){this.lightsArray.push(e)}sort(e,t){this.opaque.length>1&&this.opaque.sort(e||YG),this.transparentDoublePass.length>1&&this.transparentDoublePass.sort(t||JL),this.transparent.length>1&&this.transparent.sort(t||JL)}finish(){this.lightsNode.setLights(this.lightsArray);for(let e=this.renderItemsIndex,t=this.renderItems.length;e>t,f=c.height>>t;let g=e.depthTexture||a[t];const v=e.depthBuffer===!0||e.stencilBuffer===!0;let M=!1;g===void 0&&v&&(g=new cc,g.format=e.stencilBuffer?S:W,g.type=e.stencilBuffer?ur:ct,g.image.width=u,g.image.height=f,g.image.depth=c.depth,g.renderTarget=e,g.isArrayTexture=e.multiview===!0&&c.depth>1,a[t]=g),(n.width!==c.width||c.height!==n.height)&&(M=!0,g&&(g.needsUpdate=!0,g.image.width=u,g.image.height=f,g.image.depth=g.isArrayTexture?g.image.depth:1)),n.width=c.width,n.height=c.height,n.textures=o,n.depthTexture=g||null,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,n.renderTarget=e,n.sampleCount!==r&&(M=!0,g&&(g.needsUpdate=!0),n.sampleCount=r);const R={sampleCount:r};if(e.isXRRenderTarget!==!0){for(let I=0;I{this._destroyRenderTarget(e)},e.addEventListener("dispose",n.onDispose))}updateTexture(e,t={}){const n=this.get(e);if(n.initialized===!0&&n.version===e.version)return;const r=e.isRenderTargetTexture||e.isDepthTexture||e.isFramebufferTexture,a=this.backend;if(r&&n.initialized===!0&&a.destroyTexture(e),e.isFramebufferTexture){const f=this.renderer.getRenderTarget();f?e.type=f.texture.type:e.type=gs}const{width:o,height:c,depth:u}=this.getSize(e);if(t.width=o,t.height=c,t.depth=u,t.needsMipmaps=this.needsMipmaps(e),t.levels=t.needsMipmaps?this.getMipLevels(e,o,c):1,e.isCubeTexture&&e.mipmaps.length>0&&t.levels++,r||e.isStorageTexture===!0||e.isExternalTexture===!0)a.createTexture(e,t),n.generation=e.version;else if(e.version>0){const f=e.image;if(f===void 0)Qr("Renderer: Texture marked for update but image is undefined.");else if(f.complete===!1)Qr("Renderer: Texture marked for update but image is incomplete.");else{if(e.images){const v=[];for(const M of e.images)v.push(M);t.images=v}else t.image=f;(n.isDefaultTexture===void 0||n.isDefaultTexture===!0)&&(a.createTexture(e,t),n.isDefaultTexture=!1,n.generation=e.version),e.source.dataReady===!0&&a.updateTexture(e,t);const g=e.isStorageTexture===!0&&e.mipmapsAutoUpdate===!1;t.needsMipmaps&&e.mipmaps.length===0&&!g&&a.generateMipmaps(e),e.onUpdate&&e.onUpdate(e)}}else a.createDefaultTexture(e),n.isDefaultTexture=!0,n.generation=e.version;n.initialized!==!0&&(n.initialized=!0,n.generation=e.version,this.info.memory.textures++,e.isVideoTexture&&wr.enabled===!0&&wr.getTransfer(e.colorSpace)!==Xs&&Qr("WebGPURenderer: Video textures must use a color space with a sRGB transfer function, e.g. SRGBColorSpace."),n.onDispose=()=>{this._destroyTexture(e)},e.addEventListener("dispose",n.onDispose)),n.version=e.version}updateSampler(e){return this.backend.updateSampler(e)}getSize(e,t=sz){let n=e.images?e.images[0]:e.image;return n?(n.image!==void 0&&(n=n.image),typeof HTMLVideoElement!="undefined"&&n instanceof HTMLVideoElement?(t.width=n.videoWidth||1,t.height=n.videoHeight||1,t.depth=1):typeof VideoFrame!="undefined"&&n instanceof VideoFrame?(t.width=n.displayWidth||1,t.height=n.displayHeight||1,t.depth=1):(t.width=n.width||1,t.height=n.height||1,t.depth=e.isCubeTexture?6:n.depth||1)):t.width=t.height=t.depth=1,t}getMipLevels(e,t,n){let r;return e.mipmaps.length>0?r=e.mipmaps.length:e.isCompressedTexture===!0?r=1:r=Math.floor(Math.log2(Math.max(t,n)))+1,r}needsMipmaps(e){return e.generateMipmaps===!0||e.mipmaps.length>0}_destroyRenderTarget(e){if(this.has(e)===!0){const t=this.get(e),n=t.textures,r=t.depthTexture;e.removeEventListener("dispose",t.onDispose);for(let a=0;anew nF(i,e);class lz extends Ua{static get type(){return"StackNode"}constructor(e=null){super(),this.nodes=[],this.outputNode=null,this.parent=e,this._currentCond=null,this._expressionNode=null,this._currentNode=null,this.isStackNode=!0}getElementType(e){return this.hasOutput?this.outputNode.getElementType(e):"void"}getNodeType(e){return this.hasOutput?this.outputNode.getNodeType(e):"void"}getMemberType(e,t){return this.hasOutput?this.outputNode.getMemberType(e,t):"void"}addToStack(e,t=this.nodes.length){return e.isNode!==!0?(ri("TSL: Invalid node added to stack."),this):(this.nodes.splice(t,0,e),this)}addToStackBefore(e){const t=this._currentNode?this.nodes.indexOf(this._currentNode):0;return this.addToStack(e,t)}If(e,t){const n=new Cx(t);return this._currentCond=Jf(e,n),this.addToStack(this._currentCond)}ElseIf(e,t){const n=new Cx(t),r=Jf(e,n);return this._currentCond.elseNode=r,this._currentCond=r,this}Else(e){return this._currentCond.elseNode=new Cx(e),this}Switch(e){return this._expressionNode=qs(e),this}Case(...e){const t=[];if(e.length>=2)for(let c=0;c{if(this._currentNode=f,!(f.isVarNode&&f.isIntent(e)&&f.isAssign(e)!==!0)){if(r==="setup")f.build(e);else if(r==="analyze")f.build(e,this);else if(r==="generate"){const g=e.getDataFromNode(f,"any").stages,v=g&&g[e.shaderStage];if(f.isVarNode&&v&&v.length===1&&v[0]&&v[0].isStackNode)return;f.build(e,"void")}}},o=[...this.nodes];for(const f of o)a(f);this._currentNode=null;const c=this.nodes.filter(f=>o.indexOf(f)===-1);for(const f of c)a(f);let u;return this.hasOutput?u=this.outputNode.build(e,...t):u=super.build(e,...t),Ab(n),e.removeActiveStack(this),u}}const US=Vo(lz).setParameterLength(0,1);function cz(i){return Object.entries(i).map(([e,t])=>typeof t=="string"?{name:e,type:t,atomic:!1}:{name:e,type:t.type,atomic:t.atomic||!1})}class uz extends Ua{static get type(){return"StructTypeNode"}constructor(e,t=null){super("struct"),this.membersLayout=cz(e),this.name=t,this.isStructLayoutNode=!0}getLength(){const e=Float32Array.BYTES_PER_ELEMENT;let t=1,n=0;for(const r of this.membersLayout){const a=r.type,o=W2(a),c=Z2(a)/e;t=Math.max(t,c);const f=n%t%c;f!==0&&(n+=c-f),n+=o}return Math.ceil(n/t)*t}getMemberType(e,t){const n=this.membersLayout.find(r=>r.name===t);return n?n.type:"void"}getNodeType(e){return e.getStructTypeFromNode(this,this.membersLayout,this.name).name}setup(e){e.getStructTypeFromNode(this,this.membersLayout,this.name),e.addInclude(this)}generate(e){return this.getNodeType(e)}}class hz extends Ua{static get type(){return"StructNode"}constructor(e,t){super("vec3"),this.structTypeNode=e,this.values=t,this.isStructNode=!0}getNodeType(e){return this.structTypeNode.getNodeType(e)}getMemberType(e,t){return this.structTypeNode.getMemberType(e,t)}generate(e){const t=e.getVarFromNode(this),n=t.type,r=e.getPropertyName(t);return e.addLineFlowCode(`${r} = ${e.generateStruct(n,this.structTypeNode.membersLayout,this.values)}`,this),t.name}}const fz=(i,e=null)=>{const t=new uz(i,e),n=(...r)=>{let a=null;if(r.length>0)if(r[0].isNode){a={};const o=Object.keys(i);for(let c=0;cnew Fb(i,"int","float"),oF=i=>new Fb(i,"uint","float"),gz=i=>new Fb(i,"float","int"),mz=i=>new Fb(i,"float","uint"),DS={};class OA extends Xr{static get type(){return"BitcountNode"}constructor(e,t){super(e,t),this.isBitcountNode=!0}_resolveElementType(e,t,n){n==="int"?t.assign(aF(e,"uint")):t.assign(e)}_returnDataNode(e){switch(e){case"uint":return Yi;case"int":return Yn;case"uvec2":return QM;case"uvec3":return dy;case"uvec4":return $M;case"ivec2":return sf;case"ivec3":return WM;case"ivec4":return KM}}_createTrailingZerosBaseLayout(e,t){const n=this._returnDataNode(t);return Ar(([a])=>{const o=Yi(0);this._resolveElementType(a,o,t);const c=nn(o.bitAnd(lT(o))),f=oF(c).shiftRight(23).sub(127);return n(f)}).setLayout({name:e,type:t,inputs:[{name:"value",type:t}]})}_createLeadingZerosBaseLayout(e,t){const n=this._returnDataNode(t);return Ar(([a])=>{Va(a.equal(Yi(0)),()=>Yi(32));const o=Yi(0),c=Yi(0);return this._resolveElementType(a,o,t),Va(o.shiftRight(16).equal(0),()=>{c.addAssign(16),o.shiftLeftAssign(16)}),Va(o.shiftRight(24).equal(0),()=>{c.addAssign(8),o.shiftLeftAssign(8)}),Va(o.shiftRight(28).equal(0),()=>{c.addAssign(4),o.shiftLeftAssign(4)}),Va(o.shiftRight(30).equal(0),()=>{c.addAssign(2),o.shiftLeftAssign(2)}),Va(o.shiftRight(31).equal(0),()=>{c.addAssign(1)}),n(c)}).setLayout({name:e,type:t,inputs:[{name:"value",type:t}]})}_createOneBitsBaseLayout(e,t){const n=this._returnDataNode(t);return Ar(([a])=>{const o=Yi(0);this._resolveElementType(a,o,t),o.assign(o.sub(o.shiftRight(Yi(1)).bitAnd(Yi(1431655765)))),o.assign(o.bitAnd(Yi(858993459)).add(o.shiftRight(Yi(2)).bitAnd(Yi(858993459))));const c=o.add(o.shiftRight(Yi(4))).bitAnd(Yi(252645135)).mul(Yi(16843009)).shiftRight(Yi(24));return n(c)}).setLayout({name:e,type:t,inputs:[{name:"value",type:t}]})}_createMainLayout(e,t,n,r){const a=this._returnDataNode(t);return Ar(([c])=>{if(n===1)return a(r(c));{const u=a(0),f=["x","y","z","w"];for(let g=0;gv(n))()}}OA.COUNT_TRAILING_ZEROS="countTrailingZeros",OA.COUNT_LEADING_ZEROS="countLeadingZeros",OA.COUNT_ONE_BITS="countOneBits";const vz=bs(OA,OA.COUNT_TRAILING_ZEROS).setParameterLength(1),yz=bs(OA,OA.COUNT_LEADING_ZEROS).setParameterLength(1),xz=bs(OA,OA.COUNT_ONE_BITS).setParameterLength(1),_z=Ar(([i])=>{const e=i.toUint().mul(747796405).add(2891336453),t=e.shiftRight(e.shiftRight(28).add(4)).bitXor(e).mul(277803737);return t.shiftRight(22).bitXor(t).toFloat().mul(1/yg(2,32))}),MC=(i,e)=>Sp(Ho(4,i.mul(Yl(1,i))),e),bz=(i,e)=>i.lessThan(.5)?MC(i.mul(2),e).div(2):Yl(1,MC(Ho(Yl(1,i),2),e).div(2)),wz=(i,e,t)=>Sp(NA(Sp(i,e),Qh(Sp(i,e),Sp(Yl(1,i),t))),1/e),Sz=(i,e)=>Bd(rS.mul(e.mul(i).sub(1))).div(rS.mul(e.mul(i).sub(1)));class TC extends lh{static get type(){return"PackFloatNode"}constructor(e,t){super(),this.vectorNode=t,this.encoding=e,this.isPackFloatNode=!0}getNodeType(){return"uint"}generate(e){const t=this.vectorNode.getNodeType(e);return`${e.getFloatPackingMethod(this.encoding)}(${this.vectorNode.build(e,t)})`}}const Ez=bs(TC,"snorm").setParameterLength(1),Mz=bs(TC,"unorm").setParameterLength(1),Tz=bs(TC,"float16").setParameterLength(1);class CC extends lh{static get type(){return"UnpackFloatNode"}constructor(e,t){super(),this.uintNode=t,this.encoding=e,this.isUnpackFloatNode=!0}getNodeType(){return"vec2"}generate(e){const t=this.uintNode.getNodeType(e);return`${e.getFloatUnpackingMethod(this.encoding)}(${this.uintNode.build(e,t)})`}}const Cz=bs(CC,"snorm").setParameterLength(1),Bz=bs(CC,"unorm").setParameterLength(1),Rz=bs(CC,"float16").setParameterLength(1),y0=Ar(([i])=>i.fract().sub(.5).abs()).setLayout({name:"tri",type:"float",inputs:[{name:"x",type:"float"}]}),Pz=Ar(([i])=>tr(y0(i.z.add(y0(i.y.mul(1)))),y0(i.z.add(y0(i.x.mul(1)))),y0(i.y.add(y0(i.x.mul(1)))))).setLayout({name:"tri3",type:"vec3",inputs:[{name:"p",type:"vec3"}]}),Iz=Ar(([i,e,t])=>{const n=tr(i).toVar(),r=nn(1.4).toVar(),a=nn(0).toVar(),o=tr(n).toVar();return Wc({start:nn(0),end:nn(3),type:"float",condition:"<="},()=>{const c=tr(Pz(o.mul(2))).toVar();n.addAssign(c.add(t.mul(nn(.1).mul(e)))),o.mulAssign(1.8),r.mulAssign(1.5),n.mulAssign(1.2);const u=nn(y0(n.z.add(y0(n.x.add(y0(n.y)))))).toVar();a.addAssign(u.div(r)),o.addAssign(.14)}),a}).setLayout({name:"triNoise3D",type:"float",inputs:[{name:"position",type:"vec3"},{name:"speed",type:"float"},{name:"time",type:"float"}]});class Nz extends Ua{static get type(){return"FunctionOverloadingNode"}constructor(e=[],...t){super(),this.functionNodes=e,this.parametersNodes=t,this._candidateFn=null,this.global=!0}getNodeType(e){return this.getCandidateFn(e).shaderNode.layout.type}getCandidateFn(e){const t=this.parametersNodes;let n=this._candidateFn;if(n===null){let r=null,a=-1;for(const o of this.functionNodes){const u=o.shaderNode.layout;if(u===null)throw new Error("FunctionOverloadingNode: FunctionNode must be a layout.");const f=u.inputs;if(t.length===f.length){let g=0;for(let v=0;va&&(r=o,a=g)}}this._candidateFn=n=r}return n}setup(e){return this.getCandidateFn(e)(...this.parametersNodes)}}const Lz=Vo(Nz),td=i=>(...e)=>Lz(i,...e),Wx=ja(0).setGroup(Ja).onRenderUpdate(i=>i.time),Fz=ja(0).setGroup(Ja).onRenderUpdate(i=>i.deltaTime),lF=ja(0,"uint").setGroup(Ja).onRenderUpdate(i=>i.frameId),Uz=(i=Wx)=>i.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5),Dz=(i=Wx)=>i.fract().round(),Oz=(i=Wx)=>i.add(.5).fract().mul(2).sub(1).abs(),kz=(i=Wx)=>i.fract();function Vz(i,e=null){return u0(e,{getUV:i})}const Hz=Ar(([i,e,t=rs(.5)])=>Ib(i.sub(t),e).add(t)),Gz=Ar(([i,e,t=rs(.5)])=>{const n=i.sub(t),r=n.dot(n),o=r.mul(r).mul(e);return i.add(n.mul(o))}),zz=Ar(({position:i=null,horizontal:e=!0,vertical:t=!1})=>{let n;i!==null?(n=Mp.toVar(),n[3][0]=i.x,n[3][1]=i.y,n[3][2]=i.z):n=Mp;const r=FA.mul(n);return fb(e)&&(r[0][0]=Mp[0].length(),r[0][1]=0,r[0][2]=0),fb(t)&&(r[1][0]=0,r[1][1]=Mp[1].length(),r[1][2]=0),r[2][0]=0,r[2][1]=0,r[2][2]=1,Pd.mul(r).mul(hh)}),Qz=Ar(([i=null])=>{const e=Hx();return Hx(JT(i)).sub(e).lessThan(0).select(A0,i)});class Wz extends Ua{static get type(){return"SpriteSheetUVNode"}constructor(e,t=qc(),n=nn(0)){super("vec2"),this.countNode=e,this.uvNode=t,this.frameNode=n}setup(){const{frameNode:e,uvNode:t,countNode:n}=this,{width:r,height:a}=n,o=e.mod(r.mul(a)).floor(),c=o.mod(r),u=a.sub(o.add(1).div(r).ceil()),f=n.reciprocal(),g=rs(c,u);return t.add(g).mul(f)}}const Zz=Vo(Wz).setParameterLength(3),cF=Ar(([i,e=null,t=null,n=nn(1),r=hh,a=nA])=>{let o=a.abs().normalize();o=o.div(o.dot(tr(1)));const c=r.yz.mul(n),u=r.zx.mul(n),f=r.xy.mul(n),g=i.value,v=e!==null?e.value:g,M=t!==null?t.value:g,R=_c(g,c).mul(o.x),I=_c(v,u).mul(o.y),re=_c(M,f).mul(o.z);return Qh(R,I,re)}),Kz=(...i)=>cF(...i),Zx=new Gh,Ey=new ce,Kx=new ce,BC=new ce,Ub=new ti,OS=new ce(0,0,-1),um=new ts,Db=new ce,kS=new ce,Ob=new ts,VS=new de,HS=new La,$z=A0.flipX();HS.depthTexture=new cc(1,1);let GS=!1;class RC extends am{static get type(){return"ReflectorNode"}constructor(e={}){super(e.defaultTexture||HS.texture,$z),this._reflectorBaseNode=e.reflector||new Xz(this,e),this._depthNode=null,this.setUpdateMatrix(!1)}get reflector(){return this._reflectorBaseNode}get target(){return this._reflectorBaseNode.target}getDepthNode(){if(this._depthNode===null){if(this._reflectorBaseNode.depth!==!0)throw new Error("THREE.ReflectorNode: Depth node can only be requested when the reflector is created with { depth: true }. ");this._depthNode=qs(new RC({defaultTexture:HS.depthTexture,reflector:this._reflectorBaseNode}))}return this._depthNode}setup(e){return e.object.isQuadMesh||this._reflectorBaseNode.build(e),super.setup(e)}clone(){const e=new this.constructor(this.reflectorNode);return e.uvNode=this.uvNode,e.levelNode=this.levelNode,e.biasNode=this.biasNode,e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.offsetNode=this.offsetNode,e._reflectorBaseNode=this._reflectorBaseNode,e}dispose(){super.dispose(),this._reflectorBaseNode.dispose()}}class Xz extends Ua{static get type(){return"ReflectorBaseNode"}constructor(e,t={}){super();const{target:n=new dc,resolutionScale:r=1,generateMipmaps:a=!1,bounces:o=!0,depth:c=!1,samples:u=0}=t;this.textureNode=e,this.target=n,this.resolutionScale=r,t.resolution!==void 0&&(Za('ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".'),this.resolutionScale=t.resolution),this.generateMipmaps=a,this.bounces=o,this.depth=c,this.samples=u,this.updateBeforeType=o?Xo.RENDER:Xo.FRAME,this.virtualCameras=new WeakMap,this.renderTargets=new Map,this.forceUpdate=!1,this.hasOutput=!1}_updateResolution(e,t){const n=this.resolutionScale;t.getDrawingBufferSize(VS),e.setSize(Math.round(VS.width*n),Math.round(VS.height*n))}setup(e){return this._updateResolution(HS,e.renderer),super.setup(e)}dispose(){super.dispose();for(const e of this.renderTargets.values())e.dispose()}getVirtualCamera(e){let t=this.virtualCameras.get(e);return t===void 0&&(t=e.clone(),this.virtualCameras.set(e,t)),t}getRenderTarget(e){let t=this.renderTargets.get(e);return t===void 0&&(t=new La(0,0,{type:zt,samples:this.samples}),this.generateMipmaps===!0&&(t.texture.minFilter=ui,t.texture.generateMipmaps=!0),this.depth===!0&&(t.depthTexture=new cc),this.renderTargets.set(e,t)),t}updateBefore(e){if(this.bounces===!1&&GS)return!1;GS=!0;const{scene:t,camera:n,renderer:r,material:a}=e,{target:o}=this,c=this.getVirtualCamera(n),u=this.getRenderTarget(c);r.getDrawingBufferSize(VS),this._updateResolution(u,r),Kx.setFromMatrixPosition(o.matrixWorld),BC.setFromMatrixPosition(n.matrixWorld),Ub.extractRotation(o.matrixWorld),Ey.set(0,0,1),Ey.applyMatrix4(Ub),Db.subVectors(Kx,BC);const f=Db.dot(Ey)>0;let g=!1;if(f===!0&&this.forceUpdate===!1){if(this.hasOutput===!1){GS=!1;return}g=!0}Db.reflect(Ey).negate(),Db.add(Kx),Ub.extractRotation(n.matrixWorld),OS.set(0,0,-1),OS.applyMatrix4(Ub),OS.add(BC),kS.subVectors(Kx,OS),kS.reflect(Ey).negate(),kS.add(Kx),c.coordinateSystem=n.coordinateSystem,c.position.copy(Db),c.up.set(0,1,0),c.up.applyMatrix4(Ub),c.up.reflect(Ey),c.lookAt(kS),c.near=n.near,c.far=n.far,c.updateMatrixWorld(),c.projectionMatrix.copy(n.projectionMatrix),Zx.setFromNormalAndCoplanarPoint(Ey,Kx),Zx.applyMatrix4(c.matrixWorldInverse),um.set(Zx.normal.x,Zx.normal.y,Zx.normal.z,Zx.constant);const v=c.projectionMatrix;Ob.x=(Math.sign(um.x)+v.elements[8])/v.elements[0],Ob.y=(Math.sign(um.y)+v.elements[9])/v.elements[5],Ob.z=-1,Ob.w=(1+v.elements[10])/v.elements[14],um.multiplyScalar(1/um.dot(Ob));const M=0;v.elements[2]=um.x,v.elements[6]=um.y,v.elements[10]=r.coordinateSystem===Bl?um.z-M:um.z+1-M,v.elements[14]=um.w,this.textureNode.value=u.texture,this.depth===!0&&(this.textureNode.getDepthNode().value=u.depthTexture),a.visible=!1;const R=r.getRenderTarget(),I=r.getMRT(),re=r.autoClear;r.setMRT(null),r.setRenderTarget(u),r.autoClear=!0;const ne=t.name;t.name=(t.name||"Scene")+" [ Reflector ]",g?(r.clear(),this.hasOutput=!1):(r.render(t,c),this.hasOutput=!0),t.name=ne,r.setMRT(I),r.setRenderTarget(R),r.autoClear=re,a.visible=!0,GS=!1,this.forceUpdate=!1}get resolution(){return Za('ReflectorNode: The "resolution" property has been renamed to "resolutionScale".'),this.resolutionScale}set resolution(e){Za('ReflectorNode: The "resolution" property has been renamed to "resolutionScale".'),this.resolutionScale=e}}const jz=i=>new RC(i),PC=new eg(-1,1,1,-1,0,1);class Yz extends Eo{constructor(e=!1){super();const t=e===!1?[0,-1,0,1,2,1]:[0,2,0,0,2,0];this.setAttribute("position",new Pa([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Pa(t,2))}}const qz=new Yz;class kb extends Mc{constructor(e=null){super(qz,e),this.camera=PC,this.isQuadMesh=!0}renderAsync(e){return lo(this,null,function*(){Za('QuadMesh: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.'),yield e.init(),e.render(this,PC)})}render(e){e.render(this,PC)}}const Jz=new de;class e5 extends am{static get type(){return"RTTNode"}constructor(e,t=null,n=null,r={type:zt}){const a=new La(t,n,r);super(a.texture,qc()),this.isRTTNode=!0,this.node=e,this.width=t,this.height=n,this.pixelRatio=1,this.renderTarget=a,this.textureNeedsUpdate=!0,this.autoUpdate=!0,this._rttNode=null,this._quadMesh=new kb(new fh),this.updateBeforeType=Xo.RENDER}get autoResize(){return this.width===null}setup(e){return this._rttNode=this.node.context(e.getSharedContext()),this._quadMesh.material.name="RTT",this._quadMesh.material.needsUpdate=!0,super.setup(e)}setSize(e,t){this.width=e,this.height=t;const n=e*this.pixelRatio,r=t*this.pixelRatio;this.renderTarget.setSize(n,r),this.textureNeedsUpdate=!0}setPixelRatio(e){this.pixelRatio=e,this.setSize(this.width,this.height)}updateBefore({renderer:e}){if(this.textureNeedsUpdate===!1&&this.autoUpdate===!1)return;if(this.textureNeedsUpdate=!1,this.autoResize===!0){const r=e.getPixelRatio(),a=e.getSize(Jz),o=Math.floor(a.width*r),c=Math.floor(a.height*r);(o!==this.renderTarget.width||c!==this.renderTarget.height)&&(this.renderTarget.setSize(o,c),this.textureNeedsUpdate=!0)}let t="RTT";this.node.name&&(t=this.node.name+" [ "+t+" ]"),this._quadMesh.material.fragmentNode=this._rttNode,this._quadMesh.name=t;const n=e.getRenderTarget();e.setRenderTarget(this.renderTarget),this._quadMesh.render(e),e.setRenderTarget(n)}clone(){const e=new am(this.value,this.uvNode,this.levelNode);return e.sampler=this.sampler,e.referenceNode=this,e}}const uF=(i,...e)=>qs(new e5(qs(i),...e)),t5=(i,...e)=>i.isSampleNode||i.isTextureNode?i:i.isPassNode?i.getTextureNode():uF(i,...e),$x=Ar(([i,e,t],n)=>{let r;n.renderer.coordinateSystem===Bl?(i=rs(i.x,i.y.oneMinus()).mul(2).sub(1),r=Sa(tr(i,e),1)):r=Sa(tr(i.x,i.y.oneMinus(),e).mul(2).sub(1),1);const a=Sa(t.mul(r));return a.xyz.div(a.w)}),n5=Ar(([i,e])=>{const t=e.mul(Sa(i,1)),n=t.xy.div(t.w).mul(.5).add(.5).toVar();return rs(n.x,n.y.oneMinus())}),r5=Ar(([i,e,t])=>{const n=f0(Sh(e)),r=sf(i.mul(n)).toVar(),a=Sh(e,r).toVar(),o=Sh(e,r.sub(sf(2,0))).toVar(),c=Sh(e,r.sub(sf(1,0))).toVar(),u=Sh(e,r.add(sf(1,0))).toVar(),f=Sh(e,r.add(sf(2,0))).toVar(),g=Sh(e,r.add(sf(0,2))).toVar(),v=Sh(e,r.add(sf(0,1))).toVar(),M=Sh(e,r.sub(sf(0,1))).toVar(),R=Sh(e,r.sub(sf(0,2))).toVar(),I=_u(Yl(nn(2).mul(c).sub(o),a)).toVar(),re=_u(Yl(nn(2).mul(u).sub(f),a)).toVar(),ne=_u(Yl(nn(2).mul(v).sub(g),a)).toVar(),J=_u(Yl(nn(2).mul(M).sub(R),a)).toVar(),be=$x(i,a,t).toVar(),Re=I.lessThan(re).select(be.sub($x(i.sub(rs(nn(1).div(n.x),0)),c,t)),be.negate().add($x(i.add(rs(nn(1).div(n.x),0)),u,t))),ze=ne.lessThan(J).select(be.sub($x(i.add(rs(0,nn(1).div(n.y))),v,t)),be.negate().add($x(i.sub(rs(0,nn(1).div(n.y))),M,t)));return Cd(c0(Re,ze))}),IC=Ar(([i])=>fg(nn(52.9829189).mul(fg(wp(i,rs(.06711056,.00583715)))))).setLayout({name:"interleavedGradientNoise",type:"float",inputs:[{name:"position",type:"vec2"}]}),gg=Ar(([i,e,t])=>{const n=nn(2.399963229728653),r=pd(nn(i).add(.5).div(nn(e))),a=nn(i).mul(n).add(t);return rs(dg(a),Bd(a)).mul(r)}).setLayout({name:"vogelDiskSample",type:"vec2",inputs:[{name:"sampleIndex",type:"int"},{name:"samplesCount",type:"int"},{name:"phi",type:"float"}]});class i5 extends Ua{static get type(){return"SampleNode"}constructor(e,t=null){super(),this.callback=e,this.uvNode=t,this.isSampleNode=!0}setup(){return this.sample(qc())}sample(e){return this.callback(e)}}const s5=(i,e=null)=>new i5(i,qs(e));class iA extends Ua{static get type(){return"EventNode"}constructor(e,t){super("void"),this.eventType=e,this.callback=t,e===iA.OBJECT?this.updateType=Xo.OBJECT:e===iA.MATERIAL?this.updateType=Xo.RENDER:e===iA.BEFORE_OBJECT?this.updateBeforeType=Xo.OBJECT:e===iA.BEFORE_MATERIAL&&(this.updateBeforeType=Xo.RENDER)}update(e){this.callback(e)}updateBefore(e){this.callback(e)}}iA.OBJECT="object",iA.MATERIAL="material",iA.BEFORE_OBJECT="beforeObject",iA.BEFORE_MATERIAL="beforeMaterial";const zS=(i,e)=>new iA(i,e).toStack(),a5=i=>zS(iA.OBJECT,i),o5=i=>zS(iA.MATERIAL,i),l5=i=>zS(iA.BEFORE_OBJECT,i),c5=i=>zS(iA.BEFORE_MATERIAL,i);class u5 extends mf{constructor(e,t,n=Float32Array){const r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageInstancedBufferAttribute=!0}}class h5 extends jl{constructor(e,t,n=Float32Array){const r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageBufferAttribute=!0}}const f5=(i,e="float")=>{let t,n;e.isStruct===!0?(t=e.layout.getLength(),n=cb("float")):(t=PM(e),n=cb(e));const r=new h5(i,t,n);return v0(r,e,i)},d5=(i,e="float")=>{let t,n;e.isStruct===!0?(t=e.layout.getLength(),n=cb("float")):(t=PM(e),n=cb(e));const r=new u5(i,t,n);return v0(r,e,i)};class A5 extends Ua{static get type(){return"PointUVNode"}constructor(){super("vec2"),this.isPointUVNode=!0}generate(){return"vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )"}}const p5=Ws(A5),Vb=new xo,NC=new ti;class sA extends Ua{static get type(){return"SceneNode"}constructor(e=sA.BACKGROUND_BLURRINESS,t=null){super(),this.scope=e,this.scene=t}setup(e){const t=this.scope,n=this.scene!==null?this.scene:e.scene;let r;return t===sA.BACKGROUND_BLURRINESS?r=au("backgroundBlurriness","float",n):t===sA.BACKGROUND_INTENSITY?r=au("backgroundIntensity","float",n):t===sA.BACKGROUND_ROTATION?r=ja("mat4").setName("backgroundRotation").setGroup(Ja).onRenderUpdate(()=>{const a=n.background;return a!==null&&a.isTexture&&a.mapping!==we?(Vb.copy(n.backgroundRotation),Vb.x*=-1,Vb.y*=-1,Vb.z*=-1,NC.makeRotationFromEuler(Vb)):NC.identity(),NC}):ri("SceneNode: Unknown scope:",t),r}}sA.BACKGROUND_BLURRINESS="backgroundBlurriness",sA.BACKGROUND_INTENSITY="backgroundIntensity",sA.BACKGROUND_ROTATION="backgroundRotation";const hF=Ws(sA,sA.BACKGROUND_BLURRINESS),LC=Ws(sA,sA.BACKGROUND_INTENSITY),fF=Ws(sA,sA.BACKGROUND_ROTATION);class g5 extends am{static get type(){return"StorageTextureNode"}constructor(e,t,n=null){super(e,t),this.storeNode=n,this.mipLevel=0,this.isStorageTextureNode=!0,this.access=Yf.WRITE_ONLY}getInputType(){return"storageTexture"}setup(e){super.setup(e);const t=e.getNodeProperties(this);return t.storeNode=this.storeNode,t}setAccess(e){return this.access=e,this}setMipLevel(e){return this.mipLevel=e,this}generate(e,t){let n;return this.storeNode!==null?n=this.generateStore(e):n=super.generate(e,t),n}toReadWrite(){return this.setAccess(Yf.READ_WRITE)}toReadOnly(){return this.setAccess(Yf.READ_ONLY)}toWriteOnly(){return this.setAccess(Yf.WRITE_ONLY)}generateStore(e){const t=e.getNodeProperties(this),{uvNode:n,storeNode:r,depthNode:a}=t,o=super.generate(e,"property"),c=n.build(e,this.value.is3DTexture===!0?"uvec3":"uvec2"),u=r.build(e,"vec4"),f=a?a.build(e,"int"):null,g=e.generateTextureStore(e,o,c,f,u);e.addLineFlowCode(g,this)}clone(){const e=super.clone();return e.storeNode=this.storeNode,e.mipLevel=this.mipLevel,e}}const dF=Vo(g5).setParameterLength(1,3),m5=(i,e,t)=>{const n=dF(i,e,t);return t!==null&&n.toStack(),n},v5=Ar(({texture:i,uv:e})=>{const n=tr().toVar();return Va(e.x.lessThan(1e-4),()=>{n.assign(tr(1,0,0))}).ElseIf(e.y.lessThan(1e-4),()=>{n.assign(tr(0,1,0))}).ElseIf(e.z.lessThan(1e-4),()=>{n.assign(tr(0,0,1))}).ElseIf(e.x.greaterThan(1-1e-4),()=>{n.assign(tr(-1,0,0))}).ElseIf(e.y.greaterThan(1-1e-4),()=>{n.assign(tr(0,-1,0))}).ElseIf(e.z.greaterThan(1-1e-4),()=>{n.assign(tr(0,0,-1))}).Else(()=>{const a=i.sample(e.add(tr(-.01,0,0))).r.sub(i.sample(e.add(tr(.01,0,0))).r),o=i.sample(e.add(tr(0,-.01,0))).r.sub(i.sample(e.add(tr(0,.01,0))).r),c=i.sample(e.add(tr(0,0,-.01))).r.sub(i.sample(e.add(tr(0,0,.01))).r);n.assign(tr(a,o,c))}),n.normalize()});class y5 extends am{static get type(){return"Texture3DNode"}constructor(e,t=null,n=null){super(e,t,n),this.isTexture3DNode=!0}getInputType(){return"texture3D"}getDefaultUV(){return tr(.5,.5,.5)}setUpdateMatrix(){}setupUV(e,t){const n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0)&&(this.sampler?t=t.flipY():t=t.setY(Yn(f0(this,this.levelNode).y).sub(t.y).sub(1))),t}generateUV(e,t){return t.build(e,this.sampler===!0?"vec3":"ivec3")}generateOffset(e,t){return t.build(e,"ivec3")}normal(e){return v5({texture:this,uv:e})}}const QS=Vo(y5).setParameterLength(1,3),x5=(...i)=>QS(...i).setSampler(!1),_5=(i,e,t)=>QS(i,e).level(t);class b5 extends mS{static get type(){return"UserDataNode"}constructor(e,t,n=null){super(e,t,n),this.userData=n}updateReference(e){return this.reference=this.userData!==null?this.userData:e.object.userData,this.reference}}const w5=(i,e,t)=>new b5(i,e,t),AF=new WeakMap;class S5 extends lh{static get type(){return"VelocityNode"}constructor(){super("vec2"),this.projectionMatrix=null,this.updateType=Xo.OBJECT,this.updateAfterType=Xo.OBJECT,this.previousModelWorldMatrix=ja(new ti),this.previousProjectionMatrix=ja(new ti).setGroup(Ja),this.previousCameraViewMatrix=ja(new ti)}setProjectionMatrix(e){this.projectionMatrix=e}update({frameId:e,camera:t,object:n}){const r=gF(n);this.previousModelWorldMatrix.value.copy(r);const a=pF(t);a.frameId!==e&&(a.frameId=e,a.previousProjectionMatrix===void 0?(a.previousProjectionMatrix=new ti,a.previousCameraViewMatrix=new ti,a.currentProjectionMatrix=new ti,a.currentCameraViewMatrix=new ti,a.previousProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),a.previousCameraViewMatrix.copy(t.matrixWorldInverse)):(a.previousProjectionMatrix.copy(a.currentProjectionMatrix),a.previousCameraViewMatrix.copy(a.currentCameraViewMatrix)),a.currentProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),a.currentCameraViewMatrix.copy(t.matrixWorldInverse),this.previousProjectionMatrix.value.copy(a.previousProjectionMatrix),this.previousCameraViewMatrix.value.copy(a.previousCameraViewMatrix))}updateAfter({object:e}){gF(e).copy(e.matrixWorld)}setup(){const e=this.projectionMatrix===null?Pd:ja(this.projectionMatrix),t=this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix),n=e.mul(om).mul(hh),r=this.previousProjectionMatrix.mul(t).mul(AS),a=n.xy.div(n.w),o=r.xy.div(r.w);return Yl(a,o)}}function pF(i){let e=AF.get(i);return e===void 0&&(e={},AF.set(i,e)),e}function gF(i,e=0){const t=pF(i);let n=t[e];return n===void 0&&(t[e]=n=new ti,t[e].copy(i.matrixWorld)),n}const E5=Ws(S5),M5=Ar(([i])=>FC(i.rgb)),T5=Ar(([i,e=nn(1)])=>e.mix(FC(i.rgb),i.rgb)),C5=Ar(([i,e=nn(1)])=>{const t=Qh(i.r,i.g,i.b).div(3),n=i.r.max(i.g.max(i.b)),r=n.sub(t).mul(e).mul(-3);return Ll(i.rgb,n,r)}),B5=Ar(([i,e=nn(1)])=>{const t=tr(.57735,.57735,.57735),n=e.cos();return tr(i.rgb.mul(n).add(t.cross(i.rgb).mul(e.sin()).add(t.mul(wp(t,i.rgb).mul(n.oneMinus())))))}),FC=(i,e=tr(wr.getLuminanceCoefficients(new ce)))=>wp(i,e),R5=Ar(([i,e=tr(1),t=tr(0),n=tr(1),r=nn(1),a=tr(wr.getLuminanceCoefficients(new ce,Cl))])=>{const o=i.rgb.dot(tr(a)),c=uh(i.rgb.mul(e).add(t),0).toVar(),u=c.pow(n).toVar();return Va(c.r.greaterThan(0),()=>{c.r.assign(u.r)}),Va(c.g.greaterThan(0),()=>{c.g.assign(u.g)}),Va(c.b.greaterThan(0),()=>{c.b.assign(u.b)}),c.assign(o.add(c.sub(o).mul(r))),Sa(c.rgb,i.a)});class P5 extends lh{static get type(){return"PosterizeNode"}constructor(e,t){super(),this.sourceNode=e,this.stepsNode=t}setup(){const{sourceNode:e,stepsNode:t}=this;return e.mul(t).floor().div(t)}}const I5=Vo(P5).setParameterLength(2),WS=new de;class mF extends am{static get type(){return"PassTextureNode"}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}}class vF extends mF{static get type(){return"PassMultipleTextureNode"}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){const e=new this.constructor(this.passNode,this.textureName,this.previousTexture);return e.uvNode=this.uvNode,e.levelNode=this.levelNode,e.biasNode=this.biasNode,e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.offsetNode=this.offsetNode,e}}class hm extends lh{static get type(){return"PassNode"}constructor(e,t,n,r={}){super("vec4"),this.scope=e,this.scene=t,this.camera=n,this.options=r,this._pixelRatio=1,this._width=1,this._height=1;const a=new cc;a.isRenderTargetTexture=!0,a.name="depth";const o=new La(this._width*this._pixelRatio,this._height*this._pixelRatio,Dc({type:zt},r));o.texture.name="output",o.depthTexture=a,this.renderTarget=o,this.overrideMaterial=null,this.transparent=!0,this.opaque=!0,this.contextNode=null,this._contextNodeCache=null,this._textures={output:o.texture,depth:a},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=ja(0),this._cameraFar=ja(0),this._mrt=null,this._layers=null,this._resolutionScale=1,this._viewport=null,this._scissor=null,this.isPassNode=!0,this.updateBeforeType=Xo.FRAME,this.global=!0}setResolutionScale(e){return this._resolutionScale=e,this}getResolutionScale(){return this._resolutionScale}setResolution(e){return Qr("PassNode: .setResolution() is deprecated. Use .setResolutionScale() instead."),this.setResolutionScale(e)}getResolution(){return Qr("PassNode: .getResolution() is deprecated. Use .getResolutionScale() instead."),this.getResolutionScale()}setLayers(e){return this._layers=e,this}getLayers(){return this._layers}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.name=e,this._textures[e]=t,this.renderTarget.textures.push(t)),t}getPreviousTexture(e){let t=this._previousTextures[e];return t===void 0&&(t=this.getTexture(e).clone(),this._previousTextures[e]=t),t}toggleTexture(e){const t=this._previousTextures[e];if(t!==void 0){const n=this._textures[e],r=this.renderTarget.textures.indexOf(n);this.renderTarget.textures[r]=t,this._textures[e]=t,this._previousTextures[e]=n,this._textureNodes[e].updateTexture(),this._previousTextureNodes[e].updateTexture()}}getTextureNode(e="output"){let t=this._textureNodes[e];return t===void 0&&(t=new vF(this,e),t.updateTexture(),this._textureNodes[e]=t),t}getPreviousTextureNode(e="output"){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),t=new vF(this,e,!0),t.updateTexture(),this._previousTextureNodes[e]=t),t}getViewZNode(e="depth"){let t=this._viewZNodes[e];if(t===void 0){const n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=tC(this.getTextureNode(e),n,r)}return t}getLinearDepthNode(e="depth"){let t=this._linearDepthNodes[e];if(t===void 0){const n=this._cameraNear,r=this._cameraFar,a=this.getViewZNode(e);this._linearDepthNodes[e]=t=Vx(a,n,r)}return t}compileAsync(e){return lo(this,null,function*(){const t=e.getRenderTarget(),n=e.getMRT();e.setRenderTarget(this.renderTarget),e.setMRT(this._mrt),yield e.compileAsync(this.scene,this.camera),e.setRenderTarget(t),e.setMRT(n)})}setup({renderer:e}){return this.renderTarget.samples=this.options.samples===void 0?e.samples:this.options.samples,this.renderTarget.texture.type=e.getOutputBufferType(),this.scope===hm.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){const{renderer:t}=e,{scene:n}=this;let r,a;const o=t.getOutputRenderTarget();o&&o.isXRRenderTarget===!0?(a=1,r=t.xr.getCamera(),t.xr.updateCamera(r),WS.set(o.width,o.height)):(r=this.camera,a=t.getPixelRatio(),t.getSize(WS)),this._pixelRatio=a,this.setSize(WS.width,WS.height);const c=t.getRenderTarget(),u=t.getMRT(),f=t.autoClear,g=t.transparent,v=t.opaque,M=r.layers.mask,R=t.contextNode,I=n.overrideMaterial;this._cameraNear.value=r.near,this._cameraFar.value=r.far,this._layers!==null&&(r.layers.mask=this._layers.mask);for(const ne in this._previousTextures)this.toggleTexture(ne);this.overrideMaterial!==null&&(n.overrideMaterial=this.overrideMaterial),t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.autoClear=!0,t.transparent=this.transparent,t.opaque=this.opaque,this.contextNode!==null&&((this._contextNodeCache===null||this._contextNodeCache.version!==this.version)&&(this._contextNodeCache={version:this.version,context:u0(Dc(Dc({},t.contextNode.getFlowContextData()),this.contextNode.getFlowContextData()))}),t.contextNode=this._contextNodeCache.context);const re=n.name;n.name=this.name?this.name:n.name,t.render(n,r),n.name=re,n.overrideMaterial=I,t.setRenderTarget(c),t.setMRT(u),t.autoClear=f,t.transparent=g,t.opaque=v,t.contextNode=R,r.layers.mask=M}setSize(e,t){this._width=e,this._height=t;const n=Math.floor(this._width*this._pixelRatio*this._resolutionScale),r=Math.floor(this._height*this._pixelRatio*this._resolutionScale);this.renderTarget.setSize(n,r),this._scissor!==null&&this.renderTarget.scissor.copy(this._scissor),this._viewport!==null&&this.renderTarget.viewport.copy(this._viewport)}setScissor(e,t,n,r){e===null?this._scissor=null:(this._scissor===null&&(this._scissor=new ts),e.isVector4?this._scissor.copy(e):this._scissor.set(e,t,n,r),this._scissor.multiplyScalar(this._pixelRatio*this._resolutionScale).floor())}setViewport(e,t,n,r){e===null?this._viewport=null:(this._viewport===null&&(this._viewport=new ts),e.isVector4?this._viewport.copy(e):this._viewport.set(e,t,n,r),this._viewport.multiplyScalar(this._pixelRatio*this._resolutionScale).floor())}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}}hm.COLOR="color",hm.DEPTH="depth";const N5=(i,e,t)=>new hm(hm.COLOR,i,e,t),L5=(i,e)=>new mF(i,e),F5=(i,e,t)=>new hm(hm.DEPTH,i,e,t);class U5 extends hm{static get type(){return"ToonOutlinePassNode"}constructor(e,t,n,r,a){super(hm.COLOR,e,t),this.colorNode=n,this.thicknessNode=r,this.alphaNode=a,this._materialCache=new WeakMap,this.name="Outline Pass"}updateBefore(e){const{renderer:t}=e,n=t.getRenderObjectFunction();t.setRenderObjectFunction((r,a,o,c,u,f,g,v)=>{if((u.isMeshToonMaterial||u.isMeshToonNodeMaterial)&&u.wireframe===!1){const M=this._getOutlineMaterial(u);t.renderObject(r,a,o,c,M,f,g,v)}t.renderObject(r,a,o,c,u,f,g,v)}),super.updateBefore(e),t.setRenderObjectFunction(n)}_createMaterial(){const e=new fh;e.isMeshToonOutlineMaterial=!0,e.name="Toon_Outline",e.side=fe;const t=nA.negate(),n=Pd.mul(om),r=nn(1),a=n.mul(Sa(hh,1)),o=n.mul(Sa(hh.add(t),1)),c=Cd(a.sub(o));return e.vertexNode=a.add(c.mul(this.thicknessNode).mul(a.w).mul(r)),e.colorNode=Sa(this.colorNode,this.alphaNode),e}_getOutlineMaterial(e){let t=this._materialCache.get(e);return t===void 0&&(t=this._createMaterial(),this._materialCache.set(e,t)),t}}const D5=(i,e,t=new li(0,0,0),n=.003,r=1)=>qs(new U5(i,e,qs(t),qs(n),qs(r))),yF=Ar(([i,e])=>i.mul(e).clamp()).setLayout({name:"linearToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),xF=Ar(([i,e])=>(i=i.mul(e),i.div(i.add(1)).clamp())).setLayout({name:"reinhardToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),_F=Ar(([i,e])=>{i=i.mul(e),i=i.sub(.004).max(0);const t=i.mul(i.mul(6.2).add(.5)),n=i.mul(i.mul(6.2).add(1.7)).add(.06);return t.div(n).pow(2.2)}).setLayout({name:"cineonToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),O5=Ar(([i])=>{const e=i.mul(i.add(.0245786)).sub(90537e-9),t=i.mul(i.add(.432951).mul(.983729)).add(.238081);return e.div(t)}),bF=Ar(([i,e])=>{const t=qf(.59719,.35458,.04823,.076,.90834,.01566,.0284,.13383,.83777),n=qf(1.60475,-.53108,-.07367,-.10208,1.10813,-.00605,-.00327,-.07276,1.07602);return i=i.mul(e).div(.6),i=t.mul(i),i=O5(i),i=n.mul(i),i.clamp()}).setLayout({name:"acesFilmicToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),k5=qf(tr(1.6605,-.1246,-.0182),tr(-.5876,1.1329,-.1006),tr(-.0728,-.0083,1.1187)),V5=qf(tr(.6274,.0691,.0164),tr(.3293,.9195,.088),tr(.0433,.0113,.8956)),H5=Ar(([i])=>{const e=tr(i).toVar(),t=tr(e.mul(e)).toVar(),n=tr(t.mul(t)).toVar();return nn(15.5).mul(n.mul(t)).sub(Ho(40.14,n.mul(e))).add(Ho(31.96,n).sub(Ho(6.868,t.mul(e))).add(Ho(.4298,t).add(Ho(.1191,e).sub(.00232))))}),wF=Ar(([i,e])=>{const t=tr(i).toVar(),n=qf(tr(.856627153315983,.137318972929847,.11189821299995),tr(.0951212405381588,.761241990602591,.0767994186031903),tr(.0482516061458583,.101439036467562,.811302368396859)),r=qf(tr(1.1271005818144368,-.1413297634984383,-.14132976349843826),tr(-.11060664309660323,1.157823702216272,-.11060664309660294),tr(-.016493938717834573,-.016493938717834257,1.2519364065950405)),a=nn(-12.47393),o=nn(4.026069);return t.mulAssign(e),t.assign(V5.mul(t)),t.assign(n.mul(t)),t.assign(uh(t,1e-10)),t.assign(nm(t)),t.assign(t.sub(a).div(o.sub(a))),t.assign(Ag(t,0,1)),t.assign(H5(t)),t.assign(r.mul(t)),t.assign(Sp(uh(tr(0),t),tr(2.2))),t.assign(k5.mul(t)),t.assign(Ag(t,0,1)),t}).setLayout({name:"agxToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),SF=Ar(([i,e])=>{const t=nn(.76),n=nn(.15);i=i.mul(e);const r=tA(i.r,tA(i.g,i.b)),a=Jf(r.lessThan(.08),r.sub(Ho(6.25,r.mul(r))),.04);i.subAssign(a);const o=uh(i.r,uh(i.g,i.b));Va(o.lessThan(t),()=>i);const c=Yl(1,t),u=Yl(1,c.mul(c).div(o.add(c.sub(t))));i.mulAssign(u.div(o));const f=Yl(1,NA(1,n.mul(o.sub(u)).add(1)));return Ll(i,tr(u),f)}).setLayout({name:"neutralToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]});class Lf extends Ua{static get type(){return"CodeNode"}constructor(e="",t=[],n=""){super("code"),this.isCodeNode=!0,this.global=!0,this.code=e,this.includes=t,this.language=n}setIncludes(e){return this.includes=e,this}getIncludes(){return this.includes}generate(e){const t=this.getIncludes(e);for(const r of t)r.build(e);const n=e.getCodeFromNode(this,this.getNodeType(e));return n.code=this.code,n.code}serialize(e){super.serialize(e),e.code=this.code,e.language=this.language}deserialize(e){super.deserialize(e),this.code=e.code,this.language=e.language}}const ZS=Vo(Lf).setParameterLength(1,3),G5=(i,e)=>ZS(i,e,"js"),z5=(i,e)=>ZS(i,e,"wgsl"),Q5=(i,e)=>ZS(i,e,"glsl");class EF extends Lf{static get type(){return"FunctionNode"}constructor(e="",t=[],n=""){super(e,t,n)}getNodeType(e){return this.getNodeFunction(e).type}getMemberType(e,t){const n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}getInputs(e){return this.getNodeFunction(e).inputs}getNodeFunction(e){const t=e.getDataFromNode(this);let n=t.nodeFunction;return n===void 0&&(n=e.parser.parseFunction(this.code),t.nodeFunction=n),n}generate(e,t){super.generate(e);const n=this.getNodeFunction(e),r=n.name,a=n.type,o=e.getCodeFromNode(this,a);r!==""&&(o.name=r);const c=e.getPropertyName(o),u=this.getNodeFunction(e).getCode(c);return o.code=u+` +`,t==="property"?c:e.format(`${c}()`,a,t)}}const MF=(i,e=[],t="")=>{for(let a=0;an.call(...a);return r.functionNode=n,r},W5=(i,e)=>MF(i,e,"glsl"),Z5=(i,e)=>MF(i,e,"wgsl");class K5 extends Ua{static get type(){return"ScriptableValueNode"}constructor(e=null){super(),this._value=e,this._cache=null,this.inputType=null,this.outputType=null,this.events=new wc,this.isScriptableValueNode=!0}get isScriptableOutputNode(){return this.outputType!==null}set value(e){this._value!==e&&(this._cache&&this.inputType==="URL"&&this.value.value instanceof ArrayBuffer&&(URL.revokeObjectURL(this._cache),this._cache=null),this._value=e,this.events.dispatchEvent({type:"change"}),this.refresh())}get value(){return this._value}refresh(){this.events.dispatchEvent({type:"refresh"})}getValue(){const e=this.value;if(e&&this._cache===null&&this.inputType==="URL"&&e.value instanceof ArrayBuffer)this._cache=URL.createObjectURL(new Blob([e.value]));else if(e&&e.value!==null&&e.value!==void 0&&((this.inputType==="URL"||this.inputType==="String")&&typeof e.value=="string"||this.inputType==="Number"&&typeof e.value=="number"||this.inputType==="Vector2"&&e.value.isVector2||this.inputType==="Vector3"&&e.value.isVector3||this.inputType==="Vector4"&&e.value.isVector4||this.inputType==="Color"&&e.value.isColor||this.inputType==="Matrix3"&&e.value.isMatrix3||this.inputType==="Matrix4"&&e.value.isMatrix4))return e.value;return this._cache||e}getNodeType(e){return this.value&&this.value.isNode?this.value.getNodeType(e):"float"}setup(){return this.value&&this.value.isNode?this.value:nn()}serialize(e){super.serialize(e),this.value!==null?this.inputType==="ArrayBuffer"?e.value=NM(this.value):e.value=this.value?this.value.toJSON(e.meta).uuid:null:e.value=null,e.inputType=this.inputType,e.outputType=this.outputType}deserialize(e){super.deserialize(e);let t=null;e.value!==null&&(e.inputType==="ArrayBuffer"?t=LM(e.value):e.inputType==="Texture"?t=e.meta.textures[e.value]:t=e.meta.nodes[e.value]||null),this.value=t,this.inputType=e.inputType,this.outputType=e.outputType}}const KS=Vo(K5).setParameterLength(1);class TF extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){const r=t(...n);return this.set(e,r),r}}}class $5{constructor(e){this.scriptableNode=e}get parameters(){return this.scriptableNode.parameters}get layout(){return this.scriptableNode.getLayout()}getInputLayout(e){return this.scriptableNode.getInputLayout(e)}get(e){const t=this.parameters[e];return t?t.getValue():null}}const $S=new TF;class X5 extends Ua{static get type(){return"ScriptableNode"}constructor(e=null,t={}){super(),this.codeNode=e,this.parameters=t,this._local=new TF,this._output=KS(null),this._outputs={},this._source=this.source,this._method=null,this._object=null,this._value=null,this._needsOutputUpdate=!0,this.onRefresh=this.onRefresh.bind(this),this.isScriptableNode=!0}get source(){return this.codeNode?this.codeNode.code:""}setLocal(e,t){return this._local.set(e,t)}getLocal(e){return this._local.get(e)}onRefresh(){this._refresh()}getInputLayout(e){for(const t of this.getLayout())if(t.inputType&&(t.id===e||t.name===e))return t}getOutputLayout(e){for(const t of this.getLayout())if(t.outputType&&(t.id===e||t.name===e))return t}setOutput(e,t){const n=this._outputs;return n[e]===void 0?n[e]=KS(t):n[e].value=t,this}getOutput(e){return this._outputs[e]}getParameter(e){return this.parameters[e]}setParameter(e,t){const n=this.parameters;return t&&t.isScriptableNode?(this.deleteParameter(e),n[e]=t,n[e].getDefaultOutput().events.addEventListener("refresh",this.onRefresh)):t&&t.isScriptableValueNode?(this.deleteParameter(e),n[e]=t,n[e].events.addEventListener("refresh",this.onRefresh)):n[e]===void 0?(n[e]=KS(t),n[e].events.addEventListener("refresh",this.onRefresh)):n[e].value=t,this}getValue(){return this.getDefaultOutput().getValue()}deleteParameter(e){let t=this.parameters[e];return t&&(t.isScriptableNode&&(t=t.getDefaultOutput()),t.events.removeEventListener("refresh",this.onRefresh)),this}clearParameters(){for(const e of Object.keys(this.parameters))this.deleteParameter(e);return this.needsUpdate=!0,this}call(e,...t){const r=this.getObject()[e];if(typeof r=="function")return r(...t)}callAsync(e,...t){return lo(this,null,function*(){const r=this.getObject()[e];if(typeof r=="function")return r.constructor.name==="AsyncFunction"?yield r(...t):r(...t)})}getNodeType(e){return this.getDefaultOutputNode().getNodeType(e)}refresh(e=null){e!==null?this.getOutput(e).refresh():this._refresh()}getObject(){if(this.needsUpdate&&this.dispose(),this._object!==null)return this._object;const e=()=>this.refresh(),t=(f,g)=>this.setOutput(f,g),n=new $5(this),r=$S.get("THREE"),a=$S.get("TSL"),o=this.getMethod(),c=[n,this._local,$S,e,t,r,a];this._object=o(...c);const u=this._object.layout;if(u&&(u.cache===!1&&this._local.clear(),this._output.outputType=u.outputType||null,Array.isArray(u.elements)))for(const f of u.elements){const g=f.id||f.name;f.inputType&&(this.getParameter(g)===void 0&&this.setParameter(g,null),this.getParameter(g).inputType=f.inputType),f.outputType&&(this.getOutput(g)===void 0&&this.setOutput(g,null),this.getOutput(g).outputType=f.outputType)}return this._object}deserialize(e){super.deserialize(e);for(const t in this.parameters){let n=this.parameters[t];n.isScriptableNode&&(n=n.getDefaultOutput()),n.events.addEventListener("refresh",this.onRefresh)}}getLayout(){return this.getObject().layout}getDefaultOutputNode(){const e=this.getDefaultOutput().value;return e&&e.isNode?e:nn()}getDefaultOutput(){return this._exec()._output}getMethod(){if(this.needsUpdate&&this.dispose(),this._method!==null)return this._method;const e=["parameters","local","global","refresh","setOutput","THREE","TSL"],n=["layout","init","main","dispose"].join(", "),r="var "+n+`; var output = {}; +`,a=` +return { ...output, `+n+" };",o=r+this.codeNode.code+a;return this._method=new Function(...e,o),this._method}dispose(){this._method!==null&&(this._object&&typeof this._object.dispose=="function"&&this._object.dispose(),this._method=null,this._object=null,this._source=null,this._value=null,this._needsOutputUpdate=!0,this._output.value=null,this._outputs={})}setup(){return this.getDefaultOutputNode()}getCacheKey(e){const t=[Mx(this.source),this.getDefaultOutputNode().getCacheKey(e)];for(const n in this.parameters)t.push(this.parameters[n].getCacheKey(e));return cy(t)}set needsUpdate(e){e===!0&&this.dispose()}get needsUpdate(){return this.source!==this._source}_exec(){return this.codeNode===null?this:(this._needsOutputUpdate===!0&&(this._value=this.call("main"),this._needsOutputUpdate=!1),this._output.value=this._value,this)}_refresh(){this.needsUpdate=!0,this._exec(),this._output.refresh()}}const j5=Vo(X5).setParameterLength(1,2);function CF(i){let e;const t=i.context.getViewZ;return t!==void 0&&(e=t(this)),(e||Rh.z).negate()}const UC=Ar(([i,e],t)=>{const n=CF(t);return LA(i,e,n)}),DC=Ar(([i],e)=>{const t=CF(e);return i.mul(i,t,t).negate().exp().oneMinus()}),Hb=Ar(([i,e])=>Sa(e.toFloat().mix(Rx.rgb,i.toVec3()),Rx.a));function Y5(i,e,t){return Qr('TSL: "rangeFog( color, near, far )" is deprecated. Use "fog( color, rangeFogFactor( near, far ) )" instead.'),Hb(i,UC(e,t))}function q5(i,e){return Qr('TSL: "densityFog( color, density )" is deprecated. Use "fog( color, densityFogFactor( density ) )" instead.'),Hb(i,DC(e))}let My=null,Ty=null;class J5 extends Ua{static get type(){return"RangeNode"}constructor(e=nn(),t=nn()){super(),this.minNode=e,this.maxNode=t}getVectorLength(e){const t=this.getConstNode(this.minNode),n=this.getConstNode(this.maxNode),r=e.getTypeLength(o0(t.value)),a=e.getTypeLength(o0(n.value));return r>a?r:a}getNodeType(e){return e.object.count>1?e.getTypeFromLength(this.getVectorLength(e)):"float"}getConstNode(e){let t=null;if(e.traverse(n=>{n.isConstNode===!0&&(t=n)}),t===null)throw new Error('THREE.TSL: No "ConstNode" found in node graph.');return t}setup(e){const t=e.object;let n=null;if(t.count>1){const r=this.getConstNode(this.minNode),a=this.getConstNode(this.maxNode),o=r.value,c=a.value,u=e.getTypeLength(o0(o)),f=e.getTypeLength(o0(c));My=My||new ts,Ty=Ty||new ts,My.setScalar(0),Ty.setScalar(0),u===1?My.setScalar(o):o.isColor?My.set(o.r,o.g,o.b,1):My.set(o.x,o.y,o.z||0,o.w||0),f===1?Ty.setScalar(c):c.isColor?Ty.set(c.r,c.g,c.b,1):Ty.set(c.x,c.y,c.z||0,c.w||0);const g=4,v=g*t.count,M=new Float32Array(v);for(let I=0;Inew tQ(i,e),nQ=Gb("numWorkgroups","uvec3"),rQ=Gb("workgroupId","uvec3"),iQ=Gb("globalId","uvec3"),sQ=Gb("localId","uvec3"),aQ=Gb("subgroupSize","uint");class oQ extends Ua{constructor(e){super(),this.scope=e}generate(e){const{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(` // ${t}Barrier +`):e.addLineFlowCode(`${t}Barrier()`,this)}}const OC=Vo(oQ),lQ=()=>OC("workgroup").toStack(),cQ=()=>OC("storage").toStack(),uQ=()=>OC("texture").toStack();class hQ extends hy{constructor(e,t){super(e,t),this.isWorkgroupInfoElementNode=!0}generate(e,t){let n;const r=e.context.assign;if(n=super.generate(e),r!==!0){const a=this.getNodeType(e);n=e.format(n,a,t)}return n}}class fQ extends Ua{constructor(e,t,n=0){super(t),this.bufferType=t,this.bufferCount=n,this.isWorkgroupInfoNode=!0,this.elementType=t,this.scope=e,this.name=""}setName(e){return this.name=e,this}label(e){return Qr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}setScope(e){return this.scope=e,this}getElementType(){return this.elementType}getInputType(){return`${this.scope}Array`}element(e){return new hQ(this,e)}generate(e){const t=this.name!==""?this.name:`${this.scope}Array_${this.id}`;return e.getScopedArray(t,this.scope.toLowerCase(),this.bufferType,this.bufferCount)}}const dQ=(i,e)=>new fQ("Workgroup",i,e);class bf extends Ua{static get type(){return"AtomicFunctionNode"}constructor(e,t,n){super("uint"),this.method=e,this.pointerNode=t,this.valueNode=n,this.parents=!0}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){const t=e.getNodeProperties(this),n=t.parents,r=this.method,a=this.getNodeType(e),o=this.getInputType(e),c=this.pointerNode,u=this.valueNode,f=[];f.push(`&${c.build(e,o)}`),u!==null&&f.push(u.build(e,o));const g=`${e.getMethod(r,a)}( ${f.join(", ")} )`;if(n?n.length===1&&n[0].isStackNode===!0:!1)e.addLineFlowCode(g,this);else return t.constNode===void 0&&(t.constNode=h0(g,a).toConst()),t.constNode.build(e)}}bf.ATOMIC_LOAD="atomicLoad",bf.ATOMIC_STORE="atomicStore",bf.ATOMIC_ADD="atomicAdd",bf.ATOMIC_SUB="atomicSub",bf.ATOMIC_MAX="atomicMax",bf.ATOMIC_MIN="atomicMin",bf.ATOMIC_AND="atomicAnd",bf.ATOMIC_OR="atomicOr",bf.ATOMIC_XOR="atomicXor";const AQ=Vo(bf),fm=(i,e,t)=>AQ(i,e,t).toStack(),pQ=i=>fm(bf.ATOMIC_LOAD,i,null),gQ=(i,e)=>fm(bf.ATOMIC_STORE,i,e),mQ=(i,e)=>fm(bf.ATOMIC_ADD,i,e),vQ=(i,e)=>fm(bf.ATOMIC_SUB,i,e),yQ=(i,e)=>fm(bf.ATOMIC_MAX,i,e),xQ=(i,e)=>fm(bf.ATOMIC_MIN,i,e),_Q=(i,e)=>fm(bf.ATOMIC_AND,i,e),bQ=(i,e)=>fm(bf.ATOMIC_OR,i,e),wQ=(i,e)=>fm(bf.ATOMIC_XOR,i,e);class sa extends lh{static get type(){return"SubgroupFunctionNode"}constructor(e,t=null,n=null){super(),this.method=e,this.aNode=t,this.bNode=n}getInputType(e){const t=this.aNode?this.aNode.getNodeType(e):null,n=this.bNode?this.bNode.getNodeType(e):null,r=e.isMatrix(t)?0:e.getTypeLength(t),a=e.isMatrix(n)?0:e.getTypeLength(n);return r>a?t:n}getNodeType(e){const t=this.method;return t===sa.SUBGROUP_ELECT?"bool":t===sa.SUBGROUP_BALLOT?"uvec4":this.getInputType(e)}generate(e,t){const n=this.method,r=this.getNodeType(e),a=this.getInputType(e),o=this.aNode,c=this.bNode,u=[];if(n===sa.SUBGROUP_BROADCAST||n===sa.SUBGROUP_SHUFFLE||n===sa.QUAD_BROADCAST){const g=c.getNodeType(e);u.push(o.build(e,r),c.build(e,g==="float"?"int":r))}else n===sa.SUBGROUP_SHUFFLE_XOR||n===sa.SUBGROUP_SHUFFLE_DOWN||n===sa.SUBGROUP_SHUFFLE_UP?u.push(o.build(e,r),c.build(e,"uint")):(o!==null&&u.push(o.build(e,a)),c!==null&&u.push(c.build(e,a)));const f=u.length===0?"()":`( ${u.join(", ")} )`;return e.format(`${e.getMethod(n,r)}${f}`,r,t)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}}sa.SUBGROUP_ELECT="subgroupElect",sa.SUBGROUP_BALLOT="subgroupBallot",sa.SUBGROUP_ADD="subgroupAdd",sa.SUBGROUP_INCLUSIVE_ADD="subgroupInclusiveAdd",sa.SUBGROUP_EXCLUSIVE_AND="subgroupExclusiveAdd",sa.SUBGROUP_MUL="subgroupMul",sa.SUBGROUP_INCLUSIVE_MUL="subgroupInclusiveMul",sa.SUBGROUP_EXCLUSIVE_MUL="subgroupExclusiveMul",sa.SUBGROUP_AND="subgroupAnd",sa.SUBGROUP_OR="subgroupOr",sa.SUBGROUP_XOR="subgroupXor",sa.SUBGROUP_MIN="subgroupMin",sa.SUBGROUP_MAX="subgroupMax",sa.SUBGROUP_ALL="subgroupAll",sa.SUBGROUP_ANY="subgroupAny",sa.SUBGROUP_BROADCAST_FIRST="subgroupBroadcastFirst",sa.QUAD_SWAP_X="quadSwapX",sa.QUAD_SWAP_Y="quadSwapY",sa.QUAD_SWAP_DIAGONAL="quadSwapDiagonal",sa.SUBGROUP_BROADCAST="subgroupBroadcast",sa.SUBGROUP_SHUFFLE="subgroupShuffle",sa.SUBGROUP_SHUFFLE_XOR="subgroupShuffleXor",sa.SUBGROUP_SHUFFLE_UP="subgroupShuffleUp",sa.SUBGROUP_SHUFFLE_DOWN="subgroupShuffleDown",sa.QUAD_BROADCAST="quadBroadcast";const SQ=bs(sa,sa.SUBGROUP_ELECT).setParameterLength(0),EQ=bs(sa,sa.SUBGROUP_BALLOT).setParameterLength(1),MQ=bs(sa,sa.SUBGROUP_ADD).setParameterLength(1),TQ=bs(sa,sa.SUBGROUP_INCLUSIVE_ADD).setParameterLength(1),CQ=bs(sa,sa.SUBGROUP_EXCLUSIVE_AND).setParameterLength(1),BQ=bs(sa,sa.SUBGROUP_MUL).setParameterLength(1),RQ=bs(sa,sa.SUBGROUP_INCLUSIVE_MUL).setParameterLength(1),PQ=bs(sa,sa.SUBGROUP_EXCLUSIVE_MUL).setParameterLength(1),IQ=bs(sa,sa.SUBGROUP_AND).setParameterLength(1),NQ=bs(sa,sa.SUBGROUP_OR).setParameterLength(1),LQ=bs(sa,sa.SUBGROUP_XOR).setParameterLength(1),FQ=bs(sa,sa.SUBGROUP_MIN).setParameterLength(1),UQ=bs(sa,sa.SUBGROUP_MAX).setParameterLength(1),DQ=bs(sa,sa.SUBGROUP_ALL).setParameterLength(0),OQ=bs(sa,sa.SUBGROUP_ANY).setParameterLength(0),kQ=bs(sa,sa.SUBGROUP_BROADCAST_FIRST).setParameterLength(2),VQ=bs(sa,sa.QUAD_SWAP_X).setParameterLength(1),HQ=bs(sa,sa.QUAD_SWAP_Y).setParameterLength(1),GQ=bs(sa,sa.QUAD_SWAP_DIAGONAL).setParameterLength(1),zQ=bs(sa,sa.SUBGROUP_BROADCAST).setParameterLength(2),QQ=bs(sa,sa.SUBGROUP_SHUFFLE).setParameterLength(2),WQ=bs(sa,sa.SUBGROUP_SHUFFLE_XOR).setParameterLength(2),ZQ=bs(sa,sa.SUBGROUP_SHUFFLE_UP).setParameterLength(2),KQ=bs(sa,sa.SUBGROUP_SHUFFLE_DOWN).setParameterLength(2),$Q=bs(sa,sa.QUAD_BROADCAST).setParameterLength(1);let XS;function jS(i){XS=XS||new WeakMap;let e=XS.get(i);return e===void 0&&XS.set(i,e={}),e}function YS(i){const e=jS(i);return e.shadowMatrix||(e.shadowMatrix=ja("mat4").setGroup(Ja).onRenderUpdate(t=>((i.castShadow!==!0||t.renderer.shadowMap.enabled===!1)&&(i.shadow.camera.coordinateSystem!==t.camera.coordinateSystem&&(i.shadow.camera.coordinateSystem=t.camera.coordinateSystem,i.shadow.camera.updateProjectionMatrix()),i.shadow.updateMatrices(i)),i.shadow.matrix)))}function BF(i,e=UA){const t=YS(i).mul(e);return t.xyz.div(t.w)}function kC(i){const e=jS(i);return e.position||(e.position=ja(new ce).setGroup(Ja).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(i.matrixWorld)))}function RF(i){const e=jS(i);return e.targetPosition||(e.targetPosition=ja(new ce).setGroup(Ja).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(i.target.matrixWorld)))}function VC(i){const e=jS(i);return e.viewPosition||(e.viewPosition=ja(new ce).setGroup(Ja).onRenderUpdate(({camera:t},n)=>{n.value=n.value||new ce,n.value.setFromMatrixPosition(i.matrixWorld),n.value.applyMatrix4(t.matrixWorldInverse)}))}const HC=i=>FA.transformDirection(kC(i).sub(RF(i))),XQ=i=>i.sort((e,t)=>e.id-t.id),jQ=(i,e)=>{for(const t of e)if(t.isAnalyticLightNode&&t.light.id===i)return t;return null},GC=new WeakMap,zb=[];class zC extends Ua{static get type(){return"LightsNode"}constructor(){super("vec3"),this.totalDiffuseNode=hg("vec3","totalDiffuse"),this.totalSpecularNode=hg("vec3","totalSpecular"),this.outgoingLightNode=hg("vec3","outgoingLight"),this._lights=[],this._lightNodes=null,this._lightNodesHash=null,this.global=!0}customCacheKey(){const e=this._lights;for(let n=0;n0}}const YQ=(i=[])=>new zC().setLights(i);class qQ extends Ua{static get type(){return"ShadowBaseNode"}constructor(e){super(),this.light=e,this.updateBeforeType=Xo.RENDER,this.isShadowBaseNode=!0}setupShadowPosition({context:e,material:t}){QC.assign(t.receivedShadowPositionNode||e.shadowPositionWorld||UA)}}const QC=hg("vec3","shadowPositionWorld");function WC(i,e={}){return e.toneMapping=i.toneMapping,e.toneMappingExposure=i.toneMappingExposure,e.outputColorSpace=i.outputColorSpace,e.renderTarget=i.getRenderTarget(),e.activeCubeFace=i.getActiveCubeFace(),e.activeMipmapLevel=i.getActiveMipmapLevel(),e.renderObjectFunction=i.getRenderObjectFunction(),e.pixelRatio=i.getPixelRatio(),e.mrt=i.getMRT(),e.clearColor=i.getClearColor(e.clearColor||new li),e.clearAlpha=i.getClearAlpha(),e.autoClear=i.autoClear,e.scissorTest=i.getScissorTest(),e}function PF(i,e){return e=WC(i,e),i.setMRT(null),i.setRenderObjectFunction(null),i.setClearColor(0,1),i.autoClear=!0,e}function IF(i,e){i.toneMapping=e.toneMapping,i.toneMappingExposure=e.toneMappingExposure,i.outputColorSpace=e.outputColorSpace,i.setRenderTarget(e.renderTarget,e.activeCubeFace,e.activeMipmapLevel),i.setRenderObjectFunction(e.renderObjectFunction),i.setPixelRatio(e.pixelRatio),i.setMRT(e.mrt),i.setClearColor(e.clearColor,e.clearAlpha),i.autoClear=e.autoClear,i.setScissorTest(e.scissorTest)}function ZC(i,e={}){return e.background=i.background,e.backgroundNode=i.backgroundNode,e.overrideMaterial=i.overrideMaterial,e}function NF(i,e){return e=ZC(i,e),i.background=null,i.backgroundNode=null,i.overrideMaterial=null,e}function LF(i,e){i.background=e.background,i.backgroundNode=e.backgroundNode,i.overrideMaterial=e.overrideMaterial}function JQ(i,e,t={}){return t=WC(i,t),t=ZC(e,t),t}function FF(i,e,t){return t=PF(i,t),t=NF(e,t),t}function UF(i,e,t){IF(i,t),LF(e,t)}var GX=Object.freeze({__proto__:null,resetRendererAndSceneState:FF,resetRendererState:PF,resetSceneState:NF,restoreRendererAndSceneState:UF,restoreRendererState:IF,restoreSceneState:LF,saveRendererAndSceneState:JQ,saveRendererState:WC,saveSceneState:ZC});const qS=new WeakMap,DF=Ar(({depthTexture:i,shadowCoord:e,depthLayer:t})=>{let n=_c(i,e.xy).setName("t_basic");return i.isArrayTexture&&(n=n.depth(t)),n.compare(e.z)}),OF=Ar(({depthTexture:i,shadowCoord:e,shadow:t,depthLayer:n})=>{const r=(g,v)=>{let M=_c(i,g);return i.isArrayTexture&&(M=M.depth(n)),M.compare(v)},a=au("mapSize","vec2",t).setGroup(Ja),o=au("radius","float",t).setGroup(Ja),c=rs(1).div(a),u=o.mul(c.x),f=IC(yy.xy).mul(6.28318530718);return Qh(r(e.xy.add(gg(0,5,f).mul(u)),e.z),r(e.xy.add(gg(1,5,f).mul(u)),e.z),r(e.xy.add(gg(2,5,f).mul(u)),e.z),r(e.xy.add(gg(3,5,f).mul(u)),e.z),r(e.xy.add(gg(4,5,f).mul(u)),e.z)).mul(1/5)}),kF=Ar(({depthTexture:i,shadowCoord:e,shadow:t,depthLayer:n})=>{const r=(v,M)=>{let R=_c(i,v);return i.isArrayTexture&&(R=R.depth(n)),R.compare(M)},a=au("mapSize","vec2",t).setGroup(Ja),o=rs(1).div(a),c=o.x,u=o.y,f=e.xy,g=fg(f.mul(a).add(.5));return f.subAssign(g.mul(o)),Qh(r(f,e.z),r(f.add(rs(c,0)),e.z),r(f.add(rs(0,u)),e.z),r(f.add(o),e.z),Ll(r(f.add(rs(c.negate(),0)),e.z),r(f.add(rs(c.mul(2),0)),e.z),g.x),Ll(r(f.add(rs(c.negate(),u)),e.z),r(f.add(rs(c.mul(2),u)),e.z),g.x),Ll(r(f.add(rs(0,u.negate())),e.z),r(f.add(rs(0,u.mul(2))),e.z),g.y),Ll(r(f.add(rs(c,u.negate())),e.z),r(f.add(rs(c,u.mul(2))),e.z),g.y),Ll(Ll(r(f.add(rs(c.negate(),u.negate())),e.z),r(f.add(rs(c.mul(2),u.negate())),e.z),g.x),Ll(r(f.add(rs(c.negate(),u.mul(2))),e.z),r(f.add(rs(c.mul(2),u.mul(2))),e.z),g.x),g.y)).mul(1/9)}),VF=Ar(({depthTexture:i,shadowCoord:e,depthLayer:t})=>{let n=_c(i).sample(e.xy);i.isArrayTexture&&(n=n.depth(t)),n=n.rg;const r=n.x,a=uh(1e-7,n.y.mul(n.y)),o=oS(e.z,r);Va(o.equal(1),()=>nn(1));const c=e.z.sub(r);let u=a.div(a.add(c.mul(c)));return u=Ag(Yl(u,.3).div(.65)),uh(o,u)}),e6=Ar(([i,e,t])=>{let n=UA.sub(i).length();return n=n.sub(e).div(t.sub(e)),n=n.saturate(),n}),t6=i=>{const e=i.shadow.camera,t=au("near","float",e).setGroup(Ja),n=au("far","float",e).setGroup(Ja),r=FI(i);return e6(r,t,n)},HF=i=>{let e=qS.get(i);if(e===void 0){const t=i.isPointLight?t6(i):null;e=new fh,e.colorNode=Sa(0,0,0,1),e.depthNode=t,e.isShadowPassMaterial=!0,e.name="ShadowMaterial",e.fog=!1,qS.set(i,e)}return e},GF=i=>{const e=qS.get(i);e!==void 0&&(e.dispose(),qS.delete(i))},zF=new pg,Xx=[],QF=(i,e,t,n)=>{Xx[0]=i,Xx[1]=e;let r=zF.get(Xx);return(r===void 0||r.shadowType!==t||r.useVelocity!==n)&&(r=(a,o,c,u,f,g,...v)=>{(a.castShadow===!0||a.receiveShadow&&t===j)&&(n&&(IM(a).useVelocity=!0),a.onBeforeShadow(i,a,c,e.camera,u,o.overrideMaterial,g),i.renderObject(a,o,c,u,f,g,...v),a.onAfterShadow(i,a,c,e.camera,u,o.overrideMaterial,g))},r.shadowType=t,r.useVelocity=n,zF.set(Xx,r)),Xx[0]=null,Xx[1]=null,r},n6=Ar(({samples:i,radius:e,size:t,shadowPass:n,depthLayer:r})=>{const a=nn(0).toVar("meanVertical"),o=nn(0).toVar("squareMeanVertical"),c=i.lessThanEqual(nn(1)).select(nn(0),nn(2).div(i.sub(1))),u=i.lessThanEqual(nn(1)).select(nn(0),nn(-1));Wc({start:Yn(0),end:Yn(i),type:"int",condition:"<"},({i:g})=>{const v=u.add(nn(g).mul(c));let M=n.sample(Qh(yy.xy,rs(0,v).mul(e)).div(t));n.value.isArrayTexture&&(M=M.depth(r)),M=M.x,a.addAssign(M),o.addAssign(M.mul(M))}),a.divAssign(i),o.divAssign(i);const f=pd(o.sub(a.mul(a)).max(0));return rs(a,f)}),r6=Ar(({samples:i,radius:e,size:t,shadowPass:n,depthLayer:r})=>{const a=nn(0).toVar("meanHorizontal"),o=nn(0).toVar("squareMeanHorizontal"),c=i.lessThanEqual(nn(1)).select(nn(0),nn(2).div(i.sub(1))),u=i.lessThanEqual(nn(1)).select(nn(0),nn(-1));Wc({start:Yn(0),end:Yn(i),type:"int",condition:"<"},({i:g})=>{const v=u.add(nn(g).mul(c));let M=n.sample(Qh(yy.xy,rs(v,0).mul(e)).div(t));n.value.isArrayTexture&&(M=M.depth(r)),a.addAssign(M.x),o.addAssign(Qh(M.y.mul(M.y),M.x.mul(M.x)))}),a.divAssign(i),o.divAssign(i);const f=pd(o.sub(a.mul(a)).max(0));return rs(a,f)}),i6=[DF,OF,kF,VF];let KC;const JS=new kb;class WF extends qQ{static get type(){return"ShadowNode"}constructor(e,t=null){super(e),this.shadow=t||e.shadow,this.shadowMap=null,this.vsmShadowMapVertical=null,this.vsmShadowMapHorizontal=null,this.vsmMaterialVertical=null,this.vsmMaterialHorizontal=null,this._node=null,this._currentShadowType=null,this._cameraFrameId=new WeakMap,this.isShadowNode=!0,this.depthLayer=0}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:r,shadow:a,depthLayer:o}){const c=r.x.greaterThanEqual(0).and(r.x.lessThanEqual(1)).and(r.y.greaterThanEqual(0)).and(r.y.lessThanEqual(1)).and(r.z.lessThanEqual(1)),u=t({depthTexture:n,shadowCoord:r,shadow:a,depthLayer:o});return c.select(u,nn(1))}setupShadowCoord(e,t){const{shadow:n}=this,{renderer:r}=e,a=au("bias","float",n).setGroup(Ja);let o=t,c;if(n.camera.isOrthographicCamera||r.logarithmicDepthBuffer!==!0)o=o.xyz.div(o.w),c=o.z,r.coordinateSystem===Bl&&(c=c.mul(2).sub(1));else{const u=o.w;o=o.xy.div(u);const f=au("near","float",n.camera).setGroup(Ja),g=au("far","float",n.camera).setGroup(Ja);c=nC(u.negate(),f,g)}return o=tr(o.x,o.y.oneMinus(),c.add(a)),o}getShadowFilterFn(e){return i6[e]}setupRenderTarget(e,t){const n=new cc(e.mapSize.width,e.mapSize.height);n.name="ShadowDepthTexture",n.compareFunction=rl;const r=t.createRenderTarget(e.mapSize.width,e.mapSize.height);return r.texture.name="ShadowMap",r.texture.type=e.mapType,r.depthTexture=n,{shadowMap:r,depthTexture:n}}setupShadow(e){const{renderer:t,camera:n}=e,{light:r,shadow:a}=this,o=t.shadowMap.type,{depthTexture:c,shadowMap:u}=this.setupRenderTarget(a,e);if(a.camera.coordinateSystem=n.coordinateSystem,a.camera.updateProjectionMatrix(),o===j&&a.isPointLightShadow!==!0){c.compareFunction=null,u.depth>1?(u._vsmShadowMapVertical||(u._vsmShadowMapVertical=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:We,type:zt,depth:u.depth,depthBuffer:!1}),u._vsmShadowMapVertical.texture.name="VSMVertical"),this.vsmShadowMapVertical=u._vsmShadowMapVertical,u._vsmShadowMapHorizontal||(u._vsmShadowMapHorizontal=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:We,type:zt,depth:u.depth,depthBuffer:!1}),u._vsmShadowMapHorizontal.texture.name="VSMHorizontal"),this.vsmShadowMapHorizontal=u._vsmShadowMapHorizontal):(this.vsmShadowMapVertical=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:We,type:zt,depthBuffer:!1}),this.vsmShadowMapHorizontal=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:We,type:zt,depthBuffer:!1}));let Re=_c(c);c.isArrayTexture&&(Re=Re.depth(this.depthLayer));let ze=_c(this.vsmShadowMapVertical.texture);c.isArrayTexture&&(ze=ze.depth(this.depthLayer));const st=au("blurSamples","float",a).setGroup(Ja),et=au("radius","float",a).setGroup(Ja),dt=au("mapSize","vec2",a).setGroup(Ja);let Nt=this.vsmMaterialVertical||(this.vsmMaterialVertical=new fh);Nt.fragmentNode=n6({samples:st,radius:et,size:dt,shadowPass:Re,depthLayer:this.depthLayer}).context(e.getSharedContext()),Nt.name="VSMVertical",Nt=this.vsmMaterialHorizontal||(this.vsmMaterialHorizontal=new fh),Nt.fragmentNode=r6({samples:st,radius:et,size:dt,shadowPass:ze,depthLayer:this.depthLayer}).context(e.getSharedContext()),Nt.name="VSMHorizontal"}const f=au("intensity","float",a).setGroup(Ja),g=au("normalBias","float",a).setGroup(Ja),v=YS(r).mul(QC.add(xv.mul(g))),M=this.setupShadowCoord(e,v),R=a.filterNode||this.getShadowFilterFn(t.shadowMap.type)||null;if(R===null)throw new Error("THREE.WebGPURenderer: Shadow map type not supported yet.");const I=o===j&&a.isPointLightShadow!==!0?this.vsmShadowMapHorizontal.texture:c,re=this.setupShadowFilter(e,{filterFn:R,shadowTexture:u.texture,depthTexture:I,shadowCoord:M,shadow:a,depthLayer:this.depthLayer});let ne;u.texture.isCubeTexture?ne=Id(u.texture,M.xyz):(ne=_c(u.texture,M),c.isArrayTexture&&(ne=ne.depth(this.depthLayer)));const J=Ll(1,re.rgb.mix(ne,1),f.mul(ne.a)).toVar();this.shadowMap=u,this.shadow.map=u;const be=`${this.light.type} Shadow [ ${this.light.name||"ID: "+this.light.id} ]`;return J.toInspector(`${be} / Color`,()=>this.shadowMap.texture.isCubeTexture?Id(this.shadowMap.texture):_c(this.shadowMap.texture)).toInspector(`${be} / Depth`,()=>this.shadowMap.texture.isCubeTexture?Id(this.shadowMap.texture).r.oneMinus():Sh(this.shadowMap.depthTexture,qc().mul(f0(_c(this.shadowMap.depthTexture)))).r.oneMinus())}setup(e){if(e.renderer.shadowMap.enabled!==!1)return Ar(()=>{const t=e.renderer.shadowMap.type;this._currentShadowType!==t&&(this._reset(),this._node=null);let n=this._node;return this.setupShadowPosition(e),n===null&&(this._node=n=this.setupShadow(e),this._currentShadowType=t),e.material.shadowNode&&Qr('NodeMaterial: ".shadowNode" is deprecated. Use ".castShadowNode" instead.'),e.material.receivedShadowNode&&(n=e.material.receivedShadowNode(n)),n})()}renderShadow(e){const{shadow:t,shadowMap:n,light:r}=this,{renderer:a,scene:o}=e;t.updateMatrices(r),n.setSize(t.mapSize.width,t.mapSize.height,n.depth);const c=o.name;o.name=`Shadow Map [ ${r.name||"ID: "+r.id} ]`,a.render(o,t.camera),o.name=c}updateShadow(e){const{shadowMap:t,light:n,shadow:r}=this,{renderer:a,scene:o,camera:c}=e,u=a.shadowMap.type,f=t.depthTexture.version;this._depthVersionCached=f;const g=r.camera.layers.mask;r.camera.layers.mask&4294967294||(r.camera.layers.mask=c.layers.mask);const v=a.getRenderObjectFunction(),M=a.getMRT(),R=M?M.has("velocity"):!1;KC=FF(a,o,KC),o.overrideMaterial=HF(n),a.setRenderObjectFunction(QF(a,r,u,R)),a.setClearColor(0,0),a.setRenderTarget(t),this.renderShadow(e),a.setRenderObjectFunction(v),u===j&&r.isPointLightShadow!==!0&&this.vsmPass(a),r.camera.layers.mask=g,UF(a,o,KC)}vsmPass(e){const{shadow:t}=this,n=this.shadowMap.depth;this.vsmShadowMapVertical.setSize(t.mapSize.width,t.mapSize.height,n),this.vsmShadowMapHorizontal.setSize(t.mapSize.width,t.mapSize.height,n),e.setRenderTarget(this.vsmShadowMapVertical),JS.material=this.vsmMaterialVertical,JS.render(e),e.setRenderTarget(this.vsmShadowMapHorizontal),JS.material=this.vsmMaterialHorizontal,JS.render(e)}dispose(){this._reset(),super.dispose()}_reset(){this._currentShadowType=null,GF(this.light),this.shadowMap&&(this.shadowMap.dispose(),this.shadowMap=null),this.vsmShadowMapVertical!==null&&(this.vsmShadowMapVertical.dispose(),this.vsmShadowMapVertical=null,this.vsmMaterialVertical.dispose(),this.vsmMaterialVertical=null),this.vsmShadowMapHorizontal!==null&&(this.vsmShadowMapHorizontal.dispose(),this.vsmShadowMapHorizontal=null,this.vsmMaterialHorizontal.dispose(),this.vsmMaterialHorizontal=null)}updateBefore(e){const{shadow:t}=this;let n=t.needsUpdate||t.autoUpdate;n&&(this._cameraFrameId[e.camera]===e.frameId&&(n=!1),this._cameraFrameId[e.camera]=e.frameId),n&&(this.updateShadow(e),this.shadowMap.depthTexture.version===this._depthVersionCached&&(t.needsUpdate=!1))}}const ZF=(i,e)=>new WF(i,e),s6=new li,KF=new ti,Qb=new ce,$C=new ce,a6=[new ce(1,0,0),new ce(-1,0,0),new ce(0,-1,0),new ce(0,1,0),new ce(0,0,1),new ce(0,0,-1)],o6=[new ce(0,-1,0),new ce(0,-1,0),new ce(0,0,-1),new ce(0,0,1),new ce(0,-1,0),new ce(0,-1,0)],l6=[new ce(1,0,0),new ce(-1,0,0),new ce(0,1,0),new ce(0,-1,0),new ce(0,0,1),new ce(0,0,-1)],c6=[new ce(0,-1,0),new ce(0,-1,0),new ce(0,0,1),new ce(0,0,-1),new ce(0,-1,0),new ce(0,-1,0)],$F=Ar(({depthTexture:i,bd3D:e,dp:t})=>Id(i,e).compare(t)),XF=Ar(({depthTexture:i,bd3D:e,dp:t,shadow:n})=>{const r=au("radius","float",n).setGroup(Ja),a=au("mapSize","vec2",n).setGroup(Ja),o=r.div(a.x),c=_u(e),u=Cd(c0(e,c.x.greaterThan(c.z).select(tr(0,1,0),tr(1,0,0)))),f=c0(e,u),g=IC(yy.xy).mul(6.28318530718),v=gg(0,5,g),M=gg(1,5,g),R=gg(2,5,g),I=gg(3,5,g),re=gg(4,5,g);return Id(i,e.add(u.mul(v.x).add(f.mul(v.y)).mul(o))).compare(t).add(Id(i,e.add(u.mul(M.x).add(f.mul(M.y)).mul(o))).compare(t)).add(Id(i,e.add(u.mul(R.x).add(f.mul(R.y)).mul(o))).compare(t)).add(Id(i,e.add(u.mul(I.x).add(f.mul(I.y)).mul(o))).compare(t)).add(Id(i,e.add(u.mul(re.x).add(f.mul(re.y)).mul(o))).compare(t)).mul(1/5)}),u6=Ar(({filterFn:i,depthTexture:e,shadowCoord:t,shadow:n})=>{const r=t.xyz.toVar(),a=r.length(),o=ja("float").setGroup(Ja).onRenderUpdate(()=>n.camera.near),c=ja("float").setGroup(Ja).onRenderUpdate(()=>n.camera.far),u=au("bias","float",n).setGroup(Ja),f=nn(1).toVar();return Va(a.sub(c).lessThanEqual(0).and(a.sub(o).greaterThanEqual(0)),()=>{const g=a.sub(o).div(c.sub(o)).toVar();g.addAssign(u);const v=r.normalize();f.assign(i({depthTexture:e,bd3D:v,dp:g,shadow:n}))}),f});class h6 extends WF{static get type(){return"PointShadowNode"}constructor(e,t=null){super(e,t)}getShadowFilterFn(e){return e===U?$F:XF}setupShadowCoord(e,t){return t}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:r,shadow:a}){return u6({filterFn:t,depthTexture:n,shadowCoord:r,shadow:a})}setupRenderTarget(e,t){const n=new Dg(e.mapSize.width);n.name="PointShadowDepthTexture",n.compareFunction=rl;const r=t.createCubeRenderTarget(e.mapSize.width);return r.texture.name="PointShadowMap",r.depthTexture=n,{shadowMap:r,depthTexture:n}}renderShadow(e){const{shadow:t,shadowMap:n,light:r}=this,{renderer:a,scene:o}=e,c=t.camera,u=t.matrix,f=a.coordinateSystem===Bl,g=f?a6:l6,v=f?o6:c6;n.setSize(t.mapSize.width,t.mapSize.width);const M=a.autoClear,R=a.getClearColor(s6),I=a.getClearAlpha();a.autoClear=!1,a.setClearColor(t.clearColor,t.clearAlpha);for(let re=0;re<6;re++){a.setRenderTarget(n,re),a.clear();const ne=r.distance||c.far;ne!==c.far&&(c.far=ne,c.updateProjectionMatrix()),Qb.setFromMatrixPosition(r.matrixWorld),c.position.copy(Qb),$C.copy(c.position),$C.add(g[re]),c.up.copy(v[re]),c.lookAt($C),c.updateMatrixWorld(),u.makeTranslation(-Qb.x,-Qb.y,-Qb.z),KF.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse),t._frustum.setFromProjectionMatrix(KF,c.coordinateSystem,c.reversedDepth);const J=o.name;o.name=`Point Light Shadow [ ${r.name||"ID: "+r.id} ] - Face ${re+1}`,a.render(o,c),o.name=J}a.autoClear=M,a.setClearColor(R,I)}}const jF=(i,e)=>new h6(i,e);class Cy extends Ox{static get type(){return"AnalyticLightNode"}constructor(e=null){super(),this.light=e,this.color=new li,this.colorNode=e&&e.colorNode||ja(this.color).setGroup(Ja),this.baseColorNode=null,this.shadowNode=null,this.shadowColorNode=null,this.isAnalyticLightNode=!0,this.updateType=Xo.FRAME,e&&e.shadow&&(this._shadowDisposeListener=()=>{this.disposeShadow()},e.addEventListener("dispose",this._shadowDisposeListener))}dispose(){this._shadowDisposeListener&&this.light.removeEventListener("dispose",this._shadowDisposeListener),super.dispose()}disposeShadow(){this.shadowNode!==null&&(this.shadowNode.dispose(),this.shadowNode=null),this.shadowColorNode=null,this.baseColorNode!==null&&(this.colorNode=this.baseColorNode,this.baseColorNode=null)}getHash(){return this.light.uuid}getLightVector(e){return VC(this.light).sub(e.context.positionView||Rh)}setupDirect(){}setupDirectRectArea(){}setupShadowNode(){return ZF(this.light)}setupShadow(e){const{renderer:t}=e;if(t.shadowMap.enabled===!1)return;let n=this.shadowColorNode;if(n===null){const r=this.light.shadow.shadowNode;let a;r!==void 0?a=qs(r):a=this.setupShadowNode(),this.shadowNode=a,this.shadowColorNode=n=this.colorNode.mul(a),this.baseColorNode=this.colorNode}e.context.getShadow&&(n=e.context.getShadow(this,e)),this.colorNode=n}setup(e){this.colorNode=this.baseColorNode||this.colorNode,this.light.castShadow?e.object.receiveShadow&&this.setupShadow(e):this.shadowNode!==null&&(this.shadowNode.dispose(),this.shadowNode=null,this.shadowColorNode=null);const t=this.setupDirect(e),n=this.setupDirectRectArea(e);t&&e.lightsNode.setupDirectLight(e,this,t),n&&e.lightsNode.setupDirectRectAreaLight(e,this,n)}update(){const{light:e}=this;this.color.copy(e.color).multiplyScalar(e.intensity)}}const XC=Ar(({lightDistance:i,cutoffDistance:e,decayExponent:t})=>{const n=i.pow(t).max(.01).reciprocal();return e.greaterThan(0).select(n.mul(i.div(e).pow4().oneMinus().clamp().pow2()),n)}),YF=({color:i,lightVector:e,cutoffDistance:t,decayExponent:n})=>{const r=e.normalize(),a=e.length(),o=XC({lightDistance:a,cutoffDistance:t,decayExponent:n}),c=i.mul(o);return{lightDirection:r,lightColor:c}};class f6 extends Cy{static get type(){return"PointLightNode"}constructor(e=null){super(e),this.cutoffDistanceNode=ja(0).setGroup(Ja),this.decayExponentNode=ja(2).setGroup(Ja)}update(e){const{light:t}=this;super.update(e),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}setupShadowNode(){return jF(this.light)}setupDirect(e){return YF({color:this.colorNode,lightVector:this.getLightVector(e),cutoffDistance:this.cutoffDistanceNode,decayExponent:this.decayExponentNode})}}const d6=Ar(([i=qc()])=>{const e=i.mul(2),t=e.x.floor(),n=e.y.floor();return t.add(n).mod(2).sign()}),A6=Ar(([i=qc()],{renderer:e,material:t})=>{const n=pT(i.mul(2).sub(1));let r;if(t.alphaToCoverage&&e.currentSamples>0){const a=nn(n.fwidth()).toVar();r=LA(a.oneMinus(),a.add(1),n).oneMinus()}else r=Jf(n.greaterThan(1),0,1);return r}),Wb=Ar(([i,e,t])=>{const n=nn(t).toVar(),r=nn(e).toVar(),a=bp(i).toVar();return Jf(a,r,n)}).setLayout({name:"mx_select",type:"float",inputs:[{name:"b",type:"bool"},{name:"t",type:"float"},{name:"f",type:"float"}]}),eE=Ar(([i,e])=>{const t=bp(e).toVar(),n=nn(i).toVar();return Jf(t,n.negate(),n)}).setLayout({name:"mx_negate_if",type:"float",inputs:[{name:"val",type:"float"},{name:"b",type:"bool"}]}),Wh=Ar(([i])=>{const e=nn(i).toVar();return Yn(rm(e))}).setLayout({name:"mx_floor",type:"int",inputs:[{name:"x",type:"float"}]}),$u=Ar(([i,e])=>{const t=nn(i).toVar();return e.assign(Wh(t)),t.sub(nn(e))}),qF=td([Ar(([i,e,t,n,r,a])=>{const o=nn(a).toVar(),c=nn(r).toVar(),u=nn(n).toVar(),f=nn(t).toVar(),g=nn(e).toVar(),v=nn(i).toVar(),M=nn(Yl(1,c)).toVar();return Yl(1,o).mul(v.mul(M).add(g.mul(c))).add(o.mul(f.mul(M).add(u.mul(c))))}).setLayout({name:"mx_bilerp_0",type:"float",inputs:[{name:"v0",type:"float"},{name:"v1",type:"float"},{name:"v2",type:"float"},{name:"v3",type:"float"},{name:"s",type:"float"},{name:"t",type:"float"}]}),Ar(([i,e,t,n,r,a])=>{const o=nn(a).toVar(),c=nn(r).toVar(),u=tr(n).toVar(),f=tr(t).toVar(),g=tr(e).toVar(),v=tr(i).toVar(),M=nn(Yl(1,c)).toVar();return Yl(1,o).mul(v.mul(M).add(g.mul(c))).add(o.mul(f.mul(M).add(u.mul(c))))}).setLayout({name:"mx_bilerp_1",type:"vec3",inputs:[{name:"v0",type:"vec3"},{name:"v1",type:"vec3"},{name:"v2",type:"vec3"},{name:"v3",type:"vec3"},{name:"s",type:"float"},{name:"t",type:"float"}]})]),JF=td([Ar(([i,e,t,n,r,a,o,c,u,f,g])=>{const v=nn(g).toVar(),M=nn(f).toVar(),R=nn(u).toVar(),I=nn(c).toVar(),re=nn(o).toVar(),ne=nn(a).toVar(),J=nn(r).toVar(),be=nn(n).toVar(),Re=nn(t).toVar(),ze=nn(e).toVar(),st=nn(i).toVar(),et=nn(Yl(1,R)).toVar(),dt=nn(Yl(1,M)).toVar();return nn(Yl(1,v)).toVar().mul(dt.mul(st.mul(et).add(ze.mul(R))).add(M.mul(Re.mul(et).add(be.mul(R))))).add(v.mul(dt.mul(J.mul(et).add(ne.mul(R))).add(M.mul(re.mul(et).add(I.mul(R))))))}).setLayout({name:"mx_trilerp_0",type:"float",inputs:[{name:"v0",type:"float"},{name:"v1",type:"float"},{name:"v2",type:"float"},{name:"v3",type:"float"},{name:"v4",type:"float"},{name:"v5",type:"float"},{name:"v6",type:"float"},{name:"v7",type:"float"},{name:"s",type:"float"},{name:"t",type:"float"},{name:"r",type:"float"}]}),Ar(([i,e,t,n,r,a,o,c,u,f,g])=>{const v=nn(g).toVar(),M=nn(f).toVar(),R=nn(u).toVar(),I=tr(c).toVar(),re=tr(o).toVar(),ne=tr(a).toVar(),J=tr(r).toVar(),be=tr(n).toVar(),Re=tr(t).toVar(),ze=tr(e).toVar(),st=tr(i).toVar(),et=nn(Yl(1,R)).toVar(),dt=nn(Yl(1,M)).toVar();return nn(Yl(1,v)).toVar().mul(dt.mul(st.mul(et).add(ze.mul(R))).add(M.mul(Re.mul(et).add(be.mul(R))))).add(v.mul(dt.mul(J.mul(et).add(ne.mul(R))).add(M.mul(re.mul(et).add(I.mul(R))))))}).setLayout({name:"mx_trilerp_1",type:"vec3",inputs:[{name:"v0",type:"vec3"},{name:"v1",type:"vec3"},{name:"v2",type:"vec3"},{name:"v3",type:"vec3"},{name:"v4",type:"vec3"},{name:"v5",type:"vec3"},{name:"v6",type:"vec3"},{name:"v7",type:"vec3"},{name:"s",type:"float"},{name:"t",type:"float"},{name:"r",type:"float"}]})]),Ff=td([Ar(([i,e,t])=>{const n=nn(t).toVar(),r=nn(e).toVar(),a=Yi(i).toVar(),o=Yi(a.bitAnd(Yi(7))).toVar(),c=nn(Wb(o.lessThan(Yi(4)),r,n)).toVar(),u=nn(Ho(2,Wb(o.lessThan(Yi(4)),n,r))).toVar();return eE(c,bp(o.bitAnd(Yi(1)))).add(eE(u,bp(o.bitAnd(Yi(2)))))}).setLayout({name:"mx_gradient_float_0",type:"float",inputs:[{name:"hash",type:"uint"},{name:"x",type:"float"},{name:"y",type:"float"}]}),Ar(([i,e,t,n])=>{const r=nn(n).toVar(),a=nn(t).toVar(),o=nn(e).toVar(),c=Yi(i).toVar(),u=Yi(c.bitAnd(Yi(15))).toVar(),f=nn(Wb(u.lessThan(Yi(8)),o,a)).toVar(),g=nn(Wb(u.lessThan(Yi(4)),a,Wb(u.equal(Yi(12)).or(u.equal(Yi(14))),o,r))).toVar();return eE(f,bp(u.bitAnd(Yi(1)))).add(eE(g,bp(u.bitAnd(Yi(2)))))}).setLayout({name:"mx_gradient_float_1",type:"float",inputs:[{name:"hash",type:"uint"},{name:"x",type:"float"},{name:"y",type:"float"},{name:"z",type:"float"}]})]),Bp=td([Ar(([i,e,t])=>{const n=nn(t).toVar(),r=nn(e).toVar(),a=dy(i).toVar();return tr(Ff(a.x,r,n),Ff(a.y,r,n),Ff(a.z,r,n))}).setLayout({name:"mx_gradient_vec3_0",type:"vec3",inputs:[{name:"hash",type:"uvec3"},{name:"x",type:"float"},{name:"y",type:"float"}]}),Ar(([i,e,t,n])=>{const r=nn(n).toVar(),a=nn(t).toVar(),o=nn(e).toVar(),c=dy(i).toVar();return tr(Ff(c.x,o,a,r),Ff(c.y,o,a,r),Ff(c.z,o,a,r))}).setLayout({name:"mx_gradient_vec3_1",type:"vec3",inputs:[{name:"hash",type:"uvec3"},{name:"x",type:"float"},{name:"y",type:"float"},{name:"z",type:"float"}]})]),p6=Ar(([i])=>{const e=nn(i).toVar();return Ho(.6616,e)}).setLayout({name:"mx_gradient_scale2d_0",type:"float",inputs:[{name:"v",type:"float"}]}),g6=Ar(([i])=>{const e=nn(i).toVar();return Ho(.982,e)}).setLayout({name:"mx_gradient_scale3d_0",type:"float",inputs:[{name:"v",type:"float"}]}),eU=td([p6,Ar(([i])=>{const e=tr(i).toVar();return Ho(.6616,e)}).setLayout({name:"mx_gradient_scale2d_1",type:"vec3",inputs:[{name:"v",type:"vec3"}]})]),tU=td([g6,Ar(([i])=>{const e=tr(i).toVar();return Ho(.982,e)}).setLayout({name:"mx_gradient_scale3d_1",type:"vec3",inputs:[{name:"v",type:"vec3"}]})]),kA=Ar(([i,e])=>{const t=Yn(e).toVar(),n=Yi(i).toVar();return n.shiftLeft(t).bitOr(n.shiftRight(Yn(32).sub(t)))}).setLayout({name:"mx_rotl32",type:"uint",inputs:[{name:"x",type:"uint"},{name:"k",type:"int"}]}),nU=Ar(([i,e,t])=>{i.subAssign(t),i.bitXorAssign(kA(t,Yn(4))),t.addAssign(e),e.subAssign(i),e.bitXorAssign(kA(i,Yn(6))),i.addAssign(t),t.subAssign(e),t.bitXorAssign(kA(e,Yn(8))),e.addAssign(i),i.subAssign(t),i.bitXorAssign(kA(t,Yn(16))),t.addAssign(e),e.subAssign(i),e.bitXorAssign(kA(i,Yn(19))),i.addAssign(t),t.subAssign(e),t.bitXorAssign(kA(e,Yn(4))),e.addAssign(i)}),Zb=Ar(([i,e,t])=>{const n=Yi(t).toVar(),r=Yi(e).toVar(),a=Yi(i).toVar();return n.bitXorAssign(r),n.subAssign(kA(r,Yn(14))),a.bitXorAssign(n),a.subAssign(kA(n,Yn(11))),r.bitXorAssign(a),r.subAssign(kA(a,Yn(25))),n.bitXorAssign(r),n.subAssign(kA(r,Yn(16))),a.bitXorAssign(n),a.subAssign(kA(n,Yn(4))),r.bitXorAssign(a),r.subAssign(kA(a,Yn(14))),n.bitXorAssign(r),n.subAssign(kA(r,Yn(24))),n}).setLayout({name:"mx_bjfinal",type:"uint",inputs:[{name:"a",type:"uint"},{name:"b",type:"uint"},{name:"c",type:"uint"}]}),md=Ar(([i])=>{const e=Yi(i).toVar();return nn(e).div(nn(Yi(Yn(4294967295))))}).setLayout({name:"mx_bits_to_01",type:"float",inputs:[{name:"bits",type:"uint"}]}),dm=Ar(([i])=>{const e=nn(i).toVar();return e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10))}).setLayout({name:"mx_fade",type:"float",inputs:[{name:"t",type:"float"}]}),ou=td([Ar(([i])=>{const e=Yn(i).toVar(),t=Yi(Yi(1)).toVar(),n=Yi(Yi(Yn(3735928559)).add(t.shiftLeft(Yi(2))).add(Yi(13))).toVar();return Zb(n.add(Yi(e)),n,n)}).setLayout({name:"mx_hash_int_0",type:"uint",inputs:[{name:"x",type:"int"}]}),Ar(([i,e])=>{const t=Yn(e).toVar(),n=Yn(i).toVar(),r=Yi(Yi(2)).toVar(),a=Yi().toVar(),o=Yi().toVar(),c=Yi().toVar();return a.assign(o.assign(c.assign(Yi(Yn(3735928559)).add(r.shiftLeft(Yi(2))).add(Yi(13))))),a.addAssign(Yi(n)),o.addAssign(Yi(t)),Zb(a,o,c)}).setLayout({name:"mx_hash_int_1",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"}]}),Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=Yn(e).toVar(),a=Yn(i).toVar(),o=Yi(Yi(3)).toVar(),c=Yi().toVar(),u=Yi().toVar(),f=Yi().toVar();return c.assign(u.assign(f.assign(Yi(Yn(3735928559)).add(o.shiftLeft(Yi(2))).add(Yi(13))))),c.addAssign(Yi(a)),u.addAssign(Yi(r)),f.addAssign(Yi(n)),Zb(c,u,f)}).setLayout({name:"mx_hash_int_2",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"}]}),Ar(([i,e,t,n])=>{const r=Yn(n).toVar(),a=Yn(t).toVar(),o=Yn(e).toVar(),c=Yn(i).toVar(),u=Yi(Yi(4)).toVar(),f=Yi().toVar(),g=Yi().toVar(),v=Yi().toVar();return f.assign(g.assign(v.assign(Yi(Yn(3735928559)).add(u.shiftLeft(Yi(2))).add(Yi(13))))),f.addAssign(Yi(c)),g.addAssign(Yi(o)),v.addAssign(Yi(a)),nU(f,g,v),f.addAssign(Yi(r)),Zb(f,g,v)}).setLayout({name:"mx_hash_int_3",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"},{name:"xx",type:"int"}]}),Ar(([i,e,t,n,r])=>{const a=Yn(r).toVar(),o=Yn(n).toVar(),c=Yn(t).toVar(),u=Yn(e).toVar(),f=Yn(i).toVar(),g=Yi(Yi(5)).toVar(),v=Yi().toVar(),M=Yi().toVar(),R=Yi().toVar();return v.assign(M.assign(R.assign(Yi(Yn(3735928559)).add(g.shiftLeft(Yi(2))).add(Yi(13))))),v.addAssign(Yi(f)),M.addAssign(Yi(u)),R.addAssign(Yi(c)),nU(v,M,R),v.addAssign(Yi(o)),M.addAssign(Yi(a)),Zb(v,M,R)}).setLayout({name:"mx_hash_int_4",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"},{name:"xx",type:"int"},{name:"yy",type:"int"}]})]),Rp=td([Ar(([i,e])=>{const t=Yn(e).toVar(),n=Yn(i).toVar(),r=Yi(ou(n,t)).toVar(),a=dy().toVar();return a.x.assign(r.bitAnd(Yn(255))),a.y.assign(r.shiftRight(Yn(8)).bitAnd(Yn(255))),a.z.assign(r.shiftRight(Yn(16)).bitAnd(Yn(255))),a}).setLayout({name:"mx_hash_vec3_0",type:"uvec3",inputs:[{name:"x",type:"int"},{name:"y",type:"int"}]}),Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=Yn(e).toVar(),a=Yn(i).toVar(),o=Yi(ou(a,r,n)).toVar(),c=dy().toVar();return c.x.assign(o.bitAnd(Yn(255))),c.y.assign(o.shiftRight(Yn(8)).bitAnd(Yn(255))),c.z.assign(o.shiftRight(Yn(16)).bitAnd(Yn(255))),c}).setLayout({name:"mx_hash_vec3_1",type:"uvec3",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"}]})]),jC=td([Ar(([i])=>{const e=rs(i).toVar(),t=Yn().toVar(),n=Yn().toVar(),r=nn($u(e.x,t)).toVar(),a=nn($u(e.y,n)).toVar(),o=nn(dm(r)).toVar(),c=nn(dm(a)).toVar(),u=nn(qF(Ff(ou(t,n),r,a),Ff(ou(t.add(Yn(1)),n),r.sub(1),a),Ff(ou(t,n.add(Yn(1))),r,a.sub(1)),Ff(ou(t.add(Yn(1)),n.add(Yn(1))),r.sub(1),a.sub(1)),o,c)).toVar();return eU(u)}).setLayout({name:"mx_perlin_noise_float_0",type:"float",inputs:[{name:"p",type:"vec2"}]}),Ar(([i])=>{const e=tr(i).toVar(),t=Yn().toVar(),n=Yn().toVar(),r=Yn().toVar(),a=nn($u(e.x,t)).toVar(),o=nn($u(e.y,n)).toVar(),c=nn($u(e.z,r)).toVar(),u=nn(dm(a)).toVar(),f=nn(dm(o)).toVar(),g=nn(dm(c)).toVar(),v=nn(JF(Ff(ou(t,n,r),a,o,c),Ff(ou(t.add(Yn(1)),n,r),a.sub(1),o,c),Ff(ou(t,n.add(Yn(1)),r),a,o.sub(1),c),Ff(ou(t.add(Yn(1)),n.add(Yn(1)),r),a.sub(1),o.sub(1),c),Ff(ou(t,n,r.add(Yn(1))),a,o,c.sub(1)),Ff(ou(t.add(Yn(1)),n,r.add(Yn(1))),a.sub(1),o,c.sub(1)),Ff(ou(t,n.add(Yn(1)),r.add(Yn(1))),a,o.sub(1),c.sub(1)),Ff(ou(t.add(Yn(1)),n.add(Yn(1)),r.add(Yn(1))),a.sub(1),o.sub(1),c.sub(1)),u,f,g)).toVar();return tU(v)}).setLayout({name:"mx_perlin_noise_float_1",type:"float",inputs:[{name:"p",type:"vec3"}]})]),Kb=td([Ar(([i])=>{const e=rs(i).toVar(),t=Yn().toVar(),n=Yn().toVar(),r=nn($u(e.x,t)).toVar(),a=nn($u(e.y,n)).toVar(),o=nn(dm(r)).toVar(),c=nn(dm(a)).toVar(),u=tr(qF(Bp(Rp(t,n),r,a),Bp(Rp(t.add(Yn(1)),n),r.sub(1),a),Bp(Rp(t,n.add(Yn(1))),r,a.sub(1)),Bp(Rp(t.add(Yn(1)),n.add(Yn(1))),r.sub(1),a.sub(1)),o,c)).toVar();return eU(u)}).setLayout({name:"mx_perlin_noise_vec3_0",type:"vec3",inputs:[{name:"p",type:"vec2"}]}),Ar(([i])=>{const e=tr(i).toVar(),t=Yn().toVar(),n=Yn().toVar(),r=Yn().toVar(),a=nn($u(e.x,t)).toVar(),o=nn($u(e.y,n)).toVar(),c=nn($u(e.z,r)).toVar(),u=nn(dm(a)).toVar(),f=nn(dm(o)).toVar(),g=nn(dm(c)).toVar(),v=tr(JF(Bp(Rp(t,n,r),a,o,c),Bp(Rp(t.add(Yn(1)),n,r),a.sub(1),o,c),Bp(Rp(t,n.add(Yn(1)),r),a,o.sub(1),c),Bp(Rp(t.add(Yn(1)),n.add(Yn(1)),r),a.sub(1),o.sub(1),c),Bp(Rp(t,n,r.add(Yn(1))),a,o,c.sub(1)),Bp(Rp(t.add(Yn(1)),n,r.add(Yn(1))),a.sub(1),o,c.sub(1)),Bp(Rp(t,n.add(Yn(1)),r.add(Yn(1))),a,o.sub(1),c.sub(1)),Bp(Rp(t.add(Yn(1)),n.add(Yn(1)),r.add(Yn(1))),a.sub(1),o.sub(1),c.sub(1)),u,f,g)).toVar();return tU(v)}).setLayout({name:"mx_perlin_noise_vec3_1",type:"vec3",inputs:[{name:"p",type:"vec3"}]})]),m6=td([Ar(([i])=>{const e=nn(i).toVar(),t=Yn(Wh(e)).toVar();return md(ou(t))}).setLayout({name:"mx_cell_noise_float_0",type:"float",inputs:[{name:"p",type:"float"}]}),Ar(([i])=>{const e=rs(i).toVar(),t=Yn(Wh(e.x)).toVar(),n=Yn(Wh(e.y)).toVar();return md(ou(t,n))}).setLayout({name:"mx_cell_noise_float_1",type:"float",inputs:[{name:"p",type:"vec2"}]}),Ar(([i])=>{const e=tr(i).toVar(),t=Yn(Wh(e.x)).toVar(),n=Yn(Wh(e.y)).toVar(),r=Yn(Wh(e.z)).toVar();return md(ou(t,n,r))}).setLayout({name:"mx_cell_noise_float_2",type:"float",inputs:[{name:"p",type:"vec3"}]}),Ar(([i])=>{const e=Sa(i).toVar(),t=Yn(Wh(e.x)).toVar(),n=Yn(Wh(e.y)).toVar(),r=Yn(Wh(e.z)).toVar(),a=Yn(Wh(e.w)).toVar();return md(ou(t,n,r,a))}).setLayout({name:"mx_cell_noise_float_3",type:"float",inputs:[{name:"p",type:"vec4"}]})]),tE=td([Ar(([i])=>{const e=nn(i).toVar(),t=Yn(Wh(e)).toVar();return tr(md(ou(t,Yn(0))),md(ou(t,Yn(1))),md(ou(t,Yn(2))))}).setLayout({name:"mx_cell_noise_vec3_0",type:"vec3",inputs:[{name:"p",type:"float"}]}),Ar(([i])=>{const e=rs(i).toVar(),t=Yn(Wh(e.x)).toVar(),n=Yn(Wh(e.y)).toVar();return tr(md(ou(t,n,Yn(0))),md(ou(t,n,Yn(1))),md(ou(t,n,Yn(2))))}).setLayout({name:"mx_cell_noise_vec3_1",type:"vec3",inputs:[{name:"p",type:"vec2"}]}),Ar(([i])=>{const e=tr(i).toVar(),t=Yn(Wh(e.x)).toVar(),n=Yn(Wh(e.y)).toVar(),r=Yn(Wh(e.z)).toVar();return tr(md(ou(t,n,r,Yn(0))),md(ou(t,n,r,Yn(1))),md(ou(t,n,r,Yn(2))))}).setLayout({name:"mx_cell_noise_vec3_2",type:"vec3",inputs:[{name:"p",type:"vec3"}]}),Ar(([i])=>{const e=Sa(i).toVar(),t=Yn(Wh(e.x)).toVar(),n=Yn(Wh(e.y)).toVar(),r=Yn(Wh(e.z)).toVar(),a=Yn(Wh(e.w)).toVar();return tr(md(ou(t,n,r,a,Yn(0))),md(ou(t,n,r,a,Yn(1))),md(ou(t,n,r,a,Yn(2))))}).setLayout({name:"mx_cell_noise_vec3_3",type:"vec3",inputs:[{name:"p",type:"vec4"}]})]),nE=Ar(([i,e,t,n])=>{const r=nn(n).toVar(),a=nn(t).toVar(),o=Yn(e).toVar(),c=tr(i).toVar(),u=nn(0).toVar(),f=nn(1).toVar();return Wc(o,()=>{u.addAssign(f.mul(jC(c))),f.mulAssign(r),c.mulAssign(a)}),u}).setLayout({name:"mx_fractal_noise_float",type:"float",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),rE=Ar(([i,e,t,n])=>{const r=nn(n).toVar(),a=nn(t).toVar(),o=Yn(e).toVar(),c=tr(i).toVar(),u=tr(0).toVar(),f=nn(1).toVar();return Wc(o,()=>{u.addAssign(f.mul(Kb(c))),f.mulAssign(r),c.mulAssign(a)}),u}).setLayout({name:"mx_fractal_noise_vec3",type:"vec3",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),v6=Ar(([i,e,t,n])=>{const r=nn(n).toVar(),a=nn(t).toVar(),o=Yn(e).toVar(),c=tr(i).toVar();return rs(nE(c,o,a,r),nE(c.add(tr(Yn(19),Yn(193),Yn(17))),o,a,r))}).setLayout({name:"mx_fractal_noise_vec2",type:"vec2",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),y6=Ar(([i,e,t,n])=>{const r=nn(n).toVar(),a=nn(t).toVar(),o=Yn(e).toVar(),c=tr(i).toVar(),u=tr(rE(c,o,a,r)).toVar(),f=nn(nE(c.add(tr(Yn(19),Yn(193),Yn(17))),o,a,r)).toVar();return Sa(u,f)}).setLayout({name:"mx_fractal_noise_vec4",type:"vec4",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),jx=td([Ar(([i,e,t,n,r,a,o])=>{const c=Yn(o).toVar(),u=nn(a).toVar(),f=Yn(r).toVar(),g=Yn(n).toVar(),v=Yn(t).toVar(),M=Yn(e).toVar(),R=rs(i).toVar(),I=tr(tE(rs(M.add(g),v.add(f)))).toVar(),re=rs(I.x,I.y).toVar();re.subAssign(.5),re.mulAssign(u),re.addAssign(.5);const ne=rs(rs(nn(M),nn(v)).add(re)).toVar(),J=rs(ne.sub(R)).toVar();return Va(c.equal(Yn(2)),()=>_u(J.x).add(_u(J.y))),Va(c.equal(Yn(3)),()=>uh(_u(J.x),_u(J.y))),wp(J,J)}).setLayout({name:"mx_worley_distance_0",type:"float",inputs:[{name:"p",type:"vec2"},{name:"x",type:"int"},{name:"y",type:"int"},{name:"xoff",type:"int"},{name:"yoff",type:"int"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),Ar(([i,e,t,n,r,a,o,c,u])=>{const f=Yn(u).toVar(),g=nn(c).toVar(),v=Yn(o).toVar(),M=Yn(a).toVar(),R=Yn(r).toVar(),I=Yn(n).toVar(),re=Yn(t).toVar(),ne=Yn(e).toVar(),J=tr(i).toVar(),be=tr(tE(tr(ne.add(R),re.add(M),I.add(v)))).toVar();be.subAssign(.5),be.mulAssign(g),be.addAssign(.5);const Re=tr(tr(nn(ne),nn(re),nn(I)).add(be)).toVar(),ze=tr(Re.sub(J)).toVar();return Va(f.equal(Yn(2)),()=>_u(ze.x).add(_u(ze.y)).add(_u(ze.z))),Va(f.equal(Yn(3)),()=>uh(_u(ze.x),_u(ze.y),_u(ze.z))),wp(ze,ze)}).setLayout({name:"mx_worley_distance_1",type:"float",inputs:[{name:"p",type:"vec3"},{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"},{name:"xoff",type:"int"},{name:"yoff",type:"int"},{name:"zoff",type:"int"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),x6=Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=nn(e).toVar(),a=rs(i).toVar(),o=Yn().toVar(),c=Yn().toVar(),u=rs($u(a.x,o),$u(a.y,c)).toVar(),f=nn(1e6).toVar();return Wc({start:-1,end:Yn(1),name:"x",condition:"<="},({x:g})=>{Wc({start:-1,end:Yn(1),name:"y",condition:"<="},({y:v})=>{const M=nn(jx(u,g,v,o,c,r,n)).toVar();f.assign(tA(f,M))})}),Va(n.equal(Yn(0)),()=>{f.assign(pd(f))}),f}).setLayout({name:"mx_worley_noise_float_0",type:"float",inputs:[{name:"p",type:"vec2"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),_6=Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=nn(e).toVar(),a=rs(i).toVar(),o=Yn().toVar(),c=Yn().toVar(),u=rs($u(a.x,o),$u(a.y,c)).toVar(),f=rs(1e6,1e6).toVar();return Wc({start:-1,end:Yn(1),name:"x",condition:"<="},({x:g})=>{Wc({start:-1,end:Yn(1),name:"y",condition:"<="},({y:v})=>{const M=nn(jx(u,g,v,o,c,r,n)).toVar();Va(M.lessThan(f.x),()=>{f.y.assign(f.x),f.x.assign(M)}).ElseIf(M.lessThan(f.y),()=>{f.y.assign(M)})})}),Va(n.equal(Yn(0)),()=>{f.assign(pd(f))}),f}).setLayout({name:"mx_worley_noise_vec2_0",type:"vec2",inputs:[{name:"p",type:"vec2"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),b6=Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=nn(e).toVar(),a=rs(i).toVar(),o=Yn().toVar(),c=Yn().toVar(),u=rs($u(a.x,o),$u(a.y,c)).toVar(),f=tr(1e6,1e6,1e6).toVar();return Wc({start:-1,end:Yn(1),name:"x",condition:"<="},({x:g})=>{Wc({start:-1,end:Yn(1),name:"y",condition:"<="},({y:v})=>{const M=nn(jx(u,g,v,o,c,r,n)).toVar();Va(M.lessThan(f.x),()=>{f.z.assign(f.y),f.y.assign(f.x),f.x.assign(M)}).ElseIf(M.lessThan(f.y),()=>{f.z.assign(f.y),f.y.assign(M)}).ElseIf(M.lessThan(f.z),()=>{f.z.assign(M)})})}),Va(n.equal(Yn(0)),()=>{f.assign(pd(f))}),f}).setLayout({name:"mx_worley_noise_vec3_0",type:"vec3",inputs:[{name:"p",type:"vec2"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),w6=td([x6,Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=nn(e).toVar(),a=tr(i).toVar(),o=Yn().toVar(),c=Yn().toVar(),u=Yn().toVar(),f=tr($u(a.x,o),$u(a.y,c),$u(a.z,u)).toVar(),g=nn(1e6).toVar();return Wc({start:-1,end:Yn(1),name:"x",condition:"<="},({x:v})=>{Wc({start:-1,end:Yn(1),name:"y",condition:"<="},({y:M})=>{Wc({start:-1,end:Yn(1),name:"z",condition:"<="},({z:R})=>{const I=nn(jx(f,v,M,R,o,c,u,r,n)).toVar();g.assign(tA(g,I))})})}),Va(n.equal(Yn(0)),()=>{g.assign(pd(g))}),g}).setLayout({name:"mx_worley_noise_float_1",type:"float",inputs:[{name:"p",type:"vec3"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),S6=td([_6,Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=nn(e).toVar(),a=tr(i).toVar(),o=Yn().toVar(),c=Yn().toVar(),u=Yn().toVar(),f=tr($u(a.x,o),$u(a.y,c),$u(a.z,u)).toVar(),g=rs(1e6,1e6).toVar();return Wc({start:-1,end:Yn(1),name:"x",condition:"<="},({x:v})=>{Wc({start:-1,end:Yn(1),name:"y",condition:"<="},({y:M})=>{Wc({start:-1,end:Yn(1),name:"z",condition:"<="},({z:R})=>{const I=nn(jx(f,v,M,R,o,c,u,r,n)).toVar();Va(I.lessThan(g.x),()=>{g.y.assign(g.x),g.x.assign(I)}).ElseIf(I.lessThan(g.y),()=>{g.y.assign(I)})})})}),Va(n.equal(Yn(0)),()=>{g.assign(pd(g))}),g}).setLayout({name:"mx_worley_noise_vec2_1",type:"vec2",inputs:[{name:"p",type:"vec3"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),YC=td([b6,Ar(([i,e,t])=>{const n=Yn(t).toVar(),r=nn(e).toVar(),a=tr(i).toVar(),o=Yn().toVar(),c=Yn().toVar(),u=Yn().toVar(),f=tr($u(a.x,o),$u(a.y,c),$u(a.z,u)).toVar(),g=tr(1e6,1e6,1e6).toVar();return Wc({start:-1,end:Yn(1),name:"x",condition:"<="},({x:v})=>{Wc({start:-1,end:Yn(1),name:"y",condition:"<="},({y:M})=>{Wc({start:-1,end:Yn(1),name:"z",condition:"<="},({z:R})=>{const I=nn(jx(f,v,M,R,o,c,u,r,n)).toVar();Va(I.lessThan(g.x),()=>{g.z.assign(g.y),g.y.assign(g.x),g.x.assign(I)}).ElseIf(I.lessThan(g.y),()=>{g.z.assign(g.y),g.y.assign(I)}).ElseIf(I.lessThan(g.z),()=>{g.z.assign(I)})})})}),Va(n.equal(Yn(0)),()=>{g.assign(pd(g))}),g}).setLayout({name:"mx_worley_noise_vec3_1",type:"vec3",inputs:[{name:"p",type:"vec3"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),E6=Ar(([i,e,t,n,r,a,o,c,u,f,g])=>{const v=Yn(i).toVar(),M=rs(e).toVar(),R=rs(t).toVar(),I=rs(n).toVar(),re=nn(r).toVar(),ne=nn(a).toVar(),J=nn(o).toVar(),be=bp(c).toVar(),Re=Yn(u).toVar(),ze=nn(f).toVar(),st=nn(g).toVar(),et=M.mul(R).add(I),dt=nn(0).toVar();return Va(v.equal(Yn(0)),()=>{dt.assign(Kb(et))}),Va(v.equal(Yn(1)),()=>{dt.assign(tE(et))}),Va(v.equal(Yn(2)),()=>{dt.assign(YC(et,re,Yn(0)))}),Va(v.equal(Yn(3)),()=>{dt.assign(rE(tr(et,0),Re,ze,st))}),dt.assign(dt.mul(J.sub(ne)).add(ne)),Va(be,()=>{dt.assign(Ag(dt,ne,J))}),dt}).setLayout({name:"mx_unifiednoise2d",type:"float",inputs:[{name:"noiseType",type:"int"},{name:"texcoord",type:"vec2"},{name:"freq",type:"vec2"},{name:"offset",type:"vec2"},{name:"jitter",type:"float"},{name:"outmin",type:"float"},{name:"outmax",type:"float"},{name:"clampoutput",type:"bool"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),M6=Ar(([i,e,t,n,r,a,o,c,u,f,g])=>{const v=Yn(i).toVar(),M=tr(e).toVar(),R=tr(t).toVar(),I=tr(n).toVar(),re=nn(r).toVar(),ne=nn(a).toVar(),J=nn(o).toVar(),be=bp(c).toVar(),Re=Yn(u).toVar(),ze=nn(f).toVar(),st=nn(g).toVar(),et=M.mul(R).add(I),dt=nn(0).toVar();return Va(v.equal(Yn(0)),()=>{dt.assign(Kb(et))}),Va(v.equal(Yn(1)),()=>{dt.assign(tE(et))}),Va(v.equal(Yn(2)),()=>{dt.assign(YC(et,re,Yn(0)))}),Va(v.equal(Yn(3)),()=>{dt.assign(rE(et,Re,ze,st))}),dt.assign(dt.mul(J.sub(ne)).add(ne)),Va(be,()=>{dt.assign(Ag(dt,ne,J))}),dt}).setLayout({name:"mx_unifiednoise3d",type:"float",inputs:[{name:"noiseType",type:"int"},{name:"position",type:"vec3"},{name:"freq",type:"vec3"},{name:"offset",type:"vec3"},{name:"jitter",type:"float"},{name:"outmin",type:"float"},{name:"outmax",type:"float"},{name:"clampoutput",type:"bool"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),T6=Ar(([i])=>{const e=i.y,t=i.z,n=tr().toVar();return Va(e.lessThan(1e-4),()=>{n.assign(tr(t,t,t))}).Else(()=>{let r=i.x;r=r.sub(rm(r)).mul(6).toVar();const a=Yn(hT(r)),o=r.sub(nn(a)),c=t.mul(e.oneMinus()),u=t.mul(e.mul(o).oneMinus()),f=t.mul(e.mul(o.oneMinus()).oneMinus());Va(a.equal(Yn(0)),()=>{n.assign(tr(t,f,c))}).ElseIf(a.equal(Yn(1)),()=>{n.assign(tr(u,t,c))}).ElseIf(a.equal(Yn(2)),()=>{n.assign(tr(c,t,f))}).ElseIf(a.equal(Yn(3)),()=>{n.assign(tr(c,u,t))}).ElseIf(a.equal(Yn(4)),()=>{n.assign(tr(f,c,t))}).Else(()=>{n.assign(tr(t,c,u))})}),n}).setLayout({name:"mx_hsvtorgb",type:"vec3",inputs:[{name:"hsv",type:"vec3"}]}),C6=Ar(([i])=>{const e=tr(i).toVar(),t=nn(e.x).toVar(),n=nn(e.y).toVar(),r=nn(e.z).toVar(),a=nn(tA(t,tA(n,r))).toVar(),o=nn(uh(t,uh(n,r))).toVar(),c=nn(o.sub(a)).toVar(),u=nn().toVar(),f=nn().toVar(),g=nn().toVar();return g.assign(o),Va(o.greaterThan(0),()=>{f.assign(c.div(o))}).Else(()=>{f.assign(0)}),Va(f.lessThanEqual(0),()=>{u.assign(0)}).Else(()=>{Va(t.greaterThanEqual(o),()=>{u.assign(n.sub(r).div(c))}).ElseIf(n.greaterThanEqual(o),()=>{u.assign(Qh(2,r.sub(t).div(c)))}).Else(()=>{u.assign(Qh(4,t.sub(n).div(c)))}),u.mulAssign(1/6),Va(u.lessThan(0),()=>{u.addAssign(1)})}),tr(u,f,g)}).setLayout({name:"mx_rgbtohsv",type:"vec3",inputs:[{name:"c",type:"vec3"}]}),B6=Ar(([i])=>{const e=tr(i).toVar(),t=ZM(nT(e,tr(.04045))).toVar(),n=tr(e.div(12.92)).toVar(),r=tr(Sp(uh(e.add(tr(.055)),tr(0)).div(1.055),tr(2.4))).toVar();return Ll(n,r,t)}).setLayout({name:"mx_srgb_texture_to_lin_rec709",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),rU=(i,e)=>{i=nn(i),e=nn(e);const t=rs(e.dFdx(),e.dFdy()).length().mul(.7071067811865476);return LA(i.sub(t),i.add(t),e)},iU=(i,e,t,n)=>Ll(i,e,t[n].clamp()),R6=(i,e,t=qc())=>iU(i,e,t,"x"),P6=(i,e,t=qc())=>iU(i,e,t,"y"),I6=(i,e,t,n,r=qc())=>{const a=r.x.clamp(),o=r.y.clamp(),c=Ll(i,e,a),u=Ll(t,n,a);return Ll(c,u,o)},sU=(i,e,t,n,r)=>Ll(i,e,rU(t,n[r])),N6=(i,e,t,n=qc())=>sU(i,e,t,n,"x"),L6=(i,e,t,n=qc())=>sU(i,e,t,n,"y"),F6=(i=1,e=0,t=qc())=>t.mul(i).add(e),U6=(i,e=1)=>(i=nn(i),i.abs().pow(e).mul(i.sign())),D6=(i,e=1,t=.5)=>nn(i).sub(t).mul(e).add(t),O6=(i=qc(),e=1,t=0)=>jC(i.convert("vec2|vec3")).mul(e).add(t),k6=(i=qc(),e=1,t=0)=>Kb(i.convert("vec2|vec3")).mul(e).add(t),V6=(i=qc(),e=1,t=0)=>(i=i.convert("vec2|vec3"),Sa(Kb(i),jC(i.add(rs(19,73)))).mul(e).add(t)),H6=(i,e=qc(),t=rs(1,1),n=rs(0,0),r=1,a=0,o=1,c=!1,u=1,f=2,g=.5)=>E6(i,e.convert("vec2|vec3"),t,n,r,a,o,c,u,f,g),G6=(i,e=qc(),t=rs(1,1),n=rs(0,0),r=1,a=0,o=1,c=!1,u=1,f=2,g=.5)=>M6(i,e.convert("vec2|vec3"),t,n,r,a,o,c,u,f,g),z6=(i=qc(),e=1)=>w6(i.convert("vec2|vec3"),e,Yn(1)),Q6=(i=qc(),e=1)=>S6(i.convert("vec2|vec3"),e,Yn(1)),W6=(i=qc(),e=1)=>YC(i.convert("vec2|vec3"),e,Yn(1)),Z6=(i=qc())=>m6(i.convert("vec2|vec3")),K6=(i=qc(),e=3,t=2,n=.5,r=1)=>nE(i,Yn(e),t,n).mul(r),$6=(i=qc(),e=3,t=2,n=.5,r=1)=>v6(i,Yn(e),t,n).mul(r),X6=(i=qc(),e=3,t=2,n=.5,r=1)=>rE(i,Yn(e),t,n).mul(r),j6=(i=qc(),e=3,t=2,n=.5,r=1)=>y6(i,Yn(e),t,n).mul(r),Y6=(i,e=nn(0))=>Qh(i,e),q6=(i,e=nn(0))=>Yl(i,e),J6=(i,e=nn(1))=>Ho(i,e),eW=(i,e=nn(1))=>NA(i,e),tW=(i,e=nn(1))=>xb(i,e),nW=(i,e=nn(1))=>Sp(i,e),rW=(i=nn(0),e=nn(1))=>aS(i,e),iW=()=>Wx,sW=()=>lF,aW=(i,e=nn(1))=>Yl(e,i),oW=(i,e,t,n)=>i.greaterThan(e).mix(t,n),lW=(i,e,t,n)=>i.greaterThanEqual(e).mix(t,n),cW=(i,e,t,n)=>i.equal(e).mix(t,n),uW=(i,e=null)=>{if(typeof e=="string"){const t={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3},n=e.replace(/^out/,"").toLowerCase();if(t[n]!==void 0)return i.element(t[n])}if(typeof e=="number")return i.element(e);if(typeof e=="string"&&e.length===1){const t={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3};if(t[e]!==void 0)return i.element(t[e])}return i},hW=(i,e=rs(.5,.5),t=rs(1,1),n=nn(0),r=rs(0,0))=>{let a=i;if(e&&(a=a.sub(e)),t&&(a=a.mul(t)),n){const o=n.mul(Math.PI/180),c=o.cos(),u=o.sin();a=rs(a.x.mul(c).sub(a.y.mul(u)),a.x.mul(u).add(a.y.mul(c)))}return e&&(a=a.add(e)),r&&(a=a.add(r)),a},fW=(i,e)=>{i=rs(i),e=nn(e);const t=e.mul(Math.PI/180);return Ib(i,t)},dW=(i,e,t)=>{i=tr(i),e=nn(e),t=tr(t);const n=e.mul(Math.PI/180),r=t.normalize(),a=n.cos(),o=n.sin(),c=nn(1).sub(a);return i.mul(a).add(r.cross(i).mul(o)).add(r.mul(r.dot(i)).mul(c))},AW=(i,e)=>(i=tr(i),e=nn(e),QT(i,e)),pW=Ar(([i,e,t])=>{const n=Cd(i).toVar(),r=Yl(nn(.5).mul(e.sub(t)),UA).div(n).toVar(),a=Yl(nn(-.5).mul(e.sub(t)),UA).div(n).toVar(),o=tr().toVar();o.x=n.x.greaterThan(nn(0)).select(r.x,a.x),o.y=n.y.greaterThan(nn(0)).select(r.y,a.y),o.z=n.z.greaterThan(nn(0)).select(r.z,a.z);const c=tA(o.x,o.y,o.z).toVar();return UA.add(n.mul(c)).toVar().sub(t)}),aU=Ar(([i,e])=>{const t=i.x,n=i.y,r=i.z;let a=e.element(0).mul(.886227);return a=a.add(e.element(1).mul(2*.511664).mul(n)),a=a.add(e.element(2).mul(2*.511664).mul(r)),a=a.add(e.element(3).mul(2*.511664).mul(t)),a=a.add(e.element(4).mul(2*.429043).mul(t).mul(n)),a=a.add(e.element(5).mul(2*.429043).mul(n).mul(r)),a=a.add(e.element(6).mul(r.mul(r).mul(.743125).sub(.247708))),a=a.add(e.element(7).mul(2*.429043).mul(t).mul(r)),a=a.add(e.element(8).mul(.429043).mul(Ho(t,t).sub(Ho(n,n)))),a});var wj=Object.freeze({__proto__:null,BRDF_GGX:oC,BRDF_Lambert:by,BasicPointShadowFilter:$F,BasicShadowFilter:DF,Break:WN,Const:uI,Continue:kV,DFGLUT:Cb,D_GGX:dL,Discard:CI,EPSILON:rT,F_Schlick:Gx,Fn:Ar,HALF_PI:d4,INFINITY:u4,If:Va,Loop:Wc,NodeAccess:Yf,NodeShaderStage:ub,NodeType:Nk,NodeUpdateType:Xo,OnBeforeMaterialUpdate:c5,OnBeforeObjectUpdate:l5,OnMaterialUpdate:o5,OnObjectUpdate:a5,PCFShadowFilter:OF,PCFSoftShadowFilter:kF,PI:rS,PI2:h4,PointShadowFilter:XF,Return:B4,Schlick_to_F0:lC,ScriptableNodeResources:$S,ShaderNode:Cx,Stack:K1,Switch:t4,TBNViewMatrix:_y,TWO_PI:f4,VSMShadowFilter:VF,V_GGX_SmithCorrelated:fL,Var:cI,VarIntent:hI,abs:_u,acesFilmicToneMapping:bF,acos:aT,add:Qh,addMethodChaining:bi,addNodeElement:N4,agxToneMapping:wF,all:LP,alphaT:J1,and:yP,anisotropy:gv,anisotropyB:py,anisotropyT:gb,any:FP,append:s4,array:fP,arrayBuffer:r4,asin:kP,assign:dP,atan:aS,atan2:rI,atomicAdd:mQ,atomicAnd:_Q,atomicFunc:fm,atomicLoad:pQ,atomicMax:yQ,atomicMin:xQ,atomicOr:bQ,atomicStore:gQ,atomicSub:vQ,atomicXor:wQ,attenuationColor:qM,attenuationDistance:YM,attribute:Rd,attributeArray:f5,backgroundBlurriness:hF,backgroundIntensity:LC,backgroundRotation:fF,batch:HN,bentNormalView:oN,billboarding:zz,bitAnd:wP,bitNot:SP,bitOr:EP,bitXor:MP,bitangentGeometry:vV,bitangentLocal:yV,bitangentView:sN,bitangentWorld:xV,bitcast:aF,blendBurn:JN,blendColor:nH,blendDodge:eL,blendOverlay:nL,blendScreen:tL,blur:FL,bool:bp,buffer:_b,bufferAttribute:bT,builtin:d0,builtinAOContext:oI,builtinShadowContext:aI,bumpMap:QT,burn:iH,bvec2:iP,bvec3:ZM,bvec4:sP,bypass:SI,cache:wI,call:AP,cameraFar:g0,cameraIndex:yv,cameraNear:p0,cameraNormalMatrix:$4,cameraPosition:Sb,cameraProjectionMatrix:Pd,cameraProjectionMatrixInverse:Z4,cameraViewMatrix:FA,cameraViewport:X4,cameraWorldMatrix:K4,cbrt:qP,cdl:R5,ceil:sS,checker:d6,cineonToneMapping:_F,clamp:Ag,clearcoat:X1,clearcoatNormalView:xy,clearcoatRoughness:pb,code:ZS,color:rP,colorSpaceToWorking:uS,colorToDirection:bV,compute:bI,computeKernel:ST,computeSkinning:DV,context:u0,convert:oP,convertColorSpace:x4,convertToTexture:t5,cos:dg,countLeadingZeros:yz,countOneBits:xz,countTrailingZeros:vz,cross:c0,cubeTexture:Id,cubeTextureBase:OT,dFdx:cT,dFdy:uT,dashSize:my,debug:BI,decrement:IP,decrementBefore:RP,defaultBuildStages:FM,defaultShaderStages:K2,defined:fb,degrees:DP,deltaTime:Fz,densityFog:q5,densityFogFactor:DC,depth:rC,depthPass:F5,determinant:QP,difference:XP,diffuseColor:Yc,diffuseContribution:Ay,directPointLight:YF,directionToColor:lN,directionToFaceDirection:Fx,dispersion:JM,disposeShadowMaterial:GF,distance:$P,div:NA,dodge:sH,dot:wp,drawIndex:ON,dynamicBufferAttribute:E4,element:aP,emissive:XM,equal:tT,equals:ZP,equirectUV:iC,exp:iT,exp2:Px,expression:h0,faceDirection:LT,faceForward:mT,faceforward:A4,float:nn,floatBitsToInt:pz,floatBitsToUint:oF,floor:rm,fog:Hb,fract:fg,frameGroup:uP,frameId:lF,frontFacing:kI,fwidth:fT,gain:bz,gapSize:mb,getConstNodeType:nP,getCurrentStack:zM,getDirection:NL,getDistanceAttenuation:XC,getGeometryRoughness:hL,getNormalFromDepth:r5,getParallaxCorrectNormal:pW,getRoughness:aC,getScreenPosition:n5,getShIrradianceAt:aU,getShadowMaterial:HF,getShadowRenderObjectFunction:QF,getTextureIndex:iF,getViewPosition:$x,ggxConvolution:UL,globalId:iQ,glsl:Q5,glslFn:W5,grayscale:M5,greaterThan:nT,greaterThanEqual:vP,hash:_z,highpModelNormalViewMatrix:IT,highpModelViewMatrix:PT,hue:B5,increment:PP,incrementBefore:BP,inspector:PI,instance:LV,instanceIndex:lm,instancedArray:d5,instancedBufferAttribute:fS,instancedDynamicBufferAttribute:wT,instancedMesh:VN,int:Yn,intBitsToFloat:gz,interleavedGradientNoise:IC,inverse:WP,inverseSqrt:sT,inversesqrt:p4,invocationLocalIndex:NV,invocationSubgroupIndex:IV,ior:vb,iridescence:j1,iridescenceIOR:Y1,iridescenceThickness:q1,isolate:Nx,ivec2:sf,ivec3:WM,ivec4:KM,js:G5,label:lI,length:im,lengthSq:pT,lessThan:gP,lessThanEqual:mP,lightPosition:kC,lightProjectionUV:BF,lightShadowMatrix:YS,lightTargetDirection:HC,lightTargetPosition:RF,lightViewPosition:VC,lightingContext:$N,lights:YQ,linearDepth:Hx,linearToneMapping:yF,localId:sQ,log:iS,log2:nm,logarithmicDepthToViewZ:$V,luminance:FC,mat2:$1,mat3:qf,mat4:Av,matcapUV:ZL,materialAO:FN,materialAlphaTest:uN,materialAnisotropy:SN,materialAnisotropyVector:Dx,materialAttenuationColor:IN,materialAttenuationDistance:PN,materialClearcoat:vN,materialClearcoatNormal:xN,materialClearcoatRoughness:yN,materialColor:_S,materialDispersion:LN,materialEmissive:fN,materialEnvIntensity:gS,materialEnvRotation:DT,materialIOR:RN,materialIridescence:EN,materialIridescenceIOR:MN,materialIridescenceThickness:TN,materialLightMap:jT,materialLineDashOffset:XT,materialLineDashSize:KT,materialLineGapSize:$T,materialLineScale:ZT,materialLineWidth:SS,materialMetalness:gN,materialNormal:mN,materialOpacity:bS,materialPointSize:NN,materialReference:m0,materialReflectivity:wS,materialRefractionRatio:QI,materialRotation:_N,materialRoughness:pN,materialSheen:bN,materialSheenRoughness:wN,materialShininess:hN,materialSpecular:dN,materialSpecularColor:AN,materialSpecularIntensity:WT,materialSpecularStrength:Mb,materialThickness:BN,materialTransmission:CN,max:uh,maxMipLevel:MT,mediumpModelViewMatrix:OI,metalness:l0,min:tA,mix:Ll,mixElement:eI,mod:xb,modInt:NP,modelDirection:tV,modelNormalMatrix:DI,modelPosition:nV,modelRadius:UI,modelScale:rV,modelViewMatrix:om,modelViewPosition:iV,modelViewProjection:UN,modelWorldMatrix:Mp,modelWorldMatrixInverse:sV,morphReference:KN,mrt:sF,mul:Ho,mx_aastep:rU,mx_add:Y6,mx_atan2:rW,mx_cell_noise_float:Z6,mx_contrast:D6,mx_divide:eW,mx_fractal_noise_float:K6,mx_fractal_noise_vec2:$6,mx_fractal_noise_vec3:X6,mx_fractal_noise_vec4:j6,mx_frame:sW,mx_heighttonormal:AW,mx_hsvtorgb:T6,mx_ifequal:cW,mx_ifgreater:oW,mx_ifgreatereq:lW,mx_invert:aW,mx_modulo:tW,mx_multiply:J6,mx_noise_float:O6,mx_noise_vec3:k6,mx_noise_vec4:V6,mx_place2d:hW,mx_power:nW,mx_ramp4:I6,mx_ramplr:R6,mx_ramptb:P6,mx_rgbtohsv:C6,mx_rotate2d:fW,mx_rotate3d:dW,mx_safepower:U6,mx_separate:uW,mx_splitlr:N6,mx_splittb:L6,mx_srgb_texture_to_lin_rec709:B6,mx_subtract:q6,mx_timer:iW,mx_transform_uv:F6,mx_unifiednoise2d:H6,mx_unifiednoise3d:G6,mx_worley_noise_float:z6,mx_worley_noise_vec2:Q6,mx_worley_noise_vec3:W6,negate:lT,neutralToneMapping:SF,nodeArray:fy,nodeImmutable:Ws,nodeObject:qs,nodeObjectIntent:db,nodeObjects:Z1,nodeProxy:Vo,nodeProxyIntent:bs,normalFlat:VI,normalGeometry:pS,normalLocal:nA,normalMap:zT,normalView:rc,normalViewGeometry:Ux,normalWorld:xv,normalWorldGeometry:HI,normalize:Cd,not:_P,notEqual:pP,numWorkgroups:nQ,objectDirection:j4,objectGroup:eT,objectPosition:FI,objectRadius:eV,objectScale:q4,objectViewPosition:J4,objectWorldMatrix:Y4,oneMinus:VP,or:xP,orthographicDepthToViewZ:KV,oscSawtooth:kz,oscSine:Uz,oscSquare:Dz,oscTriangle:Oz,output:Rx,outputStruct:dz,overlay:oH,overloadingFn:td,packHalf2x16:Tz,packSnorm2x16:Ez,packUnorm2x16:Mz,parabola:MC,parallaxDirection:aN,parallaxUV:_V,parameter:oz,pass:N5,passTexture:L5,pcurve:wz,perspectiveDepthToViewZ:tC,pmremTexture:wC,pointShadow:jF,pointUV:p5,pointWidth:a4,positionGeometry:ed,positionLocal:hh,positionPrevious:AS,positionView:Rh,positionViewDirection:su,positionWorld:UA,positionWorldDirection:NT,posterize:I5,pow:Sp,pow2:dT,pow3:jP,pow4:AT,premultiplyAlpha:rL,property:hg,quadBroadcast:$Q,quadSwapDiagonal:GQ,quadSwapX:VQ,quadSwapY:HQ,radians:UP,rand:JP,range:eQ,rangeFog:Y5,rangeFogFactor:UC,reciprocal:GP,reference:au,referenceBuffer:kT,reflect:KP,reflectVector:KI,reflectView:WI,reflector:jz,refract:gT,refractVector:$I,refractView:ZI,reinhardToneMapping:xF,remap:MI,remapClamp:TI,renderGroup:Ja,renderOutput:ET,rendererReference:mI,replaceDefaultUV:Vz,rotate:Ib,rotateUV:Hz,roughness:tm,round:HP,rtt:uF,sRGBTransferEOTF:dI,sRGBTransferOETF:AI,sample:s5,sampler:k4,samplerComparison:V4,saturate:lS,saturation:T5,screen:aH,screenCoordinate:yy,screenDPR:BT,screenSize:vy,screenUV:A0,scriptable:j5,scriptableValue:KS,select:Jf,setCurrentStack:Ab,setName:vT,shaderStages:UM,shadow:ZF,shadowPositionWorld:QC,shapeCircle:A6,sharedUniformGroup:nS,sheen:IA,sheenRoughness:pv,shiftLeft:TP,shiftRight:CP,shininess:eS,sign:oT,sin:Bd,sinc:Sz,skinning:QN,smoothstep:LA,smoothstepElement:tI,specularColor:mv,specularColorBlended:gy,specularF90:Bx,spherizeUV:Gz,split:i4,spritesheetUV:Zz,sqrt:pd,stack:US,step:oS,stepElement:nI,storage:v0,storageBarrier:cQ,storageObject:RV,storageTexture:dF,string:n4,struct:fz,sub:Yl,subBuild:Ix,subgroupAdd:MQ,subgroupAll:DQ,subgroupAnd:IQ,subgroupAny:OQ,subgroupBallot:EQ,subgroupBroadcast:zQ,subgroupBroadcastFirst:kQ,subgroupElect:SQ,subgroupExclusiveAdd:CQ,subgroupExclusiveMul:PQ,subgroupInclusiveAdd:TQ,subgroupInclusiveMul:RQ,subgroupIndex:PV,subgroupMax:UQ,subgroupMin:FQ,subgroupMul:BQ,subgroupOr:NQ,subgroupShuffle:QQ,subgroupShuffleDown:KQ,subgroupShuffleUp:ZQ,subgroupShuffleXor:WQ,subgroupSize:aQ,subgroupXor:LQ,tan:OP,tangentGeometry:vS,tangentLocal:Eb,tangentView:yS,tangentWorld:iN,texture:_c,texture3D:QS,texture3DLevel:_5,texture3DLoad:x5,textureBarrier:uQ,textureBicubic:OH,textureBicubicLevel:hC,textureCubeUV:LL,textureLevel:O4,textureLoad:Sh,textureSize:f0,textureStore:m5,thickness:jM,time:Wx,toneMapping:vI,toneMappingExposure:yI,toonOutlinePass:D5,transformDirection:YP,transformNormal:GI,transformNormalToView:FT,transformedClearcoatNormalView:cV,transformedNormalView:oV,transformedNormalWorld:lV,transmission:tS,transpose:zP,triNoise3D:Iz,triplanarTexture:Kz,triplanarTextures:cF,trunc:hT,uint:Yi,uintBitsToFloat:mz,uniform:ja,uniformArray:gd,uniformCubeTexture:hV,uniformFlow:sI,uniformGroup:cP,uniformTexture:D4,unpackHalf2x16:Rz,unpackNormal:GT,unpackSnorm2x16:Cz,unpackUnorm2x16:Bz,unpremultiplyAlpha:rH,userData:w5,uv:qc,uvec2:QM,uvec3:dy,uvec4:$M,varying:sm,varyingProperty:PA,vec2:rs,vec3:tr,vec4:Sa,vectorComponents:uy,velocity:E5,vertexColor:qN,vertexIndex:DN,vertexStage:fI,vibrance:C5,viewZToLogarithmicDepth:nC,viewZToOrthographicDepth:Vx,viewZToPerspectiveDepth:eC,viewport:Lx,viewportCoordinate:NI,viewportDepthTexture:JT,viewportLinearDepth:XV,viewportMipTexture:qT,viewportResolution:W4,viewportSafeUV:Qz,viewportSharedTexture:iL,viewportSize:RT,viewportTexture:WV,viewportUV:Q4,vogelDiskSample:gg,wgsl:z5,wgslFn:Z5,workgroupArray:dQ,workgroupBarrier:lQ,workgroupId:rQ,workingToColorSpace:pI,xor:bP});const mg=new EC;class gW extends wv{constructor(e,t){super(),this.renderer=e,this.nodes=t}update(e,t,n){const r=this.renderer,a=this.nodes.getBackgroundNode(e)||e.background;let o=!1;if(a===null)r._clearColor.getRGB(mg),mg.a=r._clearColor.a;else if(a.isColor===!0)a.getRGB(mg),mg.a=1,o=!0;else if(a.isNode===!0){const u=this.get(e),f=a;mg.copy(r._clearColor);let g=u.backgroundMesh;if(g===void 0){let be=function(){a.removeEventListener("dispose",be),g.material.dispose(),g.geometry.dispose()};const M=Sa(f).mul(LC).context({getUV:()=>fF.mul(HI),getTextureLevel:()=>hF}),R=Pd.element(3).element(3).equal(1),I=NA(1,Pd.element(1).element(1)).mul(3),re=R.select(hh.mul(I),hh);let ne=Pd.mul(om.mul(Sa(re,0)));ne=ne.setZ(ne.w);const J=new fh;J.name="Background.material",J.side=fe,J.depthTest=!1,J.depthWrite=!1,J.allowOverride=!1,J.fog=!1,J.lights=!1,J.vertexNode=ne,J.colorNode=M,u.backgroundMeshNode=M,u.backgroundMesh=g=new Mc(new Xf(1,32,32),J),g.frustumCulled=!1,g.name="Background.mesh",a.addEventListener("dispose",be)}const v=f.getCacheKey();u.backgroundCacheKey!==v&&(u.backgroundMeshNode.node=Sa(f).mul(LC),u.backgroundMeshNode.needsUpdate=!0,g.material.needsUpdate=!0,u.backgroundCacheKey=v),t.unshift(g,g.geometry,g.material,0,0,null,null)}else ri("Renderer: Unsupported background configuration.",a);const c=r.xr.getEnvironmentBlendMode();if(c==="additive"?mg.set(0,0,0,1):c==="alpha-blend"&&mg.set(0,0,0,0),r.autoClear===!0||o===!0){const u=n.clearColorValue;u.r=mg.r,u.g=mg.g,u.b=mg.b,u.a=mg.a,(r.backend.isWebGLBackend===!0||r.alpha===!0)&&(u.r*=u.a,u.g*=u.a,u.b*=u.a),n.depthClearValue=r._clearDepth,n.stencilClearValue=r._clearStencil,n.clearColor=r.autoClearColor===!0,n.clearDepth=r.autoClearDepth===!0,n.clearStencil=r.autoClearStencil===!0}else n.clearColor=!1,n.clearDepth=!1,n.clearStencil=!1}}let mW=0;class qC{constructor(e="",t=[],n=0,r=[]){this.name=e,this.bindings=t,this.index=n,this.bindingsReference=r,this.id=mW++}}class vW{constructor(e,t,n,r,a,o,c,u,f,g=[]){this.vertexShader=e,this.fragmentShader=t,this.computeShader=n,this.transforms=g,this.nodeAttributes=r,this.bindings=a,this.updateNodes=o,this.updateBeforeNodes=c,this.updateAfterNodes=u,this.observer=f,this.usedTimes=0}createBindings(){const e=[];for(const t of this.bindings)if(t.bindings[0].groupNode.shared!==!0){const r=new qC(t.name,[],t.index,t.bindingsReference);e.push(r);for(const a of t.bindings)r.bindings.push(a.clone())}else e.push(t);return e}}class oU{constructor(e,t,n=null){this.isNodeAttribute=!0,this.name=e,this.type=t,this.node=n}}class yW{constructor(e,t,n){this.isNodeUniform=!0,this.name=e,this.type=t,this.node=n}get value(){return this.node.value}set value(e){this.node.value=e}get id(){return this.node.id}get groupNode(){return this.node.groupNode}}class lU{constructor(e,t,n=!1,r=null){this.isNodeVar=!0,this.name=e,this.type=t,this.readOnly=n,this.count=r}}class xW extends lU{constructor(e,t,n=null,r=null){super(e,t),this.needsInterpolation=!1,this.isNodeVarying=!0,this.interpolationType=n,this.interpolationSampling=r}}class _W{constructor(e,t,n=""){this.name=e,this.type=t,this.code=n,Object.defineProperty(this,"isNodeCode",{value:!0})}}let bW=0;class JC{constructor(e=null){this.id=bW++,this.nodesData=new WeakMap,this.parent=e}getData(e){let t=this.nodesData.get(e);return t===void 0&&this.parent!==null&&(t=this.parent.getData(e)),t}setData(e,t){this.nodesData.set(e,t)}}class wW{constructor(e,t){this.name=e,this.members=t,this.output=!1}}class Ev{constructor(e,t){this.name=e,this.value=t,this.boundary=0,this.itemSize=0,this.offset=0}setValue(e){this.value=e}getValue(){return this.value}}class SW extends Ev{constructor(e,t=0){super(e,t),this.isNumberUniform=!0,this.boundary=4,this.itemSize=1}}class EW extends Ev{constructor(e,t=new de){super(e,t),this.isVector2Uniform=!0,this.boundary=8,this.itemSize=2}}class MW extends Ev{constructor(e,t=new ce){super(e,t),this.isVector3Uniform=!0,this.boundary=16,this.itemSize=3}}class TW extends Ev{constructor(e,t=new ts){super(e,t),this.isVector4Uniform=!0,this.boundary=16,this.itemSize=4}}class CW extends Ev{constructor(e,t=new li){super(e,t),this.isColorUniform=!0,this.boundary=16,this.itemSize=3}}class BW extends Ev{constructor(e,t=new j0){super(e,t),this.isMatrix2Uniform=!0,this.boundary=8,this.itemSize=4}}class RW extends Ev{constructor(e,t=new vn){super(e,t),this.isMatrix3Uniform=!0,this.boundary=48,this.itemSize=12}}class PW extends Ev{constructor(e,t=new ti){super(e,t),this.isMatrix4Uniform=!0,this.boundary=64,this.itemSize=16}}class IW extends SW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class NW extends EW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class LW extends MW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class FW extends TW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class UW extends CW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class DW extends BW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class OW extends RW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class kW extends PW{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}let VW=0;const HW=new WeakMap,cU=new WeakMap,GW=new Map([[Int8Array,"int"],[Int16Array,"int"],[Int32Array,"int"],[Uint8Array,"uint"],[Uint16Array,"uint"],[Uint32Array,"uint"],[Float32Array,"float"]]),iE=i=>/e/g.test(i)?String(i).replace(/\+/g,""):(i=Number(i),i+(i%1?"":".0"));class uU{constructor(e,t,n){this.object=e,this.material=e&&e.material||null,this.geometry=e&&e.geometry||null,this.renderer=t,this.parser=n,this.scene=null,this.camera=null,this.nodes=[],this.sequentialNodes=[],this.updateNodes=[],this.updateBeforeNodes=[],this.updateAfterNodes=[],this.hashNodes={},this.observer=null,this.lightsNode=null,this.environmentNode=null,this.fogNode=null,this.clippingContext=null,this.vertexShader=null,this.fragmentShader=null,this.computeShader=null,this.flowNodes={vertex:[],fragment:[],compute:[]},this.flowCode={vertex:"",fragment:"",compute:""},this.uniforms={vertex:[],fragment:[],compute:[],index:0},this.structs={vertex:[],fragment:[],compute:[],index:0},this.types={vertex:[],fragment:[],compute:[],index:0},this.bindings={vertex:{},fragment:{},compute:{}},this.bindingsIndexes={},this.bindGroups=null,this.attributes=[],this.bufferAttributes=[],this.varyings=[],this.codes={},this.vars={},this.declarations={},this.flow={code:""},this.chaining=[],this.stack=US(),this.stacks=[],this.tab=" ",this.currentFunctionNode=null,this.context={material:this.material},this.cache=new JC,this.globalCache=this.cache,this.flowsData=new WeakMap,this.shaderStage=null,this.buildStage=null,this.subBuildLayers=[],this.activeStacks=[],this.subBuildFn=null,this.fnCall=null,Object.defineProperty(this,"id",{value:VW++})}isOpaque(){const e=this.material;return e.transparent===!1&&e.blending===_e&&e.alphaToCoverage===!1}getBindGroupsCache(){let e=cU.get(this.renderer);return e===void 0&&(e=new pg,cU.set(this.renderer,e)),e}createRenderTarget(e,t,n){return new La(e,t,n)}createCubeRenderTarget(e,t){return new sL(e,t)}includes(e){return this.nodes.includes(e)}getOutputStructName(){}_getBindGroup(e,t){const n=this.getBindGroupsCache(),r=[];let a=!0;for(const c of t)r.push(c),a=a&&c.groupNode.shared!==!0;let o;return a?(o=n.get(r),o===void 0&&(o=new qC(e,r,this.bindingsIndexes[e].group,r),n.set(r,o))):o=new qC(e,r,this.bindingsIndexes[e].group,r),o}getBindGroupArray(e,t){const n=this.bindings[t];let r=n[e];return r===void 0&&(this.bindingsIndexes[e]===void 0&&(this.bindingsIndexes[e]={binding:0,group:Object.keys(this.bindingsIndexes).length}),n[e]=r=[]),r}getBindings(){let e=this.bindGroups;if(e===null){const t={},n=this.bindings;for(const r of UM)for(const a in n[r]){const o=n[r][a];(t[a]||(t[a]=[])).push(...o)}e=[];for(const r in t){const a=t[r],o=this._getBindGroup(r,a);e.push(o)}this.bindGroups=e}return e}sortBindingGroups(){const e=this.getBindings();e.sort((t,n)=>t.bindings[0].groupNode.order-n.bindings[0].groupNode.order);for(let t=0;t=0?`${Math.round(t)}u`:"0u";if(e==="bool")return t?"true":"false";if(e==="color")return`${this.getType("vec3")}( ${iE(t.r)}, ${iE(t.g)}, ${iE(t.b)} )`;const n=this.getTypeLength(e),r=this.getComponentType(e),a=o=>this.generateConst(r,o);if(n===2)return`${this.getType(e)}( ${a(t.x)}, ${a(t.y)} )`;if(n===3)return`${this.getType(e)}( ${a(t.x)}, ${a(t.y)}, ${a(t.z)} )`;if(n===4&&e!=="mat2")return`${this.getType(e)}( ${a(t.x)}, ${a(t.y)}, ${a(t.z)}, ${a(t.w)} )`;if(n>=4&&t&&(t.isMatrix2||t.isMatrix3||t.isMatrix4))return`${this.getType(e)}( ${t.elements.map(a).join(", ")} )`;if(n>4)return`${this.getType(e)}()`;throw new Error(`NodeBuilder: Type '${e}' not found in generate constant attempt.`)}getType(e){return e==="color"?"vec3":e}hasGeometryAttribute(e){return this.geometry&&this.geometry.getAttribute(e)!==void 0}getAttribute(e,t){const n=this.attributes;for(const a of n)if(a.name===e)return a;const r=new oU(e,t);return this.registerDeclaration(r),n.push(r),r}getPropertyName(e){return e.name}isVector(e){return/vec\d/.test(e)}isMatrix(e){return/mat\d/.test(e)}isReference(e){return e==="void"||e==="property"||e==="sampler"||e==="samplerComparison"||e==="texture"||e==="cubeTexture"||e==="storageTexture"||e==="depthTexture"||e==="texture3D"}needsToWorkingColorSpace(){return!1}getComponentTypeFromTexture(e){const t=e.type;if(e.isDataTexture){if(t===jt)return"int";if(t===ct)return"uint"}return"float"}getElementType(e){return e==="mat2"?"vec2":e==="mat3"?"vec3":e==="mat4"?"vec4":this.getComponentType(e)}getComponentType(e){if(e=this.getVectorType(e),e==="float"||e==="bool"||e==="int"||e==="uint")return e;const t=/(b|i|u|)(vec|mat)([2-4])/.exec(e);return t===null?null:t[1]==="b"?"bool":t[1]==="i"?"int":t[1]==="u"?"uint":"float"}getVectorType(e){return e==="color"?"vec3":e==="texture"||e==="cubeTexture"||e==="storageTexture"||e==="texture3D"?"vec4":e}getTypeFromLength(e,t="float"){if(e===1)return t;let n=RM(e);const r=t==="float"?"":t[0];return/mat2/.test(t)===!0&&(n=n.replace("vec","mat")),r+n}getTypeFromArray(e){return GW.get(e.constructor)}isInteger(e){return/int|uint|(i|u)vec/.test(e)}getTypeFromAttribute(e){let t=e;e.isInterleavedBufferAttribute&&(t=e.data);const n=t.array,r=e.itemSize,a=e.normalized;let o;return!(e instanceof M0)&&a!==!0&&(o=this.getTypeFromArray(n)),this.getTypeFromLength(r,o)}getTypeLength(e){const t=this.getVectorType(e),n=/vec([2-4])/.exec(t);return n!==null?Number(n[1]):t==="float"||t==="bool"||t==="int"||t==="uint"?1:/mat2/.test(e)===!0?4:/mat3/.test(e)===!0?9:/mat4/.test(e)===!0?16:0}getVectorFromMatrix(e){return e.replace("mat","vec")}changeComponentType(e,t){return this.getTypeFromLength(this.getTypeLength(e),t)}getIntegerType(e){const t=this.getComponentType(e);return t==="int"||t==="uint"?e:this.changeComponentType(e,"int")}setActiveStack(e){this.activeStacks.push(e)}removeActiveStack(e){if(this.activeStacks[this.activeStacks.length-1]===e)this.activeStacks.pop();else throw new Error("NodeBuilder: Invalid active stack removal.")}getActiveStack(){return this.activeStacks[this.activeStacks.length-1]}getBaseStack(){return this.activeStacks[0]}addStack(){this.stack=US(this.stack);const e=zM();return this.stacks.push(e),Ab(this.stack),this.stack}removeStack(){const e=this.stack;for(const t of e.nodes){const n=this.getDataFromNode(t);n.stack=e}return this.stack=e.parent,Ab(this.stacks.pop()),e}getDataFromNode(e,t=this.shaderStage,n=null){n=n===null?e.isGlobal(this)?this.globalCache:this.cache:n;let r=n.getData(e);r===void 0&&(r={},n.setData(e,r)),r[t]===void 0&&(r[t]={});let a=r[t];const o=r.any?r.any.subBuilds:null,c=this.getClosestSubBuild(o);return c&&(a.subBuildsCache===void 0&&(a.subBuildsCache={}),a=a.subBuildsCache[c]||(a.subBuildsCache[c]={}),a.subBuilds=o),a}getNodeProperties(e,t="any"){const n=this.getDataFromNode(e,t);return n.properties||(n.properties={outputNode:null})}getBufferAttributeFromNode(e,t){const n=this.getDataFromNode(e,"vertex");let r=n.bufferAttribute;if(r===void 0){const a=this.uniforms.index++;r=new oU("nodeAttribute"+a,t,e),this.bufferAttributes.push(r),n.bufferAttribute=r}return r}getStructTypeNode(e,t=this.shaderStage){return this.types[t][e]||null}getStructTypeFromNode(e,t,n=null,r=this.shaderStage){const a=this.getDataFromNode(e,r,this.globalCache);let o=a.structType;if(o===void 0){const c=this.structs.index++;n===null&&(n="StructType"+c),o=new wW(n,t),this.structs[r].push(o),this.types[r][n]=e,a.structType=o}return o}getOutputStructTypeFromNode(e,t){const n=this.getStructTypeFromNode(e,t,"OutputType","fragment");return n.output=!0,n}getUniformFromNode(e,t,n=this.shaderStage,r=null){const a=this.getDataFromNode(e,n,this.globalCache);let o=a.uniform;if(o===void 0){const c=this.uniforms.index++;o=new yW(r||"nodeUniform"+c,t,e),this.uniforms[n].push(o),this.registerDeclaration(o),a.uniform=o}return o}getVarFromNode(e,t=null,n=e.getNodeType(this),r=this.shaderStage,a=!1){const o=this.getDataFromNode(e,r),c=this.getSubBuildProperty("variable",o.subBuilds);let u=o[c];if(u===void 0){const f=a?"_const":"_var",g=this.vars[r]||(this.vars[r]=[]),v=this.vars[f]||(this.vars[f]=0);t===null&&(t=(a?"nodeConst":"nodeVar")+v,this.vars[f]++),c!=="variable"&&(t=this.getSubBuildProperty(t,o.subBuilds));const M=e.getArrayCount(this);u=new lU(t,n,a,M),a||g.push(u),this.registerDeclaration(u),o[c]=u}return u}isDeterministic(e){if(e.isMathNode)return this.isDeterministic(e.aNode)&&(e.bNode?this.isDeterministic(e.bNode):!0)&&(e.cNode?this.isDeterministic(e.cNode):!0);if(e.isOperatorNode)return this.isDeterministic(e.aNode)&&(e.bNode?this.isDeterministic(e.bNode):!0);if(e.isArrayNode){if(e.values!==null){for(const t of e.values)if(!this.isDeterministic(t))return!1}return!0}else if(e.isConstNode)return!0;return!1}getVaryingFromNode(e,t=null,n=e.getNodeType(this),r=null,a=null){const o=this.getDataFromNode(e,"any"),c=this.getSubBuildProperty("varying",o.subBuilds);let u=o[c];if(u===void 0){const f=this.varyings,g=f.length;t===null&&(t="nodeVarying"+g),c!=="varying"&&(t=this.getSubBuildProperty(t,o.subBuilds)),u=new xW(t,n,r,a),f.push(u),this.registerDeclaration(u),o[c]=u}return u}registerDeclaration(e){const t=this.shaderStage,n=this.declarations[t]||(this.declarations[t]={}),r=this.getPropertyName(e);let a=1,o=r;for(;n[o]!==void 0;)o=r+"_"+a++;a>1&&(e.name=o,Qr(`TSL: Declaration name '${r}' of '${e.type}' already in use. Renamed to '${o}'.`)),n[o]=e}getCodeFromNode(e,t,n=this.shaderStage){const r=this.getDataFromNode(e);let a=r.code;if(a===void 0){const o=this.codes[n]||(this.codes[n]=[]),c=o.length;a=new _W("nodeCode"+c,t),o.push(a),r.code=a}return a}addFlowCodeHierarchy(e,t){const{flowCodes:n,flowCodeBlock:r}=this.getDataFromNode(e);let a=!0,o=t;for(;o;){if(r.get(o)===!0){a=!1;break}o=this.getDataFromNode(o).parentNodeBlock}if(a)for(const c of n)this.addLineFlowCode(c)}addLineFlowCodeBlock(e,t,n){const r=this.getDataFromNode(e),a=r.flowCodes||(r.flowCodes=[]),o=r.flowCodeBlock||(r.flowCodeBlock=new WeakMap);a.push(t),o.set(n,!0)}addLineFlowCode(e,t=null){return e===""?this:(t!==null&&this.context.nodeBlock&&this.addLineFlowCodeBlock(t,e,this.context.nodeBlock),e=this.tab+e,/;\s*$/.test(e)||(e=e+`; +`),this.flow.code+=e,this)}addFlowCode(e){return this.flow.code+=e,this}addFlowTab(){return this.tab+=" ",this}removeFlowTab(){return this.tab=this.tab.slice(0,-1),this}getFlowData(e){return this.flowsData.get(e)}flowNode(e){const t=e.getNodeType(this),n=this.flowChildNode(e,t);return this.flowsData.set(e,n),n}addInclude(e){this.currentFunctionNode!==null&&this.currentFunctionNode.includes.push(e)}buildFunctionNode(e){const t=new EF,n=this.currentFunctionNode;return this.currentFunctionNode=t,t.code=this.buildFunctionCode(e),this.currentFunctionNode=n,t}flowShaderNode(e){const t=e.layout,n={[Symbol.iterator](){let o=0;const c=Object.values(this);return{next:()=>({value:c[o],done:o++>=c.length})}}};for(const o of t.inputs)n[o.name]=new nF(o.type,o.name);e.layout=null;const r=e.call(n),a=this.flowStagesNode(r,t.type);return e.layout=t,a}flowBuildStage(e,t,n=null){const r=this.getBuildStage();this.setBuildStage(t);const a=e.build(this,n);return this.setBuildStage(r),a}flowStagesNode(e,t=null){const n=this.flow,r=this.vars,a=this.declarations,o=this.cache,c=this.buildStage,u=this.stack,f={code:""};this.flow=f,this.vars={},this.declarations={},this.cache=new JC,this.stack=US();for(const g of FM)this.setBuildStage(g),f.result=e.build(this,t);return f.vars=this.getVars(this.shaderStage),this.flow=n,this.vars=r,this.declarations=a,this.cache=o,this.stack=u,this.setBuildStage(c),f}getFunctionOperator(){return null}buildFunctionCode(){Qr("Abstract function.")}flowChildNode(e,t=null){const n=this.flow,r={code:""};return this.flow=r,r.result=e.build(this,t),this.flow=n,r}flowNodeFromShaderStage(e,t,n=null,r=null){const a=this.tab,o=this.cache,c=this.shaderStage,u=this.context;this.setShaderStage(e);const f=Dc({},this.context);delete f.nodeBlock,this.cache=this.globalCache,this.tab=" ",this.context=f;let g=null;if(this.buildStage==="generate"){const v=this.flowChildNode(t,n);r!==null&&(v.code+=`${this.tab+r} = ${v.result}; +`),this.flowCode[e]=this.flowCode[e]+v.code,g=v}else g=t.build(this);return this.setShaderStage(c),this.cache=o,this.tab=a,this.context=u,g}getAttributesArray(){return this.attributes.concat(this.bufferAttributes)}getAttributes(){Qr("Abstract function.")}getVaryings(){Qr("Abstract function.")}getVar(e,t,n=null){return`${n!==null?this.generateArrayDeclaration(e,n):this.getType(e)} ${t}`}getVars(e){let t="";const n=this.vars[e];if(n!==void 0)for(const r of n)t+=`${this.getVar(r.type,r.name)}; `;return t}getUniforms(){Qr("Abstract function.")}getCodes(e){const t=this.codes[e];let n="";if(t!==void 0)for(const r of t)n+=r.code+` +`;return n}getHash(){return this.vertexShader+this.fragmentShader+this.computeShader}setShaderStage(e){this.shaderStage=e}getShaderStage(){return this.shaderStage}setBuildStage(e){this.buildStage=e}getBuildStage(){return this.buildStage}buildCode(){Qr("Abstract function.")}get subBuild(){return this.subBuildLayers[this.subBuildLayers.length-1]||null}addSubBuild(e){this.subBuildLayers.push(e)}removeSubBuild(){return this.subBuildLayers.pop()}getClosestSubBuild(e){let t;if(e&&e.isNode?e.isShaderCallNodeInternal?t=e.shaderNode.subBuilds:e.isStackNode?t=[e.subBuild]:t=this.getDataFromNode(e,"any").subBuilds:e instanceof Set?t=[...e]:t=e,!t)return null;const n=this.subBuildLayers;for(let r=t.length-1;r>=0;r--){const a=t[r];if(n.includes(a))return a}return null}getSubBuildOutput(e){return this.getSubBuildProperty("outputNode",e)}getSubBuildProperty(e="",t=null){let n;t!==null?n=this.getClosestSubBuild(t):n=this.subBuildFn;let r;return n?r=e?n+"_"+e:n:r=e,r}build(){const{object:e,material:t,renderer:n}=this;if(t!==null){let r=n.library.fromMaterial(t);r===null&&(ri(`NodeMaterial: Material "${t.type}" is not compatible.`),r=new fh),r.build(this)}else this.addFlow("compute",e);for(const r of FM){this.setBuildStage(r),this.context.vertex&&this.context.vertex.isNode&&this.flowNodeFromShaderStage("vertex",this.context.vertex);for(const a of UM){this.setShaderStage(a);const o=this.flowNodes[a];for(const c of o)r==="generate"?this.flowNode(c):c.build(this)}}return this.setBuildStage(null),this.setShaderStage(null),this.buildCode(),this.buildUpdateNodes(),this}getSharedDataFromNode(e){let t=HW.get(e);return t===void 0&&(t={}),t}getNodeUniform(e,t){const n=this.getSharedDataFromNode(e);let r=n.cache;if(r===void 0){if(t==="float"||t==="int"||t==="uint")r=new IW(e);else if(t==="vec2"||t==="ivec2"||t==="uvec2")r=new NW(e);else if(t==="vec3"||t==="ivec3"||t==="uvec3")r=new LW(e);else if(t==="vec4"||t==="ivec4"||t==="uvec4")r=new FW(e);else if(t==="color")r=new UW(e);else if(t==="mat2")r=new DW(e);else if(t==="mat3")r=new OW(e);else if(t==="mat4")r=new kW(e);else throw new Error(`Uniform "${t}" not implemented.`);n.cache=r}return r}format(e,t,n){if(t=this.getVectorType(t),n=this.getVectorType(n),t===n||n===null||this.isReference(n))return e;const r=this.getTypeLength(t),a=this.getTypeLength(n);return r===16&&a===9?`${this.getType(n)}( ${e}[ 0 ].xyz, ${e}[ 1 ].xyz, ${e}[ 2 ].xyz )`:r===9&&a===4?`${this.getType(n)}( ${e}[ 0 ].xy, ${e}[ 1 ].xy )`:r>4||a>4||a===0?e:r===a?`${this.getType(n)}( ${e} )`:r>a?(e=n==="bool"?`all( ${e} )`:`${e}.${"xyz".slice(0,a)}`,this.format(e,this.getTypeFromLength(a,this.getComponentType(t)),n)):a===4&&r>1?`${this.getType(n)}( ${this.format(e,t,"vec3")}, 1.0 )`:r===2?`${this.getType(n)}( ${this.format(e,t,"vec2")}, 0.0 )`:(r===1&&a>1&&t!==this.getComponentType(n)&&(e=`${this.getType(this.getComponentType(n))}( ${e} )`),`${this.getType(n)}( ${e} )`)}getSignature(){return`// Three.js r${m} - Node System +`}}class hU{constructor(){this.time=0,this.deltaTime=0,this.frameId=0,this.renderId=0,this.updateMap=new WeakMap,this.updateBeforeMap=new WeakMap,this.updateAfterMap=new WeakMap,this.renderer=null,this.material=null,this.camera=null,this.object=null,this.scene=null}_getMaps(e,t){let n=e.get(t);return n===void 0&&(n={renderId:0,frameId:0},e.set(t,n)),n}updateBeforeNode(e){const t=e.getUpdateBeforeType(),n=e.updateReference(this);if(t===Xo.FRAME){const r=this._getMaps(this.updateBeforeMap,n);if(r.frameId!==this.frameId){const a=r.frameId;r.frameId=this.frameId,e.updateBefore(this)===!1&&(r.frameId=a)}}else if(t===Xo.RENDER){const r=this._getMaps(this.updateBeforeMap,n);if(r.renderId!==this.renderId){const a=r.renderId;r.renderId=this.renderId,e.updateBefore(this)===!1&&(r.renderId=a)}}else t===Xo.OBJECT&&e.updateBefore(this)}updateAfterNode(e){const t=e.getUpdateAfterType(),n=e.updateReference(this);if(t===Xo.FRAME){const r=this._getMaps(this.updateAfterMap,n);r.frameId!==this.frameId&&e.updateAfter(this)!==!1&&(r.frameId=this.frameId)}else if(t===Xo.RENDER){const r=this._getMaps(this.updateAfterMap,n);r.renderId!==this.renderId&&e.updateAfter(this)!==!1&&(r.renderId=this.renderId)}else t===Xo.OBJECT&&e.updateAfter(this)}updateNode(e){const t=e.getUpdateType(),n=e.updateReference(this);if(t===Xo.FRAME){const r=this._getMaps(this.updateMap,n);r.frameId!==this.frameId&&e.update(this)!==!1&&(r.frameId=this.frameId)}else if(t===Xo.RENDER){const r=this._getMaps(this.updateMap,n);r.renderId!==this.renderId&&e.update(this)!==!1&&(r.renderId=this.renderId)}else t===Xo.OBJECT&&e.update(this)}update(){this.frameId++,this.lastTime===void 0&&(this.lastTime=performance.now()),this.deltaTime=(performance.now()-this.lastTime)/1e3,this.lastTime=performance.now(),this.time+=this.deltaTime}}class eB{constructor(e,t,n=null,r="",a=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=a}}eB.isNodeFunctionInput=!0;class zW extends Cy{static get type(){return"DirectionalLightNode"}constructor(e=null){super(e)}setupDirect(){const e=this.colorNode;return{lightDirection:HC(this.light),lightColor:e}}}const tB=new ti,sE=new ti;let $b=null;class QW extends Cy{static get type(){return"RectAreaLightNode"}constructor(e=null){super(e),this.halfHeight=ja(new ce).setGroup(Ja),this.halfWidth=ja(new ce).setGroup(Ja),this.updateType=Xo.RENDER}update(e){super.update(e);const{light:t}=this,n=e.camera.matrixWorldInverse;sE.identity(),tB.copy(t.matrixWorld),tB.premultiply(n),sE.extractRotation(tB),this.halfWidth.value.set(t.width*.5,0,0),this.halfHeight.value.set(0,t.height*.5,0),this.halfWidth.value.applyMatrix4(sE),this.halfHeight.value.applyMatrix4(sE)}setupDirectRectArea(e){let t,n;e.isAvailable("float32Filterable")?(t=_c($b.LTC_FLOAT_1),n=_c($b.LTC_FLOAT_2)):(t=_c($b.LTC_HALF_1),n=_c($b.LTC_HALF_2));const{colorNode:r,light:a}=this,o=VC(a);return{lightColor:r,lightPosition:o,halfWidth:this.halfWidth,halfHeight:this.halfHeight,ltc_1:t,ltc_2:n}}static setLTC(e){$b=e}}class nB extends Cy{static get type(){return"SpotLightNode"}constructor(e=null){super(e),this.coneCosNode=ja(0).setGroup(Ja),this.penumbraCosNode=ja(0).setGroup(Ja),this.cutoffDistanceNode=ja(0).setGroup(Ja),this.decayExponentNode=ja(0).setGroup(Ja),this.colorNode=ja(this.color).setGroup(Ja)}update(e){super.update(e);const{light:t}=this;this.coneCosNode.value=Math.cos(t.angle),this.penumbraCosNode.value=Math.cos(t.angle*(1-t.penumbra)),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}getSpotAttenuation(e,t){const{coneCosNode:n,penumbraCosNode:r}=this;return LA(n,r,t)}getLightCoord(e){const t=e.getNodeProperties(this);let n=t.projectionUV;return n===void 0&&(n=BF(this.light,e.context.positionWorld),t.projectionUV=n),n}setupDirect(e){const{colorNode:t,cutoffDistanceNode:n,decayExponentNode:r,light:a}=this,o=this.getLightVector(e),c=o.normalize(),u=c.dot(HC(a)),f=this.getSpotAttenuation(e,u),g=o.length(),v=XC({lightDistance:g,cutoffDistance:n,decayExponent:r});let M=t.mul(f).mul(v),R,I;return a.colorNode?(I=this.getLightCoord(e),R=a.colorNode(I)):a.map&&(I=this.getLightCoord(e),R=_c(a.map,I.xy).onRenderUpdate(()=>a.map)),R&&(M=I.mul(2).sub(1).abs().lessThan(1).all().select(M.mul(R),M)),{lightColor:M,lightDirection:c}}}class WW extends nB{static get type(){return"IESSpotLightNode"}getSpotAttenuation(e,t){const n=this.light.iesMap;let r=null;if(n&&n.isTexture===!0){const a=t.acos().mul(1/Math.PI);r=_c(n,rs(a,0),0).r}else r=super.getSpotAttenuation(t);return r}}const ZW=Ar(([i,e])=>{const t=i.abs().sub(e);return im(uh(t,0)).add(tA(uh(t.x,t.y),0))});class KW extends nB{static get type(){return"ProjectorLightNode"}update(e){super.update(e);const t=this.light;if(this.penumbraCosNode.value=Math.min(Math.cos(t.angle*(1-t.penumbra)),.99999),t.aspect===null){let n=1;t.map!==null&&(n=t.map.width/t.map.height),t.shadow.aspect=n}else t.shadow.aspect=t.aspect}getSpotAttenuation(e){const t=nn(0),n=this.penumbraCosNode,r=YS(this.light).mul(e.context.positionWorld||UA);return Va(r.w.greaterThan(0),()=>{const a=r.xyz.div(r.w),o=ZW(a.xy.sub(rs(.5)),rs(.5)),c=NA(-1,Yl(1,aT(n)).sub(1));t.assign(lS(o.mul(-2).mul(c)))}),t}}class $W extends Cy{static get type(){return"AmbientLightNode"}constructor(e=null){super(e)}setup({context:e}){e.irradiance.addAssign(this.colorNode)}}class XW extends Cy{static get type(){return"HemisphereLightNode"}constructor(e=null){super(e),this.lightPositionNode=kC(e),this.lightDirectionNode=this.lightPositionNode.normalize(),this.groundColorNode=ja(new li).setGroup(Ja)}update(e){const{light:t}=this;super.update(e),this.lightPositionNode.object3d=t,this.groundColorNode.value.copy(t.groundColor).multiplyScalar(t.intensity)}setup(e){const{colorNode:t,groundColorNode:n,lightDirectionNode:r}=this,o=xv.dot(r).mul(.5).add(.5),c=Ll(n,t,o);e.context.irradiance.addAssign(c)}}class jW extends Cy{static get type(){return"LightProbeNode"}constructor(e=null){super(e);const t=[];for(let n=0;n<9;n++)t.push(new ce);this.lightProbe=gd(t)}update(e){const{light:t}=this;super.update(e);for(let n=0;n<9;n++)this.lightProbe.array[n].copy(t.sh.coefficients[n]).multiplyScalar(t.intensity)}setup(e){const t=aU(xv,this.lightProbe);e.context.irradiance.addAssign(t)}}class fU{parseFunction(){Qr("Abstract function.")}}class rB{constructor(e,t,n="",r=""){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){Qr("Abstract function.")}}rB.isNodeFunction=!0;const YW=/^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i,qW=/[a-z_0-9]+/ig,dU="#pragma main",JW=i=>{i=i.trim();const e=i.indexOf(dU),t=e!==-1?i.slice(e+dU.length):i,n=t.match(YW);if(n!==null&&n.length===5){const r=n[4],a=[];let o=null;for(;(o=qW.exec(r))!==null;)a.push(o);const c=[];let u=0;for(;u{const f=this.backend.createNodeBuilder(e.object,this.renderer);return f.scene=e.scene,f.material=u,f.camera=e.camera,f.context.material=u,f.lightsNode=e.lightsNode,f.environmentNode=this.getEnvironmentNode(e.scene),f.fogNode=this.getFogNode(e.scene),f.clippingContext=e.clippingContext,this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview&&f.enableMultiview(),f};let c=o(e.material);try{c.build()}catch(u){c=o(new fh),c.build(),ri("TSL: "+u)}n=this._createNodeBuilderState(c),r.set(a,n)}n.usedTimes++,t.nodeBuilderState=n}return n}delete(e){if(e.isRenderObject){const t=this.get(e).nodeBuilderState;t.usedTimes--,t.usedTimes===0&&this.nodeBuilderCache.delete(this.getForRenderCacheKey(e))}return super.delete(e)}getForCompute(e){const t=this.get(e);let n=t.nodeBuilderState;if(n===void 0){const r=this.backend.createNodeBuilder(e,this.renderer);r.build(),n=this._createNodeBuilderState(r),t.nodeBuilderState=n}return n}_createNodeBuilderState(e){return new vW(e.vertexShader,e.fragmentShader,e.computeShader,e.getAttributesArray(),e.getBindings(),e.updateNodes,e.updateBeforeNodes,e.updateAfterNodes,e.observer,e.transforms)}getEnvironmentNode(e){this.updateEnvironment(e);let t=null;if(e.environmentNode&&e.environmentNode.isNode)t=e.environmentNode;else{const n=this.get(e);n.environmentNode&&(t=n.environmentNode)}return t}getBackgroundNode(e){this.updateBackground(e);let t=null;if(e.backgroundNode&&e.backgroundNode.isNode)t=e.backgroundNode;else{const n=this.get(e);n.backgroundNode&&(t=n.backgroundNode)}return t}getFogNode(e){return this.updateFog(e),e.fogNode||this.get(e).fogNode||null}getCacheKey(e,t){Am[0]=e,Am[1]=t;const n=this.renderer.info.calls,r=this.callHashCache.get(Am)||{};if(r.callId!==n){const a=this.getEnvironmentNode(e),o=this.getFogNode(e);t&&Mv.push(t.getCacheKey(!0)),a&&Mv.push(a.getCacheKey()),o&&Mv.push(o.getCacheKey()),Mv.push(this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview?1:0),Mv.push(this.renderer.shadowMap.enabled?1:0),Mv.push(this.renderer.shadowMap.type),r.callId=n,r.cacheKey=cy(Mv),this.callHashCache.set(Am,r),Mv.length=0}return Am.length=0,r.cacheKey}get isToneMappingState(){return!this.renderer.getRenderTarget()}updateBackground(e){const t=this.get(e),n=e.background;if(n){const r=e.backgroundBlurriness===0&&t.backgroundBlurriness>0||e.backgroundBlurriness>0&&t.backgroundBlurriness===0;if(t.background!==n||r){const a=this.getCacheNode("background",n,()=>{if(n.isCubeTexture===!0||n.mapping===it||n.mapping===ht||n.mapping===St){if(e.backgroundBlurriness>0||n.mapping===St)return wC(n);{let o;return n.isCubeTexture===!0?o=Id(n):o=_c(n),lL(o)}}else{if(n.isTexture===!0)return _c(n,A0.flipY()).setUpdateMatrix(!0);n.isColor!==!0&&ri("WebGPUNodes: Unsupported background configuration.",n)}},r);t.backgroundNode=a,t.background=n,t.backgroundBlurriness=e.backgroundBlurriness}}else t.backgroundNode&&(delete t.backgroundNode,delete t.background)}getCacheNode(e,t,n,r=!1){const a=this.cacheLib[e]||(this.cacheLib[e]=new WeakMap);let o=a.get(t);return(o===void 0||r)&&(o=n(),a.set(t,o)),o}updateFog(e){const t=this.get(e),n=e.fog;if(n){if(t.fog!==n){const r=this.getCacheNode("fog",n,()=>{if(n.isFogExp2){const a=au("color","color",n).setGroup(Ja),o=au("density","float",n).setGroup(Ja);return Hb(a,DC(o))}else if(n.isFog){const a=au("color","color",n).setGroup(Ja),o=au("near","float",n).setGroup(Ja),c=au("far","float",n).setGroup(Ja);return Hb(a,UC(o,c))}else ri("Renderer: Unsupported fog configuration.",n)});t.fogNode=r,t.fog=n}}else delete t.fogNode,delete t.fog}updateEnvironment(e){const t=this.get(e),n=e.environment;if(n){if(t.environment!==n){const r=this.getCacheNode("environment",n,()=>{if(n.isCubeTexture===!0)return Id(n);if(n.isTexture===!0)return _c(n);ri("Nodes: Unsupported environment configuration.",n)});t.environmentNode=r,t.environment=n}}else t.environmentNode&&(delete t.environmentNode,delete t.environment)}getNodeFrame(e=this.renderer,t=null,n=null,r=null,a=null){const o=this.nodeFrame;return o.renderer=e,o.scene=t,o.object=n,o.camera=r,o.material=a,o}getNodeFrameForRender(e){return this.getNodeFrame(e.renderer,e.scene,e.object,e.camera,e.material)}getOutputCacheKey(){const e=this.renderer;return e.toneMapping+","+e.currentColorSpace+","+e.xr.isPresenting}hasOutputChange(e){return AU.get(e)!==this.getOutputCacheKey()}getOutputNode(e){const t=this.renderer,n=this.getOutputCacheKey(),r=e.isArrayTexture?QS(e,tr(A0,d0("gl_ViewID_OVR"))).renderOutput(t.toneMapping,t.currentColorSpace):_c(e,A0).renderOutput(t.toneMapping,t.currentColorSpace);return AU.set(e,n),r}updateBefore(e){const t=e.getNodeBuilderState();for(const n of t.updateBeforeNodes)this.getNodeFrameForRender(e).updateBeforeNode(n)}updateAfter(e){const t=e.getNodeBuilderState();for(const n of t.updateAfterNodes)this.getNodeFrameForRender(e).updateAfterNode(n)}updateForCompute(e){const t=this.getNodeFrame(),n=this.getForCompute(e);for(const r of n.updateNodes)t.updateNode(r)}updateForRender(e){const t=this.getNodeFrameForRender(e),n=e.getNodeBuilderState();for(const r of n.updateNodes)t.updateNode(r)}needsRefresh(e){const t=this.getNodeFrameForRender(e);return e.getMonitor().needsRefresh(e,t)}dispose(){super.dispose(),this.nodeFrame=new hU,this.nodeBuilderCache=new Map,this.cacheLib={}}}const iB=new Gh;class aE{constructor(e=null){this.version=0,this.clipIntersection=null,this.cacheKey="",this.shadowPass=!1,this.viewNormalMatrix=new vn,this.clippingGroupContexts=new WeakMap,this.intersectionPlanes=[],this.unionPlanes=[],this.parentVersion=null,e!==null&&(this.viewNormalMatrix=e.viewNormalMatrix,this.clippingGroupContexts=e.clippingGroupContexts,this.shadowPass=e.shadowPass,this.viewMatrix=e.viewMatrix)}projectPlanes(e,t,n){const r=e.length;for(let a=0;a0,alpha:!0,depth:t.depth,stencil:t.stencil,framebufferScaleFactor:this.getFramebufferScaleFactor()},c=new XRWebGLLayer(e,r,o);this._glBaseLayer=c,e.updateRenderState({baseLayer:c}),t.setPixelRatio(1),t._setXRLayerSize(c.framebufferWidth,c.framebufferHeight),this._xrRenderTarget=new Yb(c.framebufferWidth,c.framebufferHeight,{format:k,type:gs,colorSpace:t.outputColorSpace,stencilBuffer:t.stencil,resolveDepthBuffer:c.ignoreDepthValues===!1,resolveStencilBuffer:c.ignoreDepthValues===!1}),this._xrRenderTarget._isOpaqueFramebuffer=!0,this._referenceSpace=yield e.requestReferenceSpace(this.getReferenceSpaceType())}this.setFoveation(this.getFoveation()),t._animation.setAnimationLoop(this._onAnimationFrame),t._animation.setContext(e),t._animation.start(),this.isPresenting=!0,this.dispatchEvent({type:"sessionstart"})}})}updateCamera(e){const t=this._session;if(t===null)return;const n=e.near,r=e.far,a=this._cameraXR,o=this._cameraL,c=this._cameraR;a.near=c.near=o.near=n,a.far=c.far=o.far=r,a.isMultiViewCamera=this._useMultiview,(this._currentDepthNear!==a.near||this._currentDepthFar!==a.far)&&(t.updateRenderState({depthNear:a.near,depthFar:a.far}),this._currentDepthNear=a.near,this._currentDepthFar=a.far),a.layers.mask=e.layers.mask|6,o.layers.mask=a.layers.mask&3,c.layers.mask=a.layers.mask&5;const u=e.parent,f=a.cameras;vU(a,u);for(let g=0;g=0&&(t[a]=null,e[a].disconnect(r))}for(let n=0;n=t.length){t.push(r),a=c;break}else if(t[c]===null){t[c]=r,a=c;break}if(a===-1)break}const o=e[a];o&&o.connect(r)}}function d8(i){return i.type==="quad"?this._glBinding.createQuadLayer({transform:new XRRigidTransform(i.translation,i.quaternion),width:i.width/2,height:i.height/2,space:this._referenceSpace,viewPixelWidth:i.pixelwidth,viewPixelHeight:i.pixelheight,clearOnAccess:!1}):this._glBinding.createCylinderLayer({transform:new XRRigidTransform(i.translation,i.quaternion),radius:i.radius,centralAngle:i.centralAngle,aspectRatio:i.aspectRatio,space:this._referenceSpace,viewPixelWidth:i.pixelwidth,viewPixelHeight:i.pixelheight,clearOnAccess:!1})}function A8(i,e){if(e===void 0)return;const t=this._cameraXR,n=this._renderer,r=n.backend,a=this._glBaseLayer,o=this.getReferenceSpace(),c=e.getViewerPose(o);if(this._xrFrame=e,c!==null){const u=c.views;this._glBaseLayer!==null&&r.setXRTarget(a.framebuffer);let f=!1;u.length!==t.cameras.length&&(t.cameras.length=0,f=!0);for(let g=0;glo(this,null,function*(){yield this.compileAsync(R,I);const ne=this._renderLists.get(R,I),J=this._renderContexts.get(R,I,this._renderTarget,this._mrt),be=R.overrideMaterial||re.material,Re=this._objects.get(re,be,R,I,ne.lightsNode,J,J.clippingContext),{fragmentShader:ze,vertexShader:st}=Re.getNodeBuilderState();return{fragmentShader:ze,vertexShader:st}})}}init(){return lo(this,null,function*(){return this._initPromise!==null?this._initPromise:(this._initPromise=new Promise((e,t)=>lo(this,null,function*(){let n=this.backend;try{yield n.init(this)}catch(r){if(this._getFallback!==null)try{this.backend=n=this._getFallback(r),yield n.init(this)}catch(a){t(a);return}else{t(r);return}}this._nodes=new n8(this,n),this._animation=new UG(this,this._nodes,this.info),this._attributes=new zG(n),this._background=new gW(this,this._nodes),this._geometries=new QG(this._attributes,this.info),this._textures=new az(this,n,this.info),this._pipelines=new XG(n,this._nodes),this._bindings=new jG(n,this._nodes,this._textures,this._attributes,this._pipelines,this.info),this._objects=new VG(this,this._nodes,this._geometries,this._pipelines,this._bindings,this.info),this._renderLists=new JG(this.lighting),this._bundles=new i8,this._renderContexts=new iz,this._animation.start(),this._initialized=!0,this._inspector.init(),e(this)})),this._initPromise)})}get domElement(){return this._canvasTarget.domElement}get coordinateSystem(){return this.backend.coordinateSystem}compileAsync(e,t,n=null){return lo(this,null,function*(){if(this._isDeviceLost===!0)return;this._initialized===!1&&(yield this.init());const r=this._nodes.nodeFrame,a=r.renderId,o=this._currentRenderContext,c=this._currentRenderObjectFunction,u=this._compilationPromises,f=e.isScene===!0?e:yU;n===null&&(n=e);const g=this._renderTarget,v=this._renderContexts.get(n,t,g,this._mrt),M=this._activeMipmapLevel,R=[];this._currentRenderContext=v,this._currentRenderObjectFunction=this.renderObject,this._handleObjectFunction=this._createObjectPipeline,this._compilationPromises=R,r.renderId++,r.update(),v.depth=this.depth,v.stencil=this.stencil,v.clippingContext||(v.clippingContext=new aE),v.clippingContext.updateGlobal(f,t),f.onBeforeRender(this,e,t,g);const I=this._renderLists.get(e,t);if(I.begin(),this._projectObject(e,t,0,I,v.clippingContext),n!==e&&n.traverseVisible(function(Re){Re.isLight&&Re.layers.test(t.layers)&&I.pushLight(Re)}),I.finish(),g!==null){this._textures.updateRenderTarget(g,M);const Re=this._textures.get(g);v.textures=Re.textures,v.depthTexture=Re.depthTexture}else v.textures=null,v.depthTexture=null;this._background.update(f,I,v);const re=I.opaque,ne=I.transparent,J=I.transparentDoublePass,be=I.lightsNode;this.opaque===!0&&re.length>0&&this._renderObjects(re,t,f,be),this.transparent===!0&&ne.length>0&&this._renderTransparents(ne,J,t,f,be),r.renderId=a,this._currentRenderContext=o,this._currentRenderObjectFunction=c,this._compilationPromises=u,this._handleObjectFunction=this._renderObjectDirect,yield Promise.all(R)})}renderAsync(e,t){return lo(this,null,function*(){Za('Renderer: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.render(e,t)})}waitForGPU(){return lo(this,null,function*(){ri("Renderer: waitForGPU() has been removed. Read https://github.com/mrdoob/three.js/issues/32012 for more information.")})}set inspector(e){this._inspector!==null&&this._inspector.setRenderer(null),this._inspector=e,this._inspector.setRenderer(this)}get inspector(){return this._inspector}set highPrecision(e){const t=this.contextNode.value;e===!0?(t.modelViewMatrix=PT,t.modelNormalViewMatrix=IT):this.highPrecision&&(delete t.modelViewMatrix,delete t.modelNormalViewMatrix)}get highPrecision(){const e=this.contextNode.value;return e.modelViewMatrix===PT&&e.modelNormalViewMatrix===IT}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getOutputBufferType(){return this._outputBufferType}getColorBufferType(){return Za('Renderer: ".getColorBufferType()" has been renamed to ".getOutputBufferType()".'),this.getOutputBufferType()}_onDeviceLost(e){let t=`THREE.WebGPURenderer: ${e.api} Device Lost: + +Message: ${e.message}`;e.reason&&(t+=` +Reason: ${e.reason}`),ri(t),this._isDeviceLost=!0}_renderBundle(e,t,n){const{bundleGroup:r,camera:a,renderList:o}=e,c=this._currentRenderContext,u=this._bundles.get(r,a),f=this.backend.get(u);f.renderContexts===void 0&&(f.renderContexts=new Set);const g=r.version!==f.version,v=f.renderContexts.has(c)===!1||g;if(f.renderContexts.add(c),v){this.backend.beginBundle(c),(f.renderObjects===void 0||g)&&(f.renderObjects=[]),this._currentRenderBundle=u;const{transparentDoublePass:M,transparent:R,opaque:I}=o;this.opaque===!0&&I.length>0&&this._renderObjects(I,a,t,n),this.transparent===!0&&R.length>0&&this._renderTransparents(R,M,a,t,n),this._currentRenderBundle=null,this.backend.finishBundle(c,u),f.version=r.version}else{const{renderObjects:M}=f;for(let R=0,I=M.length;R>=M,I.viewportValue.height>>=M,I.viewportValue.minDepth=st,I.viewportValue.maxDepth=et,I.viewport=I.viewportValue.equals(sB)===!1,I.scissorValue.copy(Re).multiplyScalar(ze).floor(),I.scissor=J._scissorTest&&I.scissorValue.equals(sB)===!1,I.scissorValue.width>>=M,I.scissorValue.height>>=M,I.clippingContext||(I.clippingContext=new aE),I.clippingContext.updateGlobal(f,t),f.onBeforeRender(this,e,t,R);const dt=t.isArrayCamera?oB:aB;t.isArrayCamera||(oE.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),dt.setFromProjectionMatrix(oE,t.coordinateSystem,t.reversedDepth));const Nt=this._renderLists.get(e,t);if(Nt.begin(),this._projectObject(e,t,0,Nt,I.clippingContext),Nt.finish(),this.sortObjects===!0&&Nt.sort(this._opaqueSort,this._transparentSort),R!==null){this._textures.updateRenderTarget(R,M);const kr=this._textures.get(R);I.textures=kr.textures,I.depthTexture=kr.depthTexture,I.width=kr.width,I.height=kr.height,I.renderTarget=R,I.depth=R.depthBuffer,I.stencil=R.stencilBuffer}else I.textures=null,I.depthTexture=null,I.width=Yx.width,I.height=Yx.height,I.depth=this.depth,I.stencil=this.stencil;I.width>>=M,I.height>>=M,I.activeCubeFace=v,I.activeMipmapLevel=M,I.occlusionQueryCount=Nt.occlusionQueryCount,I.scissorValue.max(x0.set(0,0,0,0)),I.scissorValue.x+I.scissorValue.width>I.width&&(I.scissorValue.width=Math.max(I.width-I.scissorValue.x,0)),I.scissorValue.y+I.scissorValue.height>I.height&&(I.scissorValue.height=Math.max(I.height-I.scissorValue.y,0)),this._background.update(f,Nt,I),I.camera=t,this.backend.beginRender(I);const{bundles:nt,lightsNode:mt,transparentDoublePass:En,transparent:vr,opaque:br}=Nt;return nt.length>0&&this._renderBundles(nt,f,mt),this.opaque===!0&&br.length>0&&this._renderObjects(br,t,f,mt),this.transparent===!0&&vr.length>0&&this._renderTransparents(vr,En,t,f,mt),this.backend.finishRender(I),a.renderId=o,this._currentRenderContext=c,this._currentRenderObjectFunction=u,r!==null&&(this.setRenderTarget(g,v,M),this._renderOutput(R)),f.onAfterRender(this,e,t,R),this.inspector.finishRender(this.backend.getTimestampUID(I)),I}_setXRLayerSize(e,t){this._canvasTarget._width=e,this._canvasTarget._height=t,this.setViewport(0,0,e,t)}_renderOutput(e){const t=this._quad;this._nodes.hasOutputChange(e.texture)&&(t.material.fragmentNode=this._nodes.getOutputNode(e.texture),t.material.needsUpdate=!0);const n=this.autoClear,r=this.xr.enabled;this.autoClear=!1,this.xr.enabled=!1,this._renderScene(t,t.camera,!1),this.autoClear=n,this.xr.enabled=r}getMaxAnisotropy(){return this.backend.getMaxAnisotropy()}getActiveCubeFace(){return this._activeCubeFace}getActiveMipmapLevel(){return this._activeMipmapLevel}setAnimationLoop(e){return lo(this,null,function*(){this._initialized===!1&&(yield this.init()),this._animation.setAnimationLoop(e)})}getAnimationLoop(){return this._animation.getAnimationLoop()}getArrayBufferAsync(e){return lo(this,null,function*(){return yield this.backend.getArrayBufferAsync(e)})}getContext(){return this.backend.getContext()}getPixelRatio(){return this._canvasTarget.getPixelRatio()}getDrawingBufferSize(e){return this._canvasTarget.getDrawingBufferSize(e)}getSize(e){return this._canvasTarget.getSize(e)}setPixelRatio(e=1){this._canvasTarget.setPixelRatio(e)}setDrawingBufferSize(e,t,n){this.xr&&this.xr.isPresenting||this._canvasTarget.setDrawingBufferSize(e,t,n)}setSize(e,t,n=!0){this.xr&&this.xr.isPresenting||this._canvasTarget.setSize(e,t,n)}setOpaqueSort(e){this._opaqueSort=e}setTransparentSort(e){this._transparentSort=e}getScissor(e){return this._canvasTarget.getScissor(e)}setScissor(e,t,n,r){this._canvasTarget.setScissor(e,t,n,r)}getScissorTest(){return this._canvasTarget.getScissorTest()}setScissorTest(e){this._canvasTarget.setScissorTest(e),this.backend.setScissorTest(e)}getViewport(e){return this._canvasTarget.getViewport(e)}setViewport(e,t,n,r,a=0,o=1){this._canvasTarget.setViewport(e,t,n,r,a,o)}getClearColor(e){return e.copy(this._clearColor)}setClearColor(e,t=1){this._clearColor.set(e),this._clearColor.a=t}getClearAlpha(){return this._clearColor.a}setClearAlpha(e){this._clearColor.a=e}getClearDepth(){return this._clearDepth}setClearDepth(e){this._clearDepth=e}getClearStencil(){return this._clearStencil}setClearStencil(e){this._clearStencil=e}isOccluded(e){const t=this._currentRenderContext;return t&&this.backend.isOccluded(t,e)}clear(e=!0,t=!0,n=!0){if(this._initialized===!1)throw new Error('Renderer: .clear() called before the backend is initialized. Use "await renderer.init();" before before using this method.');const r=this._renderTarget||this._getFrameBufferTarget();let a=null;if(r!==null){this._textures.updateRenderTarget(r);const o=this._textures.get(r);a=this._renderContexts.getForClear(r),a.textures=o.textures,a.depthTexture=o.depthTexture,a.width=o.width,a.height=o.height,a.renderTarget=r,a.depth=r.depthBuffer,a.stencil=r.stencilBuffer,a.clearColorValue=this.backend.getClearColor(),a.activeCubeFace=this.getActiveCubeFace(),a.activeMipmapLevel=this.getActiveMipmapLevel()}this.backend.clear(e,t,n,a),r!==null&&this._renderTarget===null&&this._renderOutput(r)}clearColor(){this.clear(!0,!1,!1)}clearDepth(){this.clear(!1,!0,!1)}clearStencil(){this.clear(!1,!1,!0)}clearAsync(e=!0,t=!0,n=!0){return lo(this,null,function*(){Za('Renderer: "clearAsync()" has been deprecated. Use "clear()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.clear(e,t,n)})}clearColorAsync(){return lo(this,null,function*(){Za('Renderer: "clearColorAsync()" has been deprecated. Use "clearColor()" and "await renderer.init();" when creating the renderer.'),this.clear(!0,!1,!1)})}clearDepthAsync(){return lo(this,null,function*(){Za('Renderer: "clearDepthAsync()" has been deprecated. Use "clearDepth()" and "await renderer.init();" when creating the renderer.'),this.clear(!1,!0,!1)})}clearStencilAsync(){return lo(this,null,function*(){Za('Renderer: "clearStencilAsync()" has been deprecated. Use "clearStencil()" and "await renderer.init();" when creating the renderer.'),this.clear(!1,!1,!0)})}get needsFrameBufferTarget(){const e=this.currentToneMapping!==Bt,t=this.currentColorSpace!==wr.workingColorSpace;return e||t}get samples(){return this._samples}get currentSamples(){let e=this._samples;return this._renderTarget!==null?e=this._renderTarget.samples:this.needsFrameBufferTarget&&(e=0),e}get currentToneMapping(){return this.isOutputTarget?this.toneMapping:Bt}get currentColorSpace(){return this.isOutputTarget?this.outputColorSpace:wr.workingColorSpace}get isOutputTarget(){return this._renderTarget===this._outputRenderTarget||this._renderTarget===null}dispose(){this._initialized===!0&&(this.info.dispose(),this.backend.dispose(),this._animation.dispose(),this._objects.dispose(),this._geometries.dispose(),this._pipelines.dispose(),this._nodes.dispose(),this._bindings.dispose(),this._renderLists.dispose(),this._renderContexts.dispose(),this._textures.dispose(),this._frameBufferTarget!==null&&this._frameBufferTarget.dispose(),Object.values(this.backend.timestampQueryPool).forEach(e=>{e!==null&&e.dispose()})),this.setRenderTarget(null),this.setAnimationLoop(null)}setRenderTarget(e,t=0,n=0){this._renderTarget=e,this._activeCubeFace=t,this._activeMipmapLevel=n}getRenderTarget(){return this._renderTarget}setOutputRenderTarget(e){this._outputRenderTarget=e}getOutputRenderTarget(){return this._outputRenderTarget}setCanvasTarget(e){this._canvasTarget.removeEventListener("resize",this._onCanvasTargetResize),this._canvasTarget=e,this._canvasTarget.addEventListener("resize",this._onCanvasTargetResize)}getCanvasTarget(){return this._canvasTarget}_resetXRState(){this.backend.setXRTarget(null),this.setOutputRenderTarget(null),this.setRenderTarget(null),this._frameBufferTarget.dispose(),this._frameBufferTarget=null}setRenderObjectFunction(e){this._renderObjectFunction=e}getRenderObjectFunction(){return this._renderObjectFunction}compute(e,t=null){if(this._isDeviceLost===!0)return;if(this._initialized===!1)return Qr("Renderer: .compute() called before the backend is initialized. Try using .computeAsync() instead."),this.computeAsync(e,t);const n=this._nodes.nodeFrame,r=n.renderId;this.info.calls++,this.info.compute.calls++,this.info.compute.frameCalls++,n.renderId=this.info.calls,this.backend.updateTimeStampUID(e),this.inspector.beginCompute(this.backend.getTimestampUID(e),e);const a=this.backend,o=this._pipelines,c=this._bindings,u=this._nodes,f=Array.isArray(e)?e:[e];if(f[0]===void 0||f[0].isComputeNode!==!0)throw new Error("THREE.Renderer: .compute() expects a ComputeNode.");a.beginCompute(e);for(const g of f){if(o.has(g)===!1){const R=()=>{g.removeEventListener("dispose",R),o.delete(g),c.deleteForCompute(g),u.delete(g)};g.addEventListener("dispose",R);const I=g.onInitFunction;I!==null&&I.call(g,{renderer:this})}u.updateForCompute(g),c.updateForCompute(g);const v=c.getForCompute(g),M=o.getForCompute(g,v);a.compute(e,g,v,M,t)}a.finishCompute(e),n.renderId=r,this.inspector.finishCompute(this.backend.getTimestampUID(e))}computeAsync(e,t=null){return lo(this,null,function*(){this._initialized===!1&&(yield this.init()),this.compute(e,t)})}hasFeatureAsync(e){return lo(this,null,function*(){return Za('Renderer: "hasFeatureAsync()" has been deprecated. Use "hasFeature()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.hasFeature(e)})}resolveTimestampsAsync(e="render"){return lo(this,null,function*(){return this._initialized===!1&&(yield this.init()),this.backend.resolveTimestampsAsync(e)})}hasFeature(e){if(this._initialized===!1)throw new Error('Renderer: .hasFeature() called before the backend is initialized. Use "await renderer.init();" before before using this method.');return this.backend.hasFeature(e)}hasInitialized(){return this._initialized}initTextureAsync(e){return lo(this,null,function*(){Za('Renderer: "initTextureAsync()" has been deprecated. Use "initTexture()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.initTexture(e)})}initTexture(e){if(this._initialized===!1)throw new Error('Renderer: .initTexture() called before the backend is initialized. Use "await renderer.init();" before before using this method.');this._textures.updateTexture(e)}copyFramebufferToTexture(e,t=null){if(t!==null)if(t.isVector2)t=x0.set(t.x,t.y,e.image.width,e.image.height).floor();else if(t.isVector4)t=x0.copy(t).floor();else{ri("Renderer.copyFramebufferToTexture: Invalid rectangle.");return}else t=x0.set(0,0,e.image.width,e.image.height);let n=this._currentRenderContext,r;n!==null?r=n.renderTarget:(r=this._renderTarget||this._getFrameBufferTarget(),r!==null&&(this._textures.updateRenderTarget(r),n=this._textures.get(r))),this._textures.updateTexture(e,{renderTarget:r}),this.backend.copyFramebufferToTexture(e,n,t),this._inspector.copyFramebufferToTexture(e)}copyTextureToTexture(e,t,n=null,r=null,a=0,o=0){this._textures.updateTexture(e),this._textures.updateTexture(t),this.backend.copyTextureToTexture(e,t,n,r,a,o),this._inspector.copyTextureToTexture(e,t)}readRenderTargetPixelsAsync(e,t,n,r,a,o=0,c=0){return lo(this,null,function*(){return this.backend.copyTextureToBuffer(e.textures[o],t,n,r,a,c)})}_projectObject(e,t,n,r,a){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder,e.isClippingGroup&&e.enabled&&(a=a.getGroupContext(e));else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLight)r.pushLight(e);else if(e.isSprite){const u=t.isArrayCamera?oB:aB;if(!e.frustumCulled||u.intersectsSprite(e,t)){this.sortObjects===!0&&x0.setFromMatrixPosition(e.matrixWorld).applyMatrix4(oE);const{geometry:f,material:g}=e;g.visible&&r.push(e,f,g,n,x0.z,null,a)}}else if(e.isLineLoop)ri("Renderer: Objects of type THREE.LineLoop are not supported. Please use THREE.Line or THREE.LineSegments.");else if(e.isMesh||e.isLine||e.isPoints){const u=t.isArrayCamera?oB:aB;if(!e.frustumCulled||u.intersectsObject(e,t)){const{geometry:f,material:g}=e;if(this.sortObjects===!0&&(f.boundingSphere===null&&f.computeBoundingSphere(),x0.copy(f.boundingSphere.center).applyMatrix4(e.matrixWorld).applyMatrix4(oE)),Array.isArray(g)){const v=f.groups;for(let M=0,R=v.length;M0){for(const{material:o}of t)o.side=fe;this._renderObjects(t,n,r,a,"backSide");for(const{material:o}of t)o.side=Y;this._renderObjects(e,n,r,a);for(const{material:o}of t)o.side=ue}else this._renderObjects(e,n,r,a)}_renderObjects(e,t,n,r,a=null){for(let o=0,c=e.length;o0||a.transmissionNode&&a.transmissionNode.isNode||a.backdropNode&&a.backdropNode.isNode,re.isShadowPassMaterial){const{colorNode:ne,depthNode:J,positionNode:be}=this._getShadowNodes(a);re.side=a.shadowSide===null?a.side:a.shadowSide,ne!==null&&(re.colorNode=ne),J!==null&&(re.depthNode=J),be!==null&&(re.positionNode=be)}a=re}a.transparent===!0&&a.side===ue&&a.forceSinglePass===!1?(a.side=fe,this._handleObjectFunction(e,a,t,n,c,o,u,"backSide"),a.side=Y,this._handleObjectFunction(e,a,t,n,c,o,u,f),a.side=ue):this._handleObjectFunction(e,a,t,n,c,o,u,f),g&&(t.overrideMaterial.colorNode=v,t.overrideMaterial.depthNode=M,t.overrideMaterial.positionNode=R,t.overrideMaterial.side=I),e.onAfterRender(this,t,n,r,a,o)}_renderObjectDirect(e,t,n,r,a,o,c,u){const f=this._objects.get(e,t,n,r,a,this._currentRenderContext,c,u);f.drawRange=e.geometry.drawRange,f.group=o;const g=this._nodes.needsRefresh(f);g&&(this._nodes.updateBefore(f),this._geometries.updateForRender(f),this._nodes.updateForRender(f),this._bindings.updateForRender(f)),this._pipelines.updateForRender(f),this._currentRenderBundle!==null&&(this.backend.get(this._currentRenderBundle).renderObjects.push(f),f.bundle=this._currentRenderBundle.bundleGroup),this.backend.draw(f,this.info),g&&this._nodes.updateAfter(f)}_createObjectPipeline(e,t,n,r,a,o,c,u){const f=this._objects.get(e,t,n,r,a,this._currentRenderContext,c,u);f.drawRange=e.geometry.drawRange,f.group=o,this._nodes.updateBefore(f),this._geometries.updateForRender(f),this._nodes.updateForRender(f),this._bindings.updateForRender(f),this._pipelines.getForRender(f,this._compilationPromises),this._nodes.updateAfter(f)}_onCanvasTargetResize(){this._initialized&&this.backend.updateSize()}get compile(){return this.compileAsync}}class xU{constructor(e=""){this.name=e,this.visibility=0}setVisibility(e){this.visibility|=e}getVisibility(){return this.visibility}clone(){return Object.assign(new this.constructor,this)}}function m8(i){return i+(Sv-i%Sv)%Sv}class _U extends xU{constructor(e,t=null){super(e),this.isBuffer=!0,this.bytesPerElement=Float32Array.BYTES_PER_ELEMENT,this._buffer=t,this._updateRanges=[]}get updateRanges(){return this._updateRanges}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}get byteLength(){return m8(this._buffer.byteLength)}get buffer(){return this._buffer}update(){return!0}}class bU extends _U{constructor(e,t=null){super(e,t),this.isUniformBuffer=!0}}let v8=0;class wU extends bU{constructor(e,t){super("UniformBuffer_"+v8++,e?e.value:null),this.nodeUniform=e,this.groupNode=t,this.isNodeUniformBuffer=!0}set updateRanges(e){this.nodeUniform.updateRanges=e}get updateRanges(){return this.nodeUniform.updateRanges}addUpdateRange(e,t){this.nodeUniform.addUpdateRange(e,t)}clearUpdateRanges(){this.nodeUniform.clearUpdateRanges()}get buffer(){return this.nodeUniform.value}}class y8 extends bU{constructor(e){super(e),this.isUniformsGroup=!0,this._values=null,this.uniforms=[]}addUniform(e){return this.uniforms.push(e),this}removeUniform(e){const t=this.uniforms.indexOf(e);return t!==-1&&this.uniforms.splice(t,1),this}get values(){return this._values===null&&(this._values=Array.from(this.buffer)),this._values}get buffer(){let e=this._buffer;if(e===null){const t=this.byteLength;e=new Float32Array(new ArrayBuffer(t)),this._buffer=e}return e}get byteLength(){const e=this.bytesPerElement;let t=0;for(let n=0,r=this.uniforms.length;n{this.generation=null,this.version=0},this.texture=t,this.version=t?t.version:0,this.generation=null,this.samplerKey="",this.isSampler=!0}set texture(e){this._texture!==e&&(this._texture&&this._texture.removeEventListener("dispose",this._onTextureDispose),this._texture=e,this.generation=null,this.version=0,this._texture&&this._texture.addEventListener("dispose",this._onTextureDispose))}get texture(){return this._texture}update(){const{texture:e,version:t}=this;return t!==e.version?(this.version=e.version,!0):!1}clone(){const e=super.clone();return e._texture=null,e._onTextureDispose=()=>{e.generation=null,e.version=0},e.texture=this.texture,e}}let w8=0;class S8 extends EU{constructor(e,t){super(e,t),this.id=w8++,this.store=!1,this.mipLevel=0,this.isSampledTexture=!0}}class lE extends S8{constructor(e,t,n,r=null){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n,this.access=r}update(){const{textureNode:e}=this;return this.texture!==e.value?(this.texture=e.value,!0):super.update()}}class MU extends lE{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledCubeTexture=!0}}class lB extends lE{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledTexture3D=!0}}const TU={bitcast_int_uint:new Lf("uint tsl_bitcast_int_to_uint ( int x ) { return floatBitsToUint( intBitsToFloat ( x ) ); }"),bitcast_uint_int:new Lf("uint tsl_bitcast_uint_to_int ( uint x ) { return floatBitsToInt( uintBitsToFloat ( x ) ); }")},E8={textureDimensions:"textureSize",equals:"equal",bitcast_float_int:"floatBitsToInt",bitcast_int_float:"intBitsToFloat",bitcast_uint_float:"uintBitsToFloat",bitcast_float_uint:"floatBitsToUint",bitcast_uint_int:"tsl_bitcast_uint_to_int",bitcast_int_uint:"tsl_bitcast_int_to_uint",floatpack_snorm_2x16:"packSnorm2x16",floatpack_unorm_2x16:"packUnorm2x16",floatpack_float16_2x16:"packHalf2x16",floatunpack_snorm_2x16:"unpackSnorm2x16",floatunpack_unorm_2x16:"unpackUnorm2x16",floatunpack_float16_2x16:"unpackHalf2x16"},M8={low:"lowp",medium:"mediump",high:"highp"},CU={swizzleAssign:!0,storageBuffer:!1},BU={perspective:"smooth",linear:"noperspective"},RU={centroid:"centroid"},PU=` +precision highp float; +precision highp int; +precision highp sampler2D; +precision highp sampler3D; +precision highp samplerCube; +precision highp sampler2DArray; + +precision highp usampler2D; +precision highp usampler3D; +precision highp usamplerCube; +precision highp usampler2DArray; + +precision highp isampler2D; +precision highp isampler3D; +precision highp isamplerCube; +precision highp isampler2DArray; + +precision lowp sampler2DShadow; +precision lowp sampler2DArrayShadow; +precision lowp samplerCubeShadow; +`;class T8 extends uU{constructor(e,t){super(e,t,new t8),this.uniformGroups={},this.transforms=[],this.extensions={},this.builtins={vertex:[],fragment:[],compute:[]}}needsToWorkingColorSpace(e){return e.isVideoTexture===!0&&e.colorSpace!==nl}_include(e){const t=TU[e];return t.build(this),this.addInclude(t),t}getMethod(e){return TU[e]!==void 0&&this._include(e),E8[e]||e}getBitcastMethod(e,t){return this.getMethod(`bitcast_${t}_${e}`)}getFloatPackingMethod(e){return this.getMethod(`floatpack_${e}_2x16`)}getFloatUnpackingMethod(e){return this.getMethod(`floatunpack_${e}_2x16`)}getTernary(e,t,n){return`${e} ? ${t} : ${n}`}getOutputStructName(){return""}buildFunctionCode(e){const t=e.layout,n=this.flowShaderNode(e),r=[];for(const o of t.inputs)r.push(this.getType(o.type)+" "+o.name);return`${this.getType(t.type)} ${t.name}( ${r.join(", ")} ) { + + ${n.vars} + +${n.code} + return ${n.result}; + +}`}setupPBO(e){const t=e.value;if(t.pbo===void 0){const n=t.array,r=t.count*t.itemSize,{itemSize:a}=t,o=t.array.constructor.name.toLowerCase().includes("int");let c=o?ae:G;a===2?c=o?tt:We:a===3?c=o?gt:Le:a===4&&(c=o?bt:k);const u={Float32Array:pt,Uint8Array:gs,Uint16Array:cn,Uint32Array:ct,Int8Array:Di,Int16Array:Nn,Int32Array:jt,Uint8ClampedArray:gs},f=Math.pow(2,Math.ceil(Math.log2(Math.sqrt(r/a))));let g=Math.ceil(r/a/f);f*g*a0?M:"";c=`${g.name} { + ${v} ${o.name}[${R}]; +}; +`}else c=`${this.getVectorType(o.type)} ${this.getPropertyName(o,e)};`,u=!0;const f=o.node.precision;if(f!==null&&(c=M8[f]+" "+c),u){c=" "+c;const g=o.groupNode.name;(r[g]||(r[g]=[])).push(c)}else c="uniform "+c,n.push(c)}let a="";for(const o in r){const c=r[o];a+=this._getGLSLUniformStruct(e+"_"+o,c.join(` +`))+` +`}return a+=n.join(` +`),a}getTypeFromAttribute(e){let t=super.getTypeFromAttribute(e);if(/^[iu]/.test(t)&&e.gpuType!==jt){let n=e;e.isInterleavedBufferAttribute&&(n=e.data);const r=n.array;r instanceof Uint32Array||r instanceof Int32Array||(t=t.slice(1))}return t}getAttributes(e){let t="";if(e==="vertex"||e==="compute"){const n=this.getAttributesArray();let r=0;for(const a of n)t+=`layout( location = ${r++} ) in ${a.type} ${a.name}; +`}return t}getStructMembers(e){const t=[];for(const n of e.members)t.push(` ${n.type} ${n.name};`);return t.join(` +`)}getStructs(e){const t=[],n=this.structs[e],r=[];for(const a of n)if(a.output)for(const o of a.members)r.push(`layout( location = ${o.index} ) out ${o.type} ${o.name};`);else{let o="struct "+a.name+` { +`;o+=this.getStructMembers(a),o+=` +}; +`,t.push(o)}return r.length===0&&r.push("layout( location = 0 ) out vec4 fragColor;"),` +`+r.join(` +`)+` + +`+t.join(` +`)}getVaryings(e){let t="";const n=this.varyings;if(e==="vertex"||e==="compute")for(const r of n){e==="compute"&&(r.needsInterpolation=!0);const a=this.getType(r.type);if(r.needsInterpolation)if(r.interpolationType){const o=BU[r.interpolationType]||r.interpolationType,c=RU[r.interpolationSampling]||"";t+=`${o} ${c} out ${a} ${r.name}; +`}else{const o=a.includes("int")||a.includes("uv")||a.includes("iv")?"flat ":"";t+=`${o}out ${a} ${r.name}; +`}else t+=`${a} ${r.name}; +`}else if(e==="fragment"){for(const r of n)if(r.needsInterpolation){const a=this.getType(r.type);if(r.interpolationType){const o=BU[r.interpolationType]||r.interpolationType,c=RU[r.interpolationSampling]||"";t+=`${o} ${c} in ${a} ${r.name}; +`}else{const o=a.includes("int")||a.includes("uv")||a.includes("iv")?"flat ":"";t+=`${o}in ${a} ${r.name}; +`}}}for(const r of this.builtins[e])t+=`${r}; +`;return t}getVertexIndex(){return"uint( gl_VertexID )"}getInstanceIndex(){return"uint( gl_InstanceID )"}getInvocationLocalIndex(){return`uint( gl_InstanceID ) % ${this.object.workgroupSize.reduce((n,r)=>n*r,1)}u`}getSubgroupSize(){ri("GLSLNodeBuilder: WebGLBackend does not support the subgroupSize node")}getInvocationSubgroupIndex(){ri("GLSLNodeBuilder: WebGLBackend does not support the invocationSubgroupIndex node")}getSubgroupIndex(){ri("GLSLNodeBuilder: WebGLBackend does not support the subgroupIndex node")}getDrawIndex(){return this.renderer.backend.extensions.has("WEBGL_multi_draw")?"uint( gl_DrawID )":null}getFrontFacing(){return"gl_FrontFacing"}getFragCoord(){return"gl_FragCoord.xy"}getFragDepth(){return"gl_FragDepth"}enableExtension(e,t,n=this.shaderStage){const r=this.extensions[n]||(this.extensions[n]=new Map);r.has(e)===!1&&r.set(e,{name:e,behavior:t})}getExtensions(e){const t=[];if(e==="vertex"){const r=this.renderer.backend.extensions;this.object.isBatchedMesh&&r.has("WEBGL_multi_draw")&&this.enableExtension("GL_ANGLE_multi_draw","require",e)}const n=this.extensions[e];if(n!==void 0)for(const{name:r,behavior:a}of n.values())t.push(`#extension ${r} : ${a}`);return t.join(` +`)}getClipDistance(){return"gl_ClipDistance"}isAvailable(e){let t=CU[e];if(t===void 0){let n;switch(t=!1,e){case"float32Filterable":n="OES_texture_float_linear";break;case"clipDistance":n="WEBGL_clip_cull_distance";break}if(n!==void 0){const r=this.renderer.backend.extensions;r.has(n)&&(r.get(n),t=!0)}CU[e]=t}return t}isFlipY(){return!0}enableHardwareClipping(e){this.enableExtension("GL_ANGLE_clip_cull_distance","require"),this.builtins.vertex.push(`out float gl_ClipDistance[ ${e} ]`)}enableMultiview(){this.enableExtension("GL_OVR_multiview2","require","fragment"),this.enableExtension("GL_OVR_multiview2","require","vertex"),this.builtins.vertex.push("layout(num_views = 2) in")}registerTransform(e,t){this.transforms.push({varyingName:e,attributeNode:t})}getTransforms(){const e=this.transforms;let t="";for(let n=0;n0&&(n+=` +`),n+=` // flow -> ${f} + `),n+=`${u.code} + `,c===a&&t!=="compute"&&(n+=`// result + `,t==="vertex"?(n+="gl_Position = ",n+=`${u.result};`):t==="fragment"&&(c.outputNode.isOutputStructNode||(n+="fragColor = ",n+=`${u.result};`)))}const o=e[t];o.extensions=this.getExtensions(t),o.uniforms=this.getUniforms(t),o.attributes=this.getAttributes(t),o.varyings=this.getVaryings(t),o.vars=this.getVars(t),o.structs=this.getStructs(t),o.codes=this.getCodes(t),o.transforms=this.getTransforms(t),o.flow=n}this.material!==null?(this.vertexShader=this._getGLSLVertexCode(e.vertex),this.fragmentShader=this._getGLSLFragmentCode(e.fragment)):this.computeShader=this._getGLSLVertexCode(e.compute)}getUniformFromNode(e,t,n,r=null){const a=super.getUniformFromNode(e,t,n,r),o=this.getDataFromNode(e,n,this.globalCache);let c=o.uniformGPU;if(c===void 0){const u=e.groupNode,f=u.name,g=this.getBindGroupArray(f,n);if(t==="texture")c=new lE(a.name,a.node,u),g.push(c);else if(t==="cubeTexture"||t==="cubeDepthTexture")c=new MU(a.name,a.node,u),g.push(c);else if(t==="texture3D")c=new lB(a.name,a.node,u),g.push(c);else if(t==="buffer"){a.name=`buffer${e.id}`;const v=this.getSharedDataFromNode(e);let M=v.buffer;M===void 0&&(e.name=`NodeBuffer_${e.id}`,M=new wU(e,u),M.name=e.name,v.buffer=M),g.push(M),c=M}else{const v=this.uniformGroups[n]||(this.uniformGroups[n]={});let M=v[f];M===void 0&&(M=new SU(n+"_"+f,u),v[f]=M,g.push(M)),c=this.getNodeUniform(a,t),M.addUniform(c)}o.uniformGPU=c}return a}}let cB=null,qx=null;class IU{constructor(e={}){this.parameters=Object.assign({},e),this.data=new WeakMap,this.renderer=null,this.domElement=null,this.timestampQueryPool={[ac.RENDER]:null,[ac.COMPUTE]:null},this.trackTimestamp=e.trackTimestamp===!0}init(e){return lo(this,null,function*(){this.renderer=e})}get coordinateSystem(){}beginRender(){}finishRender(){}beginCompute(){}finishCompute(){}draw(){}compute(){}createProgram(){}destroyProgram(){}createBindings(){}updateBindings(){}updateBinding(){}createRenderPipeline(){}createComputePipeline(){}needsRenderUpdate(){}getRenderCacheKey(){}createNodeBuilder(){}updateSampler(){}createDefaultTexture(){}createTexture(){}updateTexture(){}generateMipmaps(){}destroyTexture(){}copyTextureToBuffer(){return lo(this,null,function*(){})}copyTextureToTexture(){}copyFramebufferToTexture(){}createAttribute(){}createIndexAttribute(){}createStorageAttribute(){}updateAttribute(){}destroyAttribute(){}getContext(){}updateSize(){}updateViewport(){}updateTimeStampUID(e){const t=this.get(e),n=this.renderer.info.frame;let r;e.isComputeNode===!0?r="c:"+this.renderer.info.compute.frameCalls:r="r:"+this.renderer.info.render.frameCalls,t.timestampUID=r+":"+e.id+":f"+n}getTimestampUID(e){return this.get(e).timestampUID}getTimestampFrames(e){const t=this.timestampQueryPool[e];return t?t.getTimestampFrames():[]}_getQueryPool(e){const t=e.startsWith("c:")?ac.COMPUTE:ac.RENDER;return this.timestampQueryPool[t]}getTimestamp(e){return this._getQueryPool(e).getTimestamp(e)}hasTimestamp(e){return this._getQueryPool(e).hasTimestamp(e)}isOccluded(){}resolveTimestampsAsync(e="render"){return lo(this,null,function*(){if(!this.trackTimestamp){Za("WebGPURenderer: Timestamp tracking is disabled.");return}const t=this.timestampQueryPool[e];if(!t)return;const n=yield t.resolveQueriesAsync();return this.renderer.info[e].timestamp=n,n})}getArrayBufferAsync(){return lo(this,null,function*(){})}hasFeatureAsync(){return lo(this,null,function*(){})}hasFeature(){}getMaxAnisotropy(){}getDrawingBufferSize(){return cB=cB||new de,this.renderer.getDrawingBufferSize(cB)}setScissorTest(){}getClearColor(){const e=this.renderer;return qx=qx||new EC,e.getClearColor(qx),qx.getRGB(qx),qx}getDomElement(){let e=this.domElement;return e===null&&(e=this.parameters.canvas!==void 0?this.parameters.canvas:oc(),"setAttribute"in e&&e.setAttribute("data-engine",`three.js r${m} webgpu`),this.domElement=e),e}set(e,t){this.data.set(e,t)}get(e){let t=this.data.get(e);return t===void 0&&(t={},this.data.set(e,t)),t}has(e){return this.data.has(e)}delete(e){this.data.delete(e)}deleteBindGroupData(){}dispose(){}}let C8=0;class B8{constructor(e,t){this.buffers=[e.bufferGPU,t],this.type=e.type,this.bufferType=e.bufferType,this.pbo=e.pbo,this.byteLength=e.byteLength,this.bytesPerElement=e.BYTES_PER_ELEMENT,this.version=e.version,this.isInteger=e.isInteger,this.activeBufferIndex=0,this.baseId=e.id}get id(){return`${this.baseId}|${this.activeBufferIndex}`}get bufferGPU(){return this.buffers[this.activeBufferIndex]}get transformBuffer(){return this.buffers[this.activeBufferIndex^1]}switchBuffers(){this.activeBufferIndex^=1}}class R8{constructor(e){this.backend=e}createAttribute(e,t){const n=this.backend,{gl:r}=n,a=e.array,o=e.usage||r.STATIC_DRAW,c=e.isInterleavedBufferAttribute?e.data:e,u=n.get(c);let f=u.bufferGPU;f===void 0&&(f=this._createBuffer(r,t,a,o),u.bufferGPU=f,u.bufferType=t,u.version=c.version);let g;if(a instanceof Float32Array)g=r.FLOAT;else if(typeof Float16Array!="undefined"&&a instanceof Float16Array)g=r.HALF_FLOAT;else if(a instanceof Uint16Array)e.isFloat16BufferAttribute?g=r.HALF_FLOAT:g=r.UNSIGNED_SHORT;else if(a instanceof Int16Array)g=r.SHORT;else if(a instanceof Uint32Array)g=r.UNSIGNED_INT;else if(a instanceof Int32Array)g=r.INT;else if(a instanceof Int8Array)g=r.BYTE;else if(a instanceof Uint8Array)g=r.UNSIGNED_BYTE;else if(a instanceof Uint8ClampedArray)g=r.UNSIGNED_BYTE;else throw new Error("THREE.WebGLBackend: Unsupported buffer data format: "+a);let v={bufferGPU:f,bufferType:t,type:g,byteLength:a.byteLength,bytesPerElement:a.BYTES_PER_ELEMENT,version:e.version,pbo:e.pbo,isInteger:g===r.INT||g===r.UNSIGNED_INT||e.gpuType===jt,id:C8++};if(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute){const M=this._createBuffer(r,t,a,o);v=new B8(v,M)}n.set(e,v)}updateAttribute(e){const t=this.backend,{gl:n}=t,r=e.array,a=e.isInterleavedBufferAttribute?e.data:e,o=t.get(a),c=o.bufferType,u=e.isInterleavedBufferAttribute?e.data.updateRanges:e.updateRanges;if(n.bindBuffer(c,o.bufferGPU),u.length===0)n.bufferSubData(c,0,r);else{for(let f=0,g=u.length;f0?this.enable(r.SAMPLE_ALPHA_TO_COVERAGE):this.disable(r.SAMPLE_ALPHA_TO_COVERAGE),n>0&&this.currentClippingPlanes!==n)for(let u=0;u<8;u++)u{function a(){const o=e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0);if(o===e.WAIT_FAILED){e.deleteSync(t),r();return}if(o===e.TIMEOUT_EXPIRED){requestAnimationFrame(a);return}e.deleteSync(t),n()}a()})}}let NU=!1,cE,hB,LU;class N8{constructor(e){this.backend=e,this.gl=e.gl,this.extensions=e.extensions,this.defaultTextures={},this._srcFramebuffer=null,this._dstFramebuffer=null,NU===!1&&(this._init(),NU=!0)}_init(){const e=this.gl;cE={[Yt]:e.REPEAT,[$t]:e.CLAMP_TO_EDGE,[Ft]:e.MIRRORED_REPEAT},hB={[xn]:e.NEAREST,[cr]:e.NEAREST_MIPMAP_NEAREST,[Lr]:e.NEAREST_MIPMAP_LINEAR,[Pr]:e.LINEAR,[ys]:e.LINEAR_MIPMAP_NEAREST,[Fi]:e.LINEAR_MIPMAP_LINEAR},LU={[Rc]:e.NEVER,[Ru]:e.ALWAYS,[rl]:e.LESS,[Fh]:e.LEQUAL,[gh]:e.EQUAL,[Ss]:e.GEQUAL,[Kh]:e.GREATER,[_l]:e.NOTEQUAL}}getGLTextureType(e){const{gl:t}=this;let n;return e.isCubeTexture===!0?n=t.TEXTURE_CUBE_MAP:e.isArrayTexture===!0||e.isDataArrayTexture===!0||e.isCompressedArrayTexture===!0?n=t.TEXTURE_2D_ARRAY:e.isData3DTexture===!0?n=t.TEXTURE_3D:n=t.TEXTURE_2D,n}getInternalFormat(e,t,n,r,a=!1){const{gl:o,extensions:c}=this;if(e!==null){if(o[e]!==void 0)return o[e];Qr("WebGLBackend: Attempt to use non-existing WebGL internal format '"+e+"'")}let u=t;if(t===o.RED&&(n===o.FLOAT&&(u=o.R32F),n===o.HALF_FLOAT&&(u=o.R16F),n===o.UNSIGNED_BYTE&&(u=o.R8),n===o.UNSIGNED_SHORT&&(u=o.R16),n===o.UNSIGNED_INT&&(u=o.R32UI),n===o.BYTE&&(u=o.R8I),n===o.SHORT&&(u=o.R16I),n===o.INT&&(u=o.R32I)),t===o.RED_INTEGER&&(n===o.UNSIGNED_BYTE&&(u=o.R8UI),n===o.UNSIGNED_SHORT&&(u=o.R16UI),n===o.UNSIGNED_INT&&(u=o.R32UI),n===o.BYTE&&(u=o.R8I),n===o.SHORT&&(u=o.R16I),n===o.INT&&(u=o.R32I)),t===o.RG&&(n===o.FLOAT&&(u=o.RG32F),n===o.HALF_FLOAT&&(u=o.RG16F),n===o.UNSIGNED_BYTE&&(u=o.RG8),n===o.UNSIGNED_SHORT&&(u=o.RG16),n===o.UNSIGNED_INT&&(u=o.RG32UI),n===o.BYTE&&(u=o.RG8I),n===o.SHORT&&(u=o.RG16I),n===o.INT&&(u=o.RG32I)),t===o.RG_INTEGER&&(n===o.UNSIGNED_BYTE&&(u=o.RG8UI),n===o.UNSIGNED_SHORT&&(u=o.RG16UI),n===o.UNSIGNED_INT&&(u=o.RG32UI),n===o.BYTE&&(u=o.RG8I),n===o.SHORT&&(u=o.RG16I),n===o.INT&&(u=o.RG32I)),t===o.RGB){const f=a?Kc:wr.getTransfer(r);n===o.FLOAT&&(u=o.RGB32F),n===o.HALF_FLOAT&&(u=o.RGB16F),n===o.UNSIGNED_BYTE&&(u=o.RGB8),n===o.UNSIGNED_SHORT&&(u=o.RGB16),n===o.UNSIGNED_INT&&(u=o.RGB32UI),n===o.BYTE&&(u=o.RGB8I),n===o.SHORT&&(u=o.RGB16I),n===o.INT&&(u=o.RGB32I),n===o.UNSIGNED_BYTE&&(u=f===Xs?o.SRGB8:o.RGB8),n===o.UNSIGNED_SHORT_5_6_5&&(u=o.RGB565),n===o.UNSIGNED_SHORT_5_5_5_1&&(u=o.RGB5_A1),n===o.UNSIGNED_SHORT_4_4_4_4&&(u=o.RGB4),n===o.UNSIGNED_INT_5_9_9_9_REV&&(u=o.RGB9_E5),n===o.UNSIGNED_INT_10F_11F_11F_REV&&(u=o.R11F_G11F_B10F)}if(t===o.RGB_INTEGER&&(n===o.UNSIGNED_BYTE&&(u=o.RGB8UI),n===o.UNSIGNED_SHORT&&(u=o.RGB16UI),n===o.UNSIGNED_INT&&(u=o.RGB32UI),n===o.BYTE&&(u=o.RGB8I),n===o.SHORT&&(u=o.RGB16I),n===o.INT&&(u=o.RGB32I)),t===o.RGBA){const f=a?Kc:wr.getTransfer(r);n===o.FLOAT&&(u=o.RGBA32F),n===o.HALF_FLOAT&&(u=o.RGBA16F),n===o.UNSIGNED_BYTE&&(u=o.RGBA8),n===o.UNSIGNED_SHORT&&(u=o.RGBA16),n===o.UNSIGNED_INT&&(u=o.RGBA32UI),n===o.BYTE&&(u=o.RGBA8I),n===o.SHORT&&(u=o.RGBA16I),n===o.INT&&(u=o.RGBA32I),n===o.UNSIGNED_BYTE&&(u=f===Xs?o.SRGB8_ALPHA8:o.RGBA8),n===o.UNSIGNED_SHORT_4_4_4_4&&(u=o.RGBA4),n===o.UNSIGNED_SHORT_5_5_5_1&&(u=o.RGB5_A1)}return t===o.RGBA_INTEGER&&(n===o.UNSIGNED_BYTE&&(u=o.RGBA8UI),n===o.UNSIGNED_SHORT&&(u=o.RGBA16UI),n===o.UNSIGNED_INT&&(u=o.RGBA32UI),n===o.BYTE&&(u=o.RGBA8I),n===o.SHORT&&(u=o.RGBA16I),n===o.INT&&(u=o.RGBA32I)),t===o.DEPTH_COMPONENT&&(n===o.UNSIGNED_SHORT&&(u=o.DEPTH_COMPONENT16),n===o.UNSIGNED_INT&&(u=o.DEPTH_COMPONENT24),n===o.FLOAT&&(u=o.DEPTH_COMPONENT32F)),t===o.DEPTH_STENCIL&&n===o.UNSIGNED_INT_24_8&&(u=o.DEPTH24_STENCIL8),(u===o.R16F||u===o.R32F||u===o.RG16F||u===o.RG32F||u===o.RGBA16F||u===o.RGBA32F)&&c.get("EXT_color_buffer_float"),u}setTextureParameters(e,t){const{gl:n,extensions:r,backend:a}=this,o=wr.getPrimaries(wr.workingColorSpace),c=t.colorSpace===nl?null:wr.getPrimaries(t.colorSpace),u=t.colorSpace===nl||o===c?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,t.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,t.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,u),n.texParameteri(e,n.TEXTURE_WRAP_S,cE[t.wrapS]),n.texParameteri(e,n.TEXTURE_WRAP_T,cE[t.wrapT]),(e===n.TEXTURE_3D||e===n.TEXTURE_2D_ARRAY)&&(t.isArrayTexture||n.texParameteri(e,n.TEXTURE_WRAP_R,cE[t.wrapR])),n.texParameteri(e,n.TEXTURE_MAG_FILTER,hB[t.magFilter]);const f=t.mipmaps!==void 0&&t.mipmaps.length>0,g=t.minFilter===Pr&&f?Fi:t.minFilter;if(n.texParameteri(e,n.TEXTURE_MIN_FILTER,hB[g]),t.compareFunction&&(n.texParameteri(e,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(e,n.TEXTURE_COMPARE_FUNC,LU[t.compareFunction])),r.has("EXT_texture_filter_anisotropic")===!0){if(t.magFilter===xn||t.minFilter!==Lr&&t.minFilter!==Fi||t.type===pt&&r.has("OES_texture_float_linear")===!1)return;if(t.anisotropy>1){const v=r.get("EXT_texture_filter_anisotropic");n.texParameterf(e,v.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,a.getMaxAnisotropy()))}}}createDefaultTexture(e){const{gl:t,backend:n,defaultTextures:r}=this,a=this.getGLTextureType(e);let o=r[a];o===void 0&&(o=t.createTexture(),n.state.bindTexture(a,o),t.texParameteri(a,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(a,t.TEXTURE_MAG_FILTER,t.NEAREST),r[a]=o),n.set(e,{textureGPU:o,glTextureType:a})}createTexture(e,t){const{gl:n,backend:r}=this,{levels:a,width:o,height:c,depth:u}=t,f=r.utils.convert(e.format,e.colorSpace),g=r.utils.convert(e.type),v=this.getInternalFormat(e.internalFormat,f,g,e.colorSpace,e.isVideoTexture),M=n.createTexture(),R=this.getGLTextureType(e);r.state.bindTexture(R,M),this.setTextureParameters(R,e),e.isArrayTexture||e.isDataArrayTexture||e.isCompressedArrayTexture?n.texStorage3D(n.TEXTURE_2D_ARRAY,a,v,o,c,u):e.isData3DTexture?n.texStorage3D(n.TEXTURE_3D,a,v,o,c,u):e.isVideoTexture||n.texStorage2D(R,a,v,o,c),r.set(e,{textureGPU:M,glTextureType:R,glFormat:f,glType:g,glInternalFormat:v})}copyBufferToTexture(e,t){const{gl:n,backend:r}=this,{textureGPU:a,glTextureType:o,glFormat:c,glType:u}=r.get(t),{width:f,height:g}=t.source.data;n.bindBuffer(n.PIXEL_UNPACK_BUFFER,e),r.state.bindTexture(o,a),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,!1),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),n.texSubImage2D(o,0,0,0,f,g,c,u,0),n.bindBuffer(n.PIXEL_UNPACK_BUFFER,null),r.state.unbindTexture()}updateTexture(e,t){const{gl:n}=this,{width:r,height:a}=t,{textureGPU:o,glTextureType:c,glFormat:u,glType:f,glInternalFormat:g}=this.backend.get(e);if(!(e.isRenderTargetTexture||o===void 0))if(this.backend.state.bindTexture(c,o),this.setTextureParameters(c,e),e.isCompressedTexture){const v=e.mipmaps,M=t.image;for(let R=0;R0){const M=hx(v.width,v.height,e.format,e.type);for(const R of e.layerUpdates){const I=v.data.subarray(R*M/v.data.BYTES_PER_ELEMENT,(R+1)*M/v.data.BYTES_PER_ELEMENT);n.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,R,v.width,v.height,1,u,f,I)}e.clearLayerUpdates()}else n.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,v.width,v.height,v.depth,u,f,v.data)}else if(e.isData3DTexture){const v=t.image;n.texSubImage3D(n.TEXTURE_3D,0,0,0,0,v.width,v.height,v.depth,u,f,v.data)}else if(e.isVideoTexture)e.update(),n.texImage2D(c,0,g,u,f,t.image);else{const v=e.mipmaps;if(v.length>0)for(let M=0,R=v.length;M0,M=t.renderTarget?t.renderTarget.height:this.backend.getDrawingBufferSize().y;if(v){const R=c!==0||u!==0;let I,re;if(e.isDepthTexture===!0?(I=r.DEPTH_BUFFER_BIT,re=r.DEPTH_ATTACHMENT,t.stencil&&(I|=r.STENCIL_BUFFER_BIT)):(I=r.COLOR_BUFFER_BIT,re=r.COLOR_ATTACHMENT0),R){const ne=this.backend.get(t.renderTarget),J=ne.framebuffers[t.getCacheKey()],be=ne.msaaFrameBuffer;a.bindFramebuffer(r.DRAW_FRAMEBUFFER,J),a.bindFramebuffer(r.READ_FRAMEBUFFER,be);const Re=M-u-g;r.blitFramebuffer(c,Re,c+f,Re+g,c,Re,c+f,Re+g,I,r.NEAREST),a.bindFramebuffer(r.READ_FRAMEBUFFER,J),a.bindTexture(r.TEXTURE_2D,o),r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,c,Re,f,g),a.unbindTexture()}else{const ne=r.createFramebuffer();a.bindFramebuffer(r.DRAW_FRAMEBUFFER,ne),r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,re,r.TEXTURE_2D,o,0),r.blitFramebuffer(0,0,f,g,0,0,f,g,I,r.NEAREST),r.deleteFramebuffer(ne)}}else a.bindTexture(r.TEXTURE_2D,o),r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,c,M-g-u,f,g),a.unbindTexture();e.generateMipmaps&&this.generateMipmaps(e),this.backend._setFramebuffer(t)}setupRenderBufferStorage(e,t,n,r=!1){const{gl:a}=this,o=t.renderTarget,{depthTexture:c,depthBuffer:u,stencilBuffer:f,width:g,height:v}=o;if(a.bindRenderbuffer(a.RENDERBUFFER,e),u&&!f){let M=a.DEPTH_COMPONENT24;r===!0?this.extensions.get("WEBGL_multisampled_render_to_texture").renderbufferStorageMultisampleEXT(a.RENDERBUFFER,o.samples,M,g,v):n>0?(c&&c.isDepthTexture&&c.type===a.FLOAT&&(M=a.DEPTH_COMPONENT32F),a.renderbufferStorageMultisample(a.RENDERBUFFER,n,M,g,v)):a.renderbufferStorage(a.RENDERBUFFER,M,g,v),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.RENDERBUFFER,e)}else u&&f&&(n>0?a.renderbufferStorageMultisample(a.RENDERBUFFER,n,a.DEPTH24_STENCIL8,g,v):a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_STENCIL,g,v),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.RENDERBUFFER,e));a.bindRenderbuffer(a.RENDERBUFFER,null)}copyTextureToBuffer(e,t,n,r,a,o){return lo(this,null,function*(){const{backend:c,gl:u}=this,{textureGPU:f,glFormat:g,glType:v}=this.backend.get(e),M=u.createFramebuffer();c.state.bindFramebuffer(u.READ_FRAMEBUFFER,M);const R=e.isCubeTexture?u.TEXTURE_CUBE_MAP_POSITIVE_X+o:u.TEXTURE_2D;u.framebufferTexture2D(u.READ_FRAMEBUFFER,u.COLOR_ATTACHMENT0,R,f,0);const I=this._getTypedArrayType(v),re=this._getBytesPerTexel(v,g),J=r*a*re,be=u.createBuffer();u.bindBuffer(u.PIXEL_PACK_BUFFER,be),u.bufferData(u.PIXEL_PACK_BUFFER,J,u.STREAM_READ),u.readPixels(t,n,r,a,g,v,0),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),yield c.utils._clientWaitAsync();const Re=new I(J/I.BYTES_PER_ELEMENT);return u.bindBuffer(u.PIXEL_PACK_BUFFER,be),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,Re),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c.state.bindFramebuffer(u.READ_FRAMEBUFFER,null),u.deleteFramebuffer(M),Re})}_getTypedArrayType(e){const{gl:t}=this;if(e===t.UNSIGNED_BYTE)return Uint8Array;if(e===t.UNSIGNED_SHORT_4_4_4_4||e===t.UNSIGNED_SHORT_5_5_5_1||e===t.UNSIGNED_SHORT_5_6_5||e===t.UNSIGNED_SHORT)return Uint16Array;if(e===t.UNSIGNED_INT)return Uint32Array;if(e===t.HALF_FLOAT)return Uint16Array;if(e===t.FLOAT)return Float32Array;throw new Error(`Unsupported WebGL type: ${e}`)}_getBytesPerTexel(e,t){const{gl:n}=this;let r=0;if(e===n.UNSIGNED_BYTE&&(r=1),(e===n.UNSIGNED_SHORT_4_4_4_4||e===n.UNSIGNED_SHORT_5_5_5_1||e===n.UNSIGNED_SHORT_5_6_5||e===n.UNSIGNED_SHORT||e===n.HALF_FLOAT)&&(r=2),(e===n.UNSIGNED_INT||e===n.FLOAT)&&(r=4),t===n.RGBA)return r*4;if(t===n.RGB)return r*3;if(t===n.ALPHA)return r}dispose(){const{gl:e}=this;this._srcFramebuffer!==null&&e.deleteFramebuffer(this._srcFramebuffer),this._dstFramebuffer!==null&&e.deleteFramebuffer(this._dstFramebuffer)}}function uE(i){return i.isDataTexture?i.image.data:typeof HTMLImageElement!="undefined"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&i instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&i instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&i instanceof OffscreenCanvas?i:i.data}class L8{constructor(e){this.backend=e,this.gl=this.backend.gl,this.availableExtensions=this.gl.getSupportedExtensions(),this.extensions={}}get(e){let t=this.extensions[e];return t===void 0&&(t=this.gl.getExtension(e),this.extensions[e]=t),t}has(e){return this.availableExtensions.includes(e)}}class F8{constructor(e){this.backend=e,this.maxAnisotropy=null}getMaxAnisotropy(){if(this.maxAnisotropy!==null)return this.maxAnisotropy;const e=this.backend.gl,t=this.backend.extensions;if(t.has("EXT_texture_filter_anisotropic")===!0){const n=t.get("EXT_texture_filter_anisotropic");this.maxAnisotropy=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else this.maxAnisotropy=0;return this.maxAnisotropy}}const FU={WEBGL_multi_draw:"WEBGL_multi_draw",WEBGL_compressed_texture_astc:"texture-compression-astc",WEBGL_compressed_texture_etc:"texture-compression-etc2",WEBGL_compressed_texture_etc1:"texture-compression-etc1",WEBGL_compressed_texture_pvrtc:"texture-compression-pvrtc",WEBGL_compressed_texture_s3tc:"texture-compression-s3tc",EXT_texture_compression_bptc:"texture-compression-bc",EXT_disjoint_timer_query_webgl2:"timestamp-query",OVR_multiview2:"OVR_multiview2"};class U8{constructor(e){this.gl=e.gl,this.extensions=e.extensions,this.info=e.renderer.info,this.mode=null,this.index=0,this.type=null,this.object=null}render(e,t){const{gl:n,mode:r,object:a,type:o,info:c,index:u}=this;u!==0?n.drawElements(r,t,o,e):n.drawArrays(r,e,t),c.update(a,t,1)}renderInstances(e,t,n){const{gl:r,mode:a,type:o,index:c,object:u,info:f}=this;n!==0&&(c!==0?r.drawElementsInstanced(a,t,o,e,n):r.drawArraysInstanced(a,e,t,n),f.update(u,t,n))}renderMultiDraw(e,t,n){const{extensions:r,mode:a,object:o,info:c}=this;if(n===0)return;const u=r.get("WEBGL_multi_draw");if(u===null)for(let f=0;fthis.maxQueries)return Za(`WebGPUTimestampQueryPool [${this.type}]: Maximum number of queries exceeded, when using trackTimestamp it is necessary to resolves the queries via renderer.resolveTimestampsAsync( THREE.TimestampQuery.${this.type.toUpperCase()} ).`),null;const t=this.currentQueryIndex;return this.currentQueryIndex+=2,this.queryStates.set(t,"inactive"),this.queryOffsets.set(e,t),t}beginQuery(e){if(!this.trackTimestamp||this.isDisposed)return;const t=this.queryOffsets.get(e);if(t==null||this.activeQuery!==null)return;const n=this.queries[t];if(n)try{this.queryStates.get(t)==="inactive"&&(this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT,n),this.activeQuery=t,this.queryStates.set(t,"started"))}catch(r){ri("Error in beginQuery:",r),this.activeQuery=null,this.queryStates.set(t,"inactive")}}endQuery(e){if(!this.trackTimestamp||this.isDisposed)return;const t=this.queryOffsets.get(e);if(t!=null&&this.activeQuery===t)try{this.gl.endQuery(this.ext.TIME_ELAPSED_EXT),this.queryStates.set(t,"ended"),this.activeQuery=null}catch(n){ri("Error in endQuery:",n),this.queryStates.set(t,"inactive"),this.activeQuery=null}}resolveQueriesAsync(){return lo(this,null,function*(){if(!this.trackTimestamp||this.pendingResolve)return this.lastValue;this.pendingResolve=!0;try{const e=new Map;for(const[a,o]of this.queryOffsets)if(this.queryStates.get(o)==="ended"){const u=this.queries[o];e.set(a,this.resolveQuery(u))}if(e.size===0)return this.lastValue;const t={},n=[];for(const[a,o]of e){const c=a.match(/^(.*):f(\d+)$/),u=parseInt(c[2]);n.includes(u)===!1&&n.push(u),t[u]===void 0&&(t[u]=0);const f=yield o;this.timestamps.set(a,f),t[u]+=f}const r=t[n[n.length-1]];return this.lastValue=r,this.frames=n,this.currentQueryIndex=0,this.queryOffsets.clear(),this.queryStates.clear(),this.activeQuery=null,r}catch(e){return ri("Error resolving queries:",e),this.lastValue}finally{this.pendingResolve=!1}})}resolveQuery(e){return lo(this,null,function*(){return new Promise(t=>{if(this.isDisposed){t(this.lastValue);return}let n,r=!1;const a=()=>{n&&(clearTimeout(n),n=null)},o=u=>{r||(r=!0,a(),t(u))},c=()=>{if(this.isDisposed){o(this.lastValue);return}try{if(this.gl.getParameter(this.ext.GPU_DISJOINT_EXT)){o(this.lastValue);return}if(!this.gl.getQueryParameter(e,this.gl.QUERY_RESULT_AVAILABLE)){n=setTimeout(c,1);return}const g=this.gl.getQueryParameter(e,this.gl.QUERY_RESULT);t(Number(g)/1e6)}catch(u){ri("Error checking query:",u),t(this.lastValue)}};c()})})}dispose(){if(!this.isDisposed&&(this.isDisposed=!0,!!this.trackTimestamp)){for(const e of this.queries)this.gl.deleteQuery(e);this.queries=[],this.queryStates.clear(),this.queryOffsets.clear(),this.lastValue=0,this.activeQuery=null}}}class DU extends IU{constructor(e={}){super(e),this.isWebGLBackend=!0,this.attributeUtils=null,this.extensions=null,this.capabilities=null,this.textureUtils=null,this.bufferRenderer=null,this.gl=null,this.state=null,this.utils=null,this.vaoCache={},this.transformFeedbackCache={},this.discard=!1,this.disjoint=null,this.parallel=null,this._currentContext=null,this._knownBindings=new WeakSet,this._supportsInvalidateFramebuffer=typeof navigator=="undefined"?!1:/OculusBrowser/g.test(navigator.userAgent),this._xrFramebuffer=null}init(e){super.init(e);const t=this.parameters,n={antialias:e.currentSamples>0,alpha:!0,depth:e.depth,stencil:e.stencil},r=t.context!==void 0?t.context:e.domElement.getContext("webgl2",n);function a(o){o.preventDefault();const c={api:"WebGL",message:o.statusMessage||"Unknown reason",reason:null,originalEvent:o};e.onDeviceLost(c)}this._onContextLost=a,e.domElement.addEventListener("webglcontextlost",a,!1),this.gl=r,this.extensions=new L8(this),this.capabilities=new F8(this),this.attributeUtils=new R8(this),this.textureUtils=new N8(this),this.bufferRenderer=new U8(this),this.state=new P8(this),this.utils=new I8(this),this.extensions.get("EXT_color_buffer_float"),this.extensions.get("WEBGL_clip_cull_distance"),this.extensions.get("OES_texture_float_linear"),this.extensions.get("EXT_color_buffer_half_float"),this.extensions.get("WEBGL_multisampled_render_to_texture"),this.extensions.get("WEBGL_render_shared_exponent"),this.extensions.get("WEBGL_multi_draw"),this.extensions.get("OVR_multiview2"),this.disjoint=this.extensions.get("EXT_disjoint_timer_query_webgl2"),this.parallel=this.extensions.get("KHR_parallel_shader_compile"),this.drawBuffersIndexedExt=this.extensions.get("OES_draw_buffers_indexed")}get coordinateSystem(){return sl}getArrayBufferAsync(e){return lo(this,null,function*(){return yield this.attributeUtils.getArrayBufferAsync(e)})}makeXRCompatible(){return lo(this,null,function*(){this.gl.getContextAttributes().xrCompatible!==!0&&(yield this.gl.makeXRCompatible())})}setXRTarget(e){this._xrFramebuffer=e}setXRRenderTargetTextures(e,t,n=null){const r=this.gl;if(this.set(e.texture,{textureGPU:t,glInternalFormat:r.RGBA8}),n!==null){const a=e.stencilBuffer?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24;this.set(e.depthTexture,{textureGPU:n,glInternalFormat:a}),this.extensions.has("WEBGL_multisampled_render_to_texture")===!0&&e._autoAllocateDepthBuffer===!0&&e.multiview===!1&&Qr("WebGLBackend: Render-to-texture extension was disabled because an external texture was provided"),e._autoAllocateDepthBuffer=!1}}initTimestampQuery(e,t){if(!this.disjoint||!this.trackTimestamp)return;this.timestampQueryPool[e]||(this.timestampQueryPool[e]=new D8(this.gl,e,2048));const n=this.timestampQueryPool[e];n.allocateQueriesForContext(t)!==null&&n.beginQuery(t)}prepareTimestampBuffer(e,t){if(!this.disjoint||!this.trackTimestamp)return;this.timestampQueryPool[e].endQuery(t)}getContext(){return this.gl}beginRender(e){const{state:t}=this,n=this.get(e);if(e.viewport)this.updateViewport(e);else{const{width:a,height:o}=this.getDrawingBufferSize();t.viewport(0,0,a,o)}if(e.scissor){const{x:a,y:o,width:c,height:u}=e.scissorValue;t.scissor(a,e.height-u-o,c,u)}this.initTimestampQuery(ac.RENDER,this.getTimestampUID(e)),n.previousContext=this._currentContext,this._currentContext=e,this._setFramebuffer(e),this.clear(e.clearColor,e.clearDepth,e.clearStencil,e,!1);const r=e.occlusionQueryCount;r>0&&(n.currentOcclusionQueries=n.occlusionQueries,n.currentOcclusionQueryObjects=n.occlusionQueryObjects,n.lastOcclusionObject=null,n.occlusionQueries=new Array(r),n.occlusionQueryObjects=new Array(r),n.occlusionQueryIndex=0)}finishRender(e){const{gl:t,state:n}=this,r=this.get(e),a=r.previousContext;n.resetVertexState();const o=e.occlusionQueryCount;o>0&&(o>r.occlusionQueryIndex&&t.endQuery(t.ANY_SAMPLES_PASSED),this.resolveOccludedAsync(e));const c=e.textures;if(c!==null)for(let u=0;u{let u=0;for(let f=0;f1&&f.setMRTBlending(a.textures),f.useProgram(c);const R=e.getAttributes(),I=this.get(R);let re=I.vaoGPU;if(re===void 0){const Nt=this._getVaoKey(R);re=this.vaoCache[Nt],re===void 0&&(re=this._createVao(R),this.vaoCache[Nt]=re,I.vaoGPU=re)}const ne=e.getIndex(),J=ne!==null?this.get(ne).bufferGPU:null;f.setVertexState(re,J);const be=g.lastOcclusionObject;if(be!==t&&be!==void 0){if(be!==null&&be.occlusionTest===!0&&(u.endQuery(u.ANY_SAMPLES_PASSED),g.occlusionQueryIndex++),t.occlusionTest===!0){const Nt=u.createQuery();u.beginQuery(u.ANY_SAMPLES_PASSED,Nt),g.occlusionQueries[g.occlusionQueryIndex]=Nt,g.occlusionQueryObjects[g.occlusionQueryIndex]=t}g.lastOcclusionObject=t}const Re=this.bufferRenderer;t.isPoints?Re.mode=u.POINTS:t.isLineSegments?Re.mode=u.LINES:t.isLine?Re.mode=u.LINE_STRIP:t.isLineLoop?Re.mode=u.LINE_LOOP:r.wireframe===!0?(f.setLineWidth(r.wireframeLinewidth*this.renderer.getPixelRatio()),Re.mode=u.LINES):Re.mode=u.TRIANGLES;const{vertexCount:ze,instanceCount:st}=v;let{firstVertex:et}=v;if(Re.object=t,ne!==null){et*=ne.array.BYTES_PER_ELEMENT;const Nt=this.get(ne);Re.index=ne.count,Re.type=Nt.type}else Re.index=0;const dt=()=>{t.isBatchedMesh?t._multiDrawInstances!==null?(Za("WebGLBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Re.renderMultiDrawInstances(t._multiDrawStarts,t._multiDrawCounts,t._multiDrawCount,t._multiDrawInstances)):this.hasFeature("WEBGL_multi_draw")?Re.renderMultiDraw(t._multiDrawStarts,t._multiDrawCounts,t._multiDrawCount):Za("WebGLBackend: WEBGL_multi_draw not supported."):st>1?Re.renderInstances(et,ze,st):Re.render(et,ze)};if(e.camera.isArrayCamera===!0&&e.camera.cameras.length>0&&e.camera.isMultiViewCamera===!1){const Nt=this.get(e.camera),nt=e.camera.cameras,mt=e.getBindingGroup("cameraIndex").bindings[0];if(Nt.indexesGPU===void 0||Nt.indexesGPU.length!==nt.length){const jr=new Uint32Array([0,0,0,0]),ai=[];for(let zi=0,Os=nt.length;zi{const M=this.parallel,R=()=>{n.getProgramParameter(c,M.COMPLETION_STATUS_KHR)?(this._completeCompile(e,r),v()):requestAnimationFrame(R)};R()});t.push(g);return}this._completeCompile(e,r)}_handleSource(e,t){const n=e.split(` +`),r=[],a=Math.max(t-6,0),o=Math.min(t+6,n.length);for(let c=a;c":" "} ${u}: ${n[c]}`)}return r.join(` +`)}_getShaderErrors(e,t,n){const r=e.getShaderParameter(t,e.COMPILE_STATUS),o=(e.getShaderInfoLog(t)||"").trim();if(r&&o==="")return"";const c=/ERROR: 0:(\d+)/.exec(o);if(c){const u=parseInt(c[1]);return n.toUpperCase()+` + +`+o+` + +`+this._handleSource(e.getShaderSource(t),u)}else return o}_logProgramError(e,t,n){if(this.renderer.debug.checkShaderErrors){const r=this.gl,o=(r.getProgramInfoLog(e)||"").trim();if(r.getProgramParameter(e,r.LINK_STATUS)===!1)if(typeof this.renderer.debug.onShaderError=="function")this.renderer.debug.onShaderError(r,e,n,t);else{const c=this._getShaderErrors(r,n,"vertex"),u=this._getShaderErrors(r,t,"fragment");ri("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(e,r.VALIDATE_STATUS)+` + +Program Info Log: `+o+` +`+c+` +`+u)}else o!==""&&Qr("WebGLProgram: Program Info Log:",o)}}_completeCompile(e,t){const{state:n,gl:r}=this,a=this.get(t),{programGPU:o,fragmentShader:c,vertexShader:u}=a;r.getProgramParameter(o,r.LINK_STATUS)===!1&&this._logProgramError(o,c,u),n.useProgram(o);const f=e.getBindings();this._setupBindings(f,o),this.set(t,{programGPU:o})}createComputePipeline(e,t){const{state:n,gl:r}=this,a={stage:"fragment",code:`#version 300 es +precision highp float; +void main() {}`};this.createProgram(a);const{computeProgram:o}=e,c=r.createProgram(),u=this.get(a).shaderGPU,f=this.get(o).shaderGPU,g=o.transforms,v=[],M=[];for(let ne=0;neFU[r]===e),n=this.extensions;for(let r=0;r1,R=a.isXRRenderTarget===!0,I=R===!0&&a._hasExternalTextures===!0;let re=o.msaaFrameBuffer,ne=o.depthRenderbuffer;const J=this.extensions.get("WEBGL_multisampled_render_to_texture"),be=this.extensions.get("OVR_multiview2"),Re=this._useMultisampledExtension(a),ze=tF(e);let st;if(g?(o.cubeFramebuffers||(o.cubeFramebuffers={}),st=o.cubeFramebuffers[ze]):R&&I===!1?st=this._xrFramebuffer:(o.framebuffers||(o.framebuffers={}),st=o.framebuffers[ze]),st===void 0){st=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,st);const et=e.textures,dt=[];if(g){o.cubeFramebuffers[ze]=st;const{textureGPU:nt}=this.get(et[0]),mt=this.renderer._activeCubeFace,En=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+mt,nt,En)}else{o.framebuffers[ze]=st;for(let nt=0;nt0&&Re===!1&&!a.multiview){if(re===void 0){const et=[];re=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,re);const dt=[],Nt=e.textures;for(let nt=0;nt0&&this._useMultisampledExtension(r)===!1){const o=a.framebuffers[e.getCacheKey()];let c=t.COLOR_BUFFER_BIT;r.resolveDepthBuffer&&(r.depthBuffer&&(c|=t.DEPTH_BUFFER_BIT),r.stencilBuffer&&r.resolveStencilBuffer&&(c|=t.STENCIL_BUFFER_BIT));const u=a.msaaFrameBuffer,f=a.msaaRenderbuffers,g=e.textures,v=g.length>1;if(n.bindFramebuffer(t.READ_FRAMEBUFFER,u),n.bindFramebuffer(t.DRAW_FRAMEBUFFER,o),v)for(let M=0;M0&&this.extensions.has("WEBGL_multisampled_render_to_texture")===!0&&e._autoAllocateDepthBuffer!==!1}dispose(){this.textureUtils!==null&&this.textureUtils.dispose();const e=this.extensions.get("WEBGL_lose_context");e&&e.loseContext(),this.renderer.domElement.removeEventListener("webglcontextlost",this._onContextLost)}}const Jx={PointList:"point-list",LineList:"line-list",LineStrip:"line-strip",TriangleList:"triangle-list",TriangleStrip:"triangle-strip"},By=typeof self!="undefined"?self.GPUShaderStage:{VERTEX:1,FRAGMENT:2,COMPUTE:4},nd={Never:"never",Less:"less",Equal:"equal",LessEqual:"less-equal",Greater:"greater",NotEqual:"not-equal",GreaterEqual:"greater-equal",Always:"always"},Nd={Store:"store"},Jc={Load:"load",Clear:"clear"},OU={CCW:"ccw",CW:"cw"},kU={None:"none",Back:"back"},e_={Uint16:"uint16",Uint32:"uint32"},fr={R8Unorm:"r8unorm",R8Snorm:"r8snorm",R8Uint:"r8uint",R8Sint:"r8sint",R16Uint:"r16uint",R16Sint:"r16sint",R16Float:"r16float",RG8Unorm:"rg8unorm",RG8Snorm:"rg8snorm",RG8Uint:"rg8uint",RG8Sint:"rg8sint",R32Uint:"r32uint",R32Sint:"r32sint",R32Float:"r32float",RG16Uint:"rg16uint",RG16Sint:"rg16sint",RG16Float:"rg16float",RGBA8Unorm:"rgba8unorm",RGBA8UnormSRGB:"rgba8unorm-srgb",RGBA8Snorm:"rgba8snorm",RGBA8Uint:"rgba8uint",RGBA8Sint:"rgba8sint",BGRA8Unorm:"bgra8unorm",BGRA8UnormSRGB:"bgra8unorm-srgb",RGB9E5UFloat:"rgb9e5ufloat",RGB10A2Unorm:"rgb10a2unorm",RG11B10UFloat:"rg11b10ufloat",RG32Uint:"rg32uint",RG32Sint:"rg32sint",RG32Float:"rg32float",RGBA16Uint:"rgba16uint",RGBA16Sint:"rgba16sint",RGBA16Float:"rgba16float",RGBA32Uint:"rgba32uint",RGBA32Sint:"rgba32sint",RGBA32Float:"rgba32float",Depth16Unorm:"depth16unorm",Depth24Plus:"depth24plus",Depth24PlusStencil8:"depth24plus-stencil8",Depth32Float:"depth32float",Depth32FloatStencil8:"depth32float-stencil8",BC1RGBAUnorm:"bc1-rgba-unorm",BC1RGBAUnormSRGB:"bc1-rgba-unorm-srgb",BC2RGBAUnorm:"bc2-rgba-unorm",BC2RGBAUnormSRGB:"bc2-rgba-unorm-srgb",BC3RGBAUnorm:"bc3-rgba-unorm",BC3RGBAUnormSRGB:"bc3-rgba-unorm-srgb",BC4RUnorm:"bc4-r-unorm",BC4RSnorm:"bc4-r-snorm",BC5RGUnorm:"bc5-rg-unorm",BC5RGSnorm:"bc5-rg-snorm",BC6HRGBUFloat:"bc6h-rgb-ufloat",BC6HRGBFloat:"bc6h-rgb-float",BC7RGBAUnorm:"bc7-rgba-unorm",BC7RGBAUnormSRGB:"bc7-rgba-unorm-srgb",ETC2RGB8Unorm:"etc2-rgb8unorm",ETC2RGB8UnormSRGB:"etc2-rgb8unorm-srgb",ETC2RGB8A1Unorm:"etc2-rgb8a1unorm",ETC2RGB8A1UnormSRGB:"etc2-rgb8a1unorm-srgb",ETC2RGBA8Unorm:"etc2-rgba8unorm",ETC2RGBA8UnormSRGB:"etc2-rgba8unorm-srgb",EACR11Unorm:"eac-r11unorm",EACR11Snorm:"eac-r11snorm",EACRG11Unorm:"eac-rg11unorm",EACRG11Snorm:"eac-rg11snorm",ASTC4x4Unorm:"astc-4x4-unorm",ASTC4x4UnormSRGB:"astc-4x4-unorm-srgb",ASTC5x4Unorm:"astc-5x4-unorm",ASTC5x4UnormSRGB:"astc-5x4-unorm-srgb",ASTC5x5Unorm:"astc-5x5-unorm",ASTC5x5UnormSRGB:"astc-5x5-unorm-srgb",ASTC6x5Unorm:"astc-6x5-unorm",ASTC6x5UnormSRGB:"astc-6x5-unorm-srgb",ASTC6x6Unorm:"astc-6x6-unorm",ASTC6x6UnormSRGB:"astc-6x6-unorm-srgb",ASTC8x5Unorm:"astc-8x5-unorm",ASTC8x5UnormSRGB:"astc-8x5-unorm-srgb",ASTC8x6Unorm:"astc-8x6-unorm",ASTC8x6UnormSRGB:"astc-8x6-unorm-srgb",ASTC8x8Unorm:"astc-8x8-unorm",ASTC8x8UnormSRGB:"astc-8x8-unorm-srgb",ASTC10x5Unorm:"astc-10x5-unorm",ASTC10x5UnormSRGB:"astc-10x5-unorm-srgb",ASTC10x6Unorm:"astc-10x6-unorm",ASTC10x6UnormSRGB:"astc-10x6-unorm-srgb",ASTC10x8Unorm:"astc-10x8-unorm",ASTC10x8UnormSRGB:"astc-10x8-unorm-srgb",ASTC10x10Unorm:"astc-10x10-unorm",ASTC10x10UnormSRGB:"astc-10x10-unorm-srgb",ASTC12x10Unorm:"astc-12x10-unorm",ASTC12x10UnormSRGB:"astc-12x10-unorm-srgb",ASTC12x12Unorm:"astc-12x12-unorm",ASTC12x12UnormSRGB:"astc-12x12-unorm-srgb"},fB={ClampToEdge:"clamp-to-edge",Repeat:"repeat",MirrorRepeat:"mirror-repeat"},Ry={Linear:"linear",Nearest:"nearest"},ic={Zero:"zero",One:"one",Src:"src",OneMinusSrc:"one-minus-src",SrcAlpha:"src-alpha",OneMinusSrcAlpha:"one-minus-src-alpha",Dst:"dst",OneMinusDst:"one-minus-dst",DstAlpha:"dst-alpha",OneMinusDstAlpha:"one-minus-dst-alpha",SrcAlphaSaturated:"src-alpha-saturated",Constant:"constant",OneMinusConstant:"one-minus-constant"},Py={Add:"add",Subtract:"subtract",ReverseSubtract:"reverse-subtract",Min:"min",Max:"max"},VU={None:0,All:15},Tv={Keep:"keep",Zero:"zero",Replace:"replace",Invert:"invert",IncrementClamp:"increment-clamp",DecrementClamp:"decrement-clamp",IncrementWrap:"increment-wrap",DecrementWrap:"decrement-wrap"},dB={Storage:"storage",ReadOnlyStorage:"read-only-storage"},AB={WriteOnly:"write-only",ReadOnly:"read-only",ReadWrite:"read-write"},HU={NonFiltering:"non-filtering",Comparison:"comparison"},Iy={Float:"float",UnfilterableFloat:"unfilterable-float",Depth:"depth",SInt:"sint",UInt:"uint"},GU={TwoD:"2d",ThreeD:"3d"},af={TwoD:"2d",TwoDArray:"2d-array",Cube:"cube",ThreeD:"3d"},O8={All:"all"},hE={Vertex:"vertex",Instance:"instance"},pB={CoreFeaturesAndLimits:"core-features-and-limits",DepthClipControl:"depth-clip-control",Depth32FloatStencil8:"depth32float-stencil8",TextureCompressionBC:"texture-compression-bc",TextureCompressionBCSliced3D:"texture-compression-bc-sliced-3d",TextureCompressionETC2:"texture-compression-etc2",TextureCompressionASTC:"texture-compression-astc",TextureCompressionASTCSliced3D:"texture-compression-astc-sliced-3d",TimestampQuery:"timestamp-query",IndirectFirstInstance:"indirect-first-instance",ShaderF16:"shader-f16",RG11B10UFloat:"rg11b10ufloat-renderable",BGRA8UNormStorage:"bgra8unorm-storage",Float32Filterable:"float32-filterable",Float32Blendable:"float32-blendable",ClipDistances:"clip-distances",DualSourceBlending:"dual-source-blending",Subgroups:"subgroups",TextureFormatsTier1:"texture-formats-tier1",TextureFormatsTier2:"texture-formats-tier2"},zU={"texture-compression-s3tc":"texture-compression-bc","texture-compression-etc1":"texture-compression-etc2"};class k8 extends EU{constructor(e,t,n){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n}update(){const{textureNode:e}=this;return this.texture!==e.value?(this.texture=e.value,!0):super.update()}}class V8 extends _U{constructor(e,t){super(e,t?t.array:null),this.attribute=t,this.isStorageBuffer=!0}}let H8=0;class G8 extends V8{constructor(e,t){super("StorageBuffer_"+H8++,e?e.value:null),this.nodeUniform=e,this.access=e?e.access:Yf.READ_WRITE,this.groupNode=t}get buffer(){return this.nodeUniform.value}}class z8 extends wv{constructor(e){super(),this.device=e;const t=` +struct VarysStruct { + @builtin( position ) Position: vec4, + @location( 0 ) vTex : vec2 +}; + +@vertex +fn main( @builtin( vertex_index ) vertexIndex : u32 ) -> VarysStruct { + + var Varys : VarysStruct; + + var pos = array< vec2, 4 >( + vec2( -1.0, 1.0 ), + vec2( 1.0, 1.0 ), + vec2( -1.0, -1.0 ), + vec2( 1.0, -1.0 ) + ); + + var tex = array< vec2, 4 >( + vec2( 0.0, 0.0 ), + vec2( 1.0, 0.0 ), + vec2( 0.0, 1.0 ), + vec2( 1.0, 1.0 ) + ); + + Varys.vTex = tex[ vertexIndex ]; + Varys.Position = vec4( pos[ vertexIndex ], 0.0, 1.0 ); + + return Varys; + +} +`,n=` +@group( 0 ) @binding( 0 ) +var imgSampler : sampler; + +@group( 0 ) @binding( 1 ) +var img : texture_2d; + +@fragment +fn main( @location( 0 ) vTex : vec2 ) -> @location( 0 ) vec4 { + + return textureSample( img, imgSampler, vTex ); + +} +`,r=` +@group( 0 ) @binding( 0 ) +var imgSampler : sampler; + +@group( 0 ) @binding( 1 ) +var img : texture_2d; + +@fragment +fn main( @location( 0 ) vTex : vec2 ) -> @location( 0 ) vec4 { + + return textureSample( img, imgSampler, vec2( vTex.x, 1.0 - vTex.y ) ); + +} +`;this.mipmapSampler=e.createSampler({minFilter:Ry.Linear}),this.flipYSampler=e.createSampler({minFilter:Ry.Nearest}),this.transferPipelines={},this.flipYPipelines={},this.mipmapVertexShaderModule=e.createShaderModule({label:"mipmapVertex",code:t}),this.mipmapFragmentShaderModule=e.createShaderModule({label:"mipmapFragment",code:n}),this.flipYFragmentShaderModule=e.createShaderModule({label:"flipYFragment",code:r})}getTransferPipeline(e){let t=this.transferPipelines[e];return t===void 0&&(t=this.device.createRenderPipeline({label:`mipmap-${e}`,vertex:{module:this.mipmapVertexShaderModule,entryPoint:"main"},fragment:{module:this.mipmapFragmentShaderModule,entryPoint:"main",targets:[{format:e}]},primitive:{topology:Jx.TriangleStrip,stripIndexFormat:e_.Uint32},layout:"auto"}),this.transferPipelines[e]=t),t}getFlipYPipeline(e){let t=this.flipYPipelines[e];return t===void 0&&(t=this.device.createRenderPipeline({label:`flipY-${e}`,vertex:{module:this.mipmapVertexShaderModule,entryPoint:"main"},fragment:{module:this.flipYFragmentShaderModule,entryPoint:"main",targets:[{format:e}]},primitive:{topology:Jx.TriangleStrip,stripIndexFormat:e_.Uint32},layout:"auto"}),this.flipYPipelines[e]=t),t}flipY(e,t,n=0){const r=t.format,{width:a,height:o}=t.size,c=this.getTransferPipeline(r),u=this.getFlipYPipeline(r),f=this.device.createTexture({size:{width:a,height:o,depthOrArrayLayers:1},format:r,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),g=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:af.TwoD,baseArrayLayer:n}),v=f.createView({baseMipLevel:0,mipLevelCount:1,dimension:af.TwoD,baseArrayLayer:0}),M=this.device.createCommandEncoder({}),R=(I,re,ne)=>{const J=I.getBindGroupLayout(0),be=this.device.createBindGroup({layout:J,entries:[{binding:0,resource:this.flipYSampler},{binding:1,resource:re}]}),Re=M.beginRenderPass({colorAttachments:[{view:ne,loadOp:Jc.Clear,storeOp:Nd.Store,clearValue:[0,0,0,0]}]});Re.setPipeline(I),Re.setBindGroup(0,be),Re.draw(4,1,0,0),Re.end()};R(c,g,v),R(u,v,g),this.device.queue.submit([M.finish()]),f.destroy()}generateMipmaps(e,t,n=0,r=null){const a=this.get(e);a.layers===void 0&&(a.layers=[]);const o=a.layers[n]||this._mipmapCreateBundles(e,t,n),c=r||this.device.createCommandEncoder({label:"mipmapEncoder"});this._mipmapRunBundles(c,o),r===null&&this.device.queue.submit([c.finish()]),a.layers[n]=o}_mipmapCreateBundles(e,t,n){const r=this.getTransferPipeline(t.format),a=r.getBindGroupLayout(0);let o=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:af.TwoD,baseArrayLayer:n});const c=[];for(let u=1;u0)for(let o=0,c=r.length;o0)for(let o=0,c=r.length;o0?e.width:n.size.width,g=c>0?e.height:n.size.height;try{u.queue.copyExternalImageToTexture({source:e,flipY:a},{texture:t,mipLevel:c,origin:{x:0,y:0,z:r},premultipliedAlpha:o},{width:f,height:g,depthOrArrayLayers:1})}catch(v){}}_getPassUtils(){let e=this._passUtils;return e===null&&(this._passUtils=e=new z8(this.backend.device)),e}_generateMipmaps(e,t,n=0,r=null){this._getPassUtils().generateMipmaps(e,t,n,r)}_flipY(e,t,n=0){this._getPassUtils().flipY(e,t,n)}_copyBufferToTexture(e,t,n,r,a,o=0,c=0){const u=this.backend.device,f=e.data,g=this._getBytesPerTexel(n.format),v=e.width*g;u.queue.writeTexture({texture:t,mipLevel:c,origin:{x:0,y:0,z:r}},f,{offset:e.width*e.height*g*o,bytesPerRow:v},{width:e.width,height:e.height,depthOrArrayLayers:1}),a===!0&&this._flipY(t,n,r)}_copyCompressedBufferToTexture(e,t,n){const r=this.backend.device,a=this._getBlockData(n.format),o=n.size.depthOrArrayLayers>1;for(let c=0;c]*\s*([a-z_0-9]+(?:<[\s\S]+?>)?)/i,$8=/([a-z_0-9]+)\s*:\s*([a-z_0-9]+(?:<[\s\S]+?>)?)/ig,QU={f32:"float",i32:"int",u32:"uint",bool:"bool","vec2":"vec2","vec2":"ivec2","vec2":"uvec2","vec2":"bvec2",vec2f:"vec2",vec2i:"ivec2",vec2u:"uvec2",vec2b:"bvec2","vec3":"vec3","vec3":"ivec3","vec3":"uvec3","vec3":"bvec3",vec3f:"vec3",vec3i:"ivec3",vec3u:"uvec3",vec3b:"bvec3","vec4":"vec4","vec4":"ivec4","vec4":"uvec4","vec4":"bvec4",vec4f:"vec4",vec4i:"ivec4",vec4u:"uvec4",vec4b:"bvec4","mat2x2":"mat2",mat2x2f:"mat2","mat3x3":"mat3",mat3x3f:"mat3","mat4x4":"mat4",mat4x4f:"mat4",sampler:"sampler",texture_1d:"texture",texture_2d:"texture",texture_2d_array:"texture",texture_multisampled_2d:"cubeTexture",texture_depth_2d:"depthTexture",texture_depth_2d_array:"depthTexture",texture_depth_multisampled_2d:"depthTexture",texture_depth_cube:"depthTexture",texture_depth_cube_array:"depthTexture",texture_3d:"texture3D",texture_cube:"cubeTexture",texture_cube_array:"cubeTexture",texture_storage_1d:"storageTexture",texture_storage_2d:"storageTexture",texture_storage_2d_array:"storageTexture",texture_storage_3d:"storageTexture"},X8=i=>{i=i.trim();const e=i.match(K8);if(e!==null&&e.length===4){const t=e[2],n=[];let r=null;for(;(r=$8.exec(t))!==null;)n.push({name:r[1],type:r[2]});const a=[];for(let g=0;g "+this.outputType:"";return`fn ${e} ( ${this.inputsCode.trim()} ) ${t}`+this.blockCode}}class Y8 extends fU{parseFunction(e){return new j8(e)}}const q8={[Yf.READ_ONLY]:"read",[Yf.WRITE_ONLY]:"write",[Yf.READ_WRITE]:"read_write"},WU={[Yt]:"repeat",[$t]:"clamp",[Ft]:"mirror"},fE={vertex:By.VERTEX,fragment:By.FRAGMENT,compute:By.COMPUTE},ZU={instance:!0,swizzleAssign:!1,storageBuffer:!0},J8={"^^":"tsl_xor"},e9={float:"f32",int:"i32",uint:"u32",bool:"bool",color:"vec3",vec2:"vec2",ivec2:"vec2",uvec2:"vec2",bvec2:"vec2",vec3:"vec3",ivec3:"vec3",uvec3:"vec3",bvec3:"vec3",vec4:"vec4",ivec4:"vec4",uvec4:"vec4",bvec4:"vec4",mat2:"mat2x2",mat3:"mat3x3",mat4:"mat4x4"},KU={},Jb={tsl_xor:new Lf("fn tsl_xor( a : bool, b : bool ) -> bool { return ( a || b ) && !( a && b ); }"),mod_float:new Lf("fn tsl_mod_float( x : f32, y : f32 ) -> f32 { return x - y * floor( x / y ); }"),mod_vec2:new Lf("fn tsl_mod_vec2( x : vec2f, y : vec2f ) -> vec2f { return x - y * floor( x / y ); }"),mod_vec3:new Lf("fn tsl_mod_vec3( x : vec3f, y : vec3f ) -> vec3f { return x - y * floor( x / y ); }"),mod_vec4:new Lf("fn tsl_mod_vec4( x : vec4f, y : vec4f ) -> vec4f { return x - y * floor( x / y ); }"),equals_bool:new Lf("fn tsl_equals_bool( a : bool, b : bool ) -> bool { return a == b; }"),equals_bvec2:new Lf("fn tsl_equals_bvec2( a : vec2f, b : vec2f ) -> vec2 { return vec2( a.x == b.x, a.y == b.y ); }"),equals_bvec3:new Lf("fn tsl_equals_bvec3( a : vec3f, b : vec3f ) -> vec3 { return vec3( a.x == b.x, a.y == b.y, a.z == b.z ); }"),equals_bvec4:new Lf("fn tsl_equals_bvec4( a : vec4f, b : vec4f ) -> vec4 { return vec4( a.x == b.x, a.y == b.y, a.z == b.z, a.w == b.w ); }"),repeatWrapping_float:new Lf("fn tsl_repeatWrapping_float( coord: f32 ) -> f32 { return fract( coord ); }"),mirrorWrapping_float:new Lf("fn tsl_mirrorWrapping_float( coord: f32 ) -> f32 { let mirrored = fract( coord * 0.5 ) * 2.0; return 1.0 - abs( 1.0 - mirrored ); }"),clampWrapping_float:new Lf("fn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }"),biquadraticTexture:new Lf(` +fn tsl_biquadraticTexture( map : texture_2d, coord : vec2f, iRes : vec2u, level : u32 ) -> vec4f { + + let res = vec2f( iRes ); + + let uvScaled = coord * res; + let uvWrapping = ( ( uvScaled % res ) + res ) % res; + + // https://www.shadertoy.com/view/WtyXRy + + let uv = uvWrapping - 0.5; + let iuv = floor( uv ); + let f = fract( uv ); + + let rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, level ); + let rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, level ); + let rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, level ); + let rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, level ); + + return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y ); + +} +`)},t9={dFdx:"dpdx",dFdy:"- dpdy",mod_float:"tsl_mod_float",mod_vec2:"tsl_mod_vec2",mod_vec3:"tsl_mod_vec3",mod_vec4:"tsl_mod_vec4",equals_bool:"tsl_equals_bool",equals_bvec2:"tsl_equals_bvec2",equals_bvec3:"tsl_equals_bvec3",equals_bvec4:"tsl_equals_bvec4",inversesqrt:"inverseSqrt",bitcast:"bitcast",floatpack_snorm_2x16:"pack2x16snorm",floatpack_unorm_2x16:"pack2x16unorm",floatpack_float16_2x16:"pack2x16float",floatunpack_snorm_2x16:"unpack2x16snorm",floatunpack_unorm_2x16:"unpack2x16unorm",floatunpack_float16_2x16:"unpack2x16float"};let $U="";(typeof navigator!="undefined"&&/Firefox|Deno/g.test(navigator.userAgent))!==!0&&($U+=`diagnostic( off, derivative_uniformity ); +`);class n9 extends uU{constructor(e,t){super(e,t,new Y8),this.uniformGroups={},this.builtins={},this.directives={},this.scopedArrays=new Map}_generateTextureSample(e,t,n,r,a,o=this.shaderStage){return o==="fragment"?r?a?`textureSample( ${t}, ${t}_sampler, ${n}, ${r}, ${a} )`:`textureSample( ${t}, ${t}_sampler, ${n}, ${r} )`:a?`textureSample( ${t}, ${t}_sampler, ${n}, ${a} )`:`textureSample( ${t}, ${t}_sampler, ${n} )`:this.generateTextureSampleLevel(e,t,n,"0",r)}generateTextureSampleLevel(e,t,n,r,a,o){return this.isUnfilterable(e)===!1?o?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r}, ${o} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r} )`:this.isFilteredTexture(e)?this.generateFilteredTexture(e,t,n,o,r):this.generateTextureLod(e,t,n,a,o,r)}generateWrapFunction(e){const t=`tsl_coord_${WU[e.wrapS]}S_${WU[e.wrapT]}_${e.is3DTexture||e.isData3DTexture?"3d":"2d"}T`;let n=KU[t];if(n===void 0){const r=[],a=e.is3DTexture||e.isData3DTexture?"vec3f":"vec2f";let o=`fn ${t}( coord : ${a} ) -> ${a} { + + return ${a}( +`;const c=(u,f)=>{u===Yt?(r.push(Jb.repeatWrapping_float),o+=` tsl_repeatWrapping_float( coord.${f} )`):u===$t?(r.push(Jb.clampWrapping_float),o+=` tsl_clampWrapping_float( coord.${f} )`):u===Ft?(r.push(Jb.mirrorWrapping_float),o+=` tsl_mirrorWrapping_float( coord.${f} )`):(o+=` coord.${f}`,Qr(`WebGPURenderer: Unsupported texture wrap type "${u}" for vertex shader.`))};c(e.wrapS,"x"),o+=`, +`,c(e.wrapT,"y"),(e.is3DTexture||e.isData3DTexture)&&(o+=`, +`,c(e.wrapR,"z")),o+=` + ); + +} +`,KU[t]=n=new Lf(o,r)}return n.build(this),t}generateArrayDeclaration(e,t){return`array< ${this.getType(e)}, ${t} >`}generateTextureDimension(e,t,n){const r=this.getDataFromNode(e,this.shaderStage,this.globalCache);r.dimensionsSnippet===void 0&&(r.dimensionsSnippet={});let a=r.dimensionsSnippet[n];if(r.dimensionsSnippet[n]===void 0){let o,c;const{primarySamples:u}=this.renderer.backend.utils.getTextureSampleData(e),f=u>1;e.is3DTexture||e.isData3DTexture?c="vec3":c="vec2",f||e.isStorageTexture?o=t:o=`${t}${n?`, u32( ${n} )`:""}`,a=new cS(new dS(`textureDimensions( ${o} )`,c)),r.dimensionsSnippet[n]=a,(e.isArrayTexture||e.isDataArrayTexture||e.is3DTexture||e.isData3DTexture)&&(r.arrayLayerCount=new cS(new dS(`textureNumLayers(${t})`,"u32"))),e.isTextureCube&&(r.cubeFaceCount=new cS(new dS("6u","u32")))}return a.build(this)}generateFilteredTexture(e,t,n,r,a="0u"){this._include("biquadraticTexture");const o=this.generateWrapFunction(e),c=this.generateTextureDimension(e,t,a);return r&&(n=`${n} + vec2(${r}) / ${c}`),`tsl_biquadraticTexture( ${t}, ${o}( ${n} ), ${c}, u32( ${a} ) )`}generateTextureLod(e,t,n,r,a,o="0u"){const c=this.generateWrapFunction(e),u=this.generateTextureDimension(e,t,o),f=e.is3DTexture||e.isData3DTexture?"vec3":"vec2";a&&(n=`${n} + ${f}(${a}) / ${f}( ${u} )`);const g=`${f}( ${c}( ${n} ) * ${f}( ${u} ) )`;return this.generateTextureLoad(e,t,g,o,r,null)}generateTextureLoad(e,t,n,r,a,o){r===null&&(r="0u"),o&&(n=`${n} + ${o}`);let c;return a?c=`textureLoad( ${t}, ${n}, ${a}, u32( ${r} ) )`:(c=`textureLoad( ${t}, ${n}, u32( ${r} ) )`,this.renderer.backend.compatibilityMode&&e.isDepthTexture&&(c+=".x")),c}generateTextureStore(e,t,n,r,a){let o;return r?o=`textureStore( ${t}, ${n}, ${r}, ${a} )`:o=`textureStore( ${t}, ${n}, ${a} )`,o}isSampleCompare(e){return e.isDepthTexture===!0&&e.compareFunction!==null}isUnfilterable(e){return this.getComponentTypeFromTexture(e)!=="float"||!this.isAvailable("float32Filterable")&&e.isDataTexture===!0&&e.type===pt||this.isSampleCompare(e)===!1&&e.minFilter===xn&&e.magFilter===xn||this.renderer.backend.utils.getTextureSampleData(e).primarySamples>1}generateTexture(e,t,n,r,a,o=this.shaderStage){let c=null;return this.isUnfilterable(e)?c=this.generateTextureLod(e,t,n,r,a,"0",o):c=this._generateTextureSample(e,t,n,r,a,o),c}generateTextureGrad(e,t,n,r,a,o,c=this.shaderStage){if(c==="fragment")return o?`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${r[0]}, ${r[1]}, ${o} )`:`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${r[0]}, ${r[1]} )`;ri(`WebGPURenderer: THREE.TextureNode.gradient() does not support ${c} shader.`)}generateTextureCompare(e,t,n,r,a,o,c=this.shaderStage){if(c==="fragment")return e.isDepthTexture===!0&&e.isArrayTexture===!0?o?`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${a}, ${r}, ${o} )`:`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${a}, ${r} )`:o?`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${r}, ${o} )`:`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${r} )`;ri(`WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${c} shader.`)}generateTextureLevel(e,t,n,r,a,o){return this.isUnfilterable(e)===!1?o?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r}, ${o} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r} )`:this.isFilteredTexture(e)?this.generateFilteredTexture(e,t,n,o,r):this.generateTextureLod(e,t,n,a,o,r)}generateTextureBias(e,t,n,r,a,o,c=this.shaderStage){if(c==="fragment")return o?`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${r}, ${o} )`:`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${r} )`;ri(`WebGPURenderer: THREE.TextureNode.biasNode does not support ${c} shader.`)}getPropertyName(e,t=this.shaderStage){if(e.isNodeVarying===!0&&e.needsInterpolation===!0){if(t==="vertex")return`varyings.${e.name}`}else if(e.isNodeUniform===!0){const n=e.name,r=e.type;return r==="texture"||r==="cubeTexture"||r==="cubeDepthTexture"||r==="storageTexture"||r==="texture3D"?n:r==="buffer"||r==="storageBuffer"||r==="indirectStorageBuffer"?this.isCustomStruct(e)?n:n+".value":e.groupNode.name+"."+n}return super.getPropertyName(e)}getOutputStructName(){return"output"}getFunctionOperator(e){const t=J8[e];return t!==void 0?(this._include(t),t):null}getNodeAccess(e,t){return t!=="compute"?e.isAtomic===!0?(Qr("WebGPURenderer: Atomic operations are only supported in compute shaders."),Yf.READ_WRITE):Yf.READ_ONLY:e.access}getStorageAccess(e,t){return q8[this.getNodeAccess(e,t)]}getUniformFromNode(e,t,n,r=null){const a=super.getUniformFromNode(e,t,n,r),o=this.getDataFromNode(e,n,this.globalCache);if(o.uniformGPU===void 0){let c;const u=e.groupNode,f=u.name,g=this.getBindGroupArray(f,n);if(t==="texture"||t==="cubeTexture"||t==="cubeDepthTexture"||t==="storageTexture"||t==="texture3D"){let v=null;const M=this.getNodeAccess(e,n);if(t==="texture"||t==="storageTexture"?e.value.is3DTexture===!0?v=new lB(a.name,a.node,u,M):v=new lE(a.name,a.node,u,M):t==="cubeTexture"||t==="cubeDepthTexture"?v=new MU(a.name,a.node,u,M):t==="texture3D"&&(v=new lB(a.name,a.node,u,M)),v.store=e.isStorageTextureNode===!0,v.mipLevel=v.store?e.mipLevel:0,v.setVisibility(fE[n]),this.isUnfilterable(e.value)===!1&&v.store===!1){const R=new k8(`${a.name}_sampler`,a.node,u);R.setVisibility(fE[n]),g.push(R,v),c=[R,v]}else g.push(v),c=[v]}else if(t==="buffer"||t==="storageBuffer"||t==="indirectStorageBuffer"){const v=this.getSharedDataFromNode(e);let M=v.buffer;if(M===void 0){const R=t==="buffer"?wU:G8;M=new R(e,u),v.buffer=M}M.setVisibility(M.getVisibility()|fE[n]),g.push(M),c=M,a.name=r||"NodeBuffer_"+a.id}else{const v=this.uniformGroups[n]||(this.uniformGroups[n]={});let M=v[f];M===void 0&&(M=new SU(f,u),M.setVisibility(fE[n]),v[f]=M,g.push(M)),c=this.getNodeUniform(a,t),M.addUniform(c)}o.uniformGPU=c}return a}getBuiltin(e,t,n,r=this.shaderStage){const a=this.builtins[r]||(this.builtins[r]=new Map);return a.has(e)===!1&&a.set(e,{name:e,property:t,type:n}),t}hasBuiltin(e,t=this.shaderStage){return this.builtins[t]!==void 0&&this.builtins[t].has(e)}getVertexIndex(){return this.shaderStage==="vertex"?this.getBuiltin("vertex_index","vertexIndex","u32","attribute"):"vertexIndex"}buildFunctionCode(e){const t=e.layout,n=this.flowShaderNode(e),r=[];for(const o of t.inputs)r.push(o.name+" : "+this.getType(o.type));let a=`fn ${t.name}( ${r.join(", ")} ) -> ${this.getType(t.type)} { +${n.vars} +${n.code} +`;return n.result&&(a+=` return ${n.result}; +`),a+=` +} +`,a}getInstanceIndex(){return this.shaderStage==="vertex"?this.getBuiltin("instance_index","instanceIndex","u32","attribute"):"instanceIndex"}getInvocationLocalIndex(){return this.getBuiltin("local_invocation_index","invocationLocalIndex","u32","attribute")}getSubgroupSize(){return this.enableSubGroups(),this.getBuiltin("subgroup_size","subgroupSize","u32","attribute")}getInvocationSubgroupIndex(){return this.enableSubGroups(),this.getBuiltin("subgroup_invocation_id","invocationSubgroupIndex","u32","attribute")}getSubgroupIndex(){return this.enableSubGroups(),this.getBuiltin("subgroup_id","subgroupIndex","u32","attribute")}getDrawIndex(){return null}getFrontFacing(){return this.getBuiltin("front_facing","isFront","bool")}getFragCoord(){return this.getBuiltin("position","fragCoord","vec4")+".xy"}getFragDepth(){return"output."+this.getBuiltin("frag_depth","depth","f32","output")}getClipDistance(){return"varyings.hw_clip_distances"}isFlipY(){return!1}enableDirective(e,t=this.shaderStage){(this.directives[t]||(this.directives[t]=new Set)).add(e)}getDirectives(e){const t=[],n=this.directives[e];if(n!==void 0)for(const r of n)t.push(`enable ${r};`);return t.join(` +`)}enableSubGroups(){this.enableDirective("subgroups")}enableSubgroupsF16(){this.enableDirective("subgroups-f16")}enableClipDistances(){this.enableDirective("clip_distances")}enableShaderF16(){this.enableDirective("f16")}enableDualSourceBlending(){this.enableDirective("dual_source_blending")}enableHardwareClipping(e){this.enableClipDistances(),this.getBuiltin("clip_distances","hw_clip_distances",`array`,"vertex")}getBuiltins(e){const t=[],n=this.builtins[e];if(n!==void 0)for(const{name:r,property:a,type:o}of n.values())t.push(`@builtin( ${r} ) ${a} : ${o}`);return t.join(`, + `)}getScopedArray(e,t,n,r){return this.scopedArrays.has(e)===!1&&this.scopedArrays.set(e,{name:e,scope:t,bufferType:n,bufferCount:r}),e}getScopedArrays(e){if(e!=="compute")return;const t=[];for(const{name:n,scope:r,bufferType:a,bufferCount:o}of this.scopedArrays.values()){const c=this.getType(a);t.push(`var<${r}> ${n}: array< ${c}, ${o} >;`)}return t.join(` +`)}getAttributes(e){const t=[];if(e==="compute"&&(this.getBuiltin("global_invocation_id","globalId","vec3","attribute"),this.getBuiltin("workgroup_id","workgroupId","vec3","attribute"),this.getBuiltin("local_invocation_id","localId","vec3","attribute"),this.getBuiltin("num_workgroups","numWorkgroups","vec3","attribute"),this.renderer.hasFeature("subgroups")&&(this.enableDirective("subgroups",e),this.getBuiltin("subgroup_size","subgroupSize","u32","attribute"))),e==="vertex"||e==="compute"){const n=this.getBuiltins("attribute");n&&t.push(n);const r=this.getAttributesArray();for(let a=0,o=r.length;a"),t.push(` ${r+n.name} : ${a}`)}return e.output&&t.push(` ${this.getBuiltins("output")}`),t.join(`, +`)}getStructs(e){let t="";const n=this.structs[e];if(n.length>0){const r=[];for(const a of n){let o=`struct ${a.name} { +`;o+=this.getStructMembers(a),o+=` +};`,r.push(o)}t=` +`+r.join(` + +`)+` +`}return t}getVar(e,t,n=null){let r=`var ${t} : `;return n!==null?r+=this.generateArrayDeclaration(e,n):r+=this.getType(e),r}getVars(e){const t=[],n=this.vars[e];if(n!==void 0)for(const r of n)t.push(` ${this.getVar(r.type,r.name,r.count)};`);return` +${t.join(` +`)} +`}getVaryings(e){const t=[];if(e==="vertex"&&this.getBuiltin("position","Vertex","vec4","vertex"),e==="vertex"||e==="fragment"){const a=this.varyings,o=this.vars[e];for(let c=0;cn.value.itemSize;return r&&!a}getUniforms(e){const t=this.uniforms[e],n=[],r=[],a=[],o={};for(const u of t){const f=u.groupNode.name,g=this.bindingsIndexes[f];if(u.type==="texture"||u.type==="cubeTexture"||u.type==="cubeDepthTexture"||u.type==="storageTexture"||u.type==="texture3D"){const v=u.node.value;this.isUnfilterable(v)===!1&&u.node.isStorageTextureNode!==!0&&(this.isSampleCompare(v)?n.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var ${u.name}_sampler : sampler_comparison;`):n.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var ${u.name}_sampler : sampler;`));let M,R="";const{primarySamples:I}=this.renderer.backend.utils.getTextureSampleData(v);if(I>1&&(R="_multisampled"),v.isCubeTexture===!0&&v.isDepthTexture===!0)M="texture_depth_cube";else if(v.isCubeTexture===!0)M="texture_cube";else if(v.isDepthTexture===!0)this.renderer.backend.compatibilityMode&&v.compareFunction===null?M=`texture${R}_2d`:M=`texture_depth${R}_2d${v.isArrayTexture===!0?"_array":""}`;else if(u.node.isStorageTextureNode===!0){const re=gB(v),ne=this.getStorageAccess(u.node,e),J=u.node.value.is3DTexture,be=u.node.value.isArrayTexture;M=`texture_storage_${J?"3d":`2d${be?"_array":""}`}<${re}, ${ne}>`}else if(v.isArrayTexture===!0||v.isDataArrayTexture===!0||v.isCompressedArrayTexture===!0)M="texture_2d_array";else if(v.is3DTexture===!0||v.isData3DTexture===!0)M="texture_3d";else{const re=this.getComponentTypeFromTexture(v).charAt(0);M=`texture${R}_2d<${re}32>`}n.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var ${u.name} : ${M};`)}else if(u.type==="buffer"||u.type==="storageBuffer"||u.type==="indirectStorageBuffer"){const v=u.node,M=this.getType(v.getNodeType(this)),R=v.bufferCount,I=R>0&&u.type==="buffer"?", "+R:"",re=v.isStorageBufferNode?`storage, ${this.getStorageAccess(v,e)}`:"uniform";if(this.isCustomStruct(u))r.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var<${re}> ${u.name} : ${M};`);else{const J=` value : array< ${v.isAtomic?`atomic<${M}>`:`${M}`}${I} >`;r.push(this._getWGSLStructBinding(u.name,J,re,g.binding++,g.group))}}else{const v=this.getType(this.getVectorType(u.type)),M=u.groupNode.name;(o[M]||(o[M]={index:g.binding++,id:g.group,snippets:[]})).snippets.push(` ${u.name} : ${v}`)}}for(const u in o){const f=o[u];a.push(this._getWGSLStructBinding(u,f.snippets.join(`, +`),"uniform",f.index,f.id))}return[...n,...r,...a].join(` +`)}buildCode(){const e=this.material!==null?{fragment:{},vertex:{}}:{compute:{}};this.sortBindingGroups();for(const t in e){this.shaderStage=t;const n=e[t];n.uniforms=this.getUniforms(t),n.attributes=this.getAttributes(t),n.varyings=this.getVaryings(t),n.structs=this.getStructs(t),n.vars=this.getVars(t),n.codes=this.getCodes(t),n.directives=this.getDirectives(t),n.scopedArrays=this.getScopedArrays(t);let r=`// code + +`;r+=this.flowCode[t];const a=this.flowNodes[t],o=a[a.length-1],c=o.outputNode,u=c!==void 0&&c.isOutputStructNode===!0;for(const f of a){const g=this.getFlowData(f),v=f.name;if(v&&(r.length>0&&(r+=` +`),r+=` // flow -> ${v} +`),r+=`${g.code} + `,f===o&&t!=="compute"){if(r+=`// result + + `,t==="vertex")r+=`varyings.Vertex = ${g.result};`;else if(t==="fragment")if(u)n.returnType=c.getNodeType(this),n.structs+="var output : "+n.returnType+";",r+=`return ${g.result};`;else{let M=" @location(0) color: vec4";const R=this.getBuiltins("output");R&&(M+=`, + `+R),n.returnType="OutputStruct",n.structs+=this._getWGSLStruct("OutputStruct",M),n.structs+=` +var output : OutputStruct;`,r+=`output.color = ${g.result}; + + return output;`}}}n.flow=r}if(this.shaderStage=null,this.material!==null)this.vertexShader=this._getWGSLVertexCode(e.vertex),this.fragmentShader=this._getWGSLFragmentCode(e.fragment);else{const t=this.object.workgroupSize;this.computeShader=this._getWGSLComputeCode(e.compute,t)}}getMethod(e,t=null){let n;return t!==null&&(n=this._getWGSLMethod(e+"_"+t)),n===void 0&&(n=this._getWGSLMethod(e)),n||e}getBitcastMethod(e){return`bitcast<${this.getType(e)}>`}getFloatPackingMethod(e){return this.getMethod(`floatpack_${e}_2x16`)}getFloatUnpackingMethod(e){return this.getMethod(`floatunpack_${e}_2x16`)}getTernary(e,t,n){return`select( ${n}, ${t}, ${e} )`}getType(e){return e9[e]||e}isAvailable(e){let t=ZU[e];return t===void 0&&(e==="float32Filterable"?t=this.renderer.hasFeature("float32-filterable"):e==="clipDistance"&&(t=this.renderer.hasFeature("clip-distances")),ZU[e]=t),t}_getWGSLMethod(e){return Jb[e]!==void 0&&this._include(e),t9[e]}_include(e){const t=Jb[e];return t.build(this),this.addInclude(t),t}_getWGSLVertexCode(e){return`${this.getSignature()} +// directives +${e.directives} + +// structs +${e.structs} + +// uniforms +${e.uniforms} + +// varyings +${e.varyings} +var varyings : VaryingsStruct; + +// codes +${e.codes} + +@vertex +fn main( ${e.attributes} ) -> VaryingsStruct { + + // vars + ${e.vars} + + // flow + ${e.flow} + + return varyings; + +} +`}_getWGSLFragmentCode(e){return`${this.getSignature()} +// global +${$U} + +// structs +${e.structs} + +// uniforms +${e.uniforms} + +// codes +${e.codes} + +@fragment +fn main( ${e.varyings} ) -> ${e.returnType} { + + // vars + ${e.vars} + + // flow + ${e.flow} + +} +`}_getWGSLComputeCode(e,t){const[n,r,a]=t;return`${this.getSignature()} +// directives +${e.directives} + +// system +var instanceIndex : u32; + +// locals +${e.scopedArrays} + +// structs +${e.structs} + +// uniforms +${e.uniforms} + +// codes +${e.codes} + +@compute @workgroup_size( ${n}, ${r}, ${a} ) +fn main( ${e.attributes} ) { + + // system + instanceIndex = globalId.x + + globalId.y * ( ${n} * numWorkgroups.x ) + + globalId.z * ( ${n} * numWorkgroups.x ) * ( ${r} * numWorkgroups.y ); + + // vars + ${e.vars} + + // flow + ${e.flow} + +} +`}_getWGSLStruct(e,t){return` +struct ${e} { +${t} +};`}_getWGSLStructBinding(e,t,n,r=0,a=0){const o=e+"Struct";return`${this._getWGSLStruct(o,t)} +@binding( ${r} ) @group( ${a} ) +var<${n}> ${e} : ${o};`}}class r9{constructor(e){this.backend=e}getCurrentDepthStencilFormat(e){let t;return e.depthTexture!==null?t=this.getTextureFormatGPU(e.depthTexture):e.depth&&e.stencil?t=fr.Depth24PlusStencil8:e.depth&&(t=fr.Depth24Plus),t}getTextureFormatGPU(e){return this.backend.get(e).format}getTextureSampleData(e){let t;if(e.isFramebufferTexture)t=1;else if(e.isDepthTexture&&!e.renderTarget){const a=this.backend.renderer,o=a.getRenderTarget();t=o?o.samples:a.currentSamples}else e.renderTarget&&(t=e.renderTarget.samples);t=t||1;const n=t>1&&e.renderTarget!==null&&e.isDepthTexture!==!0&&e.isFramebufferTexture!==!0;return{samples:t,primarySamples:n?1:t,isMSAA:n}}getCurrentColorFormat(e){let t;return e.textures!==null?t=this.getTextureFormatGPU(e.textures[0]):t=this.getPreferredCanvasFormat(),t}getCurrentColorFormats(e){return e.textures!==null?e.textures.map(t=>this.getTextureFormatGPU(t)):[this.getPreferredCanvasFormat()]}getCurrentColorSpace(e){return e.textures!==null?e.textures[0].colorSpace:this.backend.renderer.outputColorSpace}getPrimitiveTopology(e,t){if(e.isPoints)return Jx.PointList;if(e.isLineSegments||e.isMesh&&t.wireframe===!0)return Jx.LineList;if(e.isLine)return Jx.LineStrip;if(e.isMesh)return Jx.TriangleList}getSampleCount(e){return e>=4?4:1}getSampleCountRenderContext(e){return e.textures!==null?this.getSampleCount(e.sampleCount):this.getSampleCount(this.backend.renderer.currentSamples)}getPreferredCanvasFormat(){const t=this.backend.parameters.outputType;if(t===void 0)return navigator.gpu.getPreferredCanvasFormat();if(t===gs)return fr.BGRA8Unorm;if(t===zt)return fr.RGBA16Float;throw new Error("Unsupported output buffer type.")}}const XU=new Map([[Int8Array,["sint8","snorm8"]],[Uint8Array,["uint8","unorm8"]],[Int16Array,["sint16","snorm16"]],[Uint16Array,["uint16","unorm16"]],[Int32Array,["sint32","snorm32"]],[Uint32Array,["uint32","unorm32"]],[Float32Array,["float32"]]]);typeof Float16Array!="undefined"&&XU.set(Float16Array,["float16"]);const i9=new Map([[M0,["float16"]]]),s9=new Map([[Int32Array,"sint32"],[Int16Array,"sint32"],[Uint32Array,"uint32"],[Uint16Array,"uint32"],[Float32Array,"float32"]]);class a9{constructor(e){this.backend=e}createAttribute(e,t){const n=this._getBufferAttribute(e),r=this.backend,a=r.get(n);let o=a.buffer;if(o===void 0){const c=r.device;let u=n.array;if(e.normalized===!1){if(u.constructor===Int16Array||u.constructor===Int8Array)u=new Int32Array(u);else if((u.constructor===Uint16Array||u.constructor===Uint8Array)&&(u=new Uint32Array(u),t&GPUBufferUsage.INDEX))for(let v=0;v0&&(o.groups===void 0&&(o.groups=[],o.versions=[]),o.versions[n]===r&&(u=o.groups[n])),u===void 0&&(u=this.createBindGroup(e,c),n>0&&(o.groups[n]=u,o.versions[n]=r)),o.group=u}updateBinding(e){const t=this.backend,n=t.device,r=e.buffer,a=t.get(e).buffer,o=e.updateRanges;if(o.length===0)n.queue.writeBuffer(a,0,r,0);else{const c=bc(r),u=c?1:r.BYTES_PER_ELEMENT;for(let f=0,g=o.length;f1&&(M+=`-${u.texture.depthOrArrayLayers}`),M+=`-${g}-${v}`,f=u[M],f===void 0){const R=O8.All;let I;c.isSampledCubeTexture?I=af.Cube:c.isSampledTexture3D?I=af.ThreeD:c.texture.isArrayTexture||c.texture.isDataArrayTexture||c.texture.isCompressedArrayTexture?I=af.TwoDArray:I=af.TwoD,f=u[M]=u.texture.createView({aspect:R,dimension:I,mipLevelCount:g,baseMipLevel:v})}}o.push({binding:a,resource:f})}else if(c.isSampler){const u=n.get(c.texture);o.push({binding:a,resource:u.sampler})}a++}return r.createBindGroup({label:"bindGroup_"+e.name,layout:t,entries:o})}_createLayoutEntries(e){const t=[];let n=0;for(const r of e.bindings){const a=this.backend,o={binding:n,visibility:r.visibility};if(r.isUniformBuffer||r.isStorageBuffer){const c={};r.isStorageBuffer&&(r.visibility&By.COMPUTE&&(r.access===Yf.READ_WRITE||r.access===Yf.WRITE_ONLY)?c.type=dB.Storage:c.type=dB.ReadOnlyStorage),o.buffer=c}else if(r.isSampledTexture&&r.store){const c={};c.format=this.backend.get(r.texture).texture.format;const u=r.access;u===Yf.READ_WRITE?c.access=AB.ReadWrite:u===Yf.WRITE_ONLY?c.access=AB.WriteOnly:c.access=AB.ReadOnly,r.texture.isArrayTexture?c.viewDimension=af.TwoDArray:r.texture.is3DTexture&&(c.viewDimension=af.ThreeD),o.storageTexture=c}else if(r.isSampledTexture){const c={},{primarySamples:u}=a.utils.getTextureSampleData(r.texture);if(u>1&&(c.multisampled=!0,r.texture.isDepthTexture||(c.sampleType=Iy.UnfilterableFloat)),r.texture.isDepthTexture)a.compatibilityMode&&r.texture.compareFunction===null?c.sampleType=Iy.UnfilterableFloat:c.sampleType=Iy.Depth;else if(r.texture.isDataTexture||r.texture.isDataArrayTexture||r.texture.isData3DTexture){const f=r.texture.type;f===jt?c.sampleType=Iy.SInt:f===ct?c.sampleType=Iy.UInt:f===pt&&(this.backend.hasFeature("float32-filterable")?c.sampleType=Iy.Float:c.sampleType=Iy.UnfilterableFloat)}r.isSampledCubeTexture?c.viewDimension=af.Cube:r.texture.isArrayTexture||r.texture.isDataArrayTexture||r.texture.isCompressedArrayTexture?c.viewDimension=af.TwoDArray:r.isSampledTexture3D&&(c.viewDimension=af.ThreeD),o.texture=c}else if(r.isSampler){const c={};r.texture.isDepthTexture&&(r.texture.compareFunction!==null?c.type=HU.Comparison:a.compatibilityMode&&(c.type=HU.NonFiltering)),o.sampler=c}else ri(`WebGPUBindingUtils: Unsupported binding "${r}".`);t.push(o),n++}return t}deleteBindGroupData(e){const{backend:t}=this,n=t.get(e);n.layout&&(n.layout.usedTimes--,n.layout.usedTimes===0&&this._bindGroupLayoutCache.delete(n.layoutKey),n.layout=void 0,n.layoutKey=void 0)}dispose(){this._bindGroupLayoutCache.clear()}}class c9{constructor(e){this.backend=e,this._activePipelines=new WeakMap}setPipeline(e,t){this._activePipelines.get(e)!==t&&(e.setPipeline(t),this._activePipelines.set(e,t))}_getSampleCount(e){return this.backend.utils.getSampleCountRenderContext(e)}createRenderPipeline(e,t){const{object:n,material:r,geometry:a,pipeline:o}=e,{vertexProgram:c,fragmentProgram:u}=o,f=this.backend,g=f.device,v=f.utils,M=f.get(o),R=[];for(const br of e.getBindings()){const kr=f.get(br),{layoutGPU:qr}=kr.layout;R.push(qr)}const I=f.attributeUtils.createShaderVertexBuffers(e);let re;r.blending!==Me&&(r.blending!==_e||r.transparent!==!1)&&(re=this._getBlending(r));let ne={};r.stencilWrite===!0&&(ne={compare:this._getStencilCompare(r),failOp:this._getStencilOperation(r.stencilFail),depthFailOp:this._getStencilOperation(r.stencilZFail),passOp:this._getStencilOperation(r.stencilZPass)});const J=this._getColorWriteMask(r),be=[];if(e.context.textures!==null){const br=e.context.textures;for(let kr=0;kr1},layout:g.createPipelineLayout({bindGroupLayouts:R})},mt={},En=e.context.depth,vr=e.context.stencil;if((En===!0||vr===!0)&&(En===!0&&(mt.format=dt,mt.depthWriteEnabled=r.depthWrite,mt.depthCompare=et),vr===!0&&(mt.stencilFront=ne,mt.stencilBack={},mt.stencilReadMask=r.stencilFuncMask,mt.stencilWriteMask=r.stencilWriteMask),r.polygonOffset===!0&&(mt.depthBias=r.polygonOffsetUnits,mt.depthBiasSlopeScale=r.polygonOffsetFactor,mt.depthBiasClamp=0),nt.depthStencil=mt),g.pushErrorScope("validation"),t===null)M.pipeline=g.createRenderPipeline(nt),g.popErrorScope().then(br=>{br!==null&&(M.error=!0,ri(br.message))});else{const br=new Promise(kr=>lo(this,null,function*(){try{M.pipeline=yield g.createRenderPipelineAsync(nt)}catch(jr){}const qr=yield g.popErrorScope();qr!==null&&(M.error=!0,ri(qr.message)),kr()}));t.push(br)}}createBundleEncoder(e,t="renderBundleEncoder"){const n=this.backend,{utils:r,device:a}=n,o=r.getCurrentDepthStencilFormat(e),c=r.getCurrentColorFormats(e),u=this._getSampleCount(e),f={label:t,colorFormats:c,depthStencilFormat:o,sampleCount:u};return a.createRenderBundleEncoder(f)}createComputePipeline(e,t){const n=this.backend,r=n.device,a=n.get(e.computeProgram).module,o=n.get(e),c=[];for(const u of t){const f=n.get(u),{layoutGPU:g}=f.layout;c.push(g)}o.pipeline=r.createComputePipeline({compute:a,layout:r.createPipelineLayout({bindGroupLayouts:c})})}_getBlending(e){let t,n;const r=e.blending,a=e.blendSrc,o=e.blendDst,c=e.blendEquation;if(r===ft){const u=e.blendSrcAlpha!==null?e.blendSrcAlpha:a,f=e.blendDstAlpha!==null?e.blendDstAlpha:o,g=e.blendEquationAlpha!==null?e.blendEquationAlpha:c;t={srcFactor:this._getBlendFactor(a),dstFactor:this._getBlendFactor(o),operation:this._getBlendOperation(c)},n={srcFactor:this._getBlendFactor(u),dstFactor:this._getBlendFactor(f),operation:this._getBlendOperation(g)}}else{const u=e.premultipliedAlpha,f=(g,v,M,R)=>{t={srcFactor:g,dstFactor:v,operation:Py.Add},n={srcFactor:M,dstFactor:R,operation:Py.Add}};if(u)switch(r){case _e:f(ic.One,ic.OneMinusSrcAlpha,ic.One,ic.OneMinusSrcAlpha);break;case Ce:f(ic.One,ic.One,ic.One,ic.One);break;case Xe:f(ic.Zero,ic.OneMinusSrc,ic.Zero,ic.One);break;case Fe:f(ic.Dst,ic.OneMinusSrcAlpha,ic.Zero,ic.One);break}else switch(r){case _e:f(ic.SrcAlpha,ic.OneMinusSrcAlpha,ic.One,ic.OneMinusSrcAlpha);break;case Ce:f(ic.SrcAlpha,ic.One,ic.One,ic.One);break;case Xe:ri("WebGPURenderer: SubtractiveBlending requires material.premultipliedAlpha = true");break;case Fe:ri("WebGPURenderer: MultiplyBlending requires material.premultipliedAlpha = true");break}}if(t!==void 0&&n!==void 0)return{color:t,alpha:n};ri("WebGPURenderer: Invalid blending: ",r)}_getBlendFactor(e){let t;switch(e){case Ot:t=ic.Zero;break;case jn:t=ic.One;break;case rr:t=ic.Src;break;case kn:t=ic.OneMinusSrc;break;case Kn:t=ic.SrcAlpha;break;case _r:t=ic.OneMinusSrcAlpha;break;case Ke:t=ic.Dst;break;case Rt:t=ic.OneMinusDst;break;case bn:t=ic.DstAlpha;break;case Cr:t=ic.OneMinusDstAlpha;break;case Qn:t=ic.SrcAlphaSaturated;break;case HG:t=ic.Constant;break;case GG:t=ic.OneMinusConstant;break;default:ri("WebGPURenderer: Blend factor not supported.",e)}return t}_getStencilCompare(e){let t;const n=e.stencilFunc;switch(n){case cf:t=nd.Never;break;case nu:t=nd.Always;break;case Zh:t=nd.Less;break;case kc:t=nd.LessEqual;break;case Lh:t=nd.Equal;break;case Of:t=nd.GreaterEqual;break;case yl:t=nd.Greater;break;case xl:t=nd.NotEqual;break;default:ri("WebGPURenderer: Invalid stencil function.",n)}return t}_getStencilOperation(e){let t;switch(e){case Du:t=Tv.Keep;break;case Sf:t=Tv.Zero;break;case ju:t=Tv.Replace;break;case Po:t=Tv.Invert;break;case pu:t=Tv.IncrementClamp;break;case $c:t=Tv.DecrementClamp;break;case lf:t=Tv.IncrementWrap;break;case Nh:t=Tv.DecrementWrap;break;default:ri("WebGPURenderer: Invalid stencil operation.",t)}return t}_getBlendOperation(e){let t;switch(e){case _t:t=Py.Add;break;case lt:t=Py.Subtract;break;case Vt:t=Py.ReverseSubtract;break;case It:t=Py.Min;break;case Fn:t=Py.Max;break;default:ri("WebGPUPipelineUtils: Blend equation not supported.",e)}return t}_getPrimitiveState(e,t,n){const r={},a=this.backend.utils;r.topology=a.getPrimitiveTopology(e,n),t.index!==null&&e.isLine===!0&&e.isLineSegments!==!0&&(r.stripIndexFormat=t.index.array instanceof Uint16Array?e_.Uint16:e_.Uint32);let o=n.side===fe;return e.isMesh&&e.matrixWorld.determinant()<0&&(o=!o),r.frontFace=o===!0?OU.CW:OU.CCW,r.cullMode=n.side===ue?kU.None:kU.Back,r}_getColorWriteMask(e){return e.colorWrite===!0?VU.All:VU.None}_getDepthCompare(e){let t;if(e.depthTest===!1)t=nd.Always;else{const n=e.depthFunc;switch(n){case Tt:t=nd.Never;break;case Mt:t=nd.Always;break;case ge:t=nd.Less;break;case pe:t=nd.LessEqual;break;case De:t=nd.Equal;break;case Ht:t=nd.GreaterEqual;break;case Jt:t=nd.Greater;break;case At:t=nd.NotEqual;break;default:ri("WebGPUPipelineUtils: Invalid depth function.",n)}}return t}}class u9 extends UU{constructor(e,t,n=2048){super(n),this.device=e,this.type=t,this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxQueries,label:`queryset_global_timestamp_${t}`});const r=this.maxQueries*8;this.resolveBuffer=this.device.createBuffer({label:`buffer_timestamp_resolve_${t}`,size:r,usage:GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC}),this.resultBuffer=this.device.createBuffer({label:`buffer_timestamp_result_${t}`,size:r,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ})}allocateQueriesForContext(e){if(!this.trackTimestamp||this.isDisposed)return null;if(this.currentQueryIndex+2>this.maxQueries)return Za(`WebGPUTimestampQueryPool [${this.type}]: Maximum number of queries exceeded, when using trackTimestamp it is necessary to resolves the queries via renderer.resolveTimestampsAsync( THREE.TimestampQuery.${this.type.toUpperCase()} ).`),null;const t=this.currentQueryIndex;return this.currentQueryIndex+=2,this.queryOffsets.set(e,t),t}resolveQueriesAsync(){return lo(this,null,function*(){if(!this.trackTimestamp||this.currentQueryIndex===0||this.isDisposed)return this.lastValue;if(this.pendingResolve)return this.pendingResolve;this.pendingResolve=this._resolveQueries();try{return yield this.pendingResolve}finally{this.pendingResolve=null}})}_resolveQueries(){return lo(this,null,function*(){if(this.isDisposed)return this.lastValue;try{if(this.resultBuffer.mapState!=="unmapped")return this.lastValue;const e=new Map(this.queryOffsets),t=this.currentQueryIndex,n=t*8;this.currentQueryIndex=0,this.queryOffsets.clear();const r=this.device.createCommandEncoder();r.resolveQuerySet(this.querySet,0,t,this.resolveBuffer,0),r.copyBufferToBuffer(this.resolveBuffer,0,this.resultBuffer,0,n);const a=r.finish();if(this.device.queue.submit([a]),this.resultBuffer.mapState!=="unmapped")return this.lastValue;if(yield this.resultBuffer.mapAsync(GPUMapMode.READ,0,n),this.isDisposed)return this.resultBuffer.mapState==="mapped"&&this.resultBuffer.unmap(),this.lastValue;const o=new BigUint64Array(this.resultBuffer.getMappedRange(0,n)),c={},u=[];for(const[g,v]of e){const M=g.match(/^(.*):f(\d+)$/),R=parseInt(M[2]);u.includes(R)===!1&&u.push(R),c[R]===void 0&&(c[R]=0);const I=o[v],re=o[v+1],ne=Number(re-I)/1e6;this.timestamps.set(g,ne),c[R]+=ne}const f=c[u[u.length-1]];return this.resultBuffer.unmap(),this.lastValue=f,this.frames=u,f}catch(e){return ri("Error resolving queries:",e),this.resultBuffer.mapState==="mapped"&&this.resultBuffer.unmap(),this.lastValue}})}dispose(){return lo(this,null,function*(){if(!this.isDisposed){if(this.isDisposed=!0,this.pendingResolve)try{yield this.pendingResolve}catch(e){ri("Error waiting for pending resolve:",e)}if(this.resultBuffer&&this.resultBuffer.mapState==="mapped")try{this.resultBuffer.unmap()}catch(e){ri("Error unmapping buffer:",e)}this.querySet&&(this.querySet.destroy(),this.querySet=null),this.resolveBuffer&&(this.resolveBuffer.destroy(),this.resolveBuffer=null),this.resultBuffer&&(this.resultBuffer.destroy(),this.resultBuffer=null),this.queryOffsets.clear(),this.pendingResolve=null}})}}class mB extends IU{constructor(e={}){super(e),this.isWebGPUBackend=!0,this.parameters.alpha=e.alpha===void 0?!0:e.alpha,this.parameters.compatibilityMode=e.compatibilityMode===void 0?!1:e.compatibilityMode,this.parameters.requiredLimits=e.requiredLimits===void 0?{}:e.requiredLimits,this.compatibilityMode=this.parameters.compatibilityMode,this.device=null,this.defaultRenderPassdescriptor=null,this.utils=new r9(this),this.attributeUtils=new a9(this),this.bindingUtils=new l9(this),this.pipelineUtils=new c9(this),this.textureUtils=new Z8(this),this.occludedResolveCache=new Map}init(e){return lo(this,null,function*(){yield w3(mB.prototype,this,"init").call(this,e);const t=this.parameters;let n;if(t.device===void 0){const r={powerPreference:t.powerPreference,featureLevel:t.compatibilityMode?"compatibility":void 0},a=typeof navigator!="undefined"?yield navigator.gpu.requestAdapter(r):null;if(a===null)throw new Error("WebGPUBackend: Unable to create WebGPU adapter.");const o=Object.values(pB),c=[];for(const f of o)a.features.has(f)&&c.push(f);const u={requiredFeatures:c,requiredLimits:t.requiredLimits};n=yield a.requestDevice(u)}else n=t.device;n.lost.then(r=>{if(r.reason==="destroyed")return;const a={api:"WebGPU",message:r.message||"Unknown reason",reason:r.reason||null,originalEvent:r};e.onDeviceLost(a)}),this.device=n,this.trackTimestamp=this.trackTimestamp&&this.hasFeature(pB.TimestampQuery),this.updateSize()})}get context(){const e=this.renderer.getCanvasTarget(),t=this.get(e);let n=t.context;if(n===void 0){const r=this.parameters;e.isDefaultCanvasTarget===!0&&r.context!==void 0?n=r.context:n=e.domElement.getContext("webgpu"),"setAttribute"in e.domElement&&e.domElement.setAttribute("data-engine",`three.js r${m} webgpu`);const a=r.alpha?"premultiplied":"opaque",o=r.outputType===zt?"extended":"standard";n.configure({device:this.device,format:this.utils.getPreferredCanvasFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,alphaMode:a,toneMapping:{mode:o}}),t.context=n}return n}get coordinateSystem(){return Bl}getArrayBufferAsync(e){return lo(this,null,function*(){return yield this.attributeUtils.getArrayBufferAsync(e)})}getContext(){return this.context}_getDefaultRenderPassDescriptor(){const e=this.renderer,t=e.getCanvasTarget(),n=this.get(t),r=e.currentSamples;let a=n.descriptor;if(a===void 0||n.samples!==r){a={colorAttachments:[{view:null}]},(e.depth===!0||e.stencil===!0)&&(a.depthStencilAttachment={view:this.textureUtils.getDepthBuffer(e.depth,e.stencil).createView()});const c=a.colorAttachments[0];r>0?c.view=this.textureUtils.getColorBuffer().createView():c.resolveTarget=void 0,n.descriptor=a,n.samples=r}const o=a.colorAttachments[0];return r>0?o.resolveTarget=this.context.getCurrentTexture().createView():o.view=this.context.getCurrentTexture().createView(),a}_isRenderCameraDepthArray(e){return e.depthTexture&&e.depthTexture.image.depth>1&&e.camera.isArrayCamera}_getRenderPassDescriptor(e,t={}){const n=e.renderTarget,r=this.get(n);let a=r.descriptors;(a===void 0||r.width!==n.width||r.height!==n.height||r.samples!==n.samples)&&(a={},r.descriptors=a);const o=e.getCacheKey();let c=a[o];if(c===void 0){const f=e.textures,g=[];let v;const M=this._isRenderCameraDepthArray(e);for(let R=0;R1)if(M===!0){const ne=e.camera.cameras;for(let J=0;J0&&(t.currentOcclusionQuerySet&&t.currentOcclusionQuerySet.destroy(),t.currentOcclusionQueryBuffer&&t.currentOcclusionQueryBuffer.destroy(),t.currentOcclusionQuerySet=t.occlusionQuerySet,t.currentOcclusionQueryBuffer=t.occlusionQueryBuffer,t.currentOcclusionQueryObjects=t.occlusionQueryObjects,a=n.createQuerySet({type:"occlusion",count:r,label:`occlusionQuerySet_${e.id}`}),t.occlusionQuerySet=a,t.occlusionQueryIndex=0,t.occlusionQueryObjects=new Array(r),t.lastOcclusionObject=null);let o;e.textures===null?o=this._getDefaultRenderPassDescriptor():o=this._getRenderPassDescriptor(e,{loadOp:Jc.Load}),this.initTimestampQuery(ac.RENDER,this.getTimestampUID(e),o),o.occlusionQuerySet=a;const c=o.depthStencilAttachment;if(e.textures!==null){const f=o.colorAttachments;for(let g=0;g0&&t.currentPass.executeBundles(t.renderBundles),n>t.occlusionQueryIndex&&t.currentPass.endOcclusionQuery();const r=t.encoder;if(this._isRenderCameraDepthArray(e)===!0){const a=[];for(let o=0;o0){const a=n*8;let o=this.occludedResolveCache.get(a);o===void 0&&(o=this.device.createBuffer({size:a,usage:GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC}),this.occludedResolveCache.set(a,o));const c=this.device.createBuffer({size:a,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});t.encoder.resolveQuerySet(t.occlusionQuerySet,0,n,o,0),t.encoder.copyBufferToBuffer(o,0,c,0,a),t.occlusionQueryBuffer=c,this.resolveOccludedAsync(e)}if(this.device.queue.submit([t.encoder.finish()]),e.textures!==null){const a=e.textures;for(let o=0;oR&&(a[0]=Math.min(M,R),a[1]=Math.ceil(M/R)),o.dispatchSize=a}a=o.dispatchSize}c.dispatchWorkgroups(a[0],a[1]||1,a[2]||1)}finishCompute(e){const t=this.get(e);t.passEncoderGPU.end(),this.device.queue.submit([t.cmdEncoderGPU.finish()])}draw(e,t){const{object:n,material:r,context:a,pipeline:o}=e,c=e.getBindings(),u=this.get(a),f=this.get(o),g=f.pipeline;if(f.error===!0)return;const v=e.getIndex(),M=v!==null,R=e.getDrawParameters();if(R===null)return;const I=(ne,J)=>{this.pipelineUtils.setPipeline(ne,g),J.pipeline=g;const be=J.bindingGroups;for(let ze=0,st=c.length;ze{if(I(ne,J),n.isBatchedMesh===!0){const be=n._multiDrawStarts,Re=n._multiDrawCounts,ze=n._multiDrawCount,st=n._multiDrawInstances;st!==null&&Za("WebGPUBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.");for(let et=0;et1?0:et;M===!0?ne.drawIndexed(Re[et],dt,be[et]/v.array.BYTES_PER_ELEMENT,0,Nt):ne.draw(Re[et],dt,be[et],Nt),t.update(n,Re[et],dt)}}else if(M===!0){const{vertexCount:be,instanceCount:Re,firstVertex:ze}=R,st=e.getIndirect();if(st!==null){const et=this.get(st).buffer,dt=e.getIndirectOffset(),Nt=Array.isArray(dt)?dt:[dt];for(let nt=0;nt0){const ne=this.get(e.camera),J=e.camera.cameras,be=e.getBindingGroup("cameraIndex");if(ne.indexesGPU===void 0||ne.indexesGPU.length!==J.length){const ze=this.get(be),st=[],et=new Uint32Array([0,0,0,0]);for(let dt=0,Nt=J.length;dt(Qr("WebGPURenderer: WebGPU is not available, running under WebGL2 backend."),new DU(e)));const n=new t(e);super(n,e),this.library=new d9,this.isWebGPURenderer=!0,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}}class Sj extends null{constructor(){super(),this.isBundleGroup=!0,this.type="BundleGroup",this.static=!0,this.version=0}set needsUpdate(e){e===!0&&this.version++}}class Ej{constructor(e,t=Sa(0,0,1,1)){this.renderer=e,this.outputNode=t,this.outputColorTransform=!0,this.needsUpdate=!0;const n=new fh;n.name="PostProcessing",this._quadMesh=new kb(n),this._quadMesh.name="Post-Processing",this._context=null}render(){const e=this.renderer;this._update(),this._context.onBeforePostProcessing!==null&&this._context.onBeforePostProcessing();const t=e.toneMapping,n=e.outputColorSpace;e.toneMapping=NoToneMapping,e.outputColorSpace=ColorManagement.workingColorSpace;const r=e.xr.enabled;e.xr.enabled=!1,this._quadMesh.render(e),e.xr.enabled=r,e.toneMapping=t,e.outputColorSpace=n,this._context.onAfterPostProcessing!==null&&this._context.onAfterPostProcessing()}get context(){return this._context}dispose(){this._quadMesh.material.dispose()}_update(){if(this.needsUpdate===!0){const e=this.renderer,t=e.toneMapping,n=e.outputColorSpace,r={postProcessing:this,onBeforePostProcessing:null,onAfterPostProcessing:null};let a=this.outputNode;this.outputColorTransform===!0?(a=a.context(r),a=ET(a,t,n)):(r.toneMapping=t,r.outputColorSpace=n,a=a.context(r)),this._context=r,this._quadMesh.material.fragmentNode=a,this._quadMesh.material.needsUpdate=!0,this.needsUpdate=!1}}renderAsync(){return lo(this,null,function*(){warnOnce('PostProcessing: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.'),yield this.renderer.init(),this.render()})}}class Mj extends null{constructor(e=1,t=1){super(),this.image={width:e,height:t},this.magFilter=LinearFilter,this.minFilter=LinearFilter,this.isStorageTexture=!0,this.mipmapsAutoUpdate=!0}setSize(e,t){(this.image.width!==e||this.image.height!==t)&&(this.image.width=e,this.image.height=t,this.dispose())}}class Tj extends null{constructor(e=1,t=1,n=1){super(),this.isArrayTexture=!1,this.image={width:e,height:t,depth:n},this.magFilter=LinearFilter,this.minFilter=LinearFilter,this.wrapR=ClampToEdgeWrapping,this.isStorageTexture=!0,this.is3DTexture=!0}setSize(e,t,n){(this.image.width!==e||this.image.height!==t||this.image.depth!==n)&&(this.image.width=e,this.image.height=t,this.image.depth=n,this.dispose())}}class Cj extends null{constructor(e=1,t=1,n=1){super(),this.isArrayTexture=!0,this.image={width:e,height:t,depth:n},this.magFilter=LinearFilter,this.minFilter=LinearFilter,this.isStorageTexture=!0}setSize(e,t,n){(this.image.width!==e||this.image.height!==t||this.image.depth!==n)&&(this.image.width=e,this.image.height=t,this.image.depth=n,this.dispose())}}class Bj extends null{constructor(e,t){super(e,t,Uint32Array),this.isIndirectStorageBufferAttribute=!0}}class p9 extends null{constructor(e){super(e),this.textures={},this.nodes={}}load(e,t,n,r){const a=new FileLoader(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,o=>{try{t(this.parse(JSON.parse(o)))}catch(c){r?r(c):error(c),this.manager.itemError(e)}},n,r)}parseNodes(e){const t={};if(e!==void 0){for(const r of e){const{uuid:a,type:o}=r;t[a]=this.createNodeFromType(o),t[a].uuid=a}const n={nodes:t,textures:this.textures};for(const r of e)r.meta=n,t[r.uuid].deserialize(r),delete r.meta}return t}parse(e){const t=this.createNodeFromType(e.type);t.uuid=e.uuid;const r={nodes:this.parseNodes(e.nodes),textures:this.textures};return e.meta=r,t.deserialize(e),delete e.meta,t}setTextures(e){return this.textures=e,this}setNodes(e){return this.nodes=e,this}createNodeFromType(e){return this.nodes[e]===void 0?(error("NodeLoader: Node type not found:",e),nn()):new this.nodes[e]}}class g9 extends null{constructor(e){super(e),this.nodes={},this.nodeMaterials={}}parse(e){const t=super.parse(e),n=this.nodes,r=e.inputNodes;for(const a in r){const o=r[a];t[a]=n[o]}return t}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}createMaterialFromType(e){const t=this.nodeMaterials[e];return t!==void 0?new t:super.createMaterialFromType(e)}}class Rj extends null{constructor(e){super(e),this.nodes={},this.nodeMaterials={},this._nodesJSON=null}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}parse(e,t){this._nodesJSON=e.nodes;const n=super.parse(e,t);return this._nodesJSON=null,n}parseNodes(e,t){if(e!==void 0){const n=new p9;return n.setNodes(this.nodes),n.setTextures(t),n.parseNodes(e)}return{}}parseMaterials(e,t){const n={};if(e!==void 0){const r=this.parseNodes(this._nodesJSON,t),a=new g9;a.setTextures(t),a.setNodes(r),a.setNodeMaterials(this.nodeMaterials);for(let o=0,c=e.length;ojU&&(this.dispatchEvent(vB),this._lastPosition.copy(this.object.position))):this.object.isOrthographicCamera?(this.object.lookAt(this.target),(this._lastPosition.distanceToSquared(this.object.position)>jU||this._lastZoom!==this.object.zoom)&&(this.dispatchEvent(vB),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type.")}reset(){this.state=eu.NONE,this.keyState=eu.NONE,this.target.copy(this._target0),this.object.position.copy(this._position0),this.object.up.copy(this._up0),this.object.zoom=this._zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(vB),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom}_panCamera(){if(Cv.copy(this._panEnd).sub(this._panStart),Cv.lengthSq()){if(this.object.isOrthographicCamera){const e=(this.object.right-this.object.left)/this.object.zoom/this.domElement.clientWidth,t=(this.object.top-this.object.bottom)/this.object.zoom/this.domElement.clientWidth;Cv.x*=e,Cv.y*=t}Cv.multiplyScalar(this._eye.length()*this.panSpeed),AE.copy(this._eye).cross(this.object.up).setLength(Cv.x),AE.add(m9.copy(this.object.up).setLength(Cv.y)),this.object.position.add(AE),this.target.add(AE),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(Cv.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}}_rotateCamera(){gE.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0);let e=gE.length();e?(this._eye.copy(this.object.position).sub(this.target),YU.copy(this._eye).normalize(),pE.copy(this.object.up).normalize(),bB.crossVectors(pE,YU).normalize(),pE.setLength(this._moveCurr.y-this._movePrev.y),bB.setLength(this._moveCurr.x-this._movePrev.x),gE.copy(pE.add(bB)),_B.crossVectors(gE,this._eye).normalize(),e*=this.rotateSpeed,t_.setFromAxisAngle(_B,e),this._eye.applyQuaternion(t_),this.object.up.applyQuaternion(t_),this._lastAxis.copy(_B),this._lastAngle=e):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),t_.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(t_),this.object.up.applyQuaternion(t_)),this._movePrev.copy(this._moveCurr)}_zoomCamera(){let e;this.state===eu.TOUCH_ZOOM_PAN?(e=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(e):this.object.isOrthographicCamera?(this.object.zoom=xe.clamp(this.object.zoom/e,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")):(e=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,e!==1&&e>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(e):this.object.isOrthographicCamera?(this.object.zoom=xe.clamp(this.object.zoom/e,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor)}_getMouseOnScreen(e,t){return dE.set((e-this.screen.left)/this.screen.width,(t-this.screen.top)/this.screen.height),dE}_getMouseOnCircle(e,t){return dE.set((e-this.screen.width*.5-this.screen.left)/(this.screen.width*.5),(this.screen.height+2*(this.screen.top-t))/this.screen.width),dE}_addPointer(e){this._pointers.push(e)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;tthis.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()Math.PI&&(n-=aA),r<-Math.PI?r+=aA:r>Math.PI&&(r-=aA),n<=r?this._spherical.theta=Math.max(n,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+r)/2?Math.max(n,this._spherical.theta):Math.min(r,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const o=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),a=o!=this._spherical.radius}if(wf.setFromSpherical(this._spherical),wf.applyQuaternion(this._quatInverse),t.copy(this.target).add(wf),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let o=null;if(this.object.isPerspectiveCamera){const c=wf.length();o=this._clampDistance(c*this._scale);const u=c-o;this.object.position.addScaledVector(this._dollyDirection,u),this.object.updateMatrixWorld(),a=!!u}else if(this.object.isOrthographicCamera){const c=new ce(this._mouse.x,this._mouse.y,0);c.unproject(this.object);const u=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),a=u!==this.object.zoom;const f=new ce(this._mouse.x,this._mouse.y,0);f.unproject(this.object),this.object.position.sub(f).add(c),this.object.updateMatrixWorld(),o=wf.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;o!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(o).add(this.object.position):(mE.origin.copy(this.object.position),mE.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(mE.direction))SB||8*(1-this._lastQuaternion.dot(this.object.quaternion))>SB||this._lastTargetPosition.distanceToSquared(this.target)>SB?(this.dispatchEvent(qU),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?aA/60*this.autoRotateSpeed*e:aA/60/60*this.autoRotateSpeed}_getZoomScale(e){const t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){wf.setFromMatrixColumn(t,0),wf.multiplyScalar(-e),this._panOffset.add(wf)}_panUp(e,t){this.screenSpacePanning===!0?wf.setFromMatrixColumn(t,1):(wf.setFromMatrixColumn(t,0),wf.crossVectors(this.object.up,wf)),wf.multiplyScalar(e),this._panOffset.add(wf)}_pan(e,t){const n=this.domElement;if(this.object.isPerspectiveCamera){const r=this.object.position;wf.copy(r).sub(this.target);let a=wf.length();a*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*a/n.clientHeight,this.object.matrix),this._panUp(2*t*a/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const n=this.domElement.getBoundingClientRect(),r=e-n.left,a=t-n.top,o=n.width,c=n.height;this._mouse.x=r/o*2-1,this._mouse.y=-(a/c)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(aA*this._rotateDelta.x/t.clientHeight),this._rotateUp(aA*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(aA*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-aA*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(aA*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-aA*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,a=Math.sqrt(n*n+r*r);this._dollyStart.set(0,a)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{const n=this._getSecondPointerPosition(e),r=.5*(e.pageX+n.x),a=.5*(e.pageY+n.y);this._rotateEnd.set(r,a)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(aA*this._rotateDelta.x/t.clientHeight),this._rotateUp(aA*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,a=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,a),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const o=(e.pageX+t.x)*.5,c=(e.pageY+t.y)*.5;this._updateZoomParameters(o,c)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;ttD||8*(1-this._lastQuaternion.dot(t.quaternion))>tD)&&(this.dispatchEvent(K9),this._lastQuaternion.copy(t.quaternion),this._lastPosition.copy(t.position))}_updateMovementVector(){const e=this._moveState.forward||this.autoForward&&!this._moveState.back?1:0;this._moveVector.x=-this._moveState.left+this._moveState.right,this._moveVector.y=-this._moveState.down+this._moveState.up,this._moveVector.z=-e+this._moveState.back}_updateRotationVector(){this._rotationVector.x=-this._moveState.pitchDown+this._moveState.pitchUp,this._rotationVector.y=-this._moveState.yawRight+this._moveState.yawLeft,this._rotationVector.z=-this._moveState.rollRight+this._moveState.rollLeft}_getContainerDimensions(){return this.domElement!=document?{size:[this.domElement.offsetWidth,this.domElement.offsetHeight],offset:[this.domElement.offsetLeft,this.domElement.offsetTop]}:{size:[window.innerWidth,window.innerHeight],offset:[0,0]}}}function X9(i){if(!(i.altKey||this.enabled===!1)){switch(i.code){case"ShiftLeft":case"ShiftRight":this.movementSpeedMultiplier=.1;break;case"KeyW":this._moveState.forward=1;break;case"KeyS":this._moveState.back=1;break;case"KeyA":this._moveState.left=1;break;case"KeyD":this._moveState.right=1;break;case"KeyR":this._moveState.up=1;break;case"KeyF":this._moveState.down=1;break;case"ArrowUp":this._moveState.pitchUp=1;break;case"ArrowDown":this._moveState.pitchDown=1;break;case"ArrowLeft":this._moveState.yawLeft=1;break;case"ArrowRight":this._moveState.yawRight=1;break;case"KeyQ":this._moveState.rollLeft=1;break;case"KeyE":this._moveState.rollRight=1;break}this._updateMovementVector(),this._updateRotationVector()}}function j9(i){if(this.enabled!==!1){switch(i.code){case"ShiftLeft":case"ShiftRight":this.movementSpeedMultiplier=1;break;case"KeyW":this._moveState.forward=0;break;case"KeyS":this._moveState.back=0;break;case"KeyA":this._moveState.left=0;break;case"KeyD":this._moveState.right=0;break;case"KeyR":this._moveState.up=0;break;case"KeyF":this._moveState.down=0;break;case"ArrowUp":this._moveState.pitchUp=0;break;case"ArrowDown":this._moveState.pitchDown=0;break;case"ArrowLeft":this._moveState.yawLeft=0;break;case"ArrowRight":this._moveState.yawRight=0;break;case"KeyQ":this._moveState.rollLeft=0;break;case"KeyE":this._moveState.rollRight=0;break}this._updateMovementVector(),this._updateRotationVector()}}function Y9(i){if(this.enabled!==!1)if(this.dragToLook)this._status++;else{switch(i.button){case 0:this._moveState.forward=1;break;case 2:this._moveState.back=1;break}this._updateMovementVector()}}function q9(i){if(this.enabled!==!1&&(!this.dragToLook||this._status>0)){const e=this._getContainerDimensions(),t=e.size[0]/2,n=e.size[1]/2;this._moveState.yawLeft=-(i.pageX-e.offset[0]-t)/t,this._moveState.pitchDown=(i.pageY-e.offset[1]-n)/n,this._updateRotationVector()}}function J9(i){if(this.enabled!==!1){if(this.dragToLook)this._status--,this._moveState.yawLeft=this._moveState.pitchDown=0;else{switch(i.button){case 0:this._moveState.forward=0;break;case 2:this._moveState.back=0;break}this._updateMovementVector()}this._updateRotationVector()}}function e7(){this.enabled!==!1&&(this.dragToLook?(this._status=0,this._moveState.yawLeft=this._moveState.pitchDown=0):(this._moveState.forward=0,this._moveState.back=0,this._updateMovementVector()),this._updateRotationVector())}function t7(i){this.enabled!==!1&&i.preventDefault()}const n7={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:` + + varying vec2 vUv; + + void main() { + + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + }`,fragmentShader:` + + uniform float opacity; + + uniform sampler2D tDiffuse; + + varying vec2 vUv; + + void main() { + + vec4 texel = texture2D( tDiffuse, vUv ); + gl_FragColor = opacity * texel; + + + }`};class vE{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const r7=new eg(-1,1,1,-1,0,1);class i7 extends Eo{constructor(){super(),this.setAttribute("position",new Pa([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Pa([0,2,0,0,2,0],2))}}const s7=new i7;class a7{constructor(e){this._mesh=new Mc(s7,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,r7)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}class o7 extends vE{constructor(e,t="tDiffuse"){super(),this.textureID=t,this.uniforms=null,this.material=null,e instanceof tf?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=R0.clone(e.uniforms),this.material=new tf({name:e.name!==void 0?e.name:"unspecified",defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this._fsQuad=new a7(this.material)}render(e,t,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=n.texture),this._fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this._fsQuad.render(e))}dispose(){this.material.dispose(),this._fsQuad.dispose()}}class rD extends vE{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,n){const r=e.getContext(),a=e.state;a.buffers.color.setMask(!1),a.buffers.depth.setMask(!1),a.buffers.color.setLocked(!0),a.buffers.depth.setLocked(!0);let o,c;this.inverse?(o=0,c=1):(o=1,c=0),a.buffers.stencil.setTest(!0),a.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),a.buffers.stencil.setFunc(r.ALWAYS,o,4294967295),a.buffers.stencil.setClear(c),a.buffers.stencil.setLocked(!0),e.setRenderTarget(n),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),a.buffers.color.setLocked(!1),a.buffers.depth.setLocked(!1),a.buffers.color.setMask(!0),a.buffers.depth.setMask(!0),a.buffers.stencil.setLocked(!1),a.buffers.stencil.setFunc(r.EQUAL,1,4294967295),a.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),a.buffers.stencil.setLocked(!0)}}class l7 extends vE{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}class c7{constructor(e,t){if(this.renderer=e,this._pixelRatio=e.getPixelRatio(),t===void 0){const n=e.getSize(new de);this._width=n.width,this._height=n.height,t=new ra(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:zt}),t.texture.name="EffectComposer.rt1"}else this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new o7(n7),this.copyPass.material.blending=Me,this.clock=new ex}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t0)break}while(lD(r,a));c=I.notation==="postfix",I.symbol!==")"&&(r.push(I),c&&lD(r,a))}else if(v){if(r.push(v.prefix||v.func),v.func&&(n=o.exec(i),!n||n[0]!=="("))throw new Go(38,n?n.index:i.length,i)}else a.push(+f),c=!0}while(n&&r.length);if(r.length)throw new Go(39,n?n.index:i.length,i);if(n)throw new Go(40,n?n.index:i.length,i);return a.pop()}function MB(i){return i.split("").reverse().join("")}function Fj(i,e){var t=MB(i),n=t.match(oD);if(n&&!n.every(function(a){return a===n[0]}))throw new Go(41);var r=MB(t.replace(oD,""));return""+M7(r,e)+(n?MB(n[0]):"")}var T7=/--[\S]*/g;function Uj(i,e){if(!i||!i.match(T7))throw new Go(73);var t;if(typeof document!="undefined"&&document.documentElement!==null&&(t=getComputedStyle(document.documentElement).getPropertyValue(i)),t)return t.trim();if(e)return e;throw new Go(74)}function ew(i){return i.charAt(0).toUpperCase()+i.slice(1)}var C7=null;function B7(i,e){if(!i)return e.toLowerCase();var t=i.split("-");if(t.length>1)return t.splice(1,0,e),t.reduce(function(r,a){return""+r+ew(a)});var n=i.replace(/([a-z])([A-Z])/g,"$1"+e+"$2");return i===n?""+i+e:n}function R7(i,e){for(var t={},n=0;n1?e-1:0),n=1;n=0)?t[n]=i[n]+" !important":t[n]=i[n]}),t}var fD={minorSecond:1.067,majorSecond:1.125,minorThird:1.2,majorThird:1.25,perfectFourth:1.333,augFourth:1.414,perfectFifth:1.5,minorSixth:1.6,goldenSection:1.618,majorSixth:1.667,minorSeventh:1.778,majorSeventh:1.875,octave:2,majorTenth:2.5,majorEleventh:2.667,majorTwelfth:3,doubleOctave:4};function F7(i){return fD[i]}function kj(i,e,t){if(e===void 0&&(e="1em"),t===void 0&&(t=1.333),typeof i!="number")throw new Go(42);if(typeof t=="string"&&!fD[t])throw new Go(43);var n=typeof e=="string"?_0(e):[e,""],r=n[0],a=n[1],o=typeof t=="string"?F7(t):t;if(typeof r=="string")throw new Go(44,e);return""+r*Math.pow(o,i)+(a||"")}var Vj=hD("rem"),Hj=null,TB=16;function dD(i){var e=_0(i);if(e[1]==="px")return parseFloat(i);if(e[1]==="%")return parseFloat(i)/100*TB;throw new Go(78,e[1])}function U7(){if(typeof document!="undefined"&&document.documentElement!==null){var i=getComputedStyle(document.documentElement).fontSize;return i?dD(i):TB}return TB}function Gj(i,e){var t=_0(i);if(t[1]!=="rem"&&t[1]!=="")throw new Go(77,t[1]);var n=e?dD(e):U7();return t[0]*n+"px"}var D7={back:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",circ:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",cubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",expo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",quad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",quart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",quint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",sine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)"};function zj(i){return D7[i.toLowerCase().trim()]}var O7={back:"cubic-bezier(0.680, -0.550, 0.265, 1.550)",circ:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",cubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",expo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",quad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",quart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",quint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",sine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};function Qj(i){return O7[i.toLowerCase().trim()]}var k7={back:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",cubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",circ:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",expo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",quad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",quart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",quint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",sine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)"};function Wj(i){return k7[i.toLowerCase().trim()]}function AD(i,e,t,n){t===void 0&&(t="320px"),n===void 0&&(n="1200px");var r=_0(i),a=r[0],o=r[1],c=_0(e),u=c[0],f=c[1],g=_0(t),v=g[0],M=g[1],R=_0(n),I=R[0],re=R[1];if(typeof v!="number"||typeof I!="number"||!M||!re||M!==re)throw new Go(47);if(typeof a!="number"||typeof u!="number"||o!==f)throw new Go(48);if(o!==M||f!==re)throw new Go(76);var ne=(a-u)/(v-I),J=u-ne*I;return"calc("+J.toFixed(2)+(o||"")+" + "+(100*ne).toFixed(2)+"vw)"}function Zj(i){var e;i===void 0&&(i="&");var t=i+"::after";return e={},e[t]={clear:"both",content:'""',display:"table"},e}function Kj(i){return i===void 0&&(i=0),{position:"absolute",top:i,right:i,bottom:i,left:i}}function $j(i,e){e===void 0&&(e=1);var t={display:"inline-block",maxWidth:i||"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",wordWrap:"normal"};return e>1?_extends({},t,{WebkitBoxOrient:"vertical",WebkitLineClamp:e,display:"-webkit-box",whiteSpace:"normal"}):t}function V7(i,e){var t=typeof Symbol!="undefined"&&i[Symbol.iterator]||i["@@iterator"];if(t)return(t=t.call(i)).next.bind(t);if(Array.isArray(i)||(t=H7(i))||e&&i&&typeof i.length=="number"){t&&(i=t);var n=0;return function(){return n>=i.length?{done:!0}:{done:!1,value:i[n++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function H7(i,e){if(i){if(typeof i=="string")return pD(i,e);var t=Object.prototype.toString.call(i).slice(8,-1);if(t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set")return Array.from(i);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return pD(i,e)}}function pD(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=new Array(e);t1?t-1:0),r=1;r1?(e=e.slice(0,-1),e+=", "+n[a]):o.length===1&&(e+=""+n[a])}else n[a]&&(e+=n[a]+" ");return e.trim()}var vD;function Jj(i){var e=i.colorStops,t=i.fallback,n=i.toDirection,r=n===void 0?"":n;if(!e||e.length<2)throw new Go(56);return{backgroundColor:t||e[0].replace(/,\s+/g,",").split(" ")[0].replace(/,(?=\S)/g,", "),backgroundImage:mD(vD||(vD=_taggedTemplateLiteralLoose(["linear-gradient(","",")"])),r,e.join(", ").replace(/,(?=\S)/g,", "))}}function eY(){var i;return[(i={html:{lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:"0"},main:{display:"block"},h1:{fontSize:"2em",margin:"0.67em 0"},hr:{boxSizing:"content-box",height:"0",overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{backgroundColor:"transparent"},"abbr[title]":{borderBottom:"none",textDecoration:"underline"}},i[`b, + strong`]={fontWeight:"bolder"},i[`code, + kbd, + samp`]={fontFamily:"monospace, monospace",fontSize:"1em"},i.small={fontSize:"80%"},i[`sub, + sup`]={fontSize:"75%",lineHeight:"0",position:"relative",verticalAlign:"baseline"},i.sub={bottom:"-0.25em"},i.sup={top:"-0.5em"},i.img={borderStyle:"none"},i[`button, + input, + optgroup, + select, + textarea`]={fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15",margin:"0"},i[`button, + input`]={overflow:"visible"},i[`button, + select`]={textTransform:"none"},i[`button, + html [type="button"], + [type="reset"], + [type="submit"]`]={WebkitAppearance:"button"},i[`button::-moz-focus-inner, + [type="button"]::-moz-focus-inner, + [type="reset"]::-moz-focus-inner, + [type="submit"]::-moz-focus-inner`]={borderStyle:"none",padding:"0"},i[`button:-moz-focusring, + [type="button"]:-moz-focusring, + [type="reset"]:-moz-focusring, + [type="submit"]:-moz-focusring`]={outline:"1px dotted ButtonText"},i.fieldset={padding:"0.35em 0.625em 0.75em"},i.legend={boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:"0",whiteSpace:"normal"},i.progress={verticalAlign:"baseline"},i.textarea={overflow:"auto"},i[`[type="checkbox"], + [type="radio"]`]={boxSizing:"border-box",padding:"0"},i[`[type="number"]::-webkit-inner-spin-button, + [type="number"]::-webkit-outer-spin-button`]={height:"auto"},i['[type="search"]']={WebkitAppearance:"textfield",outlineOffset:"-2px"},i['[type="search"]::-webkit-search-decoration']={WebkitAppearance:"none"},i["::-webkit-file-upload-button"]={WebkitAppearance:"button",font:"inherit"},i.details={display:"block"},i.summary={display:"list-item"},i.template={display:"none"},i["[hidden]"]={display:"none"},i),{"abbr[title]":{textDecoration:"underline dotted"}}]}var yD;function tY(i){var e=i.colorStops,t=i.extent,n=t===void 0?"":t,r=i.fallback,a=i.position,o=a===void 0?"":a,c=i.shape,u=c===void 0?"":c;if(!e||e.length<2)throw new Go(57);return{backgroundColor:r||e[0].split(" ")[0],backgroundImage:mD(yD||(yD=_taggedTemplateLiteralLoose(["radial-gradient(","","","",")"])),o,u,n,e.join(", "))}}function nY(i,e,t,n,r){var a;if(t===void 0&&(t="png"),r===void 0&&(r="_2x"),!i)throw new Go(58);var o=t.replace(/^\./,""),c=n?n+"."+o:""+i+r+"."+o;return a={backgroundImage:"url("+i+"."+o+")"},a[$7()]=_extends({backgroundImage:"url("+c+")"},e?{backgroundSize:e}:{}),a}var X7={easeInBack:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",easeInCirc:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",easeInCubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",easeInExpo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",easeInQuad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",easeInQuart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",easeInQuint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",easeInSine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)",easeOutBack:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",easeOutCubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",easeOutCirc:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",easeOutExpo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",easeOutQuad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",easeOutQuart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",easeOutQuint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",easeOutSine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)",easeInOutBack:"cubic-bezier(0.680, -0.550, 0.265, 1.550)",easeInOutCirc:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",easeInOutCubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",easeInOutExpo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",easeInOutQuad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",easeInOutQuart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",easeInOutQuint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",easeInOutSine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};function j7(i){return X7[i]}function rY(i){return j7(i)}var Y7=function(e,t,n){var r=""+n[0]+(n[1]||""),a=""+n[0]/2+(n[1]||""),o=""+t[0]+(t[1]||""),c=""+t[0]/2+(t[1]||"");switch(e){case"top":return"0 "+a+" "+o+" "+a;case"topLeft":return r+" "+o+" 0 0";case"left":return c+" "+r+" "+c+" 0";case"bottomLeft":return r+" 0 0 "+o;case"bottom":return o+" "+a+" 0 "+a;case"bottomRight":return"0 0 "+r+" "+o;case"right":return c+" 0 "+c+" "+r;case"topRight":default:return"0 "+r+" "+o+" 0"}},q7=function(e,t){switch(e){case"top":case"bottomRight":return{borderBottomColor:t};case"right":case"bottomLeft":return{borderLeftColor:t};case"bottom":case"topLeft":return{borderTopColor:t};case"left":case"topRight":return{borderRightColor:t};default:throw new Go(59)}};function iY(i){var e=i.pointingDirection,t=i.height,n=i.width,r=i.foregroundColor,a=i.backgroundColor,o=a===void 0?"transparent":a,c=_0(n),u=_0(t);if(isNaN(u[0])||isNaN(c[0]))throw new Go(60);return _extends({width:"0",height:"0",borderColor:o},q7(e,r),{borderStyle:"solid",borderWidth:Y7(e,u,c)})}function sY(i){i===void 0&&(i="break-word");var e=i==="break-word"?"break-all":i;return{overflowWrap:i,wordWrap:i,wordBreak:e}}function CB(i){return Math.round(i*255)}function J7(i,e,t){return CB(i)+","+CB(e)+","+CB(t)}function tw(i,e,t,n){if(n===void 0&&(n=J7),e===0)return n(t,t,t);var r=(i%360+360)%360/60,a=(1-Math.abs(2*t-1))*e,o=a*(1-Math.abs(r%2-1)),c=0,u=0,f=0;r>=0&&r<1?(c=a,u=o):r>=1&&r<2?(c=o,u=a):r>=2&&r<3?(u=a,f=o):r>=3&&r<4?(u=o,f=a):r>=4&&r<5?(c=o,f=a):r>=5&&r<6&&(c=a,f=o);var g=t-a/2,v=c+g,M=u+g,R=f+g;return n(v,M,R)}var xD={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"};function eZ(i){if(typeof i!="string")return i;var e=i.toLowerCase();return xD[e]?"#"+xD[e]:i}var tZ=/^#[a-fA-F0-9]{6}$/,nZ=/^#[a-fA-F0-9]{8}$/,rZ=/^#[a-fA-F0-9]{3}$/,iZ=/^#[a-fA-F0-9]{4}$/,BB=/^rgb\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*\)$/i,sZ=/^rgb(?:a)?\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i,aZ=/^hsl\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i,oZ=/^hsl(?:a)?\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i;function b0(i){if(typeof i!="string")throw new Go(3);var e=eZ(i);if(e.match(tZ))return{red:parseInt(""+e[1]+e[2],16),green:parseInt(""+e[3]+e[4],16),blue:parseInt(""+e[5]+e[6],16)};if(e.match(nZ)){var t=parseFloat((parseInt(""+e[7]+e[8],16)/255).toFixed(2));return{red:parseInt(""+e[1]+e[2],16),green:parseInt(""+e[3]+e[4],16),blue:parseInt(""+e[5]+e[6],16),alpha:t}}if(e.match(rZ))return{red:parseInt(""+e[1]+e[1],16),green:parseInt(""+e[2]+e[2],16),blue:parseInt(""+e[3]+e[3],16)};if(e.match(iZ)){var n=parseFloat((parseInt(""+e[4]+e[4],16)/255).toFixed(2));return{red:parseInt(""+e[1]+e[1],16),green:parseInt(""+e[2]+e[2],16),blue:parseInt(""+e[3]+e[3],16),alpha:n}}var r=BB.exec(e);if(r)return{red:parseInt(""+r[1],10),green:parseInt(""+r[2],10),blue:parseInt(""+r[3],10)};var a=sZ.exec(e.substring(0,50));if(a)return{red:parseInt(""+a[1],10),green:parseInt(""+a[2],10),blue:parseInt(""+a[3],10),alpha:parseFloat(""+a[4])>1?parseFloat(""+a[4])/100:parseFloat(""+a[4])};var o=aZ.exec(e);if(o){var c=parseInt(""+o[1],10),u=parseInt(""+o[2],10)/100,f=parseInt(""+o[3],10)/100,g="rgb("+tw(c,u,f)+")",v=BB.exec(g);if(!v)throw new Go(4,e,g);return{red:parseInt(""+v[1],10),green:parseInt(""+v[2],10),blue:parseInt(""+v[3],10)}}var M=oZ.exec(e.substring(0,50));if(M){var R=parseInt(""+M[1],10),I=parseInt(""+M[2],10)/100,re=parseInt(""+M[3],10)/100,ne="rgb("+tw(R,I,re)+")",J=BB.exec(ne);if(!J)throw new Go(4,e,ne);return{red:parseInt(""+J[1],10),green:parseInt(""+J[2],10),blue:parseInt(""+J[3],10),alpha:parseFloat(""+M[4])>1?parseFloat(""+M[4])/100:parseFloat(""+M[4])}}throw new Go(5)}function lZ(i){var e=i.red/255,t=i.green/255,n=i.blue/255,r=Math.max(e,t,n),a=Math.min(e,t,n),o=(r+a)/2;if(r===a)return i.alpha!==void 0?{hue:0,saturation:0,lightness:o,alpha:i.alpha}:{hue:0,saturation:0,lightness:o};var c,u=r-a,f=o>.5?u/(2-r-a):u/(r+a);switch(r){case e:c=(t-n)/u+(t=1?yE(i,e,t):"rgba("+tw(i,e,t)+","+n+")";if(typeof i=="object"&&e===void 0&&t===void 0&&n===void 0)return i.alpha>=1?yE(i.hue,i.saturation,i.lightness):"rgba("+tw(i.hue,i.saturation,i.lightness)+","+i.alpha+")";throw new Go(2)}function xE(i,e,t){if(typeof i=="number"&&typeof e=="number"&&typeof t=="number")return RB("#"+Ly(i)+Ly(e)+Ly(t));if(typeof i=="object"&&e===void 0&&t===void 0)return RB("#"+Ly(i.red)+Ly(i.green)+Ly(i.blue));throw new Go(6)}function nw(i,e,t,n){if(typeof i=="string"&&typeof e=="number"){var r=b0(i);return"rgba("+r.red+","+r.green+","+r.blue+","+e+")"}else{if(typeof i=="number"&&typeof e=="number"&&typeof t=="number"&&typeof n=="number")return n>=1?xE(i,e,t):"rgba("+i+","+e+","+t+","+n+")";if(typeof i=="object"&&e===void 0&&t===void 0&&n===void 0)return i.alpha>=1?xE(i.red,i.green,i.blue):"rgba("+i.red+","+i.green+","+i.blue+","+i.alpha+")"}throw new Go(7)}var hZ=function(e){return typeof e.red=="number"&&typeof e.green=="number"&&typeof e.blue=="number"&&(typeof e.alpha!="number"||typeof e.alpha=="undefined")},fZ=function(e){return typeof e.red=="number"&&typeof e.green=="number"&&typeof e.blue=="number"&&typeof e.alpha=="number"},dZ=function(e){return typeof e.hue=="number"&&typeof e.saturation=="number"&&typeof e.lightness=="number"&&(typeof e.alpha!="number"||typeof e.alpha=="undefined")},AZ=function(e){return typeof e.hue=="number"&&typeof e.saturation=="number"&&typeof e.lightness=="number"&&typeof e.alpha=="number"};function vg(i){if(typeof i!="object")throw new Go(8);if(fZ(i))return nw(i);if(hZ(i))return xE(i);if(AZ(i))return bD(i);if(dZ(i))return _D(i);throw new Go(8)}function wD(i,e,t){return function(){var r=t.concat(Array.prototype.slice.call(arguments));return r.length>=e?i.apply(this,r):wD(i,e,r)}}function VA(i){return wD(i,i.length,[])}function pZ(i,e){if(e==="transparent")return e;var t=pm(e);return vg((0,Pp.Z)({},t,{hue:t.hue+parseFloat(i)}))}var aY=VA(pZ),oY=null;function lY(i){if(i==="transparent")return i;var e=pm(i);return vg(_extends({},e,{hue:(e.hue+180)%360}))}function n_(i,e,t){return Math.max(i,Math.min(e,t))}function gZ(i,e){if(e==="transparent")return e;var t=pm(e);return vg((0,Pp.Z)({},t,{lightness:n_(0,1,t.lightness-parseFloat(i))}))}var cY=VA(gZ),uY=null;function mZ(i,e){if(e==="transparent")return e;var t=pm(e);return vg((0,Pp.Z)({},t,{saturation:n_(0,1,t.saturation-parseFloat(i))}))}var hY=VA(mZ),fY=null;function IB(i){if(i==="transparent")return 0;var e=b0(i),t=Object.keys(e).map(function(o){var c=e[o]/255;return c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4)}),n=t[0],r=t[1],a=t[2];return parseFloat((.2126*n+.7152*r+.0722*a).toFixed(3))}function SD(i,e){var t=IB(i),n=IB(e);return parseFloat((t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)).toFixed(2))}function dY(i){return i==="transparent"?i:vg(_extends({},pm(i),{saturation:0}))}function AY(i){if(typeof i=="object"&&typeof i.hue=="number"&&typeof i.saturation=="number"&&typeof i.lightness=="number")return i.alpha&&typeof i.alpha=="number"?bD({hue:i.hue,saturation:i.saturation,lightness:i.lightness,alpha:i.alpha}):_D({hue:i.hue,saturation:i.saturation,lightness:i.lightness});throw new Go(45)}function pY(i){if(i==="transparent")return i;var e=b0(i);return vg(_extends({},e,{red:255-e.red,green:255-e.green,blue:255-e.blue}))}function vZ(i,e){if(e==="transparent")return e;var t=pm(e);return vg((0,Pp.Z)({},t,{lightness:n_(0,1,t.lightness+parseFloat(i))}))}var gY=VA(vZ),mY=null;function vY(i,e){var t=SD(i,e);return{AA:t>=4.5,AALarge:t>=3,AAA:t>=7,AAALarge:t>=4.5}}function yZ(i,e,t){if(e==="transparent")return t;if(t==="transparent")return e;if(i===0)return t;var n=b0(e),r=(0,Pp.Z)({},n,{alpha:typeof n.alpha=="number"?n.alpha:1}),a=b0(t),o=(0,Pp.Z)({},a,{alpha:typeof a.alpha=="number"?a.alpha:1}),c=r.alpha-o.alpha,u=parseFloat(i)*2-1,f=u*c===-1?u:u+c,g=1+u*c,v=(f/g+1)/2,M=1-v,R={red:Math.floor(r.red*v+o.red*M),green:Math.floor(r.green*v+o.green*M),blue:Math.floor(r.blue*v+o.blue*M),alpha:r.alpha*parseFloat(i)+o.alpha*(1-parseFloat(i))};return nw(R)}var xZ=VA(yZ),ED=xZ;function _Z(i,e){if(e==="transparent")return e;var t=b0(e),n=typeof t.alpha=="number"?t.alpha:1,r=(0,Pp.Z)({},t,{alpha:n_(0,1,(n*100+parseFloat(i)*100)/100)});return nw(r)}var bZ=VA(_Z),wZ=bZ,MD="#000",TD="#fff";function yY(i,e,t,n){e===void 0&&(e=MD),t===void 0&&(t=TD),n===void 0&&(n=!0);var r=IB(i)>.179,a=r?e:t;return!n||SD(i,a)>=4.5?a:r?MD:TD}function xY(i){if(typeof i=="object"&&typeof i.red=="number"&&typeof i.green=="number"&&typeof i.blue=="number")return typeof i.alpha=="number"?nw({red:i.red,green:i.green,blue:i.blue,alpha:i.alpha}):xE({red:i.red,green:i.green,blue:i.blue});throw new Go(46)}function SZ(i,e){if(e==="transparent")return e;var t=pm(e);return vg((0,Pp.Z)({},t,{saturation:n_(0,1,t.saturation+parseFloat(i))}))}var _Y=VA(SZ),bY=null;function EZ(i,e){return e==="transparent"?e:vg((0,Pp.Z)({},pm(e),{hue:parseFloat(i)}))}var wY=VA(EZ),SY=null;function MZ(i,e){return e==="transparent"?e:vg((0,Pp.Z)({},pm(e),{lightness:parseFloat(i)}))}var EY=VA(MZ),MY=null;function TZ(i,e){return e==="transparent"?e:vg((0,Pp.Z)({},pm(e),{saturation:parseFloat(i)}))}var TY=VA(TZ),CY=null;function CZ(i,e){return e==="transparent"?e:ED(parseFloat(i),"rgb(0, 0, 0)",e)}var BY=VA(CZ),RY=null;function BZ(i,e){return e==="transparent"?e:ED(parseFloat(i),"rgb(255, 255, 255)",e)}var PY=VA(BZ),IY=null;function RZ(i,e){if(e==="transparent")return e;var t=b0(e),n=typeof t.alpha=="number"?t.alpha:1,r=(0,Pp.Z)({},t,{alpha:n_(0,1,+(n*100-parseFloat(i)*100).toFixed(2)/100)});return nw(r)}var NY=VA(RZ),LY=null;function FY(){for(var i=arguments.length,e=new Array(i),t=0;t8)throw new Go(64);var r=e.map(function(a){if(n&&!Array.isArray(a)||!n&&Array.isArray(a))throw new Go(65);if(Array.isArray(a)&&a.length>8)throw new Go(66);return Array.isArray(a)?a.join(" "):a}).join(", ");return{animation:r}}function UY(){for(var i=arguments.length,e=new Array(i),t=0;t1?e-1:0),n=1;n=0){var r;return r={},r["border"+ew(i)+"Width"]=t[0],r["border"+ew(i)+"Style"]=t[1],r["border"+ew(i)+"Color"]=t[2],r}else return t.unshift(i),{borderWidth:t[0],borderStyle:t[1],borderColor:t[2]}}function kY(){for(var i=arguments.length,e=new Array(i),t=0;t1?e-1:0),n=1;n=0&&i?_extends({},Ny.apply(void 0,[""].concat(t)),{position:i}):Ny.apply(void 0,["",i].concat(t))}function KY(i,e){return e===void 0&&(e=i),{height:i,width:e}}var FZ=null;function UZ(i){return'input[type="color"]'+i+`, + input[type="date"]`+i+`, + input[type="datetime"]`+i+`, + input[type="datetime-local"]`+i+`, + input[type="email"]`+i+`, + input[type="month"]`+i+`, + input[type="number"]`+i+`, + input[type="password"]`+i+`, + input[type="search"]`+i+`, + input[type="tel"]`+i+`, + input[type="text"]`+i+`, + input[type="time"]`+i+`, + input[type="url"]`+i+`, + input[type="week"]`+i+`, + input:not([type])`+i+`, + textarea`+i}function $Y(){for(var i=arguments.length,e=new Array(i),t=0;t1e4?1e4:i,{In:function(e){return Math.pow(e,i)},Out:function(e){return 1-Math.pow(1-e,i)},InOut:function(e){return e<.5?Math.pow(e*2,i)/2:(1-Math.pow(2-e*2,i))/2+.5}}}}),r_=function(){return performance.now()},NB=function(){function i(){for(var e=[],t=0;t0;){this._tweensAddedDuringUpdate={};for(var r=0;r1?a(i[t],i[t-1],t-n):a(i[r],i[r+1>t?t:r+1],n-r)},Bezier:function(i,e){for(var t=0,n=i.length-1,r=Math.pow,a=Fy.Utils.Bernstein,o=0;o<=n;o++)t+=r(1-e,n-o)*r(e,o)*i[o]*a(n,o);return t},CatmullRom:function(i,e){var t=i.length-1,n=t*e,r=Math.floor(n),a=Fy.Utils.CatmullRom;return i[0]===i[t]?(e<0&&(r=Math.floor(n=t*(1+e))),a(i[(r-1+t)%t],i[r],i[(r+1)%t],i[(r+2)%t],n-r)):e<0?i[0]-(a(i[0],i[0],i[1],i[1],-n)-i[0]):e>1?i[t]-(a(i[t],i[t],i[t-1],i[t-1],n-t)-i[t]):a(i[r?r-1:0],i[r],i[t1;n--)t*=n;return i[e]=t,t}}(),CatmullRom:function(i,e,t,n,r){var a=(t-i)*.5,o=(n-e)*.5,c=r*r,u=r*c;return(2*e-2*t+a+o)*u+(-3*e+3*t-2*a-o)*c+a*r+e}}},LB=function(){function i(){}return i.nextId=function(){return i._nextId++},i._nextId=0,i}(),FB=new NB,UB=function(){function i(e,t){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Bv.Linear.None,this._interpolationFunction=Fy.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=LB.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=e,typeof t=="object"?(this._group=t,t.add(this)):t===!0&&(this._group=FB,FB.add(this))}return i.prototype.getId=function(){return this._id},i.prototype.isPlaying=function(){return this._isPlaying},i.prototype.isPaused=function(){return this._isPaused},i.prototype.getDuration=function(){return this._duration},i.prototype.to=function(e,t){if(t===void 0&&(t=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=e,this._propertiesAreSetUp=!1,this._duration=t<0?0:t,this},i.prototype.duration=function(e){return e===void 0&&(e=1e3),this._duration=e<0?0:e,this},i.prototype.dynamic=function(e){return e===void 0&&(e=!1),this._isDynamic=e,this},i.prototype.start=function(e,t){if(e===void 0&&(e=r_()),t===void 0&&(t=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var n in this._valuesStartRepeat)this._swapEndStartRepeatValues(n),this._valuesStart[n]=this._valuesStartRepeat[n]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=e,this._startTime+=this._delayTime,!this._propertiesAreSetUp||t){if(this._propertiesAreSetUp=!0,!this._isDynamic){var r={};for(var a in this._valuesEnd)r[a]=this._valuesEnd[a];this._valuesEnd=r}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,t)}return this},i.prototype.startFromCurrentValues=function(e){return this.start(e,!0)},i.prototype._setupProperties=function(e,t,n,r,a){for(var o in n){var c=e[o],u=Array.isArray(c),f=u?"array":typeof c,g=!u&&Array.isArray(n[o]);if(!(f==="undefined"||f==="function")){if(g){var v=n[o];if(v.length===0)continue;for(var M=[c],R=0,I=v.length;Ru)return 1;var re=Math.trunc(o/c),ne=o-re*c,J=Math.min(ne/n._duration,1);return J===0&&o===n._duration?1:J},g=f(),v=this._easingFunction(g);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,v),this._onUpdateCallback&&this._onUpdateCallback(this._object,g),this._duration===0||o>=this._duration)if(this._repeat>0){var M=Math.min(Math.trunc((o-this._duration)/c)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=M);for(a in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[a]=="string"&&(this._valuesStartRepeat[a]=this._valuesStartRepeat[a]+parseFloat(this._valuesEnd[a])),this._yoyo&&this._swapEndStartRepeatValues(a),this._valuesStart[a]=this._valuesStartRepeat[a];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=c*M,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var R=0,I=this._chainedTweens.length;R=Re&&(Re=be+1);!(st=ne[Re])&&++Re=0;)(o=n[r])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function vK(i){i||(i=yK);function e(v,M){return v&&M?i(v.__data__,M.__data__):!v-!M}for(var t=this._groups,n=t.length,r=new Array(n),a=0;ae?1:i>=e?0:NaN}function xK(){var i=arguments[0];return arguments[0]=this,i.apply(null,arguments),this}function _K(){return Array.from(this)}function bK(){for(var i=this._groups,e=0,t=i.length;e=0&&(e=i.slice(0,t))!=="xmlns"&&(i=i.slice(t+1)),ND.hasOwnProperty(e)?{space:ND[e],local:i}:i}function MK(i){return function(){this.removeAttribute(i)}}function TK(i){return function(){this.removeAttributeNS(i.space,i.local)}}function CK(i,e){return function(){this.setAttribute(i,e)}}function BK(i,e){return function(){this.setAttributeNS(i.space,i.local,e)}}function RK(i,e){return function(){var t=e.apply(this,arguments);t==null?this.removeAttribute(i):this.setAttribute(i,t)}}function PK(i,e){return function(){var t=e.apply(this,arguments);t==null?this.removeAttributeNS(i.space,i.local):this.setAttributeNS(i.space,i.local,t)}}function IK(i,e){var t=LD(i);if(arguments.length<2){var n=this.node();return t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}return this.each((e==null?t.local?TK:MK:typeof e=="function"?t.local?PK:RK:t.local?BK:CK)(t,e))}function FD(i){return i.ownerDocument&&i.ownerDocument.defaultView||i.document&&i||i.defaultView}function NK(i){return function(){this.style.removeProperty(i)}}function LK(i,e,t){return function(){this.style.setProperty(i,e,t)}}function FK(i,e,t){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(i):this.style.setProperty(i,n,t)}}function UK(i,e,t){return arguments.length>1?this.each((e==null?NK:typeof e=="function"?FK:LK)(i,e,t==null?"":t)):DK(this.node(),i)}function DK(i,e){return i.style.getPropertyValue(e)||FD(i).getComputedStyle(i,null).getPropertyValue(e)}function OK(i){return function(){delete this[i]}}function kK(i,e){return function(){this[i]=e}}function VK(i,e){return function(){var t=e.apply(this,arguments);t==null?delete this[i]:this[i]=t}}function HK(i,e){return arguments.length>1?this.each((e==null?OK:typeof e=="function"?VK:kK)(i,e)):this.node()[i]}function UD(i){return i.trim().split(/^|\s+/)}function OB(i){return i.classList||new DD(i)}function DD(i){this._node=i,this._names=UD(i.getAttribute("class")||"")}DD.prototype={add:function(i){var e=this._names.indexOf(i);e<0&&(this._names.push(i),this._node.setAttribute("class",this._names.join(" ")))},remove:function(i){var e=this._names.indexOf(i);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(i){return this._names.indexOf(i)>=0}};function OD(i,e){for(var t=OB(i),n=-1,r=e.length;++n=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function m$(i){return function(){var e=this.__on;if(e){for(var t=0,n=-1,r=e.length,a;t2&&(o.children=arguments.length>3?rw.call(arguments,2):t),typeof i=="function"&&i.defaultProps!=null)for(a in i.defaultProps)o[a]===void 0&&(o[a]=i.defaultProps[a]);return aw(i,o,n,r,null)}function aw(i,e,t,n,r){var a={type:i,props:e,key:t,ref:n,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r==null?++zD:r,__i:-1,__u:0};return r==null&&dh.vnode!=null&&dh.vnode(a),a}function qY(){return{current:null}}function bE(i){return i.children}function wE(i,e){this.props=i,this.context=e}function i_(i,e){if(e==null)return i.__?i_(i.__,i.__i+1):null;for(var t;ec&&Uy.sort(KD),i=Uy.shift(),c=Uy.length,i.__d&&(t=void 0,n=void 0,r=(n=(e=i).__v).__e,a=[],o=[],e.__P&&((t=mm({},n)).__v=n.__v+1,dh.vnode&&dh.vnode(t),QB(e.__P,t,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,a,r==null?i_(n):r,!!(32&n.__u),o),t.__v=n.__v,t.__.__k[t.__i]=t,n3(a,t,o),n.__e=n.__=null,t.__e!=r&&YD(t)));SE.__r=0}function qD(i,e,t,n,r,a,o,c,u,f,g){var v,M,R,I,re,ne,J,be=n&&n.__k||jD,Re=e.length;for(u=P$(t,e,be,u,Re),v=0;v0?o=i.__k[a]=aw(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):i.__k[a]=o,u=a+M,o.__=i,o.__b=i.__b+1,c=null,(f=o.__i=N$(o,t,u,v))!=-1&&(v--,(c=t[f])&&(c.__u|=2)),c==null||c.__v==null?(f==-1&&(r>g?M--:ru?M--:M++,o.__u|=4))):i.__k[a]=null;if(v)for(a=0;a(g?1:0)){for(r=t-1,a=t+1;r>=0||a=0?r--:a++])!=null&&!(2&f.__u)&&c==f.key&&u==f.type)return o}return-1}function e3(i,e,t){e[0]=="-"?i.setProperty(e,t==null?"":t):i[e]=t==null?"":typeof t!="number"||B$.test(e)?t:t+"px"}function EE(i,e,t,n,r){var a,o;e:if(e=="style")if(typeof t=="string")i.style.cssText=t;else{if(typeof n=="string"&&(i.style.cssText=n=""),n)for(e in n)t&&e in t||e3(i.style,e,"");if(t)for(e in t)n&&t[e]==n[e]||e3(i.style,e,t[e])}else if(e[0]=="o"&&e[1]=="n")a=e!=(e=e.replace($D,"$1")),o=e.toLowerCase(),e=o in i||e=="onFocusOut"||e=="onFocusIn"?o.slice(2):e.slice(2),i.l||(i.l={}),i.l[e+a]=t,t?n?t.u=n.u:(t.u=kB,i.addEventListener(e,a?HB:VB,a)):i.removeEventListener(e,a?HB:VB,a);else{if(r=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in i)try{i[e]=t==null?"":t;break e}catch(c){}typeof t=="function"||(t==null||t===!1&&e[4]!="-"?i.removeAttribute(e):i.setAttribute(e,e=="popover"&&t==1?"":t))}}function t3(i){return function(e){if(this.l){var t=this.l[e.type+i];if(e.t==null)e.t=kB++;else if(e.t0?i:sw(i)?i.map(r3):mm({},i)}function L$(i,e,t,n,r,a,o,c,u){var f,g,v,M,R,I,re,ne=t.props||iw,J=e.props,be=e.type;if(be=="svg"?r="http://www.w3.org/2000/svg":be=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),a!=null){for(f=0;f2&&(c.children=arguments.length>3?rw.call(arguments,2):t),aw(i.type,c,n||i.key,r||i.ref,null)}function JY(i){function e(t){var n,r;return this.getChildContext||(n=new Set,(r={})[e.__c]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(a){this.props.value!=a.value&&n.forEach(function(o){o.__e=!0,zB(o)})},this.sub=function(a){n.add(a);var o=a.componentWillUnmount;a.componentWillUnmount=function(){n&&n.delete(a),o&&o.call(a)}}),t.children}return e.__c="__cC"+XD++,e.__=i,e.Provider=e.__l=(e.Consumer=function(t,n){return t.children(n)}).contextType=e,e}rw=jD.slice,dh={__e:function(i,e,t,n){for(var r,a,o;e=e.__;)if((r=e.__c)&&!r.__)try{if((a=r.constructor)&&a.getDerivedStateFromError!=null&&(r.setState(a.getDerivedStateFromError(i)),o=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(i,n||{}),o=r.__d),o)return r.__E=r}catch(c){i=c}throw i}},zD=0,QD=function(i){return i!=null&&i.constructor===void 0},wE.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=mm({},this.state),typeof i=="function"&&(i=i(mm({},t),this.props)),i&&mm(t,i),i!=null&&this.__v&&(e&&this._sb.push(e),zB(this))},wE.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),zB(this))},wE.prototype.render=bE,Uy=[],ZD=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,KD=function(i,e){return i.__v.__b-e.__v.__b},SE.__r=0,$D=/(PointerCapture)$|Capture$/i,kB=0,VB=t3(!1),HB=t3(!0),XD=0;function o3(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);t2&&arguments[2]!==void 0?arguments[2]:{},r=n.style,a=r===void 0?{}:r,o=!!e&&ME(e)==="object"&&!!e.node&&typeof e.node=="function",c=M$(o?e.node():e);c.style("position")==="static"&&c.style("position","relative"),t.tooltipEl=c.append("div").attr("class","float-tooltip-kap"),Object.entries(a).forEach(function(f){var g=G$(f,2),v=g[0],M=g[1];return t.tooltipEl.style(v,M)}),t.tooltipEl.style("left","-10000px").style("display","none");var u="tooltip-".concat(Math.round(Math.random()*1e12));t.mouseInside=!1,c.on("mousemove.".concat(u),function(f){t.mouseInside=!0;var g=C$(f),v=c.node(),M=v.offsetWidth,R=v.offsetHeight,I=[t.offsetX===null||t.offsetX===void 0?"-".concat(g[0]/M*100,"%"):typeof t.offsetX=="number"?"calc(-50% + ".concat(t.offsetX,"px)"):t.offsetX,t.offsetY===null||t.offsetY===void 0?R>130&&R-g[1]<100?"calc(-100% - 6px)":"21px":typeof t.offsetY=="number"?t.offsetY<0?"calc(-100% - ".concat(Math.abs(t.offsetY),"px)"):"".concat(t.offsetY,"px"):t.offsetY];t.tooltipEl.style("left",g[0]+"px").style("top",g[1]+"px").style("transform","translate(".concat(I.join(","),")")),t.content&&t.tooltipEl.style("display","inline")}),c.on("mouseover.".concat(u),function(){t.mouseInside=!0,t.content&&t.tooltipEl.style("display","inline")}),c.on("mouseout.".concat(u),function(){t.mouseInside=!1,t.tooltipEl.style("display","none")})},update:function(e){e.tooltipEl.style("display",e.content&&e.mouseInside?"inline":"none"),e.content?e.content instanceof HTMLElement?(e.tooltipEl.text(""),e.tooltipEl.append(function(){return e.content})):typeof e.content=="string"?e.tooltipEl.html(e.content):Z$(e.content)?(e.tooltipEl.text(""),K$(e.content,e.tooltipEl.node())):(e.tooltipEl.style("display","none"),console.warn("Tooltip content is invalid, skipping.",e.content,e.content.toString())):e.tooltipEl.text("")}});function Y$(i,e){e===void 0&&(e={});var t=e.insertAt;if(typeof document!="undefined"){var n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=i:r.appendChild(document.createTextNode(i))}}var q$=`.scene-nav-info { + position: absolute; + bottom: 5px; + width: 100%; + text-align: center; + color: slategrey; + opacity: 0.7; + font-size: 10px; + font-family: sans-serif; + pointer-events: none; + user-select: none; +} + +.scene-container canvas:focus { + outline: none; +}`;Y$(q$);function $B(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);t=e.pointerRaycasterThrottleMs){e.lastRaycasterCheck=t;var n=null;if(e.hoverDuringDrag||!e.isPointerDragging){var r=this.intersectingObjects(e.pointerPos.x,e.pointerPos.y);e.hoverOrderComparator&&r.sort(function(o,c){return e.hoverOrderComparator(o.object,c.object)});var a=r.find(function(o){return e.hoverFilter(o.object)})||null;n=a?a.object:null,e.intersection=a||null}n!==e.hoverObj&&(e.onHover(n,e.hoverObj,e.intersection),e.tooltip.content(n&&Nl(e.tooltipContent)(n,e.intersection)||null),e.hoverObj=n)}e.tweenGroup.update()}return this},getPointerPos:function(e){var t=e.pointerPos,n=t.x,r=t.y;return{x:n,y:r}},cameraPosition:function(e,t,n,r){var a=e.camera;if(t&&e.initialised){var o=t,c=n||{x:0,y:0,z:0};if(!r)g(o),v(c);else{var u=Object.assign({},a.position),f=M();e.tweenGroup.add(new UB(u).to(o,r).easing(Bv.Quadratic.Out).onUpdate(g).start()),e.tweenGroup.add(new UB(f).to(c,r/3).easing(Bv.Quadratic.Out).onUpdate(v).start())}return this}return Object.assign({},a.position,{lookAt:M()});function g(R){var I=R.x,re=R.y,ne=R.z;I!==void 0&&(a.position.x=I),re!==void 0&&(a.position.y=re),ne!==void 0&&(a.position.z=ne)}function v(R){var I=new Ah.Vector3(R.x,R.y,R.z);e.controls.enabled&&e.controls.target?e.controls.target=I:a.lookAt(I)}function M(){return Object.assign(new Ah.Vector3(0,0,-1e3).applyQuaternion(a.quaternion).add(a.position))}},zoomToFit:function(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,r=arguments.length,a=new Array(r>3?r-3:0),o=3;o2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:10,a=e.camera;if(t){var o=new Ah.Vector3(0,0,0),c=Math.max.apply(Math,Dy(Object.entries(t).map(function(R){var I=aX(R,2),re=I[0],ne=I[1];return Math.max.apply(Math,Dy(ne.map(function(J){return Math.abs(o[re]-J)})))})))*2,u=(1-r*2/e.height)*a.fov,f=c/Math.atan(u*Math.PI/180),g=f/a.aspect,v=Math.max(f,g);if(v>0){var M=o.clone().sub(a.position).normalize().multiplyScalar(-v);this.cameraPosition(M,o,n)}}return this},getBbox:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){return!0},n=new Ah.Box3(new Ah.Vector3(0,0,0),new Ah.Vector3(0,0,0)),r=e.objects.filter(t);return r.length?(r.forEach(function(a){return n.expandByObject(a)}),Object.assign.apply(Object,Dy(["x","y","z"].map(function(a){return tX({},a,[n.min[a],n.max[a]])})))):null},getScreenCoords:function(e,t,n,r){var a=new Ah.Vector3(t,n,r);return a.project(this.camera()),{x:(a.x+1)*e.width/2,y:-(a.y-1)*e.height/2}},getSceneCoords:function(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=new Ah.Vector2(t/e.width*2-1,-(n/e.height)*2+1),o=new Ah.Raycaster;return o.setFromCamera(a,e.camera),Object.assign({},o.ray.at(r,new Ah.Vector3))},intersectingObjects:function(e,t,n){var r=new Ah.Vector2(t/e.width*2-1,-(n/e.height)*2+1),a=new Ah.Raycaster;return a.params.Line.threshold=e.lineHoverPrecision,a.params.Points.threshold=e.pointsHoverPrecision,a.setFromCamera(r,e.camera),a.intersectObjects(e.objects,!0)},renderer:function(e){return e.renderer},scene:function(e){return e.scene},camera:function(e){return e.camera},postProcessingComposer:function(e){return e.postProcessingComposer},controls:function(e){return e.controls},tbControls:function(e){return e.controls}},stateInit:function(){return{scene:new Ah.Scene,camera:new Ah.PerspectiveCamera,clock:new Ah.Clock,tweenGroup:new NB,lastRaycasterCheck:0}},init:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.controlType,a=r===void 0?"trackball":r,o=n.useWebGPU,c=o===void 0?!1:o,u=n.rendererConfig,f=u===void 0?{}:u,g=n.extraRenderers,v=g===void 0?[]:g,M=n.waitForLoadComplete,R=M===void 0?!0:M;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.className="scene-container",t.container.style.position="relative",t.container.appendChild(t.navInfo=document.createElement("div")),t.navInfo.className="scene-nav-info",t.navInfo.textContent={orbit:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",trackball:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",fly:"WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw"}[a]||"",t.navInfo.style.display=t.showNavInfo?null:"none",t.tooltip=new j$(t.container),t.pointerPos=new Ah.Vector2,t.pointerPos.x=-2,t.pointerPos.y=-2,["pointermove","pointerdown"].forEach(function(I){return t.container.addEventListener(I,function(re){if(I==="pointerdown"&&(t.isPointerPressed=!0),!t.isPointerDragging&&re.type==="pointermove"&&(re.pressure>0||t.isPointerPressed)&&(re.pointerType==="mouse"||re.movementX===void 0||[re.movementX,re.movementY].some(function(be){return Math.abs(be)>1}))&&(t.isPointerDragging=!0),t.enablePointerInteraction){var ne=J(t.container);t.pointerPos.x=re.pageX-ne.left,t.pointerPos.y=re.pageY-ne.top}function J(be){var Re=be.getBoundingClientRect(),ze=window.pageXOffset||document.documentElement.scrollLeft,st=window.pageYOffset||document.documentElement.scrollTop;return{top:Re.top+st,left:Re.left+ze}}},{passive:!0})}),t.container.addEventListener("pointerup",function(I){t.isPointerPressed&&(t.isPointerPressed=!1,!(t.isPointerDragging&&(t.isPointerDragging=!1,!t.clickAfterDrag))&&requestAnimationFrame(function(){I.button===0&&t.onClick(t.hoverObj||null,I,t.intersection),I.button===2&&t.onRightClick&&t.onRightClick(t.hoverObj||null,I,t.intersection)}))},{passive:!0,capture:!0}),t.container.addEventListener("contextmenu",function(I){t.onRightClick&&I.preventDefault()}),t.renderer=new(c?A9:Ah.WebGLRenderer)(Object.assign({antialias:!0,alpha:!0},f)),t.renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),t.container.appendChild(t.renderer.domElement),t.extraRenderers=v,t.extraRenderers.forEach(function(I){I.domElement.style.position="absolute",I.domElement.style.top="0px",I.domElement.style.pointerEvents="none",t.container.appendChild(I.domElement)}),t.postProcessingComposer=new c7(t.renderer),t.postProcessingComposer.addPass(new u7(t.scene,t.camera)),t.controls=new{trackball:v9,orbit:L9,fly:$9}[a](t.camera,t.renderer.domElement),a==="fly"&&(t.controls.movementSpeed=300,t.controls.rollSpeed=Math.PI/6,t.controls.dragToLook=!0),(a==="trackball"||a==="orbit")&&(t.controls.minDistance=.1,t.controls.maxDistance=t.skyRadius,t.controls.addEventListener("start",function(){t.controlsEngaged=!0}),t.controls.addEventListener("change",function(){t.controlsEngaged&&(t.controlsDragging=!0)}),t.controls.addEventListener("end",function(){t.controlsEngaged=!1,t.controlsDragging=!1})),[t.renderer,t.postProcessingComposer].concat(Dy(t.extraRenderers)).forEach(function(I){return I.setSize(t.width,t.height)}),t.camera.aspect=t.width/t.height,t.camera.updateProjectionMatrix(),t.camera.position.z=1e3,t.scene.add(t.skysphere=new Ah.Mesh),t.skysphere.visible=!1,t.loadComplete=t.scene.visible=!R,window.scene=t.scene},update:function(e,t){if(e.width&&e.height&&(t.hasOwnProperty("width")||t.hasOwnProperty("height"))){var n,r=e.width,a=e.height;e.container.style.width="".concat(r,"px"),e.container.style.height="".concat(a,"px"),[e.renderer,e.postProcessingComposer].concat(Dy(e.extraRenderers)).forEach(function(R){return R.setSize(r,a)}),e.camera.aspect=r/a;var o=e.viewOffset.slice(0,2);o.some(function(R){return R})&&(n=e.camera).setViewOffset.apply(n,[r,a].concat(Dy(o),[r,a])),e.camera.updateProjectionMatrix()}if(t.hasOwnProperty("viewOffset")){var c,u=e.width,f=e.height,g=e.viewOffset.slice(0,2);g.some(function(R){return R})?(c=e.camera).setViewOffset.apply(c,[u,f].concat(Dy(g),[u,f])):e.camera.clearViewOffset()}if(t.hasOwnProperty("skyRadius")&&e.skyRadius&&(e.controls.hasOwnProperty("maxDistance")&&t.skyRadius&&(e.controls.maxDistance=Math.min(e.controls.maxDistance,e.skyRadius)),e.camera.far=e.skyRadius*2.5,e.camera.updateProjectionMatrix(),e.skysphere.geometry=new Ah.SphereGeometry(e.skyRadius)),t.hasOwnProperty("backgroundColor")){var v=b0(e.backgroundColor).alpha;v===void 0&&(v=1),e.renderer.setClearColor(new Ah.Color(wZ(1,e.backgroundColor)),v)}t.hasOwnProperty("backgroundImageUrl")&&(e.backgroundImageUrl?new Ah.TextureLoader().load(e.backgroundImageUrl,function(R){R.colorSpace=Ah.SRGBColorSpace,e.skysphere.material=new Ah.MeshBasicMaterial({map:R,side:Ah.BackSide}),e.skysphere.visible=!0,e.onBackgroundImageLoaded&&setTimeout(e.onBackgroundImageLoaded),!e.loadComplete&&M()}):(e.skysphere.visible=!1,e.skysphere.material.map=null,!e.loadComplete&&M())),t.hasOwnProperty("showNavInfo")&&(e.navInfo.style.display=e.showNavInfo?null:"none"),t.hasOwnProperty("lights")&&((t.lights||[]).forEach(function(R){return e.scene.remove(R)}),e.lights.forEach(function(R){return e.scene.add(R)})),t.hasOwnProperty("objects")&&((t.objects||[]).forEach(function(R){return e.scene.remove(R)}),e.objects.forEach(function(R){return e.scene.add(R)}));function M(){e.loadComplete=e.scene.visible=!0}}});function cX(i,e){e===void 0&&(e={});var t=e.insertAt;if(typeof document!="undefined"){var n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=i:r.appendChild(document.createTextNode(i))}}var uX=`.graph-info-msg { + top: 50%; + width: 100%; + text-align: center; + color: lavender; + opacity: 0.7; + font-size: 22px; + position: absolute; + font-family: Sans-serif; +} + +.scene-container .clickable { + cursor: pointer; +} + +.scene-container .grabbable { + cursor: move; + cursor: grab; + cursor: -moz-grab; + cursor: -webkit-grab; +} + +.scene-container .grabbable:active { + cursor: grabbing; + cursor: -moz-grabbing; + cursor: -webkit-grabbing; +}`;cX(uX);function XB(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);t1?c-1:0),f=1;f3?a-3:0),c=3;c=H.length?{done:!0}:{done:!1,value:H[F++]}},e:function(Y){throw Y},f:B}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var U,Q=!0,V=!1;return{s:function(){T=T.call(H)},n:function(){var Y=T.next();return Q=Y.done,Y},e:function(Y){V=!0,U=Y},f:function(){try{Q||T.return==null||T.return()}finally{if(V)throw U}}}}},69168:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return K}});var m=_(18773);function K(H,L){H.prototype=Object.create(L.prototype),H.prototype.constructor=H,(0,m.Z)(H,L)}},34907:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return L}});var m=_(58289);function K(T,F){for(;!{}.hasOwnProperty.call(T,F)&&(T=(0,m.Z)(T))!==null;);return T}function H(){return H=typeof Reflect!="undefined"&&Reflect.get?Reflect.get.bind():function(T,F,B){var U=K(T,F);if(U){var Q=Object.getOwnPropertyDescriptor(U,F);return Q.get?Q.get.call(arguments.length<3?T:B):Q.value}},H.apply(null,arguments)}function L(T,F,B,U){var Q=H((0,m.Z)(1&U?T.prototype:T),F,B);return 2&U&&typeof Q=="function"?function(V){return Q.apply(B,V)}:Q}},22497:function(Ie,Be){"use strict";var _={value:()=>{}};function m(){for(var F=0,B=arguments.length,U={},Q;F=0&&(Q=U.slice(V+1),U=U.slice(0,V)),U&&!B.hasOwnProperty(U))throw new Error("unknown type: "+U);return{type:U,name:Q}})}K.prototype=m.prototype={constructor:K,on:function(F,B){var U=this._,Q=H(F+"",U),V,j=-1,Y=Q.length;if(arguments.length<2){for(;++j0)for(var U=new Array(V),Q=0,V,j;Qtypeof bn=="object"&&bn!==null||typeof bn=="function",B={canHandle:bn=>F(bn)&&bn[m],serialize(bn){const{port1:Cr,port2:Ke}=new MessageChannel;return j(bn,Cr),[Ke,[Ke]]},deserialize(bn){return bn.start(),ue(bn)}},U={canHandle:bn=>F(bn)&&T in bn,serialize({value:bn}){let Cr;return bn instanceof Error?Cr={isError:!0,value:{message:bn.message,name:bn.name,stack:bn.stack}}:Cr={isError:!1,value:bn},[Cr,[]]},deserialize(bn){throw bn.isError?Object.assign(new Error(bn.value.message),bn.value):bn.value}},Q=new Map([["proxy",B],["throw",U]]);function V(bn,Cr){for(const Ke of bn)if(Cr===Ke||Ke==="*"||Ke instanceof RegExp&&Ke.test(Cr))return!0;return!1}function j(bn,Cr=globalThis,Ke=["*"]){Cr.addEventListener("message",function Rt(Qn){if(!Qn||!Qn.data)return;if(!V(Ke,Qn.origin)){console.warn(`Invalid origin '${Qn.origin}' for comlink proxy`);return}const{id:Yr,type:rn,path:An}=Object.assign({path:[]},Qn.data),Ln=(Qn.data.argumentList||[]).map(kn);let Tt;try{const Mt=An.slice(0,-1).reduce((pe,De)=>pe[De],bn),ge=An.reduce((pe,De)=>pe[De],bn);switch(rn){case"GET":Tt=ge;break;case"SET":Mt[An.slice(-1)[0]]=kn(Qn.data.value),Tt=!0;break;case"APPLY":Tt=ge.apply(Mt,Ln);break;case"CONSTRUCT":{const pe=new ge(...Ln);Tt=Ot(pe)}break;case"ENDPOINT":{const{port1:pe,port2:De}=new MessageChannel;j(bn,De),Tt=Fn(pe,[pe])}break;case"RELEASE":Tt=void 0;break;default:return}}catch(Mt){Tt={value:Mt,[T]:0}}Promise.resolve(Tt).catch(Mt=>({value:Mt,[T]:0})).then(Mt=>{const[ge,pe]=rr(Mt);Cr.postMessage(Object.assign(Object.assign({},ge),{id:Yr}),pe),rn==="RELEASE"&&(Cr.removeEventListener("message",Rt),fe(Cr),L in bn&&typeof bn[L]=="function"&&bn[L]())}).catch(Mt=>{const[ge,pe]=rr({value:new TypeError("Unserializable return value"),[T]:0});Cr.postMessage(Object.assign(Object.assign({},ge),{id:Yr}),pe)})}),Cr.start&&Cr.start()}function Y(bn){return bn.constructor.name==="MessagePort"}function fe(bn){Y(bn)&&bn.close()}function ue(bn,Cr){const Ke=new Map;return bn.addEventListener("message",function(Qn){const{data:Yr}=Qn;if(!Yr||!Yr.id)return;const rn=Ke.get(Yr.id);if(rn)try{rn(Yr)}finally{Ke.delete(Yr.id)}}),_t(bn,Ke,[],Cr)}function Me(bn){if(bn)throw new Error("Proxy has been released and is not useable")}function _e(bn){return Kn(bn,new Map,{type:"RELEASE"}).then(()=>{fe(bn)})}const Ce=new WeakMap,Xe="FinalizationRegistry"in globalThis&&new FinalizationRegistry(bn=>{const Cr=(Ce.get(bn)||0)-1;Ce.set(bn,Cr),Cr===0&&_e(bn)});function Fe(bn,Cr){const Ke=(Ce.get(Cr)||0)+1;Ce.set(Cr,Ke),Xe&&Xe.register(bn,Cr,bn)}function ft(bn){Xe&&Xe.unregister(bn)}function _t(bn,Cr,Ke=[],Rt=function(){}){let Qn=!1;const Yr=new Proxy(Rt,{get(rn,An){if(Me(Qn),An===H)return()=>{ft(Yr),_e(bn),Cr.clear(),Qn=!0};if(An==="then"){if(Ke.length===0)return{then:()=>Yr};const Ln=Kn(bn,Cr,{type:"GET",path:Ke.map(Tt=>Tt.toString())}).then(kn);return Ln.then.bind(Ln)}return _t(bn,Cr,[...Ke,An])},set(rn,An,Ln){Me(Qn);const[Tt,Mt]=rr(Ln);return Kn(bn,Cr,{type:"SET",path:[...Ke,An].map(ge=>ge.toString()),value:Tt},Mt).then(kn)},apply(rn,An,Ln){Me(Qn);const Tt=Ke[Ke.length-1];if(Tt===K)return Kn(bn,Cr,{type:"ENDPOINT"}).then(kn);if(Tt==="bind")return _t(bn,Cr,Ke.slice(0,-1));const[Mt,ge]=Vt(Ln);return Kn(bn,Cr,{type:"APPLY",path:Ke.map(pe=>pe.toString()),argumentList:Mt},ge).then(kn)},construct(rn,An){Me(Qn);const[Ln,Tt]=Vt(An);return Kn(bn,Cr,{type:"CONSTRUCT",path:Ke.map(Mt=>Mt.toString()),argumentList:Ln},Tt).then(kn)}});return Fe(Yr,bn),Yr}function lt(bn){return Array.prototype.concat.apply([],bn)}function Vt(bn){const Cr=bn.map(rr);return[Cr.map(Ke=>Ke[0]),lt(Cr.map(Ke=>Ke[1]))]}const It=new WeakMap;function Fn(bn,Cr){return It.set(bn,Cr),bn}function Ot(bn){return Object.assign(bn,{[m]:!0})}function jn(bn,Cr=globalThis,Ke="*"){return{postMessage:(Rt,Qn)=>bn.postMessage(Rt,Ke,Qn),addEventListener:Cr.addEventListener.bind(Cr),removeEventListener:Cr.removeEventListener.bind(Cr)}}function rr(bn){for(const[Cr,Ke]of Q)if(Ke.canHandle(bn)){const[Rt,Qn]=Ke.serialize(bn);return[{type:"HANDLER",name:Cr,value:Rt},Qn]}return[{type:"RAW",value:bn},It.get(bn)||[]]}function kn(bn){switch(bn.type){case"HANDLER":return Q.get(bn.name).deserialize(bn.value);case"RAW":return bn.value}}function Kn(bn,Cr,Ke,Rt){return new Promise(Qn=>{const Yr=_r();Cr.set(Yr,Qn),bn.start&&bn.start(),bn.postMessage(Object.assign({id:Yr},Ke),Rt)})}function _r(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}},14310:function(Ie,Be,_){"use strict";_.d(Be,{H:function(){return H},Z:function(){return m}});function m(L){const T=+this._x.call(null,L);return K(this.cover(T),T,L)}function K(L,T,F){if(isNaN(T))return L;var B,U=L._root,Q={data:F},V=L._x0,j=L._x1,Y,fe,ue,Me,_e;if(!U)return L._root=Q,L;for(;U.length;)if((ue=T>=(Y=(V+j)/2))?V=Y:j=Y,B=U,!(U=U[Me=+ue]))return B[Me]=Q,L;if(fe=+L._x.call(null,U.data),T===fe)return Q.next=U,B?B[Me]=Q:L._root=Q,L;do B=B?B[Me]=new Array(2):L._root=new Array(2),(ue=T>=(Y=(V+j)/2))?V=Y:j=Y;while((Me=+ue)==(_e=+(fe>=Y)));return B[_e]=U,B[Me]=Q,L}function H(L){Array.isArray(L)||(L=Array.from(L));const T=L.length,F=new Float64Array(T);let B=1/0,U=-1/0;for(let Q=0,V;QU&&(U=V));if(B>U)return this;this.cover(B).cover(U);for(let Q=0;QK||K>=L;)switch(U=+(KQ||(U=Y.x1)=ue))&&(Y=V[V.length-1],V[V.length-1]=V[V.length-1-fe],V[V.length-1-fe]=Y)}else{var Me=Math.abs(H-+this._x.call(null,j.data));Me=(Y=(Q+V)/2))?Q=Y:V=Y,L=T,!(T=T[ue=+fe]))return this;if(!T.length)break;L[ue+1&1]&&(F=L,Me=ue)}for(;T.data!==H;)if(B=T,!(T=T.next))return this;return(U=T.next)&&delete T.next,B?(U?B.next=U:delete B.next,this):L?(U?L[ue]=U:delete L[ue],(T=L[0]||L[1])&&T===(L[1]||L[0])&&!T.length&&(F?F[Me]=T:this._root=T),this):(this._root=U,this)}function K(H){for(var L=0,T=H.length;L(T=(m*T+K)%H)/H}},76633:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return T}});var m=_(85320),K=_(50277);function H(F){return F.index}function L(F,B){var U=F.get(B);if(!U)throw new Error("node not found: "+B);return U}function T(F){var B=H,U=Xe,Q,V=(0,m.Z)(30),j,Y,fe,ue,Me,_e,Ce=1;F==null&&(F=[]);function Xe(Vt){return 1/Math.min(ue[Vt.source.index],ue[Vt.target.index])}function Fe(Vt){for(var It=0,Fn=F.length;It1&&(_r=kn.y+kn.vy-rr.y-rr.vy||(0,K.Z)(_e)),fe>2&&(bn=kn.z+kn.vz-rr.z-rr.vz||(0,K.Z)(_e)),Cr=Math.sqrt(Kn*Kn+_r*_r+bn*bn),Cr=(Cr-j[Ot])/Cr*Vt*Q[Ot],Kn*=Cr,_r*=Cr,bn*=Cr,kn.vx-=Kn*(Ke=Me[Ot]),fe>1&&(kn.vy-=_r*Ke),fe>2&&(kn.vz-=bn*Ke),rr.vx+=Kn*(Ke=1-Ke),fe>1&&(rr.vy+=_r*Ke),fe>2&&(rr.vz+=bn*Ke)}function ft(){if(Y){var Vt,It=Y.length,Fn=F.length,Ot=new Map(Y.map((rr,kn)=>[B(rr,kn,Y),rr])),jn;for(Vt=0,ue=new Array(It);Vttypeof Fn=="function")||Math.random,fe=It.find(Fn=>[1,2,3].includes(Fn))||2,ft()},Fe.links=function(Vt){return arguments.length?(F=Vt,ft(),Fe):F},Fe.id=function(Vt){return arguments.length?(B=Vt,Fe):B},Fe.iterations=function(Vt){return arguments.length?(Ce=+Vt,Fe):Ce},Fe.strength=function(Vt){return arguments.length?(U=typeof Vt=="function"?Vt:(0,m.Z)(+Vt),_t(),Fe):U},Fe.distance=function(Vt){return arguments.length?(V=typeof Vt=="function"?Vt:(0,m.Z)(+Vt),lt(),Fe):V},Fe}},61147:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return B}});var m=_(33662),K=_(14301),H=_(7695),L=_(85320),T=_(50277),F=_(21668);function B(){var U,Q,V,j,Y,fe=(0,L.Z)(-30),ue,Me=1,_e=1/0,Ce=.81;function Xe(lt){var Vt,It=U.length,Fn=(Q===1?(0,m.Z)(U,F.x):Q===2?(0,K.Z)(U,F.x,F.y):Q===3?(0,H.Z)(U,F.x,F.y,F.z):null).visitAfter(ft);for(Y=lt,Vt=0;Vt1&&(lt.y=rr/Ot),Q>2&&(lt.z=kn/Ot)}else{It=lt,It.x=It.data.x,Q>1&&(It.y=It.data.y),Q>2&&(It.z=It.data.z);do Vt+=ue[It.data.index];while(It=It.next)}lt.value=Vt}function _t(lt,Vt,It,Fn,Ot){if(!lt.value)return!0;var jn=[It,Fn,Ot][Q-1],rr=lt.x-V.x,kn=Q>1?lt.y-V.y:0,Kn=Q>2?lt.z-V.z:0,_r=jn-Vt,bn=rr*rr+kn*kn+Kn*Kn;if(_r*_r/Ce1&&kn===0&&(kn=(0,T.Z)(j),bn+=kn*kn),Q>2&&Kn===0&&(Kn=(0,T.Z)(j),bn+=Kn*Kn),bn1&&(V.vy+=kn*lt.value*Y/bn),Q>2&&(V.vz+=Kn*lt.value*Y/bn)),!0;if(lt.length||bn>=_e)return;(lt.data!==V||lt.next)&&(rr===0&&(rr=(0,T.Z)(j),bn+=rr*rr),Q>1&&kn===0&&(kn=(0,T.Z)(j),bn+=kn*kn),Q>2&&Kn===0&&(Kn=(0,T.Z)(j),bn+=Kn*Kn),bn1&&(V.vy+=kn*_r),Q>2&&(V.vz+=Kn*_r));while(lt=lt.next)}return Xe.initialize=function(lt,...Vt){U=lt,j=Vt.find(It=>typeof It=="function")||Math.random,Q=Vt.find(It=>[1,2,3].includes(It))||2,Fe()},Xe.strength=function(lt){return arguments.length?(fe=typeof lt=="function"?lt:(0,L.Z)(+lt),Fe(),Xe):fe},Xe.distanceMin=function(lt){return arguments.length?(Me=lt*lt,Xe):Math.sqrt(Me)},Xe.distanceMax=function(lt){return arguments.length?(_e=lt*lt,Xe):Math.sqrt(_e)},Xe.theta=function(lt){return arguments.length?(Ce=lt*lt,Xe):Math.sqrt(Ce)},Xe}},21668:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return j},x:function(){return T},y:function(){return F},z:function(){return B}});var m=_(22497),K=_(83833),H=_(1076),L=3;function T(Y){return Y.x}function F(Y){return Y.y}function B(Y){return Y.z}var U=10,Q=Math.PI*(3-Math.sqrt(5)),V=Math.PI*20/(9+Math.sqrt(221));function j(Y,fe){fe=fe||2;var ue=Math.min(L,Math.max(1,Math.round(fe))),Me,_e=1,Ce=.001,Xe=1-Math.pow(Ce,1/300),Fe=0,ft=.6,_t=new Map,lt=(0,K.HT)(Fn),Vt=(0,m.Z)("tick","end"),It=(0,H.Z)();Y==null&&(Y=[]);function Fn(){Ot(),Vt.call("tick",Me),_e1&&(bn.fy==null?bn.y+=bn.vy*=ft:(bn.y=bn.fy,bn.vy=0)),ue>2&&(bn.fz==null?bn.z+=bn.vz*=ft:(bn.z=bn.fz,bn.vz=0));return Me}function jn(){for(var kn=0,Kn=Y.length,_r;kn1&&isNaN(_r.y)||ue>2&&isNaN(_r.z)){var bn=U*(ue>2?Math.cbrt(.5+kn):ue>1?Math.sqrt(.5+kn):kn),Cr=kn*Q,Ke=kn*V;ue===1?_r.x=bn:ue===2?(_r.x=bn*Math.cos(Cr),_r.y=bn*Math.sin(Cr)):(_r.x=bn*Math.sin(Cr)*Math.cos(Ke),_r.y=bn*Math.cos(Cr),_r.z=bn*Math.sin(Cr)*Math.sin(Ke))}(isNaN(_r.vx)||ue>1&&isNaN(_r.vy)||ue>2&&isNaN(_r.vz))&&(_r.vx=0,ue>1&&(_r.vy=0),ue>2&&(_r.vz=0))}}function rr(kn){return kn.initialize&&kn.initialize(Y,It,ue),kn}return jn(),Me={tick:Ot,restart:function(){return lt.restart(Fn),Me},stop:function(){return lt.stop(),Me},numDimensions:function(kn){return arguments.length?(ue=Math.min(L,Math.max(1,Math.round(kn))),_t.forEach(rr),Me):ue},nodes:function(kn){return arguments.length?(Y=kn,jn(),_t.forEach(rr),Me):Y},alpha:function(kn){return arguments.length?(_e=+kn,Me):_e},alphaMin:function(kn){return arguments.length?(Ce=+kn,Me):Ce},alphaDecay:function(kn){return arguments.length?(Xe=+kn,Me):+Xe},alphaTarget:function(kn){return arguments.length?(Fe=+kn,Me):Fe},velocityDecay:function(kn){return arguments.length?(ft=1-kn,Me):1-ft},randomSource:function(kn){return arguments.length?(It=kn,_t.forEach(rr),Me):It},force:function(kn,Kn){return arguments.length>1?(Kn==null?_t.delete(kn):_t.set(kn,rr(Kn)),Me):_t.get(kn)},find:function(){var kn=Array.prototype.slice.call(arguments),Kn=kn.shift()||0,_r=(ue>1?kn.shift():null)||0,bn=(ue>2?kn.shift():null)||0,Cr=kn.shift()||1/0,Ke=0,Rt=Y.length,Qn,Yr,rn,An,Ln,Tt;for(Cr*=Cr,Ke=0;Ke1?(Vt.on(kn,Kn),Me):Vt.on(kn)}}}},32575:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return m}});function m(K,H){var L,T=1;K==null&&(K=0),H==null&&(H=0);function F(){var B,U=L.length,Q,V=0,j=0;for(B=0;BFe.index){var Ke=ft-_r.x-_r.vx,Rt=_t-_r.y-_r.vy,Qn=Ke*Ke+Rt*Rt;Qnft+Cr||kn_t+Cr||Kn<_t-Cr}}function ue(_e){if(_e.data)return _e.r=Q[_e.data.index];for(var Ce=_e.r=0;Ce<4;++Ce)_e[Ce]&&_e[Ce].r>_e.r&&(_e.r=_e[Ce].r)}function Me(){if(U){var _e,Ce=U.length,Xe;for(Q=new Array(Ce),_e=0;_e(T=(m*T+K)%H)/H}},31136:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return T}});var m=_(91592),K=_(12068);function H(F){return F.index}function L(F,B){var U=F.get(B);if(!U)throw new Error("node not found: "+B);return U}function T(F){var B=H,U=Ce,Q,V=(0,m.Z)(30),j,Y,fe,ue,Me,_e=1;F==null&&(F=[]);function Ce(lt){return 1/Math.min(fe[lt.source.index],fe[lt.target.index])}function Xe(lt){for(var Vt=0,It=F.length;Vt<_e;++Vt)for(var Fn=0,Ot,jn,rr,kn,Kn,_r,bn;Fn[B(jn,rr,Y),jn])),Ot;for(lt=0,fe=new Array(Vt);lt=fe)return;(Fe.data!==B||Fe.next)&&(Vt===0&&(Vt=(0,H.Z)(U),Ot+=Vt*Vt),It===0&&(It=(0,H.Z)(U),Ot+=It*It),Ot1?(Fn==null?_e.delete(It):_e.set(It,Vt(Fn)),V):_e.get(It)},find:function(It,Fn,Ot){var jn=0,rr=Q.length,kn,Kn,_r,bn,Cr;for(Ot==null?Ot=1/0:Ot*=Ot,jn=0;jn1?(Xe.on(It,Fn),V):Xe.on(It)}}}},34123:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return K}});var m=_(91592);function K(H){var L=(0,m.Z)(.1),T,F,B;typeof H!="function"&&(H=(0,m.Z)(H==null?0:+H));function U(V){for(var j=0,Y=T.length,fe;j=(Xe=(Y+Me)/2))?Y=Xe:Me=Xe,(Fn=F>=(Fe=(fe+_e)/2))?fe=Fe:_e=Fe,(Ot=B>=(ft=(ue+Ce)/2))?ue=ft:Ce=ft,Q=V,!(V=V[jn=Ot<<2|Fn<<1|It]))return Q[jn]=j,L;if(_t=+L._x.call(null,V.data),lt=+L._y.call(null,V.data),Vt=+L._z.call(null,V.data),T===_t&&F===lt&&B===Vt)return j.next=V,Q?Q[jn]=j:L._root=j,L;do Q=Q?Q[jn]=new Array(8):L._root=new Array(8),(It=T>=(Xe=(Y+Me)/2))?Y=Xe:Me=Xe,(Fn=F>=(Fe=(fe+_e)/2))?fe=Fe:_e=Fe,(Ot=B>=(ft=(ue+Ce)/2))?ue=ft:Ce=ft;while((jn=Ot<<2|Fn<<1|It)===(rr=(Vt>=ft)<<2|(lt>=Fe)<<1|_t>=Xe));return Q[rr]=V,Q[jn]=j,L}function H(L){Array.isArray(L)||(L=Array.from(L));const T=L.length,F=new Float64Array(T),B=new Float64Array(T),U=new Float64Array(T);let Q=1/0,V=1/0,j=1/0,Y=-1/0,fe=-1/0,ue=-1/0;for(let Me=0,_e,Ce,Xe,Fe;MeY&&(Y=Ce),Xefe&&(fe=Xe),Feue&&(ue=Fe));if(Q>Y||V>fe||j>ue)return this;this.cover(Q,V,j).cover(Y,fe,ue);for(let Me=0;MeK||K>=U||F>H||H>=Q||B>L||L>=V;)switch(ue=(LCe||(Y=lt.y0)>Xe||(fe=lt.z0)>Fe||(ue=lt.x1)=Ot)<<2|(L>=Fn)<<1|H>=It)&&(lt=ft[ft.length-1],ft[ft.length-1]=ft[ft.length-1-Vt],ft[ft.length-1-Vt]=lt)}else{var jn=H-+this._x.call(null,_t.data),rr=L-+this._y.call(null,_t.data),kn=T-+this._z.call(null,_t.data),Kn=jn*jn+rr*rr+kn*kn;if(KnMath.sqrt(yg(H-F,2)+yg(L-B,2)+yg(T-U,2));function K(H,L,T,F){const B=[],U=H-F,Q=L-F,V=T-F,j=H+F,Y=L+F,fe=T+F;return this.visit((ue,Me,_e,Ce,Xe,Fe,ft)=>{if(!ue.length)do{const _t=ue.data;m(H,L,T,this._x(_t),this._y(_t),this._z(_t))<=F&&B.push(_t)}while(ue=ue.next);return Me>j||_e>Y||Ce>fe||Xe=(Xe=(Q+Y)/2))?Q=Xe:Y=Xe,(lt=_e>=(Fe=(V+fe)/2))?V=Fe:fe=Fe,(Vt=Ce>=(ft=(j+ue)/2))?j=ft:ue=ft,L=T,!(T=T[It=Vt<<2|lt<<1|_t]))return this;if(!T.length)break;(L[It+1&7]||L[It+2&7]||L[It+3&7]||L[It+4&7]||L[It+5&7]||L[It+6&7]||L[It+7&7])&&(F=L,Fn=It)}for(;T.data!==H;)if(B=T,!(T=T.next))return this;return(U=T.next)&&delete T.next,B?(U?B.next=U:delete B.next,this):L?(U?L[It]=U:delete L[It],(T=L[0]||L[1]||L[2]||L[3]||L[4]||L[5]||L[6]||L[7])&&T===(L[7]||L[6]||L[5]||L[4]||L[3]||L[2]||L[1]||L[0])&&!T.length&&(F?F[Fn]=T:this._root=T),this):(this._root=U,this)}function K(H){for(var L=0,T=H.length;L=(Me=(j+fe)/2))?j=Me:fe=Me,(ft=F>=(_e=(Y+ue)/2))?Y=_e:ue=_e,U=Q,!(Q=Q[_t=ft<<1|Fe]))return U[_t]=V,L;if(Ce=+L._x.call(null,Q.data),Xe=+L._y.call(null,Q.data),T===Ce&&F===Xe)return V.next=Q,U?U[_t]=V:L._root=V,L;do U=U?U[_t]=new Array(4):L._root=new Array(4),(Fe=T>=(Me=(j+fe)/2))?j=Me:fe=Me,(ft=F>=(_e=(Y+ue)/2))?Y=_e:ue=_e;while((_t=ft<<1|Fe)===(lt=(Xe>=_e)<<1|Ce>=Me));return U[lt]=Q,U[_t]=V,L}function H(L){var T,F,B=L.length,U,Q,V=new Array(B),j=new Array(B),Y=1/0,fe=1/0,ue=-1/0,Me=-1/0;for(F=0;Fue&&(ue=U),QMe&&(Me=Q));if(Y>ue||fe>Me)return this;for(this.cover(Y,fe).cover(ue,Me),F=0;FK||K>=F||T>H||H>=B;)switch(j=(Hfe||(V=Ce.y0)>ue||(j=Ce.x1)=ft)<<1|H>=Fe)&&(Ce=Me[Me.length-1],Me[Me.length-1]=Me[Me.length-1-Xe],Me[Me.length-1-Xe]=Ce)}else{var _t=H-+this._x.call(null,_e.data),lt=L-+this._y.call(null,_e.data),Vt=_t*_t+lt*lt;if(Vt=(Me=(Q+j)/2))?Q=Me:j=Me,(Xe=ue>=(_e=(V+Y)/2))?V=_e:Y=_e,L=T,!(T=T[Fe=Xe<<1|Ce]))return this;if(!T.length)break;(L[Fe+1&3]||L[Fe+2&3]||L[Fe+3&3])&&(F=L,ft=Fe)}for(;T.data!==H;)if(B=T,!(T=T.next))return this;return(U=T.next)&&delete T.next,B?(U?B.next=U:delete B.next,this):L?(U?L[Fe]=U:delete L[Fe],(T=L[0]||L[1]||L[2]||L[3])&&T===(L[3]||L[2]||L[1]||L[0])&&!T.length&&(F?F[ft]=T:this._root=T),this):(this._root=U,this)}function K(H){for(var L=0,T=H.length;L=0&&_t._call.call(void 0,lt),_t=_t._next;--m}function Ce(){U=(B=V.now())+Q,m=K=0;try{_e()}finally{m=0,Fe(),U=0}}function Xe(){var _t=V.now(),lt=_t-B;lt>L&&(Q-=lt,B=_t)}function Fe(){for(var _t,lt=T,Vt,It=1/0;lt;)lt._call?(It>lt._time&&(It=lt._time),_t=lt,lt=lt._next):(Vt=lt._next,lt._next=null,lt=_t?_t._next=Vt:T=Vt);F=_t,ft(It)}function ft(_t){if(!m){K&&(K=clearTimeout(K));var lt=_t-U;lt>24?(_t<1/0&&(K=setTimeout(Ce,_t-V.now()-Q)),H&&(H=clearInterval(H))):(H||(B=V.now(),H=setInterval(Xe,L)),m=1,j(Ce))}}},90681:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return Xe}});var m=_(12778),K=m.Z.Symbol,H=K,L=Object.prototype,T=L.hasOwnProperty,F=L.toString,B=H?H.toStringTag:void 0;function U(Fe){var ft=T.call(Fe,B),_t=Fe[B];try{Fe[B]=void 0;var lt=!0}catch(It){}var Vt=F.call(Fe);return lt&&(ft?Fe[B]=_t:delete Fe[B]),Vt}var Q=U,V=Object.prototype,j=V.toString;function Y(Fe){return j.call(Fe)}var fe=Y,ue="[object Null]",Me="[object Undefined]",_e=H?H.toStringTag:void 0;function Ce(Fe){return Fe==null?Fe===void 0?Me:ue:_e&&_e in Object(Fe)?Q(Fe):fe(Fe)}var Xe=Ce},61644:function(Ie,Be){"use strict";var _=typeof global=="object"&&global&&global.Object===Object&&global;Be.Z=_},12778:function(Ie,Be,_){"use strict";var m=_(61644),K=typeof self=="object"&&self&&self.Object===Object&&self,H=m.Z||K||Function("return this")();Be.Z=H},91519:function(Ie,Be){"use strict";function _(m){var K=typeof m;return m!=null&&(K=="object"||K=="function")}Be.Z=_},64162:function(Ie,Be){"use strict";function _(m){return m!=null&&typeof m=="object"}Be.Z=_},18230:function(Ie,Be,_){"use strict";_.d(Be,{KI_:function(){return Is},Kj0:function(){return ml},ROQ:function(){return Cw},TlE:function(){return ti},ZAu:function(){return Zd},ehD:function(){return ue},jyi:function(){return eg},u9r:function(){return no},vBJ:function(){return Io},xeV:function(){return Qm},xo$:function(){return e0},xoR:function(){return V_}});const m="140",K={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},H={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},L=0,T=1,F=2,B=3,U=0,Q=1,V=2,j=3,Y=0,fe=1,ue=2,Me=1,_e=2,Ce=0,Xe=1,Fe=2,ft=3,_t=4,lt=5,Vt=100,It=101,Fn=102,Ot=103,jn=104,rr=200,kn=201,Kn=202,_r=203,bn=204,Cr=205,Ke=206,Rt=207,Qn=208,Yr=209,rn=210,An=0,Ln=1,Tt=2,Mt=3,ge=4,pe=5,De=6,Ht=7,Jt=0,At=1,dn=2,fn=0,ut=1,Bt=2,un=3,Z=4,Te=5,Zt=300,Gt=301,On=302,In=303,pr=304,Je=306,we=1e3,at=1001,wt=1002,it=1003,ht=1004,St=1004,Yt=1005,$t=1005,Ft=1006,xn=1007,cr=1007,nr=1008,Lr=1008,si=1009,Pr=1010,ys=1011,Ri=1012,Fi=1013,ui=1014,gs=1015,Di=1016,Nn=1017,cn=1018,jt=1020,ct=1021,pt=1022,zt=1023,Mn=1024,sn=1025,ur=1026,lr=1027,oi=1028,mi=1029,Le=1030,k=1031,W=1033,S=33776,G=33777,ae=33778,We=33779,tt=35840,gt=35841,bt=35842,Bn=35843,Ge=36196,$e=37492,Ne=37496,Ye=37808,vt=37809,an=37810,xt=37811,tn=37812,Un=37813,hr=37814,or=37815,$r=37816,xr=37817,Rr=37818,pi=37819,Tn=37820,ir=37821,ni=36492,zr=2200,xs=2201,ms=2202,ls=2300,Oi=2301,Ds=2302,Bi=2400,Qs=2401,Na=2402,$n=2500,Ut=2501,Kt=0,Lt=1,Sn=2,Hn=3e3,ar=3001,Hr=3200,fi=3201,Qi=0,As=1,ks="",Is="srgb",Ks="srgb-linear",Ya=0,Ba=7680,Wa=7681,Mi=7682,Do=7683,Hl=34055,Gl=34056,zl=5386,Tl=512,Oc=513,hc=514,sc=515,tu=516,Xu=517,nl=518,Ql=519,Cl=35044,Kc=35048,Xs=35040,Uf=35045,of=35049,Df=35041,Sf=35046,Du=35050,ju=35042,pu="100",$c="300 es",lf=1035;class Nh{addEventListener(s,l){this._listeners===void 0&&(this._listeners={});const h=this._listeners;h[s]===void 0&&(h[s]=[]),h[s].indexOf(l)===-1&&h[s].push(l)}hasEventListener(s,l){if(this._listeners===void 0)return!1;const h=this._listeners;return h[s]!==void 0&&h[s].indexOf(l)!==-1}removeEventListener(s,l){if(this._listeners===void 0)return;const p=this._listeners[s];if(p!==void 0){const y=p.indexOf(l);y!==-1&&p.splice(y,1)}}dispatchEvent(s){if(this._listeners===void 0)return;const h=this._listeners[s.type];if(h!==void 0){s.target=this;const p=h.slice(0);for(let y=0,C=p.length;y>8&255]+Po[b>>16&255]+Po[b>>24&255]+"-"+Po[s&255]+Po[s>>8&255]+"-"+Po[s>>16&15|64]+Po[s>>24&255]+"-"+Po[l&63|128]+Po[l>>8&255]+"-"+Po[l>>16&255]+Po[l>>24&255]+Po[h&255]+Po[h>>8&255]+Po[h>>16&255]+Po[h>>24&255]).toLowerCase()}function yl(b,s,l){return Math.max(s,Math.min(l,b))}function xl(b,s){return(b%s+s)%s}function Of(b,s,l,h,p){return h+(b-s)*(p-h)/(l-s)}function nu(b,s,l){return b!==s?(l-b)/(s-b):0}function Rc(b,s,l){return(1-l)*b+l*s}function rl(b,s,l,h){return Rc(b,s,1-Math.exp(-l*h))}function gh(b,s=1){return s-Math.abs(xl(b,s*2)-s)}function Fh(b,s,l){return b<=s?0:b>=l?1:(b=(b-s)/(l-s),b*b*(3-2*b))}function Kh(b,s,l){return b<=s?0:b>=l?1:(b=(b-s)/(l-s),b*b*b*(b*(b*6-15)+10))}function _l(b,s){return b+Math.floor(Math.random()*(s-b+1))}function Ss(b,s){return b+Math.random()*(s-b)}function Ru(b){return b*(.5-Math.random())}function $h(b){b!==void 0&&(cf=b);let s=cf+=1831565813;return s=Math.imul(s^s>>>15,s|1),s^=s+Math.imul(s^s>>>7,s|61),((s^s>>>14)>>>0)/4294967296}function Xh(b){return b*Zh}function QA(b){return b*Lh}function Eh(b){return(b&b-1)===0&&b!==0}function uf(b){return Math.pow(2,Math.ceil(Math.log(b)/Math.LN2))}function jh(b){return Math.pow(2,Math.floor(Math.log(b)/Math.LN2))}function Pc(b,s,l,h,p){const y=Math.cos,C=Math.sin,P=y(l/2),ee=C(l/2),ie=y((s+h)/2),he=C((s+h)/2),me=y((s-h)/2),ve=C((s-h)/2),Ee=y((h-s)/2),Ve=C((h-s)/2);switch(p){case"XYX":b.set(P*he,ee*me,ee*ve,P*ie);break;case"YZY":b.set(ee*ve,P*he,ee*me,P*ie);break;case"ZXZ":b.set(ee*me,ee*ve,P*he,P*ie);break;case"XZX":b.set(P*he,ee*Ve,ee*Ee,P*ie);break;case"YXY":b.set(ee*Ee,P*he,ee*Ve,P*ie);break;case"ZYZ":b.set(ee*Ve,ee*Ee,P*he,P*ie);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+p)}}function Xc(b,s){switch(s.constructor){case Float32Array:return b;case Uint16Array:return b/65535;case Uint8Array:return b/255;case Int16Array:return Math.max(b/32767,-1);case Int8Array:return Math.max(b/127,-1);default:throw new Error("Invalid component type.")}}function bl(b,s){switch(s.constructor){case Float32Array:return b;case Uint16Array:return Math.round(b*65535);case Uint8Array:return Math.round(b*255);case Int16Array:return Math.round(b*32767);case Int8Array:return Math.round(b*127);default:throw new Error("Invalid component type.")}}var Fd=Object.freeze({__proto__:null,DEG2RAD:Zh,RAD2DEG:Lh,generateUUID:kc,clamp:yl,euclideanModulo:xl,mapLinear:Of,inverseLerp:nu,lerp:Rc,damp:rl,pingpong:gh,smoothstep:Fh,smootherstep:Kh,randInt:_l,randFloat:Ss,randFloatSpread:Ru,seededRandom:$h,degToRad:Xh,radToDeg:QA,isPowerOfTwo:Eh,ceilPowerOfTwo:uf,floorPowerOfTwo:jh,setQuaternionFromProperEuler:Pc,normalize:bl,denormalize:Xc});class Hi{constructor(s=0,l=0){this.x=s,this.y=l}get width(){return this.x}set width(s){this.x=s}get height(){return this.y}set height(s){this.y=s}set(s,l){return this.x=s,this.y=l,this}setScalar(s){return this.x=s,this.y=s,this}setX(s){return this.x=s,this}setY(s){return this.y=s,this}setComponent(s,l){switch(s){case 0:this.x=l;break;case 1:this.y=l;break;default:throw new Error("index is out of range: "+s)}return this}getComponent(s){switch(s){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+s)}}clone(){return new this.constructor(this.x,this.y)}copy(s){return this.x=s.x,this.y=s.y,this}add(s,l){return l!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(s,l)):(this.x+=s.x,this.y+=s.y,this)}addScalar(s){return this.x+=s,this.y+=s,this}addVectors(s,l){return this.x=s.x+l.x,this.y=s.y+l.y,this}addScaledVector(s,l){return this.x+=s.x*l,this.y+=s.y*l,this}sub(s,l){return l!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(s,l)):(this.x-=s.x,this.y-=s.y,this)}subScalar(s){return this.x-=s,this.y-=s,this}subVectors(s,l){return this.x=s.x-l.x,this.y=s.y-l.y,this}multiply(s){return this.x*=s.x,this.y*=s.y,this}multiplyScalar(s){return this.x*=s,this.y*=s,this}divide(s){return this.x/=s.x,this.y/=s.y,this}divideScalar(s){return this.multiplyScalar(1/s)}applyMatrix3(s){const l=this.x,h=this.y,p=s.elements;return this.x=p[0]*l+p[3]*h+p[6],this.y=p[1]*l+p[4]*h+p[7],this}min(s){return this.x=Math.min(this.x,s.x),this.y=Math.min(this.y,s.y),this}max(s){return this.x=Math.max(this.x,s.x),this.y=Math.max(this.y,s.y),this}clamp(s,l){return this.x=Math.max(s.x,Math.min(l.x,this.x)),this.y=Math.max(s.y,Math.min(l.y,this.y)),this}clampScalar(s,l){return this.x=Math.max(s,Math.min(l,this.x)),this.y=Math.max(s,Math.min(l,this.y)),this}clampLength(s,l){const h=this.length();return this.divideScalar(h||1).multiplyScalar(Math.max(s,Math.min(l,h)))}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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(s){return this.x*s.x+this.y*s.y}cross(s){return this.x*s.y-this.y*s.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}distanceTo(s){return Math.sqrt(this.distanceToSquared(s))}distanceToSquared(s){const l=this.x-s.x,h=this.y-s.y;return l*l+h*h}manhattanDistanceTo(s){return Math.abs(this.x-s.x)+Math.abs(this.y-s.y)}setLength(s){return this.normalize().multiplyScalar(s)}lerp(s,l){return this.x+=(s.x-this.x)*l,this.y+=(s.y-this.y)*l,this}lerpVectors(s,l,h){return this.x=s.x+(l.x-s.x)*h,this.y=s.y+(l.y-s.y)*h,this}equals(s){return s.x===this.x&&s.y===this.y}fromArray(s,l=0){return this.x=s[l],this.y=s[l+1],this}toArray(s=[],l=0){return s[l]=this.x,s[l+1]=this.y,s}fromBufferAttribute(s,l,h){return h!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=s.getX(l),this.y=s.getY(l),this}rotateAround(s,l){const h=Math.cos(l),p=Math.sin(l),y=this.x-s.x,C=this.y-s.y;return this.x=y*h-C*p+s.x,this.y=y*p+C*h+s.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}Hi.prototype.isVector2=!0;class sl{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(s,l,h,p,y,C,P,ee,ie){const he=this.elements;return he[0]=s,he[1]=p,he[2]=P,he[3]=l,he[4]=y,he[5]=ee,he[6]=h,he[7]=C,he[8]=ie,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(s){const l=this.elements,h=s.elements;return l[0]=h[0],l[1]=h[1],l[2]=h[2],l[3]=h[3],l[4]=h[4],l[5]=h[5],l[6]=h[6],l[7]=h[7],l[8]=h[8],this}extractBasis(s,l,h){return s.setFromMatrix3Column(this,0),l.setFromMatrix3Column(this,1),h.setFromMatrix3Column(this,2),this}setFromMatrix4(s){const l=s.elements;return this.set(l[0],l[4],l[8],l[1],l[5],l[9],l[2],l[6],l[10]),this}multiply(s){return this.multiplyMatrices(this,s)}premultiply(s){return this.multiplyMatrices(s,this)}multiplyMatrices(s,l){const h=s.elements,p=l.elements,y=this.elements,C=h[0],P=h[3],ee=h[6],ie=h[1],he=h[4],me=h[7],ve=h[2],Ee=h[5],Ve=h[8],Ue=p[0],Oe=p[3],Pt=p[6],Wt=p[1],gn=p[4],en=p[7],Dn=p[2],Zn=p[5],Br=p[8];return y[0]=C*Ue+P*Wt+ee*Dn,y[3]=C*Oe+P*gn+ee*Zn,y[6]=C*Pt+P*en+ee*Br,y[1]=ie*Ue+he*Wt+me*Dn,y[4]=ie*Oe+he*gn+me*Zn,y[7]=ie*Pt+he*en+me*Br,y[2]=ve*Ue+Ee*Wt+Ve*Dn,y[5]=ve*Oe+Ee*gn+Ve*Zn,y[8]=ve*Pt+Ee*en+Ve*Br,this}multiplyScalar(s){const l=this.elements;return l[0]*=s,l[3]*=s,l[6]*=s,l[1]*=s,l[4]*=s,l[7]*=s,l[2]*=s,l[5]*=s,l[8]*=s,this}determinant(){const s=this.elements,l=s[0],h=s[1],p=s[2],y=s[3],C=s[4],P=s[5],ee=s[6],ie=s[7],he=s[8];return l*C*he-l*P*ie-h*y*he+h*P*ee+p*y*ie-p*C*ee}invert(){const s=this.elements,l=s[0],h=s[1],p=s[2],y=s[3],C=s[4],P=s[5],ee=s[6],ie=s[7],he=s[8],me=he*C-P*ie,ve=P*ee-he*y,Ee=ie*y-C*ee,Ve=l*me+h*ve+p*Ee;if(Ve===0)return this.set(0,0,0,0,0,0,0,0,0);const Ue=1/Ve;return s[0]=me*Ue,s[1]=(p*ie-he*h)*Ue,s[2]=(P*h-p*C)*Ue,s[3]=ve*Ue,s[4]=(he*l-p*ee)*Ue,s[5]=(p*y-P*l)*Ue,s[6]=Ee*Ue,s[7]=(h*ee-ie*l)*Ue,s[8]=(C*l-h*y)*Ue,this}transpose(){let s;const l=this.elements;return s=l[1],l[1]=l[3],l[3]=s,s=l[2],l[2]=l[6],l[6]=s,s=l[5],l[5]=l[7],l[7]=s,this}getNormalMatrix(s){return this.setFromMatrix4(s).invert().transpose()}transposeIntoArray(s){const l=this.elements;return s[0]=l[0],s[1]=l[3],s[2]=l[6],s[3]=l[1],s[4]=l[4],s[5]=l[7],s[6]=l[2],s[7]=l[5],s[8]=l[8],this}setUvTransform(s,l,h,p,y,C,P){const ee=Math.cos(y),ie=Math.sin(y);return this.set(h*ee,h*ie,-h*(ee*C+ie*P)+C+s,-p*ie,p*ee,-p*(-ie*C+ee*P)+P+l,0,0,1),this}scale(s,l){const h=this.elements;return h[0]*=s,h[3]*=s,h[6]*=s,h[1]*=l,h[4]*=l,h[7]*=l,this}rotate(s){const l=Math.cos(s),h=Math.sin(s),p=this.elements,y=p[0],C=p[3],P=p[6],ee=p[1],ie=p[4],he=p[7];return p[0]=l*y+h*ee,p[3]=l*C+h*ie,p[6]=l*P+h*he,p[1]=-h*y+l*ee,p[4]=-h*C+l*ie,p[7]=-h*P+l*he,this}translate(s,l){const h=this.elements;return h[0]+=s*h[2],h[3]+=s*h[5],h[6]+=s*h[8],h[1]+=l*h[2],h[4]+=l*h[5],h[7]+=l*h[8],this}equals(s){const l=this.elements,h=s.elements;for(let p=0;p<9;p++)if(l[p]!==h[p])return!1;return!0}fromArray(s,l=0){for(let h=0;h<9;h++)this.elements[h]=s[h+l];return this}toArray(s=[],l=0){const h=this.elements;return s[l]=h[0],s[l+1]=h[1],s[l+2]=h[2],s[l+3]=h[3],s[l+4]=h[4],s[l+5]=h[5],s[l+6]=h[6],s[l+7]=h[7],s[l+8]=h[8],s}clone(){return new this.constructor().fromArray(this.elements)}}sl.prototype.isMatrix3=!0;function Bl(b){for(let s=b.length-1;s>=0;--s)if(b[s]>65535)return!0;return!1}const ac={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function lu(b,s){return new ac[b](s)}function Ou(b){return document.createElementNS("http://www.w3.org/1999/xhtml",b)}function al(b){return b<.04045?b*.0773993808:Math.pow(b*.9478672986+.0521327014,2.4)}function ul(b){return b<.0031308?b*12.92:1.055*Math.pow(b,.41666)-.055}const hl={[Is]:{[Ks]:al},[Ks]:{[Is]:ul}},bc={legacyMode:!0,get workingColorSpace(){return Ks},set workingColorSpace(b){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(b,s,l){if(this.legacyMode||s===l||!s||!l)return b;if(hl[s]&&hl[s][l]!==void 0){const h=hl[s][l];return b.r=h(b.r),b.g=h(b.g),b.b=h(b.b),b}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(b,s){return this.convert(b,this.workingColorSpace,s)},toWorkingColorSpace:function(b,s){return this.convert(b,s,this.workingColorSpace)}},ku={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},oc={r:0,g:0,b:0},Yo={h:0,s:0,l:0},Su={h:0,s:0,l:0};function rd(b,s,l){return l<0&&(l+=1),l>1&&(l-=1),l<1/6?b+(s-b)*6*l:l<1/2?s:l<2/3?b+(s-b)*6*(2/3-l):b}function Vu(b,s){return s.r=b.r,s.g=b.g,s.b=b.b,s}class js{constructor(s,l,h){return l===void 0&&h===void 0?this.set(s):this.setRGB(s,l,h)}set(s){return s&&s.isColor?this.copy(s):typeof s=="number"?this.setHex(s):typeof s=="string"&&this.setStyle(s),this}setScalar(s){return this.r=s,this.g=s,this.b=s,this}setHex(s,l=Is){return s=Math.floor(s),this.r=(s>>16&255)/255,this.g=(s>>8&255)/255,this.b=(s&255)/255,bc.toWorkingColorSpace(this,l),this}setRGB(s,l,h,p=Ks){return this.r=s,this.g=l,this.b=h,bc.toWorkingColorSpace(this,p),this}setHSL(s,l,h,p=Ks){if(s=xl(s,1),l=yl(l,0,1),h=yl(h,0,1),l===0)this.r=this.g=this.b=h;else{const y=h<=.5?h*(1+l):h+l-h*l,C=2*h-y;this.r=rd(C,y,s+1/3),this.g=rd(C,y,s),this.b=rd(C,y,s-1/3)}return bc.toWorkingColorSpace(this,p),this}setStyle(s,l=Is){function h(y){y!==void 0&&parseFloat(y)<1&&console.warn("THREE.Color: Alpha component of "+s+" will be ignored.")}let p;if(p=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(s)){let y;const C=p[1],P=p[2];switch(C){case"rgb":case"rgba":if(y=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(P))return this.r=Math.min(255,parseInt(y[1],10))/255,this.g=Math.min(255,parseInt(y[2],10))/255,this.b=Math.min(255,parseInt(y[3],10))/255,bc.toWorkingColorSpace(this,l),h(y[4]),this;if(y=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(P))return this.r=Math.min(100,parseInt(y[1],10))/100,this.g=Math.min(100,parseInt(y[2],10))/100,this.b=Math.min(100,parseInt(y[3],10))/100,bc.toWorkingColorSpace(this,l),h(y[4]),this;break;case"hsl":case"hsla":if(y=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(P)){const ee=parseFloat(y[1])/360,ie=parseInt(y[2],10)/100,he=parseInt(y[3],10)/100;return h(y[4]),this.setHSL(ee,ie,he,l)}break}}else if(p=/^\#([A-Fa-f\d]+)$/.exec(s)){const y=p[1],C=y.length;if(C===3)return this.r=parseInt(y.charAt(0)+y.charAt(0),16)/255,this.g=parseInt(y.charAt(1)+y.charAt(1),16)/255,this.b=parseInt(y.charAt(2)+y.charAt(2),16)/255,bc.toWorkingColorSpace(this,l),this;if(C===6)return this.r=parseInt(y.charAt(0)+y.charAt(1),16)/255,this.g=parseInt(y.charAt(2)+y.charAt(3),16)/255,this.b=parseInt(y.charAt(4)+y.charAt(5),16)/255,bc.toWorkingColorSpace(this,l),this}return s&&s.length>0?this.setColorName(s,l):this}setColorName(s,l=Is){const h=ku[s.toLowerCase()];return h!==void 0?this.setHex(h,l):console.warn("THREE.Color: Unknown color "+s),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(s){return this.r=s.r,this.g=s.g,this.b=s.b,this}copySRGBToLinear(s){return this.r=al(s.r),this.g=al(s.g),this.b=al(s.b),this}copyLinearToSRGB(s){return this.r=ul(s.r),this.g=ul(s.g),this.b=ul(s.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(s=Is){return bc.fromWorkingColorSpace(Vu(this,oc),s),yl(oc.r*255,0,255)<<16^yl(oc.g*255,0,255)<<8^yl(oc.b*255,0,255)<<0}getHexString(s=Is){return("000000"+this.getHex(s).toString(16)).slice(-6)}getHSL(s,l=Ks){bc.fromWorkingColorSpace(Vu(this,oc),l);const h=oc.r,p=oc.g,y=oc.b,C=Math.max(h,p,y),P=Math.min(h,p,y);let ee,ie;const he=(P+C)/2;if(P===C)ee=0,ie=0;else{const me=C-P;switch(ie=he<=.5?me/(C+P):me/(2-C-P),C){case h:ee=(p-y)/me+(p2048||l.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",s),l.toDataURL("image/jpeg",.6)):l.toDataURL("image/png")}static sRGBToLinear(s){if(typeof HTMLImageElement!="undefined"&&s instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&s instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&s instanceof ImageBitmap){const l=Ou("canvas");l.width=s.width,l.height=s.height;const h=l.getContext("2d");h.drawImage(s,0,0,s.width,s.height);const p=h.getImageData(0,0,s.width,s.height),y=p.data;for(let C=0;C1)switch(this.wrapS){case we:s.x=s.x-Math.floor(s.x);break;case at:s.x=s.x<0?0:1;break;case wt:Math.abs(Math.floor(s.x)%2)===1?s.x=Math.ceil(s.x)-s.x:s.x=s.x-Math.floor(s.x);break}if(s.y<0||s.y>1)switch(this.wrapT){case we:s.y=s.y-Math.floor(s.y);break;case at:s.y=s.y<0?0:1;break;case wt:Math.abs(Math.floor(s.y)%2)===1?s.y=Math.ceil(s.y)-s.y:s.y=s.y-Math.floor(s.y);break}return this.flipY&&(s.y=1-s.y),s}set needsUpdate(s){s===!0&&(this.version++,this.source.needsUpdate=!0)}}Ro.DEFAULT_IMAGE=null,Ro.DEFAULT_MAPPING=Zt,Ro.prototype.isTexture=!0;class ro{constructor(s=0,l=0,h=0,p=1){this.x=s,this.y=l,this.z=h,this.w=p}get width(){return this.z}set width(s){this.z=s}get height(){return this.w}set height(s){this.w=s}set(s,l,h,p){return this.x=s,this.y=l,this.z=h,this.w=p,this}setScalar(s){return this.x=s,this.y=s,this.z=s,this.w=s,this}setX(s){return this.x=s,this}setY(s){return this.y=s,this}setZ(s){return this.z=s,this}setW(s){return this.w=s,this}setComponent(s,l){switch(s){case 0:this.x=l;break;case 1:this.y=l;break;case 2:this.z=l;break;case 3:this.w=l;break;default:throw new Error("index is out of range: "+s)}return this}getComponent(s){switch(s){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: "+s)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(s){return this.x=s.x,this.y=s.y,this.z=s.z,this.w=s.w!==void 0?s.w:1,this}add(s,l){return l!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(s,l)):(this.x+=s.x,this.y+=s.y,this.z+=s.z,this.w+=s.w,this)}addScalar(s){return this.x+=s,this.y+=s,this.z+=s,this.w+=s,this}addVectors(s,l){return this.x=s.x+l.x,this.y=s.y+l.y,this.z=s.z+l.z,this.w=s.w+l.w,this}addScaledVector(s,l){return this.x+=s.x*l,this.y+=s.y*l,this.z+=s.z*l,this.w+=s.w*l,this}sub(s,l){return l!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(s,l)):(this.x-=s.x,this.y-=s.y,this.z-=s.z,this.w-=s.w,this)}subScalar(s){return this.x-=s,this.y-=s,this.z-=s,this.w-=s,this}subVectors(s,l){return this.x=s.x-l.x,this.y=s.y-l.y,this.z=s.z-l.z,this.w=s.w-l.w,this}multiply(s){return this.x*=s.x,this.y*=s.y,this.z*=s.z,this.w*=s.w,this}multiplyScalar(s){return this.x*=s,this.y*=s,this.z*=s,this.w*=s,this}applyMatrix4(s){const l=this.x,h=this.y,p=this.z,y=this.w,C=s.elements;return this.x=C[0]*l+C[4]*h+C[8]*p+C[12]*y,this.y=C[1]*l+C[5]*h+C[9]*p+C[13]*y,this.z=C[2]*l+C[6]*h+C[10]*p+C[14]*y,this.w=C[3]*l+C[7]*h+C[11]*p+C[15]*y,this}divideScalar(s){return this.multiplyScalar(1/s)}setAxisAngleFromQuaternion(s){this.w=2*Math.acos(s.w);const l=Math.sqrt(1-s.w*s.w);return l<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=s.x/l,this.y=s.y/l,this.z=s.z/l),this}setAxisAngleFromRotationMatrix(s){let l,h,p,y;const ee=s.elements,ie=ee[0],he=ee[4],me=ee[8],ve=ee[1],Ee=ee[5],Ve=ee[9],Ue=ee[2],Oe=ee[6],Pt=ee[10];if(Math.abs(he-ve)<.01&&Math.abs(me-Ue)<.01&&Math.abs(Ve-Oe)<.01){if(Math.abs(he+ve)<.1&&Math.abs(me+Ue)<.1&&Math.abs(Ve+Oe)<.1&&Math.abs(ie+Ee+Pt-3)<.1)return this.set(1,0,0,0),this;l=Math.PI;const gn=(ie+1)/2,en=(Ee+1)/2,Dn=(Pt+1)/2,Zn=(he+ve)/4,Br=(me+Ue)/4,ln=(Ve+Oe)/4;return gn>en&&gn>Dn?gn<.01?(h=0,p=.707106781,y=.707106781):(h=Math.sqrt(gn),p=Zn/h,y=Br/h):en>Dn?en<.01?(h=.707106781,p=0,y=.707106781):(p=Math.sqrt(en),h=Zn/p,y=ln/p):Dn<.01?(h=.707106781,p=.707106781,y=0):(y=Math.sqrt(Dn),h=Br/y,p=ln/y),this.set(h,p,y,l),this}let Wt=Math.sqrt((Oe-Ve)*(Oe-Ve)+(me-Ue)*(me-Ue)+(ve-he)*(ve-he));return Math.abs(Wt)<.001&&(Wt=1),this.x=(Oe-Ve)/Wt,this.y=(me-Ue)/Wt,this.z=(ve-he)/Wt,this.w=Math.acos((ie+Ee+Pt-1)/2),this}min(s){return this.x=Math.min(this.x,s.x),this.y=Math.min(this.y,s.y),this.z=Math.min(this.z,s.z),this.w=Math.min(this.w,s.w),this}max(s){return this.x=Math.max(this.x,s.x),this.y=Math.max(this.y,s.y),this.z=Math.max(this.z,s.z),this.w=Math.max(this.w,s.w),this}clamp(s,l){return this.x=Math.max(s.x,Math.min(l.x,this.x)),this.y=Math.max(s.y,Math.min(l.y,this.y)),this.z=Math.max(s.z,Math.min(l.z,this.z)),this.w=Math.max(s.w,Math.min(l.w,this.w)),this}clampScalar(s,l){return this.x=Math.max(s,Math.min(l,this.x)),this.y=Math.max(s,Math.min(l,this.y)),this.z=Math.max(s,Math.min(l,this.z)),this.w=Math.max(s,Math.min(l,this.w)),this}clampLength(s,l){const h=this.length();return this.divideScalar(h||1).multiplyScalar(Math.max(s,Math.min(l,h)))}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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(s){return this.x*s.x+this.y*s.y+this.z*s.z+this.w*s.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(s){return this.normalize().multiplyScalar(s)}lerp(s,l){return this.x+=(s.x-this.x)*l,this.y+=(s.y-this.y)*l,this.z+=(s.z-this.z)*l,this.w+=(s.w-this.w)*l,this}lerpVectors(s,l,h){return this.x=s.x+(l.x-s.x)*h,this.y=s.y+(l.y-s.y)*h,this.z=s.z+(l.z-s.z)*h,this.w=s.w+(l.w-s.w)*h,this}equals(s){return s.x===this.x&&s.y===this.y&&s.z===this.z&&s.w===this.w}fromArray(s,l=0){return this.x=s[l],this.y=s[l+1],this.z=s[l+2],this.w=s[l+3],this}toArray(s=[],l=0){return s[l]=this.x,s[l+1]=this.y,s[l+2]=this.z,s[l+3]=this.w,s}fromBufferAttribute(s,l,h){return h!==void 0&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=s.getX(l),this.y=s.getY(l),this.z=s.getZ(l),this.w=s.getW(l),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}}ro.prototype.isVector4=!0;class Wl extends Nh{constructor(s,l,h={}){super(),this.width=s,this.height=l,this.depth=1,this.scissor=new ro(0,0,s,l),this.scissorTest=!1,this.viewport=new ro(0,0,s,l);const p={width:s,height:l,depth:1};this.texture=new Ro(p,h.mapping,h.wrapS,h.wrapT,h.magFilter,h.minFilter,h.format,h.type,h.anisotropy,h.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=h.generateMipmaps!==void 0?h.generateMipmaps:!1,this.texture.internalFormat=h.internalFormat!==void 0?h.internalFormat:null,this.texture.minFilter=h.minFilter!==void 0?h.minFilter:Ft,this.depthBuffer=h.depthBuffer!==void 0?h.depthBuffer:!0,this.stencilBuffer=h.stencilBuffer!==void 0?h.stencilBuffer:!1,this.depthTexture=h.depthTexture!==void 0?h.depthTexture:null,this.samples=h.samples!==void 0?h.samples:0}setSize(s,l,h=1){(this.width!==s||this.height!==l||this.depth!==h)&&(this.width=s,this.height=l,this.depth=h,this.texture.image.width=s,this.texture.image.height=l,this.texture.image.depth=h,this.dispose()),this.viewport.set(0,0,s,l),this.scissor.set(0,0,s,l)}clone(){return new this.constructor().copy(this)}copy(s){this.width=s.width,this.height=s.height,this.depth=s.depth,this.viewport.copy(s.viewport),this.texture=s.texture.clone(),this.texture.isRenderTargetTexture=!0;const l=Object.assign({},s.texture.image);return this.texture.source=new Za(l),this.depthBuffer=s.depthBuffer,this.stencilBuffer=s.stencilBuffer,s.depthTexture!==null&&(this.depthTexture=s.depthTexture.clone()),this.samples=s.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}Wl.prototype.isWebGLRenderTarget=!0;class Uh extends Ro{constructor(s=null,l=1,h=1,p=1){super(null),this.image={data:s,width:l,height:h,depth:p},this.magFilter=it,this.minFilter=it,this.wrapR=at,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}Uh.prototype.isDataArrayTexture=!0;class Yu extends Wl{constructor(s,l,h){super(s,l),this.depth=h,this.texture=new Uh(null,s,l,h),this.texture.isRenderTargetTexture=!0}}Yu.prototype.isWebGLArrayRenderTarget=!0;class to extends Ro{constructor(s=null,l=1,h=1,p=1){super(null),this.image={data:s,width:l,height:h,depth:p},this.magFilter=it,this.minFilter=it,this.wrapR=at,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}to.prototype.isData3DTexture=!0;class vd extends Wl{constructor(s,l,h){super(s,l),this.depth=h,this.texture=new to(null,s,l,h),this.texture.isRenderTargetTexture=!0}}vd.prototype.isWebGL3DRenderTarget=!0;class Np extends Wl{constructor(s,l,h,p={}){super(s,l,p);const y=this.texture;this.texture=[];for(let C=0;C=0?1:-1,gn=1-Pt*Pt;if(gn>Number.EPSILON){const Dn=Math.sqrt(gn),Zn=Math.atan2(Dn,Pt*Wt);Oe=Math.sin(Oe*Zn)/Dn,P=Math.sin(P*Zn)/Dn}const en=P*Wt;if(ee=ee*Oe+ve*en,ie=ie*Oe+Ee*en,he=he*Oe+Ve*en,me=me*Oe+Ue*en,Oe===1-P){const Dn=1/Math.sqrt(ee*ee+ie*ie+he*he+me*me);ee*=Dn,ie*=Dn,he*=Dn,me*=Dn}}s[l]=ee,s[l+1]=ie,s[l+2]=he,s[l+3]=me}static multiplyQuaternionsFlat(s,l,h,p,y,C){const P=h[p],ee=h[p+1],ie=h[p+2],he=h[p+3],me=y[C],ve=y[C+1],Ee=y[C+2],Ve=y[C+3];return s[l]=P*Ve+he*me+ee*Ee-ie*ve,s[l+1]=ee*Ve+he*ve+ie*me-P*Ee,s[l+2]=ie*Ve+he*Ee+P*ve-ee*me,s[l+3]=he*Ve-P*me-ee*ve-ie*Ee,s}get x(){return this._x}set x(s){this._x=s,this._onChangeCallback()}get y(){return this._y}set y(s){this._y=s,this._onChangeCallback()}get z(){return this._z}set z(s){this._z=s,this._onChangeCallback()}get w(){return this._w}set w(s){this._w=s,this._onChangeCallback()}set(s,l,h,p){return this._x=s,this._y=l,this._z=h,this._w=p,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(s){return this._x=s.x,this._y=s.y,this._z=s.z,this._w=s.w,this._onChangeCallback(),this}setFromEuler(s,l){if(!(s&&s.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const h=s._x,p=s._y,y=s._z,C=s._order,P=Math.cos,ee=Math.sin,ie=P(h/2),he=P(p/2),me=P(y/2),ve=ee(h/2),Ee=ee(p/2),Ve=ee(y/2);switch(C){case"XYZ":this._x=ve*he*me+ie*Ee*Ve,this._y=ie*Ee*me-ve*he*Ve,this._z=ie*he*Ve+ve*Ee*me,this._w=ie*he*me-ve*Ee*Ve;break;case"YXZ":this._x=ve*he*me+ie*Ee*Ve,this._y=ie*Ee*me-ve*he*Ve,this._z=ie*he*Ve-ve*Ee*me,this._w=ie*he*me+ve*Ee*Ve;break;case"ZXY":this._x=ve*he*me-ie*Ee*Ve,this._y=ie*Ee*me+ve*he*Ve,this._z=ie*he*Ve+ve*Ee*me,this._w=ie*he*me-ve*Ee*Ve;break;case"ZYX":this._x=ve*he*me-ie*Ee*Ve,this._y=ie*Ee*me+ve*he*Ve,this._z=ie*he*Ve-ve*Ee*me,this._w=ie*he*me+ve*Ee*Ve;break;case"YZX":this._x=ve*he*me+ie*Ee*Ve,this._y=ie*Ee*me+ve*he*Ve,this._z=ie*he*Ve-ve*Ee*me,this._w=ie*he*me-ve*Ee*Ve;break;case"XZY":this._x=ve*he*me-ie*Ee*Ve,this._y=ie*Ee*me-ve*he*Ve,this._z=ie*he*Ve+ve*Ee*me,this._w=ie*he*me+ve*Ee*Ve;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+C)}return l!==!1&&this._onChangeCallback(),this}setFromAxisAngle(s,l){const h=l/2,p=Math.sin(h);return this._x=s.x*p,this._y=s.y*p,this._z=s.z*p,this._w=Math.cos(h),this._onChangeCallback(),this}setFromRotationMatrix(s){const l=s.elements,h=l[0],p=l[4],y=l[8],C=l[1],P=l[5],ee=l[9],ie=l[2],he=l[6],me=l[10],ve=h+P+me;if(ve>0){const Ee=.5/Math.sqrt(ve+1);this._w=.25/Ee,this._x=(he-ee)*Ee,this._y=(y-ie)*Ee,this._z=(C-p)*Ee}else if(h>P&&h>me){const Ee=2*Math.sqrt(1+h-P-me);this._w=(he-ee)/Ee,this._x=.25*Ee,this._y=(p+C)/Ee,this._z=(y+ie)/Ee}else if(P>me){const Ee=2*Math.sqrt(1+P-h-me);this._w=(y-ie)/Ee,this._x=(p+C)/Ee,this._y=.25*Ee,this._z=(ee+he)/Ee}else{const Ee=2*Math.sqrt(1+me-h-P);this._w=(C-p)/Ee,this._x=(y+ie)/Ee,this._y=(ee+he)/Ee,this._z=.25*Ee}return this._onChangeCallback(),this}setFromUnitVectors(s,l){let h=s.dot(l)+1;return hMath.abs(s.z)?(this._x=-s.y,this._y=s.x,this._z=0,this._w=h):(this._x=0,this._y=-s.z,this._z=s.y,this._w=h)):(this._x=s.y*l.z-s.z*l.y,this._y=s.z*l.x-s.x*l.z,this._z=s.x*l.y-s.y*l.x,this._w=h),this.normalize()}angleTo(s){return 2*Math.acos(Math.abs(yl(this.dot(s),-1,1)))}rotateTowards(s,l){const h=this.angleTo(s);if(h===0)return this;const p=Math.min(1,l/h);return this.slerp(s,p),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(s){return this._x*s._x+this._y*s._y+this._z*s._z+this._w*s._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 s=this.length();return s===0?(this._x=0,this._y=0,this._z=0,this._w=1):(s=1/s,this._x=this._x*s,this._y=this._y*s,this._z=this._z*s,this._w=this._w*s),this._onChangeCallback(),this}multiply(s,l){return l!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(s,l)):this.multiplyQuaternions(this,s)}premultiply(s){return this.multiplyQuaternions(s,this)}multiplyQuaternions(s,l){const h=s._x,p=s._y,y=s._z,C=s._w,P=l._x,ee=l._y,ie=l._z,he=l._w;return this._x=h*he+C*P+p*ie-y*ee,this._y=p*he+C*ee+y*P-h*ie,this._z=y*he+C*ie+h*ee-p*P,this._w=C*he-h*P-p*ee-y*ie,this._onChangeCallback(),this}slerp(s,l){if(l===0)return this;if(l===1)return this.copy(s);const h=this._x,p=this._y,y=this._z,C=this._w;let P=C*s._w+h*s._x+p*s._y+y*s._z;if(P<0?(this._w=-s._w,this._x=-s._x,this._y=-s._y,this._z=-s._z,P=-P):this.copy(s),P>=1)return this._w=C,this._x=h,this._y=p,this._z=y,this;const ee=1-P*P;if(ee<=Number.EPSILON){const Ee=1-l;return this._w=Ee*C+l*this._w,this._x=Ee*h+l*this._x,this._y=Ee*p+l*this._y,this._z=Ee*y+l*this._z,this.normalize(),this._onChangeCallback(),this}const ie=Math.sqrt(ee),he=Math.atan2(ie,P),me=Math.sin((1-l)*he)/ie,ve=Math.sin(l*he)/ie;return this._w=C*me+this._w*ve,this._x=h*me+this._x*ve,this._y=p*me+this._y*ve,this._z=y*me+this._z*ve,this._onChangeCallback(),this}slerpQuaternions(s,l,h){return this.copy(s).slerp(l,h)}random(){const s=Math.random(),l=Math.sqrt(1-s),h=Math.sqrt(s),p=2*Math.PI*Math.random(),y=2*Math.PI*Math.random();return this.set(l*Math.cos(p),h*Math.sin(y),h*Math.cos(y),l*Math.sin(p))}equals(s){return s._x===this._x&&s._y===this._y&&s._z===this._z&&s._w===this._w}fromArray(s,l=0){return this._x=s[l],this._y=s[l+1],this._z=s[l+2],this._w=s[l+3],this._onChangeCallback(),this}toArray(s=[],l=0){return s[l]=this._x,s[l+1]=this._y,s[l+2]=this._z,s[l+3]=this._w,s}fromBufferAttribute(s,l){return this._x=s.getX(l),this._y=s.getY(l),this._z=s.getZ(l),this._w=s.getW(l),this}_onChange(s){return this._onChangeCallback=s,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}Vc.prototype.isQuaternion=!0;class _n{constructor(s=0,l=0,h=0){this.x=s,this.y=l,this.z=h}set(s,l,h){return h===void 0&&(h=this.z),this.x=s,this.y=l,this.z=h,this}setScalar(s){return this.x=s,this.y=s,this.z=s,this}setX(s){return this.x=s,this}setY(s){return this.y=s,this}setZ(s){return this.z=s,this}setComponent(s,l){switch(s){case 0:this.x=l;break;case 1:this.y=l;break;case 2:this.z=l;break;default:throw new Error("index is out of range: "+s)}return this}getComponent(s){switch(s){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+s)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(s){return this.x=s.x,this.y=s.y,this.z=s.z,this}add(s,l){return l!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(s,l)):(this.x+=s.x,this.y+=s.y,this.z+=s.z,this)}addScalar(s){return this.x+=s,this.y+=s,this.z+=s,this}addVectors(s,l){return this.x=s.x+l.x,this.y=s.y+l.y,this.z=s.z+l.z,this}addScaledVector(s,l){return this.x+=s.x*l,this.y+=s.y*l,this.z+=s.z*l,this}sub(s,l){return l!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(s,l)):(this.x-=s.x,this.y-=s.y,this.z-=s.z,this)}subScalar(s){return this.x-=s,this.y-=s,this.z-=s,this}subVectors(s,l){return this.x=s.x-l.x,this.y=s.y-l.y,this.z=s.z-l.z,this}multiply(s,l){return l!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(s,l)):(this.x*=s.x,this.y*=s.y,this.z*=s.z,this)}multiplyScalar(s){return this.x*=s,this.y*=s,this.z*=s,this}multiplyVectors(s,l){return this.x=s.x*l.x,this.y=s.y*l.y,this.z=s.z*l.z,this}applyEuler(s){return s&&s.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(id.setFromEuler(s))}applyAxisAngle(s,l){return this.applyQuaternion(id.setFromAxisAngle(s,l))}applyMatrix3(s){const l=this.x,h=this.y,p=this.z,y=s.elements;return this.x=y[0]*l+y[3]*h+y[6]*p,this.y=y[1]*l+y[4]*h+y[7]*p,this.z=y[2]*l+y[5]*h+y[8]*p,this}applyNormalMatrix(s){return this.applyMatrix3(s).normalize()}applyMatrix4(s){const l=this.x,h=this.y,p=this.z,y=s.elements,C=1/(y[3]*l+y[7]*h+y[11]*p+y[15]);return this.x=(y[0]*l+y[4]*h+y[8]*p+y[12])*C,this.y=(y[1]*l+y[5]*h+y[9]*p+y[13])*C,this.z=(y[2]*l+y[6]*h+y[10]*p+y[14])*C,this}applyQuaternion(s){const l=this.x,h=this.y,p=this.z,y=s.x,C=s.y,P=s.z,ee=s.w,ie=ee*l+C*p-P*h,he=ee*h+P*l-y*p,me=ee*p+y*h-C*l,ve=-y*l-C*h-P*p;return this.x=ie*ee+ve*-y+he*-P-me*-C,this.y=he*ee+ve*-C+me*-y-ie*-P,this.z=me*ee+ve*-P+ie*-C-he*-y,this}project(s){return this.applyMatrix4(s.matrixWorldInverse).applyMatrix4(s.projectionMatrix)}unproject(s){return this.applyMatrix4(s.projectionMatrixInverse).applyMatrix4(s.matrixWorld)}transformDirection(s){const l=this.x,h=this.y,p=this.z,y=s.elements;return this.x=y[0]*l+y[4]*h+y[8]*p,this.y=y[1]*l+y[5]*h+y[9]*p,this.z=y[2]*l+y[6]*h+y[10]*p,this.normalize()}divide(s){return this.x/=s.x,this.y/=s.y,this.z/=s.z,this}divideScalar(s){return this.multiplyScalar(1/s)}min(s){return this.x=Math.min(this.x,s.x),this.y=Math.min(this.y,s.y),this.z=Math.min(this.z,s.z),this}max(s){return this.x=Math.max(this.x,s.x),this.y=Math.max(this.y,s.y),this.z=Math.max(this.z,s.z),this}clamp(s,l){return this.x=Math.max(s.x,Math.min(l.x,this.x)),this.y=Math.max(s.y,Math.min(l.y,this.y)),this.z=Math.max(s.z,Math.min(l.z,this.z)),this}clampScalar(s,l){return this.x=Math.max(s,Math.min(l,this.x)),this.y=Math.max(s,Math.min(l,this.y)),this.z=Math.max(s,Math.min(l,this.z)),this}clampLength(s,l){const h=this.length();return this.divideScalar(h||1).multiplyScalar(Math.max(s,Math.min(l,h)))}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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(s){return this.x*s.x+this.y*s.y+this.z*s.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(s){return this.normalize().multiplyScalar(s)}lerp(s,l){return this.x+=(s.x-this.x)*l,this.y+=(s.y-this.y)*l,this.z+=(s.z-this.z)*l,this}lerpVectors(s,l,h){return this.x=s.x+(l.x-s.x)*h,this.y=s.y+(l.y-s.y)*h,this.z=s.z+(l.z-s.z)*h,this}cross(s,l){return l!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(s,l)):this.crossVectors(this,s)}crossVectors(s,l){const h=s.x,p=s.y,y=s.z,C=l.x,P=l.y,ee=l.z;return this.x=p*ee-y*P,this.y=y*C-h*ee,this.z=h*P-p*C,this}projectOnVector(s){const l=s.lengthSq();if(l===0)return this.set(0,0,0);const h=s.dot(this)/l;return this.copy(s).multiplyScalar(h)}projectOnPlane(s){return Ud.copy(this).projectOnVector(s),this.sub(Ud)}reflect(s){return this.sub(Ud.copy(s).multiplyScalar(2*this.dot(s)))}angleTo(s){const l=Math.sqrt(this.lengthSq()*s.lengthSq());if(l===0)return Math.PI/2;const h=this.dot(s)/l;return Math.acos(yl(h,-1,1))}distanceTo(s){return Math.sqrt(this.distanceToSquared(s))}distanceToSquared(s){const l=this.x-s.x,h=this.y-s.y,p=this.z-s.z;return l*l+h*h+p*p}manhattanDistanceTo(s){return Math.abs(this.x-s.x)+Math.abs(this.y-s.y)+Math.abs(this.z-s.z)}setFromSpherical(s){return this.setFromSphericalCoords(s.radius,s.phi,s.theta)}setFromSphericalCoords(s,l,h){const p=Math.sin(l)*s;return this.x=p*Math.sin(h),this.y=Math.cos(l)*s,this.z=p*Math.cos(h),this}setFromCylindrical(s){return this.setFromCylindricalCoords(s.radius,s.theta,s.y)}setFromCylindricalCoords(s,l,h){return this.x=s*Math.sin(l),this.y=h,this.z=s*Math.cos(l),this}setFromMatrixPosition(s){const l=s.elements;return this.x=l[12],this.y=l[13],this.z=l[14],this}setFromMatrixScale(s){const l=this.setFromMatrixColumn(s,0).length(),h=this.setFromMatrixColumn(s,1).length(),p=this.setFromMatrixColumn(s,2).length();return this.x=l,this.y=h,this.z=p,this}setFromMatrixColumn(s,l){return this.fromArray(s.elements,l*4)}setFromMatrix3Column(s,l){return this.fromArray(s.elements,l*3)}setFromEuler(s){return this.x=s._x,this.y=s._y,this.z=s._z,this}equals(s){return s.x===this.x&&s.y===this.y&&s.z===this.z}fromArray(s,l=0){return this.x=s[l],this.y=s[l+1],this.z=s[l+2],this}toArray(s=[],l=0){return s[l]=this.x,s[l+1]=this.y,s[l+2]=this.z,s}fromBufferAttribute(s,l,h){return h!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=s.getX(l),this.y=s.getY(l),this.z=s.getZ(l),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const s=(Math.random()-.5)*2,l=Math.random()*Math.PI*2,h=Math.sqrt(1-yg(s,2));return this.x=h*Math.cos(l),this.y=h*Math.sin(l),this.z=s,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}_n.prototype.isVector3=!0;const Ud=new _n,id=new Vc;class gu{constructor(s=new _n(1/0,1/0,1/0),l=new _n(-1/0,-1/0,-1/0)){this.min=s,this.max=l}set(s,l){return this.min.copy(s),this.max.copy(l),this}setFromArray(s){let l=1/0,h=1/0,p=1/0,y=-1/0,C=-1/0,P=-1/0;for(let ee=0,ie=s.length;eey&&(y=he),me>C&&(C=me),ve>P&&(P=ve)}return this.min.set(l,h,p),this.max.set(y,C,P),this}setFromBufferAttribute(s){let l=1/0,h=1/0,p=1/0,y=-1/0,C=-1/0,P=-1/0;for(let ee=0,ie=s.count;eey&&(y=he),me>C&&(C=me),ve>P&&(P=ve)}return this.min.set(l,h,p),this.max.set(y,C,P),this}setFromPoints(s){this.makeEmpty();for(let l=0,h=s.length;lthis.max.x||s.ythis.max.y||s.zthis.max.z)}containsBox(s){return this.min.x<=s.min.x&&s.max.x<=this.max.x&&this.min.y<=s.min.y&&s.max.y<=this.max.y&&this.min.z<=s.min.z&&s.max.z<=this.max.z}getParameter(s,l){return l.set((s.x-this.min.x)/(this.max.x-this.min.x),(s.y-this.min.y)/(this.max.y-this.min.y),(s.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(s){return!(s.max.xthis.max.x||s.max.ythis.max.y||s.max.zthis.max.z)}intersectsSphere(s){return this.clampPoint(s.center,Mh),Mh.distanceToSquared(s.center)<=s.radius*s.radius}intersectsPlane(s){let l,h;return s.normal.x>0?(l=s.normal.x*this.min.x,h=s.normal.x*this.max.x):(l=s.normal.x*this.max.x,h=s.normal.x*this.min.x),s.normal.y>0?(l+=s.normal.y*this.min.y,h+=s.normal.y*this.max.y):(l+=s.normal.y*this.max.y,h+=s.normal.y*this.min.y),s.normal.z>0?(l+=s.normal.z*this.min.z,h+=s.normal.z*this.max.z):(l+=s.normal.z*this.max.z,h+=s.normal.z*this.min.z),l<=-s.constant&&h>=-s.constant}intersectsTriangle(s){if(this.isEmpty())return!1;this.getCenter(Vf),ff.subVectors(this.max,Vf),Rl.subVectors(s.a,Vf),mu.subVectors(s.b,Vf),Dh.subVectors(s.c,Vf),hf.subVectors(mu,Rl),Oh.subVectors(Dh,mu),kf.subVectors(Rl,Dh);let l=[0,-hf.z,hf.y,0,-Oh.z,Oh.y,0,-kf.z,kf.y,hf.z,0,-hf.x,Oh.z,0,-Oh.x,kf.z,0,-kf.x,-hf.y,hf.x,0,-Oh.y,Oh.x,0,-kf.y,kf.x,0];return!xe(l,Rl,mu,Dh,ff)||(l=[1,0,0,0,1,0,0,0,1],!xe(l,Rl,mu,Dh,ff))?!1:(cu.crossVectors(hf,Oh),l=[cu.x,cu.y,cu.z],xe(l,Rl,mu,Dh,ff))}clampPoint(s,l){return l.copy(s).clamp(this.min,this.max)}distanceToPoint(s){return Mh.copy(s).clamp(this.min,this.max).sub(s).length()}getBoundingSphere(s){return this.getCenter(s.center),s.radius=this.getSize(Mh).length()*.5,s}intersect(s){return this.min.max(s.min),this.max.min(s.max),this.isEmpty()&&this.makeEmpty(),this}union(s){return this.min.min(s.min),this.max.max(s.max),this}applyMatrix4(s){return this.isEmpty()?this:(Yh[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(s),Yh[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(s),Yh[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(s),Yh[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(s),Yh[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(s),Yh[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(s),Yh[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(s),Yh[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(s),this.setFromPoints(Yh),this)}translate(s){return this.min.add(s),this.max.add(s),this}equals(s){return s.min.equals(this.min)&&s.max.equals(this.max)}}gu.prototype.isBox3=!0;const Yh=[new _n,new _n,new _n,new _n,new _n,new _n,new _n,new _n],Mh=new _n,Ef=new gu,Rl=new _n,mu=new _n,Dh=new _n,hf=new _n,Oh=new _n,kf=new _n,Vf=new _n,ff=new _n,cu=new _n,Ze=new _n;function xe(b,s,l,h,p){for(let y=0,C=b.length-3;y<=C;y+=3){Ze.fromArray(b,y);const P=p.x*Math.abs(Ze.x)+p.y*Math.abs(Ze.y)+p.z*Math.abs(Ze.z),ee=s.dot(Ze),ie=l.dot(Ze),he=h.dot(Ze);if(Math.max(-Math.max(ee,ie,he),Math.min(ee,ie,he))>P)return!1}return!0}const de=new gu,je=new _n,ce=new _n,kt=new _n;class Qt{constructor(s=new _n,l=-1){this.center=s,this.radius=l}set(s,l){return this.center.copy(s),this.radius=l,this}setFromPoints(s,l){const h=this.center;l!==void 0?h.copy(l):de.setFromPoints(s).getCenter(h);let p=0;for(let y=0,C=s.length;ythis.radius*this.radius&&(l.sub(this.center).normalize(),l.multiplyScalar(this.radius).add(this.center)),l}getBoundingBox(s){return this.isEmpty()?(s.makeEmpty(),s):(s.set(this.center,this.center),s.expandByScalar(this.radius),s)}applyMatrix4(s){return this.center.applyMatrix4(s),this.radius=this.radius*s.getMaxScaleOnAxis(),this}translate(s){return this.center.add(s),this}expandByPoint(s){kt.subVectors(s,this.center);const l=kt.lengthSq();if(l>this.radius*this.radius){const h=Math.sqrt(l),p=(h-this.radius)*.5;this.center.add(kt.multiplyScalar(p/h)),this.radius+=p}return this}union(s){return this.center.equals(s.center)===!0?ce.set(0,0,1).multiplyScalar(s.radius):ce.subVectors(s.center,this.center).normalize().multiplyScalar(s.radius),this.expandByPoint(je.copy(s.center).add(ce)),this.expandByPoint(je.copy(s.center).sub(ce)),this}equals(s){return s.center.equals(this.center)&&s.radius===this.radius}clone(){return new this.constructor().copy(this)}}const vn=new _n,Wn=new _n,mr=new _n,Tr=new _n,Mr=new _n,wr=new _n,Gr=new _n;class yi{constructor(s=new _n,l=new _n(0,0,-1)){this.origin=s,this.direction=l}set(s,l){return this.origin.copy(s),this.direction.copy(l),this}copy(s){return this.origin.copy(s.origin),this.direction.copy(s.direction),this}at(s,l){return l.copy(this.direction).multiplyScalar(s).add(this.origin)}lookAt(s){return this.direction.copy(s).sub(this.origin).normalize(),this}recast(s){return this.origin.copy(this.at(s,vn)),this}closestPointToPoint(s,l){l.subVectors(s,this.origin);const h=l.dot(this.direction);return h<0?l.copy(this.origin):l.copy(this.direction).multiplyScalar(h).add(this.origin)}distanceToPoint(s){return Math.sqrt(this.distanceSqToPoint(s))}distanceSqToPoint(s){const l=vn.subVectors(s,this.origin).dot(this.direction);return l<0?this.origin.distanceToSquared(s):(vn.copy(this.direction).multiplyScalar(l).add(this.origin),vn.distanceToSquared(s))}distanceSqToSegment(s,l,h,p){Wn.copy(s).add(l).multiplyScalar(.5),mr.copy(l).sub(s).normalize(),Tr.copy(this.origin).sub(Wn);const y=s.distanceTo(l)*.5,C=-this.direction.dot(mr),P=Tr.dot(this.direction),ee=-Tr.dot(mr),ie=Tr.lengthSq(),he=Math.abs(1-C*C);let me,ve,Ee,Ve;if(he>0)if(me=C*ee-P,ve=C*P-ee,Ve=y*he,me>=0)if(ve>=-Ve)if(ve<=Ve){const Ue=1/he;me*=Ue,ve*=Ue,Ee=me*(me+C*ve+2*P)+ve*(C*me+ve+2*ee)+ie}else ve=y,me=Math.max(0,-(C*ve+P)),Ee=-me*me+ve*(ve+2*ee)+ie;else ve=-y,me=Math.max(0,-(C*ve+P)),Ee=-me*me+ve*(ve+2*ee)+ie;else ve<=-Ve?(me=Math.max(0,-(-C*y+P)),ve=me>0?-y:Math.min(Math.max(-y,-ee),y),Ee=-me*me+ve*(ve+2*ee)+ie):ve<=Ve?(me=0,ve=Math.min(Math.max(-y,-ee),y),Ee=ve*(ve+2*ee)+ie):(me=Math.max(0,-(C*y+P)),ve=me>0?y:Math.min(Math.max(-y,-ee),y),Ee=-me*me+ve*(ve+2*ee)+ie);else ve=C>0?-y:y,me=Math.max(0,-(C*ve+P)),Ee=-me*me+ve*(ve+2*ee)+ie;return h&&h.copy(this.direction).multiplyScalar(me).add(this.origin),p&&p.copy(mr).multiplyScalar(ve).add(Wn),Ee}intersectSphere(s,l){vn.subVectors(s.center,this.origin);const h=vn.dot(this.direction),p=vn.dot(vn)-h*h,y=s.radius*s.radius;if(p>y)return null;const C=Math.sqrt(y-p),P=h-C,ee=h+C;return P<0&&ee<0?null:P<0?this.at(ee,l):this.at(P,l)}intersectsSphere(s){return this.distanceSqToPoint(s.center)<=s.radius*s.radius}distanceToPlane(s){const l=s.normal.dot(this.direction);if(l===0)return s.distanceToPoint(this.origin)===0?0:null;const h=-(this.origin.dot(s.normal)+s.constant)/l;return h>=0?h:null}intersectPlane(s,l){const h=this.distanceToPlane(s);return h===null?null:this.at(h,l)}intersectsPlane(s){const l=s.distanceToPoint(this.origin);return l===0||s.normal.dot(this.direction)*l<0}intersectBox(s,l){let h,p,y,C,P,ee;const ie=1/this.direction.x,he=1/this.direction.y,me=1/this.direction.z,ve=this.origin;return ie>=0?(h=(s.min.x-ve.x)*ie,p=(s.max.x-ve.x)*ie):(h=(s.max.x-ve.x)*ie,p=(s.min.x-ve.x)*ie),he>=0?(y=(s.min.y-ve.y)*he,C=(s.max.y-ve.y)*he):(y=(s.max.y-ve.y)*he,C=(s.min.y-ve.y)*he),h>C||y>p||((y>h||h!==h)&&(h=y),(C=0?(P=(s.min.z-ve.z)*me,ee=(s.max.z-ve.z)*me):(P=(s.max.z-ve.z)*me,ee=(s.min.z-ve.z)*me),h>ee||P>p)||((P>h||h!==h)&&(h=P),(ee=0?h:p,l)}intersectsBox(s){return this.intersectBox(s,vn)!==null}intersectTriangle(s,l,h,p,y){Mr.subVectors(l,s),wr.subVectors(h,s),Gr.crossVectors(Mr,wr);let C=this.direction.dot(Gr),P;if(C>0){if(p)return null;P=1}else if(C<0)P=-1,C=-C;else return null;Tr.subVectors(this.origin,s);const ee=P*this.direction.dot(wr.crossVectors(Tr,wr));if(ee<0)return null;const ie=P*this.direction.dot(Mr.cross(Tr));if(ie<0||ee+ie>C)return null;const he=-P*Tr.dot(Gr);return he<0?null:this.at(he/C,y)}applyMatrix4(s){return this.origin.applyMatrix4(s),this.direction.transformDirection(s),this}equals(s){return s.origin.equals(this.origin)&&s.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Or{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(s,l,h,p,y,C,P,ee,ie,he,me,ve,Ee,Ve,Ue,Oe){const Pt=this.elements;return Pt[0]=s,Pt[4]=l,Pt[8]=h,Pt[12]=p,Pt[1]=y,Pt[5]=C,Pt[9]=P,Pt[13]=ee,Pt[2]=ie,Pt[6]=he,Pt[10]=me,Pt[14]=ve,Pt[3]=Ee,Pt[7]=Ve,Pt[11]=Ue,Pt[15]=Oe,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 Or().fromArray(this.elements)}copy(s){const l=this.elements,h=s.elements;return l[0]=h[0],l[1]=h[1],l[2]=h[2],l[3]=h[3],l[4]=h[4],l[5]=h[5],l[6]=h[6],l[7]=h[7],l[8]=h[8],l[9]=h[9],l[10]=h[10],l[11]=h[11],l[12]=h[12],l[13]=h[13],l[14]=h[14],l[15]=h[15],this}copyPosition(s){const l=this.elements,h=s.elements;return l[12]=h[12],l[13]=h[13],l[14]=h[14],this}setFromMatrix3(s){const l=s.elements;return this.set(l[0],l[3],l[6],0,l[1],l[4],l[7],0,l[2],l[5],l[8],0,0,0,0,1),this}extractBasis(s,l,h){return s.setFromMatrixColumn(this,0),l.setFromMatrixColumn(this,1),h.setFromMatrixColumn(this,2),this}makeBasis(s,l,h){return this.set(s.x,l.x,h.x,0,s.y,l.y,h.y,0,s.z,l.z,h.z,0,0,0,0,1),this}extractRotation(s){const l=this.elements,h=s.elements,p=1/Ti.setFromMatrixColumn(s,0).length(),y=1/Ti.setFromMatrixColumn(s,1).length(),C=1/Ti.setFromMatrixColumn(s,2).length();return l[0]=h[0]*p,l[1]=h[1]*p,l[2]=h[2]*p,l[3]=0,l[4]=h[4]*y,l[5]=h[5]*y,l[6]=h[6]*y,l[7]=0,l[8]=h[8]*C,l[9]=h[9]*C,l[10]=h[10]*C,l[11]=0,l[12]=0,l[13]=0,l[14]=0,l[15]=1,this}makeRotationFromEuler(s){s&&s.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const l=this.elements,h=s.x,p=s.y,y=s.z,C=Math.cos(h),P=Math.sin(h),ee=Math.cos(p),ie=Math.sin(p),he=Math.cos(y),me=Math.sin(y);if(s.order==="XYZ"){const ve=C*he,Ee=C*me,Ve=P*he,Ue=P*me;l[0]=ee*he,l[4]=-ee*me,l[8]=ie,l[1]=Ee+Ve*ie,l[5]=ve-Ue*ie,l[9]=-P*ee,l[2]=Ue-ve*ie,l[6]=Ve+Ee*ie,l[10]=C*ee}else if(s.order==="YXZ"){const ve=ee*he,Ee=ee*me,Ve=ie*he,Ue=ie*me;l[0]=ve+Ue*P,l[4]=Ve*P-Ee,l[8]=C*ie,l[1]=C*me,l[5]=C*he,l[9]=-P,l[2]=Ee*P-Ve,l[6]=Ue+ve*P,l[10]=C*ee}else if(s.order==="ZXY"){const ve=ee*he,Ee=ee*me,Ve=ie*he,Ue=ie*me;l[0]=ve-Ue*P,l[4]=-C*me,l[8]=Ve+Ee*P,l[1]=Ee+Ve*P,l[5]=C*he,l[9]=Ue-ve*P,l[2]=-C*ie,l[6]=P,l[10]=C*ee}else if(s.order==="ZYX"){const ve=C*he,Ee=C*me,Ve=P*he,Ue=P*me;l[0]=ee*he,l[4]=Ve*ie-Ee,l[8]=ve*ie+Ue,l[1]=ee*me,l[5]=Ue*ie+ve,l[9]=Ee*ie-Ve,l[2]=-ie,l[6]=P*ee,l[10]=C*ee}else if(s.order==="YZX"){const ve=C*ee,Ee=C*ie,Ve=P*ee,Ue=P*ie;l[0]=ee*he,l[4]=Ue-ve*me,l[8]=Ve*me+Ee,l[1]=me,l[5]=C*he,l[9]=-P*he,l[2]=-ie*he,l[6]=Ee*me+Ve,l[10]=ve-Ue*me}else if(s.order==="XZY"){const ve=C*ee,Ee=C*ie,Ve=P*ee,Ue=P*ie;l[0]=ee*he,l[4]=-me,l[8]=ie*he,l[1]=ve*me+Ue,l[5]=C*he,l[9]=Ee*me-Ve,l[2]=Ve*me-Ee,l[6]=P*he,l[10]=Ue*me+ve}return l[3]=0,l[7]=0,l[11]=0,l[12]=0,l[13]=0,l[14]=0,l[15]=1,this}makeRotationFromQuaternion(s){return this.compose(Cs,s,Bs)}lookAt(s,l,h){const p=this.elements;return ss.subVectors(s,l),ss.lengthSq()===0&&(ss.z=1),ss.normalize(),Zs.crossVectors(h,ss),Zs.lengthSq()===0&&(Math.abs(h.z)===1?ss.x+=1e-4:ss.z+=1e-4,ss.normalize(),Zs.crossVectors(h,ss)),Zs.normalize(),ea.crossVectors(ss,Zs),p[0]=Zs.x,p[4]=ea.x,p[8]=ss.x,p[1]=Zs.y,p[5]=ea.y,p[9]=ss.y,p[2]=Zs.z,p[6]=ea.z,p[10]=ss.z,this}multiply(s,l){return l!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(s,l)):this.multiplyMatrices(this,s)}premultiply(s){return this.multiplyMatrices(s,this)}multiplyMatrices(s,l){const h=s.elements,p=l.elements,y=this.elements,C=h[0],P=h[4],ee=h[8],ie=h[12],he=h[1],me=h[5],ve=h[9],Ee=h[13],Ve=h[2],Ue=h[6],Oe=h[10],Pt=h[14],Wt=h[3],gn=h[7],en=h[11],Dn=h[15],Zn=p[0],Br=p[4],ln=p[8],er=p[12],Zr=p[1],ei=p[5],cs=p[9],Ys=p[13],Jr=p[2],$i=p[6],Si=p[10],us=p[14],vs=p[3],Vi=p[7],Xi=p[11],ia=p[15];return y[0]=C*Zn+P*Zr+ee*Jr+ie*vs,y[4]=C*Br+P*ei+ee*$i+ie*Vi,y[8]=C*ln+P*cs+ee*Si+ie*Xi,y[12]=C*er+P*Ys+ee*us+ie*ia,y[1]=he*Zn+me*Zr+ve*Jr+Ee*vs,y[5]=he*Br+me*ei+ve*$i+Ee*Vi,y[9]=he*ln+me*cs+ve*Si+Ee*Xi,y[13]=he*er+me*Ys+ve*us+Ee*ia,y[2]=Ve*Zn+Ue*Zr+Oe*Jr+Pt*vs,y[6]=Ve*Br+Ue*ei+Oe*$i+Pt*Vi,y[10]=Ve*ln+Ue*cs+Oe*Si+Pt*Xi,y[14]=Ve*er+Ue*Ys+Oe*us+Pt*ia,y[3]=Wt*Zn+gn*Zr+en*Jr+Dn*vs,y[7]=Wt*Br+gn*ei+en*$i+Dn*Vi,y[11]=Wt*ln+gn*cs+en*Si+Dn*Xi,y[15]=Wt*er+gn*Ys+en*us+Dn*ia,this}multiplyScalar(s){const l=this.elements;return l[0]*=s,l[4]*=s,l[8]*=s,l[12]*=s,l[1]*=s,l[5]*=s,l[9]*=s,l[13]*=s,l[2]*=s,l[6]*=s,l[10]*=s,l[14]*=s,l[3]*=s,l[7]*=s,l[11]*=s,l[15]*=s,this}determinant(){const s=this.elements,l=s[0],h=s[4],p=s[8],y=s[12],C=s[1],P=s[5],ee=s[9],ie=s[13],he=s[2],me=s[6],ve=s[10],Ee=s[14],Ve=s[3],Ue=s[7],Oe=s[11],Pt=s[15];return Ve*(+y*ee*me-p*ie*me-y*P*ve+h*ie*ve+p*P*Ee-h*ee*Ee)+Ue*(+l*ee*Ee-l*ie*ve+y*C*ve-p*C*Ee+p*ie*he-y*ee*he)+Oe*(+l*ie*me-l*P*Ee-y*C*me+h*C*Ee+y*P*he-h*ie*he)+Pt*(-p*P*he-l*ee*me+l*P*ve+p*C*me-h*C*ve+h*ee*he)}transpose(){const s=this.elements;let l;return l=s[1],s[1]=s[4],s[4]=l,l=s[2],s[2]=s[8],s[8]=l,l=s[6],s[6]=s[9],s[9]=l,l=s[3],s[3]=s[12],s[12]=l,l=s[7],s[7]=s[13],s[13]=l,l=s[11],s[11]=s[14],s[14]=l,this}setPosition(s,l,h){const p=this.elements;return s.isVector3?(p[12]=s.x,p[13]=s.y,p[14]=s.z):(p[12]=s,p[13]=l,p[14]=h),this}invert(){const s=this.elements,l=s[0],h=s[1],p=s[2],y=s[3],C=s[4],P=s[5],ee=s[6],ie=s[7],he=s[8],me=s[9],ve=s[10],Ee=s[11],Ve=s[12],Ue=s[13],Oe=s[14],Pt=s[15],Wt=me*Oe*ie-Ue*ve*ie+Ue*ee*Ee-P*Oe*Ee-me*ee*Pt+P*ve*Pt,gn=Ve*ve*ie-he*Oe*ie-Ve*ee*Ee+C*Oe*Ee+he*ee*Pt-C*ve*Pt,en=he*Ue*ie-Ve*me*ie+Ve*P*Ee-C*Ue*Ee-he*P*Pt+C*me*Pt,Dn=Ve*me*ee-he*Ue*ee-Ve*P*ve+C*Ue*ve+he*P*Oe-C*me*Oe,Zn=l*Wt+h*gn+p*en+y*Dn;if(Zn===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const Br=1/Zn;return s[0]=Wt*Br,s[1]=(Ue*ve*y-me*Oe*y-Ue*p*Ee+h*Oe*Ee+me*p*Pt-h*ve*Pt)*Br,s[2]=(P*Oe*y-Ue*ee*y+Ue*p*ie-h*Oe*ie-P*p*Pt+h*ee*Pt)*Br,s[3]=(me*ee*y-P*ve*y-me*p*ie+h*ve*ie+P*p*Ee-h*ee*Ee)*Br,s[4]=gn*Br,s[5]=(he*Oe*y-Ve*ve*y+Ve*p*Ee-l*Oe*Ee-he*p*Pt+l*ve*Pt)*Br,s[6]=(Ve*ee*y-C*Oe*y-Ve*p*ie+l*Oe*ie+C*p*Pt-l*ee*Pt)*Br,s[7]=(C*ve*y-he*ee*y+he*p*ie-l*ve*ie-C*p*Ee+l*ee*Ee)*Br,s[8]=en*Br,s[9]=(Ve*me*y-he*Ue*y-Ve*h*Ee+l*Ue*Ee+he*h*Pt-l*me*Pt)*Br,s[10]=(C*Ue*y-Ve*P*y+Ve*h*ie-l*Ue*ie-C*h*Pt+l*P*Pt)*Br,s[11]=(he*P*y-C*me*y-he*h*ie+l*me*ie+C*h*Ee-l*P*Ee)*Br,s[12]=Dn*Br,s[13]=(he*Ue*p-Ve*me*p+Ve*h*ve-l*Ue*ve-he*h*Oe+l*me*Oe)*Br,s[14]=(Ve*P*p-C*Ue*p-Ve*h*ee+l*Ue*ee+C*h*Oe-l*P*Oe)*Br,s[15]=(C*me*p-he*P*p+he*h*ee-l*me*ee-C*h*ve+l*P*ve)*Br,this}scale(s){const l=this.elements,h=s.x,p=s.y,y=s.z;return l[0]*=h,l[4]*=p,l[8]*=y,l[1]*=h,l[5]*=p,l[9]*=y,l[2]*=h,l[6]*=p,l[10]*=y,l[3]*=h,l[7]*=p,l[11]*=y,this}getMaxScaleOnAxis(){const s=this.elements,l=s[0]*s[0]+s[1]*s[1]+s[2]*s[2],h=s[4]*s[4]+s[5]*s[5]+s[6]*s[6],p=s[8]*s[8]+s[9]*s[9]+s[10]*s[10];return Math.sqrt(Math.max(l,h,p))}makeTranslation(s,l,h){return this.set(1,0,0,s,0,1,0,l,0,0,1,h,0,0,0,1),this}makeRotationX(s){const l=Math.cos(s),h=Math.sin(s);return this.set(1,0,0,0,0,l,-h,0,0,h,l,0,0,0,0,1),this}makeRotationY(s){const l=Math.cos(s),h=Math.sin(s);return this.set(l,0,h,0,0,1,0,0,-h,0,l,0,0,0,0,1),this}makeRotationZ(s){const l=Math.cos(s),h=Math.sin(s);return this.set(l,-h,0,0,h,l,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(s,l){const h=Math.cos(l),p=Math.sin(l),y=1-h,C=s.x,P=s.y,ee=s.z,ie=y*C,he=y*P;return this.set(ie*C+h,ie*P-p*ee,ie*ee+p*P,0,ie*P+p*ee,he*P+h,he*ee-p*C,0,ie*ee-p*P,he*ee+p*C,y*ee*ee+h,0,0,0,0,1),this}makeScale(s,l,h){return this.set(s,0,0,0,0,l,0,0,0,0,h,0,0,0,0,1),this}makeShear(s,l,h,p,y,C){return this.set(1,h,y,0,s,1,C,0,l,p,1,0,0,0,0,1),this}compose(s,l,h){const p=this.elements,y=l._x,C=l._y,P=l._z,ee=l._w,ie=y+y,he=C+C,me=P+P,ve=y*ie,Ee=y*he,Ve=y*me,Ue=C*he,Oe=C*me,Pt=P*me,Wt=ee*ie,gn=ee*he,en=ee*me,Dn=h.x,Zn=h.y,Br=h.z;return p[0]=(1-(Ue+Pt))*Dn,p[1]=(Ee+en)*Dn,p[2]=(Ve-gn)*Dn,p[3]=0,p[4]=(Ee-en)*Zn,p[5]=(1-(ve+Pt))*Zn,p[6]=(Oe+Wt)*Zn,p[7]=0,p[8]=(Ve+gn)*Br,p[9]=(Oe-Wt)*Br,p[10]=(1-(ve+Ue))*Br,p[11]=0,p[12]=s.x,p[13]=s.y,p[14]=s.z,p[15]=1,this}decompose(s,l,h){const p=this.elements;let y=Ti.set(p[0],p[1],p[2]).length();const C=Ti.set(p[4],p[5],p[6]).length(),P=Ti.set(p[8],p[9],p[10]).length();this.determinant()<0&&(y=-y),s.x=p[12],s.y=p[13],s.z=p[14],Wi.copy(this);const ie=1/y,he=1/C,me=1/P;return Wi.elements[0]*=ie,Wi.elements[1]*=ie,Wi.elements[2]*=ie,Wi.elements[4]*=he,Wi.elements[5]*=he,Wi.elements[6]*=he,Wi.elements[8]*=me,Wi.elements[9]*=me,Wi.elements[10]*=me,l.setFromRotationMatrix(Wi),h.x=y,h.y=C,h.z=P,this}makePerspective(s,l,h,p,y,C){C===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const P=this.elements,ee=2*y/(l-s),ie=2*y/(h-p),he=(l+s)/(l-s),me=(h+p)/(h-p),ve=-(C+y)/(C-y),Ee=-2*C*y/(C-y);return P[0]=ee,P[4]=0,P[8]=he,P[12]=0,P[1]=0,P[5]=ie,P[9]=me,P[13]=0,P[2]=0,P[6]=0,P[10]=ve,P[14]=Ee,P[3]=0,P[7]=0,P[11]=-1,P[15]=0,this}makeOrthographic(s,l,h,p,y,C){const P=this.elements,ee=1/(l-s),ie=1/(h-p),he=1/(C-y),me=(l+s)*ee,ve=(h+p)*ie,Ee=(C+y)*he;return P[0]=2*ee,P[4]=0,P[8]=0,P[12]=-me,P[1]=0,P[5]=2*ie,P[9]=0,P[13]=-ve,P[2]=0,P[6]=0,P[10]=-2*he,P[14]=-Ee,P[3]=0,P[7]=0,P[11]=0,P[15]=1,this}equals(s){const l=this.elements,h=s.elements;for(let p=0;p<16;p++)if(l[p]!==h[p])return!1;return!0}fromArray(s,l=0){for(let h=0;h<16;h++)this.elements[h]=s[h+l];return this}toArray(s=[],l=0){const h=this.elements;return s[l]=h[0],s[l+1]=h[1],s[l+2]=h[2],s[l+3]=h[3],s[l+4]=h[4],s[l+5]=h[5],s[l+6]=h[6],s[l+7]=h[7],s[l+8]=h[8],s[l+9]=h[9],s[l+10]=h[10],s[l+11]=h[11],s[l+12]=h[12],s[l+13]=h[13],s[l+14]=h[14],s[l+15]=h[15],s}}Or.prototype.isMatrix4=!0;const Ti=new _n,Wi=new Or,Cs=new _n(0,0,0),Bs=new _n(1,1,1),Zs=new _n,ea=new _n,ss=new _n,ts=new Or,La=new Vc;class ra{constructor(s=0,l=0,h=0,p=ra.DefaultOrder){this._x=s,this._y=l,this._z=h,this._order=p}get x(){return this._x}set x(s){this._x=s,this._onChangeCallback()}get y(){return this._y}set y(s){this._y=s,this._onChangeCallback()}get z(){return this._z}set z(s){this._z=s,this._onChangeCallback()}get order(){return this._order}set order(s){this._order=s,this._onChangeCallback()}set(s,l,h,p=this._order){return this._x=s,this._y=l,this._z=h,this._order=p,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(s){return this._x=s._x,this._y=s._y,this._z=s._z,this._order=s._order,this._onChangeCallback(),this}setFromRotationMatrix(s,l=this._order,h=!0){const p=s.elements,y=p[0],C=p[4],P=p[8],ee=p[1],ie=p[5],he=p[9],me=p[2],ve=p[6],Ee=p[10];switch(l){case"XYZ":this._y=Math.asin(yl(P,-1,1)),Math.abs(P)<.9999999?(this._x=Math.atan2(-he,Ee),this._z=Math.atan2(-C,y)):(this._x=Math.atan2(ve,ie),this._z=0);break;case"YXZ":this._x=Math.asin(-yl(he,-1,1)),Math.abs(he)<.9999999?(this._y=Math.atan2(P,Ee),this._z=Math.atan2(ee,ie)):(this._y=Math.atan2(-me,y),this._z=0);break;case"ZXY":this._x=Math.asin(yl(ve,-1,1)),Math.abs(ve)<.9999999?(this._y=Math.atan2(-me,Ee),this._z=Math.atan2(-C,ie)):(this._y=0,this._z=Math.atan2(ee,y));break;case"ZYX":this._y=Math.asin(-yl(me,-1,1)),Math.abs(me)<.9999999?(this._x=Math.atan2(ve,Ee),this._z=Math.atan2(ee,y)):(this._x=0,this._z=Math.atan2(-C,ie));break;case"YZX":this._z=Math.asin(yl(ee,-1,1)),Math.abs(ee)<.9999999?(this._x=Math.atan2(-he,ie),this._y=Math.atan2(-me,y)):(this._x=0,this._y=Math.atan2(P,Ee));break;case"XZY":this._z=Math.asin(-yl(C,-1,1)),Math.abs(C)<.9999999?(this._x=Math.atan2(ve,ie),this._y=Math.atan2(P,y)):(this._x=Math.atan2(-he,Ee),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+l)}return this._order=l,h===!0&&this._onChangeCallback(),this}setFromQuaternion(s,l,h){return ts.makeRotationFromQuaternion(s),this.setFromRotationMatrix(ts,l,h)}setFromVector3(s,l=this._order){return this.set(s.x,s.y,s.z,l)}reorder(s){return La.setFromEuler(this),this.setFromQuaternion(La,s)}equals(s){return s._x===this._x&&s._y===this._y&&s._z===this._z&&s._order===this._order}fromArray(s){return this._x=s[0],this._y=s[1],this._z=s[2],s[3]!==void 0&&(this._order=s[3]),this._onChangeCallback(),this}toArray(s=[],l=0){return s[l]=this._x,s[l+1]=this._y,s[l+2]=this._z,s[l+3]=this._order,s}_onChange(s){return this._onChangeCallback=s,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}ra.prototype.isEuler=!0,ra.DefaultOrder="XYZ",ra.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];class co{constructor(){this.mask=1}set(s){this.mask=(1<>>0}enable(s){this.mask|=1<1){for(let l=0;l1){for(let h=0;h0){p.children=[];for(let P=0;P0){p.animations=[];for(let P=0;P0&&(h.geometries=P),ee.length>0&&(h.materials=ee),ie.length>0&&(h.textures=ie),he.length>0&&(h.images=he),me.length>0&&(h.shapes=me),ve.length>0&&(h.skeletons=ve),Ee.length>0&&(h.animations=Ee),Ve.length>0&&(h.nodes=Ve)}return h.object=p,h;function C(P){const ee=[];for(const ie in P){const he=P[ie];delete he.metadata,ee.push(he)}return ee}}clone(s){return new this.constructor().copy(this,s)}copy(s,l=!0){if(this.name=s.name,this.up.copy(s.up),this.position.copy(s.position),this.rotation.order=s.rotation.order,this.quaternion.copy(s.quaternion),this.scale.copy(s.scale),this.matrix.copy(s.matrix),this.matrixWorld.copy(s.matrixWorld),this.matrixAutoUpdate=s.matrixAutoUpdate,this.matrixWorldNeedsUpdate=s.matrixWorldNeedsUpdate,this.layers.mask=s.layers.mask,this.visible=s.visible,this.castShadow=s.castShadow,this.receiveShadow=s.receiveShadow,this.frustumCulled=s.frustumCulled,this.renderOrder=s.renderOrder,this.userData=JSON.parse(JSON.stringify(s.userData)),l===!0)for(let h=0;h0?p.multiplyScalar(1/Math.sqrt(y)):p.set(0,0,0)}static getBarycoord(s,l,h,p,y){Vn.subVectors(p,l),Jn.subVectors(h,l),Ur.subVectors(s,l);const C=Vn.dot(Vn),P=Vn.dot(Jn),ee=Vn.dot(Ur),ie=Jn.dot(Jn),he=Jn.dot(Ur),me=C*ie-P*P;if(me===0)return y.set(-2,-1,-1);const ve=1/me,Ee=(ie*ee-P*he)*ve,Ve=(C*he-P*ee)*ve;return y.set(1-Ee-Ve,Ve,Ee)}static containsPoint(s,l,h,p){return this.getBarycoord(s,l,h,p,Sr),Sr.x>=0&&Sr.y>=0&&Sr.x+Sr.y<=1}static getUV(s,l,h,p,y,C,P,ee){return this.getBarycoord(s,l,h,p,Sr),ee.set(0,0),ee.addScaledVector(y,Sr.x),ee.addScaledVector(C,Sr.y),ee.addScaledVector(P,Sr.z),ee}static isFrontFacing(s,l,h,p){return Vn.subVectors(h,l),Jn.subVectors(s,l),Vn.cross(Jn).dot(p)<0}set(s,l,h){return this.a.copy(s),this.b.copy(l),this.c.copy(h),this}setFromPointsAndIndices(s,l,h,p){return this.a.copy(s[l]),this.b.copy(s[h]),this.c.copy(s[p]),this}setFromAttributeAndIndices(s,l,h,p){return this.a.fromBufferAttribute(s,l),this.b.fromBufferAttribute(s,h),this.c.fromBufferAttribute(s,p),this}clone(){return new this.constructor().copy(this)}copy(s){return this.a.copy(s.a),this.b.copy(s.b),this.c.copy(s.c),this}getArea(){return Vn.subVectors(this.c,this.b),Jn.subVectors(this.a,this.b),Vn.cross(Jn).length()*.5}getMidpoint(s){return s.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(s){return Es.getNormal(this.a,this.b,this.c,s)}getPlane(s){return s.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(s,l){return Es.getBarycoord(s,this.a,this.b,this.c,l)}getUV(s,l,h,p,y){return Es.getUV(s,this.a,this.b,this.c,l,h,p,y)}containsPoint(s){return Es.containsPoint(s,this.a,this.b,this.c)}isFrontFacing(s){return Es.isFrontFacing(this.a,this.b,this.c,s)}intersectsBox(s){return s.intersectsTriangle(this)}closestPointToPoint(s,l){const h=this.a,p=this.b,y=this.c;let C,P;Ai.subVectors(p,h),hi.subVectors(y,h),Ii.subVectors(s,h);const ee=Ai.dot(Ii),ie=hi.dot(Ii);if(ee<=0&&ie<=0)return l.copy(h);_s.subVectors(s,p);const he=Ai.dot(_s),me=hi.dot(_s);if(he>=0&&me<=he)return l.copy(p);const ve=ee*me-he*ie;if(ve<=0&&ee>=0&&he<=0)return C=ee/(ee-he),l.copy(h).addScaledVector(Ai,C);Ns.subVectors(s,y);const Ee=Ai.dot(Ns),Ve=hi.dot(Ns);if(Ve>=0&&Ee<=Ve)return l.copy(y);const Ue=Ee*ie-ee*Ve;if(Ue<=0&&ie>=0&&Ve<=0)return P=ie/(ie-Ve),l.copy(h).addScaledVector(hi,P);const Oe=he*Ve-Ee*me;if(Oe<=0&&me-he>=0&&Ee-Ve>=0)return _i.subVectors(y,p),P=(me-he)/(me-he+(Ee-Ve)),l.copy(p).addScaledVector(_i,P);const Pt=1/(Oe+Ue+ve);return C=Ue*Pt,P=ve*Pt,l.copy(h).addScaledVector(Ai,C).addScaledVector(hi,P)}equals(s){return s.a.equals(this.a)&&s.b.equals(this.b)&&s.c.equals(this.c)}}let da=0;class ua extends Nh{constructor(){super(),Object.defineProperty(this,"id",{value:da++}),this.uuid=kc(),this.name="",this.type="Material",this.blending=Xe,this.side=Y,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=bn,this.blendDst=Cr,this.blendEquation=Vt,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Mt,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Ql,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Ba,this.stencilZFail=Ba,this.stencilZPass=Ba,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(s){this._alphaTest>0!=s>0&&this.version++,this._alphaTest=s}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(s){if(s!==void 0)for(const l in s){const h=s[l];if(h===void 0){console.warn("THREE.Material: '"+l+"' parameter is undefined.");continue}if(l==="shading"){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=h===Me;continue}const p=this[l];if(p===void 0){console.warn("THREE."+this.type+": '"+l+"' is not a property of this material.");continue}p&&p.isColor?p.set(h):p&&p.isVector3&&h&&h.isVector3?p.copy(h):this[l]=h}}toJSON(s){const l=s===void 0||typeof s=="string";l&&(s={textures:{},images:{}});const h={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};h.uuid=this.uuid,h.type=this.type,this.name!==""&&(h.name=this.name),this.color&&this.color.isColor&&(h.color=this.color.getHex()),this.roughness!==void 0&&(h.roughness=this.roughness),this.metalness!==void 0&&(h.metalness=this.metalness),this.sheen!==void 0&&(h.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(h.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(h.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(h.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(h.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(h.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(h.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(h.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(h.shininess=this.shininess),this.clearcoat!==void 0&&(h.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(h.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(h.clearcoatMap=this.clearcoatMap.toJSON(s).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(h.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(s).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(h.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(s).uuid,h.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(h.map=this.map.toJSON(s).uuid),this.matcap&&this.matcap.isTexture&&(h.matcap=this.matcap.toJSON(s).uuid),this.alphaMap&&this.alphaMap.isTexture&&(h.alphaMap=this.alphaMap.toJSON(s).uuid),this.lightMap&&this.lightMap.isTexture&&(h.lightMap=this.lightMap.toJSON(s).uuid,h.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(h.aoMap=this.aoMap.toJSON(s).uuid,h.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(h.bumpMap=this.bumpMap.toJSON(s).uuid,h.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(h.normalMap=this.normalMap.toJSON(s).uuid,h.normalMapType=this.normalMapType,h.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(h.displacementMap=this.displacementMap.toJSON(s).uuid,h.displacementScale=this.displacementScale,h.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(h.roughnessMap=this.roughnessMap.toJSON(s).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(h.metalnessMap=this.metalnessMap.toJSON(s).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(h.emissiveMap=this.emissiveMap.toJSON(s).uuid),this.specularMap&&this.specularMap.isTexture&&(h.specularMap=this.specularMap.toJSON(s).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(h.specularIntensityMap=this.specularIntensityMap.toJSON(s).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(h.specularColorMap=this.specularColorMap.toJSON(s).uuid),this.envMap&&this.envMap.isTexture&&(h.envMap=this.envMap.toJSON(s).uuid,this.combine!==void 0&&(h.combine=this.combine)),this.envMapIntensity!==void 0&&(h.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(h.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(h.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(h.gradientMap=this.gradientMap.toJSON(s).uuid),this.transmission!==void 0&&(h.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(h.transmissionMap=this.transmissionMap.toJSON(s).uuid),this.thickness!==void 0&&(h.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(h.thicknessMap=this.thicknessMap.toJSON(s).uuid),this.attenuationDistance!==void 0&&(h.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(h.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(h.size=this.size),this.shadowSide!==null&&(h.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(h.sizeAttenuation=this.sizeAttenuation),this.blending!==Xe&&(h.blending=this.blending),this.side!==Y&&(h.side=this.side),this.vertexColors&&(h.vertexColors=!0),this.opacity<1&&(h.opacity=this.opacity),this.transparent===!0&&(h.transparent=this.transparent),h.depthFunc=this.depthFunc,h.depthTest=this.depthTest,h.depthWrite=this.depthWrite,h.colorWrite=this.colorWrite,h.stencilWrite=this.stencilWrite,h.stencilWriteMask=this.stencilWriteMask,h.stencilFunc=this.stencilFunc,h.stencilRef=this.stencilRef,h.stencilFuncMask=this.stencilFuncMask,h.stencilFail=this.stencilFail,h.stencilZFail=this.stencilZFail,h.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(h.rotation=this.rotation),this.polygonOffset===!0&&(h.polygonOffset=!0),this.polygonOffsetFactor!==0&&(h.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(h.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(h.linewidth=this.linewidth),this.dashSize!==void 0&&(h.dashSize=this.dashSize),this.gapSize!==void 0&&(h.gapSize=this.gapSize),this.scale!==void 0&&(h.scale=this.scale),this.dithering===!0&&(h.dithering=!0),this.alphaTest>0&&(h.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(h.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(h.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(h.wireframe=this.wireframe),this.wireframeLinewidth>1&&(h.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(h.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(h.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(h.flatShading=this.flatShading),this.visible===!1&&(h.visible=!1),this.toneMapped===!1&&(h.toneMapped=!1),this.fog===!1&&(h.fog=!1),JSON.stringify(this.userData)!=="{}"&&(h.userData=this.userData);function p(y){const C=[];for(const P in y){const ee=y[P];delete ee.metadata,C.push(ee)}return C}if(l){const y=p(s.textures),C=p(s.images);y.length>0&&(h.textures=y),C.length>0&&(h.images=C)}return h}clone(){return new this.constructor().copy(this)}copy(s){this.name=s.name,this.blending=s.blending,this.side=s.side,this.vertexColors=s.vertexColors,this.opacity=s.opacity,this.transparent=s.transparent,this.blendSrc=s.blendSrc,this.blendDst=s.blendDst,this.blendEquation=s.blendEquation,this.blendSrcAlpha=s.blendSrcAlpha,this.blendDstAlpha=s.blendDstAlpha,this.blendEquationAlpha=s.blendEquationAlpha,this.depthFunc=s.depthFunc,this.depthTest=s.depthTest,this.depthWrite=s.depthWrite,this.stencilWriteMask=s.stencilWriteMask,this.stencilFunc=s.stencilFunc,this.stencilRef=s.stencilRef,this.stencilFuncMask=s.stencilFuncMask,this.stencilFail=s.stencilFail,this.stencilZFail=s.stencilZFail,this.stencilZPass=s.stencilZPass,this.stencilWrite=s.stencilWrite;const l=s.clippingPlanes;let h=null;if(l!==null){const p=l.length;h=new Array(p);for(let y=0;y!==p;++y)h[y]=l[y].clone()}return this.clippingPlanes=h,this.clipIntersection=s.clipIntersection,this.clipShadows=s.clipShadows,this.shadowSide=s.shadowSide,this.colorWrite=s.colorWrite,this.precision=s.precision,this.polygonOffset=s.polygonOffset,this.polygonOffsetFactor=s.polygonOffsetFactor,this.polygonOffsetUnits=s.polygonOffsetUnits,this.dithering=s.dithering,this.alphaTest=s.alphaTest,this.alphaToCoverage=s.alphaToCoverage,this.premultipliedAlpha=s.premultipliedAlpha,this.visible=s.visible,this.toneMapped=s.toneMapped,this.userData=JSON.parse(JSON.stringify(s.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(s){s===!0&&this.version++}}ua.prototype.isMaterial=!0,ua.fromType=function(){return null};class Io extends ua{constructor(s){super(),this.type="MeshBasicMaterial",this.color=new js(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.combine=Jt,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(s)}copy(s){return super.copy(s),this.color.copy(s.color),this.map=s.map,this.lightMap=s.lightMap,this.lightMapIntensity=s.lightMapIntensity,this.aoMap=s.aoMap,this.aoMapIntensity=s.aoMapIntensity,this.specularMap=s.specularMap,this.alphaMap=s.alphaMap,this.envMap=s.envMap,this.combine=s.combine,this.reflectivity=s.reflectivity,this.refractionRatio=s.refractionRatio,this.wireframe=s.wireframe,this.wireframeLinewidth=s.wireframeLinewidth,this.wireframeLinecap=s.wireframeLinecap,this.wireframeLinejoin=s.wireframeLinejoin,this.fog=s.fog,this}}Io.prototype.isMeshBasicMaterial=!0;const io=new _n,so=new Hi;class ti{constructor(s,l,h){if(Array.isArray(s))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=s,this.itemSize=l,this.count=s!==void 0?s.length/l:0,this.normalized=h===!0,this.usage=Cl,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(s){s===!0&&this.version++}setUsage(s){return this.usage=s,this}copy(s){return this.name=s.name,this.array=new s.array.constructor(s.array),this.itemSize=s.itemSize,this.count=s.count,this.normalized=s.normalized,this.usage=s.usage,this}copyAt(s,l,h){s*=this.itemSize,h*=l.itemSize;for(let p=0,y=this.itemSize;p0&&(s.userData=this.userData),this.parameters!==void 0){const ee=this.parameters;for(const ie in ee)ee[ie]!==void 0&&(s[ie]=ee[ie]);return s}s.data={attributes:{}};const l=this.index;l!==null&&(s.data.index={type:l.array.constructor.name,array:Array.prototype.slice.call(l.array)});const h=this.attributes;for(const ee in h){const ie=h[ee];s.data.attributes[ee]=ie.toJSON(s.data)}const p={};let y=!1;for(const ee in this.morphAttributes){const ie=this.morphAttributes[ee],he=[];for(let me=0,ve=ie.length;me0&&(p[ee]=he,y=!0)}y&&(s.data.morphAttributes=p,s.data.morphTargetsRelative=this.morphTargetsRelative);const C=this.groups;C.length>0&&(s.data.groups=JSON.parse(JSON.stringify(C)));const P=this.boundingSphere;return P!==null&&(s.data.boundingSphere={center:P.center.toArray(),radius:P.radius}),s}clone(){return new this.constructor().copy(this)}copy(s){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const l={};this.name=s.name;const h=s.index;h!==null&&this.setIndex(h.clone(l));const p=s.attributes;for(const ie in p){const he=p[ie];this.setAttribute(ie,he.clone(l))}const y=s.morphAttributes;for(const ie in y){const he=[],me=y[ie];for(let ve=0,Ee=me.length;ve0){const p=l[h[0]];if(p!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let y=0,C=p.length;y0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(s,l){const h=this.geometry,p=this.material,y=this.matrixWorld;if(p===void 0||(h.boundingSphere===null&&h.computeBoundingSphere(),qu.copy(h.boundingSphere),qu.applyMatrix4(y),s.ray.intersectsSphere(qu)===!1)||(Hf.copy(y).invert(),Ec.copy(s.ray).applyMatrix4(Hf),h.boundingBox!==null&&Ec.intersectsBox(h.boundingBox)===!1))return;let C;if(h.isBufferGeometry){const P=h.index,ee=h.attributes.position,ie=h.morphAttributes.position,he=h.morphTargetsRelative,me=h.attributes.uv,ve=h.attributes.uv2,Ee=h.groups,Ve=h.drawRange;if(P!==null)if(Array.isArray(p))for(let Ue=0,Oe=Ee.length;Uel.far?null:{distance:ie,point:Fl.clone(),object:b}}function eh(b,s,l,h,p,y,C,P,ee,ie,he,me){zu.fromBufferAttribute(p,ie),df.fromBufferAttribute(p,he),sd.fromBufferAttribute(p,me);const ve=b.morphTargetInfluences;if(y&&ve){mh.set(0,0,0),qh.set(0,0,0),Dd.set(0,0,0);for(let Ve=0,Ue=y.length;Ve0?1:-1,he.push(Vi.x,Vi.y,Vi.z),me.push(Ms/Br),me.push(1-Xi/ln),us+=1}}for(let Xi=0;Xi0&&(l.defines=this.defines),l.vertexShader=this.vertexShader,l.fragmentShader=this.fragmentShader;const h={};for(const p in this.extensions)this.extensions[p]===!0&&(h[p]=!0);return Object.keys(h).length>0&&(l.extensions=h),l}}vh.prototype.isShaderMaterial=!0;class li extends pn{constructor(){super(),this.type="Camera",this.matrixWorldInverse=new Or,this.projectionMatrix=new Or,this.projectionMatrixInverse=new Or}copy(s,l){return super.copy(s,l),this.matrixWorldInverse.copy(s.matrixWorldInverse),this.projectionMatrix.copy(s.projectionMatrix),this.projectionMatrixInverse.copy(s.projectionMatrixInverse),this}getWorldDirection(s){this.updateWorldMatrix(!0,!1);const l=this.matrixWorld.elements;return s.set(-l[8],-l[9],-l[10]).normalize()}updateMatrixWorld(s){super.updateMatrixWorld(s),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(s,l){super.updateWorldMatrix(s,l),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}li.prototype.isCamera=!0;class $l extends li{constructor(s=50,l=1,h=.1,p=2e3){super(),this.type="PerspectiveCamera",this.fov=s,this.zoom=1,this.near=h,this.far=p,this.focus=10,this.aspect=l,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(s,l){return super.copy(s,l),this.fov=s.fov,this.zoom=s.zoom,this.near=s.near,this.far=s.far,this.focus=s.focus,this.aspect=s.aspect,this.view=s.view===null?null:Object.assign({},s.view),this.filmGauge=s.filmGauge,this.filmOffset=s.filmOffset,this}setFocalLength(s){const l=.5*this.getFilmHeight()/s;this.fov=Lh*2*Math.atan(l),this.updateProjectionMatrix()}getFocalLength(){const s=Math.tan(Zh*.5*this.fov);return .5*this.getFilmHeight()/s}getEffectiveFOV(){return Lh*2*Math.atan(Math.tan(Zh*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(s,l,h,p,y,C){this.aspect=s/l,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=s,this.view.fullHeight=l,this.view.offsetX=h,this.view.offsetY=p,this.view.width=y,this.view.height=C,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const s=this.near;let l=s*Math.tan(Zh*.5*this.fov)/this.zoom,h=2*l,p=this.aspect*h,y=-.5*p;const C=this.view;if(this.view!==null&&this.view.enabled){const ee=C.fullWidth,ie=C.fullHeight;y+=C.offsetX*p/ee,l-=C.offsetY*h/ie,p*=C.width/ee,h*=C.height/ie}const P=this.filmOffset;P!==0&&(y+=s*P/this.getFilmWidth()),this.projectionMatrix.makePerspective(y,y+p,l,l-h,s,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(s){const l=super.toJSON(s);return l.object.fov=this.fov,l.object.zoom=this.zoom,l.object.near=this.near,l.object.far=this.far,l.object.focus=this.focus,l.object.aspect=this.aspect,this.view!==null&&(l.object.view=Object.assign({},this.view)),l.object.filmGauge=this.filmGauge,l.object.filmOffset=this.filmOffset,l}}$l.prototype.isPerspectiveCamera=!0;const Od=90,Nc=1;class Gc extends pn{constructor(s,l,h){if(super(),this.type="CubeCamera",h.isWebGLCubeRenderTarget!==!0){console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");return}this.renderTarget=h;const p=new $l(Od,Nc,s,l);p.layers=this.layers,p.up.set(0,-1,0),p.lookAt(new _n(1,0,0)),this.add(p);const y=new $l(Od,Nc,s,l);y.layers=this.layers,y.up.set(0,-1,0),y.lookAt(new _n(-1,0,0)),this.add(y);const C=new $l(Od,Nc,s,l);C.layers=this.layers,C.up.set(0,0,1),C.lookAt(new _n(0,1,0)),this.add(C);const P=new $l(Od,Nc,s,l);P.layers=this.layers,P.up.set(0,0,-1),P.lookAt(new _n(0,-1,0)),this.add(P);const ee=new $l(Od,Nc,s,l);ee.layers=this.layers,ee.up.set(0,-1,0),ee.lookAt(new _n(0,0,1)),this.add(ee);const ie=new $l(Od,Nc,s,l);ie.layers=this.layers,ie.up.set(0,-1,0),ie.lookAt(new _n(0,0,-1)),this.add(ie)}update(s,l){this.parent===null&&this.updateMatrixWorld();const h=this.renderTarget,[p,y,C,P,ee,ie]=this.children,he=s.getRenderTarget(),me=s.toneMapping,ve=s.xr.enabled;s.toneMapping=fn,s.xr.enabled=!1;const Ee=h.texture.generateMipmaps;h.texture.generateMipmaps=!1,s.setRenderTarget(h,0),s.render(l,p),s.setRenderTarget(h,1),s.render(l,y),s.setRenderTarget(h,2),s.render(l,C),s.setRenderTarget(h,3),s.render(l,P),s.setRenderTarget(h,4),s.render(l,ee),h.texture.generateMipmaps=Ee,s.setRenderTarget(h,5),s.render(l,ie),s.setRenderTarget(he),s.toneMapping=me,s.xr.enabled=ve,h.texture.needsPMREMUpdate=!0}}class Af extends Ro{constructor(s,l,h,p,y,C,P,ee,ie,he){s=s!==void 0?s:[],l=l!==void 0?l:Gt,super(s,l,h,p,y,C,P,ee,ie,he),this.flipY=!1}get images(){return this.image}set images(s){this.image=s}}Af.prototype.isCubeTexture=!0;class ym extends Wl{constructor(s,l={}){super(s,s,l);const h={width:s,height:s,depth:1},p=[h,h,h,h,h,h];this.texture=new Af(p,l.mapping,l.wrapS,l.wrapT,l.magFilter,l.minFilter,l.format,l.type,l.anisotropy,l.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=l.generateMipmaps!==void 0?l.generateMipmaps:!1,this.texture.minFilter=l.minFilter!==void 0?l.minFilter:Ft}fromEquirectangularTexture(s,l){this.texture.type=l.type,this.texture.encoding=l.encoding,this.texture.generateMipmaps=l.generateMipmaps,this.texture.minFilter=l.minFilter,this.texture.magFilter=l.magFilter;const h={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},p=new th(5,5,5),y=new vh({name:"CubemapFromEquirect",uniforms:Mf(h.uniforms),vertexShader:h.vertexShader,fragmentShader:h.fragmentShader,side:fe,blending:Ce});y.uniforms.tEquirect.value=l;const C=new ml(p,y),P=l.minFilter;return l.minFilter===nr&&(l.minFilter=Ft),new Gc(1,10,this).update(s,C),l.minFilter=P,C.geometry.dispose(),C.material.dispose(),this}clear(s,l,h,p){const y=s.getRenderTarget();for(let C=0;C<6;C++)s.setRenderTarget(this,C),s.clear(l,h,p);s.setRenderTarget(y)}}ym.prototype.isWebGLCubeRenderTarget=!0;const Ac=new _n,kd=new _n,Vy=new sl;class Xl{constructor(s=new _n(1,0,0),l=0){this.normal=s,this.constant=l}set(s,l){return this.normal.copy(s),this.constant=l,this}setComponents(s,l,h,p){return this.normal.set(s,l,h),this.constant=p,this}setFromNormalAndCoplanarPoint(s,l){return this.normal.copy(s),this.constant=-l.dot(this.normal),this}setFromCoplanarPoints(s,l,h){const p=Ac.subVectors(h,l).cross(kd.subVectors(s,l)).normalize();return this.setFromNormalAndCoplanarPoint(p,s),this}copy(s){return this.normal.copy(s.normal),this.constant=s.constant,this}normalize(){const s=1/this.normal.length();return this.normal.multiplyScalar(s),this.constant*=s,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(s){return this.normal.dot(s)+this.constant}distanceToSphere(s){return this.distanceToPoint(s.center)-s.radius}projectPoint(s,l){return l.copy(this.normal).multiplyScalar(-this.distanceToPoint(s)).add(s)}intersectLine(s,l){const h=s.delta(Ac),p=this.normal.dot(h);if(p===0)return this.distanceToPoint(s.start)===0?l.copy(s.start):null;const y=-(s.start.dot(this.normal)+this.constant)/p;return y<0||y>1?null:l.copy(h).multiplyScalar(y).add(s.start)}intersectsLine(s){const l=this.distanceToPoint(s.start),h=this.distanceToPoint(s.end);return l<0&&h>0||h<0&&l>0}intersectsBox(s){return s.intersectsPlane(this)}intersectsSphere(s){return s.intersectsPlane(this)}coplanarPoint(s){return s.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(s,l){const h=l||Vy.getNormalMatrix(s),p=this.coplanarPoint(Ac).applyMatrix4(s),y=this.normal.applyMatrix3(h).normalize();return this.constant=-p.dot(y),this}translate(s){return this.constant-=s.dot(this.normal),this}equals(s){return s.normal.equals(this.normal)&&s.constant===this.constant}clone(){return new this.constructor().copy(this)}}Xl.prototype.isPlane=!0;const od=new Qt,ld=new _n;class jl{constructor(s=new Xl,l=new Xl,h=new Xl,p=new Xl,y=new Xl,C=new Xl){this.planes=[s,l,h,p,y,C]}set(s,l,h,p,y,C){const P=this.planes;return P[0].copy(s),P[1].copy(l),P[2].copy(h),P[3].copy(p),P[4].copy(y),P[5].copy(C),this}copy(s){const l=this.planes;for(let h=0;h<6;h++)l[h].copy(s.planes[h]);return this}setFromProjectionMatrix(s){const l=this.planes,h=s.elements,p=h[0],y=h[1],C=h[2],P=h[3],ee=h[4],ie=h[5],he=h[6],me=h[7],ve=h[8],Ee=h[9],Ve=h[10],Ue=h[11],Oe=h[12],Pt=h[13],Wt=h[14],gn=h[15];return l[0].setComponents(P-p,me-ee,Ue-ve,gn-Oe).normalize(),l[1].setComponents(P+p,me+ee,Ue+ve,gn+Oe).normalize(),l[2].setComponents(P+y,me+ie,Ue+Ee,gn+Pt).normalize(),l[3].setComponents(P-y,me-ie,Ue-Ee,gn-Pt).normalize(),l[4].setComponents(P-C,me-he,Ue-Ve,gn-Wt).normalize(),l[5].setComponents(P+C,me+he,Ue+Ve,gn+Wt).normalize(),this}intersectsObject(s){const l=s.geometry;return l.boundingSphere===null&&l.computeBoundingSphere(),od.copy(l.boundingSphere).applyMatrix4(s.matrixWorld),this.intersectsSphere(od)}intersectsSprite(s){return od.center.set(0,0,0),od.radius=.7071067811865476,od.applyMatrix4(s.matrixWorld),this.intersectsSphere(od)}intersectsSphere(s){const l=this.planes,h=s.center,p=-s.radius;for(let y=0;y<6;y++)if(l[y].distanceToPoint(h)0?s.max.x:s.min.x,ld.y=p.normal.y>0?s.max.y:s.min.y,ld.z=p.normal.z>0?s.max.z:s.min.z,p.distanceToPoint(ld)<0)return!1}return!0}containsPoint(s){const l=this.planes;for(let h=0;h<6;h++)if(l[h].distanceToPoint(s)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function xm(){let b=null,s=!1,l=null,h=null;function p(y,C){l(y,C),h=b.requestAnimationFrame(p)}return{start:function(){s!==!0&&l!==null&&(h=b.requestAnimationFrame(p),s=!0)},stop:function(){b.cancelAnimationFrame(h),s=!1},setAnimationLoop:function(y){l=y},setContext:function(y){b=y}}}function Rv(b,s){const l=s.isWebGL2,h=new WeakMap;function p(ie,he){const me=ie.array,ve=ie.usage,Ee=b.createBuffer();b.bindBuffer(he,Ee),b.bufferData(he,me,ve),ie.onUploadCallback();let Ve;if(me instanceof Float32Array)Ve=5126;else if(me instanceof Uint16Array)if(ie.isFloat16BufferAttribute)if(l)Ve=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else Ve=5123;else if(me instanceof Int16Array)Ve=5122;else if(me instanceof Uint32Array)Ve=5125;else if(me instanceof Int32Array)Ve=5124;else if(me instanceof Int8Array)Ve=5120;else if(me instanceof Uint8Array)Ve=5121;else if(me instanceof Uint8ClampedArray)Ve=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+me);return{buffer:Ee,type:Ve,bytesPerElement:me.BYTES_PER_ELEMENT,version:ie.version}}function y(ie,he,me){const ve=he.array,Ee=he.updateRange;b.bindBuffer(me,ie),Ee.count===-1?b.bufferSubData(me,0,ve):(l?b.bufferSubData(me,Ee.offset*ve.BYTES_PER_ELEMENT,ve,Ee.offset,Ee.count):b.bufferSubData(me,Ee.offset*ve.BYTES_PER_ELEMENT,ve.subarray(Ee.offset,Ee.offset+Ee.count)),Ee.count=-1)}function C(ie){return ie.isInterleavedBufferAttribute&&(ie=ie.data),h.get(ie)}function P(ie){ie.isInterleavedBufferAttribute&&(ie=ie.data);const he=h.get(ie);he&&(b.deleteBuffer(he.buffer),h.delete(ie))}function ee(ie,he){if(ie.isGLBufferAttribute){const ve=h.get(ie);(!ve||ve.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif`,KA=`#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vUv ); + vec2 dSTdy = dFdy( vUv ); + float Hll = bumpScale * texture2D( bumpMap, vUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) ); + vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`,Vh=`#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif +#endif`,$A=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,nh=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,Eo=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,Fp=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,Lc=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,fA=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`,T0=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`,XA=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +struct GeometricContext { + vec3 position; + vec3 normal; + vec3 viewDir; +#ifdef USE_CLEARCOAT + vec3 clearcoatNormal; +#endif +}; +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float linearToRelativeLuminance( const in vec3 color ) { + vec3 weights = vec3( 0.2126, 0.7152, 0.0722 ); + return dot( weights, color.rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +}`,jA=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define r0 1.0 + #define v0 0.339 + #define m0 - 2.0 + #define r1 0.8 + #define v1 0.276 + #define m1 - 1.0 + #define r4 0.4 + #define v4 0.046 + #define m4 2.0 + #define r5 0.305 + #define v5 0.016 + #define m5 3.0 + #define r6 0.21 + #define v6 0.0038 + #define m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= r1 ) { + mip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0; + } else if ( roughness >= r4 ) { + mip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1; + } else if ( roughness >= r5 ) { + mip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4; + } else if ( roughness >= r6 ) { + mip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,YA=`vec3 transformedNormal = objectNormal; +#ifdef USE_INSTANCING + mat3 m = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); + transformedNormal = m * transformedNormal; +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,Up=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,_g=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias ); +#endif`,bm=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,qA=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,Mc="gl_FragColor = linearToOutputTexel( gl_FragColor );",C0=`vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 LinearTosRGB( 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 ); +}`,Dp=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,yd=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,dA=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,yh=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,Pv=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,B0=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,R0=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,zf=`#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`,JA=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,tf=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 ); + #endif +}`,AA=`#ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vUv2 ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + reflectedLight.indirectDiffuse += lightMapIrradiance; +#endif`,cd=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,xh=`vec3 diffuse = vec3( 1.0 ); +GeometricContext geometry; +geometry.position = mvPosition.xyz; +geometry.normal = normalize( transformedNormal ); +geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz ); +GeometricContext backGeometry; +backGeometry.position = geometry.position; +backGeometry.normal = -geometry.normal; +backGeometry.viewDir = geometry.viewDir; +vLightFront = vec3( 0.0 ); +vIndirectFront = vec3( 0.0 ); +#ifdef DOUBLE_SIDED + vLightBack = vec3( 0.0 ); + vIndirectBack = vec3( 0.0 ); +#endif +IncidentLight directLight; +float dotNL; +vec3 directLightColor_Diffuse; +vIndirectFront += getAmbientLightIrradiance( ambientLightColor ); +vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal ); +#ifdef DOUBLE_SIDED + vIndirectBack += getAmbientLightIrradiance( ambientLightColor ); + vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal ); +#endif +#if NUM_POINT_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + getPointLightInfo( pointLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_SPOT_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + getSpotLightInfo( spotLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_DIR_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + getDirectionalLightInfo( directionalLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_HEMI_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal ); + #ifdef DOUBLE_SIDED + vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal ); + #endif + } + #pragma unroll_loop_end +#endif`,wm=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +uniform vec3 lightProbe[ 9 ]; +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + #if defined ( PHYSICALLY_CORRECT_LIGHTS ) + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; + #else + if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; + #endif +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometry.position; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometry.position; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,Ko=`#if defined( USE_ENVMAP ) + vec3 getIBLIrradiance( const in vec3 normal ) { + #if defined( ENVMAP_TYPE_CUBE_UV ) + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #if defined( ENVMAP_TYPE_CUBE_UV ) + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } +#endif`,ep=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,tp=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon +#define Material_LightProbeLOD( material ) (0)`,bg=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,pf=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong +#define Material_LightProbeLOD( material ) (0)`,Sm=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + #ifdef SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULARINTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a; + #endif + #ifdef USE_SPECULARCOLORMAP + specularColorFactor *= texture2D( specularColorMap, vUv ).rgb; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEENCOLORMAP + material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEENROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a; + #endif +#endif`,xd=`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif +}; +vec3 clearcoatSpecular = vec3( 0.0 ); +vec3 sheenSpecular = vec3( 0.0 ); +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + vec3 FssEss = specularColor * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometry.normal; + vec3 viewDir = geometry.viewDir; + vec3 position = geometry.position; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + computeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + vec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#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 ); +}`,P0=` +GeometricContext geometry; +geometry.position = - vViewPosition; +geometry.normal = normal; +geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +#ifdef USE_CLEARCOAT + geometry.clearcoatNormal = clearcoatNormal; +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + irradiance += getLightProbeIrradiance( lightProbe, geometry.normal ); + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,Mo=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vUv2 ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometry.normal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness ); + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,Th=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight ); +#endif`,Em=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,Op=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,Vd=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + varying float vFragDepth; + varying float vIsPerspective; + #else + uniform float logDepthBufFC; + #endif +#endif`,_h=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); + #else + if ( isPerspectiveMatrix( projectionMatrix ) ) { + gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; + gl_Position.z *= gl_Position.w; + } + #endif +#endif`,pA=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vUv ); + #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 ); + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,Mm=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,Cf=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,kp=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,Bf=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vUv ); + metalnessFactor *= texelMetalness.b; +#endif`,np=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,rp=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,Vp=`#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`,gA=`#ifdef USE_MORPHTARGETS + uniform float morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + 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`,Qf=`#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`,_d=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) ); + vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + #ifdef USE_TANGENT + vec3 tangent = normalize( vTangent ); + vec3 bitangent = normalize( vBitangent ); + #ifdef DOUBLE_SIDED + tangent = tangent * faceDirection; + bitangent = bitangent * faceDirection; + #endif + #if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP ) + mat3 vTBN = mat3( tangent, bitangent, normal ); + #endif + #endif +#endif +vec3 geometryNormal = normal;`,ip=`#ifdef OBJECTSPACE_NORMALMAP + normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( TANGENTSPACE_NORMALMAP ) + vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + #ifdef USE_TANGENT + normal = normalize( vTBN * mapN ); + #else + normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection ); + #endif +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,Hp=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,sp=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,I0=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,N0=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef OBJECTSPACE_NORMALMAP + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) ) + vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) { + vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) ); + vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) ); + vec2 st0 = dFdx( vUv.st ); + vec2 st1 = dFdy( vUv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det ); + return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z ); + } +#endif`,ud=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = geometryNormal; +#endif`,Hd=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + #ifdef USE_TANGENT + clearcoatNormal = normalize( vTBN * clearcoatMapN ); + #else + clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection ); + #endif +#endif`,Gp=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif`,Iv=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= transmissionAlpha + 0.1; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Tm=`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.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec4 pack2HalfToRGBA( 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 ) { + 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 ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) { + return linearClipZ * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * invClipZ - far ); +}`,wg=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,Cm=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,L0=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,Bm=`#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`,Sg=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vUv ); + roughnessFactor *= texelRoughness.g; +#endif`,ap=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,Rm=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 ); + bool inFrustum = all( inFrustumVec ); + bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 ); + bool frustumTest = all( frustumTestVec ); + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + 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 ) { + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + vec3 lightToPosition = shadowCoord.xyz; + float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + return ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } +#endif`,Eg=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ]; + varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,ns=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; + #endif + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 ); + vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif`,F0=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #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; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #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, vSpotShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #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; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,gf=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,mA=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + uniform int boneTextureSize; + mat4 getBoneMatrix( const in float i ) { + float j = i * 4.0; + float x = mod( j, float( boneTextureSize ) ); + float y = floor( j / float( boneTextureSize ) ); + float dx = 1.0 / float( boneTextureSize ); + float dy = 1.0 / float( boneTextureSize ); + y = dy * ( y + 0.5 ); + vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); + vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); + vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); + vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); + mat4 bone = mat4( v1, v2, v3, v4 ); + return bone; + } +#endif`,Mg=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,zp=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,mf=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,Gd=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,Pm=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,Tg=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return toneMappingExposure * color; +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( 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 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,pc=`#ifdef USE_TRANSMISSION + float transmissionAlpha = 1.0; + float transmissionFactor = transmission; + float thicknessFactor = thickness; + #ifdef USE_TRANSMISSIONMAP + transmissionFactor *= texture2D( transmissionMap, vUv ).r; + #endif + #ifdef USE_THICKNESSMAP + thicknessFactor *= texture2D( thicknessMap, vUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmission = getIBLVolumeRefraction( + n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor, + attenuationColor, attenuationDistance ); + totalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor ); + transmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor ); +#endif`,Im=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + #ifdef texture2DLodEXT + return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod ); + #else + return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod ); + #endif + } + vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( attenuationDistance == 0.0 ) { + return radiance; + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance * radiance; + } + } + 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 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 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance ); + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a ); + } +#endif`,Hh=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) ) + varying vec2 vUv; +#endif`,hd=`#ifdef USE_UV + #ifdef UVS_VERTEX_ONLY + vec2 vUv; + #else + varying vec2 vUv; + #endif + uniform mat3 uvTransform; +#endif`,Nm=`#ifdef USE_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; +#endif`,gc=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + varying vec2 vUv2; +#endif`,Cg=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + attribute vec2 uv2; + varying vec2 vUv2; + uniform mat3 uv2Transform; +#endif`,Nv=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy; +#endif`,Gh=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const ol={alphamap_fragment:Hy,alphamap_pars_fragment:ZA,alphatest_fragment:E0,alphatest_pars_fragment:xg,aomap_fragment:M0,aomap_pars_fragment:Pa,begin_vertex:kh,beginnormal_vertex:ef,bsdfs:_m,bumpmap_pars_fragment:KA,clipping_planes_fragment:Vh,clipping_planes_pars_fragment:$A,clipping_planes_pars_vertex:nh,clipping_planes_vertex:Eo,color_fragment:Fp,color_pars_fragment:Lc,color_pars_vertex:fA,color_vertex:T0,common:XA,cube_uv_reflection_fragment:jA,defaultnormal_vertex:YA,displacementmap_pars_vertex:Up,displacementmap_vertex:_g,emissivemap_fragment:bm,emissivemap_pars_fragment:qA,encodings_fragment:Mc,encodings_pars_fragment:C0,envmap_fragment:Dp,envmap_common_pars_fragment:yd,envmap_pars_fragment:dA,envmap_pars_vertex:yh,envmap_physical_pars_fragment:Ko,envmap_vertex:Pv,fog_vertex:B0,fog_pars_vertex:R0,fog_fragment:zf,fog_pars_fragment:JA,gradientmap_pars_fragment:tf,lightmap_fragment:AA,lightmap_pars_fragment:cd,lights_lambert_vertex:xh,lights_pars_begin:wm,lights_toon_fragment:ep,lights_toon_pars_fragment:tp,lights_phong_fragment:bg,lights_phong_pars_fragment:pf,lights_physical_fragment:Sm,lights_physical_pars_fragment:xd,lights_fragment_begin:P0,lights_fragment_maps:Mo,lights_fragment_end:Th,logdepthbuf_fragment:Em,logdepthbuf_pars_fragment:Op,logdepthbuf_pars_vertex:Vd,logdepthbuf_vertex:_h,map_fragment:pA,map_pars_fragment:Mm,map_particle_fragment:Cf,map_particle_pars_fragment:kp,metalnessmap_fragment:Bf,metalnessmap_pars_fragment:np,morphcolor_vertex:rp,morphnormal_vertex:Vp,morphtarget_pars_vertex:gA,morphtarget_vertex:Qf,normal_fragment_begin:_d,normal_fragment_maps:ip,normal_pars_fragment:Hp,normal_pars_vertex:sp,normal_vertex:I0,normalmap_pars_fragment:N0,clearcoat_normal_fragment_begin:ud,clearcoat_normal_fragment_maps:Hd,clearcoat_pars_fragment:Gp,output_fragment:Iv,packing:Tm,premultiplied_alpha_fragment:wg,project_vertex:Cm,dithering_fragment:L0,dithering_pars_fragment:Bm,roughnessmap_fragment:Sg,roughnessmap_pars_fragment:ap,shadowmap_pars_fragment:Rm,shadowmap_pars_vertex:Eg,shadowmap_vertex:ns,shadowmask_pars_fragment:F0,skinbase_vertex:gf,skinning_pars_vertex:mA,skinning_vertex:Mg,skinnormal_vertex:zp,specularmap_fragment:mf,specularmap_pars_fragment:Gd,tonemapping_fragment:Pm,tonemapping_pars_fragment:Tg,transmission_fragment:pc,transmission_pars_fragment:Im,uv_pars_fragment:Hh,uv_pars_vertex:hd,uv_vertex:Nm,uv2_pars_fragment:gc,uv2_pars_vertex:Cg,uv2_vertex:Nv,worldpos_vertex:Gh,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +varying vec2 vUv; +void main() { + gl_FragColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + gl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w ); + #endif + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`#include +uniform float opacity; +varying vec3 vWorldDirection; +#include +void main() { + vec3 vReflect = vWorldDirection; + #include + gl_FragColor = envColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + vec4 diffuseColor = vec4( 1.0 ); + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`,distanceRGBA_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distanceRGBA_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main () { + #include + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +void main() { + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vUv2 ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vLightFront; +varying vec3 vIndirectFront; +#ifdef DOUBLE_SIDED + varying vec3 vLightBack; + varying vec3 vIndirectBack; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_frag:`uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +varying vec3 vLightFront; +varying vec3 vIndirectFront; +#ifdef DOUBLE_SIDED + varying vec3 vLightBack; + varying vec3 vIndirectBack; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #ifdef DOUBLE_SIDED + reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack; + #else + reflectedLight.indirectDiffuse += vIndirectFront; + #endif + #include + reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb ); + #ifdef DOUBLE_SIDED + reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack; + #else + reflectedLight.directDiffuse = vLightFront; + #endif + reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask(); + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULARINTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif + #ifdef USE_SPECULARCOLORMAP + uniform sampler2D specularColorMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEENCOLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEENROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#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 ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},aa={common:{diffuse:{value:new js(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new sl},uv2Transform:{value:new sl},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Hi(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new js(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:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{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 js(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new sl}},sprite:{diffuse:{value:new js(16777215)},opacity:{value:1},center:{value:new Hi(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new sl}}},Ch={basic:{uniforms:Kl([aa.common,aa.specularmap,aa.envmap,aa.aomap,aa.lightmap,aa.fog]),vertexShader:ol.meshbasic_vert,fragmentShader:ol.meshbasic_frag},lambert:{uniforms:Kl([aa.common,aa.specularmap,aa.envmap,aa.aomap,aa.lightmap,aa.emissivemap,aa.fog,aa.lights,{emissive:{value:new js(0)}}]),vertexShader:ol.meshlambert_vert,fragmentShader:ol.meshlambert_frag},phong:{uniforms:Kl([aa.common,aa.specularmap,aa.envmap,aa.aomap,aa.lightmap,aa.emissivemap,aa.bumpmap,aa.normalmap,aa.displacementmap,aa.fog,aa.lights,{emissive:{value:new js(0)},specular:{value:new js(1118481)},shininess:{value:30}}]),vertexShader:ol.meshphong_vert,fragmentShader:ol.meshphong_frag},standard:{uniforms:Kl([aa.common,aa.envmap,aa.aomap,aa.lightmap,aa.emissivemap,aa.bumpmap,aa.normalmap,aa.displacementmap,aa.roughnessmap,aa.metalnessmap,aa.fog,aa.lights,{emissive:{value:new js(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ol.meshphysical_vert,fragmentShader:ol.meshphysical_frag},toon:{uniforms:Kl([aa.common,aa.aomap,aa.lightmap,aa.emissivemap,aa.bumpmap,aa.normalmap,aa.displacementmap,aa.gradientmap,aa.fog,aa.lights,{emissive:{value:new js(0)}}]),vertexShader:ol.meshtoon_vert,fragmentShader:ol.meshtoon_frag},matcap:{uniforms:Kl([aa.common,aa.bumpmap,aa.normalmap,aa.displacementmap,aa.fog,{matcap:{value:null}}]),vertexShader:ol.meshmatcap_vert,fragmentShader:ol.meshmatcap_frag},points:{uniforms:Kl([aa.points,aa.fog]),vertexShader:ol.points_vert,fragmentShader:ol.points_frag},dashed:{uniforms:Kl([aa.common,aa.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ol.linedashed_vert,fragmentShader:ol.linedashed_frag},depth:{uniforms:Kl([aa.common,aa.displacementmap]),vertexShader:ol.depth_vert,fragmentShader:ol.depth_frag},normal:{uniforms:Kl([aa.common,aa.bumpmap,aa.normalmap,aa.displacementmap,{opacity:{value:1}}]),vertexShader:ol.meshnormal_vert,fragmentShader:ol.meshnormal_frag},sprite:{uniforms:Kl([aa.sprite,aa.fog]),vertexShader:ol.sprite_vert,fragmentShader:ol.sprite_frag},background:{uniforms:{uvTransform:{value:new sl},t2D:{value:null}},vertexShader:ol.background_vert,fragmentShader:ol.background_frag},cube:{uniforms:Kl([aa.envmap,{opacity:{value:1}}]),vertexShader:ol.cube_vert,fragmentShader:ol.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ol.equirect_vert,fragmentShader:ol.equirect_frag},distanceRGBA:{uniforms:Kl([aa.common,aa.displacementmap,{referencePosition:{value:new _n},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ol.distanceRGBA_vert,fragmentShader:ol.distanceRGBA_frag},shadow:{uniforms:Kl([aa.lights,aa.fog,{color:{value:new js(0)},opacity:{value:1}}]),vertexShader:ol.shadow_vert,fragmentShader:ol.shadow_frag}};Ch.physical={uniforms:Kl([Ch.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Hi(1,1)},clearcoatNormalMap:{value:null},sheen:{value:0},sheenColor:{value:new js(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Hi},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new js(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new js(1,1,1)},specularColorMap:{value:null}}]),vertexShader:ol.meshphysical_vert,fragmentShader:ol.meshphysical_frag};function Ig(b,s,l,h,p,y){const C=new js(0);let P=p===!0?0:1,ee,ie,he=null,me=0,ve=null;function Ee(Ue,Oe){let Pt=!1,Wt=Oe.isScene===!0?Oe.background:null;Wt&&Wt.isTexture&&(Wt=s.get(Wt));const gn=b.xr,en=gn.getSession&&gn.getSession();en&&en.environmentBlendMode==="additive"&&(Wt=null),Wt===null?Ve(C,P):Wt&&Wt.isColor&&(Ve(Wt,1),Pt=!0),(b.autoClear||Pt)&&b.clear(b.autoClearColor,b.autoClearDepth,b.autoClearStencil),Wt&&(Wt.isCubeTexture||Wt.mapping===Je)?(ie===void 0&&(ie=new ml(new th(1,1,1),new vh({name:"BackgroundCubeMaterial",uniforms:Mf(Ch.cube.uniforms),vertexShader:Ch.cube.vertexShader,fragmentShader:Ch.cube.fragmentShader,side:fe,depthTest:!1,depthWrite:!1,fog:!1})),ie.geometry.deleteAttribute("normal"),ie.geometry.deleteAttribute("uv"),ie.onBeforeRender=function(Dn,Zn,Br){this.matrixWorld.copyPosition(Br.matrixWorld)},Object.defineProperty(ie.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),h.update(ie)),ie.material.uniforms.envMap.value=Wt,ie.material.uniforms.flipEnvMap.value=Wt.isCubeTexture&&Wt.isRenderTargetTexture===!1?-1:1,(he!==Wt||me!==Wt.version||ve!==b.toneMapping)&&(ie.material.needsUpdate=!0,he=Wt,me=Wt.version,ve=b.toneMapping),ie.layers.enableAll(),Ue.unshift(ie,ie.geometry,ie.material,0,0,null)):Wt&&Wt.isTexture&&(ee===void 0&&(ee=new ml(new Lp(2,2),new vh({name:"BackgroundMaterial",uniforms:Mf(Ch.background.uniforms),vertexShader:Ch.background.vertexShader,fragmentShader:Ch.background.fragmentShader,side:Y,depthTest:!1,depthWrite:!1,fog:!1})),ee.geometry.deleteAttribute("normal"),Object.defineProperty(ee.material,"map",{get:function(){return this.uniforms.t2D.value}}),h.update(ee)),ee.material.uniforms.t2D.value=Wt,Wt.matrixAutoUpdate===!0&&Wt.updateMatrix(),ee.material.uniforms.uvTransform.value.copy(Wt.matrix),(he!==Wt||me!==Wt.version||ve!==b.toneMapping)&&(ee.material.needsUpdate=!0,he=Wt,me=Wt.version,ve=b.toneMapping),ee.layers.enableAll(),Ue.unshift(ee,ee.geometry,ee.material,0,0,null))}function Ve(Ue,Oe){l.buffers.color.setClear(Ue.r,Ue.g,Ue.b,Oe,y)}return{getClearColor:function(){return C},setClearColor:function(Ue,Oe=1){C.set(Ue),P=Oe,Ve(C,P)},getClearAlpha:function(){return P},setClearAlpha:function(Ue){P=Ue,Ve(C,P)},render:Ee}}function Dm(b,s,l,h){const p=b.getParameter(34921),y=h.isWebGL2?null:s.get("OES_vertex_array_object"),C=h.isWebGL2||y!==null,P={},ee=Oe(null);let ie=ee,he=!1;function me(Jr,$i,Si,us,vs){let Vi=!1;if(C){const Xi=Ue(us,Si,$i);ie!==Xi&&(ie=Xi,Ee(ie.object)),Vi=Pt(Jr,us,Si,vs),Vi&&Wt(Jr,us,Si,vs)}else{const Xi=$i.wireframe===!0;(ie.geometry!==us.id||ie.program!==Si.id||ie.wireframe!==Xi)&&(ie.geometry=us.id,ie.program=Si.id,ie.wireframe=Xi,Vi=!0)}vs!==null&&l.update(vs,34963),(Vi||he)&&(he=!1,ln(Jr,$i,Si,us),vs!==null&&b.bindBuffer(34963,l.get(vs).buffer))}function ve(){return h.isWebGL2?b.createVertexArray():y.createVertexArrayOES()}function Ee(Jr){return h.isWebGL2?b.bindVertexArray(Jr):y.bindVertexArrayOES(Jr)}function Ve(Jr){return h.isWebGL2?b.deleteVertexArray(Jr):y.deleteVertexArrayOES(Jr)}function Ue(Jr,$i,Si){const us=Si.wireframe===!0;let vs=P[Jr.id];vs===void 0&&(vs={},P[Jr.id]=vs);let Vi=vs[$i.id];Vi===void 0&&(Vi={},vs[$i.id]=Vi);let Xi=Vi[us];return Xi===void 0&&(Xi=Oe(ve()),Vi[us]=Xi),Xi}function Oe(Jr){const $i=[],Si=[],us=[];for(let vs=0;vs=0){const bo=vs[Ms];let Lo=Vi[Ms];if(Lo===void 0&&(Ms==="instanceMatrix"&&Jr.instanceMatrix&&(Lo=Jr.instanceMatrix),Ms==="instanceColor"&&Jr.instanceColor&&(Lo=Jr.instanceColor)),bo===void 0||bo.attribute!==Lo||Lo&&bo.data!==Lo.data)return!0;Xi++}return ie.attributesNum!==Xi||ie.index!==us}function Wt(Jr,$i,Si,us){const vs={},Vi=$i.attributes;let Xi=0;const ia=Si.getAttributes();for(const Ms in ia)if(ia[Ms].location>=0){let bo=Vi[Ms];bo===void 0&&(Ms==="instanceMatrix"&&Jr.instanceMatrix&&(bo=Jr.instanceMatrix),Ms==="instanceColor"&&Jr.instanceColor&&(bo=Jr.instanceColor));const Lo={};Lo.attribute=bo,bo&&bo.data&&(Lo.data=bo.data),vs[Ms]=Lo,Xi++}ie.attributes=vs,ie.attributesNum=Xi,ie.index=us}function gn(){const Jr=ie.newAttributes;for(let $i=0,Si=Jr.length;$i=0){let Ia=vs[ia];if(Ia===void 0&&(ia==="instanceMatrix"&&Jr.instanceMatrix&&(Ia=Jr.instanceMatrix),ia==="instanceColor"&&Jr.instanceColor&&(Ia=Jr.instanceColor)),Ia!==void 0){const bo=Ia.normalized,Lo=Ia.itemSize,es=l.get(Ia);if(es===void 0)continue;const Qc=es.buffer,ll=es.type,El=es.bytesPerElement;if(Ia.isInterleavedBufferAttribute){const xa=Ia.data,tc=xa.stride,hs=Ia.offset;if(xa.isInstancedInterleavedBuffer){for(let as=0;as0&&b.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";Br="mediump"}return Br==="mediump"&&b.getShaderPrecisionFormat(35633,36337).precision>0&&b.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const C=typeof WebGL2RenderingContext!="undefined"&&b instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext!="undefined"&&b instanceof WebGL2ComputeRenderingContext;let P=l.precision!==void 0?l.precision:"highp";const ee=y(P);ee!==P&&(console.warn("THREE.WebGLRenderer:",P,"not supported, using",ee,"instead."),P=ee);const ie=C||s.has("WEBGL_draw_buffers"),he=l.logarithmicDepthBuffer===!0,me=b.getParameter(34930),ve=b.getParameter(35660),Ee=b.getParameter(3379),Ve=b.getParameter(34076),Ue=b.getParameter(34921),Oe=b.getParameter(36347),Pt=b.getParameter(36348),Wt=b.getParameter(36349),gn=ve>0,en=C||s.has("OES_texture_float"),Dn=gn&&en,Zn=C?b.getParameter(36183):0;return{isWebGL2:C,drawBuffers:ie,getMaxAnisotropy:p,getMaxPrecision:y,precision:P,logarithmicDepthBuffer:he,maxTextures:me,maxVertexTextures:ve,maxTextureSize:Ee,maxCubemapSize:Ve,maxAttributes:Ue,maxVertexUniforms:Oe,maxVaryings:Pt,maxFragmentUniforms:Wt,vertexTextures:gn,floatFragmentTextures:en,floatVertexTextures:Dn,maxSamples:Zn}}function Gy(b){const s=this;let l=null,h=0,p=!1,y=!1;const C=new Xl,P=new sl,ee={value:null,needsUpdate:!1};this.uniform=ee,this.numPlanes=0,this.numIntersection=0,this.init=function(me,ve,Ee){const Ve=me.length!==0||ve||h!==0||p;return p=ve,l=he(me,Ee,0),h=me.length,Ve},this.beginShadows=function(){y=!0,he(null)},this.endShadows=function(){y=!1,ie()},this.setState=function(me,ve,Ee){const Ve=me.clippingPlanes,Ue=me.clipIntersection,Oe=me.clipShadows,Pt=b.get(me);if(!p||Ve===null||Ve.length===0||y&&!Oe)y?he(null):ie();else{const Wt=y?0:h,gn=Wt*4;let en=Pt.clippingState||null;ee.value=en,en=he(Ve,ve,gn,Ee);for(let Dn=0;Dn!==gn;++Dn)en[Dn]=l[Dn];Pt.clippingState=en,this.numIntersection=Ue?this.numPlanes:0,this.numPlanes+=Wt}};function ie(){ee.value!==l&&(ee.value=l,ee.needsUpdate=h>0),s.numPlanes=h,s.numIntersection=0}function he(me,ve,Ee,Ve){const Ue=me!==null?me.length:0;let Oe=null;if(Ue!==0){if(Oe=ee.value,Ve!==!0||Oe===null){const Pt=Ee+Ue*4,Wt=ve.matrixWorldInverse;P.getNormalMatrix(Wt),(Oe===null||Oe.length0){const ie=new ym(ee.height/2);return ie.fromEquirectangularTexture(b,C),s.set(C,ie),C.addEventListener("dispose",p),l(ie.texture,C.mapping)}else return null}}return C}function p(C){const P=C.target;P.removeEventListener("dispose",p);const ee=s.get(P);ee!==void 0&&(s.delete(P),ee.dispose())}function y(){s=new WeakMap}return{get:h,dispose:y}}class Sd extends li{constructor(s=-1,l=1,h=1,p=-1,y=.1,C=2e3){super(),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=s,this.right=l,this.top=h,this.bottom=p,this.near=y,this.far=C,this.updateProjectionMatrix()}copy(s,l){return super.copy(s,l),this.left=s.left,this.right=s.right,this.top=s.top,this.bottom=s.bottom,this.near=s.near,this.far=s.far,this.zoom=s.zoom,this.view=s.view===null?null:Object.assign({},s.view),this}setViewOffset(s,l,h,p,y,C){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=s,this.view.fullHeight=l,this.view.offsetX=h,this.view.offsetY=p,this.view.width=y,this.view.height=C,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const s=(this.right-this.left)/(2*this.zoom),l=(this.top-this.bottom)/(2*this.zoom),h=(this.right+this.left)/2,p=(this.top+this.bottom)/2;let y=h-s,C=h+s,P=p+l,ee=p-l;if(this.view!==null&&this.view.enabled){const ie=(this.right-this.left)/this.view.fullWidth/this.zoom,he=(this.top-this.bottom)/this.view.fullHeight/this.zoom;y+=ie*this.view.offsetX,C=y+ie*this.view.width,P-=he*this.view.offsetY,ee=P-he*this.view.height}this.projectionMatrix.makeOrthographic(y,C,P,ee,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(s){const l=super.toJSON(s);return l.object.zoom=this.zoom,l.object.left=this.left,l.object.right=this.right,l.object.top=this.top,l.object.bottom=this.bottom,l.object.near=this.near,l.object.far=this.far,this.view!==null&&(l.object.view=Object.assign({},this.view)),l}}Sd.prototype.isOrthographicCamera=!0;const Bh=4,Lg=[.125,.215,.35,.446,.526,.582],Ed=20,k0=new Sd,Om=new js;let km=null;const lp=(1+Math.sqrt(5))/2,Md=1/lp,Fg=[new _n(1,1,1),new _n(-1,1,1),new _n(1,1,-1),new _n(-1,1,-1),new _n(0,lp,Md),new _n(0,lp,-Md),new _n(Md,0,lp),new _n(-Md,0,lp),new _n(lp,Md,0),new _n(-lp,Md,0)];class Aa{constructor(s){this._renderer=s,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(s,l=0,h=.1,p=100){km=this._renderer.getRenderTarget(),this._setSize(256);const y=this._allocateTargets();return y.depthBuffer=!0,this._sceneToCubeUV(s,h,p,y),l>0&&this._blur(y,0,0,l),this._applyPMREM(y),this._cleanup(y),y}fromEquirectangular(s,l=null){return this._fromTexture(s,l)}fromCubemap(s,l=null){return this._fromTexture(s,l)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=mc(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Pl(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(s){this._lodMax=Math.floor(Math.log2(s)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let s=0;s2?gn:0,gn,gn),he.setRenderTarget(p),Ue&&he.render(Ve,P),he.render(s,P)}Ve.geometry.dispose(),Ve.material.dispose(),he.toneMapping=ve,he.autoClear=me,s.background=Oe}_textureToCubeUV(s,l){const h=this._renderer,p=s.mapping===Gt||s.mapping===On;p?(this._cubemapMaterial===null&&(this._cubemapMaterial=mc()),this._cubemapMaterial.uniforms.flipEnvMap.value=s.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Pl());const y=p?this._cubemapMaterial:this._equirectMaterial,C=new ml(this._lodPlanes[0],y),P=y.uniforms;P.envMap.value=s;const ee=this._cubeSize;cc(l,0,0,3*ee,2*ee),h.setRenderTarget(l),h.render(C,k0)}_applyPMREM(s){const l=this._renderer,h=l.autoClear;l.autoClear=!1;for(let p=1;pEd&&console.warn(`sigmaRadians, ${y}, is too large and will clip, as it requested ${Oe} samples when the maximum is set to ${Ed}`);const Pt=[];let Wt=0;for(let Br=0;Brgn-Bh?p-gn+Bh:0),Zn=4*(this._cubeSize-en);cc(l,Dn,Zn,3*en,2*en),ee.setRenderTarget(l),ee.render(me,k0)}}function Ug(b){const s=[],l=[],h=[];let p=b;const y=b-Bh+1+Lg.length;for(let C=0;Cb-Bh?ee=Lg[C-b+Bh-1]:C===0&&(ee=0),h.push(ee);const ie=1/(P-2),he=-ie,me=1+ie,ve=[he,he,me,he,me,me,he,he,me,me,he,me],Ee=6,Ve=6,Ue=3,Oe=2,Pt=1,Wt=new Float32Array(Ue*Ve*Ee),gn=new Float32Array(Oe*Ve*Ee),en=new Float32Array(Pt*Ve*Ee);for(let Zn=0;Zn2?0:-1,er=[Br,ln,0,Br+2/3,ln,0,Br+2/3,ln+1,0,Br,ln,0,Br+2/3,ln+1,0,Br,ln+1,0];Wt.set(er,Ue*Ve*Zn),gn.set(ve,Oe*Ve*Zn);const Zr=[Zn,Zn,Zn,Zn,Zn,Zn];en.set(Zr,Pt*Ve*Zn)}const Dn=new no;Dn.setAttribute("position",new ti(Wt,Ue)),Dn.setAttribute("uv",new ti(gn,Oe)),Dn.setAttribute("faceIndex",new ti(en,Pt)),s.push(Dn),p>Bh&&p--}return{lodPlanes:s,sizeLods:l,sigmas:h}}function cp(b,s,l){const h=new Wl(b,s,l);return h.texture.mapping=Je,h.texture.name="PMREM.cubeUv",h.scissorTest=!0,h}function cc(b,s,l,h,p){b.viewport.set(s,l,h,p),b.scissor.set(s,l,h,p)}function Dg(b,s,l){const h=new Float32Array(Ed),p=new _n(0,1,0);return new vh({name:"SphericalGaussianBlur",defines:{n:Ed,CUBEUV_TEXEL_WIDTH:1/s,CUBEUV_TEXEL_HEIGHT:1/l,CUBEUV_MAX_MIP:`${b}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:h},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:p}},vertexShader:Nu(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:Ce,depthTest:!1,depthWrite:!1})}function Pl(){return new vh({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Nu(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:Ce,depthTest:!1,depthWrite:!1})}function mc(){return new vh({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Nu(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:Ce,depthTest:!1,depthWrite:!1})}function Nu(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function Qd(b){let s=new WeakMap,l=null;function h(P){if(P&&P.isTexture){const ee=P.mapping,ie=ee===In||ee===pr,he=ee===Gt||ee===On;if(ie||he)if(P.isRenderTargetTexture&&P.needsPMREMUpdate===!0){P.needsPMREMUpdate=!1;let me=s.get(P);return l===null&&(l=new Aa(b)),me=ie?l.fromEquirectangular(P,me):l.fromCubemap(P,me),s.set(P,me),me.texture}else{if(s.has(P))return s.get(P).texture;{const me=P.image;if(ie&&me&&me.height>0||he&&me&&p(me)){l===null&&(l=new Aa(b));const ve=ie?l.fromEquirectangular(P):l.fromCubemap(P);return s.set(P,ve),P.addEventListener("dispose",y),ve.texture}else return null}}}return P}function p(P){let ee=0;const ie=6;for(let he=0;hes.maxTextureSize&&(ei=Math.ceil(Zr/s.maxTextureSize),Zr=s.maxTextureSize);const cs=new Float32Array(Zr*ei*4*Ue),Ys=new Uh(cs,Zr,ei,Ue);Ys.type=gs,Ys.needsUpdate=!0;const Jr=er*4;for(let Si=0;Si0)return b;const p=s*l;let y=Hm[p];if(y===void 0&&(y=new Float32Array(p),Hm[p]=y),s!==0){h.toArray(y,0);for(let C=1,P=0;C!==s;++C)P+=l,b[C].toArray(y,P)}return y}function D(b,s){if(b.length!==s.length)return!1;for(let l=0,h=b.length;l/gm;function If(b){return b.replace(xA,dp)}function dp(b,s){const l=ol[s];if(l===void 0)throw new Error("Can not resolve #include <"+s+">");return If(l)}const Xf=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,_A=/#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 dd(b){return b.replace(_A,jf).replace(Xf,bA)}function bA(b,s,l,h){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),jf(b,s,l,h)}function jf(b,s,l,h){let p="";for(let y=parseInt(s);y0&&(Oe+=` +`),Pt=[Ee,Ve].filter(nf).join(` +`),Pt.length>0&&(Pt+=` +`)):(Oe=[qp(l),"#define SHADER_NAME "+l.shaderName,Ve,l.instancing?"#define USE_INSTANCING":"",l.instancingColor?"#define USE_INSTANCING_COLOR":"",l.supportsVertexTextures?"#define VERTEX_TEXTURES":"",l.useFog&&l.fog?"#define USE_FOG":"",l.useFog&&l.fogExp2?"#define FOG_EXP2":"",l.map?"#define USE_MAP":"",l.envMap?"#define USE_ENVMAP":"",l.envMap?"#define "+he:"",l.lightMap?"#define USE_LIGHTMAP":"",l.aoMap?"#define USE_AOMAP":"",l.emissiveMap?"#define USE_EMISSIVEMAP":"",l.bumpMap?"#define USE_BUMPMAP":"",l.normalMap?"#define USE_NORMALMAP":"",l.normalMap&&l.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",l.normalMap&&l.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",l.clearcoatMap?"#define USE_CLEARCOATMAP":"",l.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",l.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",l.displacementMap&&l.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",l.specularMap?"#define USE_SPECULARMAP":"",l.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",l.specularColorMap?"#define USE_SPECULARCOLORMAP":"",l.roughnessMap?"#define USE_ROUGHNESSMAP":"",l.metalnessMap?"#define USE_METALNESSMAP":"",l.alphaMap?"#define USE_ALPHAMAP":"",l.transmission?"#define USE_TRANSMISSION":"",l.transmissionMap?"#define USE_TRANSMISSIONMAP":"",l.thicknessMap?"#define USE_THICKNESSMAP":"",l.sheenColorMap?"#define USE_SHEENCOLORMAP":"",l.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",l.vertexTangents?"#define USE_TANGENT":"",l.vertexColors?"#define USE_COLOR":"",l.vertexAlphas?"#define USE_COLOR_ALPHA":"",l.vertexUvs?"#define USE_UV":"",l.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",l.flatShading?"#define FLAT_SHADED":"",l.skinning?"#define USE_SKINNING":"",l.morphTargets?"#define USE_MORPHTARGETS":"",l.morphNormals&&l.flatShading===!1?"#define USE_MORPHNORMALS":"",l.morphColors&&l.isWebGL2?"#define USE_MORPHCOLORS":"",l.morphTargetsCount>0&&l.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",l.morphTargetsCount>0&&l.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+l.morphTextureStride:"",l.morphTargetsCount>0&&l.isWebGL2?"#define MORPHTARGETS_COUNT "+l.morphTargetsCount:"",l.doubleSided?"#define DOUBLE_SIDED":"",l.flipSided?"#define FLIP_SIDED":"",l.shadowMapEnabled?"#define USE_SHADOWMAP":"",l.shadowMapEnabled?"#define "+ee:"",l.sizeAttenuation?"#define USE_SIZEATTENUATION":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",l.logarithmicDepthBuffer&&l.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","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","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#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(nf).join(` +`),Pt=[Ee,qp(l),"#define SHADER_NAME "+l.shaderName,Ve,l.useFog&&l.fog?"#define USE_FOG":"",l.useFog&&l.fogExp2?"#define FOG_EXP2":"",l.map?"#define USE_MAP":"",l.matcap?"#define USE_MATCAP":"",l.envMap?"#define USE_ENVMAP":"",l.envMap?"#define "+ie:"",l.envMap?"#define "+he:"",l.envMap?"#define "+me:"",ve?"#define CUBEUV_TEXEL_WIDTH "+ve.texelWidth:"",ve?"#define CUBEUV_TEXEL_HEIGHT "+ve.texelHeight:"",ve?"#define CUBEUV_MAX_MIP "+ve.maxMip+".0":"",l.lightMap?"#define USE_LIGHTMAP":"",l.aoMap?"#define USE_AOMAP":"",l.emissiveMap?"#define USE_EMISSIVEMAP":"",l.bumpMap?"#define USE_BUMPMAP":"",l.normalMap?"#define USE_NORMALMAP":"",l.normalMap&&l.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",l.normalMap&&l.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",l.clearcoat?"#define USE_CLEARCOAT":"",l.clearcoatMap?"#define USE_CLEARCOATMAP":"",l.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",l.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",l.specularMap?"#define USE_SPECULARMAP":"",l.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",l.specularColorMap?"#define USE_SPECULARCOLORMAP":"",l.roughnessMap?"#define USE_ROUGHNESSMAP":"",l.metalnessMap?"#define USE_METALNESSMAP":"",l.alphaMap?"#define USE_ALPHAMAP":"",l.alphaTest?"#define USE_ALPHATEST":"",l.sheen?"#define USE_SHEEN":"",l.sheenColorMap?"#define USE_SHEENCOLORMAP":"",l.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",l.transmission?"#define USE_TRANSMISSION":"",l.transmissionMap?"#define USE_TRANSMISSIONMAP":"",l.thicknessMap?"#define USE_THICKNESSMAP":"",l.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",l.vertexTangents?"#define USE_TANGENT":"",l.vertexColors||l.instancingColor?"#define USE_COLOR":"",l.vertexAlphas?"#define USE_COLOR_ALPHA":"",l.vertexUvs?"#define USE_UV":"",l.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",l.gradientMap?"#define USE_GRADIENTMAP":"",l.flatShading?"#define FLAT_SHADED":"",l.doubleSided?"#define DOUBLE_SIDED":"",l.flipSided?"#define FLIP_SIDED":"",l.shadowMapEnabled?"#define USE_SHADOWMAP":"",l.shadowMapEnabled?"#define "+ee:"",l.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",l.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",l.logarithmicDepthBuffer&&l.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",l.toneMapping!==fn?"#define TONE_MAPPING":"",l.toneMapping!==fn?ol.tonemapping_pars_fragment:"",l.toneMapping!==fn?yu("toneMapping",l.toneMapping):"",l.dithering?"#define DITHERING":"",l.opaque?"#define OPAQUE":"",ol.encodings_pars_fragment,vu("linearToOutputTexel",l.outputEncoding),l.useDepthPacking?"#define DEPTH_PACKING "+l.depthPacking:"",` +`].filter(nf).join(` +`)),C=If(C),C=rh(C,l),C=ih(C,l),P=If(P),P=rh(P,l),P=ih(P,l),C=dd(C),P=dd(P),l.isWebGL2&&l.isRawShaderMaterial!==!0&&(Wt=`#version 300 es +`,Oe=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+Oe,Pt=["#define varying in",l.glslVersion===$c?"":"layout(location = 0) out highp vec4 pc_fragColor;",l.glslVersion===$c?"":"#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(` +`)+` +`+Pt);const gn=Wt+Oe+C,en=Wt+Pt+P,Dn=_o(p,35633,gn),Zn=_o(p,35632,en);if(p.attachShader(Ue,Dn),p.attachShader(Ue,Zn),l.index0AttributeName!==void 0?p.bindAttribLocation(Ue,0,l.index0AttributeName):l.morphTargets===!0&&p.bindAttribLocation(Ue,0,"position"),p.linkProgram(Ue),b.debug.checkShaderErrors){const er=p.getProgramInfoLog(Ue).trim(),Zr=p.getShaderInfoLog(Dn).trim(),ei=p.getShaderInfoLog(Zn).trim();let cs=!0,Ys=!0;if(p.getProgramParameter(Ue,35714)===!1){cs=!1;const Jr=To(p,Dn,"vertex"),$i=To(p,Zn,"fragment");console.error("THREE.WebGLProgram: Shader Error "+p.getError()+" - VALIDATE_STATUS "+p.getProgramParameter(Ue,35715)+` + +Program Info Log: `+er+` +`+Jr+` +`+$i)}else er!==""?console.warn("THREE.WebGLProgram: Program Info Log:",er):(Zr===""||ei==="")&&(Ys=!1);Ys&&(this.diagnostics={runnable:cs,programLog:er,vertexShader:{log:Zr,prefix:Oe},fragmentShader:{log:ei,prefix:Pt}})}p.deleteShader(Dn),p.deleteShader(Zn);let Br;this.getUniforms=function(){return Br===void 0&&(Br=new So(p,Ue)),Br};let ln;return this.getAttributes=function(){return ln===void 0&&(ln=Wu(p,Ue)),ln},this.destroy=function(){h.releaseStatesOfProgram(this),p.deleteProgram(Ue),this.program=void 0},this.name=l.shaderName,this.id=wa++,this.cacheKey=s,this.usedTimes=1,this.program=Ue,this.vertexShader=Dn,this.fragmentShader=Zn,this}let dw=0;class Aw{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(s){const l=s.vertexShader,h=s.fragmentShader,p=this._getShaderStage(l),y=this._getShaderStage(h),C=this._getShaderCacheForMaterial(s);return C.has(p)===!1&&(C.add(p),p.usedTimes++),C.has(y)===!1&&(C.add(y),y.usedTimes++),this}remove(s){const l=this.materialCache.get(s);for(const h of l)h.usedTimes--,h.usedTimes===0&&this.shaderCache.delete(h.code);return this.materialCache.delete(s),this}getVertexShaderID(s){return this._getShaderStage(s.vertexShader).id}getFragmentShaderID(s){return this._getShaderStage(s.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(s){const l=this.materialCache;return l.has(s)===!1&&l.set(s,new Set),l.get(s)}_getShaderStage(s){const l=this.shaderCache;if(l.has(s)===!1){const h=new pw(s);l.set(s,h)}return l.get(s)}}class pw{constructor(s){this.id=dw++,this.code=s,this.usedTimes=0}}function l_(b,s,l,h,p,y,C){const P=new co,ee=new Aw,ie=[],he=p.isWebGL2,me=p.logarithmicDepthBuffer,ve=p.vertexTextures;let Ee=p.precision;const Ve={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 Ue(ln,er,Zr,ei,cs){const Ys=ei.fog,Jr=cs.geometry,$i=ln.isMeshStandardMaterial?ei.environment:null,Si=(ln.isMeshStandardMaterial?l:s).get(ln.envMap||$i),us=Si&&Si.mapping===Je?Si.image.height:null,vs=Ve[ln.type];ln.precision!==null&&(Ee=p.getMaxPrecision(ln.precision),Ee!==ln.precision&&console.warn("THREE.WebGLProgram.getParameters:",ln.precision,"not supported, using",Ee,"instead."));const Vi=Jr.morphAttributes.position||Jr.morphAttributes.normal||Jr.morphAttributes.color,Xi=Vi!==void 0?Vi.length:0;let ia=0;Jr.morphAttributes.position!==void 0&&(ia=1),Jr.morphAttributes.normal!==void 0&&(ia=2),Jr.morphAttributes.color!==void 0&&(ia=3);let Ms,Ia,bo,Lo;if(vs){const xa=Ch[vs];Ms=xa.vertexShader,Ia=xa.fragmentShader}else Ms=ln.vertexShader,Ia=ln.fragmentShader,ee.update(ln),bo=ee.getVertexShaderID(ln),Lo=ee.getFragmentShaderID(ln);const es=b.getRenderTarget(),Qc=ln.alphaTest>0,ll=ln.clearcoat>0;return{isWebGL2:he,shaderID:vs,shaderName:ln.type,vertexShader:Ms,fragmentShader:Ia,defines:ln.defines,customVertexShaderID:bo,customFragmentShaderID:Lo,isRawShaderMaterial:ln.isRawShaderMaterial===!0,glslVersion:ln.glslVersion,precision:Ee,instancing:cs.isInstancedMesh===!0,instancingColor:cs.isInstancedMesh===!0&&cs.instanceColor!==null,supportsVertexTextures:ve,outputEncoding:es===null?b.outputEncoding:es.isXRRenderTarget===!0?es.texture.encoding:Hn,map:!!ln.map,matcap:!!ln.matcap,envMap:!!Si,envMapMode:Si&&Si.mapping,envMapCubeUVHeight:us,lightMap:!!ln.lightMap,aoMap:!!ln.aoMap,emissiveMap:!!ln.emissiveMap,bumpMap:!!ln.bumpMap,normalMap:!!ln.normalMap,objectSpaceNormalMap:ln.normalMapType===As,tangentSpaceNormalMap:ln.normalMapType===Qi,decodeVideoTexture:!!ln.map&&ln.map.isVideoTexture===!0&&ln.map.encoding===ar,clearcoat:ll,clearcoatMap:ll&&!!ln.clearcoatMap,clearcoatRoughnessMap:ll&&!!ln.clearcoatRoughnessMap,clearcoatNormalMap:ll&&!!ln.clearcoatNormalMap,displacementMap:!!ln.displacementMap,roughnessMap:!!ln.roughnessMap,metalnessMap:!!ln.metalnessMap,specularMap:!!ln.specularMap,specularIntensityMap:!!ln.specularIntensityMap,specularColorMap:!!ln.specularColorMap,opaque:ln.transparent===!1&&ln.blending===Xe,alphaMap:!!ln.alphaMap,alphaTest:Qc,gradientMap:!!ln.gradientMap,sheen:ln.sheen>0,sheenColorMap:!!ln.sheenColorMap,sheenRoughnessMap:!!ln.sheenRoughnessMap,transmission:ln.transmission>0,transmissionMap:!!ln.transmissionMap,thicknessMap:!!ln.thicknessMap,combine:ln.combine,vertexTangents:!!ln.normalMap&&!!Jr.attributes.tangent,vertexColors:ln.vertexColors,vertexAlphas:ln.vertexColors===!0&&!!Jr.attributes.color&&Jr.attributes.color.itemSize===4,vertexUvs:!!ln.map||!!ln.bumpMap||!!ln.normalMap||!!ln.specularMap||!!ln.alphaMap||!!ln.emissiveMap||!!ln.roughnessMap||!!ln.metalnessMap||!!ln.clearcoatMap||!!ln.clearcoatRoughnessMap||!!ln.clearcoatNormalMap||!!ln.displacementMap||!!ln.transmissionMap||!!ln.thicknessMap||!!ln.specularIntensityMap||!!ln.specularColorMap||!!ln.sheenColorMap||!!ln.sheenRoughnessMap,uvsVertexOnly:!(ln.map||ln.bumpMap||ln.normalMap||ln.specularMap||ln.alphaMap||ln.emissiveMap||ln.roughnessMap||ln.metalnessMap||ln.clearcoatNormalMap||ln.transmission>0||ln.transmissionMap||ln.thicknessMap||ln.specularIntensityMap||ln.specularColorMap||ln.sheen>0||ln.sheenColorMap||ln.sheenRoughnessMap)&&!!ln.displacementMap,fog:!!Ys,useFog:ln.fog===!0,fogExp2:Ys&&Ys.isFogExp2,flatShading:!!ln.flatShading,sizeAttenuation:ln.sizeAttenuation,logarithmicDepthBuffer:me,skinning:cs.isSkinnedMesh===!0,morphTargets:Jr.morphAttributes.position!==void 0,morphNormals:Jr.morphAttributes.normal!==void 0,morphColors:Jr.morphAttributes.color!==void 0,morphTargetsCount:Xi,morphTextureStride:ia,numDirLights:er.directional.length,numPointLights:er.point.length,numSpotLights:er.spot.length,numRectAreaLights:er.rectArea.length,numHemiLights:er.hemi.length,numDirLightShadows:er.directionalShadowMap.length,numPointLightShadows:er.pointShadowMap.length,numSpotLightShadows:er.spotShadowMap.length,numClippingPlanes:C.numPlanes,numClipIntersection:C.numIntersection,dithering:ln.dithering,shadowMapEnabled:b.shadowMap.enabled&&Zr.length>0,shadowMapType:b.shadowMap.type,toneMapping:ln.toneMapped?b.toneMapping:fn,physicallyCorrectLights:b.physicallyCorrectLights,premultipliedAlpha:ln.premultipliedAlpha,doubleSided:ln.side===ue,flipSided:ln.side===fe,useDepthPacking:!!ln.depthPacking,depthPacking:ln.depthPacking||0,index0AttributeName:ln.index0AttributeName,extensionDerivatives:ln.extensions&&ln.extensions.derivatives,extensionFragDepth:ln.extensions&&ln.extensions.fragDepth,extensionDrawBuffers:ln.extensions&&ln.extensions.drawBuffers,extensionShaderTextureLOD:ln.extensions&&ln.extensions.shaderTextureLOD,rendererExtensionFragDepth:he||h.has("EXT_frag_depth"),rendererExtensionDrawBuffers:he||h.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:he||h.has("EXT_shader_texture_lod"),customProgramCacheKey:ln.customProgramCacheKey()}}function Oe(ln){const er=[];if(ln.shaderID?er.push(ln.shaderID):(er.push(ln.customVertexShaderID),er.push(ln.customFragmentShaderID)),ln.defines!==void 0)for(const Zr in ln.defines)er.push(Zr),er.push(ln.defines[Zr]);return ln.isRawShaderMaterial===!1&&(Pt(er,ln),Wt(er,ln),er.push(b.outputEncoding)),er.push(ln.customProgramCacheKey),er.join()}function Pt(ln,er){ln.push(er.precision),ln.push(er.outputEncoding),ln.push(er.envMapMode),ln.push(er.envMapCubeUVHeight),ln.push(er.combine),ln.push(er.vertexUvs),ln.push(er.fogExp2),ln.push(er.sizeAttenuation),ln.push(er.morphTargetsCount),ln.push(er.morphAttributeCount),ln.push(er.numDirLights),ln.push(er.numPointLights),ln.push(er.numSpotLights),ln.push(er.numHemiLights),ln.push(er.numRectAreaLights),ln.push(er.numDirLightShadows),ln.push(er.numPointLightShadows),ln.push(er.numSpotLightShadows),ln.push(er.shadowMapType),ln.push(er.toneMapping),ln.push(er.numClippingPlanes),ln.push(er.numClipIntersection),ln.push(er.depthPacking)}function Wt(ln,er){P.disableAll(),er.isWebGL2&&P.enable(0),er.supportsVertexTextures&&P.enable(1),er.instancing&&P.enable(2),er.instancingColor&&P.enable(3),er.map&&P.enable(4),er.matcap&&P.enable(5),er.envMap&&P.enable(6),er.lightMap&&P.enable(7),er.aoMap&&P.enable(8),er.emissiveMap&&P.enable(9),er.bumpMap&&P.enable(10),er.normalMap&&P.enable(11),er.objectSpaceNormalMap&&P.enable(12),er.tangentSpaceNormalMap&&P.enable(13),er.clearcoat&&P.enable(14),er.clearcoatMap&&P.enable(15),er.clearcoatRoughnessMap&&P.enable(16),er.clearcoatNormalMap&&P.enable(17),er.displacementMap&&P.enable(18),er.specularMap&&P.enable(19),er.roughnessMap&&P.enable(20),er.metalnessMap&&P.enable(21),er.gradientMap&&P.enable(22),er.alphaMap&&P.enable(23),er.alphaTest&&P.enable(24),er.vertexColors&&P.enable(25),er.vertexAlphas&&P.enable(26),er.vertexUvs&&P.enable(27),er.vertexTangents&&P.enable(28),er.uvsVertexOnly&&P.enable(29),er.fog&&P.enable(30),ln.push(P.mask),P.disableAll(),er.useFog&&P.enable(0),er.flatShading&&P.enable(1),er.logarithmicDepthBuffer&&P.enable(2),er.skinning&&P.enable(3),er.morphTargets&&P.enable(4),er.morphNormals&&P.enable(5),er.morphColors&&P.enable(6),er.premultipliedAlpha&&P.enable(7),er.shadowMapEnabled&&P.enable(8),er.physicallyCorrectLights&&P.enable(9),er.doubleSided&&P.enable(10),er.flipSided&&P.enable(11),er.useDepthPacking&&P.enable(12),er.dithering&&P.enable(13),er.specularIntensityMap&&P.enable(14),er.specularColorMap&&P.enable(15),er.transmission&&P.enable(16),er.transmissionMap&&P.enable(17),er.thicknessMap&&P.enable(18),er.sheen&&P.enable(19),er.sheenColorMap&&P.enable(20),er.sheenRoughnessMap&&P.enable(21),er.decodeVideoTexture&&P.enable(22),er.opaque&&P.enable(23),ln.push(P.mask)}function gn(ln){const er=Ve[ln.type];let Zr;if(er){const ei=Ch[er];Zr=WA.clone(ei.uniforms)}else Zr=ln.uniforms;return Zr}function en(ln,er){let Zr;for(let ei=0,cs=ie.length;ei0?h.push(Pt):Ee.transparent===!0?p.push(Pt):l.push(Pt)}function ee(me,ve,Ee,Ve,Ue,Oe){const Pt=C(me,ve,Ee,Ve,Ue,Oe);Ee.transmission>0?h.unshift(Pt):Ee.transparent===!0?p.unshift(Pt):l.unshift(Pt)}function ie(me,ve){l.length>1&&l.sort(me||mw),h.length>1&&h.sort(ve||c_),p.length>1&&p.sort(ve||c_)}function he(){for(let me=s,ve=b.length;me=b.get(h).length?(y=new zy,b.get(h).push(y)):y=b.get(h)[p],y}function l(){b=new WeakMap}return{get:s,dispose:l}}function vw(){const b={};return{get:function(s){if(b[s.id]!==void 0)return b[s.id];let l;switch(s.type){case"DirectionalLight":l={direction:new _n,color:new js};break;case"SpotLight":l={position:new _n,direction:new _n,color:new js,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":l={position:new _n,color:new js,distance:0,decay:0};break;case"HemisphereLight":l={direction:new _n,skyColor:new js,groundColor:new js};break;case"RectAreaLight":l={color:new js,position:new _n,halfWidth:new _n,halfHeight:new _n};break}return b[s.id]=l,l}}}function u_(){const b={};return{get:function(s){if(b[s.id]!==void 0)return b[s.id];let l;switch(s.type){case"DirectionalLight":l={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Hi};break;case"SpotLight":l={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Hi};break;case"PointLight":l={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Hi,shadowCameraNear:1,shadowCameraFar:1e3};break}return b[s.id]=l,l}}}let h_=0;function IE(b,s){return(s.castShadow?1:0)-(b.castShadow?1:0)}function NE(b,s){const l=new vw,h=u_(),p={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let he=0;he<9;he++)p.probe.push(new _n);const y=new _n,C=new Or,P=new Or;function ee(he,me){let ve=0,Ee=0,Ve=0;for(let er=0;er<9;er++)p.probe[er].set(0,0,0);let Ue=0,Oe=0,Pt=0,Wt=0,gn=0,en=0,Dn=0,Zn=0;he.sort(IE);const Br=me!==!0?Math.PI:1;for(let er=0,Zr=he.length;er0&&(s.isWebGL2||b.has("OES_texture_float_linear")===!0?(p.rectAreaLTC1=aa.LTC_FLOAT_1,p.rectAreaLTC2=aa.LTC_FLOAT_2):b.has("OES_texture_half_float_linear")===!0?(p.rectAreaLTC1=aa.LTC_HALF_1,p.rectAreaLTC2=aa.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),p.ambient[0]=ve,p.ambient[1]=Ee,p.ambient[2]=Ve;const ln=p.hash;(ln.directionalLength!==Ue||ln.pointLength!==Oe||ln.spotLength!==Pt||ln.rectAreaLength!==Wt||ln.hemiLength!==gn||ln.numDirectionalShadows!==en||ln.numPointShadows!==Dn||ln.numSpotShadows!==Zn)&&(p.directional.length=Ue,p.spot.length=Pt,p.rectArea.length=Wt,p.point.length=Oe,p.hemi.length=gn,p.directionalShadow.length=en,p.directionalShadowMap.length=en,p.pointShadow.length=Dn,p.pointShadowMap.length=Dn,p.spotShadow.length=Zn,p.spotShadowMap.length=Zn,p.directionalShadowMatrix.length=en,p.pointShadowMatrix.length=Dn,p.spotShadowMatrix.length=Zn,ln.directionalLength=Ue,ln.pointLength=Oe,ln.spotLength=Pt,ln.rectAreaLength=Wt,ln.hemiLength=gn,ln.numDirectionalShadows=en,ln.numPointShadows=Dn,ln.numSpotShadows=Zn,p.version=h_++)}function ie(he,me){let ve=0,Ee=0,Ve=0,Ue=0,Oe=0;const Pt=me.matrixWorldInverse;for(let Wt=0,gn=he.length;Wt=l.get(y).length?(P=new LE(b,s),l.get(y).push(P)):P=l.get(y)[C],P}function p(){l=new WeakMap}return{get:h,dispose:p}}class f_ extends ua{constructor(s){super(),this.type="MeshDepthMaterial",this.depthPacking=Hr,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(s)}copy(s){return super.copy(s),this.depthPacking=s.depthPacking,this.map=s.map,this.alphaMap=s.alphaMap,this.displacementMap=s.displacementMap,this.displacementScale=s.displacementScale,this.displacementBias=s.displacementBias,this.wireframe=s.wireframe,this.wireframeLinewidth=s.wireframeLinewidth,this}}f_.prototype.isMeshDepthMaterial=!0;class Wy extends ua{constructor(s){super(),this.type="MeshDistanceMaterial",this.referencePosition=new _n,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(s)}copy(s){return super.copy(s),this.referencePosition.copy(s.referencePosition),this.nearDistance=s.nearDistance,this.farDistance=s.farDistance,this.map=s.map,this.alphaMap=s.alphaMap,this.displacementMap=s.displacementMap,this.displacementScale=s.displacementScale,this.displacementBias=s.displacementBias,this}}Wy.prototype.isMeshDistanceMaterial=!0;const FE=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,wA=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function zm(b,s,l){let h=new jl;const p=new Hi,y=new Hi,C=new ro,P=new f_({depthPacking:fi}),ee=new Wy,ie={},he=l.maxTextureSize,me={0:fe,1:Y,2:ue},ve=new vh({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Hi},radius:{value:4}},vertexShader:FE,fragmentShader:wA}),Ee=ve.clone();Ee.defines.HORIZONTAL_PASS=1;const Ve=new no;Ve.setAttribute("position",new ti(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const Ue=new ml(Ve,ve),Oe=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Q,this.render=function(en,Dn,Zn){if(Oe.enabled===!1||Oe.autoUpdate===!1&&Oe.needsUpdate===!1||en.length===0)return;const Br=b.getRenderTarget(),ln=b.getActiveCubeFace(),er=b.getActiveMipmapLevel(),Zr=b.state;Zr.setBlending(Ce),Zr.buffers.color.setClear(1,1,1,1),Zr.buffers.depth.setTest(!0),Zr.setScissorTest(!1);for(let ei=0,cs=en.length;eihe||p.y>he)&&(p.x>he&&(y.x=Math.floor(he/$i.x),p.x=y.x*$i.x,Jr.mapSize.x=y.x),p.y>he&&(y.y=Math.floor(he/$i.y),p.y=y.y*$i.y,Jr.mapSize.y=y.y)),Jr.map===null&&!Jr.isPointLightShadow&&this.type===j&&(Jr.map=new Wl(p.x,p.y),Jr.map.texture.name=Ys.name+".shadowMap",Jr.mapPass=new Wl(p.x,p.y),Jr.camera.updateProjectionMatrix()),Jr.map===null){const us={minFilter:it,magFilter:it,format:zt};Jr.map=new Wl(p.x,p.y,us),Jr.map.texture.name=Ys.name+".shadowMap",Jr.camera.updateProjectionMatrix()}b.setRenderTarget(Jr.map),b.clear();const Si=Jr.getViewportCount();for(let us=0;us0){const cs=Zr.uuid,Ys=Dn.uuid;let Jr=ie[cs];Jr===void 0&&(Jr={},ie[cs]=Jr);let $i=Jr[Ys];$i===void 0&&($i=Zr.clone(),Jr[Ys]=$i),Zr=$i}return Zr.visible=Dn.visible,Zr.wireframe=Dn.wireframe,er===j?Zr.side=Dn.shadowSide!==null?Dn.shadowSide:Dn.side:Zr.side=Dn.shadowSide!==null?Dn.shadowSide:me[Dn.side],Zr.alphaMap=Dn.alphaMap,Zr.alphaTest=Dn.alphaTest,Zr.clipShadows=Dn.clipShadows,Zr.clippingPlanes=Dn.clippingPlanes,Zr.clipIntersection=Dn.clipIntersection,Zr.displacementMap=Dn.displacementMap,Zr.displacementScale=Dn.displacementScale,Zr.displacementBias=Dn.displacementBias,Zr.wireframeLinewidth=Dn.wireframeLinewidth,Zr.linewidth=Dn.linewidth,Zn.isPointLight===!0&&Zr.isMeshDistanceMaterial===!0&&(Zr.referencePosition.setFromMatrixPosition(Zn.matrixWorld),Zr.nearDistance=Br,Zr.farDistance=ln),Zr}function gn(en,Dn,Zn,Br,ln){if(en.visible===!1)return;if(en.layers.test(Dn.layers)&&(en.isMesh||en.isLine||en.isPoints)&&(en.castShadow||en.receiveShadow&&ln===j)&&(!en.frustumCulled||h.intersectsObject(en))){en.modelViewMatrix.multiplyMatrices(Zn.matrixWorldInverse,en.matrixWorld);const ei=s.update(en),cs=en.material;if(Array.isArray(cs)){const Ys=ei.groups;for(let Jr=0,$i=Ys.length;Jr<$i;Jr++){const Si=Ys[Jr],us=cs[Si.materialIndex];if(us&&us.visible){const vs=Wt(en,us,Br,Zn.near,Zn.far,ln);b.renderBufferDirect(Zn,null,ei,vs,en,Si)}}}else if(cs.visible){const Ys=Wt(en,cs,Br,Zn.near,Zn.far,ln);b.renderBufferDirect(Zn,null,ei,Ys,en,null)}}const Zr=en.children;for(let ei=0,cs=Zr.length;ei=1):Si.indexOf("OpenGL ES")!==-1&&($i=parseFloat(/^OpenGL ES (\d)/.exec(Si)[1]),Jr=$i>=2);let us=null,vs={};const Vi=b.getParameter(3088),Xi=b.getParameter(2978),ia=new ro().fromArray(Vi),Ms=new ro().fromArray(Xi);function Ia(Ir,Fa,Ma){const dl=new Uint8Array(4),ao=b.createTexture();b.bindTexture(Ir,ao),b.texParameteri(Ir,10241,9728),b.texParameteri(Ir,10240,9728);for(let cl=0;clVs||qn.height>Vs)&&(ka=Vs/Math.max(qn.width,qn.height)),ka<1||Cn===!0)if(typeof HTMLImageElement!="undefined"&&qn instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&qn instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&qn instanceof ImageBitmap){const qa=Cn?jh:Math.floor,el=qa(ka*qn.width),Ki=qa(ka*qn.height);Ue===void 0&&(Ue=Wt(el,Ki));const Ml=Gi?Wt(el,Ki):Ue;return Ml.width=el,Ml.height=Ki,Ml.getContext("2d").drawImage(qn,0,0,el,Ki),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+qn.width+"x"+qn.height+") to ("+el+"x"+Ki+")."),Ml}else return"data"in qn&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+qn.width+"x"+qn.height+")."),qn;return qn}function en(qn){return Eh(qn.width)&&Eh(qn.height)}function Dn(qn){return P?!1:qn.wrapS!==at||qn.wrapT!==at||qn.minFilter!==it&&qn.minFilter!==Ft}function Zn(qn,Cn){return qn.generateMipmaps&&Cn&&qn.minFilter!==it&&qn.minFilter!==Ft}function Br(qn){b.generateMipmap(qn)}function ln(qn,Cn,Gi,Vs,ka=!1){if(P===!1)return Cn;if(qn!==null){if(b[qn]!==void 0)return b[qn];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+qn+"'")}let qa=Cn;return Cn===6403&&(Gi===5126&&(qa=33326),Gi===5131&&(qa=33325),Gi===5121&&(qa=33321)),Cn===33319&&(Gi===5126&&(qa=33328),Gi===5131&&(qa=33327),Gi===5121&&(qa=33323)),Cn===6408&&(Gi===5126&&(qa=34836),Gi===5131&&(qa=34842),Gi===5121&&(qa=Vs===ar&&ka===!1?35907:32856),Gi===32819&&(qa=32854),Gi===32820&&(qa=32855)),(qa===33325||qa===33326||qa===33327||qa===33328||qa===34842||qa===34836)&&s.get("EXT_color_buffer_float"),qa}function er(qn,Cn,Gi){return Zn(qn,Gi)===!0||qn.isFramebufferTexture&&qn.minFilter!==it&&qn.minFilter!==Ft?Math.log2(Math.max(Cn.width,Cn.height))+1:qn.mipmaps!==void 0&&qn.mipmaps.length>0?qn.mipmaps.length:qn.isCompressedTexture&&Array.isArray(qn.image)?Cn.mipmaps.length:1}function Zr(qn){return qn===it||qn===ht||qn===Yt?9728:9729}function ei(qn){const Cn=qn.target;Cn.removeEventListener("dispose",ei),Ys(Cn),Cn.isVideoTexture&&Ve.delete(Cn)}function cs(qn){const Cn=qn.target;Cn.removeEventListener("dispose",cs),$i(Cn)}function Ys(qn){const Cn=h.get(qn);if(Cn.__webglInit===void 0)return;const Gi=qn.source,Vs=Oe.get(Gi);if(Vs){const ka=Vs[Cn.__cacheKey];ka.usedTimes--,ka.usedTimes===0&&Jr(qn),Object.keys(Vs).length===0&&Oe.delete(Gi)}h.remove(qn)}function Jr(qn){const Cn=h.get(qn);b.deleteTexture(Cn.__webglTexture);const Gi=qn.source,Vs=Oe.get(Gi);delete Vs[Cn.__cacheKey],C.memory.textures--}function $i(qn){const Cn=qn.texture,Gi=h.get(qn),Vs=h.get(Cn);if(Vs.__webglTexture!==void 0&&(b.deleteTexture(Vs.__webglTexture),C.memory.textures--),qn.depthTexture&&qn.depthTexture.dispose(),qn.isWebGLCubeRenderTarget)for(let ka=0;ka<6;ka++)b.deleteFramebuffer(Gi.__webglFramebuffer[ka]),Gi.__webglDepthbuffer&&b.deleteRenderbuffer(Gi.__webglDepthbuffer[ka]);else b.deleteFramebuffer(Gi.__webglFramebuffer),Gi.__webglDepthbuffer&&b.deleteRenderbuffer(Gi.__webglDepthbuffer),Gi.__webglMultisampledFramebuffer&&b.deleteFramebuffer(Gi.__webglMultisampledFramebuffer),Gi.__webglColorRenderbuffer&&b.deleteRenderbuffer(Gi.__webglColorRenderbuffer),Gi.__webglDepthRenderbuffer&&b.deleteRenderbuffer(Gi.__webglDepthRenderbuffer);if(qn.isWebGLMultipleRenderTargets)for(let ka=0,qa=Cn.length;ka=ee&&console.warn("THREE.WebGLTextures: Trying to use "+qn+" texture units while this GPU supports only "+ee),Si+=1,qn}function Vi(qn){const Cn=[];return Cn.push(qn.wrapS),Cn.push(qn.wrapT),Cn.push(qn.magFilter),Cn.push(qn.minFilter),Cn.push(qn.anisotropy),Cn.push(qn.internalFormat),Cn.push(qn.format),Cn.push(qn.type),Cn.push(qn.generateMipmaps),Cn.push(qn.premultiplyAlpha),Cn.push(qn.flipY),Cn.push(qn.unpackAlignment),Cn.push(qn.encoding),Cn.join()}function Xi(qn,Cn){const Gi=h.get(qn);if(qn.isVideoTexture&&Tu(qn),qn.isRenderTargetTexture===!1&&qn.version>0&&Gi.__version!==qn.version){const Vs=qn.image;if(Vs===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Vs.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ll(Gi,qn,Cn);return}}l.activeTexture(33984+Cn),l.bindTexture(3553,Gi.__webglTexture)}function ia(qn,Cn){const Gi=h.get(qn);if(qn.version>0&&Gi.__version!==qn.version){ll(Gi,qn,Cn);return}l.activeTexture(33984+Cn),l.bindTexture(35866,Gi.__webglTexture)}function Ms(qn,Cn){const Gi=h.get(qn);if(qn.version>0&&Gi.__version!==qn.version){ll(Gi,qn,Cn);return}l.activeTexture(33984+Cn),l.bindTexture(32879,Gi.__webglTexture)}function Ia(qn,Cn){const Gi=h.get(qn);if(qn.version>0&&Gi.__version!==qn.version){El(Gi,qn,Cn);return}l.activeTexture(33984+Cn),l.bindTexture(34067,Gi.__webglTexture)}const bo={[we]:10497,[at]:33071,[wt]:33648},Lo={[it]:9728,[ht]:9984,[Yt]:9986,[Ft]:9729,[xn]:9985,[nr]:9987};function es(qn,Cn,Gi){if(Gi?(b.texParameteri(qn,10242,bo[Cn.wrapS]),b.texParameteri(qn,10243,bo[Cn.wrapT]),(qn===32879||qn===35866)&&b.texParameteri(qn,32882,bo[Cn.wrapR]),b.texParameteri(qn,10240,Lo[Cn.magFilter]),b.texParameteri(qn,10241,Lo[Cn.minFilter])):(b.texParameteri(qn,10242,33071),b.texParameteri(qn,10243,33071),(qn===32879||qn===35866)&&b.texParameteri(qn,32882,33071),(Cn.wrapS!==at||Cn.wrapT!==at)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),b.texParameteri(qn,10240,Zr(Cn.magFilter)),b.texParameteri(qn,10241,Zr(Cn.minFilter)),Cn.minFilter!==it&&Cn.minFilter!==Ft&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),s.has("EXT_texture_filter_anisotropic")===!0){const Vs=s.get("EXT_texture_filter_anisotropic");if(Cn.type===gs&&s.has("OES_texture_float_linear")===!1||P===!1&&Cn.type===Di&&s.has("OES_texture_half_float_linear")===!1)return;(Cn.anisotropy>1||h.get(Cn).__currentAnisotropy)&&(b.texParameterf(qn,Vs.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(Cn.anisotropy,p.getMaxAnisotropy())),h.get(Cn).__currentAnisotropy=Cn.anisotropy)}}function Qc(qn,Cn){let Gi=!1;qn.__webglInit===void 0&&(qn.__webglInit=!0,Cn.addEventListener("dispose",ei));const Vs=Cn.source;let ka=Oe.get(Vs);ka===void 0&&(ka={},Oe.set(Vs,ka));const qa=Vi(Cn);if(qa!==qn.__cacheKey){ka[qa]===void 0&&(ka[qa]={texture:b.createTexture(),usedTimes:0},C.memory.textures++,Gi=!0),ka[qa].usedTimes++;const el=ka[qn.__cacheKey];el!==void 0&&(ka[qn.__cacheKey].usedTimes--,el.usedTimes===0&&Jr(Cn)),qn.__cacheKey=qa,qn.__webglTexture=ka[qa].texture}return Gi}function ll(qn,Cn,Gi){let Vs=3553;Cn.isDataArrayTexture&&(Vs=35866),Cn.isData3DTexture&&(Vs=32879);const ka=Qc(qn,Cn),qa=Cn.source;if(l.activeTexture(33984+Gi),l.bindTexture(Vs,qn.__webglTexture),qa.version!==qa.__currentVersion||ka===!0){b.pixelStorei(37440,Cn.flipY),b.pixelStorei(37441,Cn.premultiplyAlpha),b.pixelStorei(3317,Cn.unpackAlignment),b.pixelStorei(37443,0);const el=Dn(Cn)&&en(Cn.image)===!1;let Ki=gn(Cn.image,el,!1,he);Ki=fu(Cn,Ki);const Ml=en(Ki)||P,Dl=y.convert(Cn.format,Cn.encoding);let vo=y.convert(Cn.type),Ir=ln(Cn.internalFormat,Dl,vo,Cn.encoding,Cn.isVideoTexture);es(Vs,Cn,Ml);let Fa;const Ma=Cn.mipmaps,dl=P&&Cn.isVideoTexture!==!0,ao=qn.__version===void 0||ka===!0,cl=er(Cn,Ki,Ml);if(Cn.isDepthTexture)Ir=6402,P?Cn.type===gs?Ir=36012:Cn.type===ui?Ir=33190:Cn.type===jt?Ir=35056:Ir=33189:Cn.type===gs&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),Cn.format===ur&&Ir===6402&&Cn.type!==Ri&&Cn.type!==ui&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),Cn.type=Ri,vo=y.convert(Cn.type)),Cn.format===lr&&Ir===6402&&(Ir=34041,Cn.type!==jt&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),Cn.type=jt,vo=y.convert(Cn.type))),ao&&(dl?l.texStorage2D(3553,1,Ir,Ki.width,Ki.height):l.texImage2D(3553,0,Ir,Ki.width,Ki.height,0,Dl,vo,null));else if(Cn.isDataTexture)if(Ma.length>0&&Ml){dl&&ao&&l.texStorage2D(3553,cl,Ir,Ma[0].width,Ma[0].height);for(let fa=0,Al=Ma.length;fa>=1,Al>>=1}}else if(Ma.length>0&&Ml){dl&&ao&&l.texStorage2D(3553,cl,Ir,Ma[0].width,Ma[0].height);for(let fa=0,Al=Ma.length;fa0&&ao++,l.texStorage2D(34067,ao,Fa,Ki[0].width,Ki[0].height));for(let fa=0;fa<6;fa++)if(el){Ma?l.texSubImage2D(34069+fa,0,0,0,Ki[fa].width,Ki[fa].height,vo,Ir,Ki[fa].data):l.texImage2D(34069+fa,0,Fa,Ki[fa].width,Ki[fa].height,0,vo,Ir,Ki[fa].data);for(let Al=0;Al0&&ko(qn)===!1){Gi.__webglMultisampledFramebuffer=b.createFramebuffer(),Gi.__webglColorRenderbuffer=b.createRenderbuffer(),b.bindRenderbuffer(36161,Gi.__webglColorRenderbuffer);const Ki=y.convert(Cn.format,Cn.encoding),Ml=y.convert(Cn.type),Dl=ln(Cn.internalFormat,Ki,Ml,Cn.encoding),vo=Jo(qn);b.renderbufferStorageMultisample(36161,vo,Dl,qn.width,qn.height),l.bindFramebuffer(36160,Gi.__webglMultisampledFramebuffer),b.framebufferRenderbuffer(36160,36064,36161,Gi.__webglColorRenderbuffer),b.bindRenderbuffer(36161,null),qn.depthBuffer&&(Gi.__webglDepthRenderbuffer=b.createRenderbuffer(),tc(Gi.__webglDepthRenderbuffer,qn,!0)),l.bindFramebuffer(36160,null)}if(ka){l.bindTexture(34067,Vs.__webglTexture),es(34067,Cn,el);for(let Ki=0;Ki<6;Ki++)xa(Gi.__webglFramebuffer[Ki],qn,Cn,36064,34069+Ki);Zn(Cn,el)&&Br(34067),l.unbindTexture()}else if(qa){const Ki=qn.texture;for(let Ml=0,Dl=Ki.length;Ml0&&ko(qn)===!1){const Cn=qn.width,Gi=qn.height;let Vs=16384;const ka=[36064],qa=qn.stencilBuffer?33306:36096;qn.depthBuffer&&ka.push(qa);const el=h.get(qn),Ki=el.__ignoreDepthValues!==void 0?el.__ignoreDepthValues:!1;Ki===!1&&(qn.depthBuffer&&(Vs|=256),qn.stencilBuffer&&(Vs|=1024)),l.bindFramebuffer(36008,el.__webglMultisampledFramebuffer),l.bindFramebuffer(36009,el.__webglFramebuffer),Ki===!0&&(b.invalidateFramebuffer(36008,[qa]),b.invalidateFramebuffer(36009,[qa])),b.blitFramebuffer(0,0,Cn,Gi,0,0,Cn,Gi,Vs,9728),Ee&&b.invalidateFramebuffer(36008,ka),l.bindFramebuffer(36008,null),l.bindFramebuffer(36009,el.__webglMultisampledFramebuffer)}}function Jo(qn){return Math.min(me,qn.samples)}function ko(qn){const Cn=h.get(qn);return P&&qn.samples>0&&s.has("WEBGL_multisampled_render_to_texture")===!0&&Cn.__useRenderToTexture!==!1}function Tu(qn){const Cn=C.render.frame;Ve.get(qn)!==Cn&&(Ve.set(qn,Cn),qn.update())}function fu(qn,Cn){const Gi=qn.encoding,Vs=qn.format,ka=qn.type;return qn.isCompressedTexture===!0||qn.isVideoTexture===!0||qn.format===lf||Gi!==Hn&&(Gi===ar?P===!1?s.has("EXT_sRGB")===!0&&Vs===zt?(qn.format=lf,qn.minFilter=Ft,qn.generateMipmaps=!1):Cn=ri.sRGBToLinear(Cn):(Vs!==zt||ka!==si)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",Gi)),Cn}this.allocateTextureUnit=vs,this.resetTextureUnits=us,this.setTexture2D=Xi,this.setTexture2DArray=ia,this.setTexture3D=Ms,this.setTextureCube=Ia,this.rebindTextures=ca,this.setupRenderTarget=go,this.updateRenderTargetMipmap=Oa,this.updateMultisampleRenderTarget=vl,this.setupDepthRenderbuffer=as,this.setupFrameBufferTexture=xa,this.useMultisampledRTT=ko}function UE(b,s,l){const h=l.isWebGL2;function p(y,C=null){let P;if(y===si)return 5121;if(y===Nn)return 32819;if(y===cn)return 32820;if(y===Pr)return 5120;if(y===ys)return 5122;if(y===Ri)return 5123;if(y===Fi)return 5124;if(y===ui)return 5125;if(y===gs)return 5126;if(y===Di)return h?5131:(P=s.get("OES_texture_half_float"),P!==null?P.HALF_FLOAT_OES:null);if(y===ct)return 6406;if(y===zt)return 6408;if(y===Mn)return 6409;if(y===sn)return 6410;if(y===ur)return 6402;if(y===lr)return 34041;if(y===oi)return 6403;if(y===pt)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(y===lf)return P=s.get("EXT_sRGB"),P!==null?P.SRGB_ALPHA_EXT:null;if(y===mi)return 36244;if(y===Le)return 33319;if(y===k)return 33320;if(y===W)return 36249;if(y===S||y===G||y===ae||y===We)if(C===ar)if(P=s.get("WEBGL_compressed_texture_s3tc_srgb"),P!==null){if(y===S)return P.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(y===G)return P.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(y===ae)return P.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(y===We)return P.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(P=s.get("WEBGL_compressed_texture_s3tc"),P!==null){if(y===S)return P.COMPRESSED_RGB_S3TC_DXT1_EXT;if(y===G)return P.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(y===ae)return P.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(y===We)return P.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(y===tt||y===gt||y===bt||y===Bn)if(P=s.get("WEBGL_compressed_texture_pvrtc"),P!==null){if(y===tt)return P.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(y===gt)return P.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(y===bt)return P.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(y===Bn)return P.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(y===Ge)return P=s.get("WEBGL_compressed_texture_etc1"),P!==null?P.COMPRESSED_RGB_ETC1_WEBGL:null;if(y===$e||y===Ne)if(P=s.get("WEBGL_compressed_texture_etc"),P!==null){if(y===$e)return C===ar?P.COMPRESSED_SRGB8_ETC2:P.COMPRESSED_RGB8_ETC2;if(y===Ne)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:P.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(y===Ye||y===vt||y===an||y===xt||y===tn||y===Un||y===hr||y===or||y===$r||y===xr||y===Rr||y===pi||y===Tn||y===ir)if(P=s.get("WEBGL_compressed_texture_astc"),P!==null){if(y===Ye)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:P.COMPRESSED_RGBA_ASTC_4x4_KHR;if(y===vt)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:P.COMPRESSED_RGBA_ASTC_5x4_KHR;if(y===an)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:P.COMPRESSED_RGBA_ASTC_5x5_KHR;if(y===xt)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:P.COMPRESSED_RGBA_ASTC_6x5_KHR;if(y===tn)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:P.COMPRESSED_RGBA_ASTC_6x6_KHR;if(y===Un)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:P.COMPRESSED_RGBA_ASTC_8x5_KHR;if(y===hr)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:P.COMPRESSED_RGBA_ASTC_8x6_KHR;if(y===or)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:P.COMPRESSED_RGBA_ASTC_8x8_KHR;if(y===$r)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:P.COMPRESSED_RGBA_ASTC_10x5_KHR;if(y===xr)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:P.COMPRESSED_RGBA_ASTC_10x6_KHR;if(y===Rr)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:P.COMPRESSED_RGBA_ASTC_10x8_KHR;if(y===pi)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:P.COMPRESSED_RGBA_ASTC_10x10_KHR;if(y===Tn)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:P.COMPRESSED_RGBA_ASTC_12x10_KHR;if(y===ir)return C===ar?P.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:P.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(y===ni)if(P=s.get("EXT_texture_compression_bptc"),P!==null){if(y===ni)return C===ar?P.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:P.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return y===jt?h?34042:(P=s.get("WEBGL_depth_texture"),P!==null?P.UNSIGNED_INT_24_8_WEBGL:null):b[y]!==void 0?b[y]:null}return{convert:p}}class Dv extends $l{constructor(s=[]){super(),this.cameras=s}}Dv.prototype.isArrayCamera=!0;class Zd extends pn{constructor(){super(),this.type="Group"}}Zd.prototype.isGroup=!0;const Ky={type:"move"};class H0{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Zd,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 Zd,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new _n,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new _n),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Zd,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new _n,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new _n),this._grip}dispatchEvent(s){return this._targetRay!==null&&this._targetRay.dispatchEvent(s),this._grip!==null&&this._grip.dispatchEvent(s),this._hand!==null&&this._hand.dispatchEvent(s),this}disconnect(s){return this.dispatchEvent({type:"disconnected",data:s}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(s,l,h){let p=null,y=null,C=null;const P=this._targetRay,ee=this._grip,ie=this._hand;if(s&&l.session.visibilityState!=="visible-blurred")if(P!==null&&(p=l.getPose(s.targetRaySpace,h),p!==null&&(P.matrix.fromArray(p.transform.matrix),P.matrix.decompose(P.position,P.rotation,P.scale),p.linearVelocity?(P.hasLinearVelocity=!0,P.linearVelocity.copy(p.linearVelocity)):P.hasLinearVelocity=!1,p.angularVelocity?(P.hasAngularVelocity=!0,P.angularVelocity.copy(p.angularVelocity)):P.hasAngularVelocity=!1,this.dispatchEvent(Ky))),ie&&s.hand){C=!0;for(const Ue of s.hand.values()){const Oe=l.getJointPose(Ue,h);if(ie.joints[Ue.jointName]===void 0){const Wt=new Zd;Wt.matrixAutoUpdate=!1,Wt.visible=!1,ie.joints[Ue.jointName]=Wt,ie.add(Wt)}const Pt=ie.joints[Ue.jointName];Oe!==null&&(Pt.matrix.fromArray(Oe.transform.matrix),Pt.matrix.decompose(Pt.position,Pt.rotation,Pt.scale),Pt.jointRadius=Oe.radius),Pt.visible=Oe!==null}const he=ie.joints["index-finger-tip"],me=ie.joints["thumb-tip"],ve=he.position.distanceTo(me.position),Ee=.02,Ve=.005;ie.inputState.pinching&&ve>Ee+Ve?(ie.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:s.handedness,target:this})):!ie.inputState.pinching&&ve<=Ee-Ve&&(ie.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:s.handedness,target:this}))}else ee!==null&&s.gripSpace&&(y=l.getPose(s.gripSpace,h),y!==null&&(ee.matrix.fromArray(y.transform.matrix),ee.matrix.decompose(ee.position,ee.rotation,ee.scale),y.linearVelocity?(ee.hasLinearVelocity=!0,ee.linearVelocity.copy(y.linearVelocity)):ee.hasLinearVelocity=!1,y.angularVelocity?(ee.hasAngularVelocity=!0,ee.angularVelocity.copy(y.angularVelocity)):ee.hasAngularVelocity=!1));return P!==null&&(P.visible=p!==null),ee!==null&&(ee.visible=y!==null),ie!==null&&(ie.visible=C!==null),this}}class xw extends Ro{constructor(s,l,h,p,y,C,P,ee,ie,he){if(he=he!==void 0?he:ur,he!==ur&&he!==lr)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");h===void 0&&he===ur&&(h=Ri),h===void 0&&he===lr&&(h=jt),super(null,p,y,C,P,ee,he,h,ie),this.image={width:s,height:l},this.magFilter=P!==void 0?P:it,this.minFilter=ee!==void 0?ee:it,this.flipY=!1,this.generateMipmaps=!1}}xw.prototype.isDepthTexture=!0;class DE extends Nh{constructor(s,l){super();const h=this;let p=null,y=1,C=null,P="local-floor",ee=null,ie=null,he=null,me=null,ve=null,Ee=null;const Ve=l.getContextAttributes();let Ue=null,Oe=null;const Pt=[],Wt=new Map,gn=new $l;gn.layers.enable(1),gn.viewport=new ro;const en=new $l;en.layers.enable(2),en.viewport=new ro;const Dn=[gn,en],Zn=new Dv;Zn.layers.enable(1),Zn.layers.enable(2);let Br=null,ln=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(Vi){let Xi=Pt[Vi];return Xi===void 0&&(Xi=new H0,Pt[Vi]=Xi),Xi.getTargetRaySpace()},this.getControllerGrip=function(Vi){let Xi=Pt[Vi];return Xi===void 0&&(Xi=new H0,Pt[Vi]=Xi),Xi.getGripSpace()},this.getHand=function(Vi){let Xi=Pt[Vi];return Xi===void 0&&(Xi=new H0,Pt[Vi]=Xi),Xi.getHandSpace()};function er(Vi){const Xi=Wt.get(Vi.inputSource);Xi&&Xi.dispatchEvent({type:Vi.type,data:Vi.inputSource})}function Zr(){Wt.forEach(function(Vi,Xi){Vi.disconnect(Xi)}),Wt.clear(),Br=null,ln=null,s.setRenderTarget(Ue),ve=null,me=null,he=null,p=null,Oe=null,vs.stop(),h.isPresenting=!1,h.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(Vi){y=Vi,h.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(Vi){P=Vi,h.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return ee||C},this.setReferenceSpace=function(Vi){ee=Vi},this.getBaseLayer=function(){return me!==null?me:ve},this.getBinding=function(){return he},this.getFrame=function(){return Ee},this.getSession=function(){return p},this.setSession=function(Vi){return lo(this,null,function*(){if(p=Vi,p!==null){if(Ue=s.getRenderTarget(),p.addEventListener("select",er),p.addEventListener("selectstart",er),p.addEventListener("selectend",er),p.addEventListener("squeeze",er),p.addEventListener("squeezestart",er),p.addEventListener("squeezeend",er),p.addEventListener("end",Zr),p.addEventListener("inputsourceschange",ei),Ve.xrCompatible!==!0&&(yield l.makeXRCompatible()),p.renderState.layers===void 0||s.capabilities.isWebGL2===!1){const Xi={antialias:p.renderState.layers===void 0?Ve.antialias:!0,alpha:Ve.alpha,depth:Ve.depth,stencil:Ve.stencil,framebufferScaleFactor:y};ve=new XRWebGLLayer(p,l,Xi),p.updateRenderState({baseLayer:ve}),Oe=new Wl(ve.framebufferWidth,ve.framebufferHeight,{format:zt,type:si,encoding:s.outputEncoding})}else{let Xi=null,ia=null,Ms=null;Ve.depth&&(Ms=Ve.stencil?35056:33190,Xi=Ve.stencil?lr:ur,ia=Ve.stencil?jt:Ri);const Ia={colorFormat:s.outputEncoding===ar?35907:32856,depthFormat:Ms,scaleFactor:y};he=new XRWebGLBinding(p,l),me=he.createProjectionLayer(Ia),p.updateRenderState({layers:[me]}),Oe=new Wl(me.textureWidth,me.textureHeight,{format:zt,type:si,depthTexture:new xw(me.textureWidth,me.textureHeight,ia,void 0,void 0,void 0,void 0,void 0,void 0,Xi),stencilBuffer:Ve.stencil,encoding:s.outputEncoding,samples:Ve.antialias?4:0});const bo=s.properties.get(Oe);bo.__ignoreDepthValues=me.ignoreDepthValues}Oe.isXRRenderTarget=!0,this.setFoveation(1),C=yield p.requestReferenceSpace(P),vs.setContext(p),vs.start(),h.isPresenting=!0,h.dispatchEvent({type:"sessionstart"})}})};function ei(Vi){const Xi=p.inputSources;for(let ia=0;ia0&&(Ue.alphaTest.value=Oe.alphaTest);const Pt=s.get(Oe).envMap;if(Pt&&(Ue.envMap.value=Pt,Ue.flipEnvMap.value=Pt.isCubeTexture&&Pt.isRenderTargetTexture===!1?-1:1,Ue.reflectivity.value=Oe.reflectivity,Ue.ior.value=Oe.ior,Ue.refractionRatio.value=Oe.refractionRatio),Oe.lightMap){Ue.lightMap.value=Oe.lightMap;const en=b.physicallyCorrectLights!==!0?Math.PI:1;Ue.lightMapIntensity.value=Oe.lightMapIntensity*en}Oe.aoMap&&(Ue.aoMap.value=Oe.aoMap,Ue.aoMapIntensity.value=Oe.aoMapIntensity);let Wt;Oe.map?Wt=Oe.map:Oe.specularMap?Wt=Oe.specularMap:Oe.displacementMap?Wt=Oe.displacementMap:Oe.normalMap?Wt=Oe.normalMap:Oe.bumpMap?Wt=Oe.bumpMap:Oe.roughnessMap?Wt=Oe.roughnessMap:Oe.metalnessMap?Wt=Oe.metalnessMap:Oe.alphaMap?Wt=Oe.alphaMap:Oe.emissiveMap?Wt=Oe.emissiveMap:Oe.clearcoatMap?Wt=Oe.clearcoatMap:Oe.clearcoatNormalMap?Wt=Oe.clearcoatNormalMap:Oe.clearcoatRoughnessMap?Wt=Oe.clearcoatRoughnessMap:Oe.specularIntensityMap?Wt=Oe.specularIntensityMap:Oe.specularColorMap?Wt=Oe.specularColorMap:Oe.transmissionMap?Wt=Oe.transmissionMap:Oe.thicknessMap?Wt=Oe.thicknessMap:Oe.sheenColorMap?Wt=Oe.sheenColorMap:Oe.sheenRoughnessMap&&(Wt=Oe.sheenRoughnessMap),Wt!==void 0&&(Wt.isWebGLRenderTarget&&(Wt=Wt.texture),Wt.matrixAutoUpdate===!0&&Wt.updateMatrix(),Ue.uvTransform.value.copy(Wt.matrix));let gn;Oe.aoMap?gn=Oe.aoMap:Oe.lightMap&&(gn=Oe.lightMap),gn!==void 0&&(gn.isWebGLRenderTarget&&(gn=gn.texture),gn.matrixAutoUpdate===!0&&gn.updateMatrix(),Ue.uv2Transform.value.copy(gn.matrix))}function y(Ue,Oe){Ue.diffuse.value.copy(Oe.color),Ue.opacity.value=Oe.opacity}function C(Ue,Oe){Ue.dashSize.value=Oe.dashSize,Ue.totalSize.value=Oe.dashSize+Oe.gapSize,Ue.scale.value=Oe.scale}function P(Ue,Oe,Pt,Wt){Ue.diffuse.value.copy(Oe.color),Ue.opacity.value=Oe.opacity,Ue.size.value=Oe.size*Pt,Ue.scale.value=Wt*.5,Oe.map&&(Ue.map.value=Oe.map),Oe.alphaMap&&(Ue.alphaMap.value=Oe.alphaMap),Oe.alphaTest>0&&(Ue.alphaTest.value=Oe.alphaTest);let gn;Oe.map?gn=Oe.map:Oe.alphaMap&&(gn=Oe.alphaMap),gn!==void 0&&(gn.matrixAutoUpdate===!0&&gn.updateMatrix(),Ue.uvTransform.value.copy(gn.matrix))}function ee(Ue,Oe){Ue.diffuse.value.copy(Oe.color),Ue.opacity.value=Oe.opacity,Ue.rotation.value=Oe.rotation,Oe.map&&(Ue.map.value=Oe.map),Oe.alphaMap&&(Ue.alphaMap.value=Oe.alphaMap),Oe.alphaTest>0&&(Ue.alphaTest.value=Oe.alphaTest);let Pt;Oe.map?Pt=Oe.map:Oe.alphaMap&&(Pt=Oe.alphaMap),Pt!==void 0&&(Pt.matrixAutoUpdate===!0&&Pt.updateMatrix(),Ue.uvTransform.value.copy(Pt.matrix))}function ie(Ue,Oe){Ue.specular.value.copy(Oe.specular),Ue.shininess.value=Math.max(Oe.shininess,1e-4)}function he(Ue,Oe){Oe.gradientMap&&(Ue.gradientMap.value=Oe.gradientMap)}function me(Ue,Oe){Ue.roughness.value=Oe.roughness,Ue.metalness.value=Oe.metalness,Oe.roughnessMap&&(Ue.roughnessMap.value=Oe.roughnessMap),Oe.metalnessMap&&(Ue.metalnessMap.value=Oe.metalnessMap),s.get(Oe).envMap&&(Ue.envMapIntensity.value=Oe.envMapIntensity)}function ve(Ue,Oe,Pt){Ue.ior.value=Oe.ior,Oe.sheen>0&&(Ue.sheenColor.value.copy(Oe.sheenColor).multiplyScalar(Oe.sheen),Ue.sheenRoughness.value=Oe.sheenRoughness,Oe.sheenColorMap&&(Ue.sheenColorMap.value=Oe.sheenColorMap),Oe.sheenRoughnessMap&&(Ue.sheenRoughnessMap.value=Oe.sheenRoughnessMap)),Oe.clearcoat>0&&(Ue.clearcoat.value=Oe.clearcoat,Ue.clearcoatRoughness.value=Oe.clearcoatRoughness,Oe.clearcoatMap&&(Ue.clearcoatMap.value=Oe.clearcoatMap),Oe.clearcoatRoughnessMap&&(Ue.clearcoatRoughnessMap.value=Oe.clearcoatRoughnessMap),Oe.clearcoatNormalMap&&(Ue.clearcoatNormalScale.value.copy(Oe.clearcoatNormalScale),Ue.clearcoatNormalMap.value=Oe.clearcoatNormalMap,Oe.side===fe&&Ue.clearcoatNormalScale.value.negate())),Oe.transmission>0&&(Ue.transmission.value=Oe.transmission,Ue.transmissionSamplerMap.value=Pt.texture,Ue.transmissionSamplerSize.value.set(Pt.width,Pt.height),Oe.transmissionMap&&(Ue.transmissionMap.value=Oe.transmissionMap),Ue.thickness.value=Oe.thickness,Oe.thicknessMap&&(Ue.thicknessMap.value=Oe.thicknessMap),Ue.attenuationDistance.value=Oe.attenuationDistance,Ue.attenuationColor.value.copy(Oe.attenuationColor)),Ue.specularIntensity.value=Oe.specularIntensity,Ue.specularColor.value.copy(Oe.specularColor),Oe.specularIntensityMap&&(Ue.specularIntensityMap.value=Oe.specularIntensityMap),Oe.specularColorMap&&(Ue.specularColorMap.value=Oe.specularColorMap)}function Ee(Ue,Oe){Oe.matcap&&(Ue.matcap.value=Oe.matcap)}function Ve(Ue,Oe){Ue.referencePosition.value.copy(Oe.referencePosition),Ue.nearDistance.value=Oe.nearDistance,Ue.farDistance.value=Oe.farDistance}return{refreshFogUniforms:l,refreshMaterialUniforms:h}}function _w(){const b=Ou("canvas");return b.style.display="block",b}function ru(b={}){const s=b.canvas!==void 0?b.canvas:_w(),l=b.context!==void 0?b.context:null,h=b.depth!==void 0?b.depth:!0,p=b.stencil!==void 0?b.stencil:!0,y=b.antialias!==void 0?b.antialias:!1,C=b.premultipliedAlpha!==void 0?b.premultipliedAlpha:!0,P=b.preserveDrawingBuffer!==void 0?b.preserveDrawingBuffer:!1,ee=b.powerPreference!==void 0?b.powerPreference:"default",ie=b.failIfMajorPerformanceCaveat!==void 0?b.failIfMajorPerformanceCaveat:!1;let he;l!==null?he=l.getContextAttributes().alpha:he=b.alpha!==void 0?b.alpha:!1;let me=null,ve=null;const Ee=[],Ve=[];this.domElement=s,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=Hn,this.physicallyCorrectLights=!1,this.toneMapping=fn,this.toneMappingExposure=1;const Ue=this;let Oe=!1,Pt=0,Wt=0,gn=null,en=-1,Dn=null;const Zn=new ro,Br=new ro;let ln=null,er=s.width,Zr=s.height,ei=1,cs=null,Ys=null;const Jr=new ro(0,0,er,Zr),$i=new ro(0,0,er,Zr);let Si=!1;const us=new jl;let vs=!1,Vi=!1,Xi=null;const ia=new Or,Ms=new Hi,Ia=new _n,bo={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Lo(){return gn===null?ei:1}let es=l;function Qc(zn,vi){for(let ki=0;ki0?ve=Ve[Ve.length-1]:ve=null,Ee.pop(),Ee.length>0?me=Ee[Ee.length-1]:me=null};function cg(zn,vi,ki,Ei){if(zn.visible===!1)return;if(zn.layers.test(vi.layers)){if(zn.isGroup)ki=zn.renderOrder;else if(zn.isLOD)zn.autoUpdate===!0&&zn.update(vi);else if(zn.isLight)ve.pushLight(zn),zn.castShadow&&ve.pushShadow(zn);else if(zn.isSprite){if(!zn.frustumCulled||us.intersectsSprite(zn)){Ei&&Ia.setFromMatrixPosition(zn.matrixWorld).applyMatrix4(ia);const ji=Jo.update(zn),tl=zn.material;tl.visible&&me.push(zn,ji,tl,ki,Ia.z,null)}}else if((zn.isMesh||zn.isLine||zn.isPoints)&&(zn.isSkinnedMesh&&zn.skeleton.frame!==tc.render.frame&&(zn.skeleton.update(),zn.skeleton.frame=tc.render.frame),!zn.frustumCulled||us.intersectsObject(zn))){Ei&&Ia.setFromMatrixPosition(zn.matrixWorld).applyMatrix4(ia);const ji=Jo.update(zn),tl=zn.material;if(Array.isArray(tl)){const pl=ji.groups;for(let nc=0,xc=pl.length;nc0&&A2(os,vi,ki),Ei&&xa.viewport(Zn.copy(Ei)),os.length>0&&ab(os,vi,ki),ta.length>0&&ab(ta,vi,ki),ji.length>0&&ab(ji,vi,ki),xa.buffers.depth.setTest(!0),xa.buffers.depth.setMask(!0),xa.buffers.color.setMask(!0),xa.setPolygonOffset(!1)}function A2(zn,vi,ki){const Ei=El.isWebGL2;Xi===null&&(Xi=new Wl(1,1,{generateMipmaps:!0,type:ll.has("EXT_color_buffer_half_float")?Di:si,minFilter:nr,samples:Ei&&y===!0?4:0})),Ue.getDrawingBufferSize(Ms),Ei?Xi.setSize(Ms.x,Ms.y):Xi.setSize(jh(Ms.x),jh(Ms.y));const os=Ue.getRenderTarget();Ue.setRenderTarget(Xi),Ue.clear();const ta=Ue.toneMapping;Ue.toneMapping=fn,ab(zn,vi,ki),Ue.toneMapping=ta,as.updateMultisampleRenderTarget(Xi),as.updateRenderTargetMipmap(Xi),Ue.setRenderTarget(os)}function ab(zn,vi,ki){const Ei=vi.isScene===!0?vi.overrideMaterial:null;for(let os=0,ta=zn.length;os0&&as.useMultisampledRTT(zn)===!1?os=hs.get(zn).__webglMultisampledFramebuffer:os=nc,Zn.copy(zn.viewport),Br.copy(zn.scissor),ln=zn.scissorTest}else Zn.copy(Jr).multiplyScalar(ei).floor(),Br.copy($i).multiplyScalar(ei).floor(),ln=Si;if(xa.bindFramebuffer(36160,os)&&El.drawBuffers&&Ei&&xa.drawBuffers(zn,os),xa.viewport(Zn),xa.scissor(Br),xa.setScissorTest(ln),ta){const pl=hs.get(zn.texture);es.framebufferTexture2D(36160,36064,34069+vi,pl.__webglTexture,ki)}else if(ji){const pl=hs.get(zn.texture),nc=vi||0;es.framebufferTextureLayer(36160,36064,pl.__webglTexture,ki||0,nc)}en=-1},this.readRenderTargetPixels=function(zn,vi,ki,Ei,os,ta,ji){if(!(zn&&zn.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let tl=hs.get(zn).__webglFramebuffer;if(zn.isWebGLCubeRenderTarget&&ji!==void 0&&(tl=tl[ji]),tl){xa.bindFramebuffer(36160,tl);try{const pl=zn.texture,nc=pl.format,xc=pl.type;if(nc!==zt&&Ki.convert(nc)!==es.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const Bc=xc===Di&&(ll.has("EXT_color_buffer_half_float")||El.isWebGL2&&ll.has("EXT_color_buffer_float"));if(xc!==si&&Ki.convert(xc)!==es.getParameter(35738)&&!(xc===gs&&(El.isWebGL2||ll.has("OES_texture_float")||ll.has("WEBGL_color_buffer_float")))&&!Bc){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}vi>=0&&vi<=zn.width-Ei&&ki>=0&&ki<=zn.height-os&&es.readPixels(vi,ki,Ei,os,Ki.convert(nc),Ki.convert(xc),ta)}finally{const pl=gn!==null?hs.get(gn).__webglFramebuffer:null;xa.bindFramebuffer(36160,pl)}}},this.copyFramebufferToTexture=function(zn,vi,ki=0){if(vi.isFramebufferTexture!==!0){console.error("THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.");return}const Ei=Math.pow(2,-ki),os=Math.floor(vi.image.width*Ei),ta=Math.floor(vi.image.height*Ei);as.setTexture2D(vi,0),es.copyTexSubImage2D(3553,ki,0,0,zn.x,zn.y,os,ta),xa.unbindTexture()},this.copyTextureToTexture=function(zn,vi,ki,Ei=0){const os=vi.image.width,ta=vi.image.height,ji=Ki.convert(ki.format),tl=Ki.convert(ki.type);as.setTexture2D(ki,0),es.pixelStorei(37440,ki.flipY),es.pixelStorei(37441,ki.premultiplyAlpha),es.pixelStorei(3317,ki.unpackAlignment),vi.isDataTexture?es.texSubImage2D(3553,Ei,zn.x,zn.y,os,ta,ji,tl,vi.image.data):vi.isCompressedTexture?es.compressedTexSubImage2D(3553,Ei,zn.x,zn.y,vi.mipmaps[0].width,vi.mipmaps[0].height,ji,vi.mipmaps[0].data):es.texSubImage2D(3553,Ei,zn.x,zn.y,ji,tl,vi.image),Ei===0&&ki.generateMipmaps&&es.generateMipmap(3553),xa.unbindTexture()},this.copyTextureToTexture3D=function(zn,vi,ki,Ei,os=0){if(Ue.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const ta=zn.max.x-zn.min.x+1,ji=zn.max.y-zn.min.y+1,tl=zn.max.z-zn.min.z+1,pl=Ki.convert(Ei.format),nc=Ki.convert(Ei.type);let xc;if(Ei.isData3DTexture)as.setTexture3D(Ei,0),xc=32879;else if(Ei.isDataArrayTexture)as.setTexture2DArray(Ei,0),xc=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}es.pixelStorei(37440,Ei.flipY),es.pixelStorei(37441,Ei.premultiplyAlpha),es.pixelStorei(3317,Ei.unpackAlignment);const Bc=es.getParameter(3314),oh=es.getParameter(32878),i0=es.getParameter(3316),uv=es.getParameter(3315),hv=es.getParameter(32877),vp=ki.isCompressedTexture?ki.mipmaps[0]:ki.image;es.pixelStorei(3314,vp.width),es.pixelStorei(32878,vp.height),es.pixelStorei(3316,zn.min.x),es.pixelStorei(3315,zn.min.y),es.pixelStorei(32877,zn.min.z),ki.isDataTexture||ki.isData3DTexture?es.texSubImage3D(xc,os,vi.x,vi.y,vi.z,ta,ji,tl,pl,nc,vp.data):ki.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),es.compressedTexSubImage3D(xc,os,vi.x,vi.y,vi.z,ta,ji,tl,pl,vp.data)):es.texSubImage3D(xc,os,vi.x,vi.y,vi.z,ta,ji,tl,pl,nc,vp),es.pixelStorei(3314,Bc),es.pixelStorei(32878,oh),es.pixelStorei(3316,i0),es.pixelStorei(3315,uv),es.pixelStorei(32877,hv),os===0&&Ei.generateMipmaps&&es.generateMipmap(xc),xa.unbindTexture()},this.initTexture=function(zn){as.setTexture2D(zn,0),xa.unbindTexture()},this.resetState=function(){Pt=0,Wt=0,gn=null,xa.reset(),Ml.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}ru.prototype.isWebGLRenderer=!0;class d_ extends ru{}d_.prototype.isWebGL1Renderer=!0;class Kd{constructor(s,l=25e-5){this.name="",this.color=new js(s),this.density=l}clone(){return new Kd(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}Kd.prototype.isFogExp2=!0;class $y{constructor(s,l=1,h=1e3){this.name="",this.color=new js(s),this.near=l,this.far=h}clone(){return new $y(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}$y.prototype.isFog=!0;class Ap extends pn{constructor(){super(),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(s,l){return super.copy(s,l),s.background!==null&&(this.background=s.background.clone()),s.environment!==null&&(this.environment=s.environment.clone()),s.fog!==null&&(this.fog=s.fog.clone()),s.overrideMaterial!==null&&(this.overrideMaterial=s.overrideMaterial.clone()),this.autoUpdate=s.autoUpdate,this.matrixAutoUpdate=s.matrixAutoUpdate,this}toJSON(s){const l=super.toJSON(s);return this.fog!==null&&(l.object.fog=this.fog.toJSON()),l}}Ap.prototype.isScene=!0;class Ov{constructor(s,l){this.array=s,this.stride=l,this.count=s!==void 0?s.length/l:0,this.usage=Cl,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=kc()}onUploadCallback(){}set needsUpdate(s){s===!0&&this.version++}setUsage(s){return this.usage=s,this}copy(s){return this.array=new s.array.constructor(s.array),this.count=s.count,this.stride=s.stride,this.usage=s.usage,this}copyAt(s,l,h){s*=this.stride,h*=l.stride;for(let p=0,y=this.stride;ps.far||l.push({distance:ee,point:Xy.clone(),uv:Es.getUV(Xy,Vv,Km,jy,Hv,p_,g_,new Hi),face:null,object:this})}copy(s){return super.copy(s),s.center!==void 0&&this.center.copy(s.center),this.material=s.material,this}}eg.prototype.isSprite=!0;function Yy(b,s,l,h,p,y){Wm.subVectors(b,l).addScalar(.5).multiply(h),p!==void 0?(Zm.x=y*Wm.x-p*Wm.y,Zm.y=p*Wm.x+y*Wm.y):Zm.copy(Wm),b.copy(s),b.x+=Zm.x,b.y+=Zm.y,b.applyMatrix4(A_)}const z0=new _n,qy=new _n;class bw extends null{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(s){super.copy(s,!1);const l=s.levels;for(let h=0,p=l.length;h0){let h,p;for(h=1,p=l.length;h0){z0.setFromMatrixPosition(this.matrixWorld);const p=s.ray.origin.distanceTo(z0);this.getObjectForDistance(p).raycast(s,l)}}update(s){const l=this.levels;if(l.length>1){z0.setFromMatrixPosition(s.matrixWorld),qy.setFromMatrixPosition(this.matrixWorld);const h=z0.distanceTo(qy)/s.zoom;l[0].object.visible=!0;let p,y;for(p=1,y=l.length;p=l[p].distance;p++)l[p-1].object.visible=!1,l[p].object.visible=!0;for(this._currentLevel=p-1;pee)continue;ve.applyMatrix4(this.matrixWorld);const ln=s.ray.origin.distanceTo(ve);lns.far||l.push({distance:ln,point:me.clone().applyMatrix4(this.matrixWorld),index:gn,face:null,faceIndex:null,object:this})}}else{const Pt=Math.max(0,C.start),Wt=Math.min(Oe.count,C.start+C.count);for(let gn=Pt,en=Wt-1;gnee)continue;ve.applyMatrix4(this.matrixWorld);const Zn=s.ray.origin.distanceTo(ve);Zns.far||l.push({distance:Zn,point:me.clone().applyMatrix4(this.matrixWorld),index:gn,face:null,faceIndex:null,object:this})}}}else h.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}updateMorphTargets(){const s=this.geometry;if(s.isBufferGeometry){const l=s.morphAttributes,h=Object.keys(l);if(h.length>0){const p=l[h[0]];if(p!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let y=0,C=p.length;y0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}$m.prototype.isLine=!0;const Hg=new _n,Gg=new _n;class Wv extends $m{constructor(s,l){super(s,l),this.type="LineSegments"}computeLineDistances(){const s=this.geometry;if(s.isBufferGeometry)if(s.index===null){const l=s.attributes.position,h=[];for(let p=0,y=l.count;p0){const p=l[h[0]];if(p!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let y=0,C=p.length;y0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}VE.prototype.isPoints=!0;function Tw(b,s,l,h,p,y,C){const P=M_.distanceSqToPoint(b);if(Pp.far)return;y.push({distance:ie,distanceToRay:Math.sqrt(P),point:ee,index:s,face:null,object:C})}}class C_ extends Ro{constructor(s,l,h,p,y,C,P,ee,ie){super(s,l,h,p,y,C,P,ee,ie),this.minFilter=C!==void 0?C:Ft,this.magFilter=y!==void 0?y:Ft,this.generateMipmaps=!1;const he=this;function me(){he.needsUpdate=!0,s.requestVideoFrameCallback(me)}"requestVideoFrameCallback"in s&&s.requestVideoFrameCallback(me)}clone(){return new this.constructor(this.image).copy(this)}update(){const s=this.image;"requestVideoFrameCallback"in s===!1&&s.readyState>=s.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}C_.prototype.isVideoTexture=!0;class HE extends Ro{constructor(s,l,h){super({width:s,height:l}),this.format=h,this.magFilter=it,this.minFilter=it,this.generateMipmaps=!1,this.needsUpdate=!0}}HE.prototype.isFramebufferTexture=!0;class tx extends Ro{constructor(s,l,h,p,y,C,P,ee,ie,he,me,ve){super(null,C,P,ee,ie,he,p,y,me,ve),this.image={width:l,height:h},this.mipmaps=s,this.flipY=!1,this.generateMipmaps=!1}}tx.prototype.isCompressedTexture=!0;class Cw extends Ro{constructor(s,l,h,p,y,C,P,ee,ie){super(s,l,h,p,y,C,P,ee,ie),this.needsUpdate=!0}}Cw.prototype.isCanvasTexture=!0;class jd{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(s,l){const h=this.getUtoTmapping(s);return this.getPoint(h,l)}getPoints(s=5){const l=[];for(let h=0;h<=s;h++)l.push(this.getPoint(h/s));return l}getSpacedPoints(s=5){const l=[];for(let h=0;h<=s;h++)l.push(this.getPointAt(h/s));return l}getLength(){const s=this.getLengths();return s[s.length-1]}getLengths(s=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===s+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const l=[];let h,p=this.getPoint(0),y=0;l.push(0);for(let C=1;C<=s;C++)h=this.getPoint(C/s),y+=h.distanceTo(p),l.push(y),p=h;return this.cacheArcLengths=l,l}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(s,l){const h=this.getLengths();let p=0;const y=h.length;let C;l?C=l:C=s*h[y-1];let P=0,ee=y-1,ie;for(;P<=ee;)if(p=Math.floor(P+(ee-P)/2),ie=h[p]-C,ie<0)P=p+1;else if(ie>0)ee=p-1;else{ee=p;break}if(p=ee,h[p]===C)return p/(y-1);const he=h[p],ve=h[p+1]-he,Ee=(C-he)/ve;return(p+Ee)/(y-1)}getTangent(s,l){let p=s-1e-4,y=s+1e-4;p<0&&(p=0),y>1&&(y=1);const C=this.getPoint(p),P=this.getPoint(y),ee=l||(C.isVector2?new Hi:new _n);return ee.copy(P).sub(C).normalize(),ee}getTangentAt(s,l){const h=this.getUtoTmapping(s);return this.getTangent(h,l)}computeFrenetFrames(s,l){const h=new _n,p=[],y=[],C=[],P=new _n,ee=new Or;for(let Ee=0;Ee<=s;Ee++){const Ve=Ee/s;p[Ee]=this.getTangentAt(Ve,new _n)}y[0]=new _n,C[0]=new _n;let ie=Number.MAX_VALUE;const he=Math.abs(p[0].x),me=Math.abs(p[0].y),ve=Math.abs(p[0].z);he<=ie&&(ie=he,h.set(1,0,0)),me<=ie&&(ie=me,h.set(0,1,0)),ve<=ie&&h.set(0,0,1),P.crossVectors(p[0],h).normalize(),y[0].crossVectors(p[0],P),C[0].crossVectors(p[0],y[0]);for(let Ee=1;Ee<=s;Ee++){if(y[Ee]=y[Ee-1].clone(),C[Ee]=C[Ee-1].clone(),P.crossVectors(p[Ee-1],p[Ee]),P.length()>Number.EPSILON){P.normalize();const Ve=Math.acos(yl(p[Ee-1].dot(p[Ee]),-1,1));y[Ee].applyMatrix4(ee.makeRotationAxis(P,Ve))}C[Ee].crossVectors(p[Ee],y[Ee])}if(l===!0){let Ee=Math.acos(yl(y[0].dot(y[s]),-1,1));Ee/=s,p[0].dot(P.crossVectors(y[0],y[s]))>0&&(Ee=-Ee);for(let Ve=1;Ve<=s;Ve++)y[Ve].applyMatrix4(ee.makeRotationAxis(p[Ve],Ee*Ve)),C[Ve].crossVectors(p[Ve],y[Ve])}return{tangents:p,normals:y,binormals:C}}clone(){return new this.constructor().copy(this)}copy(s){return this.arcLengthDivisions=s.arcLengthDivisions,this}toJSON(){const s={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return s.arcLengthDivisions=this.arcLengthDivisions,s.type=this.type,s}fromJSON(s){return this.arcLengthDivisions=s.arcLengthDivisions,this}}class nx extends jd{constructor(s=0,l=0,h=1,p=1,y=0,C=Math.PI*2,P=!1,ee=0){super(),this.type="EllipseCurve",this.aX=s,this.aY=l,this.xRadius=h,this.yRadius=p,this.aStartAngle=y,this.aEndAngle=C,this.aClockwise=P,this.aRotation=ee}getPoint(s,l){const h=l||new Hi,p=Math.PI*2;let y=this.aEndAngle-this.aStartAngle;const C=Math.abs(y)p;)y-=p;y0?0:(Math.floor(Math.abs(P)/y)+1)*y:ee===0&&P===y-1&&(P=y-2,ee=1);let ie,he;this.closed||P>0?ie=p[(P-1)%y]:(rx.subVectors(p[0],p[1]).add(p[0]),ie=rx);const me=p[P%y],ve=p[(P+1)%y];if(this.closed||P+2p.length-2?p.length-1:C+1],me=p[C>p.length-3?p.length-1:C+2];return h.set(Rw(P,ee.x,ie.x,he.x,me.x),Rw(P,ee.y,ie.y,he.y,me.y)),h}copy(s){super.copy(s),this.points=[];for(let l=0,h=s.points.length;l=h){const C=p[y]-h,P=this.curves[y],ee=P.getLength(),ie=ee===0?0:1-C/ee;return P.getPointAt(ie,l)}y++}return null}getLength(){const s=this.getCurveLengths();return s[s.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const s=[];let l=0;for(let h=0,p=this.curves.length;h1&&!l[l.length-1].equals(l[0])&&l.push(l[0]),l}copy(s){super.copy(s),this.curves=[];for(let l=0,h=s.curves.length;l0){const me=ie.getPoint(0);me.equals(this.currentPoint)||this.lineTo(me.x,me.y)}this.curves.push(ie);const he=ie.getPoint(1);return this.currentPoint.copy(he),this}copy(s){return super.copy(s),this.currentPoint.copy(s.currentPoint),this}toJSON(){const s=super.toJSON();return s.currentPoint=this.currentPoint.toArray(),s}fromJSON(s){return super.fromJSON(s),this.currentPoint.fromArray(s.currentPoint),this}}class Y0 extends no{constructor(s=[new Hi(0,.5),new Hi(.5,0),new Hi(0,-.5)],l=12,h=0,p=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:s,segments:l,phiStart:h,phiLength:p},l=Math.floor(l),p=yl(p,0,Math.PI*2);const y=[],C=[],P=[],ee=[],ie=[],he=1/l,me=new _n,ve=new Hi,Ee=new _n,Ve=new _n,Ue=new _n;let Oe=0,Pt=0;for(let Wt=0;Wt<=s.length-1;Wt++)switch(Wt){case 0:Oe=s[Wt+1].x-s[Wt].x,Pt=s[Wt+1].y-s[Wt].y,Ee.x=Pt*1,Ee.y=-Oe,Ee.z=Pt*0,Ue.copy(Ee),Ee.normalize(),ee.push(Ee.x,Ee.y,Ee.z);break;case s.length-1:ee.push(Ue.x,Ue.y,Ue.z);break;default:Oe=s[Wt+1].x-s[Wt].x,Pt=s[Wt+1].y-s[Wt].y,Ee.x=Pt*1,Ee.y=-Oe,Ee.z=Pt*0,Ve.copy(Ee),Ee.x+=Ue.x,Ee.y+=Ue.y,Ee.z+=Ue.z,Ee.normalize(),ee.push(Ee.x,Ee.y,Ee.z),Ue.copy(Ve)}for(let Wt=0;Wt<=l;Wt++){const gn=h+Wt*he*p,en=Math.sin(gn),Dn=Math.cos(gn);for(let Zn=0;Zn<=s.length-1;Zn++){me.x=s[Zn].x*en,me.y=s[Zn].y,me.z=s[Zn].x*Dn,C.push(me.x,me.y,me.z),ve.x=Wt/l,ve.y=Zn/(s.length-1),P.push(ve.x,ve.y);const Br=ee[3*Zn+0]*en,ln=ee[3*Zn+1],er=ee[3*Zn+0]*Dn;ie.push(Br,ln,er)}}for(let Wt=0;Wt0&&gn(!0),l>0&&gn(!1)),this.setIndex(he),this.setAttribute("position",new ps(me,3)),this.setAttribute("normal",new ps(ve,3)),this.setAttribute("uv",new ps(Ee,2));function Wt(){const en=new _n,Dn=new _n;let Zn=0;const Br=(l-s)/h;for(let ln=0;ln<=y;ln++){const er=[],Zr=ln/y,ei=Zr*(l-s)+s;for(let cs=0;cs<=p;cs++){const Ys=cs/p,Jr=Ys*ee+P,$i=Math.sin(Jr),Si=Math.cos(Jr);Dn.x=ei*$i,Dn.y=-Zr*h+Oe,Dn.z=ei*Si,me.push(Dn.x,Dn.y,Dn.z),en.set($i,Br,Si).normalize(),ve.push(en.x,en.y,en.z),Ee.push(Ys,1-Zr),er.push(Ve++)}Ue.push(er)}for(let ln=0;ln.9&&Br<.1&&(gn<.2&&(C[Wt+0]+=1),en<.2&&(C[Wt+2]+=1),Dn<.2&&(C[Wt+4]+=1))}}function ve(Wt){y.push(Wt.x,Wt.y,Wt.z)}function Ee(Wt,gn){const en=Wt*3;gn.x=s[en+0],gn.y=s[en+1],gn.z=s[en+2]}function Ve(){const Wt=new _n,gn=new _n,en=new _n,Dn=new _n,Zn=new Hi,Br=new Hi,ln=new Hi;for(let er=0,Zr=0;er80*l){P=ie=b[0],ee=he=b[1];for(let Ve=l;Veie&&(ie=me),ve>he&&(he=ve);Ee=Math.max(ie-P,he-ee),Ee=Ee!==0?1/Ee:0}return $v(y,C,l,P,ee,Ee),C}};function F_(b,s,l,h,p){let y,C;if(p===hx(b,s,l,h)>0)for(y=s;y=s;y-=h)C=kw(y,b[y],b[y+1],C);return C&&U_(C,C.next)&&(jv(C),C=C.next),C}function jm(b,s){if(!b)return b;s||(s=b);let l=b,h;do if(h=!1,!l.steiner&&(U_(l,l.next)||ah(l.prev,l,l.next)===0)){if(jv(l),l=s=l.prev,l===l.next)break;h=!0}else l=l.next;while(h||l!==s);return s}function $v(b,s,l,h,p,y,C){if(!b)return;!C&&y&&cx(b,h,p,y);let P=b,ee,ie;for(;b.prev!==b.next;){if(ee=b.prev,ie=b.next,y?Fw(b,h,p,y):Lw(b)){s.push(ee.i/l),s.push(b.i/l),s.push(ie.i/l),jv(b),b=ie.next,P=ie.next;continue}if(b=ie,b===P){C?C===1?(b=cR(jm(b),s,l),$v(b,s,l,h,p,y,2)):C===2&&uR(b,s,l,h,p,y):$v(jm(b),s,l,h,p,y,1);break}}}function Lw(b){const s=b.prev,l=b,h=b.next;if(ah(s,l,h)>=0)return!1;let p=b.next.next;for(;p!==b.prev;){if(ig(s.x,s.y,l.x,l.y,h.x,h.y,p.x,p.y)&&ah(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function Fw(b,s,l,h){const p=b.prev,y=b,C=b.next;if(ah(p,y,C)>=0)return!1;const P=p.xy.x?p.x>C.x?p.x:C.x:y.x>C.x?y.x:C.x,he=p.y>y.y?p.y>C.y?p.y:C.y:y.y>C.y?y.y:C.y,me=Ow(P,ee,s,l,h),ve=Ow(ie,he,s,l,h);let Ee=b.prevZ,Ve=b.nextZ;for(;Ee&&Ee.z>=me&&Ve&&Ve.z<=ve;){if(Ee!==b.prev&&Ee!==b.next&&ig(p.x,p.y,y.x,y.y,C.x,C.y,Ee.x,Ee.y)&&ah(Ee.prev,Ee,Ee.next)>=0||(Ee=Ee.prevZ,Ve!==b.prev&&Ve!==b.next&&ig(p.x,p.y,y.x,y.y,C.x,C.y,Ve.x,Ve.y)&&ah(Ve.prev,Ve,Ve.next)>=0))return!1;Ve=Ve.nextZ}for(;Ee&&Ee.z>=me;){if(Ee!==b.prev&&Ee!==b.next&&ig(p.x,p.y,y.x,y.y,C.x,C.y,Ee.x,Ee.y)&&ah(Ee.prev,Ee,Ee.next)>=0)return!1;Ee=Ee.prevZ}for(;Ve&&Ve.z<=ve;){if(Ve!==b.prev&&Ve!==b.next&&ig(p.x,p.y,y.x,y.y,C.x,C.y,Ve.x,Ve.y)&&ah(Ve.prev,Ve,Ve.next)>=0)return!1;Ve=Ve.nextZ}return!0}function cR(b,s,l){let h=b;do{const p=h.prev,y=h.next.next;!U_(p,y)&&D_(p,h,h.next,y)&&ux(p,y)&&ux(y,p)&&(s.push(p.i/l),s.push(h.i/l),s.push(y.i/l),jv(h),jv(h.next),h=b=y),h=h.next}while(h!==b);return jm(h)}function uR(b,s,l,h,p,y){let C=b;do{let P=C.next.next;for(;P!==C.prev;){if(C.i!==P.i&&dR(C,P)){let ee=Xv(C,P);C=jm(C,C.next),ee=jm(ee,ee.next),$v(C,s,l,h,p,y),$v(ee,s,l,h,p,y);return}P=P.next}C=C.next}while(C!==b)}function hR(b,s,l,h){const p=[];let y,C,P,ee,ie;for(y=0,C=s.length;y=l.next.y&&l.next.y!==l.y){const ve=l.x+(p-l.y)*(l.next.x-l.x)/(l.next.y-l.y);if(ve<=h&&ve>y){if(y=ve,ve===h){if(p===l.y)return l;if(p===l.next.y)return l.next}C=l.x=l.x&&l.x>=ee&&h!==l.x&&ig(pC.x||l.x===C.x&&fR(C,l)))&&(C=l,he=me)),l=l.next;while(l!==P);return C}function fR(b,s){return ah(b.prev,b,s.prev)<0&&ah(s.next,b,b.next)<0}function cx(b,s,l,h){let p=b;do p.z===null&&(p.z=Ow(p.x,p.y,s,l,h)),p.prevZ=p.prev,p.nextZ=p.next,p=p.next;while(p!==b);p.prevZ.nextZ=null,p.prevZ=null,sh(p)}function sh(b){let s,l,h,p,y,C,P,ee,ie=1;do{for(l=b,b=null,y=null,C=0;l;){for(C++,h=l,P=0,s=0;s0||ee>0&&h;)P!==0&&(ee===0||!h||l.z<=h.z)?(p=l,l=l.nextZ,P--):(p=h,h=h.nextZ,ee--),y?y.nextZ=p:b=p,p.prevZ=y,y=p;l=h}y.nextZ=null,ie*=2}while(C>1);return b}function Ow(b,s,l,h,p){return b=32767*(b-l)*p,s=32767*(s-h)*p,b=(b|b<<8)&16711935,b=(b|b<<4)&252645135,b=(b|b<<2)&858993459,b=(b|b<<1)&1431655765,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,b|s<<1}function wh(b){let s=b,l=b;do(s.x=0&&(b-C)*(h-P)-(l-C)*(s-P)>=0&&(l-C)*(y-P)-(p-C)*(h-P)>=0}function dR(b,s){return b.next.i!==s.i&&b.prev.i!==s.i&&!AR(b,s)&&(ux(b,s)&&ux(s,b)&&pR(b,s)&&(ah(b.prev,b,s.prev)||ah(b,s.prev,s))||U_(b,s)&&ah(b.prev,b,b.next)>0&&ah(s.prev,s,s.next)>0)}function ah(b,s,l){return(s.y-b.y)*(l.x-s.x)-(s.x-b.x)*(l.y-s.y)}function U_(b,s){return b.x===s.x&&b.y===s.y}function D_(b,s,l,h){const p=J0(ah(b,s,l)),y=J0(ah(b,s,h)),C=J0(ah(l,h,b)),P=J0(ah(l,h,s));return!!(p!==y&&C!==P||p===0&&Ym(b,l,s)||y===0&&Ym(b,h,s)||C===0&&Ym(l,b,h)||P===0&&Ym(l,s,h))}function Ym(b,s,l){return s.x<=Math.max(b.x,l.x)&&s.x>=Math.min(b.x,l.x)&&s.y<=Math.max(b.y,l.y)&&s.y>=Math.min(b.y,l.y)}function J0(b){return b>0?1:b<0?-1:0}function AR(b,s){let l=b;do{if(l.i!==b.i&&l.next.i!==b.i&&l.i!==s.i&&l.next.i!==s.i&&D_(l,l.next,b,s))return!0;l=l.next}while(l!==b);return!1}function ux(b,s){return ah(b.prev,b,b.next)<0?ah(b,s,b.next)>=0&&ah(b,b.prev,s)>=0:ah(b,s,b.prev)<0||ah(b,b.next,s)<0}function pR(b,s){let l=b,h=!1;const p=(b.x+s.x)/2,y=(b.y+s.y)/2;do l.y>y!=l.next.y>y&&l.next.y!==l.y&&p<(l.next.x-l.x)*(y-l.y)/(l.next.y-l.y)+l.x&&(h=!h),l=l.next;while(l!==b);return h}function Xv(b,s){const l=new O_(b.i,b.x,b.y),h=new O_(s.i,s.x,s.y),p=b.next,y=s.prev;return b.next=s,s.prev=b,l.next=p,p.prev=l,h.next=l,l.prev=h,y.next=h,h.prev=y,h}function kw(b,s,l,h){const p=new O_(b,s,l);return h?(p.next=h.next,p.prev=h,h.next.prev=p,h.next=p):(p.prev=p,p.next=p),p}function jv(b){b.next.prev=b.prev,b.prev.next=b.next,b.prevZ&&(b.prevZ.nextZ=b.nextZ),b.nextZ&&(b.nextZ.prevZ=b.prevZ)}function O_(b,s,l){this.i=b,this.x=s,this.y=l,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function hx(b,s,l,h){let p=0;for(let y=s,C=l-h;y2&&b[s-1].equals(b[0])&&b.pop()}function qm(b,s){for(let l=0;lNumber.EPSILON){const Gi=Math.sqrt(qn),Vs=Math.sqrt(Tu*Tu+fu*fu),ka=as.x-ko/Gi,qa=as.y+Jo/Gi,el=ca.x-fu/Vs,Ki=ca.y+Tu/Vs,Ml=((el-ka)*fu-(Ki-qa)*Tu)/(Jo*fu-ko*Tu);go=ka+Jo*Ml-hs.x,Oa=qa+ko*Ml-hs.y;const Dl=go*go+Oa*Oa;if(Dl<=2)return new Hi(go,Oa);vl=Math.sqrt(Dl/2)}else{let Gi=!1;Jo>Number.EPSILON?Tu>Number.EPSILON&&(Gi=!0):Jo<-Number.EPSILON?Tu<-Number.EPSILON&&(Gi=!0):Math.sign(ko)===Math.sign(fu)&&(Gi=!0),Gi?(go=-ko,Oa=Jo,vl=Math.sqrt(qn)):(go=Jo,Oa=ko,vl=Math.sqrt(qn/2))}return new Hi(go/vl,Oa/vl)}const Vi=[];for(let hs=0,as=Jr.length,ca=as-1,go=hs+1;hs=0;hs--){const as=hs/Oe,ca=Ee*Math.cos(as*Math.PI/2),go=Ve*Math.sin(as*Math.PI/2)+Ue;for(let Oa=0,vl=Jr.length;Oa=0;){const go=ca;let Oa=ca-1;Oa<0&&(Oa=hs.length-1);for(let vl=0,Jo=he+Oe*2;vl0)&&Ee.push(gn,en,Zn),(Pt!==h-1||ee0!=s>0&&this.version++,this._sheen=s}get clearcoat(){return this._clearcoat}set clearcoat(s){this._clearcoat>0!=s>0&&this.version++,this._clearcoat=s}get transmission(){return this._transmission}set transmission(s){this._transmission>0!=s>0&&this.version++,this._transmission=s}copy(s){return super.copy(s),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=s.clearcoat,this.clearcoatMap=s.clearcoatMap,this.clearcoatRoughness=s.clearcoatRoughness,this.clearcoatRoughnessMap=s.clearcoatRoughnessMap,this.clearcoatNormalMap=s.clearcoatNormalMap,this.clearcoatNormalScale.copy(s.clearcoatNormalScale),this.ior=s.ior,this.sheen=s.sheen,this.sheenColor.copy(s.sheenColor),this.sheenColorMap=s.sheenColorMap,this.sheenRoughness=s.sheenRoughness,this.sheenRoughnessMap=s.sheenRoughnessMap,this.transmission=s.transmission,this.transmissionMap=s.transmissionMap,this.thickness=s.thickness,this.thicknessMap=s.thicknessMap,this.attenuationDistance=s.attenuationDistance,this.attenuationColor.copy(s.attenuationColor),this.specularIntensity=s.specularIntensity,this.specularIntensityMap=s.specularIntensityMap,this.specularColor.copy(s.specularColor),this.specularColorMap=s.specularColorMap,this}}Kw.prototype.isMeshPhysicalMaterial=!0;class V_ extends ua{constructor(s){super(),this.type="MeshPhongMaterial",this.color=new js(16777215),this.specular=new js(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new js(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Qi,this.normalScale=new Hi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Jt,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(s)}copy(s){return super.copy(s),this.color.copy(s.color),this.specular.copy(s.specular),this.shininess=s.shininess,this.map=s.map,this.lightMap=s.lightMap,this.lightMapIntensity=s.lightMapIntensity,this.aoMap=s.aoMap,this.aoMapIntensity=s.aoMapIntensity,this.emissive.copy(s.emissive),this.emissiveMap=s.emissiveMap,this.emissiveIntensity=s.emissiveIntensity,this.bumpMap=s.bumpMap,this.bumpScale=s.bumpScale,this.normalMap=s.normalMap,this.normalMapType=s.normalMapType,this.normalScale.copy(s.normalScale),this.displacementMap=s.displacementMap,this.displacementScale=s.displacementScale,this.displacementBias=s.displacementBias,this.specularMap=s.specularMap,this.alphaMap=s.alphaMap,this.envMap=s.envMap,this.combine=s.combine,this.reflectivity=s.reflectivity,this.refractionRatio=s.refractionRatio,this.wireframe=s.wireframe,this.wireframeLinewidth=s.wireframeLinewidth,this.wireframeLinecap=s.wireframeLinecap,this.wireframeLinejoin=s.wireframeLinejoin,this.flatShading=s.flatShading,this.fog=s.fog,this}}V_.prototype.isMeshPhongMaterial=!0;class $w extends ua{constructor(s){super(),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new js(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new js(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Qi,this.normalScale=new Hi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(s)}copy(s){return super.copy(s),this.color.copy(s.color),this.map=s.map,this.gradientMap=s.gradientMap,this.lightMap=s.lightMap,this.lightMapIntensity=s.lightMapIntensity,this.aoMap=s.aoMap,this.aoMapIntensity=s.aoMapIntensity,this.emissive.copy(s.emissive),this.emissiveMap=s.emissiveMap,this.emissiveIntensity=s.emissiveIntensity,this.bumpMap=s.bumpMap,this.bumpScale=s.bumpScale,this.normalMap=s.normalMap,this.normalMapType=s.normalMapType,this.normalScale.copy(s.normalScale),this.displacementMap=s.displacementMap,this.displacementScale=s.displacementScale,this.displacementBias=s.displacementBias,this.alphaMap=s.alphaMap,this.wireframe=s.wireframe,this.wireframeLinewidth=s.wireframeLinewidth,this.wireframeLinecap=s.wireframeLinecap,this.wireframeLinejoin=s.wireframeLinejoin,this.fog=s.fog,this}}$w.prototype.isMeshToonMaterial=!0;class Xw extends ua{constructor(s){super(),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Qi,this.normalScale=new Hi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(s)}copy(s){return super.copy(s),this.bumpMap=s.bumpMap,this.bumpScale=s.bumpScale,this.normalMap=s.normalMap,this.normalMapType=s.normalMapType,this.normalScale.copy(s.normalScale),this.displacementMap=s.displacementMap,this.displacementScale=s.displacementScale,this.displacementBias=s.displacementBias,this.wireframe=s.wireframe,this.wireframeLinewidth=s.wireframeLinewidth,this.flatShading=s.flatShading,this}}Xw.prototype.isMeshNormalMaterial=!0;class Yv extends ua{constructor(s){super(),this.type="MeshLambertMaterial",this.color=new js(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new js(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Jt,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(s)}copy(s){return super.copy(s),this.color.copy(s.color),this.map=s.map,this.lightMap=s.lightMap,this.lightMapIntensity=s.lightMapIntensity,this.aoMap=s.aoMap,this.aoMapIntensity=s.aoMapIntensity,this.emissive.copy(s.emissive),this.emissiveMap=s.emissiveMap,this.emissiveIntensity=s.emissiveIntensity,this.specularMap=s.specularMap,this.alphaMap=s.alphaMap,this.envMap=s.envMap,this.combine=s.combine,this.reflectivity=s.reflectivity,this.refractionRatio=s.refractionRatio,this.wireframe=s.wireframe,this.wireframeLinewidth=s.wireframeLinewidth,this.wireframeLinecap=s.wireframeLinecap,this.wireframeLinejoin=s.wireframeLinejoin,this.fog=s.fog,this}}Yv.prototype.isMeshLambertMaterial=!0;class jw extends ua{constructor(s){super(),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new js(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Qi,this.normalScale=new Hi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(s)}copy(s){return super.copy(s),this.defines={MATCAP:""},this.color.copy(s.color),this.matcap=s.matcap,this.map=s.map,this.bumpMap=s.bumpMap,this.bumpScale=s.bumpScale,this.normalMap=s.normalMap,this.normalMapType=s.normalMapType,this.normalScale.copy(s.normalScale),this.displacementMap=s.displacementMap,this.displacementScale=s.displacementScale,this.displacementBias=s.displacementBias,this.alphaMap=s.alphaMap,this.flatShading=s.flatShading,this.fog=s.fog,this}}jw.prototype.isMeshMatcapMaterial=!0;class Yw extends Zu{constructor(s){super(),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(s)}copy(s){return super.copy(s),this.scale=s.scale,this.dashSize=s.dashSize,this.gapSize=s.gapSize,this}}Yw.prototype.isLineDashedMaterial=!0;const KE={ShadowMaterial:Ww,SpriteMaterial:Qm,RawShaderMaterial:Zw,ShaderMaterial:vh,PointsMaterial:ng,MeshPhysicalMaterial:Kw,MeshStandardMaterial:fx,MeshPhongMaterial:V_,MeshToonMaterial:$w,MeshNormalMaterial:Xw,MeshLambertMaterial:Yv,MeshDepthMaterial:f_,MeshDistanceMaterial:Wy,MeshBasicMaterial:Io,MeshMatcapMaterial:jw,LineDashedMaterial:Yw,LineBasicMaterial:Zu,Material:ua};ua.fromType=function(b){return new KE[b]};const Lu={arraySlice:function(b,s,l){return Lu.isTypedArray(b)?new b.constructor(b.subarray(s,l!==void 0?l:b.length)):b.slice(s,l)},convertArray:function(b,s,l){return!b||!l&&b.constructor===s?b:typeof s.BYTES_PER_ELEMENT=="number"?new s(b):Array.prototype.slice.call(b)},isTypedArray:function(b){return ArrayBuffer.isView(b)&&!(b instanceof DataView)},getKeyframeOrder:function(b){function s(p,y){return b[p]-b[y]}const l=b.length,h=new Array(l);for(let p=0;p!==l;++p)h[p]=p;return h.sort(s),h},sortedArray:function(b,s,l){const h=b.length,p=new b.constructor(h);for(let y=0,C=0;C!==h;++y){const P=l[y]*s;for(let ee=0;ee!==s;++ee)p[C++]=b[P+ee]}return p},flattenJSON:function(b,s,l,h){let p=1,y=b[0];for(;y!==void 0&&y[h]===void 0;)y=b[p++];if(y===void 0)return;let C=y[h];if(C!==void 0)if(Array.isArray(C))do C=y[h],C!==void 0&&(s.push(y.time),l.push.apply(l,C)),y=b[p++];while(y!==void 0);else if(C.toArray!==void 0)do C=y[h],C!==void 0&&(s.push(y.time),C.toArray(l,l.length)),y=b[p++];while(y!==void 0);else do C=y[h],C!==void 0&&(s.push(y.time),l.push(C)),y=b[p++];while(y!==void 0)},subclip:function(b,s,l,h,p=30){const y=b.clone();y.name=s;const C=[];for(let ee=0;ee=h)){me.push(ie.times[Ee]);for(let Ue=0;Uey.tracks[ee].times[0]&&(P=y.tracks[ee].times[0]);for(let ee=0;ee=P.times[Ve]){const Pt=Ve*me+he,Wt=Pt+me-he;Ue=Lu.arraySlice(P.values,Pt,Wt)}else{const Pt=P.createInterpolant(),Wt=he,gn=me-he;Pt.evaluate(y),Ue=Lu.arraySlice(Pt.resultBuffer,Wt,gn)}ee==="quaternion"&&new Vc().fromArray(Ue).normalize().conjugate().toArray(Ue);const Oe=ie.times.length;for(let Pt=0;Pt=y)){const P=l[1];s=y)break t}C=h,h=0;break n}break e}for(;h>>1;sl;)--C;if(++C,y!==0||C!==p){y>=C&&(C=Math.max(C,1),y=C-1);const P=this.getValueSize();this.times=Lu.arraySlice(h,y,C),this.values=Lu.arraySlice(this.values,y*P,C*P)}return this}validate(){let s=!0;const l=this.getValueSize();l-Math.floor(l)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),s=!1);const h=this.times,p=this.values,y=h.length;y===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),s=!1);let C=null;for(let P=0;P!==y;P++){const ee=h[P];if(typeof ee=="number"&&isNaN(ee)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,P,ee),s=!1;break}if(C!==null&&C>ee){console.error("THREE.KeyframeTrack: Out of order keys.",this,P,ee,C),s=!1;break}C=ee}if(p!==void 0&&Lu.isTypedArray(p))for(let P=0,ee=p.length;P!==ee;++P){const ie=p[P];if(isNaN(ie)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,P,ie),s=!1;break}}return s}optimize(){const s=Lu.arraySlice(this.times),l=Lu.arraySlice(this.values),h=this.getValueSize(),p=this.getInterpolation()===Ds,y=s.length-1;let C=1;for(let P=1;P0){s[C]=s[y];for(let P=y*h,ee=C*h,ie=0;ie!==h;++ie)l[ee+ie]=l[P+ie];++C}return C!==s.length?(this.times=Lu.arraySlice(s,0,C),this.values=Lu.arraySlice(l,0,C*h)):(this.times=s,this.values=l),this}clone(){const s=Lu.arraySlice(this.times,0),l=Lu.arraySlice(this.values,0),h=this.constructor,p=new h(this.name,s,l);return p.createInterpolant=this.createInterpolant,p}}CA.prototype.TimeBufferType=Float32Array,CA.prototype.ValueBufferType=Float32Array,CA.prototype.DefaultInterpolation=Oi;class ag extends CA{}ag.prototype.ValueTypeName="bool",ag.prototype.ValueBufferType=Array,ag.prototype.DefaultInterpolation=ls,ag.prototype.InterpolantFactoryMethodLinear=void 0,ag.prototype.InterpolantFactoryMethodSmooth=void 0;class e1 extends CA{}e1.prototype.ValueTypeName="color";class nv extends CA{}nv.prototype.ValueTypeName="number";class XE extends Wg{constructor(s,l,h,p){super(s,l,h,p)}interpolate_(s,l,h,p){const y=this.resultBuffer,C=this.sampleValues,P=this.valueSize,ee=(h-l)/(p-l);let ie=s*P;for(let he=ie+P;ie!==he;ie+=4)Vc.slerpFlat(y,0,C,ie-P,C,ie,ee);return y}}class qv extends CA{InterpolantFactoryMethodLinear(s){return new XE(this.times,this.values,this.getValueSize(),s)}}qv.prototype.ValueTypeName="quaternion",qv.prototype.DefaultInterpolation=Oi,qv.prototype.InterpolantFactoryMethodSmooth=void 0;class Zg extends CA{}Zg.prototype.ValueTypeName="string",Zg.prototype.ValueBufferType=Array,Zg.prototype.DefaultInterpolation=ls,Zg.prototype.InterpolantFactoryMethodLinear=void 0,Zg.prototype.InterpolantFactoryMethodSmooth=void 0;class dx extends CA{}dx.prototype.ValueTypeName="vector";class Ax{constructor(s,l=-1,h,p=$n){this.name=s,this.tracks=h,this.duration=l,this.blendMode=p,this.uuid=kc(),this.duration<0&&this.resetDuration()}static parse(s){const l=[],h=s.tracks,p=1/(s.fps||1);for(let C=0,P=h.length;C!==P;++C)l.push(YE(h[C]).scale(p));const y=new this(s.name,s.duration,l,s.blendMode);return y.uuid=s.uuid,y}static toJSON(s){const l=[],h=s.tracks,p={name:s.name,duration:s.duration,tracks:l,uuid:s.uuid,blendMode:s.blendMode};for(let y=0,C=h.length;y!==C;++y)l.push(CA.toJSON(h[y]));return p}static CreateFromMorphTargetSequence(s,l,h,p){const y=l.length,C=[];for(let P=0;P1){const me=he[1];let ve=p[me];ve||(p[me]=ve=[]),ve.push(ie)}}const C=[];for(const P in p)C.push(this.CreateFromMorphTargetSequence(P,p[P],l,h));return C}static parseAnimation(s,l){if(!s)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const h=function(me,ve,Ee,Ve,Ue){if(Ee.length!==0){const Oe=[],Pt=[];Lu.flattenJSON(Ee,Oe,Pt,Ve),Oe.length!==0&&Ue.push(new me(ve,Oe,Pt))}},p=[],y=s.name||"default",C=s.fps||30,P=s.blendMode;let ee=s.length||-1;const ie=s.hierarchy||[];for(let me=0;me{l&&l(y),this.manager.itemEnd(s)},0),y;if(og[s]!==void 0){og[s].push({onLoad:l,onProgress:h,onError:p});return}og[s]=[],og[s].push({onLoad:l,onProgress:h,onError:p});const C=new Request(s,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),P=this.mimeType,ee=this.responseType;fetch(C).then(ie=>{if(ie.status===200||ie.status===0){if(ie.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||ie.body===void 0||ie.body.getReader===void 0)return ie;const he=og[s],me=ie.body.getReader(),ve=ie.headers.get("Content-Length"),Ee=ve?parseInt(ve):0,Ve=Ee!==0;let Ue=0;const Oe=new ReadableStream({start(Pt){Wt();function Wt(){me.read().then(({done:gn,value:en})=>{if(gn)Pt.close();else{Ue+=en.byteLength;const Dn=new ProgressEvent("progress",{lengthComputable:Ve,loaded:Ue,total:Ee});for(let Zn=0,Br=he.length;Zn{switch(ee){case"arraybuffer":return ie.arrayBuffer();case"blob":return ie.blob();case"document":return ie.text().then(he=>new DOMParser().parseFromString(he,P));case"json":return ie.json();default:if(P===void 0)return ie.text();{const me=/charset="?([^;"\s]*)"?/i.exec(P),ve=me&&me[1]?me[1].toLowerCase():void 0,Ee=new TextDecoder(ve);return ie.arrayBuffer().then(Ve=>Ee.decode(Ve))}}}).then(ie=>{rv.add(s,ie);const he=og[s];delete og[s];for(let me=0,ve=he.length;me{const he=og[s];if(he===void 0)throw this.manager.itemError(s),ie;delete og[s];for(let me=0,ve=he.length;me{this.manager.itemEnd(s)}),this.manager.itemStart(s)}setResponseType(s){return this.responseType=s,this}setMimeType(s){return this.mimeType=s,this}}class gR extends null{constructor(s){super(s)}load(s,l,h,p){const y=this,C=new $g(this.manager);C.setPath(this.path),C.setRequestHeader(this.requestHeader),C.setWithCredentials(this.withCredentials),C.load(s,function(P){try{l(y.parse(JSON.parse(P)))}catch(ee){p?p(ee):console.error(ee),y.manager.itemError(s)}},h,p)}parse(s){const l=[];for(let h=0;h0:p.vertexColors=s.vertexColors),s.uniforms!==void 0)for(const y in s.uniforms){const C=s.uniforms[y];switch(p.uniforms[y]={},C.type){case"t":p.uniforms[y].value=h(C.value);break;case"c":p.uniforms[y].value=new js().setHex(C.value);break;case"v2":p.uniforms[y].value=new Hi().fromArray(C.value);break;case"v3":p.uniforms[y].value=new _n().fromArray(C.value);break;case"v4":p.uniforms[y].value=new ro().fromArray(C.value);break;case"m3":p.uniforms[y].value=new sl().fromArray(C.value);break;case"m4":p.uniforms[y].value=new Or().fromArray(C.value);break;default:p.uniforms[y].value=C.value}}if(s.defines!==void 0&&(p.defines=s.defines),s.vertexShader!==void 0&&(p.vertexShader=s.vertexShader),s.fragmentShader!==void 0&&(p.fragmentShader=s.fragmentShader),s.extensions!==void 0)for(const y in s.extensions)p.extensions[y]=s.extensions[y];if(s.shading!==void 0&&(p.flatShading=s.shading===1),s.size!==void 0&&(p.size=s.size),s.sizeAttenuation!==void 0&&(p.sizeAttenuation=s.sizeAttenuation),s.map!==void 0&&(p.map=h(s.map)),s.matcap!==void 0&&(p.matcap=h(s.matcap)),s.alphaMap!==void 0&&(p.alphaMap=h(s.alphaMap)),s.bumpMap!==void 0&&(p.bumpMap=h(s.bumpMap)),s.bumpScale!==void 0&&(p.bumpScale=s.bumpScale),s.normalMap!==void 0&&(p.normalMap=h(s.normalMap)),s.normalMapType!==void 0&&(p.normalMapType=s.normalMapType),s.normalScale!==void 0){let y=s.normalScale;Array.isArray(y)===!1&&(y=[y,y]),p.normalScale=new Hi().fromArray(y)}return s.displacementMap!==void 0&&(p.displacementMap=h(s.displacementMap)),s.displacementScale!==void 0&&(p.displacementScale=s.displacementScale),s.displacementBias!==void 0&&(p.displacementBias=s.displacementBias),s.roughnessMap!==void 0&&(p.roughnessMap=h(s.roughnessMap)),s.metalnessMap!==void 0&&(p.metalnessMap=h(s.metalnessMap)),s.emissiveMap!==void 0&&(p.emissiveMap=h(s.emissiveMap)),s.emissiveIntensity!==void 0&&(p.emissiveIntensity=s.emissiveIntensity),s.specularMap!==void 0&&(p.specularMap=h(s.specularMap)),s.specularIntensityMap!==void 0&&(p.specularIntensityMap=h(s.specularIntensityMap)),s.specularColorMap!==void 0&&(p.specularColorMap=h(s.specularColorMap)),s.envMap!==void 0&&(p.envMap=h(s.envMap)),s.envMapIntensity!==void 0&&(p.envMapIntensity=s.envMapIntensity),s.reflectivity!==void 0&&(p.reflectivity=s.reflectivity),s.refractionRatio!==void 0&&(p.refractionRatio=s.refractionRatio),s.lightMap!==void 0&&(p.lightMap=h(s.lightMap)),s.lightMapIntensity!==void 0&&(p.lightMapIntensity=s.lightMapIntensity),s.aoMap!==void 0&&(p.aoMap=h(s.aoMap)),s.aoMapIntensity!==void 0&&(p.aoMapIntensity=s.aoMapIntensity),s.gradientMap!==void 0&&(p.gradientMap=h(s.gradientMap)),s.clearcoatMap!==void 0&&(p.clearcoatMap=h(s.clearcoatMap)),s.clearcoatRoughnessMap!==void 0&&(p.clearcoatRoughnessMap=h(s.clearcoatRoughnessMap)),s.clearcoatNormalMap!==void 0&&(p.clearcoatNormalMap=h(s.clearcoatNormalMap)),s.clearcoatNormalScale!==void 0&&(p.clearcoatNormalScale=new Hi().fromArray(s.clearcoatNormalScale)),s.transmissionMap!==void 0&&(p.transmissionMap=h(s.transmissionMap)),s.thicknessMap!==void 0&&(p.thicknessMap=h(s.thicknessMap)),s.sheenColorMap!==void 0&&(p.sheenColorMap=h(s.sheenColorMap)),s.sheenRoughnessMap!==void 0&&(p.sheenRoughnessMap=h(s.sheenRoughnessMap)),p}setTextures(s){return this.textures=s,this}}class ty{static decodeText(s){if(typeof TextDecoder!="undefined")return new TextDecoder().decode(s);let l="";for(let h=0,p=s.length;h0){const ee=new t1(l);y=new px(ee),y.setCrossOrigin(this.crossOrigin);for(let ie=0,he=s.length;ie0){p=new px(this.manager),p.setCrossOrigin(this.crossOrigin);for(let C=0,P=s.length;C0){this.source.connect(this.filters[0]);for(let s=1,l=this.filters.length;s0){this.source.disconnect(this.filters[0]);for(let s=1,l=this.filters.length;s0&&this._mixBufferRegionAdditive(h,p,this._addIndex*l,1,l);for(let ee=l,ie=l+l;ee!==ie;++ee)if(h[ee]!==h[ee+l]){P.setValue(h,p);break}}saveOriginalState(){const s=this.binding,l=this.buffer,h=this.valueSize,p=h*this._origIndex;s.getValue(l,p);for(let y=h,C=p;y!==C;++y)l[y]=l[p+y%h];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const s=this.valueSize*3;this.binding.setValue(this.buffer,s)}_setAdditiveIdentityNumeric(){const s=this._addIndex*this.valueSize,l=s+this.valueSize;for(let h=s;h=.5)for(let C=0;C!==y;++C)s[l+C]=s[h+C]}_slerp(s,l,h,p){Vc.slerpFlat(s,l,s,l,s,h,p)}_slerpAdditive(s,l,h,p,y){const C=this._workIndex*y;Vc.multiplyQuaternionsFlat(s,C,s,l,s,h),Vc.slerpFlat(s,l,s,l,s,C,p)}_lerp(s,l,h,p,y){const C=1-p;for(let P=0;P!==y;++P){const ee=l+P;s[ee]=s[ee]*C+s[h+P]*p}}_lerpAdditive(s,l,h,p,y){for(let C=0;C!==y;++C){const P=l+C;s[P]=s[P]+s[h+C]*p}}}const mx="\\[\\]\\.:\\/",uM=new RegExp("["+mx+"]","g"),S1="[^"+mx+"]",E1="[^"+mx.replace("\\.","")+"]",M1=/((?:WC+[\/:])*)/.source.replace("WC",S1),hM=/(WCOD+)?/.source.replace("WCOD",E1),fM=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",S1),T1=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",S1),Z_=new RegExp("^"+M1+hM+fM+T1+"$"),dM=["material","materials","bones"];class AM{constructor(s,l,h){const p=h||vc.parseTrackName(l);this._targetGroup=s,this._bindings=s.subscribe_(l,p)}getValue(s,l){this.bind();const h=this._targetGroup.nCachedObjects_,p=this._bindings[h];p!==void 0&&p.getValue(s,l)}setValue(s,l){const h=this._bindings;for(let p=this._targetGroup.nCachedObjects_,y=h.length;p!==y;++p)h[p].setValue(s,l)}bind(){const s=this._bindings;for(let l=this._targetGroup.nCachedObjects_,h=s.length;l!==h;++l)s[l].bind()}unbind(){const s=this._bindings;for(let l=this._targetGroup.nCachedObjects_,h=s.length;l!==h;++l)s[l].unbind()}}class vc{constructor(s,l,h){this.path=l,this.parsedPath=h||vc.parseTrackName(l),this.node=vc.findNode(s,this.parsedPath.nodeName)||s,this.rootNode=s,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(s,l,h){return s&&s.isAnimationObjectGroup?new vc.Composite(s,l,h):new vc(s,l,h)}static sanitizeNodeName(s){return s.replace(/\s/g,"_").replace(uM,"")}static parseTrackName(s){const l=Z_.exec(s);if(l===null)throw new Error("PropertyBinding: Cannot parse trackName: "+s);const h={nodeName:l[2],objectName:l[3],objectIndex:l[4],propertyName:l[5],propertyIndex:l[6]},p=h.nodeName&&h.nodeName.lastIndexOf(".");if(p!==void 0&&p!==-1){const y=h.nodeName.substring(p+1);dM.indexOf(y)!==-1&&(h.nodeName=h.nodeName.substring(0,p),h.objectName=y)}if(h.propertyName===null||h.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+s);return h}static findNode(s,l){if(l===void 0||l===""||l==="."||l===-1||l===s.name||l===s.uuid)return s;if(s.skeleton){const h=s.skeleton.getBoneByName(l);if(h!==void 0)return h}if(s.children){const h=function(y){for(let C=0;C=y){const me=y++,ve=s[me];l[ve.uuid]=he,s[he]=ve,l[ie]=me,s[me]=ee;for(let Ee=0,Ve=p;Ee!==Ve;++Ee){const Ue=h[Ee],Oe=Ue[me],Pt=Ue[he];Ue[he]=Oe,Ue[me]=Pt}}}this.nCachedObjects_=y}uncache(){const s=this._objects,l=this._indicesByUUID,h=this._bindings,p=h.length;let y=this.nCachedObjects_,C=s.length;for(let P=0,ee=arguments.length;P!==ee;++P){const ie=arguments[P],he=ie.uuid,me=l[he];if(me!==void 0)if(delete l[he],me0&&(l[Ee.uuid]=me),s[me]=Ee,s.pop();for(let Ve=0,Ue=p;Ve!==Ue;++Ve){const Oe=h[Ve];Oe[me]=Oe[ve],Oe.pop()}}}this.nCachedObjects_=y}subscribe_(s,l){const h=this._bindingsIndicesByPath;let p=h[s];const y=this._bindings;if(p!==void 0)return y[p];const C=this._paths,P=this._parsedPaths,ee=this._objects,ie=ee.length,he=this.nCachedObjects_,me=new Array(ie);p=y.length,h[s]=p,C.push(s),P.push(l),y.push(me);for(let ve=he,Ee=ee.length;ve!==Ee;++ve){const Ve=ee[ve];me[ve]=new vc(Ve,s,l)}return me}unsubscribe_(s){const l=this._bindingsIndicesByPath,h=l[s];if(h!==void 0){const p=this._paths,y=this._parsedPaths,C=this._bindings,P=C.length-1,ee=C[P],ie=s[P];l[ie]=h,C[h]=ee,C.pop(),y[h]=y[P],y.pop(),p[h]=p[P],p.pop()}}}pM.prototype.isAnimationObjectGroup=!0;class C1{constructor(s,l,h=null,p=l.blendMode){this._mixer=s,this._clip=l,this._localRoot=h,this.blendMode=p;const y=l.tracks,C=y.length,P=new Array(C),ee={endingStart:Bi,endingEnd:Bi};for(let ie=0;ie!==C;++ie){const he=y[ie].createInterpolant(null);P[ie]=he,he.settings=ee}this._interpolantSettings=ee,this._interpolants=P,this._propertyBindings=new Array(C),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=xs,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(s){return this._startTime=s,this}setLoop(s,l){return this.loop=s,this.repetitions=l,this}setEffectiveWeight(s){return this.weight=s,this._effectiveWeight=this.enabled?s:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(s){return this._scheduleFading(s,0,1)}fadeOut(s){return this._scheduleFading(s,1,0)}crossFadeFrom(s,l,h){if(s.fadeOut(l),this.fadeIn(l),h){const p=this._clip.duration,y=s._clip.duration,C=y/p,P=p/y;s.warp(1,C,l),this.warp(P,1,l)}return this}crossFadeTo(s,l,h){return s.crossFadeFrom(this,l,h)}stopFading(){const s=this._weightInterpolant;return s!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(s)),this}setEffectiveTimeScale(s){return this.timeScale=s,this._effectiveTimeScale=this.paused?0:s,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(s){return this.timeScale=this._clip.duration/s,this.stopWarping()}syncWith(s){return this.time=s.time,this.timeScale=s.timeScale,this.stopWarping()}halt(s){return this.warp(this._effectiveTimeScale,0,s)}warp(s,l,h){const p=this._mixer,y=p.time,C=this.timeScale;let P=this._timeScaleInterpolant;P===null&&(P=p._lendControlInterpolant(),this._timeScaleInterpolant=P);const ee=P.parameterPositions,ie=P.sampleValues;return ee[0]=y,ee[1]=y+h,ie[0]=s/C,ie[1]=l/C,this}stopWarping(){const s=this._timeScaleInterpolant;return s!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(s)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(s,l,h,p){if(!this.enabled){this._updateWeight(s);return}const y=this._startTime;if(y!==null){const ee=(s-y)*h;if(ee<0||h===0)return;this._startTime=null,l=h*ee}l*=this._updateTimeScale(s);const C=this._updateTime(l),P=this._updateWeight(s);if(P>0){const ee=this._interpolants,ie=this._propertyBindings;switch(this.blendMode){case Ut:for(let he=0,me=ee.length;he!==me;++he)ee[he].evaluate(C),ie[he].accumulateAdditive(P);break;case $n:default:for(let he=0,me=ee.length;he!==me;++he)ee[he].evaluate(C),ie[he].accumulate(p,P)}}}_updateWeight(s){let l=0;if(this.enabled){l=this.weight;const h=this._weightInterpolant;if(h!==null){const p=h.evaluate(s)[0];l*=p,s>h.parameterPositions[1]&&(this.stopFading(),p===0&&(this.enabled=!1))}}return this._effectiveWeight=l,l}_updateTimeScale(s){let l=0;if(!this.paused){l=this.timeScale;const h=this._timeScaleInterpolant;if(h!==null){const p=h.evaluate(s)[0];l*=p,s>h.parameterPositions[1]&&(this.stopWarping(),l===0?this.paused=!0:this.timeScale=l)}}return this._effectiveTimeScale=l,l}_updateTime(s){const l=this._clip.duration,h=this.loop;let p=this.time+s,y=this._loopCount;const C=h===ms;if(s===0)return y===-1?p:C&&(y&1)===1?l-p:p;if(h===zr){y===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(p>=l)p=l;else if(p<0)p=0;else{this.time=p;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=p,this._mixer.dispatchEvent({type:"finished",action:this,direction:s<0?-1:1})}}else{if(y===-1&&(s>=0?(y=0,this._setEndings(!0,this.repetitions===0,C)):this._setEndings(this.repetitions===0,!0,C)),p>=l||p<0){const P=Math.floor(p/l);p-=l*P,y+=Math.abs(P);const ee=this.repetitions-y;if(ee<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,p=s>0?l:0,this.time=p,this._mixer.dispatchEvent({type:"finished",action:this,direction:s>0?1:-1});else{if(ee===1){const ie=s<0;this._setEndings(ie,!ie,C)}else this._setEndings(!1,!1,C);this._loopCount=y,this.time=p,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:P})}}else this.time=p;if(C&&(y&1)===1)return l-p}return p}_setEndings(s,l,h){const p=this._interpolantSettings;h?(p.endingStart=Qs,p.endingEnd=Qs):(s?p.endingStart=this.zeroSlopeAtStart?Qs:Bi:p.endingStart=Na,l?p.endingEnd=this.zeroSlopeAtEnd?Qs:Bi:p.endingEnd=Na)}_scheduleFading(s,l,h){const p=this._mixer,y=p.time;let C=this._weightInterpolant;C===null&&(C=p._lendControlInterpolant(),this._weightInterpolant=C);const P=C.parameterPositions,ee=C.sampleValues;return P[0]=y,ee[0]=l,P[1]=y+s,ee[1]=h,this}}class gM extends Nh{constructor(s){super(),this._root=s,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(s,l){const h=s._localRoot||this._root,p=s._clip.tracks,y=p.length,C=s._propertyBindings,P=s._interpolants,ee=h.uuid,ie=this._bindingsByRootAndName;let he=ie[ee];he===void 0&&(he={},ie[ee]=he);for(let me=0;me!==y;++me){const ve=p[me],Ee=ve.name;let Ve=he[Ee];if(Ve!==void 0)++Ve.referenceCount,C[me]=Ve;else{if(Ve=C[me],Ve!==void 0){Ve._cacheIndex===null&&(++Ve.referenceCount,this._addInactiveBinding(Ve,ee,Ee));continue}const Ue=l&&l._propertyBindings[me].binding.parsedPath;Ve=new w1(vc.create(h,Ee,Ue),ve.ValueTypeName,ve.getValueSize()),++Ve.referenceCount,this._addInactiveBinding(Ve,ee,Ee),C[me]=Ve}P[me].resultBuffer=Ve.buffer}}_activateAction(s){if(!this._isActiveAction(s)){if(s._cacheIndex===null){const h=(s._localRoot||this._root).uuid,p=s._clip.uuid,y=this._actionsByClip[p];this._bindAction(s,y&&y.knownActions[0]),this._addInactiveAction(s,p,h)}const l=s._propertyBindings;for(let h=0,p=l.length;h!==p;++h){const y=l[h];y.useCount++===0&&(this._lendBinding(y),y.saveOriginalState())}this._lendAction(s)}}_deactivateAction(s){if(this._isActiveAction(s)){const l=s._propertyBindings;for(let h=0,p=l.length;h!==p;++h){const y=l[h];--y.useCount===0&&(y.restoreOriginalState(),this._takeBackBinding(y))}this._takeBackAction(s)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const s=this;this.stats={actions:{get total(){return s._actions.length},get inUse(){return s._nActiveActions}},bindings:{get total(){return s._bindings.length},get inUse(){return s._nActiveBindings}},controlInterpolants:{get total(){return s._controlInterpolants.length},get inUse(){return s._nActiveControlInterpolants}}}}_isActiveAction(s){const l=s._cacheIndex;return l!==null&&l=0;--h)s[h].stop();return this}update(s){s*=this.timeScale;const l=this._actions,h=this._nActiveActions,p=this.time+=s,y=Math.sign(s),C=this._accuIndex^=1;for(let ie=0;ie!==h;++ie)l[ie]._update(p,s,y,C);const P=this._bindings,ee=this._nActiveBindings;for(let ie=0;ie!==ee;++ie)P[ie].apply(C);return this}setTime(s){this.time=0;for(let l=0;lthis.max.x||s.ythis.max.y)}containsBox(s){return this.min.x<=s.min.x&&s.max.x<=this.max.x&&this.min.y<=s.min.y&&s.max.y<=this.max.y}getParameter(s,l){return l.set((s.x-this.min.x)/(this.max.x-this.min.x),(s.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(s){return!(s.max.xthis.max.x||s.max.ythis.max.y)}clampPoint(s,l){return l.copy(s).clamp(this.min,this.max)}distanceToPoint(s){return yx.copy(s).clamp(this.min,this.max).sub(s).length()}intersect(s){return this.min.max(s.min),this.max.min(s.max),this}union(s){return this.min.min(s.min),this.max.max(s.max),this}translate(s){return this.min.add(s),this.max.add(s),this}equals(s){return s.min.equals(this.min)&&s.max.equals(this.max)}}mp.prototype.isBox2=!0;const Y_=new _n,av=new _n;class yM{constructor(s=new _n,l=new _n){this.start=s,this.end=l}set(s,l){return this.start.copy(s),this.end.copy(l),this}copy(s){return this.start.copy(s.start),this.end.copy(s.end),this}getCenter(s){return s.addVectors(this.start,this.end).multiplyScalar(.5)}delta(s){return s.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(s,l){return this.delta(l).multiplyScalar(s).add(this.start)}closestPointToPointParameter(s,l){Y_.subVectors(s,this.start),av.subVectors(this.end,this.start);const h=av.dot(av);let y=av.dot(Y_)/h;return l&&(y=yl(y,0,1)),y}closestPointToPoint(s,l,h){const p=this.closestPointToPointParameter(s,l);return this.delta(h).multiplyScalar(p).add(this.start)}applyMatrix4(s){return this.start.applyMatrix4(s),this.end.applyMatrix4(s),this}equals(s){return s.start.equals(this.start)&&s.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const R1=new _n;class yR extends null{constructor(s,l){super(),this.light=s,this.light.updateMatrixWorld(),this.matrix=s.matrixWorld,this.matrixAutoUpdate=!1,this.color=l;const h=new no,p=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let C=0,P=1,ee=32;C.99999)this.quaternion.set(0,0,0,1);else if(s.y<-.99999)this.quaternion.set(1,0,0,0);else{No.set(s.z,0,-s.x).normalize();const l=Math.acos(s.y);this.quaternion.setFromAxisAngle(No,l)}}setLength(s,l=s*.2,h=l*.2){this.line.scale.set(1,Math.max(1e-4,s-l),1),this.line.updateMatrix(),this.cone.scale.set(h,l,h),this.cone.position.y=s,this.cone.updateMatrix()}setColor(s){this.line.material.color.set(s),this.cone.material.color.set(s)}copy(s){return super.copy(s,!1),this.line.copy(s.line),this.cone.copy(s.cone),this}}class nb extends null{constructor(s=1){const l=[0,0,0,s,0,0,0,0,0,0,s,0,0,0,0,0,0,s],h=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],p=new no;p.setAttribute("position",new ps(l,3)),p.setAttribute("color",new ps(h,3));const y=new Zu({vertexColors:!0,toneMapped:!1});super(p,y),this.type="AxesHelper"}setColors(s,l,h){const p=new js,y=this.geometry.attributes.color.array;return p.set(s),p.toArray(y,0),p.toArray(y,3),p.set(l),p.toArray(y,6),p.toArray(y,9),p.set(h),p.toArray(y,12),p.toArray(y,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class wR{constructor(){this.type="ShapePath",this.color=new js,this.subPaths=[],this.currentPath=null}moveTo(s,l){return this.currentPath=new ax,this.subPaths.push(this.currentPath),this.currentPath.moveTo(s,l),this}lineTo(s,l){return this.currentPath.lineTo(s,l),this}quadraticCurveTo(s,l,h,p){return this.currentPath.quadraticCurveTo(s,l,h,p),this}bezierCurveTo(s,l,h,p,y,C){return this.currentPath.bezierCurveTo(s,l,h,p,y,C),this}splineThru(s){return this.currentPath.splineThru(s),this}toShapes(s,l){function h(Wt){const gn=[];for(let en=0,Dn=Wt.length;enNumber.EPSILON){if(ei<0&&(ln=gn[Br],Zr=-Zr,er=gn[Zn],ei=-ei),Wt.yer.y)continue;if(Wt.y===ln.y){if(Wt.x===ln.x)return!0}else{const cs=ei*(Wt.x-ln.x)-Zr*(Wt.y-ln.y);if(cs===0)return!0;if(cs<0)continue;Dn=!Dn}}else{if(Wt.y!==ln.y)continue;if(er.x<=Wt.x&&Wt.x<=ln.x||ln.x<=Wt.x&&Wt.x<=er.x)return!0}}return Dn}const y=sg.isClockWise,C=this.subPaths;if(C.length===0)return[];if(l===!0)return h(C);let P,ee,ie;const he=[];if(C.length===1)return ee=C[0],ie=new MA,ie.curves=ee.curves,he.push(ie),he;let me=!y(C[0].getPoints());me=s?!me:me;const ve=[],Ee=[];let Ve=[],Ue=0,Oe;Ee[Ue]=void 0,Ve[Ue]=[];for(let Wt=0,gn=C.length;Wt1){let Wt=!1,gn=0;for(let en=0,Dn=Ee.length;en0&&Wt===!1&&(Ve=ve)}let Pt;for(let Wt=0,gn=Ee.length;Wt65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),s=yl(s,-65504,65504),rb[0]=s;const l=ib[0],h=l>>23&511;return BA[h]+((l&8388607)>>RA[h])}static fromHalfFloat(s){const l=s>>10;return ib[0]=sb[U1[l]+(s&1023)]+cv[l],rb[0]}}const F1=new ArrayBuffer(4),rb=new Float32Array(F1),ib=new Uint32Array(F1),BA=new Uint32Array(512),RA=new Uint32Array(512);for(let b=0;b<256;++b){const s=b-127;s<-27?(BA[b]=0,BA[b|256]=32768,RA[b]=24,RA[b|256]=24):s<-14?(BA[b]=1024>>-s-14,BA[b|256]=1024>>-s-14|32768,RA[b]=-s-1,RA[b|256]=-s-1):s<=15?(BA[b]=s+15<<10,BA[b|256]=s+15<<10|32768,RA[b]=13,RA[b|256]=13):s<128?(BA[b]=31744,BA[b|256]=64512,RA[b]=24,RA[b|256]=24):(BA[b]=31744,BA[b|256]=64512,RA[b]=13,RA[b|256]=13)}const sb=new Uint32Array(2048),cv=new Uint32Array(64),U1=new Uint32Array(64);for(let b=1;b<1024;++b){let s=b<<13,l=0;for(;!(s&8388608);)s<<=1,l-=8388608;s&=-8388609,l+=947912704,sb[b]=s|l}for(let b=1024;b<2048;++b)sb[b]=939524096+(b-1024<<13);for(let b=1;b<31;++b)cv[b]=b<<23;cv[31]=1199570944,cv[32]=2147483648;for(let b=33;b<63;++b)cv[b]=2147483648+(b-32<<23);cv[63]=3347054592;for(let b=1;b<64;++b)b!==32&&(U1[b]=1024);const ER=0,MR=1,TR=0,CR=1,BR=2;function RR(b){return console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead."),b}function PR(b=[]){return console.warn("THREE.MultiMaterial has been removed. Use an Array instead."),b.isMultiMaterial=!0,b.materials=b,b.clone=function(){return b.slice()},b}class IR extends null{constructor(s,l){console.warn("THREE.PointCloud has been renamed to THREE.Points."),super(s,l)}}class NR extends null{constructor(s){console.warn("THREE.Particle has been renamed to THREE.Sprite."),super(s)}}class LR extends null{constructor(s,l){console.warn("THREE.ParticleSystem has been renamed to THREE.Points."),super(s,l)}}class FR extends null{constructor(s){console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial."),super(s)}}class UR extends null{constructor(s){console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."),super(s)}}class DR extends null{constructor(s){console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial."),super(s)}}class OR extends null{constructor(s,l,h){console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead."),super(s,l,h)}}class kR extends null{constructor(s,l){console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead."),super(s,l),this.setUsage(Kc)}}class VR extends null{constructor(s,l){console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead."),super(s,l)}}class HR extends null{constructor(s,l){console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead."),super(s,l)}}class GR extends null{constructor(s,l){console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead."),super(s,l)}}class zR extends null{constructor(s,l){console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead."),super(s,l)}}class QR extends null{constructor(s,l){console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead."),super(s,l)}}class WR extends null{constructor(s,l){console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."),super(s,l)}}class ZR extends null{constructor(s,l){console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead."),super(s,l)}}class KR extends null{constructor(s,l){console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),super(s,l)}}class $R extends null{constructor(s,l){console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),super(s,l)}}jd.create=function(b,s){return console.log("THREE.Curve.create() has been deprecated"),b.prototype=Object.create(jd.prototype),b.prototype.constructor=b,b.prototype.getPoint=s,b},ax.prototype.fromPoints=function(b){return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),this.setFromPoints(b)};class XR extends null{constructor(s){console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),super(s)}}class jR extends null{constructor(s,l){console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),super(s,l)}}class YR extends null{constructor(s,l){console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),super(new Kv(s.geometry),new Zu({color:l!==void 0?l:16777215}))}}P1.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")},xM.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")};class qR extends null{constructor(s,l){console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead."),super(new Gw(s.geometry),new Zu({color:l!==void 0?l:16777215}))}}Kg.prototype.extractUrlBase=function(b){return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),ty.extractUrlBase(b)},Kg.Handlers={add:function(){console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")},get:function(){console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")}};class JR extends null{constructor(s){console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader."),super(s)}}class e2 extends null{constructor(s){console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),super(s)}}mp.prototype.center=function(b){return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),this.getCenter(b)},mp.prototype.empty=function(){return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),this.isEmpty()},mp.prototype.isIntersectionBox=function(b){return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(b)},mp.prototype.size=function(b){return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),this.getSize(b)},gu.prototype.center=function(b){return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),this.getCenter(b)},gu.prototype.empty=function(){return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),this.isEmpty()},gu.prototype.isIntersectionBox=function(b){return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(b)},gu.prototype.isIntersectionSphere=function(b){return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(b)},gu.prototype.size=function(b){return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),this.getSize(b)},ra.prototype.toVector3=function(){console.error("THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead")},Qt.prototype.empty=function(){return console.warn("THREE.Sphere: .empty() has been renamed to .isEmpty()."),this.isEmpty()},jl.prototype.setFromMatrix=function(b){return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."),this.setFromProjectionMatrix(b)},yM.prototype.center=function(b){return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),this.getCenter(b)},sl.prototype.flattenToArrayOffset=function(b,s){return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(b,s)},sl.prototype.multiplyVector3=function(b){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),b.applyMatrix3(this)},sl.prototype.multiplyVector3Array=function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")},sl.prototype.applyToBufferAttribute=function(b){return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."),b.applyMatrix3(this)},sl.prototype.applyToVector3Array=function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")},sl.prototype.getInverse=function(b){return console.warn("THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(b).invert()},Or.prototype.extractPosition=function(b){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(b)},Or.prototype.flattenToArrayOffset=function(b,s){return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(b,s)},Or.prototype.getPosition=function(){return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),new _n().setFromMatrixColumn(this,3)},Or.prototype.setRotationFromQuaternion=function(b){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(b)},Or.prototype.multiplyToArray=function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")},Or.prototype.multiplyVector3=function(b){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),b.applyMatrix4(this)},Or.prototype.multiplyVector4=function(b){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),b.applyMatrix4(this)},Or.prototype.multiplyVector3Array=function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")},Or.prototype.rotateAxis=function(b){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),b.transformDirection(this)},Or.prototype.crossVector=function(b){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),b.applyMatrix4(this)},Or.prototype.translate=function(){console.error("THREE.Matrix4: .translate() has been removed.")},Or.prototype.rotateX=function(){console.error("THREE.Matrix4: .rotateX() has been removed.")},Or.prototype.rotateY=function(){console.error("THREE.Matrix4: .rotateY() has been removed.")},Or.prototype.rotateZ=function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")},Or.prototype.rotateByAxis=function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")},Or.prototype.applyToBufferAttribute=function(b){return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."),b.applyMatrix4(this)},Or.prototype.applyToVector3Array=function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")},Or.prototype.makeFrustum=function(b,s,l,h,p,y){return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),this.makePerspective(b,s,h,l,p,y)},Or.prototype.getInverse=function(b){return console.warn("THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(b).invert()},Xl.prototype.isIntersectionLine=function(b){return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),this.intersectsLine(b)},Vc.prototype.multiplyVector3=function(b){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),b.applyQuaternion(this)},Vc.prototype.inverse=function(){return console.warn("THREE.Quaternion: .inverse() has been renamed to invert()."),this.invert()},yi.prototype.isIntersectionBox=function(b){return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(b)},yi.prototype.isIntersectionPlane=function(b){return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),this.intersectsPlane(b)},yi.prototype.isIntersectionSphere=function(b){return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(b)},Es.prototype.area=function(){return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),this.getArea()},Es.prototype.barycoordFromPoint=function(b,s){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),this.getBarycoord(b,s)},Es.prototype.midpoint=function(b){return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),this.getMidpoint(b)},Es.prototypenormal=function(b){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),this.getNormal(b)},Es.prototype.plane=function(b){return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),this.getPlane(b)},Es.barycoordFromPoint=function(b,s,l,h,p){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),Es.getBarycoord(b,s,l,h,p)},Es.normal=function(b,s,l,h){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),Es.getNormal(b,s,l,h)},MA.prototype.extractAllPoints=function(b){return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),this.extractPoints(b)},MA.prototype.extrude=function(b){return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),new Nf(this,b)},MA.prototype.makeGeometry=function(b){return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),new tv(this,b)},Hi.prototype.fromAttribute=function(b,s,l){return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(b,s,l)},Hi.prototype.distanceToManhattan=function(b){return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(b)},Hi.prototype.lengthManhattan=function(){return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()},_n.prototype.setEulerFromRotationMatrix=function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},_n.prototype.setEulerFromQuaternion=function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},_n.prototype.getPositionFromMatrix=function(b){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(b)},_n.prototype.getScaleFromMatrix=function(b){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(b)},_n.prototype.getColumnFromMatrix=function(b,s){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(s,b)},_n.prototype.applyProjection=function(b){return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),this.applyMatrix4(b)},_n.prototype.fromAttribute=function(b,s,l){return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(b,s,l)},_n.prototype.distanceToManhattan=function(b){return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(b)},_n.prototype.lengthManhattan=function(){return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()},ro.prototype.fromAttribute=function(b,s,l){return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(b,s,l)},ro.prototype.lengthManhattan=function(){return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()},pn.prototype.getChildByName=function(b){return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(b)},pn.prototype.renderDepth=function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")},pn.prototype.translate=function(b,s){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(s,b)},pn.prototype.getWorldRotation=function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")},pn.prototype.applyMatrix=function(b){return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(b)},Object.defineProperties(pn.prototype,{eulerOrder:{get:function(){return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order},set:function(b){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order=b}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}}),ml.prototype.setDrawMode=function(){console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")},Object.defineProperties(ml.prototype,{drawMode:{get:function(){return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."),Kt},set:function(){console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}}),y_.prototype.initBones=function(){console.error("THREE.SkinnedMesh: initBones() has been removed.")},$l.prototype.setLens=function(b,s){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),s!==void 0&&(this.filmGauge=s),this.setFocalLength(b)},Object.defineProperties(gp.prototype,{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(b){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),this.shadow.camera.fov=b}},shadowCameraLeft:{set:function(b){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),this.shadow.camera.left=b}},shadowCameraRight:{set:function(b){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),this.shadow.camera.right=b}},shadowCameraTop:{set:function(b){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),this.shadow.camera.top=b}},shadowCameraBottom:{set:function(b){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),this.shadow.camera.bottom=b}},shadowCameraNear:{set:function(b){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),this.shadow.camera.near=b}},shadowCameraFar:{set:function(b){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),this.shadow.camera.far=b}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}},shadowBias:{set:function(b){console.warn("THREE.Light: .shadowBias is now .shadow.bias."),this.shadow.bias=b}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(b){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),this.shadow.mapSize.width=b}},shadowMapHeight:{set:function(b){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),this.shadow.mapSize.height=b}}}),Object.defineProperties(ti.prototype,{length:{get:function(){return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),this.array.length}},dynamic:{get:function(){return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.usage===Kc},set:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.setUsage(Kc)}}}),ti.prototype.setDynamic=function(b){return console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(b===!0?Kc:Cl),this},ti.prototype.copyIndicesArray=function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")},ti.prototype.setArray=function(){console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")},no.prototype.addIndex=function(b){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),this.setIndex(b)},no.prototype.addAttribute=function(b,s){return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."),!(s&&s.isBufferAttribute)&&!(s&&s.isInterleavedBufferAttribute)?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.setAttribute(b,new ti(arguments[1],arguments[2]))):b==="index"?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(s),this):this.setAttribute(b,s)},no.prototype.addDrawCall=function(b,s,l){l!==void 0&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),this.addGroup(b,s)},no.prototype.clearDrawCalls=function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),this.clearGroups()},no.prototype.computeOffsets=function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")},no.prototype.removeAttribute=function(b){return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."),this.deleteAttribute(b)},no.prototype.applyMatrix=function(b){return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(b)},Object.defineProperties(no.prototype,{drawcalls:{get:function(){return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),this.groups}},offsets:{get:function(){return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),this.groups}}}),Ov.prototype.setDynamic=function(b){return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(b===!0?Kc:Cl),this},Ov.prototype.setArray=function(){console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")},Nf.prototype.getArrays=function(){console.error("THREE.ExtrudeGeometry: .getArrays() has been removed.")},Nf.prototype.addShapeList=function(){console.error("THREE.ExtrudeGeometry: .addShapeList() has been removed.")},Nf.prototype.addShape=function(){console.error("THREE.ExtrudeGeometry: .addShape() has been removed.")},Ap.prototype.dispose=function(){console.error("THREE.Scene: .dispose() has been removed.")},vx.prototype.onUpdate=function(){return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),this},Object.defineProperties(ua.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},overdraw:{get:function(){console.warn("THREE.Material: .overdraw has been removed.")},set:function(){console.warn("THREE.Material: .overdraw has been removed.")}},wrapRGB:{get:function(){return console.warn("THREE.Material: .wrapRGB has been removed."),new js}},shading:{get:function(){console.error("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(b){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=b===Me}},stencilMask:{get:function(){return console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask},set:function(b){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask=b}},vertexTangents:{get:function(){console.warn("THREE."+this.type+": .vertexTangents has been removed.")},set:function(){console.warn("THREE."+this.type+": .vertexTangents has been removed.")}}}),Object.defineProperties(vh.prototype,{derivatives:{get:function(){return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives},set:function(b){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives=b}}}),ru.prototype.clearTarget=function(b,s,l,h){console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."),this.setRenderTarget(b),this.clear(s,l,h)},ru.prototype.animate=function(b){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),this.setAnimationLoop(b)},ru.prototype.getCurrentRenderTarget=function(){return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),this.getRenderTarget()},ru.prototype.getMaxAnisotropy=function(){return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),this.capabilities.getMaxAnisotropy()},ru.prototype.getPrecision=function(){return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),this.capabilities.precision},ru.prototype.resetGLState=function(){return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),this.state.reset()},ru.prototype.supportsFloatTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),this.extensions.get("OES_texture_float")},ru.prototype.supportsHalfFloatTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),this.extensions.get("OES_texture_half_float")},ru.prototype.supportsStandardDerivatives=function(){return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),this.extensions.get("OES_standard_derivatives")},ru.prototype.supportsCompressedTextureS3TC=function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),this.extensions.get("WEBGL_compressed_texture_s3tc")},ru.prototype.supportsCompressedTexturePVRTC=function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),this.extensions.get("WEBGL_compressed_texture_pvrtc")},ru.prototype.supportsBlendMinMax=function(){return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),this.extensions.get("EXT_blend_minmax")},ru.prototype.supportsVertexTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),this.capabilities.vertexTextures},ru.prototype.supportsInstancedArrays=function(){return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),this.extensions.get("ANGLE_instanced_arrays")},ru.prototype.enableScissorTest=function(b){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),this.setScissorTest(b)},ru.prototype.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")},ru.prototype.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")},ru.prototype.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")},ru.prototype.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")},ru.prototype.setFaceCulling=function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")},ru.prototype.allocTextureUnit=function(){console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")},ru.prototype.setTexture=function(){console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")},ru.prototype.setTexture2D=function(){console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")},ru.prototype.setTextureCube=function(){console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")},ru.prototype.getActiveMipMapLevel=function(){return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."),this.getActiveMipmapLevel()},Object.defineProperties(ru.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(b){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),this.shadowMap.enabled=b}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(b){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),this.shadowMap.type=b}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}},context:{get:function(){return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."),this.getContext()}},vr:{get:function(){return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"),this.xr}},gammaInput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."),!1},set:function(){console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.")}},gammaOutput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),!1},set:function(b){console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),this.outputEncoding=b===!0?ar:Hn}},toneMappingWhitePoint:{get:function(){return console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed."),1},set:function(){console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.")}},gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}}),Object.defineProperties(zm.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}},renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}});class t2 extends null{constructor(s,l,h){console.warn("THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options )."),super(s,h)}}Object.defineProperties(Wl.prototype,{wrapS:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS},set:function(b){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS=b}},wrapT:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT},set:function(b){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT=b}},magFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter},set:function(b){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter=b}},minFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter},set:function(b){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter=b}},anisotropy:{get:function(){return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy},set:function(b){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy=b}},offset:{get:function(){return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset},set:function(b){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset=b}},repeat:{get:function(){return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat},set:function(b){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat=b}},format:{get:function(){return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format},set:function(b){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format=b}},type:{get:function(){return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type},set:function(b){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type=b}},generateMipmaps:{get:function(){return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps},set:function(b){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps=b}}}),W_.prototype.load=function(b){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");const s=this;return new aM().load(b,function(h){s.setBuffer(h)}),this},b1.prototype.getData=function(){return console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData()."),this.getFrequencyData()},Gc.prototype.updateCubeMap=function(b,s){return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),this.update(b,s)},Gc.prototype.clear=function(b,s,l,h){return console.warn("THREE.CubeCamera: .clear() is now .renderTarget.clear()."),this.renderTarget.clear(b,s,l,h)},ri.crossOrigin=void 0,ri.loadTexture=function(b,s,l,h){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");const p=new tM;p.setCrossOrigin(this.crossOrigin);const y=p.load(b,l,void 0,h);return s&&(y.mapping=s),y},ri.loadTextureCube=function(b,s,l,h){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");const p=new eM;p.setCrossOrigin(this.crossOrigin);const y=p.load(b,l,void 0,h);return s&&(y.mapping=s),y},ri.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},ri.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")};function n2(){console.error("THREE.CanvasRenderer has been removed")}function r2(){console.error("THREE.JSONLoader has been removed.")}const i2={createMultiMaterialObject:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},detach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},attach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")}};function s2(){console.error("THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js")}class a2 extends null{constructor(){console.error("THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js"),super()}}class o2 extends null{constructor(){console.error("THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js"),super()}}function l2(){console.error("THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js")}function c2(){console.error("THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js")}function u2(){console.error("THREE.ImmediateRenderObject has been removed.")}class h2 extends null{constructor(s,l,h){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the "samples" property to greater 0 to enable multisampling.'),super(s,l,h),this.samples=4}}class f2 extends null{constructor(s,l,h,p){console.warn("THREE.DataTexture2DArray has been renamed to DataArrayTexture."),super(s,l,h,p)}}class d2 extends null{constructor(s,l,h,p){console.warn("THREE.DataTexture3D has been renamed to Data3DTexture."),super(s,l,h,p)}}typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:m}})),typeof window!="undefined"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=m)},23097:function(Ie,Be,_){"use strict";_.d(Be,{Z:function(){return L}});function m(ge){"@babel/helpers - typeof";return m=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(pe){return typeof pe}:function(pe){return pe&&typeof Symbol=="function"&&pe.constructor===Symbol&&pe!==Symbol.prototype?"symbol":typeof pe},m(ge)}var K=/^\s+/,H=/\s+$/;function L(ge,pe){if(ge=ge||"",pe=pe||{},ge instanceof L)return ge;if(!(this instanceof L))return new L(ge,pe);var De=T(ge);this._originalInput=ge,this._r=De.r,this._g=De.g,this._b=De.b,this._a=De.a,this._roundA=Math.round(100*this._a)/100,this._format=pe.format||De.format,this._gradientType=pe.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=De.ok}L.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var pe=this.toRgb();return(pe.r*299+pe.g*587+pe.b*114)/1e3},getLuminance:function(){var pe=this.toRgb(),De,Ht,Jt,At,dn,fn;return De=pe.r/255,Ht=pe.g/255,Jt=pe.b/255,De<=.03928?At=De/12.92:At=Math.pow((De+.055)/1.055,2.4),Ht<=.03928?dn=Ht/12.92:dn=Math.pow((Ht+.055)/1.055,2.4),Jt<=.03928?fn=Jt/12.92:fn=Math.pow((Jt+.055)/1.055,2.4),.2126*At+.7152*dn+.0722*fn},setAlpha:function(pe){return this._a=kn(pe),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var pe=Q(this._r,this._g,this._b);return{h:pe.h*360,s:pe.s,v:pe.v,a:this._a}},toHsvString:function(){var pe=Q(this._r,this._g,this._b),De=Math.round(pe.h*360),Ht=Math.round(pe.s*100),Jt=Math.round(pe.v*100);return this._a==1?"hsv("+De+", "+Ht+"%, "+Jt+"%)":"hsva("+De+", "+Ht+"%, "+Jt+"%, "+this._roundA+")"},toHsl:function(){var pe=B(this._r,this._g,this._b);return{h:pe.h*360,s:pe.s,l:pe.l,a:this._a}},toHslString:function(){var pe=B(this._r,this._g,this._b),De=Math.round(pe.h*360),Ht=Math.round(pe.s*100),Jt=Math.round(pe.l*100);return this._a==1?"hsl("+De+", "+Ht+"%, "+Jt+"%)":"hsla("+De+", "+Ht+"%, "+Jt+"%, "+this._roundA+")"},toHex:function(pe){return j(this._r,this._g,this._b,pe)},toHexString:function(pe){return"#"+this.toHex(pe)},toHex8:function(pe){return Y(this._r,this._g,this._b,this._a,pe)},toHex8String:function(pe){return"#"+this.toHex8(pe)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(Kn(this._r,255)*100)+"%",g:Math.round(Kn(this._g,255)*100)+"%",b:Math.round(Kn(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(Kn(this._r,255)*100)+"%, "+Math.round(Kn(this._g,255)*100)+"%, "+Math.round(Kn(this._b,255)*100)+"%)":"rgba("+Math.round(Kn(this._r,255)*100)+"%, "+Math.round(Kn(this._g,255)*100)+"%, "+Math.round(Kn(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:jn[j(this._r,this._g,this._b,!0)]||!1},toFilter:function(pe){var De="#"+fe(this._r,this._g,this._b,this._a),Ht=De,Jt=this._gradientType?"GradientType = 1, ":"";if(pe){var At=L(pe);Ht="#"+fe(At._r,At._g,At._b,At._a)}return"progid:DXImageTransform.Microsoft.gradient("+Jt+"startColorstr="+De+",endColorstr="+Ht+")"},toString:function(pe){var De=!!pe;pe=pe||this._format;var Ht=!1,Jt=this._a<1&&this._a>=0,At=!De&&Jt&&(pe==="hex"||pe==="hex6"||pe==="hex3"||pe==="hex4"||pe==="hex8"||pe==="name");return At?pe==="name"&&this._a===0?this.toName():this.toRgbString():(pe==="rgb"&&(Ht=this.toRgbString()),pe==="prgb"&&(Ht=this.toPercentageRgbString()),(pe==="hex"||pe==="hex6")&&(Ht=this.toHexString()),pe==="hex3"&&(Ht=this.toHexString(!0)),pe==="hex4"&&(Ht=this.toHex8String(!0)),pe==="hex8"&&(Ht=this.toHex8String()),pe==="name"&&(Ht=this.toName()),pe==="hsl"&&(Ht=this.toHslString()),pe==="hsv"&&(Ht=this.toHsvString()),Ht||this.toHexString())},clone:function(){return L(this.toString())},_applyModification:function(pe,De){var Ht=pe.apply(null,[this].concat([].slice.call(De)));return this._r=Ht._r,this._g=Ht._g,this._b=Ht._b,this.setAlpha(Ht._a),this},lighten:function(){return this._applyModification(Ce,arguments)},brighten:function(){return this._applyModification(Xe,arguments)},darken:function(){return this._applyModification(Fe,arguments)},desaturate:function(){return this._applyModification(ue,arguments)},saturate:function(){return this._applyModification(Me,arguments)},greyscale:function(){return this._applyModification(_e,arguments)},spin:function(){return this._applyModification(ft,arguments)},_applyCombination:function(pe,De){return pe.apply(null,[this].concat([].slice.call(De)))},analogous:function(){return this._applyCombination(It,arguments)},complement:function(){return this._applyCombination(_t,arguments)},monochromatic:function(){return this._applyCombination(Fn,arguments)},splitcomplement:function(){return this._applyCombination(Vt,arguments)},triad:function(){return this._applyCombination(lt,[3])},tetrad:function(){return this._applyCombination(lt,[4])}},L.fromRatio=function(ge,pe){if(m(ge)=="object"){var De={};for(var Ht in ge)ge.hasOwnProperty(Ht)&&(Ht==="a"?De[Ht]=ge[Ht]:De[Ht]=Qn(ge[Ht]));ge=De}return L(ge,pe)};function T(ge){var pe={r:0,g:0,b:0},De=1,Ht=null,Jt=null,At=null,dn=!1,fn=!1;return typeof ge=="string"&&(ge=Tt(ge)),m(ge)=="object"&&(Ln(ge.r)&&Ln(ge.g)&&Ln(ge.b)?(pe=F(ge.r,ge.g,ge.b),dn=!0,fn=String(ge.r).substr(-1)==="%"?"prgb":"rgb"):Ln(ge.h)&&Ln(ge.s)&&Ln(ge.v)?(Ht=Qn(ge.s),Jt=Qn(ge.v),pe=V(ge.h,Ht,Jt),dn=!0,fn="hsv"):Ln(ge.h)&&Ln(ge.s)&&Ln(ge.l)&&(Ht=Qn(ge.s),At=Qn(ge.l),pe=U(ge.h,Ht,At),dn=!0,fn="hsl"),ge.hasOwnProperty("a")&&(De=ge.a)),De=kn(De),{ok:dn,format:ge.format||fn,r:Math.min(255,Math.max(pe.r,0)),g:Math.min(255,Math.max(pe.g,0)),b:Math.min(255,Math.max(pe.b,0)),a:De}}function F(ge,pe,De){return{r:Kn(ge,255)*255,g:Kn(pe,255)*255,b:Kn(De,255)*255}}function B(ge,pe,De){ge=Kn(ge,255),pe=Kn(pe,255),De=Kn(De,255);var Ht=Math.max(ge,pe,De),Jt=Math.min(ge,pe,De),At,dn,fn=(Ht+Jt)/2;if(Ht==Jt)At=dn=0;else{var ut=Ht-Jt;switch(dn=fn>.5?ut/(2-Ht-Jt):ut/(Ht+Jt),Ht){case ge:At=(pe-De)/ut+(pe1&&(Z-=1),Z<1/6?Bt+(un-Bt)*6*Z:Z<1/2?un:Z<2/3?Bt+(un-Bt)*(2/3-Z)*6:Bt}if(pe===0)Ht=Jt=At=De;else{var fn=De<.5?De*(1+pe):De+pe-De*pe,ut=2*De-fn;Ht=dn(ut,fn,ge+1/3),Jt=dn(ut,fn,ge),At=dn(ut,fn,ge-1/3)}return{r:Ht*255,g:Jt*255,b:At*255}}function Q(ge,pe,De){ge=Kn(ge,255),pe=Kn(pe,255),De=Kn(De,255);var Ht=Math.max(ge,pe,De),Jt=Math.min(ge,pe,De),At,dn,fn=Ht,ut=Ht-Jt;if(dn=Ht===0?0:ut/Ht,Ht==Jt)At=0;else{switch(Ht){case ge:At=(pe-De)/ut+(pe>1)+720)%360;--pe;)Ht.h=(Ht.h+Jt)%360,At.push(L(Ht));return At}function Fn(ge,pe){pe=pe||6;for(var De=L(ge).toHsv(),Ht=De.h,Jt=De.s,At=De.v,dn=[],fn=1/pe;pe--;)dn.push(L({h:Ht,s:Jt,v:At})),At=(At+fn)%1;return dn}L.mix=function(ge,pe,De){De=De===0?0:De||50;var Ht=L(ge).toRgb(),Jt=L(pe).toRgb(),At=De/100,dn={r:(Jt.r-Ht.r)*At+Ht.r,g:(Jt.g-Ht.g)*At+Ht.g,b:(Jt.b-Ht.b)*At+Ht.b,a:(Jt.a-Ht.a)*At+Ht.a};return L(dn)},L.readability=function(ge,pe){var De=L(ge),Ht=L(pe);return(Math.max(De.getLuminance(),Ht.getLuminance())+.05)/(Math.min(De.getLuminance(),Ht.getLuminance())+.05)},L.isReadable=function(ge,pe,De){var Ht=L.readability(ge,pe),Jt,At;switch(At=!1,Jt=Mt(De),Jt.level+Jt.size){case"AAsmall":case"AAAlarge":At=Ht>=4.5;break;case"AAlarge":At=Ht>=3;break;case"AAAsmall":At=Ht>=7;break}return At},L.mostReadable=function(ge,pe,De){var Ht=null,Jt=0,At,dn,fn,ut;De=De||{},dn=De.includeFallbackColors,fn=De.level,ut=De.size;for(var Bt=0;BtJt&&(Jt=At,Ht=L(pe[Bt]));return L.isReadable(ge,Ht,{level:fn,size:ut})||!dn?Ht:(De.includeFallbackColors=!1,L.mostReadable(ge,["#fff","#000"],De))};var Ot=L.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},jn=L.hexNames=rr(Ot);function rr(ge){var pe={};for(var De in ge)ge.hasOwnProperty(De)&&(pe[ge[De]]=De);return pe}function kn(ge){return ge=parseFloat(ge),(isNaN(ge)||ge<0||ge>1)&&(ge=1),ge}function Kn(ge,pe){Cr(ge)&&(ge="100%");var De=Ke(ge);return ge=Math.min(pe,Math.max(0,parseFloat(ge))),De&&(ge=parseInt(ge*pe,10)/100),Math.abs(ge-pe)<1e-6?1:ge%pe/parseFloat(pe)}function _r(ge){return Math.min(1,Math.max(0,ge))}function bn(ge){return parseInt(ge,16)}function Cr(ge){return typeof ge=="string"&&ge.indexOf(".")!=-1&&parseFloat(ge)===1}function Ke(ge){return typeof ge=="string"&&ge.indexOf("%")!=-1}function Rt(ge){return ge.length==1?"0"+ge:""+ge}function Qn(ge){return ge<=1&&(ge=ge*100+"%"),ge}function Yr(ge){return Math.round(parseFloat(ge)*255).toString(16)}function rn(ge){return bn(ge)/255}var An=function(){var ge="[-\\+]?\\d+%?",pe="[-\\+]?\\d*\\.\\d+%?",De="(?:"+pe+")|(?:"+ge+")",Ht="[\\s|\\(]+("+De+")[,|\\s]+("+De+")[,|\\s]+("+De+")\\s*\\)?",Jt="[\\s|\\(]+("+De+")[,|\\s]+("+De+")[,|\\s]+("+De+")[,|\\s]+("+De+")\\s*\\)?";return{CSS_UNIT:new RegExp(De),rgb:new RegExp("rgb"+Ht),rgba:new RegExp("rgba"+Jt),hsl:new RegExp("hsl"+Ht),hsla:new RegExp("hsla"+Jt),hsv:new RegExp("hsv"+Ht),hsva:new RegExp("hsva"+Jt),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Ln(ge){return!!An.CSS_UNIT.exec(ge)}function Tt(ge){ge=ge.replace(K,"").replace(H,"").toLowerCase();var pe=!1;if(Ot[ge])ge=Ot[ge],pe=!0;else if(ge=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var De;return(De=An.rgb.exec(ge))?{r:De[1],g:De[2],b:De[3]}:(De=An.rgba.exec(ge))?{r:De[1],g:De[2],b:De[3],a:De[4]}:(De=An.hsl.exec(ge))?{h:De[1],s:De[2],l:De[3]}:(De=An.hsla.exec(ge))?{h:De[1],s:De[2],l:De[3],a:De[4]}:(De=An.hsv.exec(ge))?{h:De[1],s:De[2],v:De[3]}:(De=An.hsva.exec(ge))?{h:De[1],s:De[2],v:De[3],a:De[4]}:(De=An.hex8.exec(ge))?{r:bn(De[1]),g:bn(De[2]),b:bn(De[3]),a:rn(De[4]),format:pe?"name":"hex8"}:(De=An.hex6.exec(ge))?{r:bn(De[1]),g:bn(De[2]),b:bn(De[3]),format:pe?"name":"hex"}:(De=An.hex4.exec(ge))?{r:bn(De[1]+""+De[1]),g:bn(De[2]+""+De[2]),b:bn(De[3]+""+De[3]),a:rn(De[4]+""+De[4]),format:pe?"name":"hex8"}:(De=An.hex3.exec(ge))?{r:bn(De[1]+""+De[1]),g:bn(De[2]+""+De[2]),b:bn(De[3]+""+De[3]),format:pe?"name":"hex"}:!1}function Mt(ge){var pe,De;return ge=ge||{level:"AA",size:"small"},pe=(ge.level||"AA").toUpperCase(),De=(ge.size||"small").toLowerCase(),pe!=="AA"&&pe!=="AAA"&&(pe="AA"),De!=="small"&&De!=="large"&&(De="small"),{level:pe,size:De}}},80813:function(Ie,Be,_){"use strict";_.d(Be,{CR:function(){return Ce},Jh:function(){return fe},Q_:function(){return Kn},XA:function(){return _e},ZT:function(){return K},_T:function(){return L},ev:function(){return ft},mG:function(){return Y},pi:function(){return H},pr:function(){return Fe}});var m=function(rn,An){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Ln,Tt){Ln.__proto__=Tt}||function(Ln,Tt){for(var Mt in Tt)Object.prototype.hasOwnProperty.call(Tt,Mt)&&(Ln[Mt]=Tt[Mt])},m(rn,An)};function K(rn,An){if(typeof An!="function"&&An!==null)throw new TypeError("Class extends value "+String(An)+" is not a constructor or null");m(rn,An);function Ln(){this.constructor=rn}rn.prototype=An===null?Object.create(An):(Ln.prototype=An.prototype,new Ln)}var H=function(){return H=Object.assign||function(An){for(var Ln,Tt=1,Mt=arguments.length;Tt=0;De--)(pe=rn[De])&&(ge=(Mt<3?pe(ge):Mt>3?pe(An,Ln,ge):pe(An,Ln))||ge);return Mt>3&&ge&&Object.defineProperty(An,Ln,ge),ge}function F(rn,An){return function(Ln,Tt){An(Ln,Tt,rn)}}function B(rn,An,Ln,Tt,Mt,ge){function pe(Te){if(Te!==void 0&&typeof Te!="function")throw new TypeError("Function expected");return Te}for(var De=Tt.kind,Ht=De==="getter"?"get":De==="setter"?"set":"value",Jt=!An&&rn?Tt.static?rn:rn.prototype:null,At=An||(Jt?Object.getOwnPropertyDescriptor(Jt,Tt.name):{}),dn,fn=!1,ut=Ln.length-1;ut>=0;ut--){var Bt={};for(var un in Tt)Bt[un]=un==="access"?{}:Tt[un];for(var un in Tt.access)Bt.access[un]=Tt.access[un];Bt.addInitializer=function(Te){if(fn)throw new TypeError("Cannot add initializers after decoration has completed");ge.push(pe(Te||null))};var Z=(0,Ln[ut])(De==="accessor"?{get:At.get,set:At.set}:At[Ht],Bt);if(De==="accessor"){if(Z===void 0)continue;if(Z===null||typeof Z!="object")throw new TypeError("Object expected");(dn=pe(Z.get))&&(At.get=dn),(dn=pe(Z.set))&&(At.set=dn),(dn=pe(Z.init))&&Mt.unshift(dn)}else(dn=pe(Z))&&(De==="field"?Mt.unshift(dn):At[Ht]=dn)}Jt&&Object.defineProperty(Jt,Tt.name,At),fn=!0}function U(rn,An,Ln){for(var Tt=arguments.length>2,Mt=0;Mt0&&ge[ge.length-1])&&(Jt[0]===6||Jt[0]===2)){Ln=0;continue}if(Jt[0]===3&&(!ge||Jt[1]>ge[0]&&Jt[1]=rn.length&&(rn=void 0),{value:rn&&rn[Tt++],done:!rn}}};throw new TypeError(An?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ce(rn,An){var Ln=typeof Symbol=="function"&&rn[Symbol.iterator];if(!Ln)return rn;var Tt=Ln.call(rn),Mt,ge=[],pe;try{for(;(An===void 0||An-- >0)&&!(Mt=Tt.next()).done;)ge.push(Mt.value)}catch(De){pe={error:De}}finally{try{Mt&&!Mt.done&&(Ln=Tt.return)&&Ln.call(Tt)}finally{if(pe)throw pe.error}}return ge}function Xe(){for(var rn=[],An=0;An1||Ht(ut,un)})},Bt&&(Mt[ut]=Bt(Mt[ut])))}function Ht(ut,Bt){try{Jt(Tt[ut](Bt))}catch(un){fn(ge[0][3],un)}}function Jt(ut){ut.value instanceof _t?Promise.resolve(ut.value.v).then(At,dn):fn(ge[0][2],ut)}function At(ut){Ht("next",ut)}function dn(ut){Ht("throw",ut)}function fn(ut,Bt){ut(Bt),ge.shift(),ge.length&&Ht(ge[0][0],ge[0][1])}}function Vt(rn){var An,Ln;return An={},Tt("next"),Tt("throw",function(Mt){throw Mt}),Tt("return"),An[Symbol.iterator]=function(){return this},An;function Tt(Mt,ge){An[Mt]=rn[Mt]?function(pe){return(Ln=!Ln)?{value:_t(rn[Mt](pe)),done:!1}:ge?ge(pe):pe}:ge}}function It(rn){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var An=rn[Symbol.asyncIterator],Ln;return An?An.call(rn):(rn=typeof _e=="function"?_e(rn):rn[Symbol.iterator](),Ln={},Tt("next"),Tt("throw"),Tt("return"),Ln[Symbol.asyncIterator]=function(){return this},Ln);function Tt(ge){Ln[ge]=rn[ge]&&function(pe){return new Promise(function(De,Ht){pe=rn[ge](pe),Mt(De,Ht,pe.done,pe.value)})}}function Mt(ge,pe,De,Ht){Promise.resolve(Ht).then(function(Jt){ge({value:Jt,done:De})},pe)}}function Fn(rn,An){return Object.defineProperty?Object.defineProperty(rn,"raw",{value:An}):rn.raw=An,rn}var Ot=Object.create?function(rn,An){Object.defineProperty(rn,"default",{enumerable:!0,value:An})}:function(rn,An){rn.default=An},jn=function(rn){return jn=Object.getOwnPropertyNames||function(An){var Ln=[];for(var Tt in An)Object.prototype.hasOwnProperty.call(An,Tt)&&(Ln[Ln.length]=Tt);return Ln},jn(rn)};function rr(rn){if(rn&&rn.__esModule)return rn;var An={};if(rn!=null)for(var Ln=jn(rn),Tt=0;TtMe in Be?X$(Be,Me,{enumerable:!0,configurable:!0,writable:!0,value:b}):Be[Me]=b,rl=(Be,Me)=>{for(var b in Me||(Me={}))J$.call(Me,b)&&IE(Be,b,Me[b]);if(CP)for(var b of CP(Me))eX.call(Me,b)&&IE(Be,b,Me[b]);return Be},fd=(Be,Me)=>j$(Be,Y$(Me));var _c=(Be,Me,b)=>IE(Be,typeof Me!="symbol"?Me+"":Me,b);var TP=(Be,Me,b)=>tX(q$(Be),b,Me);var Pa=(Be,Me,b)=>new Promise((m,Z)=>{var V=F=>{try{E(b.next(F))}catch(C){Z(C)}},N=F=>{try{E(b.throw(F))}catch(C){Z(C)}},E=F=>F.done?m(F.value):Promise.resolve(F.value).then(V,N);E((b=b.apply(Be,Me)).next())});(self.webpackChunk=self.webpackChunk||[]).push([[9951],{61485:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return P}});var m=b(54476),Z=b(59301),V={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"question-circle",theme:"outlined"},N=V,E=b(85221),F=function(D,X){return Z.createElement(E.Z,(0,m.Z)({},D,{ref:X,icon:N}))},C=Z.forwardRef(F),P=C},55532:function(Be,Me,b){"use strict";b.d(Me,{ni:function(){return Uh},EF:function(){return yh}});var m=function(me,ce){var Ze=me.nodes,le=me.edges,Nt=[],Dt={};if(!Ze)throw new Error("invalid nodes data!");return Ze&&Ze.forEach(function(pn,Dn){Dt[pn.id]=Dn;var hr=[];Nt.push(hr)}),le&&le.forEach(function(pn){var Dn=pn.source,hr=pn.target,br=Dt[Dn],yr=Dt[hr];!br&&br!==0||!yr&&yr!==0||(Nt[br][yr]=1,ce||(Nt[yr][br]=1))}),Nt},Z=m,V=function(me,ce){return me===ce},N=function(){function He(me,ce){ce===void 0&&(ce=null),this.value=me,this.next=ce}return He.prototype.toString=function(me){return me?me(this.value):"".concat(this.value)},He}(),E=function(){function He(me){me===void 0&&(me=V),this.head=null,this.tail=null,this.compare=me}return He.prototype.prepend=function(me){var ce=new N(me,this.head);return this.head=ce,this.tail||(this.tail=ce),this},He.prototype.append=function(me){var ce=new N(me);return this.head?(this.tail.next=ce,this.tail=ce,this):(this.head=ce,this.tail=ce,this)},He.prototype.delete=function(me){if(!this.head)return null;for(var ce=null;this.head&&this.compare(this.head.value,me);)ce=this.head,this.head=this.head.next;var Ze=this.head;if(Ze!==null)for(;Ze.next;)this.compare(Ze.next.value,me)?(ce=Ze.next,Ze.next=Ze.next.next):Ze=Ze.next;return this.compare(this.tail.value,me)&&(this.tail=Ze),ce},He.prototype.find=function(me){var ce=me.value,Ze=ce===void 0?void 0:ce,le=me.callback,Nt=le===void 0?void 0:le;if(!this.head)return null;for(var Dt=this.head;Dt;){if(Nt&&Nt(Dt.value)||Ze!==void 0&&this.compare(Dt.value,Ze))return Dt;Dt=Dt.next}return null},He.prototype.deleteTail=function(){var me=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,me;for(var ce=this.head;ce.next;)ce.next.next?ce=ce.next:ce.next=null;return this.tail=ce,me},He.prototype.deleteHead=function(){if(!this.head)return null;var me=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),me},He.prototype.fromArray=function(me){var ce=this;return me.forEach(function(Ze){return ce.append(Ze)}),this},He.prototype.toArray=function(){for(var me=[],ce=this.head;ce;)me.push(ce),ce=ce.next;return me},He.prototype.reverse=function(){for(var me=this.head,ce=null,Ze=null;me;)Ze=me.next,me.next=ce,ce=me,me=Ze;this.tail=this.head,this.head=ce},He.prototype.toString=function(me){return me===void 0&&(me=void 0),this.toArray().map(function(ce){return ce.toString(me)}).toString()},He}(),F=E,C=function(){function He(){this.linkedList=new F}return He.prototype.isEmpty=function(){return!this.linkedList.head},He.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},He.prototype.enqueue=function(me){this.linkedList.append(me)},He.prototype.dequeue=function(){var me=this.linkedList.deleteHead();return me?me.value:null},He.prototype.toString=function(me){return this.linkedList.toString(me)},He}(),P=C,H=function(me,ce,Ze){ce===void 0&&(ce=[]);var le=ce.filter(function(Dn){return Dn.source===me||Dn.target===me});if(Ze==="target"){var Nt=function(hr){return hr.source===me};return le.filter(Nt).map(function(Dn){return Dn.target})}if(Ze==="source"){var Dt=function(hr){return hr.target===me};return le.filter(Dt).map(function(Dn){return Dn.source})}var pn=function(hr){return hr.source===me?hr.target:hr.source};return le.map(pn)},D=function(me,ce){return ce.filter(function(Ze){return Ze.source===me})},X=function(me,ce){return ce.filter(function(Ze){return Ze.source===me||Ze.target===me})},j=function(me){me===void 0&&(me=0);var ce="".concat(Math.random()).split(".")[1].substr(0,5),Ze="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(me,"-").concat(ce).concat(Ze)};function de(He){He===void 0&&(He={});var me=He,ce=function(){},Ze=function(){var le={};return function(Nt){var Dt=Nt.next,pn=Dt;return le[pn]?!1:(le[pn]=!0,!0)}}();return me.allowTraversal=He.allowTraversal||Ze,me.enter=He.enter||ce,me.leave=He.leave||ce,me}var he=function(me,ce,Ze,le){le===void 0&&(le=!0);var Nt=de(Ze),Dt=new P,pn=me.edges,Dn=pn===void 0?[]:pn;Dt.enqueue(ce);for(var hr="",br=function(){var xr=Dt.dequeue();Nt.enter({current:xr,previous:hr}),H(xr,Dn,le?"target":void 0).forEach(function(Fr){Nt.allowTraversal({previous:hr,current:xr,next:Fr})&&Dt.enqueue(Fr)}),Nt.leave({current:xr,previous:hr}),hr=xr};!Dt.isEmpty();)br()},we=he,ve=function(me){for(var ce=me.nodes,Ze=ce===void 0?[]:ce,le=me.edges,Nt=le===void 0?[]:le,Dt=[],pn={},Dn=[],hr=function Fr(ri){Dn.push(ri),pn[ri.id]=!0;for(var ai=H(ri.id,Nt),wi=function(as){var Bs=ai[as];if(!pn[Bs]){var Ls=Ze.filter(function(zi){return zi.id===Bs});Ls.length>0&&Fr(Ls[0])}},Vi=0;Vi0;)xr.push(Dn.pop());Dt.push(xr)}}return Dt},Ee=function(me){for(var ce=me.nodes,Ze=ce===void 0?[]:ce,le=me.edges,Nt=le===void 0?[]:le,Dt=[],pn={},Dn={},hr={},br=[],yr=0,xr=function wi(Vi){Dn[Vi.id]=yr,hr[Vi.id]=yr,yr+=1,Dt.push(Vi),pn[Vi.id]=!0;for(var rs=H(Vi.id,Nt,"target").filter(function(Ni){return Ze.map(function(Ns){return Ns.id}).indexOf(Ni)>-1}),as=function(Ns){var Os=rs[Ns];if(!Dn[Os]&&Dn[Os]!==0){var _a=Ze.filter(function(Sa){return Sa.id===Os});_a.length>0&&wi(_a[0]),hr[Vi.id]=Math.min(hr[Vi.id],hr[Os])}else pn[Os]&&(hr[Vi.id]=Math.min(hr[Vi.id],Dn[Os]))},Bs=0;Bs0;){var zi=Dt.pop();if(pn[zi.id]=!1,Ls.push(zi),zi===Vi)break}Ls.length>0&&br.push(Ls)}},Fr=0,ri=Ze;Fr0;)for(var wi=Fr.pop(),Vi=wi.id,rs=H(Vi,me.edges),as=function(zi){var Ni,Ns=rs[zi],Os=me.nodes.find(function(J){return J.id===Ns});if(Ns===Vi)Dt.push((Ni={},Ni[Ns]=wi,Ni));else if(!(Ns in ai))ri[Ns]=wi,Fr.push(Os),ai[Ns]=new Set([wi]);else if(!ai[Vi].has(Os)){for(var _a=!0,Sa=[Os,wi],oe=ri[Vi];ai[Ns].size&&!ai[Ns].has(oe)&&(Sa.push(oe),oe!==ri[oe.id]);)oe=ri[oe.id];if(Sa.push(oe),ce&&Ze?(_a=!1,Sa.findIndex(function(J){return ce.indexOf(J.id)>-1})>-1&&(_a=!0)):ce&&!Ze&&Sa.findIndex(function(J){return ce.indexOf(J.id)>-1})>-1&&(_a=!1),_a){for(var re={},Y=1;Y0;){var Y=re.pop();Nt.has(Y)&&(Nt.delete(Y),Dt[Y.id].forEach(function(J){re.push(J)}),Dt[Y.id].clear())}},yr=function Sa(oe,re,Y){var J=!1;if(ce&&Ze===!1&&ce.indexOf(oe.id)>-1)return J;le.push(oe),Nt.add(oe);for(var fe=Y[oe.id],Te=0;Te-1});nn-1)?pn.push((re={},re[Kt.id]=Kt,re)):mt[Kt.id].push(hr[Nn])}}return{component:Xe,adjList:mt,minIdx:J}},as=0;as=as}),Ls=Ee({nodes:Bs,edges:me.edges}).filter(function(Sa){return Sa.length>1});if(Ls.length===0)break;var zi=rs(Ls),Ni=zi.minIdx,Ns=zi.adjList,Os=zi.component;if(Os.length>1){Os.forEach(function(Sa){Dt[Sa.id]=new Set});var _a=Dn[Ni];if(ce&&Ze&&ce.indexOf(_a.id)===-1)return pn;yr(_a,_a,Ns),as=Ni+1}else break}return pn},In=function(me,ce,Ze,le){return le===void 0&&(le=!0),ce?Xn(me,Ze,le):Wn(me,Ze,le)},zn=Lt,dr=b(80813),vn={}.toString,_r=function(He,me){return vn.call(He)==="[object "+me+"]"},Ge=_r,Tt=function(He){return Ge(He,"Function")},On=function(He){return Array.isArray?Array.isArray(He):Ge(He,"Array")},Vr=function(He){var me=typeof He;return He!==null&&me==="object"||me==="function"};function en(He,me){if(He){var ce;if(On(He))for(var Ze=0,le=He.length;Ze-1;)Tn.call(He,Nt,1);return He},be=null,it=Array.prototype.splice,wt=function(me,ce){if(!isArrayLike(me))return[];for(var Ze=me?ce.length:0,le=Ze-1;Ze--;){var Nt=void 0,Dt=ce[Ze];(Ze===le||Dt!==Nt)&&(Nt=Dt,it.call(me,Dt,1))}return me},ot=null,ut=function(He,me,ce){if(!isArray(He)&&!isPlainObject(He))return He;var Ze=ce;return each(He,function(le,Nt){Ze=me(Ze,le,Nt)}),Ze},_t=null,$t=function(He,me){var ce=[];if(!isArrayLike(He))return ce;for(var Ze=-1,le=[],Nt=He.length;++ZeNt[pn])return 1;if(le[pn]0},Je=null,At=function(He,me){if(isArray(He)){for(var ce,Ze=-1/0,le=0;leZe&&(ce=Nt,Ze=Dt)}return ce}},xt=function(He,me){if(isArray(He)){for(var ce,Ze=1/0,le=0;lepn&&br>pn);)if(Dn.push(hr),pn-=br,Dt=Dt.substr(le),!Dt)return Dn.join("");for(;hr=Dt.substr(0,1),br=measureTextWidth(hr,ce),!(br+Nt>pn);)if(Dn.push(hr),pn-=br,Dt=Dt.substr(1),!Dt)return Dn.join("");return""+Dn.join("")+Ze},No=function(){function He(){this.map={}}return He.prototype.has=function(me){return this.map[me]!==void 0},He.prototype.get=function(me,ce){var Ze=this.map[me];return Ze===void 0?ce:Ze},He.prototype.set=function(me,ce){this.map[me]=ce},He.prototype.clear=function(){this.map={}},He.prototype.delete=function(me){delete this.map[me]},He.prototype.size=function(){return Object.keys(this.map).length},He}(),Uu=null,ws=function(me,ce,Ze){for(var le=1/0,Nt,Dt=0;Dtyr[Ls.id]+oe?(yr[Sa]=yr[Ls.id]+oe,xr[Sa]=[Ls.id]):yr[Sa]===yr[Ls.id]+oe&&xr[Sa].push(Ls.id)})},ai=0;ai0&&br.length>0;){var Fr=br[br.length-1];if(Fr.length){var ri=Fr.shift();ri&&(Dn.push(ri),hr[ri]=!0,xr=le?H(ri,pn,"target"):H(ri,pn),br.push(xr.filter(function(Vi){return!hr[Vi]})))}else{var ai=Dn.pop();hr[ai]=!1,br.pop();continue}if(Dn[Dn.length-1]===Ze){var wi=Dn.map(function(rs){return rs});yr.push(wi);var ai=Dn.pop();hr[ai]=!1,br.pop()}}return yr},sc=function(me,ce){for(var Ze=Z(me,ce),le=[],Nt=Ze.length,Dt=0;Dtle[Dt][Dn]+le[Dn][pn]&&(le[Dt][pn]=le[Dt][Dn]+le[Dn][pn]);return le},pu=sc,ou=function(me,ce,Ze,le){ce===void 0&&(ce=!1),Ze===void 0&&(Ze="weight"),le===void 0&&(le=1e3);var Nt=me.nodes,Dt=Nt===void 0?[]:Nt,pn=me.edges,Dn=pn===void 0?[]:pn,hr={},br={};Dt.forEach(function(Bs,Ls){var zi=j();Bs.clusterId=zi,hr[zi]={id:zi,nodes:[Bs]},br[Bs.id]={node:Bs,idx:Ls}});var yr=Z(me,ce),xr=[],Fr={};yr.forEach(function(Bs,Ls){var zi=0,Ni=Dt[Ls].id;Fr[Ni]={},Bs.forEach(function(Ns,Os){if(Ns){zi+=Ns;var _a=Dt[Os].id;Fr[Ni][_a]=Ns}}),xr.push(zi)});for(var ri=0,ai=function(){var Ls=!1;if(Dt.forEach(function(zi){var Ni={};Object.keys(Fr[zi.id]).forEach(function(J){var fe=Fr[zi.id][J],Te=br[J].node,De=Te.clusterId;Ni[De]||(Ni[De]=0),Ni[De]+=fe});var Ns=-1/0,Os=[];if(Object.keys(Ni).forEach(function(J){Ns=0&&Os.splice(_a,1),Os&&Os.length){Ls=!0;var Sa=hr[zi.clusterId],oe=Sa.nodes.indexOf(zi);Sa.nodes.splice(oe,1);var re=Math.floor(Math.random()*Os.length),Y=hr[Os[re]];Y.nodes.push(zi),zi.clusterId=Y.id}}}),!Ls)return"break";ri++};ri0&&Ns>Os&&Ns-OsOs&&(Sa=yr.map(function(Le){return{node:Le,clusterId:Le.clusterId}}),oe=Gt(rs),Os=Ns),re||_a>100)break;_a++,Object.keys(rs).forEach(function(Le){var Xe=0;Fr.forEach(function(mt){var Kt=mt.source,nn=mt.target,gn=as[Kt].node.clusterId,Nn=as[nn].node.clusterId;(gn===Le&&Nn!==Le||Nn===Le&&gn!==Le)&&(Xe=Xe+(mt[Ze]||1))}),rs[Le].sumTot=Xe}),yr.forEach(function(Le,Xe){var mt=rs[Le.clusterId],Kt=0,nn,gn=Ls[Xe]/(2*Ni),Nn=0,$n=mt.nodes;$n.forEach(function(Ds){var Ba=as[Ds.id].idx;Nn+=Bs[Xe][Ba]||0});var Er=Nn-mt.sumTot*gn,mr=$n.filter(function(Ds){return Ds.id!==Le.id}),ti=[];mr.forEach(function(Ds,Ba){ti[Ba]=ri[Ds.originIndex]});var jr=Lo(mr,ri)*hr,ui=zi[Le.id];if(Object.keys(ui).forEach(function(Ds){var Ba=as[Ds].node,Ka=Ba.clusterId;if(Ka!==Le.clusterId){var xo=rs[Ka],aa=xo.nodes;if(!(!aa||!aa.length)){var di=0;aa.forEach(function(Ya){var pa=as[Ya.id].idx;di+=Bs[Xe][pa]||0});var Ma=di-xo.sumTot*gn,Rs=aa.concat([Le]),lo=[];Rs.forEach(function(Ya,pa){lo[pa]=ri[Ya.originIndex]});var Jo=Lo(Rs,ri)*hr,zs=Ma-Er;Nt&&(zs=Ma+Jo-(Er+jr)),zs>Kt&&(Kt=zs,nn=xo)}}}),Kt>0){nn.nodes.push(Le);var gi=Le.clusterId;Le.clusterId=nn.id;var oi=mt.nodes.indexOf(Le);mt.nodes.splice(oi,1);var ts=0,fs=0;Fr.forEach(function(Ds){var Ba=Ds.source,Ka=Ds.target,xo=as[Ba].node.clusterId,aa=as[Ka].node.clusterId;(xo===nn.id&&aa!==nn.id||aa===nn.id&&xo!==nn.id)&&(ts=ts+(Ds[Ze]||1)),(xo===gi&&aa!==gi||aa===gi&&xo!==gi)&&(fs=fs+(Ds[Ze]||1))}),nn.sumTot=ts,mt.sumTot=fs}})}var Y={},J=0;Object.keys(oe).forEach(function(Le){var Xe=oe[Le];if(!Xe.nodes||!Xe.nodes.length){delete oe[Le];return}var mt=String(J+1);mt!==Le&&(Xe.id=mt,Xe.nodes=Xe.nodes.map(function(Kt){return{id:Kt.id,clusterId:mt}}),oe[mt]=Xe,Y[Le]=mt,delete oe[Le],J++)}),Sa.forEach(function(Le){var Xe=Le.node,mt=Le.clusterId;Xe&&(Xe.clusterId=mt,Xe.clusterId&&Y[Xe.clusterId]&&(Xe.clusterId=Y[Xe.clusterId]))});var fe=[],Te={};Fr.forEach(function(Le){var Xe=Le.source,mt=Le.target,Kt=Le[Ze]||1,nn=as[Xe].node.clusterId,gn=as[mt].node.clusterId;if(!(!nn||!gn)){var Nn="".concat(nn,"---").concat(gn);if(Te[Nn])Te[Nn].weight+=Kt,Te[Nn].count++;else{var $n={source:nn,target:gn,weight:Kt,count:1};Te[Nn]=$n,fe.push($n)}}});var De=[];return Object.keys(oe).forEach(function(Le){De.push(oe[Le])}),{clusters:De,clusterEdges:fe}},$u=Ji,gh=function(me,ce,Ze,le,Nt,Dt,pn,Dn){return ce===void 0&&(ce=!1),Ze===void 0&&(Ze="weight"),le===void 0&&(le=1e-4),Nt===void 0&&(Nt=void 0),Dt===void 0&&(Dt=[]),pn===void 0&&(pn=["id"]),Dn===void 0&&(Dn=1),$u(me,ce,Ze,le,!0,Nt,Dt,pn,Dn)},mh=gh,np=function(me,ce){var Ze;ce===void 0&&(ce=1);for(var le=Gt(me),Nt=le.nodes,Dt=Nt===void 0?[]:Nt,pn=le.edges,Dn=pn===void 0?[]:pn,hr=function(){var xr=ct({nodes:Dt,edges:Dn}),Fr=Object.keys(xr);Fr.sort(function(wi,Vi){var rs,as;return((rs=xr[wi])===null||rs===void 0?void 0:rs.degree)-((as=xr[Vi])===null||as===void 0?void 0:as.degree)});var ri=Fr[0];if(!Dt.length||((Ze=xr[ri])===null||Ze===void 0?void 0:Ze.degree)>=ce)return"break";var ai=Dt.findIndex(function(wi){return wi.id===ri});Dt.splice(ai,1),Dn=Dn.filter(function(wi){return!(wi.source===ri||wi.target===ri)})};;){var br=hr();if(br==="break")break}return{nodes:Dt,edges:Dn}},vh=np,Cu=function(me,ce,Ze){var le=[];switch(me){case lu.EuclideanDistance:le=ce[Ze];break;default:le=[];break}return le},zc=function(me,ce,Ze,le,Nt,Dt){ce===void 0&&(ce=3),Ze===void 0&&(Ze=void 0),le===void 0&&(le=[]),Nt===void 0&&(Nt=["id"]),Dt===void 0&&(Dt=lu.EuclideanDistance);var pn=me.nodes,Dn=pn===void 0?[]:pn,hr=me.edges,br=hr===void 0?[]:hr,yr={clusters:[{id:"0",nodes:Dn}],clusterEdges:[]};if(Dt===lu.EuclideanDistance&&!Dn.every(function(mt){return mt.hasOwnProperty(Ze)}))return yr;var xr=[],Fr=[];if(Dt===lu.EuclideanDistance&&(xr=jo(Dn,Ze),Fr=oo(xr,le,Nt)),!Fr.length)return yr;for(var ri=qn(Fr.map(function(mt){return mt.join("")})),ai=Math.min(ce,Dn.length,ri.length),wi=0;wiLs&&!Vi.find(function(mr){return $a(mr,Cu(Dt,Fr,Dn[nn].originIndex))})&&(Ls=Er,zi=nn)}},Ns=0;Ns=0;Y--)as[Number(Dn[wi].clusterId)][Y].id===Dn[wi].id&&as[Number(Dn[wi].clusterId)].splice(Y,1);Dn[wi].clusterId=String(_a),as[_a].push(Dn[wi])}}for(var J=!1,wi=0;wi=1e3)break}var Le=[],Xe={};return br.forEach(function(mt){var Kt,nn,gn=mt.source,Nn=mt.target,$n=(Kt=Dn.find(function(jr){return jr.id===gn}))===null||Kt===void 0?void 0:Kt.clusterId,Er=(nn=Dn.find(function(jr){return jr.id===Nn}))===null||nn===void 0?void 0:nn.clusterId,mr="".concat($n,"---").concat(Er);if(Xe[mr])Xe[mr].count++;else{var ti={source:$n,target:Er,count:1};Xe[mr]=ti,Le.push(ti)}}),{clusters:as,clusterEdges:Le}},Ul=zc,Xl=function(me,ce){var Ze=new Xo(ce),le=Ze.norm2(),Nt=new Xo(me),Dt=Nt.norm2(),pn=Ze.dot(Nt),Dn=le*Dt,hr=Dn?pn/Dn:0;return hr},Uo=Xl,Ld=function(me,ce,Ze,le,Nt){me===void 0&&(me=[]),Ze===void 0&&(Ze=void 0),le===void 0&&(le=[]),Nt===void 0&&(Nt=[]);var Dt=Gt(me.filter(function(xr){return xr.id!==ce.id})),pn=me.findIndex(function(xr){return xr.id===ce.id}),Dn=jo(me,Ze),hr=oo(Dn,le,Nt),br=hr[pn],yr=[];return Dt.forEach(function(xr,Fr){if(xr.id!==ce.id){var ri=hr[Fr],ai=Uo(ri,br);yr.push(ai),xr.cosineSimilarity=ai}}),Dt.sort(function(xr,Fr){return Fr.cosineSimilarity-xr.cosineSimilarity}),{allCosineSimilarity:yr,similarNodes:Dt}},Yc=Ld,gl=function(){function He(me){this.count=me.length,this.parent={};for(var ce=0,Ze=me;ce0&&(this.list[0]=ce,this.moveDown(0)),me},He.prototype.insert=function(me){if(me!==null){this.list.push(me);var ce=this.list.length-1;return this.moveUp(ce),!0}return!1},He.prototype.moveUp=function(me){for(var ce=this.getParent(me);me&&me>0&&this.compareFn(this.list[ce],this.list[me])>0;){var Ze=this.list[ce];this.list[ce]=this.list[me],this.list[me]=Ze,me=ce,ce=this.getParent(me)}},He.prototype.moveDown=function(me){var ce,Ze=me,le=this.getLeft(me),Nt=this.getRight(me),Dt=this.list.length;le!==null&&le0?Ze=le:Nt!==null&&Nt0&&(Ze=Nt),me!==Ze&&(ce=[this.list[Ze],this.list[me]],this.list[me]=ce[0],this.list[Ze]=ce[1],this.moveDown(Ze))},He}(),mu=Xu,Oo=function(me,ce){var Ze=[],le=me.nodes,Nt=le===void 0?[]:le,Dt=me.edges,pn=Dt===void 0?[]:Dt;if(Nt.length===0)return Ze;var Dn=Nt[0],hr=new Set;hr.add(Dn);var br=function(wi,Vi){return ce?wi.weight-Vi.weight:0},yr=new mu(br);for(X(Dn.id,pn).forEach(function(ai){yr.insert(ai)});!yr.isEmpty();){var xr=yr.delMin(),Fr=xr.source,ri=xr.target;hr.has(Fr)&&hr.has(ri)||(Ze.push(xr),hr.has(Fr)||(hr.add(Fr),X(Fr,pn).forEach(function(ai){yr.insert(ai)})),hr.has(ri)||(hr.add(ri),X(ri,pn).forEach(function(ai){yr.insert(ai)})))}return Ze},Bo=function(me,ce){var Ze=[],le=me.nodes,Nt=le===void 0?[]:le,Dt=me.edges,pn=Dt===void 0?[]:Dt;if(Nt.length===0)return Ze;var Dn=pn.map(function(Fr){return Fr});ce&&Dn.sort(function(Fr,ri){return Fr.weight-ri.weight});for(var hr=new To(Nt.map(function(Fr){return Fr.id}));Dn.length>0;){var br=Dn.shift(),yr=br.source,xr=br.target;hr.connected(yr,xr)||(Ze.push(br),hr.union(yr,xr))}return Ze},_o=function(me,ce,Ze){var le={prim:Oo,kruskal:Bo};return Ze?le[Ze](me,ce):Bo(me,ce)},na=_o,Wa=function(me,ce,Ze){typeof ce!="number"&&(ce=1e-6),typeof Ze!="number"&&(Ze=.85);for(var le=1,Nt=0,Dt=1e3,pn=me.nodes,Dn=pn===void 0?[]:pn,hr=me.edges,br=hr===void 0?[]:hr,yr=Dn.length,xr,Fr={},ri={},ai=0;ai0&&le>ce;){Nt=0;for(var ai=0;ai0&&(xr+=ri[Ls]/zi)}Fr[Vi]=Ze*xr,Nt+=Fr[Vi]}}Nt=(1-Nt)/yr,le=0;for(var ai=0;ai=0;Ze--){var le=this.dfsEdgeList[Ze],Nt=le.fromNode,Dt=le.toNode;NtFr||le.hasNode(Dt[xr.to])||(ce.labelas;Ls--){var zi=Bs(Ls);if(zi==="break")break}if(Vi){var Ni=me.findMinLabel(wi);Dt.dfsEdgeList.push(new bl(ai,rs,wc,Ni.edgeLabel,wc));var Ns=Dt.dfsEdgeList.length-1;return me.dfsCode.dfsEdgeList[Ns]!==Dt.dfsEdgeList[Ns]?!1:yr(wi[Ni.edgeLabel].projected)}var Os={};Vi=!1;var _a=0;xr.forEach(function(fe){var Te=new Go(fe),De=me.findForwardPureEdges(le,Te.edges[Fr[0]],ri,Te);De.length>0&&(Vi=!0,_a=ai,De.forEach(function(Le){var Xe="".concat(Le.label,"-").concat(Nt[Le.to].label);Os[Xe]||(Os[Xe]={projected:[],edgeLabel:Le.label,nodeLabel2:Nt[Le.to].label}),Os[Xe].projected.push({graphId:le.id,edge:Le,preNode:fe})}))});for(var Sa=Fr.length,oe=function(Te){if(Vi)return"break";var De=Fr[Te];xr.forEach(function(Le){var Xe=new Go(Le),mt=me.findForwardRmpathEdges(le,Xe.edges[De],ri,Xe);mt.length>0&&(Vi=!0,_a=Dt.dfsEdgeList[De].fromNode,mt.forEach(function(Kt){var nn="".concat(Kt.label,"-").concat(Nt[Kt.to].label);Os[nn]||(Os[nn]={projected:[],edgeLabel:Kt.label,nodeLabel2:Nt[Kt.to].label}),Os[nn].projected.push({graphId:le.id,edge:Kt,preNode:Le})}))})},Ls=0;Ls=0;ri--){var ai=ce.findBackwardEdge(yr,Fr.edges[Nt[ri]],Fr.edges[Nt[0]],Fr);if(ai){var wi="".concat(ce.dfsCode.dfsEdgeList[Nt[ri]].fromNode,"-").concat(ai.label);hr[wi]||(hr[wi]={projected:[],toNodeId:ce.dfsCode.dfsEdgeList[Nt[ri]].fromNode,edgeLabel:ai.label}),hr[wi].projected.push({graphId:br.graphId,edge:ai,preNode:br})}}if(!(le>=ce.maxNodeNum)){var Vi=ce.findForwardPureEdges(yr,Fr.edges[Nt[0]],pn,Fr);Vi.forEach(function(as){var Bs="".concat(Dt,"-").concat(as.label,"-").concat(xr[as.to].label);Dn[Bs]||(Dn[Bs]={projected:[],fromNodeId:Dt,edgeLabel:as.label,nodeLabel2:xr[as.to].label}),Dn[Bs].projected.push({graphId:br.graphId,edge:as,preNode:br})});for(var rs=function(Bs){var Ls=ce.findForwardRmpathEdges(yr,Fr.edges[Nt[Bs]],pn,Fr);Ls.forEach(function(zi){var Ni="".concat(ce.dfsCode.dfsEdgeList[Nt[Bs]].fromNode,"-").concat(zi.label,"-").concat(xr[zi.to].label);Dn[Ni]||(Dn[Ni]={projected:[],fromNodeId:ce.dfsCode.dfsEdgeList[Nt[Bs]].fromNode,edgeLabel:zi.label,nodeLabel2:xr[zi.to].label}),Dn[Ni].projected.push({graphId:br.graphId,edge:zi,preNode:br})})},ri=0;rias){var Bs=as;as=rs,rs=Bs}var Ls=Vi.label,zi="".concat(hr,"-").concat(rs,"-").concat(Ls,"-").concat(as),Ni="".concat(rs,"-").concat(Ls,"-").concat(as);if(!Dt[Ni]){var Ns=Dt[Ni]||0;Ns++,Dt[Ni]=Ns}Dn[zi]={graphId:hr,nodeLabel1:rs,edgeLabel:Ls,nodeLabel2:as}})})}),Object.keys(Nt).forEach(function(hr){var br=Nt[hr];if(!(br2*ce)););if(wi<2*ce&&(pn["".concat(br,"-").concat(ai)]={start:br,end:ai,distance:Nt[br][ai]},yr++,Dn++,Dn>=Ze))return pn;if(xr++,xr>2*ce)break}if(yrxr&&(Dn=xr);var Fr=Ze[yr.id].inDegree;hr>Fr&&(hr=Fr);var ri=Ze[yr.id].outDegree;br>ri&&(br=ri)}),me[ce]={degree:Dn,inDegree:hr,outDegree:br}),{minPatternNodeLabelDegree:Dn,minPatternNodeLabelInDegree:hr,minPatternNodeLabelOutDegree:br}},qi=function(me,ce,Ze,le,Nt,Dt,pn){var Dn;if(Ze===void 0&&(Ze=!1),Dt===void 0&&(Dt="cluster"),pn===void 0&&(pn="cluster"),!(!me||!me.nodes)){var hr=me.nodes.length;if(hr){var br=pu(me,Ze),yr=pu(ce,Ze),xr=mo(me.nodes,br,Ze),Fr=mo(ce.nodes,yr,Ze),ri=md(me.nodes,Dt),ai=ri.nodeMap,wi=ri.nodeLabelMap,Vi=md(ce.nodes,Dt),rs=Vi.nodeMap,as=Vi.nodeLabelMap;vd(me.edges,pn,ai);var Bs=vd(ce.edges,pn,rs).edgeLabelMap,Ls=[];yr==null||yr.forEach(function(di){Ls=Ls.concat(di)}),Nt||(Nt=Math.max.apply(Math,(0,dr.ev)((0,dr.ev)([],Ls,!1),[2],!1))),le||(le=Nt);var zi=Xh(me,br,Dt,le),Ni=Xh(ce,yr,Dt,le),Ns=Math.min(100,hr*(hr-1)/2),Os=wA(le,hr,Ns,zi,br),_a=Od(Os,zi,me),Sa=10,oe=1,re=1,Y=4,J={graphs:_a,nodeLabelProp:Dt,edgeLabelProp:pn,minSupport:oe,minNodeNum:re,maxNodeNum:Y,directed:Ze},fe=rp(J).slice(0,Sa),Te=fe.length,De=[];fe.forEach(function(di,Ma){De[Ma]={},Object.keys(_a).forEach(function(Rs){var lo=_a[Rs],Jo=jh(lo,di,Dt,pn);De[Ma][Rs]=Jo})});var Le=SA(De,Te,fe),Xe=Le.structure,mt=Le.structureCountMap,Kt=ce.nodes[0],nn=[],gn=(Dn=ce.nodes[0])===null||Dn===void 0?void 0:Dn[Dt],Nn=-1/0;ce.nodes.forEach(function(di){var Ma=di[Dt],Rs=wi[Ma];(Rs==null?void 0:Rs.length)>Nn&&(Nn=Rs.length,nn=Rs,gn=Ma,Kt=di)});var $n={},Er={},mr={},ti={},jr={},ui={};Object.keys(as).forEach(function(di,Ma){jr[di]=[],Ze&&(ui[di]=[]);var Rs=-1/0,lo=as[di],Jo={};lo.forEach(function(qa){var Ua=Fr["".concat(Kt.id,"-").concat(qa.id)];if(Ua&&jr[di].push(Ua),Rsjr[di][Bu]){uc=!0;break}if(uc)return nn.splice(Ua,1),"continue";var cu={};Sc.neighbors.forEach(function(Ho){var jl=xr["".concat(dl.id,"-").concat(Ho.id)];cu["".concat(dl.id,"-").concat(Ho.id)]={start:ai[dl.id].idx,end:ai[Ho.id].idx,distance:jl}}),_a=Od(cu,zi,me,_a);var qc=[];Object.keys(cu).forEach(function(Ho){if(mt[Ho]){qc.push(mt[Ho]);return}var jl=_a[Ho];mt[Ho]=jh(jl,Xe,Dt,pn),qc.push(mt[Ho])}),qc=qc.sort(function(Ho,jl){return jl-Ho});for(var _l=!1,Bu=0;Bu=0;al--)pa(al)});var gi=[];nn==null||nn.forEach(function(di){for(var Ma=ai[di.id].idx,Rs=lc(me.nodes,br[Ma],Ma,Dt,Nt),lo=Rs.neighbors,Jo=lo.length,zs=!1,Ya=Jo-1;Ya>=0;Ya--){if(lo.length+1Sc){lo.splice(Ya,1);continue}if(Ze){var zl="".concat(pa.id,"-").concat(di.id),Gc=xr[zl];dl=ui[al].length-1;var uc=ui[al][dl];if(Gc>uc){lo.splice(Ya,1);continue}}var Bu=mt[qa]?mt[qa]:wa(me,di,pa,ai,Ua,zi,Xe,Dt,pn,mt,_a),cu="".concat(Kt.id,"-").concat(al),qc=ti[cu][ti[cu].length-1];if(Bu=0;Ua--){var uc=Gc(Ua);if(uc==="break")break}if(zl)return gi.splice(Ma,1),"continue";Rs.edges=Ya;var Bu=dh(Rs,Rs.nodes[0].id,!1).length;if(Object.keys(Bu).reverse().forEach(function(Co){if(!(Co===Rs.nodes[0].id||zl)){if(Bu[Co]===1/0){var vu=zs[Co].node[Dt];if(Jo[vu]--,Jo[vu]ts[Ea][ts[Ea].length-1]){var vu=zs[Co].node[Dt];if(Jo[vu]--,Jo[vu]=0;jl--){var Jc=Rs.nodes[jl],eh=zs[Jc.id].degree,df=zs[Jc.id].inDegree,xh=zs[Jc.id].outDegree,MA=Jc[Dt],yl=Dd($n,MA,rs,as),Nc=yl.minPatternNodeLabelDegree,bh=yl.minPatternNodeLabelInDegree,Wf=yl.minPatternNodeLabelOutDegree,_h=Ze?eh=0;ol--){var Bl=Ya[ol];if(!zs[Bl.source]||!zs[Bl.target]){Ya.splice(ol,1);var yd=Bl[pn];if(pa[yd]--,zs[Bl.source]&&(zs[Bl.source].degree--,zs[Bl.source].outDegree--),zs[Bl.target]&&(zs[Bl.target].degree--,zs[Bl.target].inDegree--),Bs[yd]&&pa[yd]=0;Ba--){var Ka=Ds(Ba);if(Ka==="break")break}for(var xo=gi.length,aa=function(Ma){var Rs=gi[Ma],lo={};Rs.edges.forEach(function(Ya){var pa="".concat(Ya.source,"-").concat(Ya.target,"-").concat(Ya.label);lo[pa]?lo[pa]++:lo[pa]=1});for(var Jo=function(pa){var al=gi[pa],qa={};al.edges.forEach(function(dl){var Sc="".concat(dl.source,"-").concat(dl.target,"-").concat(dl.label);qa[Sc]?qa[Sc]++:qa[Sc]=1});var Ua=!0;Object.keys(qa).length!==Object.keys(lo).length?Ua=!1:Object.keys(lo).forEach(function(dl){qa[dl]!==lo[dl]&&(Ua=!1)}),Ua&&gi.splice(pa,1)},zs=xo-1;zs>Ma;zs--)Jo(zs);xo=gi.length},Ba=0;Ba<=xo-1;Ba++)aa(Ba);return gi}}},Du=qi,kn=function(){function He(me){me===void 0&&(me=10),this.linkedList=new F,this.maxStep=me}return Object.defineProperty(He.prototype,"length",{get:function(){return this.linkedList.toArray().length},enumerable:!1,configurable:!0}),He.prototype.isEmpty=function(){return!this.linkedList.head},He.prototype.isMaxStack=function(){return this.toArray().length>=this.maxStep},He.prototype.peek=function(){return this.isEmpty()?null:this.linkedList.head.value},He.prototype.push=function(me){this.linkedList.prepend(me),this.length>this.maxStep&&this.linkedList.deleteTail()},He.prototype.pop=function(){var me=this.linkedList.deleteHead();return me?me.value:null},He.prototype.toArray=function(){return this.linkedList.toArray().map(function(me){return me.value})},He.prototype.clear=function(){for(;!this.isEmpty();)this.pop()},He}(),kd=kn,Yh=zn,vl={getAdjMatrix:Z,breadthFirstSearch:we,connectedComponent:$e,getDegree:ct,getInDegree:vt,getOutDegree:at,detectCycle:zn,detectDirectedCycle:Yh,detectAllCycles:In,detectAllDirectedCycle:Xn,detectAllUndirectedCycle:Wn,depthFirstSearch:Bn,dijkstra:dh,findAllPath:Ku,findShortestPath:Uh,floydWarshall:pu,labelPropagation:Ad,louvain:$u,iLouvain:mh,kCore:vh,kMeans:Ul,cosineSimilarity:Uo,nodesCosineSimilarity:Yc,minimumSpanningTree:na,pageRank:yh,getNeighbors:H,Stack:kd,GADDI:Du}},86314:function(Be,Me,b){"use strict";b.d(Me,{MG:function(){return E},V7:function(){return C},Yq:function(){return F},eR:function(){return j},jt:function(){return H},tT:function(){return X}});var m=b(80813),Z=b(76075),V=b(69014);function N(de){return typeof de=="boolean"?!1:"enter"in de&&"update"in de&&"exit"in de}function E(de){if(!de)return{enter:!1,update:!1,exit:!1};var he=["enter","update","exit"],we=Object.fromEntries(Object.entries(de).filter(function(ve){var Ee=(0,m.CR)(ve,1),$e=Ee[0];return!he.includes($e)}));return Object.fromEntries(he.map(function(ve){return N(de)?de[ve]===!1?[ve,!1]:[ve,(0,m.pi)((0,m.pi)({},de[ve]),we)]:[ve,we]}))}function F(de,he){de?de.finished.then(he):he()}function C(de,he){de.length===0?he():Promise.all(de.map(function(we){return we==null?void 0:we.finished})).then(he)}function P(de,he){"update"in de?de.update(he):de.attr(he)}function H(de,he,we){if(he.length===0)return null;if(!we){var ve=he.slice(-1)[0];return P(de,{style:ve}),null}return de.animate(he,we)}function D(de,he){return!(de.nodeName!=="text"||he.nodeName!=="text"||de.attributes.text!==he.attributes.text)}function X(de,he,we,ve){if(ve===void 0&&(ve="destroy"),D(de,he))return de.remove(),[null];var Ee=function(){ve==="destroy"?de.destroy():ve==="hide"&&(0,V.Cp)(de),he.isVisible()&&(0,V.$Z)(he)};if(!we)return Ee(),[null];var $e=we.duration,Fe=$e===void 0?0:$e,ct=we.delay,vt=ct===void 0?0:ct,at=Math.ceil(+Fe/2),kt=+Fe/4,It=(0,m.CR)(de.getGeometryBounds().center,2),Bn=It[0],Lt=It[1],Wn=(0,m.CR)(he.getGeometryBounds().center,2),Xn=Wn[0],In=Wn[1],zn=(0,m.CR)([(Bn+Xn)/2-Bn,(Lt+In)/2-Lt],2),dr=zn[0],vn=zn[1],_r=de.style.opacity,Ge=_r===void 0?1:_r,Tt=he.style.opacity,On=Tt===void 0?1:Tt,Vr=de.style.transform||"",en=he.style.transform||"",ln=de.animate([{opacity:Ge,transform:"translate(0, 0) ".concat(Vr)},{opacity:0,transform:"translate(".concat(dr,", ").concat(vn,") ").concat(Vr)}],(0,m.pi)((0,m.pi)({fill:"both"},we),{duration:vt+at+kt})),Cn=he.animate([{opacity:0,transform:"translate(".concat(-dr,", ").concat(-vn,") ").concat(en),offset:.01},{opacity:On,transform:"translate(0, 0) ".concat(en)}],(0,m.pi)((0,m.pi)({fill:"both"},we),{duration:at+kt,delay:vt+at-kt}));return F(Cn,Ee),[ln,Cn]}function j(de,he,we){var ve={},Ee={};return Object.entries(he).forEach(function($e){var Fe=(0,m.CR)($e,2),ct=Fe[0],vt=Fe[1];if(!(0,Z.Z)(vt)){var at=de.style[ct]||de.parsedStyle[ct]||0;at!==vt&&(ve[ct]=at,Ee[ct]=vt)}}),we?H(de,[ve,Ee],(0,m.pi)({fill:"both"},we)):(P(de,Ee),null)}},97304:function(Be,Me,b){"use strict";b.d(Me,{w:function(){return C}});var m=b(80813),Z=b(66623),V=b(69014),N=b(99247),E=b(16915);function F(){(0,V.WD)(this,this.attributes.visibility!=="hidden")}var C=function(P){(0,m.ZT)(H,P);function H(D,X){X===void 0&&(X={});var j=P.call(this,(0,N.n)({},{style:X},D))||this;return j.initialized=!1,j._defaultOptions=X,j}return Object.defineProperty(H.prototype,"offscreenGroup",{get:function(){return this._offscreen||(this._offscreen=(0,E.g)(this)),this._offscreen},enumerable:!1,configurable:!0}),Object.defineProperty(H.prototype,"defaultOptions",{get:function(){return this._defaultOptions},enumerable:!1,configurable:!0}),H.prototype.connectedCallback=function(){this.render(this.attributes,this),this.bindEvents(this.attributes,this),this.initialized=!0},H.prototype.disconnectedCallback=function(){var D;(D=this._offscreen)===null||D===void 0||D.destroy()},H.prototype.attributeChangedCallback=function(D){D==="visibility"&&F.call(this)},H.prototype.update=function(D,X){var j;return this.attr((0,N.n)({},this.attributes,D||{})),(j=this.render)===null||j===void 0?void 0:j.call(this,this.attributes,this,X)},H.prototype.clear=function(){this.removeChildren()},H.prototype.bindEvents=function(D,X){},H.prototype.getSubShapeStyle=function(D){var X=D.x,j=D.y,de=D.transform,he=D.transformOrigin,we=D.class,ve=D.className,Ee=D.zIndex,$e=(0,m._T)(D,["x","y","transform","transformOrigin","class","className","zIndex"]);return $e},H}(Z.b_)},42777:function(Be,Me,b){"use strict";b.d(Me,{x:function(){return N}});var m=b(80813),Z=b(66623),V=b(16915),N=function(E){(0,m.ZT)(F,E);function F(C){C===void 0&&(C={});var P=C.style,H=(0,m._T)(C,["style"]);return E.call(this,(0,m.pi)({style:(0,m.pi)({text:"",fill:"black",fontFamily:"sans-serif",fontSize:16,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",lineWidth:1,textAlign:"start",textBaseline:"middle"},P)},H))||this}return Object.defineProperty(F.prototype,"offscreenGroup",{get:function(){return this._offscreen||(this._offscreen=(0,V.g)(this)),this._offscreen},enumerable:!1,configurable:!0}),F.prototype.disconnectedCallback=function(){var C;(C=this._offscreen)===null||C===void 0||C.destroy()},F}(Z.xv)},65244:function(Be,Me,b){"use strict";b.d(Me,{W:function(){return Sn}});var m=b(80813),Z=b(97304),V=b(66623),N=b(88839),E=b(38974),F=b(17911),C=b(58688),P=b(33253),H=b(98294),D=b(67756);function X(Oe,Qe,Re){return Re?"".concat(Oe," ").concat(Re,"legend-").concat(Qe):Oe}function j(Oe,Qe,Re){var Ke=Oe.classNamePrefix,gt=Ke===void 0?"":Ke;return X(Qe.name,Re,gt)}var de={title:"title",item:"item",marker:"marker",label:"label",value:"value",focusIcon:"focus-icon",background:"background",ribbon:"ribbon",track:"track",selection:"selection",handle:"handle",handleMarker:"handle-marker",handleLabel:"handle-label",indicator:"indicator",prevBtn:"prev-btn",nextBtn:"next-btn",pageInfo:"page-info"},he=(0,C.A)({text:"text"},"title");function we(Oe,Qe){var Re=Oe.attributes,Ke=Re.position,gt=Re.spacing,tn=Re.inset,yt=Re.text,Yt=Oe.getBBox(),Rn=Qe.getBBox(),er=(0,P.l)(Ke),Jn=(0,m.CR)((0,H.j)(yt?gt:0),4),kr=Jn[0],fr=Jn[1],wr=Jn[2],ei=Jn[3],_n=(0,m.CR)((0,H.j)(tn),4),jn=_n[0],Hr=_n[1],Pr=_n[2],$i=_n[3],Zi=(0,m.CR)([ei+fr,kr+wr],2),Xi=Zi[0],Ei=Zi[1],ms=(0,m.CR)([$i+Hr,jn+Pr],2),_i=ms[0],Es=ms[1];if(er[0]==="l")return new F.b(Yt.x,Yt.y,Rn.width+Yt.width+Xi+_i,Math.max(Rn.height+Es,Yt.height));if(er[0]==="t")return new F.b(Yt.x,Yt.y,Math.max(Rn.width+_i,Yt.width),Rn.height+Yt.height+Ei+Es);var ua=(0,m.CR)([Qe.attributes.width||Rn.width,Qe.attributes.height||Rn.height],2),Hn=ua[0],Pt=ua[1];return new F.b(Rn.x,Rn.y,Hn+Yt.width+Xi+_i,Pt+Yt.height+Ei+Es)}function ve(Oe,Qe){var Re=Object.entries(Qe).reduce(function(Ke,gt){var tn=(0,m.CR)(gt,2),yt=tn[0],Yt=tn[1],Rn=Oe.node().attr(yt);return Rn||(Ke[yt]=Yt),Ke},{});Oe.styles(Re)}function Ee(Oe){var Qe,Re,Ke,gt,tn=Oe,yt=tn.width,Yt=tn.height,Rn=tn.position,er=(0,m.CR)([+yt/2,+Yt/2],2),Jn=er[0],kr=er[1],fr=(0,m.CR)([+Jn,+kr,"center","middle"],4),wr=fr[0],ei=fr[1],_n=fr[2],jn=fr[3],Hr=(0,P.l)(Rn);return Hr.includes("l")&&(Qe=(0,m.CR)([0,"start"],2),wr=Qe[0],_n=Qe[1]),Hr.includes("r")&&(Re=(0,m.CR)([+yt,"end"],2),wr=Re[0],_n=Re[1]),Hr.includes("t")&&(Ke=(0,m.CR)([0,"top"],2),ei=Ke[0],jn=Ke[1]),Hr.includes("b")&&(gt=(0,m.CR)([+Yt,"bottom"],2),ei=gt[0],jn=gt[1]),{x:wr,y:ei,textAlign:_n,textBaseline:jn}}var $e=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(Re){return Oe.call(this,Re,{text:"",width:0,height:0,fill:"#4a505a",fontWeight:"bold",fontSize:12,fontFamily:"sans-serif",inset:0,spacing:0,position:"top-left"})||this}return Qe.prototype.getAvailableSpace=function(){var Re=this,Ke=this.attributes,gt=Ke.width,tn=Ke.height,yt=Ke.position,Yt=Ke.spacing,Rn=Ke.inset,er=Re.querySelector(he.text.class);if(!er)return new F.b(0,0,+gt,+tn);var Jn=er.getBBox(),kr=Jn.width,fr=Jn.height,wr=(0,m.CR)((0,H.j)(Yt),4),ei=wr[0],_n=wr[1],jn=wr[2],Hr=wr[3],Pr=(0,m.CR)([0,0,+gt,+tn],4),$i=Pr[0],Zi=Pr[1],Xi=Pr[2],Ei=Pr[3],ms=(0,P.l)(yt);if(ms.includes("i"))return new F.b($i,Zi,Xi,Ei);ms.forEach(function(Ln,gr){var Rr,$r,Ii,Di;Ln==="t"&&(Rr=(0,m.CR)(gr===0?[fr+jn,+tn-fr-jn]:[0,+tn],2),Zi=Rr[0],Ei=Rr[1]),Ln==="r"&&($r=(0,m.CR)([+gt-kr-Hr],1),Xi=$r[0]),Ln==="b"&&(Ii=(0,m.CR)([+tn-fr-ei],1),Ei=Ii[0]),Ln==="l"&&(Di=(0,m.CR)(gr===0?[kr+_n,+gt-kr-_n]:[0,+gt],2),$i=Di[0],Xi=Di[1])});var _i=(0,m.CR)((0,H.j)(Rn),4),Es=_i[0],ua=_i[1],Hn=_i[2],Pt=_i[3],Gt=(0,m.CR)([Pt+ua,Es+Hn],2),Bt=Gt[0],yn=Gt[1];return new F.b($i+Pt,Zi+Es,Xi-Bt,Ei-yn)},Qe.prototype.getBBox=function(){return this.title?this.title.getBBox():new F.b(0,0,0,0)},Qe.prototype.render=function(Re,Ke){var gt=this,tn=Re.width,yt=Re.height,Yt=Re.position,Rn=Re.spacing,er=Re.classNamePrefix,Jn=(0,m._T)(Re,["width","height","position","spacing","classNamePrefix"]),kr=(0,m.CR)((0,N.Hm)(Jn),1),fr=kr[0],wr=Ee(Re),ei=wr.x,_n=wr.y,jn=wr.textAlign,Hr=wr.textBaseline;(0,D.z)(!!Jn.text,(0,E.Ys)(Ke),function(Pr){var $i=X(he.text.name,de.title,er);gt.title=Pr.maybeAppendByClassName(he.text,"text").attr("className",$i).styles(fr).call(ve,{x:ei,y:_n,textAlign:jn,textBaseline:Hr}).node()})},Qe}(Z.w),Fe=function(){},ct=b(37004),vt=b(38242);function at(Oe,Qe){return Oe.reduce(function(Re,Ke){return(Re[Ke[Qe]]=Re[Ke[Qe]]||[]).push(Ke),Re},{})}var kt=b(99247),It=b(70208),Bn=b(78431),Lt=b(86314);function Wn(Oe){var Qe;return((Qe=Oe[0])===null||Qe===void 0?void 0:Qe.map(function(Re,Ke){return Oe.map(function(gt){return gt[Ke]})}))||[]}var Xn=b(69014),In=b(99769),zn=function(Oe,Qe,Re){return[["M",Oe-Re,Qe],["A",Re,Re,0,1,0,Oe+Re,Qe],["A",Re,Re,0,1,0,Oe-Re,Qe],["Z"]]},dr=zn,vn=function(Oe,Qe,Re){return[["M",Oe-Re,Qe-Re],["L",Oe+Re,Qe-Re],["L",Oe+Re,Qe+Re],["L",Oe-Re,Qe+Re],["Z"]]},_r=function(Oe,Qe,Re){return[["M",Oe-Re,Qe],["L",Oe,Qe-Re],["L",Oe+Re,Qe],["L",Oe,Qe+Re],["Z"]]},Ge=function(Oe,Qe,Re){var Ke=Re*Math.sin(.3333333333333333*Math.PI);return[["M",Oe-Re,Qe+Ke],["L",Oe,Qe-Ke],["L",Oe+Re,Qe+Ke],["Z"]]},Tt=function(Oe,Qe,Re){var Ke=Re*Math.sin(.3333333333333333*Math.PI);return[["M",Oe-Re,Qe-Ke],["L",Oe+Re,Qe-Ke],["L",Oe,Qe+Ke],["Z"]]},On=function(Oe,Qe,Re){var Ke=Re/2*Math.sqrt(3);return[["M",Oe,Qe-Re],["L",Oe+Ke,Qe-Re/2],["L",Oe+Ke,Qe+Re/2],["L",Oe,Qe+Re],["L",Oe-Ke,Qe+Re/2],["L",Oe-Ke,Qe-Re/2],["Z"]]},Vr=function(Oe,Qe,Re){var Ke=Re-1.5;return[["M",Oe-Re,Qe-Ke],["L",Oe+Re,Qe+Ke],["L",Oe+Re,Qe-Ke],["L",Oe-Re,Qe+Ke],["Z"]]},en=function(Oe,Qe,Re){return[["M",Oe,Qe+Re],["L",Oe,Qe-Re]]},ln=function(Oe,Qe,Re){return[["M",Oe-Re,Qe-Re],["L",Oe+Re,Qe+Re],["M",Oe+Re,Qe-Re],["L",Oe-Re,Qe+Re]]},Cn=function(Oe,Qe,Re){return[["M",Oe-Re/2,Qe-Re],["L",Oe+Re/2,Qe-Re],["M",Oe,Qe-Re],["L",Oe,Qe+Re],["M",Oe-Re/2,Qe+Re],["L",Oe+Re/2,Qe+Re]]},Mt=function(Oe,Qe,Re){return[["M",Oe-Re,Qe],["L",Oe+Re,Qe],["M",Oe,Qe-Re],["L",Oe,Qe+Re]]},Et=function(Oe,Qe,Re){return[["M",Oe-Re,Qe],["L",Oe+Re,Qe]]},pe=function(Oe,Qe,Re){return[["M",Oe-Re,Qe],["L",Oe+Re,Qe]]},Ae=pe,Pe=function(Oe,Qe,Re){return[["M",Oe-Re,Qe],["A",Re/2,Re/2,0,1,1,Oe,Qe],["A",Re/2,Re/2,0,1,0,Oe+Re,Qe]]},Ut=function(Oe,Qe,Re){return[["M",Oe-Re-1,Qe-2.5],["L",Oe,Qe-2.5],["L",Oe,Qe+2.5],["L",Oe+Re+1,Qe+2.5]]},jt=function(Oe,Qe,Re){return[["M",Oe-Re-1,Qe+2.5],["L",Oe,Qe+2.5],["L",Oe,Qe-2.5],["L",Oe+Re+1,Qe-2.5]]},ft=function(Oe,Qe,Re){return[["M",Oe-(Re+1),Qe+2.5],["L",Oe-Re/2,Qe+2.5],["L",Oe-Re/2,Qe-2.5],["L",Oe+Re/2,Qe-2.5],["L",Oe+Re/2,Qe+2.5],["L",Oe+Re+1,Qe+2.5]]};function on(Oe,Qe){return[["M",Oe-5,Qe+2.5],["L",Oe-5,Qe],["L",Oe,Qe],["L",Oe,Qe-3],["L",Oe,Qe+3],["L",Oe+6.5,Qe+3]]}var hn=function(Oe,Qe,Re){return[["M",Oe-Re,Qe-Re],["L",Oe+Re,Qe],["L",Oe-Re,Qe+Re],["Z"]]},lt=function(Oe,Qe,Re){var Ke=Re,gt=Re*.2,tn=Re*.7;return[["M",Oe-Ke,Qe],["A",Ke,Ke,0,1,0,Oe+Ke,Qe],["A",Ke,Ke,0,1,0,Oe-Ke,Qe],["Z"],["M",Oe-tn,Qe],["L",Oe-gt,Qe],["M",Oe+gt,Qe],["L",Oe+tn,Qe],["M",Oe,Qe-tn],["L",Oe,Qe-gt],["M",Oe,Qe+gt],["L",Oe,Qe+tn]]},Ct=(0,C.A)({prevBtnGroup:"prev-btn-group",prevBtn:"prev-btn",nextBtnGroup:"next-btn-group",nextBtn:"next-btn",pageInfoGroup:"page-info-group",pageInfo:"page-info",playWindow:"play-window",contentGroup:"content-group",controller:"controller",clipPath:"clip-path"},"navigator"),sn=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(Re){var Ke=Oe.call(this,Re,{x:0,y:0,animate:{easing:"linear",duration:200,fill:"both"},buttonCursor:"pointer",buttonFill:"black",buttonD:hn(0,0,6),buttonSize:12,controllerPadding:5,controllerSpacing:5,formatter:function(gt,tn){return"".concat(gt,"/").concat(tn)},defaultPage:0,loop:!1,orientation:"horizontal",pageNumFill:"black",pageNumFontSize:12,pageNumTextAlign:"start",pageNumTextBaseline:"middle"})||this;return Ke.playState="idle",Ke.contentGroup=Ke.appendChild(new V.ZA({class:Ct.contentGroup.name})),Ke.playWindow=Ke.contentGroup.appendChild(new V.ZA({class:Ct.playWindow.name})),Ke.innerCurrPage=Ke.defaultPage,Ke}return Object.defineProperty(Qe.prototype,"defaultPage",{get:function(){var Re=this.attributes.defaultPage;return(0,It.Z)(Re,0,Math.max(this.pageViews.length-1,0))},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"pageViews",{get:function(){return this.playWindow.children},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"controllerShape",{get:function(){return this.totalPages>1?{width:55,height:0}:{width:0,height:0}},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"pageShape",{get:function(){var Re=this.pageViews,Ke=(0,m.CR)(Wn(Re.map(function(kr){var fr=kr.getBBox(),wr=fr.width,ei=fr.height;return[wr,ei]})).map(function(kr){return Math.max.apply(Math,(0,m.ev)([],(0,m.CR)(kr),!1))}),2),gt=Ke[0],tn=Ke[1],yt=this.attributes,Yt=yt.pageWidth,Rn=Yt===void 0?gt:Yt,er=yt.pageHeight,Jn=er===void 0?tn:er;return{pageWidth:Rn,pageHeight:Jn}},enumerable:!1,configurable:!0}),Qe.prototype.getContainer=function(){return this.playWindow},Object.defineProperty(Qe.prototype,"totalPages",{get:function(){return this.pageViews.length},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"currPage",{get:function(){return this.innerCurrPage},enumerable:!1,configurable:!0}),Qe.prototype.getBBox=function(){var Re=Oe.prototype.getBBox.call(this),Ke=Re.x,gt=Re.y,tn=this.controllerShape,yt=this.pageShape,Yt=yt.pageWidth,Rn=yt.pageHeight;return new F.b(Ke,gt,Yt+tn.width,Rn)},Qe.prototype.goTo=function(Re){var Ke=this,gt=this.attributes.animate,tn=this,yt=tn.currPage,Yt=tn.playState,Rn=tn.playWindow,er=tn.pageViews;if(Yt!=="idle"||Re<0||er.length<=0||Re>=er.length)return null;er[yt].setLocalPosition(0,0),this.prepareFollowingPage(Re);var Jn=(0,m.CR)(this.getFollowingPageDiff(Re),2),kr=Jn[0],fr=Jn[1];this.playState="running";var wr=(0,Lt.jt)(Rn,[{transform:"translate(0, 0)"},{transform:"translate(".concat(-kr,", ").concat(-fr,")")}],gt);return(0,Lt.Yq)(wr,function(){Ke.innerCurrPage=Re,Ke.playState="idle",Ke.setVisiblePages([Re]),Ke.updatePageInfo()}),wr},Qe.prototype.prev=function(){var Re=this.attributes.loop,Ke=this.pageViews.length,gt=this.currPage;if(!Re&><=0)return null;var tn=Re?(gt-1+Ke)%Ke:(0,It.Z)(gt-1,0,Ke);return this.goTo(tn)},Qe.prototype.next=function(){var Re=this.attributes.loop,Ke=this.pageViews.length,gt=this.currPage;if(!Re&>>=Ke-1)return null;var tn=Re?(gt+1)%Ke:(0,It.Z)(gt+1,0,Ke);return this.goTo(tn)},Qe.prototype.renderClipPath=function(Re){var Ke=this.pageShape,gt=Ke.pageWidth,tn=Ke.pageHeight;if(!gt||!tn){this.contentGroup.style.clipPath=void 0;return}this.clipPath=Re.maybeAppendByClassName(Ct.clipPath,"rect").styles({width:gt,height:tn}),this.contentGroup.attr("clipPath",this.clipPath.node())},Qe.prototype.setVisiblePages=function(Re){this.playWindow.children.forEach(function(Ke,gt){Re.includes(gt)?(0,Xn.$Z)(Ke):(0,Xn.Cp)(Ke)})},Qe.prototype.adjustControllerLayout=function(){var Re=this,Ke=Re.prevBtnGroup,gt=Re.nextBtnGroup,tn=Re.pageInfoGroup,yt=this.attributes,Yt=yt.orientation,Rn=yt.controllerPadding,er=tn.getBBox(),Jn=er.width,kr=er.height,fr=(0,m.CR)(Yt==="horizontal"?[-180,0]:[-90,90],2),wr=fr[0],ei=fr[1];Ke.setLocalEulerAngles(wr),gt.setLocalEulerAngles(ei);var _n=Ke.getBBox(),jn=_n.width,Hr=_n.height,Pr=gt.getBBox(),$i=Pr.width,Zi=Pr.height,Xi=Math.max(jn,Jn,$i),Ei=Yt==="horizontal"?{offset:[[0,0],[jn/2+Rn,0],[jn+Jn+Rn*2,0]],textAlign:"start"}:{offset:[[Xi/2,-Hr-Rn],[Xi/2,0],[Xi/2,Zi+Rn]],textAlign:"center"},ms=(0,m.CR)(Ei.offset,3),_i=(0,m.CR)(ms[0],2),Es=_i[0],ua=_i[1],Hn=(0,m.CR)(ms[1],2),Pt=Hn[0],Gt=Hn[1],Bt=(0,m.CR)(ms[2],2),yn=Bt[0],Ln=Bt[1],gr=Ei.textAlign,Rr=tn.querySelector("text");Rr&&(Rr.style.textAlign=gr),Ke.setLocalPosition(Es,ua),tn.setLocalPosition(Pt,Gt),gt.setLocalPosition(yn,Ln)},Qe.prototype.updatePageInfo=function(){var Re,Ke=this,gt=Ke.currPage,tn=Ke.pageViews,yt=Ke.attributes.formatter;tn.length<2||((Re=this.pageInfoGroup.querySelector(Ct.pageInfo.class))===null||Re===void 0||Re.attr("text",yt(gt+1,tn.length)),this.adjustControllerLayout())},Qe.prototype.getFollowingPageDiff=function(Re){var Ke=this.currPage;if(Ke===Re)return[0,0];var gt=this.attributes.orientation,tn=this.pageShape,yt=tn.pageWidth,Yt=tn.pageHeight,Rn=Re=2,fr=Re.maybeAppendByClassName(Ct.controller,"g");if((0,Xn.WD)(fr.node(),kr),!!kr){var wr=(0,N.zs)(this.attributes,"button"),ei=(0,N.zs)(this.attributes,"pageNum"),_n=(0,m.CR)((0,N.Hm)(wr),2),jn=_n[0],Hr=_n[1],Pr=jn.size,$i=(0,m._T)(jn,["size"]),Zi=!fr.select(Ct.prevBtnGroup.class).node(),Xi=fr.maybeAppendByClassName(Ct.prevBtnGroup,"g").styles(Hr);this.prevBtnGroup=Xi.node();var Ei=Xi.maybeAppendByClassName(Ct.prevBtn,"path");if(Yt){var ms=X(Ct.prevBtn.name,de.prevBtn,Yt);Ei.node().setAttribute("class",ms)}var _i=fr.maybeAppendByClassName(Ct.nextBtnGroup,"g").styles(Hr);this.nextBtnGroup=_i.node();var Es=_i.maybeAppendByClassName(Ct.nextBtn,"path");if(Yt){var ua=X(Ct.nextBtn.name,de.nextBtn,Yt);Es.node().setAttribute("class",ua)}[Ei,Es].forEach(function(Bt){Bt.styles((0,m.pi)((0,m.pi)({},$i),{transformOrigin:"center"})),(0,In.b)(Bt.node(),Pr,!0)});var Hn=fr.maybeAppendByClassName(Ct.pageInfoGroup,"g");this.pageInfoGroup=Hn.node();var Pt=Hn.maybeAppendByClassName(Ct.pageInfo,"text");if(Pt.styles(ei),Yt){var Gt=X(Ct.pageInfo.name,de.pageInfo,Yt);Pt.node().setAttribute("class",Gt)}this.updatePageInfo(),fr.node().setLocalPosition(er+tn,Jn/2),Zi&&(this.prevBtnGroup.addEventListener("click",function(){Ke.prev()}),this.nextBtnGroup.addEventListener("click",function(){Ke.next()}))}},Qe.prototype.render=function(Re,Ke){var gt=Re.x,tn=gt===void 0?0:gt,yt=Re.y,Yt=yt===void 0?0:yt;this.attr("transform","translate(".concat(tn,", ").concat(Yt,")"));var Rn=(0,E.Ys)(Ke);this.renderClipPath(Rn),this.renderController(Rn),this.setVisiblePages([this.defaultPage]),this.goTo(this.defaultPage)},Qe.prototype.bindEvents=function(){var Re=this,Ke=(0,Bn.Z)(function(){return Re.render(Re.attributes,Re)},50);this.playWindow.addEventListener(V.Dk.INSERTED,Ke),this.playWindow.addEventListener(V.Dk.REMOVED,Ke)},Qe}(Z.w),W=b(71018),Se=b(93785),Ht=b(71879);function zt(Oe){var Qe="default";if((0,Se.Z)(Oe)&&Oe instanceof Image)Qe="image";else if((0,W.Z)(Oe))Qe="symbol";else if((0,Ht.Z)(Oe)){var Re=new RegExp("data:(image|text)");Oe.match(Re)?Qe="base64":/^(https?:\/\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\.)+[a-zA-Z]+)(:\d+)?(\/.*)?(\?.*)?(#.*)?$/.test(Oe)?Qe="url":Qe="symbol"}return Qe}function Fn(Oe){var Qe=zt(Oe);return["base64","url","image"].includes(Qe)?"image":Oe&&Qe==="symbol"?"path":null}var Tn=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(){return Oe!==null&&Oe.apply(this,arguments)||this}return Qe.prototype.render=function(Re,Ke){var gt=Re.x,tn=gt===void 0?0:gt,yt=Re.y,Yt=yt===void 0?0:yt,Rn=this.getSubShapeStyle(Re),er=Rn.symbol,Jn=Rn.size,kr=Jn===void 0?16:Jn,fr=(0,m._T)(Rn,["symbol","size"]),wr=Fn(er);(0,D.z)(!!wr,(0,E.Ys)(Ke),function(ei){ei.maybeAppendByClassName("marker",wr).attr("className","marker ".concat(wr,"-marker")).call(function(_n){if(wr==="image"){var jn=kr*2;_n.styles({img:er,width:jn,height:jn,x:tn-kr,y:Yt-kr})}else{var jn=kr/2,Hr=(0,W.Z)(er)?er:Qe.getSymbol(er);_n.styles((0,m.pi)({d:Hr==null?void 0:Hr(tn,Yt,jn)},fr))}})})},Qe.MARKER_SYMBOL_MAP=new Map,Qe.registerSymbol=function(Re,Ke){Qe.MARKER_SYMBOL_MAP.set(Re,Ke)},Qe.getSymbol=function(Re){return Qe.MARKER_SYMBOL_MAP.get(Re)},Qe.getSymbols=function(){return Array.from(Qe.MARKER_SYMBOL_MAP.keys())},Qe}(Z.w);Tn.registerSymbol("cross",ln),Tn.registerSymbol("hyphen",Et),Tn.registerSymbol("line",en),Tn.registerSymbol("plus",Mt),Tn.registerSymbol("tick",Cn),Tn.registerSymbol("circle",zn),Tn.registerSymbol("point",dr),Tn.registerSymbol("bowtie",Vr),Tn.registerSymbol("hexagon",On),Tn.registerSymbol("square",vn),Tn.registerSymbol("diamond",_r),Tn.registerSymbol("triangle",Ge),Tn.registerSymbol("triangle-down",Tt),Tn.registerSymbol("line",en),Tn.registerSymbol("dot",pe),Tn.registerSymbol("dash",Ae),Tn.registerSymbol("smooth",Pe),Tn.registerSymbol("hv",Ut),Tn.registerSymbol("vh",jt),Tn.registerSymbol("hvh",ft),Tn.registerSymbol("vhv",on),Tn.registerSymbol("focus",lt);function lr(Oe,Qe,Re){var Ke=Math.round((Oe-Re)/Qe);return Re+Ke*Qe}function je(Oe,Qe,Re){var Ke=1.4,gt=Ke*Re;return[["M",Oe-Re,Qe-gt],["L",Oe+Re,Qe-gt],["L",Oe+Re,Qe+gt],["L",Oe-Re,Qe+gt],["Z"]]}var be=1.4,it=.4;function wt(Oe,Qe,Re){var Ke=Re,gt=Ke*be,tn=Ke/2,yt=Ke/6,Yt=Oe+gt*it;return[["M",Oe,Qe],["L",Yt,Qe+tn],["L",Oe+gt,Qe+tn],["L",Oe+gt,Qe-tn],["L",Yt,Qe-tn],["Z"],["M",Yt,Qe+yt],["L",Oe+gt-2,Qe+yt],["M",Yt,Qe-yt],["L",Oe+gt-2,Qe-yt]]}function ot(Oe,Qe,Re){var Ke=Re,gt=Ke*be,tn=Ke/2,yt=Ke/6,Yt=Qe+gt*it;return[["M",Oe,Qe],["L",Oe-tn,Yt],["L",Oe-tn,Qe+gt],["L",Oe+tn,Qe+gt],["L",Oe+tn,Yt],["Z"],["M",Oe-yt,Yt],["L",Oe-yt,Qe+gt-2],["M",Oe+yt,Yt],["L",Oe+yt,Qe+gt-2]]}Tn.registerSymbol("hiddenHandle",je),Tn.registerSymbol("verticalHandle",wt),Tn.registerSymbol("horizontalHandle",ot);var ut=function(Oe,Qe,Re){return Oe===void 0&&(Oe="horizontal"),Oe==="horizontal"?Qe:Re};function _t(Oe,Qe,Re,Ke){var gt;Ke===void 0&&(Ke=4);var tn=__read(Oe,2),yt=tn[0],Yt=tn[1],Rn=__read(Qe,2),er=Rn[0],Jn=Rn[1],kr=__read(Re,2),fr=kr[0],wr=kr[1],ei=__read([er,Jn],2),_n=ei[0],jn=ei[1],Hr=jn-_n;return _n>jn&&(gt=__read([jn,_n],2),_n=gt[0],jn=gt[1]),Hr>Yt-yt?[yt,Yt]:_nYt?wr===Yt&&fr===_n?[_n,Yt]:[Yt-Hr,Yt]:[_n,jn]}function $t(Oe,Qe,Re){return Oe===void 0&&(Oe="horizontal"),Oe==="horizontal"?Qe:Re}var Vt=b(49527),Qt=b(2080),cn=b(88170),Yn=b(53160),qn=b(23343);function Sr(Oe,Qe){for(var Re in Qe)Qe.hasOwnProperty(Re)&&Re!=="constructor"&&Qe[Re]!==void 0&&(Oe[Re]=Qe[Re])}function Jr(Oe,Qe,Re,Ke){return Qe&&Sr(Oe,Qe),Re&&Sr(Oe,Re),Ke&&Sr(Oe,Ke),Oe}var vr=b(5759);function Ki(Oe){return Oe instanceof Element||Oe instanceof Document}var Mi,yi="component-poptip",qr={CONTAINER:"component-poptip",ARROW:"component-poptip-arrow",TEXT:"component-poptip-text"},es=(Mi={},Mi[".".concat(qr.CONTAINER)]={visibility:"visible",position:"absolute","background-color":"rgba(0, 0, 0)","box-shadow":"0px 0px 10px #aeaeae","border-radius":"3px",color:"#fff",opacity:.8,"font-size":"12px",padding:"4px 6px",display:"flex","justify-content":"center","align-items":"center","z-index":8,transition:"visibility 50ms"},Mi[".".concat(qr.TEXT)]={"text-align":"center"},Mi[".".concat(qr.CONTAINER,"[data-position='top']")]={transform:"translate(-50%, -100%)"},Mi[".".concat(qr.CONTAINER,"[data-position='left']")]={transform:"translate(-100%, -50%)"},Mi[".".concat(qr.CONTAINER,"[data-position='right']")]={transform:"translate(0, -50%)"},Mi[".".concat(qr.CONTAINER,"[data-position='bottom']")]={transform:"translate(-50%, 0)"},Mi[".".concat(qr.CONTAINER,"[data-position='top-left']")]={transform:"translate(0,-100%)"},Mi[".".concat(qr.CONTAINER,"[data-position='top-right']")]={transform:"translate(-100%,-100%)"},Mi[".".concat(qr.CONTAINER,"[data-position='left-top']")]={transform:"translate(-100%, 0)"},Mi[".".concat(qr.CONTAINER,"[data-position='left-bottom']")]={transform:"translate(-100%, -100%)"},Mi[".".concat(qr.CONTAINER,"[data-position='right-top']")]={transform:"translate(0, 0)"},Mi[".".concat(qr.CONTAINER,"[data-position='right-bottom']")]={transform:"translate(0, -100%)"},Mi[".".concat(qr.CONTAINER,"[data-position='bottom-left']")]={transform:"translate(0, 0)"},Mi[".".concat(qr.CONTAINER,"[data-position='bottom-right']")]={transform:"translate(-100%, 0)"},Mi[".".concat(qr.ARROW)]={width:"4px",height:"4px",transform:"rotate(45deg)","background-color":"rgba(0, 0, 0)",position:"absolute","z-index":-1},Mi[".".concat(qr.CONTAINER,"[data-position='top']")]={transform:"translate(-50%, calc(-100% - 5px))"},Mi["[data-position='top'] .".concat(qr.ARROW)]={bottom:"-2px"},Mi[".".concat(qr.CONTAINER,"[data-position='left']")]={transform:"translate(calc(-100% - 5px), -50%)"},Mi["[data-position='left'] .".concat(qr.ARROW)]={right:"-2px"},Mi[".".concat(qr.CONTAINER,"[data-position='right']")]={transform:"translate(5px, -50%)"},Mi["[data-position='right'] .".concat(qr.ARROW)]={left:"-2px"},Mi[".".concat(qr.CONTAINER,"[data-position='bottom']")]={transform:"translate(-50%, 5px)"},Mi["[data-position='bottom'] .".concat(qr.ARROW)]={top:"-2px"},Mi[".".concat(qr.CONTAINER,"[data-position='top-left']")]={transform:"translate(0, calc(-100% - 5px))"},Mi["[data-position='top-left'] .".concat(qr.ARROW)]={left:"10px",bottom:"-2px"},Mi[".".concat(qr.CONTAINER,"[data-position='top-right']")]={transform:"translate(-100%, calc(-100% - 5px))"},Mi["[data-position='top-right'] .".concat(qr.ARROW)]={right:"10px",bottom:"-2px"},Mi[".".concat(qr.CONTAINER,"[data-position='left-top']")]={transform:"translate(calc(-100% - 5px), 0)"},Mi["[data-position='left-top'] .".concat(qr.ARROW)]={right:"-2px",top:"8px"},Mi[".".concat(qr.CONTAINER,"[data-position='left-bottom']")]={transform:"translate(calc(-100% - 5px), -100%)"},Mi["[data-position='left-bottom'] .".concat(qr.ARROW)]={right:"-2px",bottom:"8px"},Mi[".".concat(qr.CONTAINER,"[data-position='right-top']")]={transform:"translate(5px, 0)"},Mi["[data-position='right-top'] .".concat(qr.ARROW)]={left:"-2px",top:"8px"},Mi[".".concat(qr.CONTAINER,"[data-position='right-bottom']")]={transform:"translate(5px, -100%)"},Mi["[data-position='right-bottom'] .".concat(qr.ARROW)]={left:"-2px",bottom:"8px"},Mi[".".concat(qr.CONTAINER,"[data-position='bottom-left']")]={transform:"translate(0, 5px)"},Mi["[data-position='bottom-left'] .".concat(qr.ARROW)]={top:"-2px",left:"8px"},Mi[".".concat(qr.CONTAINER,"[data-position='bottom-right']")]={transform:"translate(-100%, 5px)"},Mi["[data-position='bottom-right'] .".concat(qr.ARROW)]={top:"-2px",right:"8px"},Mi),Ci=void 0;function En(Oe,Qe,Re,Ke,gt,tn){if(gt===void 0&&(gt=!1),tn===void 0&&(tn=!1),tn)return[Oe,Qe];var yt=Re.getBoundingClientRect(),Yt=yt.x,Rn=yt.y,er=yt.width,Jn=yt.height;switch(Ke){case"top":return gt?[Yt+er/2,Rn]:[Oe,Rn];case"left":return gt?[Yt,Rn+Jn/2]:[Yt,Qe];case"bottom":return gt?[Yt+er/2,Rn+Jn]:[Oe,Rn+Jn];case"right":return gt?[Yt+er,Rn+Jn/2]:[Yt+er,Qe];case"top-right":case"right-top":return[Yt+er,Rn];case"left-bottom":case"bottom-left":return[Yt,Rn+Jn];case"right-bottom":case"bottom-right":return[Yt+er,Rn+Jn];case"top-left":case"left-top":default:return[Yt,Rn]}}var rn=function(Oe){var Qe;return function(){for(var Re=[],Ke=0;Ke');Re.innerHTML=Yt,(0,Ht.Z)(tn)?Re.innerHTML+=tn:tn&&Ki(tn)&&Re.appendChild(tn),yt&&(Re.getElementsByClassName(qr.TEXT)[0].textContent=yt),this.applyStyles(),this.container.style.visibility=this.visibility},Qe.prototype.applyStyles=function(){var Re=(0,kt.n)({},es,this.style.domStyles),Ke=Object.entries(Re).reduce(function(tn,yt){var Yt=(0,m.CR)(yt,2),Rn=Yt[0],er=Yt[1],Jn=Object.entries(er).reduce(function(kr,fr){var wr=(0,m.CR)(fr,2),ei=wr[0],_n=wr[1];return"".concat(kr).concat(ei,": ").concat(_n,";")},"");return"".concat(tn).concat(Rn,"{").concat(Jn,"}")},"");if(this.domStyles!==Ke){this.domStyles=Ke;var gt=this.container.querySelector("style");gt&&this.container.removeChild(gt),gt=document.createElement("style"),gt.innerHTML=Ke,this.container.appendChild(gt)}},Qe.prototype.setOffsetPosition=function(Re,Ke,gt){gt===void 0&&(gt=this.style.offset);var tn=(0,m.CR)(gt,2),yt=tn[0],Yt=yt===void 0?0:yt,Rn=tn[1],er=Rn===void 0?0:Rn;this.container.style.left="".concat(Re+Yt,"px"),this.container.style.top="".concat(Ke+er,"px")},Qe.tag="poptip",Qe.defaultOptions={style:{x:0,y:0,width:0,height:0,target:null,visibility:"hidden",text:"",position:"top",follow:!1,offset:[0,0],domStyles:es,template:'
    ')}},Qe}(Z.w),Wt=(0,C.A)({layout:"flex",markerGroup:"marker-group",marker:"marker",labelGroup:"label-group",label:"label",valueGroup:"value-group",focusGroup:"focus-group",focus:"focus",value:"value",backgroundGroup:"background-group",background:"background"},"legend-category-item"),bn={offset:[0,20],domStyles:{".component-poptip":{opacity:"1",padding:"8px 12px",background:"#fff",boxShadow:"0 2px 8px rgba(0, 0, 0, 0.15)"},".component-poptip-arrow":{display:"none"},".component-poptip-text":{color:"#000",lineHeight:"20px"}}};function Jt(Oe){var Qe=Oe.querySelector(Wt.marker.class);return Qe?Qe.style:{}}var ar=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(Re,Ke){var gt=Oe.call(this,Re,{span:[1,1],marker:function(){return new V.Cd({style:{r:6}})},markerSize:10,labelFill:"#646464",valueFill:"#646464",labelFontSize:12,valueFontSize:12,labelTextBaseline:"middle",valueTextBaseline:"middle"})||this;return gt.keyFields={},gt.keyFields=Ke||{},gt}return Object.defineProperty(Qe.prototype,"showValue",{get:function(){var Re=this.attributes.valueText;return Re?typeof Re=="string"||typeof Re=="number"?Re!=="":typeof Re=="function"?!0:Re.attr("text")!=="":!1},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"actualSpace",{get:function(){var Re=this.labelGroup,Ke=this.valueGroup,gt=this.attributes,tn=gt.markerSize,yt=gt.focus,Yt=gt.focusMarkerSize,Rn=Re.node().getBBox(),er=Rn.width,Jn=Rn.height,kr=Ke.node().getBBox(),fr=kr.width,wr=kr.height,ei=yt?Yt!=null?Yt:12:0;return{markerWidth:tn,labelWidth:er,valueWidth:fr,focusWidth:ei,height:Math.max(tn,Jn,wr)}},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"span",{get:function(){var Re=this.attributes.span;if(!Re)return[1,1];var Ke=(0,m.CR)((0,H.j)(Re),2),gt=Ke[0],tn=Ke[1],yt=this.showValue?tn:0,Yt=gt+yt;return[gt/Yt,yt/Yt]},enumerable:!1,configurable:!0}),Qe.prototype.setAttribute=function(Re,Ke){Oe.prototype.setAttribute.call(this,Re,Ke)},Object.defineProperty(Qe.prototype,"shape",{get:function(){var Re,Ke=this.attributes,gt=Ke.markerSize,tn=Ke.width,yt=this.actualSpace,Yt=yt.markerWidth,Rn=yt.focusWidth,er=yt.height,Jn=this.actualSpace,kr=Jn.labelWidth,fr=Jn.valueWidth,wr=(0,m.CR)(this.spacing,3),ei=wr[0],_n=wr[1],jn=wr[2];if(tn){var Hr=tn-gt-ei-_n-Rn-jn,Pr=(0,m.CR)(this.span,2),$i=Pr[0],Zi=Pr[1];Re=(0,m.CR)([$i*Hr,Zi*Hr],2),kr=Re[0],fr=Re[1]}var Xi=Yt+kr+fr+ei+_n+Rn+jn;return{width:Xi,height:er,markerWidth:Yt,labelWidth:kr,valueWidth:fr,focusWidth:Rn}},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"spacing",{get:function(){var Re=this.attributes,Ke=Re.spacing,gt=Re.focus;if(!Ke)return[0,0,0];var tn=(0,m.CR)((0,H.j)(Ke),3),yt=tn[0],Yt=tn[1],Rn=tn[2];return[yt,this.showValue?Yt:0,gt?Rn:0]},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"layout",{get:function(){var Re=this.shape,Ke=Re.markerWidth,gt=Re.labelWidth,tn=Re.valueWidth,yt=Re.focusWidth,Yt=Re.width,Rn=Re.height,er=(0,m.CR)(this.spacing,3),Jn=er[0],kr=er[1],fr=er[2];return{height:Rn,width:Yt,markerWidth:Ke,labelWidth:gt,valueWidth:tn,focusWidth:yt,position:[Ke/2,Ke+Jn,Ke+gt+Jn+kr,Ke+gt+tn+Jn+kr+fr+yt/2]}},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"scaleSize",{get:function(){var Re=Jt(this.markerGroup.node()),Ke=this.attributes,gt=Ke.markerSize,tn=Ke.markerStrokeWidth,yt=tn===void 0?Re.strokeWidth:tn,Yt=Ke.markerLineWidth,Rn=Yt===void 0?Re.lineWidth:Yt,er=Ke.markerStroke,Jn=er===void 0?Re.stroke:er,kr=+(yt||Rn||(Jn?1:0))*Math.sqrt(2),fr=this.markerGroup.node().getBBox(),wr=fr.width,ei=fr.height;return(1-kr/Math.max(wr,ei))*gt},enumerable:!1,configurable:!0}),Qe.prototype.renderMarker=function(Re){var Ke=this,gt=this.attributes,tn=gt.marker,yt=gt.classNamePrefix,Yt=(0,N.zs)(this.attributes,"marker");this.markerGroup=Re.maybeAppendByClassName(Wt.markerGroup,"g").style("zIndex",0),(0,D.z)(!!tn,this.markerGroup,function(){var Rn,er=Ke.markerGroup.node(),Jn=(Rn=er.childNodes)===null||Rn===void 0?void 0:Rn[0],kr=X(Wt.marker.name,de.marker,yt),fr=typeof tn=="string"?new Tn({style:{symbol:tn},className:kr}):tn();if(Jn)if(fr.nodeName===Jn.nodeName)Jn instanceof Tn?Jn.update((0,m.pi)((0,m.pi)({},Yt),{symbol:tn})):((0,Qt.DM)(Jn,fr),(0,E.Ys)(Jn).styles(Yt));else{if(Jn.remove(),!(fr instanceof Tn)){var ei=X(Wt.marker.name,de.marker,yt);fr.className=ei}(0,E.Ys)(fr).styles(Yt),er.appendChild(fr)}else{if(!(fr instanceof Tn)){var wr=X(Wt.marker.name,de.marker,yt);fr.className=wr,(0,E.Ys)(fr).styles(Yt)}er.appendChild(fr)}Ke.markerGroup.node().scale(1/Ke.markerGroup.node().getScale()[0]);var _n=(0,In.b)(Ke.markerGroup.node(),Ke.scaleSize,!0);Ke.markerGroup.node().style._transform="scale(".concat(_n,")")})},Qe.prototype.renderLabel=function(Re){var Ke=(0,N.zs)(this.attributes,"label"),gt=Ke.text,tn=(0,m._T)(Ke,["text"]),yt=this.attributes.classNamePrefix;this.labelGroup=Re.maybeAppendByClassName(Wt.labelGroup,"g").style("zIndex",0);var Yt=X(Wt.label.name,de.label,yt),Rn=this.labelGroup.maybeAppendByClassName(Wt.label,function(){return(0,cn.S)(gt)});Rn.node().setAttribute("class",Yt),Rn.styles(tn)},Qe.prototype.renderValue=function(Re){var Ke=this,gt=(0,N.zs)(this.attributes,"value"),tn=gt.text,yt=(0,m._T)(gt,["text"]),Yt=this.attributes.classNamePrefix;this.valueGroup=Re.maybeAppendByClassName(Wt.valueGroup,"g").style("zIndex",0),(0,D.z)(this.showValue,this.valueGroup,function(){var Rn=X(Wt.value.name,de.value,Yt),er=Ke.valueGroup.maybeAppendByClassName(Wt.value,function(){return(0,cn.S)(tn)});er.node().setAttribute("class",Rn),er.styles(yt)})},Qe.prototype.createPoptip=function(){var Re=this.attributes.poptip,Ke=Re||{},gt=Ke.render,tn=(0,m._T)(Ke,["render"]),yt=new dt({style:(0,kt.n)(bn,tn)});return this.poptipGroup=yt,yt},Qe.prototype.bindPoptip=function(Re){var Ke=this,gt=this.attributes.poptip;if(gt){var tn=this.poptipGroup||this.createPoptip();tn.bind(Re,function(){var yt=Ke.attributes,Yt=yt.labelText,Rn=yt.valueText,er=yt.markerFill,Jn=typeof Yt=="string"?Yt:Yt==null?void 0:Yt.attr("text"),kr=typeof Rn=="string"?Rn:Rn==null?void 0:Rn.attr("text");if(typeof gt.render=="function")return{html:gt.render((0,m.pi)((0,m.pi)({},Ke.keyFields),{label:Jn,value:kr,color:er}))};var fr="";return(typeof Jn=="string"||typeof Jn=="number")&&(fr+='
    '.concat(Jn,"
    ")),(typeof kr=="string"||typeof kr=="number")&&(fr+='
    '.concat(kr,"
    ")),{html:fr}})}},Qe.prototype.renderFocus=function(Re){var Ke=this,gt=this.attributes,tn=gt.focus,yt=gt.focusMarkerSize,Yt=gt.classNamePrefix,Rn={x:0,y:0,size:yt,opacity:.6,symbol:"focus",stroke:"#aaaaaa",lineWidth:1};(0,Vt.Z)(tn)||(this.focusGroup=Re.maybeAppendByClassName(Wt.focusGroup,"g").style("zIndex",0),(0,D.z)(tn,this.focusGroup,function(){var er=X(Wt.focus.name,de.focusIcon,Yt),Jn=new Tn({style:(0,m.pi)((0,m.pi)({},Rn),{symbol:"focus"}),className:er}),kr=new V.Cd({style:{r:Rn.size/2,fill:"transparent"}}),fr=Ke.focusGroup.node();fr.appendChild(kr),fr.appendChild(Jn),Jn.update({opacity:0}),Re.node().addEventListener("pointerenter",function(){Jn.update({opacity:1})}),Re.node().addEventListener("pointerleave",function(){Jn.update({opacity:0})})}))},Qe.prototype.renderPoptip=function(Re){var Ke=this,gt=this.attributes.poptip;if(gt){var tn=Re.maybeAppendByClassName(Wt.value,"g").node(),yt=Re.maybeAppendByClassName(Wt.label,"g").node();[tn,yt].forEach(function(Yt){Yt&&Ke.bindPoptip(Yt)})}},Qe.prototype.renderBackground=function(Re){var Ke=this.shape,gt=Ke.width,tn=Ke.height,yt=(0,N.zs)(this.attributes,"background");this.background=Re.maybeAppendByClassName(Wt.backgroundGroup,"g").style("zIndex",-1);var Yt=this.background.maybeAppendByClassName(Wt.background,"rect");Yt.styles((0,m.pi)({width:gt,height:tn},yt));var Rn=this.attributes.classNamePrefix,er=Rn===void 0?"":Rn;if(er){var Jn=X(Wt.background.name,de.background,er);Yt.node().setAttribute("class",Jn)}},Qe.prototype.adjustLayout=function(){var Re=this.layout,Ke=Re.labelWidth,gt=Re.valueWidth,tn=Re.height,yt=(0,m.CR)(Re.position,4),Yt=yt[0],Rn=yt[1],er=yt[2],Jn=yt[3],kr=tn/2;this.markerGroup.styles({transform:"translate(".concat(Yt,", ").concat(kr,")").concat(this.markerGroup.node().style._transform)}),this.labelGroup.styles({transform:"translate(".concat(Rn,", ").concat(kr,")")}),this.focusGroup&&this.focusGroup.styles({transform:"translate(".concat(Jn,", ").concat(kr,")")}),(0,Yn.O)(this.labelGroup.select(Wt.label.class).node(),Math.ceil(Ke)),this.showValue&&(this.valueGroup.styles({transform:"translate(".concat(er,", ").concat(kr,")")}),(0,Yn.O)(this.valueGroup.select(Wt.value.class).node(),Math.ceil(gt)))},Qe.prototype.render=function(Re,Ke){var gt=(0,E.Ys)(Ke),tn=Re.x,yt=tn===void 0?0:tn,Yt=Re.y,Rn=Yt===void 0?0:Yt;gt.styles({transform:"translate(".concat(yt,", ").concat(Rn,")")}),this.renderMarker(gt),this.renderLabel(gt),this.renderValue(gt),this.renderBackground(gt),this.renderPoptip(gt),this.renderFocus(gt),this.adjustLayout()},Qe}(Z.w),rr=(0,C.A)({page:"item-page",navigator:"navigator",item:"item"},"items"),Kr=function(Oe,Qe,Re){return Re===void 0&&(Re=!0),Oe?Qe(Oe):Re},si=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(Re){var Ke=Oe.call(this,Re,{data:[],gridRow:1/0,gridCol:void 0,padding:0,width:1e3,height:100,rowPadding:0,colPadding:0,layout:"flex",orientation:"horizontal",click:Fe,mouseenter:Fe,mouseleave:Fe})||this;return Ke.navigatorShape=[0,0],Ke}return Object.defineProperty(Qe.prototype,"pageViews",{get:function(){return this.navigator.getContainer()},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"grid",{get:function(){var Re=this.attributes,Ke=Re.gridRow,gt=Re.gridCol,tn=Re.data;if(!Ke&&!gt)throw new Error("gridRow and gridCol can not be set null at the same time");return Ke&>?[Ke,gt]:Ke?[Ke,tn.length]:[tn.length,gt]},enumerable:!1,configurable:!0}),Object.defineProperty(Qe.prototype,"renderData",{get:function(){var Re=this.attributes,Ke=Re.data,gt=Re.layout,tn=Re.poptip,yt=Re.focus,Yt=Re.focusMarkerSize,Rn=Re.classNamePrefix,er=(0,N.zs)(this.attributes,"item"),Jn=Ke.map(function(kr,fr){var wr=kr.id,ei=wr===void 0?fr:wr,_n=kr.label,jn=kr.value;return{id:"".concat(ei),index:fr,style:(0,m.pi)({layout:gt,labelText:_n,valueText:jn,poptip:tn,focus:yt,focusMarkerSize:Yt,classNamePrefix:Rn},Object.fromEntries(Object.entries(er).map(function(Hr){var Pr=(0,m.CR)(Hr,2),$i=Pr[0],Zi=Pr[1];return[$i,(0,vt.S)(Zi,[kr,fr,Ke])]})))}});return Jn},enumerable:!1,configurable:!0}),Qe.prototype.getGridLayout=function(){var Re=this,Ke=this.attributes,gt=Ke.orientation,tn=Ke.width,yt=Ke.rowPadding,Yt=Ke.colPadding,Rn=(0,m.CR)(this.navigatorShape,1),er=Rn[0],Jn=(0,m.CR)(this.grid,2),kr=Jn[0],fr=Jn[1],wr=fr*kr,ei=0;return this.pageViews.children.map(function(_n,jn){var Hr,Pr,$i=Math.floor(jn/wr),Zi=jn%wr,Xi=Re.ifHorizontal(fr,kr),Ei=[Math.floor(Zi/Xi),Zi%Xi];gt==="vertical"&&Ei.reverse();var ms=(0,m.CR)(Ei,2),_i=ms[0],Es=ms[1],ua=(tn-er-(fr-1)*Yt)/fr,Hn=_n.getBBox().height,Pt=(0,m.CR)([0,0],2),Gt=Pt[0],Bt=Pt[1];return gt==="horizontal"?(Hr=(0,m.CR)([ei,_i*(Hn+yt)],2),Gt=Hr[0],Bt=Hr[1],ei=Es===fr-1?0:ei+ua+Yt):(Pr=(0,m.CR)([Es*(ua+Yt),ei],2),Gt=Pr[0],Bt=Pr[1],ei=_i===kr-1?0:ei+Hn+yt),{page:$i,index:jn,row:_i,col:Es,pageIndex:Zi,width:ua,height:Hn,x:Gt,y:Bt}})},Qe.prototype.getFlexLayout=function(){var Re=this.attributes,Ke=Re.width,gt=Re.height,tn=Re.rowPadding,yt=Re.colPadding,Yt=(0,m.CR)(this.navigatorShape,1),Rn=Yt[0],er=(0,m.CR)(this.grid,2),Jn=er[0],kr=er[1],fr=(0,m.CR)([Ke-Rn,gt],2),wr=fr[0],ei=fr[1],_n=(0,m.CR)([0,0,0,0,0,0,0,0],8),jn=_n[0],Hr=_n[1],Pr=_n[2],$i=_n[3],Zi=_n[4],Xi=_n[5],Ei=_n[6],ms=_n[7];return this.pageViews.children.map(function(_i,Es){var ua,Hn,Pt,Gt,Bt=_i.getBBox(),yn=Bt.width,Ln=Bt.height,gr=Ei===0?0:yt,Rr=Ei+gr+yn;if(Rr<=wr&&Kr(Zi,function(Ii){return Ii0?(this.navigatorShape=[55,0],Re.call(this)):Ke},enumerable:!1,configurable:!0}),Qe.prototype.ifHorizontal=function(Re,Ke){var gt=this.attributes.orientation;return $t(gt,Re,Ke)},Qe.prototype.flattenPage=function(Re){Re.querySelectorAll(rr.item.class).forEach(function(Ke){Re.appendChild(Ke)}),Re.querySelectorAll(rr.page.class).forEach(function(Ke){var gt=Re.removeChild(Ke);gt.destroy()})},Qe.prototype.renderItems=function(Re){var Ke=this.attributes,gt=Ke.click,tn=Ke.mouseenter,yt=Ke.mouseleave,Yt=Ke.classNamePrefix;this.flattenPage(Re);var Rn=this.dispatchCustomEvent.bind(this),er=X(rr.item.name,de.item,Yt);(0,E.Ys)(Re).selectAll(rr.item.class).data(this.renderData,function(Jn){return Jn.id}).join(function(Jn){return Jn.append(function(kr){var fr=kr.style,wr=(0,m._T)(kr,["style"]);return new ar({style:fr},wr)}).attr("className",er).on("click",function(){gt==null||gt(this),Rn("itemClick",{item:this})}).on("pointerenter",function(){tn==null||tn(this),Rn("itemMouseenter",{item:this})}).on("pointerleave",function(){yt==null||yt(this),Rn("itemMouseleave",{item:this})})},function(Jn){return Jn.each(function(kr){var fr=kr.style;this.update(fr)})},function(Jn){return Jn.remove()})},Qe.prototype.relayoutNavigator=function(){var Re,Ke=this.attributes,gt=Ke.layout,tn=Ke.width,yt=((Re=this.pageViews.children[0])===null||Re===void 0?void 0:Re.getBBox().height)||0,Yt=(0,m.CR)(this.navigatorShape,2),Rn=Yt[0],er=Yt[1];this.navigator.update(gt==="grid"?{pageWidth:tn-Rn,pageHeight:yt-er}:{})},Qe.prototype.adjustLayout=function(){var Re=this,Ke=Object.entries(at(this.itemsLayout,"page")).map(function(tn){var yt=(0,m.CR)(tn,2),Yt=yt[0],Rn=yt[1];return{page:Yt,layouts:Rn}}),gt=(0,m.ev)([],(0,m.CR)(this.navigator.getContainer().children),!1);Ke.forEach(function(tn){var yt=tn.layouts,Yt=Re.pageViews.appendChild(new V.ZA({className:rr.page.name}));yt.forEach(function(Rn){var er=Rn.x,Jn=Rn.y,kr=Rn.index,fr=Rn.width,wr=Rn.height,ei=gt[kr];Yt.appendChild(ei),(0,ct.Z)(ei,"__layout__",Rn),ei.update({x:er,y:Jn,width:fr,height:wr})})}),this.relayoutNavigator()},Qe.prototype.renderNavigator=function(Re){var Ke=this.attributes,gt=Ke.orientation,tn=Ke.classNamePrefix,yt=(0,N.zs)(this.attributes,"nav"),Yt=(0,kt.n)({orientation:gt,classNamePrefix:tn},yt),Rn=this;return Re.selectAll(rr.navigator.class).data(["nav"]).join(function(er){return er.append(function(){return new sn({style:Yt})}).attr("className",rr.navigator.name).each(function(){Rn.navigator=this})},function(er){return er.each(function(){this.update(Yt)})},function(er){return er.remove()}),this.navigator},Qe.prototype.getBBox=function(){return this.navigator.getBBox()},Qe.prototype.render=function(Re,Ke){var gt=this.attributes.data;if(!(!gt||gt.length===0)){var tn=this.renderNavigator((0,E.Ys)(Ke));this.renderItems(tn.getContainer()),this.adjustLayout()}},Qe.prototype.dispatchCustomEvent=function(Re,Ke){var gt=new V.Aw(Re,{detail:Ke});this.dispatchEvent(gt)},Qe}(Z.w),Ie=(0,C.A)({markerGroup:"marker-group",marker:"marker",labelGroup:"label-group",label:"label"},"handle"),L={showLabel:!0,formatter:function(Oe){return Oe.toString()},markerSize:25,markerStroke:"#c5c5c5",markerFill:"#fff",markerLineWidth:1,labelFontSize:12,labelFill:"#c5c5c5",labelText:"",orientation:"vertical",spacing:0},Q=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(Re){return Oe.call(this,Re,L)||this}return Qe.prototype.render=function(Re,Ke){var gt=(0,E.Ys)(Ke).maybeAppendByClassName(Ie.markerGroup,"g");this.renderMarker(gt);var tn=(0,E.Ys)(Ke).maybeAppendByClassName(Ie.labelGroup,"g");this.renderLabel(tn)},Qe.prototype.renderMarker=function(Re){var Ke=this,gt=this.attributes,tn=gt.orientation,yt=gt.classNamePrefix,Yt=gt.markerSymbol,Rn=Yt===void 0?$t(tn,"horizontalHandle","verticalHandle"):Yt;(0,D.z)(!!Rn,Re,function(er){var Jn=(0,N.zs)(Ke.attributes,"marker"),kr=(0,m.pi)({symbol:Rn},Jn),fr=X(Ie.marker.name,de.handleMarker,yt);if(Ke.marker=er.maybeAppendByClassName(Ie.marker,function(){return new Tn({style:kr,className:fr})}).update(kr),yt){var wr=Ke.marker.node().querySelector(".marker");if(wr){var ei=wr.getAttribute("class")||"",_n=ei.split(" ")[0],jn=X(_n,de.handleMarker,yt);wr.setAttribute("class",jn)}}})},Qe.prototype.renderLabel=function(Re){var Ke=this,gt=this.attributes,tn=gt.showLabel,yt=gt.orientation,Yt=gt.spacing,Rn=Yt===void 0?0:Yt,er=gt.formatter,Jn=gt.classNamePrefix;(0,D.z)(tn,Re,function(kr){var fr,wr=(0,N.zs)(Ke.attributes,"label"),ei=wr.text,_n=(0,m._T)(wr,["text"]),jn=((fr=kr.select(Ie.marker.class))===null||fr===void 0?void 0:fr.node().getBBox())||{},Hr=jn.width,Pr=Hr===void 0?0:Hr,$i=jn.height,Zi=$i===void 0?0:$i,Xi=(0,m.CR)($t(yt,[0,Zi+Rn,"center","top"],[Pr+Rn,0,"start","middle"]),4),Ei=Xi[0],ms=Xi[1],_i=Xi[2],Es=Xi[3],ua=X(Ie.label.name,de.handleLabel,Jn);kr.maybeAppendByClassName(Ie.label,"text").attr("className",ua).styles((0,m.pi)((0,m.pi)({},_n),{x:Ei,y:ms,text:er(ei).toString(),textAlign:_i,textBaseline:Es}))})},Qe}(Z.w),w={showTitle:!0,padding:0,orientation:"horizontal",backgroundFill:"transparent",titleText:"",titleSpacing:4,titlePosition:"top-left",titleFill:"#2C3542",titleFontWeight:"bold",titleFontFamily:"sans-serif",titleFontSize:12},z=(0,kt.n)({},w,{}),ie=(0,kt.n)({},w,(0,N.dq)(L,"handle"),{color:["#d0e3fa","#acc7f6","#8daaf2","#6d8eea","#4d73cd","#325bb1","#5a3e75","#8c3c79","#e23455","#e7655b"],indicatorBackgroundFill:"#262626",indicatorLabelFill:"white",indicatorLabelFontSize:12,indicatorVisibility:"hidden",labelAlign:"value",labelDirection:"positive",labelSpacing:5,showHandle:!0,showIndicator:!0,showLabel:!0,slidable:!0,titleText:"",type:"continuous"}),ze=.01,Je=.5,At=(0,C.A)({title:"title",html:"html",titleGroup:"title-group",items:"items",itemsGroup:"items-group",contentGroup:"content-group",ribbonGroup:"ribbon-group",ribbon:"ribbon",handlesGroup:"handles-group",handle:"handle",startHandle:"start-handle",endHandle:"end-handle",labelGroup:"label-group",label:"label",indicator:"indicator"},"legend"),xt=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(){return Oe!==null&&Oe.apply(this,arguments)||this}return Qe.prototype.update=function(Re){this.attr(Re)},Qe}(V.k9),Sn=function(Oe){(0,m.ZT)(Qe,Oe);function Qe(Re){return Oe.call(this,Re,z)||this}return Qe.prototype.renderTitle=function(Re,Ke,gt){var tn=this.attributes,yt=tn.showTitle,Yt=tn.titleText,Rn=tn.classNamePrefix,er=(0,N.zs)(this.attributes,"title"),Jn=(0,m.CR)((0,N.Hm)(er),2),kr=Jn[0],fr=Jn[1];this.titleGroup=Re.maybeAppendByClassName(At.titleGroup,"g").styles(fr);var wr=(0,m.pi)((0,m.pi)({width:Ke,height:gt},kr),{text:yt?Yt:"",classNamePrefix:Rn});this.title=this.titleGroup.maybeAppendByClassName(At.title,function(){return new $e({style:wr})}).update(wr)},Qe.prototype.renderCustom=function(Re){var Ke=this.attributes.data,gt={innerHTML:this.attributes.render(Ke),pointerEvents:"auto"};Re.maybeAppendByClassName(At.html,function(){return new xt({className:At.html.name,style:gt})}).update(gt)},Qe.prototype.renderItems=function(Re,Ke){var gt=Ke.x,tn=Ke.y,yt=Ke.width,Yt=Ke.height,Rn=(0,N.zs)(this.attributes,"title",!0),er=(0,m.CR)((0,N.Hm)(Rn),2),Jn=er[0],kr=er[1],fr=(0,m.pi)((0,m.pi)({},Jn),{width:yt,height:Yt,x:0,y:0});this.itemsGroup=Re.maybeAppendByClassName(At.itemsGroup,"g").styles((0,m.pi)((0,m.pi)({},kr),{transform:"translate(".concat(gt,", ").concat(tn,")")}));var wr=this;this.itemsGroup.selectAll(At.items.class).data(["items"]).join(function(ei){return ei.append(function(){return new si({style:fr})}).attr("className",At.items.name).each(function(){wr.items=(0,E.Ys)(this)})},function(ei){return ei.update(fr)},function(ei){return ei.remove()})},Qe.prototype.adjustLayout=function(){var Re=this.attributes.showTitle;if(Re){var Ke=this.title.node().getAvailableSpace(),gt=Ke.x,tn=Ke.y;this.itemsGroup.node().style.transform="translate(".concat(gt,", ").concat(tn,")")}},Object.defineProperty(Qe.prototype,"availableSpace",{get:function(){var Re=this.attributes,Ke=Re.showTitle,gt=Re.width,tn=Re.height;return Ke?this.title.node().getAvailableSpace():new F.b(0,0,gt,tn)},enumerable:!1,configurable:!0}),Qe.prototype.getBBox=function(){var Re,Ke,gt=(Re=this.title)===null||Re===void 0?void 0:Re.node(),tn=(Ke=this.items)===null||Ke===void 0?void 0:Ke.node();return!gt||!tn?Oe.prototype.getBBox.call(this):we(gt,tn)},Qe.prototype.render=function(Re,Ke){var gt=this.attributes,tn=gt.width,yt=gt.height,Yt=gt.x,Rn=Yt===void 0?0:Yt,er=gt.y,Jn=er===void 0?0:er,kr=gt.classNamePrefix,fr=gt.render,wr=(0,E.Ys)(Ke),ei=Ke.className||"legend-category";kr?Ke.attr("className","".concat(ei," ").concat(kr,"legend")):Ke.className||Ke.attr("className","legend-category"),Ke.style.transform="translate(".concat(Rn,", ").concat(Jn,")"),fr?this.renderCustom(wr):(this.renderTitle(wr,tn,yt),this.renderItems(wr,this.availableSpace),this.adjustLayout())},Qe}(Z.w)},91498:function(Be,Me,b){"use strict";b.d(Me,{s:function(){return Sa}});var m=b(80813),Z=b(70208),V=b(97304),N=b(66623),E=b(99247),F=b(17911),C=b(88839),P=null,H=null;function D(oe){return oe instanceof Date?oe:new Date(oe)}function X(oe){for(var re=__read(oe,2),Y=re[0],J=re[1],fe=P.indexOf(Y),Te=P.indexOf(J),De="",Le=fe;Le<=Te;Le+=1)if(De+=H[Le],Le2&&(Xe=":"),De+=Xe}return De}function j(oe,re){var Y={YYYY:oe.getFullYear(),MM:oe.getMonth()+1,DD:oe.getDate(),HH:oe.getHours(),mm:oe.getMinutes(),ss:oe.getSeconds()},J=re;return Object.keys(Y).forEach(function(fe){var Te=Y[fe];J=J.replace(fe,fe==="YYYY"?"".concat(Te):"".concat(Te).padStart(2,"0"))}),J}function de(oe,re){return D(oe).getTime()-D(re).getTime()}function he(oe,re){var Y=__read([D(oe),D(re)],2),J=Y[0],fe=Y[1];return J.getFullYear()!==fe.getFullYear()?"year":J.getMonth()!==fe.getMonth()?"month":J.getDay()!==fe.getDay()?"day":J.getHours()!==fe.getHours()?"hour":J.getMinutes()!==fe.getMinutes()?"minute":"second"}function we(oe,re){var Y=new Date(oe),J={year:function(fe){fe.setMonth(0),fe.setHours(0,0,0,0)},month:function(fe){fe.setDate(1),fe.setHours(0,0,0,0)},day:function(fe){return fe.setHours(0,0,0,0)},hour:function(fe){return fe.setMinutes(0,0,0)},minute:function(fe){return fe.setSeconds(0,0)},second:function(fe){return fe.setMilliseconds(0)}};return J[re](Y),j(Y,X(["year",re]))}var ve=b(86314),Ee=b(67756);function $e(oe,re){if(oe.length<=re)return oe;for(var Y=Math.floor(oe.length/re),J=[],fe=0;fe180?1:0,Ds=oe>re?0:1,Ba=!1;return Ba?"M".concat(Y,",").concat(J,",L").concat($n,",").concat(Er,",A").concat(Le,",").concat(Xe,",0,").concat(fs,",").concat(Ds,",").concat(ti,",").concat(jr,",L").concat(Y,",").concat(J):"M".concat($n,",").concat(Er,",A").concat(Le,",").concat(Xe,",0,").concat(fs,",").concat(Ds,",").concat(ti,",").concat(jr)}function yi(oe){var re=oe.attributes,Y=re.startAngle,J=re.endAngle,fe=re.center,Te=re.radius;return(0,m.ev)((0,m.ev)([Y,J],(0,m.CR)(fe),!1),[Te],!1)}function qr(oe,re,Y,J){var fe=re.startAngle,Te=re.endAngle,De=re.center,Le=re.radius,Xe=re.classNamePrefix;return oe.selectAll(Lt.line.class).data([{d:Mi.apply(void 0,(0,m.ev)((0,m.ev)([fe,Te],(0,m.CR)(De),!1),[Le],!1))}],function(mt,Kt){return Kt}).join(function(mt){var Kt=mt.append("path").attr("className",Lt.line.name).styles(re).styles({d:function(nn){return nn.d}});return cn(Kt,Lt.line,at.line,Xe),Kt},function(mt){return mt.transition(function(){var Kt=this,nn=Fn(this,yi(this),(0,m.ev)((0,m.ev)([fe,Te],(0,m.CR)(De),!1),[Le],!1),J.update);if(nn){var gn=function(){var Nn=(0,sn.Z)(Kt.attributes,"__keyframe_data__");Kt.style.d=Mi.apply(void 0,(0,m.ev)([],(0,m.CR)(Nn),!1))};nn.onframe=gn,nn.onfinish=gn}return nn}).styles(re)},function(mt){return mt.remove()}).styles(Y).transitions()}function es(oe,re){var Y=re.truncRange,J=re.truncShape,fe=re.lineExtension}function Ci(oe,re,Y){Y===void 0&&(Y=[0,0]);var J=(0,m.CR)([oe,re,Y],3),fe=(0,m.CR)(J[0],2),Te=fe[0],De=fe[1],Le=(0,m.CR)(J[1],2),Xe=Le[0],mt=Le[1],Kt=(0,m.CR)(J[2],2),nn=Kt[0],gn=Kt[1],Nn=(0,m.CR)([Xe-Te,mt-De],2),$n=Nn[0],Er=Nn[1],mr=Math.sqrt(Math.pow($n,2)+Math.pow(Er,2)),ti=(0,m.CR)([-nn/mr,gn/mr],2),jr=ti[0],ui=ti[1];return[jr*$n,jr*Er,ui*$n,ui*Er]}function En(oe){var re=(0,m.CR)(oe,2),Y=(0,m.CR)(re[0],2),J=Y[0],fe=Y[1],Te=(0,m.CR)(re[1],2),De=Te[0],Le=Te[1];return{x1:J,y1:fe,x2:De,y2:Le}}function rn(oe,re,Y,J){var fe=re.showTrunc,Te=re.startPos,De=re.endPos,Le=re.truncRange,Xe=re.lineExtension,mt=re.classNamePrefix,Kt=(0,m.CR)([Te,De],2),nn=(0,m.CR)(Kt[0],2),gn=nn[0],Nn=nn[1],$n=(0,m.CR)(Kt[1],2),Er=$n[0],mr=$n[1],ti=(0,m.CR)(Xe?Ci(Te,De,Xe):new Array(4).fill(0),4),jr=ti[0],ui=ti[1],gi=ti[2],oi=ti[3],ts=function(Ya){return oe.selectAll(Lt.line.class).data(Ya,function(pa,al){return al}).join(function(pa){var al=pa.append("line").styles(Y).transition(function(qa){return(0,ve.eR)(this,En(qa.line),!1)});return al.attr("className",function(qa){if(!mt)return"".concat(Lt.line.name," ").concat(qa.className);var Ua=Vt(Lt.line.name,at.line,mt);if(qa.className===Lt.lineFirst.name){var dl=Vt(Lt.lineFirst.name,at.lineFirst,mt);return"".concat(Ua," ").concat(dl)}if(qa.className===Lt.lineSecond.name){var dl=Vt(Lt.lineSecond.name,at.lineSecond,mt);return"".concat(Ua," ").concat(dl)}return Ua}),al},function(pa){return pa.styles(Y).transition(function(al){var qa=al.line;return(0,ve.eR)(this,En(qa),J.update)})},function(pa){return pa.remove()}).transitions()};if(!fe||!Le)return ts([{line:[[gn+jr,Nn+ui],[Er+gi,mr+oi]],className:Lt.line.name}]);var fs=(0,m.CR)(Le,2),Ds=fs[0],Ba=fs[1],Ka=Er-gn,xo=mr-Nn,aa=(0,m.CR)([gn+Ka*Ds,Nn+xo*Ds],2),di=aa[0],Ma=aa[1],Rs=(0,m.CR)([gn+Ka*Ba,Nn+xo*Ba],2),lo=Rs[0],Jo=Rs[1],zs=ts([{line:[[gn+jr,Nn+ui],[di,Ma]],className:Lt.lineFirst.name},{line:[[lo,Jo],[Er+gi,mr+oi]],className:Lt.lineSecond.name}]);return es(oe,re),zs}function Xt(oe,re,Y,J){var fe=Y.showArrow,Te=Y.showTrunc,De=Y.lineArrow,Le=Y.lineArrowOffset,Xe=Y.lineArrowSize,mt;if(re==="arc"?mt=oe.select(Lt.line.class):Te?mt=oe.select(Lt.lineSecond.class):mt=oe.select(Lt.line.class),!fe||!De||Y.type==="arc"&&Ki(Y.startAngle,Y.endAngle)){var Kt=mt.node();Kt&&(Kt.style.markerEnd=void 0);return}var nn=(0,Tn.S)(De);nn.attr(J),(0,lr.b)(nn,Xe,!0),mt.style("markerEnd",nn).style("markerEndOffset",-Le)}function st(oe,re,Y){var J=re.type,fe,Te=(0,C.zs)(re,"line");return J==="linear"?fe=rn(oe,re,je(Te,"arrow"),Y):fe=qr(oe,re,je(Te,"arrow"),Y),Xt(oe,J,re,Te),fe}function dt(oe,re){return _t(oe,re.gridDirection,re)}function Wt(oe){var re=oe.type,Y=oe.gridCenter;return re==="linear"?Y:Y||oe.center}function bn(oe,re){var Y=re.gridLength;return oe.map(function(J,fe){var Te=J.value,De=(0,m.CR)(Sr(Te,re),2),Le=De[0],Xe=De[1],mt=(0,m.CR)(Xn(dt(Te,re),Y),2),Kt=mt[0],nn=mt[1];return{id:fe,points:[[Le,Xe],[Le+Kt,Xe+nn]]}})}function Jt(oe,re){var Y=re.gridControlAngles,J=Wt(re);if(!J)throw new Error("grid center is not provide");if(oe.length<2)throw new Error("Invalid grid data");if(!Y||Y.length===0)throw new Error("Invalid gridControlAngles");var fe=(0,m.CR)(J,2),Te=fe[0],De=fe[1];return oe.map(function(Le,Xe){var mt=Le.value,Kt=(0,m.CR)(Sr(mt,re),2),nn=Kt[0],gn=Kt[1],Nn=(0,m.CR)([nn-Te,gn-De],2),$n=Nn[0],Er=Nn[1],mr=[];return Y.forEach(function(ti){var jr=Vr(ti),ui=(0,m.CR)([Math.cos(jr),Math.sin(jr)],2),gi=ui[0],oi=ui[1],ts=$n*gi-Er*oi+Te,fs=$n*oi+Er*gi+De;mr.push([ts,fs])}),{points:mr,id:Xe}})}function ar(oe,re,Y,J){var fe=Y.classNamePrefix,Te=(0,C.zs)(Y,"grid"),De=Te.type,Le=Te.areaFill,Xe=Wt(Y),mt=wt(re,Y.gridFilter),Kt=De==="segment"?bn(mt,Y):Jt(mt,Y),nn=(0,m.pi)((0,m.pi)({},Te),{center:Xe,areaFill:(0,Wn.Z)(Le)?mt.map(function(gn,Nn){return(0,ln.S)(Le,[gn,Nn,mt])}):Le,animate:J,data:Kt});return oe.selectAll(Lt.grid.class).data([1]).join(function(gn){var Nn=gn.append(function(){return new Ct({style:nn})}).attr("className",Lt.grid.name);return cn(Nn,Lt.grid,at.grid,fe),Nn},function(gn){return gn.transition(function(){return this.update(nn)})},function(gn){return gn.remove()}).transitions()}function rr(oe,re,Y,J,fe){return J===void 0&&(J=!0),fe===void 0&&(fe=!1),J&&oe===re||fe&&oe===Y?!0:oe>re&&oe0,jr=J-Xe,ui=fe-mt,gi=gn*ui-Nn*jr;if(gi<0===ti)return!1;var oi=$n*ui-Er*jr;return!(oi<0===ti||gi>mr===ti||oi>mr===ti)}function yt(oe,re){var Y=[[oe[0],oe[1],oe[2],oe[3]],[oe[2],oe[3],oe[4],oe[5]],[oe[4],oe[5],oe[6],oe[7]],[oe[6],oe[7],oe[0],oe[1]]];return Y.some(function(J){return tn(re,J)})}var Yt={lineToLine:tn,intersectBoxLine:yt,getBounds:xt};function Rn(oe,re,Y){var J,fe,Te=xt(oe,Y).flat(1),De=xt(re,Y).flat(1),Le=[[Te[0],Te[1],Te[2],Te[3]],[Te[0],Te[1],Te[4],Te[5]],[Te[4],Te[5],Te[6],Te[7]],[Te[2],Te[3],Te[6],Te[7]]];try{for(var Xe=(0,m.XA)(Le),mt=Xe.next();!mt.done;mt=Xe.next()){var Kt=mt.value;if(yt(De,Kt))return!0}}catch(nn){J={error:nn}}finally{try{mt&&!mt.done&&(fe=Xe.return)&&fe.call(Xe)}finally{if(J)throw J.error}}return!1}function er(oe,re){var Y=oe.type,J=oe.labelDirection,fe=oe.crossSize;if(!fe)return!1;if(Y==="arc"){var Te=oe.center,De=oe.radius,Le=(0,m.CR)(Te,2),Xe=Le[0],mt=Le[1],Kt=J==="negative"?0:fe,nn=-De-Kt,gn=De+Kt,Nn=(0,m.CR)((0,Je.j)(re),4),$n=Nn[0],Er=Nn[1],mr=Nn[2],ti=Nn[3];return new At(Xe+nn-ti,mt+nn-$n,Xe+gn+Er,mt+gn+mr)}var jr=(0,m.CR)(oe.startPos,2),ui=jr[0],gi=jr[1],oi=(0,m.CR)(oe.endPos,2),ts=oi[0],fs=oi[1],Ds=(0,m.CR)(vr(oe)?[-re,0,re,0]:[0,re,0,-re],4),Ba=Ds[0],Ka=Ds[1],xo=Ds[2],aa=Ds[3],di=$t(0,oe),Ma=Xn(di,fe),Rs=new At(ui,gi,ts,fs);return Rs.x1+=aa,Rs.y1+=Ba,Rs.x2+=Ka+Ma[0],Rs.y2+=xo+Ma[1],Rs}function Jn(oe,re,Y){var J,fe,Te=re.crossPadding,De=new Set,Le=null,Xe=er(re,Te),mt=function($n){return Xe?gt(Xe,$n):!0},Kt=function($n,Er){return!$n||!$n.firstChild?!0:!Rn($n.firstChild,Er.firstChild,(0,Je.j)(Y))};try{for(var nn=(0,m.XA)(oe),gn=nn.next();!gn.done;gn=nn.next()){var Nn=gn.value;mt(Nn)?!Le||Kt(Le,Nn)?Le=Nn:(De.add(Le),De.add(Nn)):De.add(Nn)}}catch($n){J={error:$n}}finally{try{gn&&!gn.done&&(fe=nn.return)&&fe.call(nn)}finally{if(J)throw J.error}}return Array.from(De)}function kr(oe,re){return re===void 0&&(re={}),(0,ze.Z)(oe)?0:typeof oe=="number"?oe:Math.floor((0,L.Ux)(oe,re))}function fr(oe,re,Y,J){if(!(oe.length<=0)){var fe=re.suffix,Te=fe===void 0?"...":fe,De=re.minLength,Le=re.maxLength,Xe=Le===void 0?1/0:Le,mt=re.step,Kt=mt===void 0?" ":mt,nn=re.margin,gn=nn===void 0?[0,0,0,0]:nn,Nn=(0,L.qT)(J.getTextShape(oe[0])),$n=kr(Kt,Nn),Er=De?kr(De,Nn):$n,mr=kr(Xe,Nn);((0,ze.Z)(mr)||mr===1/0)&&(mr=Math.max.apply(null,oe.map(function(Ma){return Ma.getBBox().width})));for(var ti=oe.slice(),jr=(0,m.CR)(gn,4),ui=jr[0],gi=ui===void 0?0:ui,oi=jr[1],ts=oi===void 0?0:oi,fs=jr[2],Ds=fs===void 0?gi:fs,Ba=jr[3],Ka=Ba===void 0?ts:Ba,xo=function(Ma){if(ti.forEach(function(Rs){J.ellipsis(J.getTextShape(Rs),Ma,Te)}),ti=Jn(oe,Y,gn),ti.length<1)return{value:void 0}},aa=mr;aa>Er+$n;aa-=$n){var di=xo(aa);if(typeof di=="object")return di.value}}}var wr=function(oe){return oe!==void 0&&oe!=null&&!Number.isNaN(oe)},ei=b(2080),_n={parity:function(oe,re){var Y=re.seq,J=Y===void 0?2:Y;return oe.filter(function(fe,Te){return Te%J?((0,si.Cp)(fe),!1):!0})}},jn=function(oe){return oe.filter(wr)};function Hr(oe,re,Y,J){var fe=oe.length,Te=re.keepHeader,De=re.keepTail;if(!(fe<=1||fe===2&&Te&&De)){var Le=_n.parity,Xe=function(ui){return ui.forEach(J.show),ui},mt=2,Kt=oe.slice(),nn=oe.slice(),gn=Math.min.apply(Math,(0,m.ev)([1],(0,m.CR)(oe.map(function(ui){return ui.getBBox().width})),!1));if(Y.type==="linear"&&(Jr(Y)||vr(Y))){var Nn=(0,ei._v)(oe[0]).left,$n=(0,ei._v)(oe[fe-1]).right,Er=Math.abs($n-Nn)||1;mt=Math.max(Math.floor(fe*gn/Er),mt)}var mr,ti;for(Te&&(mr=Kt.splice(0,1)[0]),De&&(ti=Kt.splice(-1,1)[0],Kt.reverse()),Xe(Kt);mtLe)){if(Y.type==="linear"&&Jr(Y)){if(ti(Le),Er())return}else for(var jr=$n;jr<=Le;jr++)if(ti(jr),Er())return;mt&&ti(Nn)}}var Xi=new Map([["hide",Hr],["rotate",Pr],["ellipsis",fr],["wrap",Zi]]);function Ei(oe,re,Y){return re.labelOverlap.length<1?!1:Y==="hide"?!(0,ie.X)(oe[0]):Y==="rotate"?!oe.some(function(J){var fe;return!!(!((fe=J.attr("transform"))===null||fe===void 0)&&fe.includes("rotate"))}):Y==="ellipsis"||Y==="wrap"?oe.filter(function(J){return J.querySelector("text")}).length>=1:!0}function ms(oe,re,Y,J){var fe=re.labelOverlap,Te=fe===void 0?[]:fe;Te.length&&Te.forEach(function(De){var Le=De.type,Xe=Xi.get(Le);Ei(oe,re,Le)&&(Xe==null||Xe(oe,De,re,J,Y))})}function _i(){for(var oe=[],re=0;regn[0]&&Ds0&&Number.isFinite(oe)?re:Y},$h=function(oe,re){return oe*re},Uh=function(oe,re){return oe/2+(re||0)/2},Ku=function(oe){return oe};class sc{constructor(re){this.options=(0,ct.Z)({},this.getDefaultOptions()),this.update(re)}getOptions(){return this.options}update(re={}){this.options=(0,ct.Z)({},this.options,re),this.rescale(re)}rescale(re){}}function pu(oe,re){return re-oe?Y=>(Y-oe)/(re-oe):Y=>.5}function ou(oe,...re){return re.reduce((Y,J)=>fe=>Y(J(fe)),oe)}function Ad(oe,re,Y,J,fe){let Te=Y||0,De=J||oe.length;const Le=fe||(Xe=>Xe);for(;Tere?De=Xe:Te=Xe+1}return Te}var hf=b(75196),Xo=b.n(hf);function fh(oe,re,Y){let J=Y;return J<0&&(J+=1),J>1&&(J-=1),J<1/6?oe+(re-oe)*6*J:J<1/2?re:J<2/3?oe+(re-oe)*(2/3-J)*6:oe}function Qf(oe){const re=oe[0]/360,Y=oe[1]/100,J=oe[2]/100,fe=oe[3];if(Y===0)return[J*255,J*255,J*255,fe];const Te=J<.5?J*(1+Y):J+Y-J*Y,De=2*J-Te,Le=fh(De,Te,re+1/3),Xe=fh(De,Te,re),mt=fh(De,Te,re-1/3);return[Le*255,Xe*255,mt*255,fe]}function pd(oe){const re=Xo().get(oe);if(!re)return null;const{model:Y,value:J}=re;return Y==="rgb"?J:Y==="hsl"?Qf(J):null}const Ah=(oe,re)=>Y=>oe*(1-Y)+re*Y,Vc=(oe,re)=>{const Y=pd(oe),J=pd(re);return Y===null||J===null?Y?()=>oe:()=>re:fe=>{const Te=new Array(4);for(let Kt=0;Kt<4;Kt+=1){const nn=Y[Kt],gn=J[Kt];Te[Kt]=nn*(1-fe)+gn*fe}const[De,Le,Xe,mt]=Te;return`rgba(${Math.round(De)}, ${Math.round(Le)}, ${Math.round(Xe)}, ${mt})`}},jo=(oe,re)=>typeof oe=="number"&&typeof re=="number"?Ah(oe,re):typeof oe=="string"&&typeof re=="string"?Vc(oe,re):()=>oe,gd=(oe,re)=>{const Y=Ah(oe,re);return J=>Math.round(Y(J))};var lu=b(49527);function gu(oe){return oe===null}function oo(oe){return!(0,lu.Z)(oe)&&!gu(oe)&&!Number.isNaN(oe)}const Ic=Math.sqrt(50),jc=Math.sqrt(10),ph=Math.sqrt(2);function Lo(oe,re,Y){const J=(re-oe)/Math.max(0,Y),fe=Math.floor(Math.log(J)/Math.LN10),Te=J/Bp(10,fe);return fe>=0?(Te>=Ic?10:Te>=jc?5:Te>=ph?2:1)*Bp(10,fe):-Bp(10,-fe)/(Te>=Ic?10:Te>=jc?5:Te>=ph?2:1)}function Ji(oe,re,Y){const J=Math.abs(re-oe)/Math.max(0,Y);let fe=Bp(10,Math.floor(Math.log(J)/Math.LN10));const Te=J/fe;return Te>=Ic?fe*=10:Te>=jc?fe*=5:Te>=ph&&(fe*=2),re{const J=[oe,re];let fe=0,Te=J.length-1,De=J[fe],Le=J[Te],Xe;return Le0?(De=Math.floor(De/Xe)*Xe,Le=Math.ceil(Le/Xe)*Xe,Xe=Lo(De,Le,Y)):Xe<0&&(De=Math.ceil(De*Xe)/Xe,Le=Math.floor(Le*Xe)/Xe,Xe=Lo(De,Le,Y)),Xe>0?(J[fe]=Math.floor(De/Xe)*Xe,J[Te]=Math.ceil(Le/Xe)*Xe):Xe<0&&(J[fe]=Math.ceil(De*Xe)/Xe,J[Te]=Math.floor(Le*Xe)/Xe),J};function gh(oe,re){const Y=rere?oe:re;return fe=>Math.min(Math.max(Y,fe),J)}const mh=(oe,re,Y)=>{const[J,fe]=oe,[Te,De]=re;let Le,Xe;return J{const J=Math.min(oe.length,re.length)-1,fe=new Array(J),Te=new Array(J),De=oe[0]>oe[J],Le=De?[...oe].reverse():oe,Xe=De?[...re].reverse():re;for(let mt=0;mt{const Kt=Ad(oe,mt,1,J)-1,nn=fe[Kt],gn=Te[Kt];return ou(gn,nn)(mt)}},vh=(oe,re,Y,J)=>(Math.min(oe.length,re.length)>2?np:mh)(oe,re,J?gd:Y);class Cu extends sc{getDefaultOptions(){return{domain:[0,1],range:[0,1],nice:!1,clamp:!1,round:!1,interpolate:Ah,tickCount:5}}map(re){return oo(re)?this.output(re):this.options.unknown}invert(re){return oo(re)?this.input(re):this.options.unknown}nice(){if(!this.options.nice)return;const[re,Y,J,...fe]=this.getTickMethodOptions();this.options.domain=this.chooseNice()(re,Y,J,...fe)}getTicks(){const{tickMethod:re}=this.options,[Y,J,fe,...Te]=this.getTickMethodOptions();return re(Y,J,fe,...Te)}getTickMethodOptions(){const{domain:re,tickCount:Y}=this.options,J=re[0],fe=re[re.length-1];return[J,fe,Y]}chooseNice(){return $u}rescale(){this.nice();const[re,Y]=this.chooseTransforms();this.composeOutput(re,this.chooseClamp(re)),this.composeInput(re,Y,this.chooseClamp(Y))}chooseClamp(re){const{clamp:Y,range:J}=this.options,fe=this.options.domain.map(re),Te=Math.min(fe.length,J.length);return Y?gh(fe[0],fe[Te-1]):Ku}composeOutput(re,Y){const{domain:J,range:fe,round:Te,interpolate:De}=this.options,Le=vh(J.map(re),fe,De,Te);this.output=ou(Le,Y,re)}composeInput(re,Y,J){const{domain:fe,range:Te}=this.options,De=vh(Te,fe.map(re),Ah);this.input=ou(Y,J,De)}}const zc=(oe,re,Y)=>{let J,fe,Te=oe,De=re;if(Te===De&&Y>0)return[Te];let Le=Lo(Te,De,Y);if(Le===0||!Number.isFinite(Le))return[];if(Le>0){Te=Math.ceil(Te/Le),De=Math.floor(De/Le),fe=new Array(J=Math.ceil(De-Te+1));for(let Xe=0;Xe`${re}`:typeof oe=="object"?re=>JSON.stringify(re):re=>re}class Oo extends sc{getDefaultOptions(){return{domain:[],range:[],unknown:To}}constructor(re){super(re)}map(re){return this.domainIndexMap.size===0&&ml(this.domainIndexMap,this.getDomain(),this.domainKey),Xu({value:this.domainKey(re),mapper:this.domainIndexMap,from:this.getDomain(),to:this.getRange(),notFoundReturn:this.options.unknown})}invert(re){return this.rangeIndexMap.size===0&&ml(this.rangeIndexMap,this.getRange(),this.rangeKey),Xu({value:this.rangeKey(re),mapper:this.rangeIndexMap,from:this.getRange(),to:this.getDomain(),notFoundReturn:this.options.unknown})}rescale(re){const[Y]=this.options.domain,[J]=this.options.range;if(this.domainKey=mu(Y),this.rangeKey=mu(J),!this.rangeIndexMap){this.rangeIndexMap=new Map,this.domainIndexMap=new Map;return}(!re||re.range)&&this.rangeIndexMap.clear(),(!re||re.domain||re.compare)&&(this.domainIndexMap.clear(),this.sortedDomain=void 0)}clone(){return new Oo(this.options)}getRange(){return this.options.range}getDomain(){if(this.sortedDomain)return this.sortedDomain;const{domain:re,compare:Y}=this.options;return this.sortedDomain=Y?[...re].sort(Y):re,this.sortedDomain}}function Bo(oe){const re=Math.min(...oe);return oe.map(Y=>Y/re)}function _o(oe,re){const Y=oe.length,J=re-Y;return J>0?[...oe,...new Array(J).fill(1)]:J<0?oe.slice(0,re):oe}function na(oe){return Math.round(oe*1e12)/1e12}function Wa(oe){const{domain:re,range:Y,paddingOuter:J,paddingInner:fe,flex:Te,round:De,align:Le}=oe,Xe=re.length,mt=_o(Te,Xe),[Kt,nn]=Y,gn=nn-Kt,Nn=2/Xe*J+1-1/Xe*fe,$n=gn/Nn,Er=$n*fe/Xe,mr=$n-Xe*Er,ti=Bo(mt),jr=ti.reduce((aa,di)=>aa+di),ui=mr/jr,gi=new gl(re.map((aa,di)=>{const Ma=ti[di]*ui;return[aa,De?Math.floor(Ma):Ma]})),oi=new gl(re.map((aa,di)=>{const Rs=ti[di]*ui+Er;return[aa,De?Math.floor(Rs):Rs]})),ts=Array.from(oi.values()).reduce((aa,di)=>aa+di),Ds=(gn-(ts-ts/Xe*fe))*Le,Ba=Kt+Ds;let Ka=De?Math.round(Ba):Ba;const xo=new Array(Xe);for(let aa=0;aagn+ui*Kt);return{valueStep:Kt,valueBandWidth:nn,adjustedRange:ti}}class Yo extends Oo{getDefaultOptions(){return{domain:[],range:[0,1],align:.5,round:!1,paddingInner:0,paddingOuter:0,padding:0,unknown:To,flex:[]}}constructor(re){super(re)}clone(){return new Yo(this.options)}getStep(re){return this.valueStep===void 0?1:typeof this.valueStep=="number"?this.valueStep:re===void 0?Array.from(this.valueStep.values())[0]:this.valueStep.get(re)}getBandWidth(re){return this.valueBandWidth===void 0?1:typeof this.valueBandWidth=="number"?this.valueBandWidth:re===void 0?Array.from(this.valueBandWidth.values())[0]:this.valueBandWidth.get(re)}getRange(){return this.adjustedRange}getPaddingInner(){const{padding:re,paddingInner:Y}=this.options;return re>0?re:Y}getPaddingOuter(){const{padding:re,paddingOuter:Y}=this.options;return re>0?re:Y}rescale(){super.rescale();const{align:re,domain:Y,range:J,round:fe,flex:Te}=this.options,{adjustedRange:De,valueBandWidth:Le,valueStep:Xe}=yh({align:re,range:J,round:fe,flex:Te,paddingInner:this.getPaddingInner(),paddingOuter:this.getPaddingOuter(),domain:Y});this.valueStep=Xe,this.valueBandWidth=Le,this.adjustedRange=De}}var Tu=b(37547),uu=b(1933),wc=b(39934),ac=function(oe){(0,m.ZT)(re,oe);function re(Y){var J=this,fe=Y.style,Te=(0,m._T)(Y,["style"]);return J=oe.call(this,(0,ct.Z)({},{type:"column"},(0,m.pi)({style:fe},Te)))||this,J.columnsGroup=new N.ZA({name:"columns"}),J.appendChild(J.columnsGroup),J.render(),J}return re.prototype.render=function(){var Y=this.attributes,J=Y.columns,fe=Y.x,Te=Y.y;this.columnsGroup.style.transform="translate(".concat(fe,", ").concat(Te,")"),(0,Fe.Ys)(this.columnsGroup).selectAll(".column").data(J.flat()).join(function(De){return De.append("rect").attr("className","column").each(function(Le){this.attr(Le)})},function(De){return De.each(function(Le){this.attr(Le)})},function(De){return De.remove()})},re.prototype.update=function(Y){this.attr((0,E.n)({},this.attributes,Y)),this.render()},re.prototype.clear=function(){this.removeChildren()},re}(N.s$),Lr=function(oe){(0,m.ZT)(re,oe);function re(Y){var J=this,fe=Y.style,Te=(0,m._T)(Y,["style"]);return J=oe.call(this,(0,ct.Z)({},{type:"lines"},(0,m.pi)({style:fe},Te)))||this,J.linesGroup=J.appendChild(new N.ZA),J.areasGroup=J.appendChild(new N.ZA),J.render(),J}return re.prototype.render=function(){var Y=this.attributes,J=Y.lines,fe=Y.areas,Te=Y.x,De=Y.y;this.style.transform="translate(".concat(Te,", ").concat(De,")"),J&&this.renderLines(J),fe&&this.renderAreas(fe)},re.prototype.clear=function(){this.linesGroup.removeChildren(),this.areasGroup.removeChildren()},re.prototype.update=function(Y){this.attr((0,E.n)({},this.attributes,Y)),this.render()},re.prototype.renderLines=function(Y){(0,Fe.Ys)(this.linesGroup).selectAll(".line").data(Y).join(function(J){return J.append("path").attr("className","line").each(function(fe){this.attr(fe)})},function(J){return J.each(function(fe){this.attr(fe)})},function(J){return J.remove()})},re.prototype.renderAreas=function(Y){(0,Fe.Ys)(this.linesGroup).selectAll(".area").data(Y).join(function(J){return J.append("path").attr("className","area").each(function(fe){this.attr(fe)})},function(J){return J.each(function(fe){this.style(fe)})},function(J){return J.remove()})},re}(N.s$),Gr=b(62099);function ki(oe,re,Y,J){var fe,Te=[],De=!!J,Le,Xe,mt=[1/0,1/0],Kt=[-1/0,-1/0],nn,gn,Nn;if(De){fe=(0,m.CR)(J,2),mt=fe[0],Kt=fe[1];for(var $n=0,Er=oe.length;$nDe&&(Y=(0,m.CR)([De,Le],2),Le=Y[0],De=Y[1]),oe.map(function(Xe){var mt=Xe.map(function(Kt,nn){return[J.map(nn),(0,Z.Z)(fe.map(Kt),Le,De)]});return mt})}function qo(oe,re){re===void 0&&(re=!1);var Y=re?oe.length-1:0,J=oe.map(function(fe,Te){return(0,m.ev)([Te===Y?"M":"L"],(0,m.CR)(fe),!1)});return re?J.reverse():J}function Go(oe,re){if(re===void 0&&(re=!1),oe.length<=2)return qo(oe);for(var Y=[],J=oe.length,fe=0;fe=0;fe-=1){var Te=oe[fe],De=qo(Te),Le=void 0;if(fe===0)Le=Ou(De,re,Y);else{var Xe=oe[fe-1],mt=qo(Xe,!0);mt[0][0]="L",Le=(0,m.ev)((0,m.ev)((0,m.ev)([],(0,m.CR)(De),!1),(0,m.CR)(mt),!1),[["Z"]],!1)}J.push(Le)}return J}function Ca(oe,re,Y){for(var J=[],fe=oe.length-1;fe>=0;fe-=1){var Te=oe[fe],De=Go(Te),Le=void 0;if(fe===0)Le=Ou(De,re,Y);else{var Xe=oe[fe-1],mt=Go(Xe,!0),Kt=Te[0];mt[0][0]="L",Le=(0,m.ev)((0,m.ev)((0,m.ev)([],(0,m.CR)(De),!1),(0,m.CR)(mt),!1),[(0,m.ev)(["M"],(0,m.CR)(Kt),!1),["Z"]],!1)}J.push(Le)}return J}var Ud=b(2078),rp=function(oe,re){if((0,wc.Z)(oe)){for(var Y,J=1/0,fe=0;feJ&&(Y=Te,J=De)}return Y}};function wA(oe){return oe.length===0?[0,0]:[(0,Ud.Z)(rp(oe,function(re){return(0,Ud.Z)(re)||0})),(0,Xh.Z)(lc(oe,function(re){return(0,Xh.Z)(re)||0}))]}function Od(oe){for(var re=(0,Tu.Z)(oe),Y=re[0].length,J=(0,m.CR)([Array(Y).fill(0),Array(Y).fill(0)],2),fe=J[0],Te=J[1],De=0;De=0?(Le[Xe]+=fe[Xe],fe[Xe]=Le[Xe]):(Le[Xe]+=Te[Xe],Te[Xe]=Le[Xe]);return re}var jh=function(oe){(0,m.ZT)(re,oe);function re(Y){return oe.call(this,Y,{type:"line",x:0,y:0,width:200,height:20,isStack:!1,color:["#83daad","#edbf45","#d2cef9","#e290b3","#6f63f4"],smooth:!0,lineLineWidth:1,areaOpacity:0,isGroup:!1,columnLineWidth:1,columnStroke:"#fff",scale:1,spacing:0})||this}return Object.defineProperty(re.prototype,"rawData",{get:function(){var Y=this.attributes.data;if(!Y||(Y==null?void 0:Y.length)===0)return[[]];var J=(0,Tu.Z)(Y);return(0,uu.Z)(J[0])?[J]:J},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"data",{get:function(){return this.attributes.isStack?Od(this.rawData):this.rawData},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"scales",{get:function(){return this.createScales(this.data)},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"baseline",{get:function(){var Y=this.scales.y,J=(0,m.CR)(Y.getOptions().domain||[0,0],2),fe=J[0],Te=J[1];return Te<0?Y.map(Te):Y.map(fe<0?0:fe)},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"containerShape",{get:function(){var Y=this.attributes,J=Y.width,fe=Y.height;return{width:J,height:fe}},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"linesStyle",{get:function(){var Y=this,J=this.attributes,fe=J.type,Te=J.isStack,De=J.smooth;if(fe!=="line")throw new Error("linesStyle can only be used in line type");var Le=(0,C.zs)(this.attributes,"area"),Xe=(0,C.zs)(this.attributes,"line"),mt=this.containerShape.width,Kt=this.data;if(Kt[0].length===0)return{lines:[],areas:[]};var nn=this.scales,gn=nn.x,Nn=nn.y,$n=bl(Kt,{type:"line",x:gn,y:Nn}),Er=[];if(Le){var mr=this.baseline;Te?Er=De?Ca($n,mt,mr):oc($n,mt,mr):Er=Oh($n,De,mt,mr)}return{lines:$n.map(function(ti,jr){return(0,m.pi)({stroke:Y.getColor(jr),d:De?Go(ti):qo(ti)},Xe)}),areas:Er.map(function(ti,jr){return(0,m.pi)({d:ti,fill:Y.getColor(jr)},Le)})}},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"columnsStyle",{get:function(){var Y=this,J=(0,C.zs)(this.attributes,"column"),fe=this.attributes,Te=fe.isStack,De=fe.type,Le=fe.scale;if(De!=="column")throw new Error("columnsStyle can only be used in column type");var Xe=this.containerShape.height,mt=this.rawData;if(!mt)return{columns:[]};Te&&(mt=Od(mt));var Kt=this.createScales(mt),nn=Kt.x,gn=Kt.y,Nn=(0,m.CR)(wA(mt),2),$n=Nn[0],Er=Nn[1],mr=new Ul({domain:[0,Er-($n>0?0:$n)],range:[0,Xe*Le]}),ti=nn.getBandWidth(),jr=this.rawData;return{columns:mt.map(function(ui,gi){return ui.map(function(oi,ts){var fs=ti/mt.length,Ds=function(){return{x:nn.map(ts)+fs*gi,y:oi>=0?gn.map(oi):gn.map(0),width:fs,height:mr.map(Math.abs(oi))}},Ba=function(){return{x:nn.map(ts),y:gn.map(oi),width:ti,height:mr.map(jr[gi][ts])}};return(0,m.pi)((0,m.pi)({fill:Y.getColor(gi)},J),Te?Ba():Ds())})})}},enumerable:!1,configurable:!0}),re.prototype.render=function(Y,J){(0,Fe.OV)(J,".container","rect").attr("className","container").node();var fe=Y.type,Te=Y.x,De=Y.y,Le="spark".concat(fe),Xe=(0,m.pi)({x:Te,y:De},fe==="line"?this.linesStyle:this.columnsStyle);(0,Fe.Ys)(J).selectAll(".spark").data([fe]).join(function(mt){return mt.append(function(Kt){return Kt==="line"?new Lr({className:Le,style:Xe}):new ac({className:Le,style:Xe})}).attr("className","spark ".concat(Le))},function(mt){return mt.update(Xe)},function(mt){return mt.remove()})},re.prototype.getColor=function(Y){var J=this.attributes.color;return(0,wc.Z)(J)?J[Y%J.length]:(0,Wn.Z)(J)?J.call(null,Y):J},re.prototype.createScales=function(Y){var J,fe,Te=this.attributes,De=Te.type,Le=Te.scale,Xe=Te.range,mt=Xe===void 0?[]:Xe,Kt=Te.spacing,nn=this.containerShape,gn=nn.width,Nn=nn.height,$n=(0,m.CR)(wA(Y),2),Er=$n[0],mr=$n[1],ti=new Ul({domain:[(J=mt[0])!==null&&J!==void 0?J:Er,(fe=mt[1])!==null&&fe!==void 0?fe:mr],range:[Nn,Nn*(1-Le)]});return De==="line"?{type:De,x:new Ul({domain:[0,Y[0].length-1],range:[0,gn]}),y:ti}:{type:De,x:new Yo({domain:Y[0].map(function(jr,ui){return ui}),range:[0,gn],paddingInner:Kt,paddingOuter:Kt/2,align:.5}),y:ti}},re.tag="sparkline",re}(V.w),SA={fill:"#fff",lineWidth:1,radius:2,size:10,stroke:"#bfbfbf",strokeOpacity:1,zIndex:0},md={fill:"#000",fillOpacity:.45,fontSize:12,textAlign:"center",textBaseline:"middle",zIndex:1},vd={x:0,y:0,orientation:"horizontal",showLabel:!0,type:"start"},mo=(0,vt.A)({foreground:"foreground",handle:"handle",selection:"selection",sparkline:"sparkline",sparklineGroup:"sparkline-group",track:"track",brushArea:"brush-area"},"slider"),wa=(0,vt.A)({labelGroup:"label-group",label:"label",iconGroup:"icon-group",icon:"icon",iconRect:"icon-rect",iconLine:"icon-line"},"handle"),Dd=function(oe){(0,m.ZT)(re,oe);function re(){return oe!==null&&oe.apply(this,arguments)||this}return re.prototype.render=function(Y,J){var fe=Y.x,Te=Y.y,De=Y.size,Le=De===void 0?10:De,Xe=Y.radius,mt=Xe===void 0?Le/4:Xe,Kt=Y.orientation,nn=Y.classNamePrefix,gn=(0,m._T)(Y,["x","y","size","radius","orientation","classNamePrefix"]),Nn=Le,$n=Nn*2.4,Er=nn?"".concat(wa.iconRect.name," ").concat(nn,"handle-icon-rect"):wa.iconRect.name,mr=function(ts){return nn?"".concat(wa.iconLine,"-").concat(ts," ").concat(nn,"handle-icon-line"):"".concat(wa.iconLine,"-").concat(ts)},ti=(0,Fe.Ys)(J).maybeAppendByClassName(wa.iconRect,"rect").attr("className",Er).styles((0,m.pi)((0,m.pi)({},gn),{width:Nn,height:$n,radius:mt,x:fe-Nn/2,y:Te-$n/2,transformOrigin:"center"})),jr=fe+1/3*Nn-Nn/2,ui=fe+2/3*Nn-Nn/2,gi=Te+1/4*$n-$n/2,oi=Te+3/4*$n-$n/2;ti.maybeAppendByClassName("".concat(wa.iconLine,"-1"),"line").attr("className",mr(1)).styles((0,m.pi)({x1:jr,x2:jr,y1:gi,y2:oi},gn)),ti.maybeAppendByClassName("".concat(wa.iconLine,"-2"),"line").attr("className",mr(2)).styles((0,m.pi)({x1:ui,x2:ui,y1:gi,y2:oi},gn)),Kt==="vertical"&&(ti.node().style.transform="rotate(90)")},re}(V.w),qi=function(oe){(0,m.ZT)(re,oe);function re(Y){return oe.call(this,Y,vd)||this}return re.prototype.renderLabel=function(Y){var J=this,fe=this.attributes,Te=fe.x,De=fe.y,Le=fe.showLabel,Xe=(0,C.zs)(this.attributes,"label"),mt=Xe.x,Kt=mt===void 0?0:mt,nn=Xe.y,gn=nn===void 0?0:nn,Nn=Xe.transform,$n=Xe.transformOrigin,Er=(0,m._T)(Xe,["x","y","transform","transformOrigin"]),mr=(0,m.CR)((0,C.Hm)(Er,[]),2),ti=mr[0],jr=mr[1],ui=(0,Fe.Ys)(Y).maybeAppendByClassName(wa.labelGroup,"g").styles(jr),gi=(0,m.pi)((0,m.pi)({},md),ti),oi=gi.text,ts=(0,m._T)(gi,["text"]);(0,Ee.z)(!!Le,ui,function(fs){J.label=fs.maybeAppendByClassName(wa.label,"text").styles((0,m.pi)((0,m.pi)({},ts),{x:Te+Kt,y:De+gn,transform:Nn,transformOrigin:$n,text:"".concat(oi)})),J.label.on("mousedown",function(Ds){Ds.stopPropagation()}),J.label.on("touchstart",function(Ds){Ds.stopPropagation()})})},re.prototype.renderIcon=function(Y){var J=this.attributes,fe=J.x,Te=J.y,De=J.orientation,Le=J.type,Xe=J.classNamePrefix,mt=(0,m.pi)((0,m.pi)({x:fe,y:Te,orientation:De,classNamePrefix:Xe},SA),(0,C.zs)(this.attributes,"icon")),Kt=this.attributes.iconShape,nn=Kt===void 0?function(){return new Dd({style:mt})}:Kt,gn=(0,Fe.Ys)(Y).maybeAppendByClassName(wa.iconGroup,"g");gn.selectAll(wa.icon.class).data([nn]).join(function(Nn){return Nn.append(typeof nn=="string"?nn:function(){return nn(Le)}).attr("className",wa.icon.name)},function(Nn){return Nn.update(mt)},function(Nn){return Nn.remove()})},re.prototype.render=function(Y,J){this.renderIcon(J),this.renderLabel(J)},re}(V.w),Du=function(oe){(0,m.ZT)(re,oe);function re(Y){var J=oe.call(this,Y,(0,m.pi)((0,m.pi)((0,m.pi)({x:0,y:0,animate:{duration:100,fill:"both"},brushable:!0,formatter:function(fe){return fe.toString()},handleSpacing:2,orientation:"horizontal",padding:0,autoFitLabel:!0,scrollable:!0,selectionFill:"#5B8FF9",selectionFillOpacity:.45,selectionZIndex:2,showHandle:!0,showLabel:!0,slidable:!0,trackFill:"#416180",trackLength:200,trackOpacity:.05,trackSize:20,trackZIndex:-1,values:[0,1],type:"range",selectionType:"select",handleIconOffset:0},(0,C.dq)(vd,"handle")),(0,C.dq)(SA,"handleIcon")),(0,C.dq)(md,"handleLabel")))||this;return J.range=[0,1],J.onDragStart=function(fe){return function(Te){Te.stopPropagation(),J.target=fe,J.prevPos=J.getOrientVal(ao(Te));var De=J.availableSpace,Le=De.x,Xe=De.y,mt=J.getBBox(),Kt=mt.x,nn=mt.y;J.selectionStartPos=J.getRatio(J.prevPos-J.getOrientVal([Le,Xe])-J.getOrientVal([+Kt,+nn])),J.selectionWidth=0,document.addEventListener("pointermove",J.onDragging),document.addEventListener("pointerup",J.onDragEnd)}},J.onDragging=function(fe){var Te=J.attributes,De=Te.slidable,Le=Te.brushable,Xe=Te.type;fe.stopPropagation();var mt=J.getOrientVal(ao(fe)),Kt=mt-J.prevPos;if(Kt){var nn=J.getRatio(Kt);switch(J.target){case"start":De&&J.setValuesOffset(nn);break;case"end":De&&J.setValuesOffset(0,nn);break;case"selection":De&&J.setValuesOffset(nn,nn);break;case"track":if(!Le)return;J.selectionWidth+=nn,Xe==="range"?J.innerSetValues([J.selectionStartPos,J.selectionStartPos+J.selectionWidth].sort(),!0):J.innerSetValues([0,J.selectionStartPos+J.selectionWidth],!0);break;default:break}J.prevPos=mt}},J.onDragEnd=function(){document.removeEventListener("pointermove",J.onDragging),document.removeEventListener("pointermove",J.onDragging),document.removeEventListener("pointerup",J.onDragEnd),J.target="",J.updateHandlesPosition(!1)},J.onValueChange=function(fe){var Te=J.attributes,De=Te.onChange,Le=Te.type,Xe=Le==="range"?fe:fe[1],mt=Le==="range"?J.getValues():J.getValues()[1],Kt=new N.Aw("valuechange",{detail:{oldValue:Xe,value:mt}});J.dispatchEvent(Kt),De==null||De(mt)},J.selectionStartPos=0,J.selectionWidth=0,J.prevPos=0,J.target="",J}return Object.defineProperty(re.prototype,"values",{get:function(){return this.attributes.values},set:function(Y){this.attributes.values=this.clampValues(Y)},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"sparklineStyle",{get:function(){var Y=this.attributes.orientation;if(Y!=="horizontal")return null;var J=(0,C.zs)(this.attributes,"sparkline");return(0,m.pi)((0,m.pi)({zIndex:0},this.availableSpace),J)},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"shape",{get:function(){var Y=this.attributes,J=Y.trackLength,fe=Y.trackSize,Te=(0,m.CR)(this.getOrientVal([[J,fe],[fe,J]]),2),De=Te[0],Le=Te[1];return{width:De,height:Le}},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"availableSpace",{get:function(){var Y=this.attributes,J=Y.x,fe=Y.y,Te=Y.padding,De=(0,m.CR)((0,Je.j)(Te),4),Le=De[0],Xe=De[1],mt=De[2],Kt=De[3],nn=this.shape,gn=nn.width,Nn=nn.height;return{x:Kt,y:Le,width:gn-(Kt+Xe),height:Nn-(Le+mt)}},enumerable:!1,configurable:!0}),re.prototype.getValues=function(){return this.values},re.prototype.setValues=function(Y,J){Y===void 0&&(Y=[0,0]),J===void 0&&(J=!1),this.attributes.values=Y;var fe=J===!1?!1:this.attributes.animate;this.updateSelectionArea(fe),this.updateHandlesPosition(fe)},re.prototype.updateSelectionArea=function(Y){var J=this.calcSelectionArea();this.foregroundGroup.selectAll(mo.selection.class).each(function(fe,Te){(0,ve.eR)(this,J[Te],Y)})},re.prototype.updateHandlesPosition=function(Y){this.attributes.showHandle&&(this.startHandle&&(0,ve.eR)(this.startHandle,this.getHandleStyle("start"),Y),this.endHandle&&(0,ve.eR)(this.endHandle,this.getHandleStyle("end"),Y))},re.prototype.innerSetValues=function(Y,J){Y===void 0&&(Y=[0,0]),J===void 0&&(J=!1);var fe=this.values,Te=this.clampValues(Y);this.attributes.values=Te,this.setValues(Te),J&&this.onValueChange(fe)},re.prototype.renderTrack=function(Y){var J=this.attributes,fe=J.x,Te=J.y,De=(0,C.zs)(this.attributes,"track");this.trackShape=(0,Fe.Ys)(Y).maybeAppendByClassName(mo.track,"rect").styles((0,m.pi)((0,m.pi)({x:fe,y:Te},this.shape),De))},re.prototype.renderBrushArea=function(Y){var J=this.attributes,fe=J.x,Te=J.y,De=J.brushable;this.brushArea=(0,Fe.Ys)(Y).maybeAppendByClassName(mo.brushArea,"rect").styles((0,m.pi)({x:fe,y:Te,fill:"transparent",cursor:De?"crosshair":"default"},this.shape))},re.prototype.renderSparkline=function(Y){var J=this,fe=this.attributes,Te=fe.x,De=fe.y,Le=fe.orientation,Xe=(0,Fe.Ys)(Y).maybeAppendByClassName(mo.sparklineGroup,"g");(0,Ee.z)(Le==="horizontal",Xe,function(mt){var Kt=(0,m.pi)((0,m.pi)({},J.sparklineStyle),{x:Te,y:De});mt.maybeAppendByClassName(mo.sparkline,function(){return new jh({style:Kt})}).update(Kt)})},re.prototype.renderHandles=function(){var Y=this,J,fe=this.attributes,Te=fe.showHandle,De=fe.type,Le=De==="range"?["start","end"]:["end"],Xe=Te?Le:[],mt=this;(J=this.foregroundGroup)===null||J===void 0||J.selectAll(mo.handle.class).data(Xe.map(function(Kt){return{type:Kt}}),function(Kt){return Kt.type}).join(function(Kt){return Kt.append(function(nn){var gn=nn.type;return new qi({style:Y.getHandleStyle(gn)})}).each(function(nn){var gn=nn.type;this.attr("class","".concat(mo.handle.name," ").concat(gn,"-handle"));var Nn="".concat(gn,"Handle");mt[Nn]=this,this.addEventListener("pointerdown",mt.onDragStart(gn))})},function(Kt){return Kt.each(function(nn){var gn=nn.type;this.update(mt.getHandleStyle(gn))})},function(Kt){return Kt.each(function(nn){var gn=nn.type,Nn="".concat(gn,"Handle");mt[Nn]=void 0}).remove()})},re.prototype.renderSelection=function(Y){var J=this.attributes,fe=J.x,Te=J.y,De=J.type,Le=J.selectionType;this.foregroundGroup=(0,Fe.Ys)(Y).maybeAppendByClassName(mo.foreground,"g");var Xe=(0,C.zs)(this.attributes,"selection"),mt=function(nn){return nn.style("visibility",function(gn){return gn.show?"visible":"hidden"}).style("cursor",function(gn){return Le==="select"?"grab":Le==="invert"?"crosshair":"default"}).styles((0,m.pi)((0,m.pi)({},Xe),{transform:"translate(".concat(fe,", ").concat(Te,")")}))},Kt=this;this.foregroundGroup.selectAll(mo.selection.class).data(De==="value"?[]:this.calcSelectionArea().map(function(nn,gn){return{style:(0,m.pi)({},nn),index:gn,show:Le==="select"?gn===1:gn!==1}}),function(nn){return nn.index}).join(function(nn){return nn.append("rect").attr("className",mo.selection.name).call(mt).each(function(gn,Nn){var $n=this;Nn===1?(Kt.selectionShape=(0,Fe.Ys)(this),this.on("pointerdown",function(Er){$n.attr("cursor","grabbing"),Kt.onDragStart("selection")(Er)}),Kt.dispatchCustomEvent(this,"pointerenter","selectionMouseenter"),Kt.dispatchCustomEvent(this,"pointerleave","selectionMouseleave"),Kt.dispatchCustomEvent(this,"click","selectionClick"),this.addEventListener("pointerdown",function(){$n.attr("cursor","grabbing")}),this.addEventListener("pointerup",function(){$n.attr("cursor","pointer")}),this.addEventListener("pointerover",function(){$n.attr("cursor","pointer")})):this.on("pointerdown",Kt.onDragStart("track"))})},function(nn){return nn.call(mt)},function(nn){return nn.remove()}),this.updateSelectionArea(!1),this.renderHandles()},re.prototype.render=function(Y,J){this.renderTrack(J),this.renderSparkline(J),this.renderBrushArea(J),this.renderSelection(J)},re.prototype.clampValues=function(Y,J){var fe;J===void 0&&(J=4);var Te=(0,m.CR)(this.range,2),De=Te[0],Le=Te[1],Xe=(0,m.CR)(this.getValues().map(function(mr){return sl(mr,J)}),2),mt=Xe[0],Kt=Xe[1],nn=Array.isArray(Y)?Y:[mt,Y!=null?Y:Kt],gn=(0,m.CR)((nn||[mt,Kt]).map(function(mr){return sl(mr,J)}),2),Nn=gn[0],$n=gn[1];if(this.attributes.type==="value")return[0,(0,Z.Z)($n,De,Le)];Nn>$n&&(fe=(0,m.CR)([$n,Nn],2),Nn=fe[0],$n=fe[1]);var Er=$n-Nn;return Er>Le-De?[De,Le]:NnLe?Kt===Le&&mt===Nn?[Nn,Le]:[Le-Er,Le]:[Nn,$n]},re.prototype.calcSelectionArea=function(Y){var J=(0,m.CR)(this.clampValues(Y),2),fe=J[0],Te=J[1],De=this.availableSpace,Le=De.x,Xe=De.y,mt=De.width,Kt=De.height;return this.getOrientVal([[{y:Xe,height:Kt,x:Le,width:fe*mt},{y:Xe,height:Kt,x:fe*mt+Le,width:(Te-fe)*mt},{y:Xe,height:Kt,x:Te*mt,width:(1-Te)*mt}],[{x:Le,width:mt,y:Xe,height:fe*Kt},{x:Le,width:mt,y:fe*Kt+Xe,height:(Te-fe)*Kt},{x:Le,width:mt,y:Te*Kt,height:(1-Te)*Kt}]])},re.prototype.calcHandlePosition=function(Y){var J=this.attributes.handleIconOffset,fe=this.availableSpace,Te=fe.x,De=fe.y,Le=fe.width,Xe=fe.height,mt=(0,m.CR)(this.clampValues(),2),Kt=mt[0],nn=mt[1],gn=Y==="start"?-J:J,Nn=(Y==="start"?Kt:nn)*this.getOrientVal([Le,Xe])+gn;return{x:Te+this.getOrientVal([Nn,Le/2]),y:De+this.getOrientVal([Xe/2,Nn])}},re.prototype.inferTextStyle=function(Y){var J=this.attributes.orientation;return J==="horizontal"?{}:Y==="start"?{transformOrigin:"left center",transform:"rotate(90)",textAlign:"start"}:Y==="end"?{transformOrigin:"right center",transform:"rotate(90)",textAlign:"end"}:{}},re.prototype.calcHandleText=function(Y){var J,fe=this.attributes,Te=fe.type,De=fe.orientation,Le=fe.formatter,Xe=fe.autoFitLabel,mt=(0,C.zs)(this.attributes,"handle"),Kt=(0,C.zs)(mt,"label"),nn=mt.spacing,gn=this.getHandleSize(),Nn=this.clampValues(),$n=Y==="start"?Nn[0]:Nn[1],Er=Le($n),mr=new Ll.x({style:(0,m.pi)((0,m.pi)((0,m.pi)({},Kt),this.inferTextStyle(Y)),{text:Er})}),ti=mr.getBBox(),jr=ti.width,ui=ti.height;if(mr.destroy(),!Xe){if(Te==="value")return{text:Er,x:0,y:-ui-nn};var gi=nn+gn+(De==="horizontal"?jr/2:0);return J={text:Er},J[De==="horizontal"?"x":"y"]=Y==="start"?-gi:gi,J}var oi=0,ts=0,fs=this.availableSpace,Ds=fs.width,Ba=fs.height,Ka=this.calcSelectionArea()[1],xo=Ka.x,aa=Ka.y,di=Ka.width,Ma=Ka.height,Rs=nn+gn;if(De==="horizontal"){var lo=Rs+jr/2;if(Y==="start"){var Jo=xo-Rs-jr;oi=Jo>0?-lo:lo}else{var zs=Ds-xo-di-Rs>jr;oi=zs?lo:-lo}}else{var Ya=Rs,pa=ui+Rs;Y==="start"?ts=aa-gn>ui?-pa:Ya:ts=Ba-(aa+Ma)-gn>ui?pa:-Ya}return{x:oi,y:ts,text:Er}},re.prototype.getHandleLabelStyle=function(Y){var J=(0,C.zs)(this.attributes,"handleLabel");return(0,m.pi)((0,m.pi)((0,m.pi)({},J),this.calcHandleText(Y)),this.inferTextStyle(Y))},re.prototype.getHandleIconStyle=function(){var Y=this.attributes.handleIconShape,J=(0,C.zs)(this.attributes,"handleIcon"),fe=this.getOrientVal(["ew-resize","ns-resize"]),Te=this.getHandleSize();return(0,m.pi)({cursor:fe,shape:Y,size:Te},J)},re.prototype.getHandleStyle=function(Y){var J=this.attributes,fe=J.x,Te=J.y,De=J.showLabel,Le=J.showLabelOnInteraction,Xe=J.orientation,mt=this.calcHandlePosition(Y),Kt=mt.x,nn=mt.y,gn=this.calcHandleText(Y),Nn=De;return!De&&Le&&(this.target?Nn=!0:Nn=!1),(0,m.pi)((0,m.pi)((0,m.pi)({},(0,C.dq)(this.getHandleIconStyle(),"icon")),(0,C.dq)((0,m.pi)((0,m.pi)({},this.getHandleLabelStyle(Y)),gn),"label")),{transform:"translate(".concat(Kt+fe,", ").concat(nn+Te,")"),orientation:Xe,showLabel:Nn,type:Y,zIndex:3})},re.prototype.getHandleSize=function(){var Y=this.attributes,J=Y.handleIconSize,fe=Y.width,Te=Y.height;return J||Math.floor((this.getOrientVal([+Te,+fe])+4)/2.4)},re.prototype.getOrientVal=function(Y){var J=(0,m.CR)(Y,2),fe=J[0],Te=J[1],De=this.attributes.orientation;return De==="horizontal"?fe:Te},re.prototype.setValuesOffset=function(Y,J){J===void 0&&(J=0);var fe=this.attributes.type,Te=(0,m.CR)(this.getValues(),2),De=Te[0],Le=Te[1],Xe=fe==="range"?Y:0,mt=[De+Xe,Le+J].sort();this.innerSetValues(mt,!0)},re.prototype.getRatio=function(Y){var J=this.availableSpace,fe=J.width,Te=J.height;return Y/this.getOrientVal([fe,Te])},re.prototype.dispatchCustomEvent=function(Y,J,fe){var Te=this;Y.on(J,function(De){De.stopPropagation(),Te.dispatchEvent(new N.Aw(fe,{detail:De}))})},re.prototype.bindEvents=function(){this.addEventListener("wheel",this.onScroll);var Y=this.brushArea;this.dispatchCustomEvent(Y,"click","trackClick"),this.dispatchCustomEvent(Y,"pointerenter","trackMouseenter"),this.dispatchCustomEvent(Y,"pointerleave","trackMouseleave"),Y.on("pointerdown",this.onDragStart("track"))},re.prototype.onScroll=function(Y){var J=this.attributes.scrollable;if(J){var fe=Y.deltaX,Te=Y.deltaY,De=Te||fe,Le=this.getRatio(De);this.setValuesOffset(Le,Le)}},re.tag="slider",re}(V.w),kn=b(92387),kd={backgroundFill:"#262626",backgroundLineCap:"round",backgroundLineWidth:1,backgroundStroke:"#333",backgroundZIndex:-1,formatter:function(oe){return oe.toString()},labelFill:"#fff",labelFontSize:12,labelTextBaseline:"middle",padding:[2,4],position:"right",radius:0,zIndex:999},Yh=(0,vt.A)({background:"background",labelGroup:"label-group",label:"label"},"indicator"),vl=function(oe){(0,m.ZT)(re,oe);function re(Y){var J=oe.call(this,Y,kd)||this;return J.point=[0,0],J.group=J.appendChild(new N.ZA({})),J.isMutationObserved=!0,J}return re.prototype.renderBackground=function(){if(this.label){var Y=this.attributes,J=Y.position,fe=Y.padding,Te=(0,m.CR)((0,Je.j)(fe),4),De=Te[0],Le=Te[1],Xe=Te[2],mt=Te[3],Kt=this.label.node().getLocalBounds(),nn=Kt.min,gn=Kt.max,Nn=new F.b(nn[0]-mt,nn[1]-De,gn[0]+Le-nn[0]+mt,gn[1]+Xe-nn[1]+De),$n=this.getPath(J,Nn),Er=(0,C.zs)(this.attributes,"background");this.background=(0,Fe.Ys)(this.group).maybeAppendByClassName(Yh.background,"path").styles((0,m.pi)((0,m.pi)({},Er),{d:$n})),this.group.appendChild(this.label.node())}},re.prototype.renderLabel=function(){var Y=this.attributes,J=Y.formatter,fe=Y.labelText,Te=(0,C.zs)(this.attributes,"label"),De=(0,m.CR)((0,C.Hm)(Te),2),Le=De[0],Xe=De[1],mt=Le.text,Kt=(0,m._T)(Le,["text"]);if(this.label=(0,Fe.Ys)(this.group).maybeAppendByClassName(Yh.labelGroup,"g").styles(Xe),!!fe){var nn=this.label.maybeAppendByClassName(Yh.label,function(){return(0,Tn.S)(J(fe))}).style("text",J(fe).toString());nn.selectAll("text").styles(Kt)}},re.prototype.adjustLayout=function(){var Y=(0,m.CR)(this.point,2),J=Y[0],fe=Y[1],Te=this.attributes,De=Te.x,Le=Te.y;this.group.attr("transform","translate(".concat(De-J,", ").concat(Le-fe,")"))},re.prototype.getPath=function(Y,J){var fe=this.attributes.radius,Te=J.x,De=J.y,Le=J.width,Xe=J.height,mt=[["M",Te+fe,De],["L",Te+Le-fe,De],["A",fe,fe,0,0,1,Te+Le,De+fe],["L",Te+Le,De+Xe-fe],["A",fe,fe,0,0,1,Te+Le-fe,De+Xe],["L",Te+fe,De+Xe],["A",fe,fe,0,0,1,Te,De+Xe-fe],["L",Te,De+fe],["A",fe,fe,0,0,1,Te+fe,De],["Z"]],Kt={top:4,right:6,bottom:0,left:2},nn=Kt[Y],gn=this.createCorner([mt[nn].slice(-2),mt[nn+1].slice(-2)]);return mt.splice.apply(mt,(0,m.ev)([nn+1,1],(0,m.CR)(gn),!1)),mt[0][0]="M",mt},re.prototype.createCorner=function(Y,J){J===void 0&&(J=10);var fe=.8,Te=ei.wE.apply(void 0,(0,m.ev)([],(0,m.CR)(Y),!1)),De=(0,m.CR)(Y,2),Le=(0,m.CR)(De[0],2),Xe=Le[0],mt=Le[1],Kt=(0,m.CR)(De[1],2),nn=Kt[0],gn=Kt[1],Nn=(0,m.CR)(Te?[nn-Xe,[Xe,nn]]:[gn-mt,[mt,gn]],2),$n=Nn[0],Er=(0,m.CR)(Nn[1],2),mr=Er[0],ti=Er[1],jr=$n/2,ui=$n/Math.abs($n),gi=J*ui,oi=gi/2,ts=gi*Math.sqrt(3)/2*fe,fs=(0,m.CR)([mr,mr+jr-oi,mr+jr,mr+jr+oi,ti],5),Ds=fs[0],Ba=fs[1],Ka=fs[2],xo=fs[3],aa=fs[4];return Te?(this.point=[Ka,mt-ts],[["L",Ds,mt],["L",Ba,mt],["L",Ka,mt-ts],["L",xo,mt],["L",aa,mt]]):(this.point=[Xe+ts,Ka],[["L",Xe,Ds],["L",Xe,Ba],["L",Xe+ts,Ka],["L",Xe,xo],["L",Xe,aa]])},re.prototype.applyVisibility=function(){var Y=this.attributes.visibility;Y==="hidden"?(0,si.Cp)(this):(0,si.$Z)(this)},re.prototype.bindEvents=function(){this.label.on(N.Dk.BOUNDS_CHANGED,this.renderBackground)},re.prototype.render=function(){this.renderLabel(),this.renderBackground(),this.adjustLayout(),this.applyVisibility()},re}(V.w),He=function(oe){(0,m.ZT)(re,oe);function re(Y){var J=oe.call(this,(0,E.n)({},re.defaultOptions,Y))||this;return J.hoverColor="#f5f5f5",J.selectedColor="#e6f7ff",J.background=J.appendChild(new N.UL({})),J.label=J.background.appendChild(new N.ZA({})),J}return Object.defineProperty(re.prototype,"padding",{get:function(){return(0,Je.j)(this.style.padding)},enumerable:!1,configurable:!0}),re.prototype.renderLabel=function(){var Y=this.style,J=Y.label,fe=Y.value,Te=(0,C.zs)(this.attributes,"label");(0,Fe.Ys)(this.label).maybeAppend(".label",function(){return(0,Tn.S)(J)}).attr("className","label").styles(Te),this.label.attr("__data__",fe)},re.prototype.renderBackground=function(){var Y=this.label.getBBox(),J=(0,m.CR)(this.padding,4),fe=J[0],Te=J[1],De=J[2],Le=J[3],Xe=Y.width,mt=Y.height,Kt=Xe+Le+Te,nn=mt+fe+De,gn=(0,C.zs)(this.attributes,"background"),Nn=this.style,$n=Nn.width,Er=$n===void 0?0:$n,mr=Nn.height,ti=mr===void 0?0:mr,jr=Nn.selected;this.background.attr((0,m.pi)((0,m.pi)({},gn),{width:Math.max(Kt,Er),height:Math.max(nn,ti),fill:jr?this.selectedColor:"#fff"})),this.label.attr({transform:"translate(".concat(Le,", ").concat((nn-mt)/2,")")})},re.prototype.render=function(){this.renderLabel(),this.renderBackground()},re.prototype.bindEvents=function(){var Y=this;this.addEventListener("pointerenter",function(){Y.style.selected||Y.background.attr("fill",Y.hoverColor)}),this.addEventListener("pointerleave",function(){Y.style.selected||Y.background.attr("fill",Y.style.backgroundFill)});var J=this;this.addEventListener("click",function(){var fe=Y.style,Te=fe.label,De=fe.value,Le=fe.onClick;Le==null||Le(De,{label:Te,value:De},J)})},re.defaultOptions={style:{value:"",label:"",cursor:"pointer"}},re}(V.w),me=function(oe){(0,m.ZT)(re,oe);function re(Y){var J,fe,Te=oe.call(this,(0,E.n)({},re.defaultOptions,Y))||this;Te.currentValue=(J=re.defaultOptions.style)===null||J===void 0?void 0:J.defaultValue,Te.isPointerInSelect=!1,Te.select=Te.appendChild(new N.UL({className:"select",style:{cursor:"pointer",width:0,height:0}})),Te.dropdown=Te.appendChild(new N.UL({className:"dropdown"}));var De=Te.style.defaultValue;return De&&(!((fe=Te.style.options)===null||fe===void 0)&&fe.some(function(Le){return Le.value===De}))&&(Te.currentValue=De),Te}return re.prototype.setValue=function(Y){this.currentValue=Y,this.render()},re.prototype.getValue=function(){return this.currentValue},Object.defineProperty(re.prototype,"dropdownPadding",{get:function(){return(0,Je.j)(this.style.dropdownPadding)},enumerable:!1,configurable:!0}),re.prototype.renderSelect=function(){var Y=this,J,fe=this.style,Te=fe.x,De=fe.y,Le=fe.width,Xe=fe.height,mt=fe.bordered,Kt=fe.showDropdownIcon,nn=(0,C.zs)(this.attributes,"select"),gn=(0,C.zs)(this.attributes,"placeholder");this.select.attr((0,m.pi)((0,m.pi)({x:Te,y:De,width:Le,height:Xe},nn),{fill:"#fff",strokeWidth:mt?1:0}));var Nn=this.dropdownPadding,$n=10;Kt&&(0,Fe.Ys)(this.select).maybeAppend(".dropdown-icon","path").style("d","M-5,-3.5 L0,3.5 L5,-3.5").style("transform","translate(".concat(Te+Le-$n-Nn[1]-Nn[3],", ").concat(De+Xe/2,")")).style("lineWidth",1).style("stroke",this.select.style.stroke);var Er=(J=this.style.options)===null||J===void 0?void 0:J.find(function(ui){return ui.value===Y.currentValue}),mr=(0,m.pi)({x:Te+Nn[3]},gn);(0,Fe.Ys)(this.select).selectAll(".placeholder").data(Er?[]:[1]).join(function(ui){return ui.append("text").attr("className","placeholder").styles(mr).style("y",function(){var gi=this.getBBox();return De+(Xe-gi.height)/2})},function(ui){return ui.styles(mr)},function(ui){return ui.remove()});var ti=(0,C.zs)(this.attributes,"optionLabel"),jr=(0,m.pi)({x:Te+Nn[3]},ti);(0,Fe.Ys)(this.select).selectAll(".value").data(Er?[Er]:[]).join(function(ui){return ui.append(function(gi){return(0,Tn.S)(gi.label)}).attr("className","value").styles(jr).style("y",function(){var gi=this.getBBox();return De+(Xe-gi.height)/2})},function(ui){return ui.styles(jr)},function(ui){return ui.remove()})},re.prototype.renderDropdown=function(){var Y=this,J,fe,Te=this.style,De=Te.x,Le=Te.y,Xe=Te.width,mt=Te.height,Kt=Te.options,nn=Te.onSelect,gn=Te.open,Nn=(0,C.zs)(this.attributes,"dropdown"),$n=(0,C.zs)(this.attributes,"option"),Er=this.dropdownPadding;(0,Fe.Ys)(this.dropdown).maybeAppend(".dropdown-container","g").attr("className","dropdown-container").selectAll(".dropdown-item").data(Kt,function(jr){return jr.value}).join(function(jr){return jr.append(function(ui){return new He({className:"dropdown-item",style:(0,m.pi)((0,m.pi)((0,m.pi)({},ui),$n),{width:Xe-Er[1]-Er[3],selected:ui.value===Y.currentValue,onClick:function(gi,oi,ts){Y.setValue(gi),nn==null||nn(gi,oi,ts),Y.dispatchEvent(new N.Aw("change",{detail:{value:gi,option:oi,item:ts}})),(0,si.Cp)(Y.dropdown)}})})}).each(function(ui,gi){var oi,ts=(oi=this.parentNode)===null||oi===void 0?void 0:oi.children,fs=ts.reduce(function(Ds,Ba,Ka){return KaTe.time?1:0};return Y.sort(J)},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"space",{get:function(){var Y=this.attributes,J=Y.x,fe=Y.y,Te=Y.width,De=Y.height,Le=Y.type,Xe=Y.controllerHeight,mt=(0,Z.Z)(+De-Xe,0,+De),Kt=new F.b(J,fe+ +De-Xe,+Te,Xe),nn,gn=0;Le==="chart"?(gn=35,nn=new F.b(J,fe+mt-gn,+Te,gn)):nn=new F.b;var Nn=Le==="time"?10:mt,$n=new F.b(J,fe+(Le==="time"?mt:mt-Nn),+Te,Nn-gn);return{axisBBox:nn,controllerBBox:Kt,timelineBBox:$n}},enumerable:!1,configurable:!0}),re.prototype.setBySliderValues=function(Y){var J,fe,Te=this.data,De=(0,m.CR)(Array.isArray(Y)?Y:[0,Y],2),Le=De[0],Xe=De[1],mt=Te.length,Kt=Te[Math.floor(Le*mt)],nn=Te[Math.ceil(Xe*mt)-(Array.isArray(Y)?0:1)];this.states.values=[(J=Kt==null?void 0:Kt.time)!==null&&J!==void 0?J:Te[0].time,(fe=nn==null?void 0:nn.time)!==null&&fe!==void 0?fe:1/0]},re.prototype.setByTimebarValues=function(Y){var J,fe,Te,De=this.data,Le=(0,m.CR)(Array.isArray(Y)?Y:[void 0,Y],2),Xe=Le[0],mt=Le[1],Kt=De.find(function(gn){var Nn=gn.time;return Nn===Xe}),nn=De.find(function(gn){var Nn=gn.time;return Nn===mt});this.states.values=[(J=Kt==null?void 0:Kt.time)!==null&&J!==void 0?J:(fe=De[0])===null||fe===void 0?void 0:fe.time,(Te=nn==null?void 0:nn.time)!==null&&Te!==void 0?Te:1/0]},re.prototype.setByIndex=function(Y){var J,fe,Te,De,Le=this.data,Xe=(0,m.CR)(Y,2),mt=Xe[0],Kt=Xe[1];this.states.values=[(fe=(J=Le[mt])===null||J===void 0?void 0:J.time)!==null&&fe!==void 0?fe:Le[0].time,(De=(Te=this.data[Kt])===null||Te===void 0?void 0:Te.time)!==null&&De!==void 0?De:1/0]},Object.defineProperty(re.prototype,"sliderValues",{get:function(){var Y=this.states,J=Y.values,fe=Y.selectionType,Te=(0,m.CR)(Array.isArray(J)?J:[void 0,J],2),De=Te[0],Le=Te[1],Xe=this.data,mt=Xe.length,Kt=fe==="value",nn=function(){var Nn=Xe.findIndex(function($n){var Er=$n.time;return Er===De});return Kt?0:Nn>-1?Nn/mt:0},gn=function(){if(Le===1/0)return 1;var Nn=Xe.findIndex(function($n){var Er=$n.time;return Er===Le});return Nn>-1?Nn/mt:Kt?.5:1};return[nn(),gn()]},enumerable:!1,configurable:!0}),Object.defineProperty(re.prototype,"values",{get:function(){var Y=this.states,J=Y.values,fe=Y.selectionType,Te=(0,m.CR)(Array.isArray(J)?J:[this.data[0].time,J],2),De=Te[0],Le=Te[1];return fe==="value"?Le:[De,Le]},enumerable:!1,configurable:!0}),re.prototype.getDatumByRatio=function(Y){var J=this.data,fe=J.length,Te=Math.floor(Y*(fe-1));return J[Te]},Object.defineProperty(re.prototype,"chartHandleIconShape",{get:function(){var Y=this.states.selectionType,J=this.space.timelineBBox.height;return Y==="range"?function(fe){return new Ni({style:{type:fe,height:J,iconSize:J/6}})}:function(){return new N.x1({style:{x1:0,y1:-J/2,x2:0,y2:J/2,lineWidth:2,stroke:"#c8c8c8"}})}},enumerable:!1,configurable:!0}),re.prototype.getChartStyle=function(Y){var J=this,fe=Y.x,Te=Y.y,De=Y.width,Le=Y.height,Xe=this.states,mt=Xe.selectionType,Kt=Xe.chartType,nn=this.data,gn=this.attributes,Nn=gn.type,$n=gn.labelFormatter,Er=(0,C.zs)(this.attributes,"chart"),mr=Er.type,ti=(0,m._T)(Er,["type"]),jr=mt==="range";if(Nn==="time")return(0,m.pi)({handleIconShape:function(){return new zi({})},selectionFill:"#2e7ff8",selectionFillOpacity:1,showLabelOnInteraction:!0,handleLabelDy:jr?-15:0,autoFitLabel:jr,handleSpacing:jr?-15:0,trackFill:"#edeeef",trackLength:De,trackOpacity:.5,trackRadius:Le/2,trackSize:Le/2,type:mt,values:this.sliderValues,formatter:function(oi){if($n)return $n(oi);var ts=J.getDatumByRatio(oi).time;return typeof ts=="number"?_a(ts):j(ts,"YYYY-MM-DD HH:mm:ss")},transform:"translate(".concat(fe,", ").concat(Te,")"),zIndex:1},ti);var ui=mt==="range"?5:0,gi=nn.map(function(oi){var ts=oi.value;return ts});return(0,m.pi)({handleIconOffset:ui,handleIconShape:this.chartHandleIconShape,selectionFill:"#fff",selectionFillOpacity:.5,selectionType:"invert",sparklineSpacing:.1,sparklineColumnLineWidth:0,sparklineColor:"#d4e5fd",sparklineAreaOpacity:1,sparklineAreaLineWidth:0,sparklineData:gi,sparklineType:Kt,sparklineScale:.8,trackLength:De,trackSize:Le,type:mt,values:this.sliderValues,transform:"translate(".concat(fe,", ").concat(Te,")"),zIndex:1},ti)},re.prototype.renderChart=function(Y){Y===void 0&&(Y=this.space.timelineBBox),this.timeline.update(this.getChartStyle(Y))},re.prototype.updateSelection=function(){this.timeline.setValues(this.sliderValues,!0),this.handleSliderChange(this.sliderValues)},re.prototype.getAxisStyle=function(Y){var J=this.data,fe=this.attributes,Te=fe.interval,De=fe.labelFormatter,Le=(0,C.zs)(this.attributes,"axis"),Xe=Y.x,mt=Y.y,Kt=Y.width,nn=(0,m.ev)((0,m.ev)([],(0,m.CR)(J),!1),[{time:0}],!1).map(function(Nn,$n,Er){var mr=Nn.time;return{label:"".concat(mr),value:$n/(Er.length-1),time:mr}}),gn=(0,m.pi)({startPos:[Xe,mt],endPos:[Xe+Kt,mt],data:nn,labelFilter:function(Nn,$n){return $nTe?Xe==="value"?[0,0]:mt==="acc"?[fs(oi),fs(oi)]:[0,fs(ts-oi)]:oi<0?mt==="acc"?[0,fs(ts)]:[fs(oi+Te-ts),Te]:[fs(oi),fs(ts)]},jr=ti(mr);return this.setByIndex(jr),this.updateSelection(),jr},re.prototype.internalBackward=function(Y){var J,fe,Te=this.moveSelection("backward",Y);return Y||((fe=(J=this.attributes)===null||J===void 0?void 0:J.onBackward)===null||fe===void 0||fe.call(J),this.dispatchOnChange()),Te},re.prototype.backward=function(){this.internalBackward()},re.prototype.internalPlay=function(Y){var J=this,fe,Te,De=this.data,Le=this.attributes.loop,Xe=this.states.speed,mt=Xe===void 0?1:Xe;this.playInterval=window.setInterval(function(){var Kt=J.internalForward();Kt[1]===De.length&&!Le&&(J.internalPause(),J.renderController())},1e3/mt),this.states.state="play",!Y&&((Te=(fe=this.attributes)===null||fe===void 0?void 0:fe.onPlay)===null||Te===void 0||Te.call(fe))},re.prototype.play=function(){this.internalPlay()},re.prototype.internalPause=function(Y){var J,fe;clearInterval(this.playInterval),this.states.state="pause",!Y&&((fe=(J=this.attributes)===null||J===void 0?void 0:J.onPause)===null||fe===void 0||fe.call(J))},re.prototype.pause=function(){this.internalPause()},re.prototype.internalForward=function(Y){var J,fe,Te=this.moveSelection("forward",Y);return Y||((fe=(J=this.attributes)===null||J===void 0?void 0:J.onForward)===null||fe===void 0||fe.call(J),this.dispatchOnChange()),Te},re.prototype.forward=function(){this.internalForward()},re.prototype.handleSpeedChange=function(Y){var J,fe;this.states.speed=Y;var Te=this.states.state;Te==="play"&&(this.internalPause(!0),this.internalPlay(!0)),(fe=(J=this.attributes)===null||J===void 0?void 0:J.onSpeedChange)===null||fe===void 0||fe.call(J,Y)},re.prototype.handleSelectionTypeChange=function(Y){var J,fe;this.states.selectionType=Y,this.renderChart(),(fe=(J=this.attributes)===null||J===void 0?void 0:J.onSelectionTypeChange)===null||fe===void 0||fe.call(J,Y)},re.prototype.handleChartTypeChange=function(Y){var J,fe;this.states.chartType=Y,this.renderChart(),(fe=(J=this.attributes)===null||J===void 0?void 0:J.onChartTypeChange)===null||fe===void 0||fe.call(J,Y)},re.prototype.render=function(){var Y=this.space,J=Y.axisBBox,fe=Y.controllerBBox,Te=Y.timelineBBox;this.renderController(fe),this.renderAxis(J),this.renderChart(Te),this.states.state==="play"&&this.internalPlay()},re.prototype.destroy=function(){oe.prototype.destroy.call(this),this.internalPause(!0)},re.defaultOptions={style:{x:0,y:0,axisLabelFill:"#6e6e6e",axisLabelTextAlign:"left",axisLabelTextBaseline:"top",axisLabelTransform:"translate(5, -12)",axisLineLineWidth:1,axisLineStroke:"#cacdd1",axisTickLength:15,axisTickLineWidth:1,axisTickStroke:"#cacdd1",chartShowLabel:!1,chartType:"line",controllerAlign:"center",controllerHeight:40,data:[],interval:"day",loop:!1,playMode:"acc",selectionType:"range",type:"time"}},re}(V.w)},75242:function(Be,Me,b){"use strict";b.d(Me,{u:function(){return j}});var m=b(80813),Z=b(85580);function V(de,he){return!de||!he?de:de.replace(/\\?\{([^{}]+)\}/g,function(we,ve){return we.charAt(0)==="\\"?we.slice(1):he[ve]===void 0?"":he[ve]})}var N=V,E=b(97304),F=function(de,he){if(he==null){de.innerHTML="";return}de.replaceChildren?Array.isArray(he)?de.replaceChildren.apply(de,(0,m.ev)([],(0,m.CR)(he),!1)):de.replaceChildren(he):(de.innerHTML="",Array.isArray(he)?he.forEach(function(we){return de.appendChild(we)}):de.appendChild(he))},C=b(88839),P=b(17911);function H(de){return de===void 0&&(de=""),{CONTAINER:"".concat(de,"tooltip"),TITLE:"".concat(de,"tooltip-title"),LIST:"".concat(de,"tooltip-list"),LIST_ITEM:"".concat(de,"tooltip-list-item"),NAME:"".concat(de,"tooltip-list-item-name"),MARKER:"".concat(de,"tooltip-list-item-marker"),NAME_LABEL:"".concat(de,"tooltip-list-item-name-label"),VALUE:"".concat(de,"tooltip-list-item-value"),CROSSHAIR_X:"".concat(de,"tooltip-crosshair-x"),CROSSHAIR_Y:"".concat(de,"tooltip-crosshair-y")}}var D={overflow:"hidden","white-space":"nowrap","text-overflow":"ellipsis"};function X(de){var he;de===void 0&&(de="");var we=H(de);return he={},he[".".concat(we.CONTAINER)]={position:"absolute",visibility:"visible","z-index":8,transition:"visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)","background-color":"rgba(255, 255, 255, 0.96)","box-shadow":"0 6px 12px 0 rgba(0, 0, 0, 0.12)","border-radius":"4px",color:"rgba(0, 0, 0, 0.65)","font-size":"12px","line-height":"20px",padding:"12px","min-width":"120px","max-width":"360px","font-family":"Roboto-Regular"},he[".".concat(we.TITLE)]={color:"rgba(0, 0, 0, 0.45)"},he[".".concat(we.LIST)]={margin:"0px","list-style-type":"none",padding:"0px"},he[".".concat(we.LIST_ITEM)]={"list-style-type":"none",display:"flex","line-height":"2em","align-items":"center","justify-content":"space-between","white-space":"nowrap"},he[".".concat(we.MARKER)]={width:"8px",height:"8px","border-radius":"50%",display:"inline-block","margin-right":"4px"},he[".".concat(we.NAME)]={display:"flex","align-items":"center","max-width":"216px"},he[".".concat(we.NAME_LABEL)]=(0,m.pi)({flex:1},D),he[".".concat(we.VALUE)]=(0,m.pi)({display:"inline-block",float:"right",flex:1,"text-align":"right","min-width":"28px","margin-left":"30px",color:"rgba(0, 0, 0, 0.85)"},D),he[".".concat(we.CROSSHAIR_X)]={position:"absolute",width:"1px","background-color":"rgba(0, 0, 0, 0.25)"},he[".".concat(we.CROSSHAIR_Y)]={position:"absolute",height:"1px","background-color":"rgba(0, 0, 0, 0.25)"},he}var j=function(de){(0,m.ZT)(he,de);function he(we){var ve=this,Ee,$e,Fe=($e=(Ee=we.style)===null||Ee===void 0?void 0:Ee.template)===null||$e===void 0?void 0:$e.prefixCls,ct=H(Fe);return ve=de.call(this,we,{data:[],x:0,y:0,visibility:"visible",title:"",position:"bottom-right",offset:[5,5],enterable:!1,container:{x:0,y:0},bounding:null,template:{prefixCls:"",container:'
    '),title:'
    '),item:'
  • - - - {name} - - {value} -
  • `)},style:X(Fe)})||this,ve.timestamp=-1,ve.prevCustomContentKey=ve.attributes.contentKey,ve.initShape(),ve.render(ve.attributes,ve),ve}return Object.defineProperty(he.prototype,"HTMLTooltipElement",{get:function(){return this.element},enumerable:!1,configurable:!0}),he.prototype.getContainer=function(){return this.element},Object.defineProperty(he.prototype,"elementSize",{get:function(){var we=this.element.offsetWidth,ve=this.element.offsetHeight;return{width:we,height:ve}},enumerable:!1,configurable:!0}),Object.defineProperty(he.prototype,"HTMLTooltipItemsElements",{get:function(){var we=this.attributes,ve=we.data,Ee=we.template;return ve.map(function($e,Fe){var ct=$e.name,vt=ct===void 0?"":ct,at=$e.color,kt=at===void 0?"black":at,It=$e.index,Bn=(0,m._T)($e,["name","color","index"]),Lt=(0,m.pi)({name:vt,color:kt,index:It!=null?It:Fe},Bn);return(0,Z.L)(N(Ee.item,Lt))})},enumerable:!1,configurable:!0}),he.prototype.render=function(we,ve){this.renderHTMLTooltipElement(),this.updatePosition()},he.prototype.destroy=function(){var we;(we=this.element)===null||we===void 0||we.remove(),de.prototype.destroy.call(this)},he.prototype.show=function(we,ve){var Ee=this;if(we!==void 0&&ve!==void 0){var $e=this.element.style.visibility==="hidden",Fe=function(){Ee.attributes.x=we!=null?we:Ee.attributes.x,Ee.attributes.y=ve!=null?ve:Ee.attributes.y,Ee.updatePosition()};$e?this.closeTransition(Fe):Fe()}this.element.style.visibility="visible"},he.prototype.hide=function(we,ve){we===void 0&&(we=0),ve===void 0&&(ve=0);var Ee=this.attributes.enterable;Ee&&this.isCursorEntered(we,ve)||(this.element.style.visibility="hidden")},he.prototype.initShape=function(){var we=this.attributes.template;this.element=(0,Z.L)(we.container),this.id&&this.element.setAttribute("id",this.id)},he.prototype.renderCustomContent=function(){if(!(this.prevCustomContentKey!==void 0&&this.prevCustomContentKey===this.attributes.contentKey)){this.prevCustomContentKey=this.attributes.contentKey;var we=this.attributes.content;we&&(typeof we=="string"?this.element.innerHTML=we:F(this.element,we))}},he.prototype.renderHTMLTooltipElement=function(){var we,ve,Ee=this.attributes,$e=Ee.template,Fe=Ee.title,ct=Ee.enterable,vt=Ee.style,at=Ee.content,kt=H($e.prefixCls),It=this.element;if(this.element.style.pointerEvents=ct?"auto":"none",at)this.renderCustomContent();else{Fe?(It.innerHTML=$e.title,It.getElementsByClassName(kt.TITLE)[0].innerHTML=Fe):(ve=(we=It.getElementsByClassName(kt.TITLE))===null||we===void 0?void 0:we[0])===null||ve===void 0||ve.remove();var Bn=this.HTMLTooltipItemsElements,Lt=document.createElement("ul");Lt.className=kt.LIST,F(Lt,Bn);var Wn=this.element.querySelector(".".concat(kt.LIST));Wn?Wn.replaceWith(Lt):It.appendChild(Lt)}(0,C.MC)(It,vt)},he.prototype.getRelativeOffsetFromCursor=function(we){var ve=this.attributes,Ee=ve.position,$e=ve.offset,Fe=we||Ee,ct=Fe.split("-"),vt={left:[-1,0],right:[1,0],top:[0,-1],bottom:[0,1]},at=this.elementSize,kt=at.width,It=at.height,Bn=[-kt/2,-It/2];return ct.forEach(function(Lt){var Wn=(0,m.CR)(Bn,2),Xn=Wn[0],In=Wn[1],zn=(0,m.CR)(vt[Lt],2),dr=zn[0],vn=zn[1];Bn=[Xn+(kt/2+$e[0])*dr,In+(It/2+$e[1])*vn]}),Bn},he.prototype.setOffsetPosition=function(we){var ve=(0,m.CR)(we,2),Ee=ve[0],$e=ve[1],Fe=this.attributes,ct=Fe.x,vt=ct===void 0?0:ct,at=Fe.y,kt=at===void 0?0:at,It=Fe.container,Bn=It.x,Lt=It.y;this.element.style.left="".concat(+vt+Bn+Ee,"px"),this.element.style.top="".concat(+kt+Lt+$e,"px")},he.prototype.updatePosition=function(){var we=this.attributes.showDelay,ve=we===void 0?60:we,Ee=Date.now();this.timestamp>0&&Ee-this.timestampdr+_r,top:Invn+Ge},On=[];kt.split("-").forEach(function(en){Tt[en]?On.push(zn[en]):On.push(en)});var Vr=On.join("-");return this.getRelativeOffsetFromCursor(Vr)},he.prototype.isCursorEntered=function(we,ve){if(this.element){var Ee=this.element.getBoundingClientRect(),$e=Ee.x,Fe=Ee.y,ct=Ee.width,vt=Ee.height;return new P.b($e,Fe,ct,vt).isPointIn(we,ve)}return!1},he.prototype.closeTransition=function(we){var ve=this,Ee=this.element.style.transition;this.element.style.transition="none",we(),setTimeout(function(){ve.element.style.transition=Ee},10)},he.tag="tooltip",he}(E.w)},17911:function(Be,Me,b){"use strict";b.d(Me,{b:function(){return m}});var m=function(){function V(N,E,F,C){N===void 0&&(N=0),E===void 0&&(E=0),F===void 0&&(F=0),C===void 0&&(C=0),this.x=0,this.y=0,this.width=0,this.height=0,this.x=N,this.y=E,this.width=F,this.height=C}return Object.defineProperty(V.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!1,configurable:!0}),Object.defineProperty(V.prototype,"left",{get:function(){return this.x},enumerable:!1,configurable:!0}),Object.defineProperty(V.prototype,"right",{get:function(){return this.x+this.width},enumerable:!1,configurable:!0}),Object.defineProperty(V.prototype,"top",{get:function(){return this.y},enumerable:!1,configurable:!0}),V.fromRect=function(N){return new V(N.x,N.y,N.width,N.height)},V.prototype.toJSON=function(){return{x:this.x,y:this.y,width:this.width,height:this.height,top:this.top,right:this.right,bottom:this.bottom,left:this.left}},V.prototype.isPointIn=function(N,E){return N>=this.left&&N<=this.right&&E>=this.top&&E<=this.bottom},V}();function Z(V){var N=V.getRenderBounds(),E=__read(N.min,2),F=E[0],C=E[1],P=__read(N.max,2),H=P[0],D=P[1],X=H-F,j=D-C;return new m(F,C,X,j)}},38242:function(Be,Me,b){"use strict";b.d(Me,{S:function(){return V}});var m=b(80813),Z=b(71018);function V(N,E){return(0,Z.Z)(N)?N.apply(void 0,(0,m.ev)([],(0,m.CR)(E),!1)):N}},58688:function(Be,Me,b){"use strict";b.d(Me,{A:function(){return Z}});var m=b(80813),Z=function(V,N){var E=function(C){return"".concat(N,"-").concat(C)},F=Object.fromEntries(Object.entries(V).map(function(C){var P=(0,m.CR)(C,2),H=P[0],D=P[1],X=E(D);return[H,{name:X,class:".".concat(X),id:"#".concat(X),toString:function(){return X}}]}));return Object.assign(F,{prefix:E}),F}},99247:function(Be,Me,b){"use strict";b.d(Me,{n:function(){return F}});var m=b(80813),Z=b(63467),V=b(39934),N=5,E=function(C,P,H,D){H===void 0&&(H=0),D===void 0&&(D=N),Object.entries(P).forEach(function(X){var j=(0,m.CR)(X,2),de=j[0],he=j[1],we=C;Object.prototype.hasOwnProperty.call(P,de)&&(he?(0,Z.Z)(he)?((0,Z.Z)(C[de])||(we[de]={}),H2?[Z[0]]:Z.split("")}},99769:function(Be,Me,b){"use strict";b.d(Me,{b:function(){return m}});function m(Z,V,N){N===void 0&&(N=!1);var E=Z.getBBox(),F=E.width,C=E.height,P=V/Math.max(F,C);return N&&(Z.style.transform="scale(".concat(P,")")),P}},38974:function(Be,Me,b){"use strict";b.d(Me,{OV:function(){return X},Ys:function(){return D}});var m=b(80813),Z=b(39934),V=function(j){if(!(0,Z.Z)(j))return[];for(var de=[],he=0;he="A"&&de<="Z"};function P(X,j,de){de===void 0&&(de=!1);var he={};return Object.entries(X).forEach(function(we){var ve=(0,m.CR)(we,2),Ee=ve[0],$e=ve[1];if(!(Ee==="className"||Ee==="class")){if(C(Ee,"show")&&C(E(Ee,"show"),j)!==de)Ee===N(j,"show")?he[Ee]=$e:he[Ee.replace(new RegExp(Z(j)),"")]=$e;else if(!C(Ee,"show")&&C(Ee,j)!==de){var Fe=E(Ee,j);Fe==="filter"&&typeof $e=="function"||(he[Fe]=$e)}}}),he}function H(X,j){return Object.entries(X).reduce(function(de,he){var we=(0,m.CR)(he,2),ve=we[0],Ee=we[1];return ve.startsWith("show")?de["show".concat(j).concat(ve.slice(4))]=Ee:de["".concat(j).concat(Z(ve))]=Ee,de},{})}function D(X,j){j===void 0&&(j=["x","y","class","className"]);var de=["transform","transformOrigin","anchor","visibility","pointerEvents","zIndex","cursor","clipPath","clipPathTargets","offsetPath","offsetPathTargets","offsetDistance","draggable","droppable"],he={},we={};return Object.entries(X).forEach(function(ve){var Ee=(0,m.CR)(ve,2),$e=Ee[0],Fe=Ee[1];j.includes($e)||(de.indexOf($e)!==-1?we[$e]=Fe:he[$e]=Fe)}),[he,we]}},58533:function(Be,Me,b){"use strict";b.d(Me,{Rm:function(){return H},U4:function(){return P},Ux:function(){return F},qT:function(){return C}});var m=b(66623),Z=b(40455),V,N;function E(D){N=D}var F=(0,Z.Z)(function(D,X){var j=X.fontSize,de=X.fontFamily,he=X.fontWeight,we=X.fontStyle,ve=X.fontVariant;return N?N(D,j):(V||(V=m.GZ.offscreenCanvasCreator.getOrCreateContext(void 0)),V.font=[we,ve,he,"".concat(j,"px"),de].join(" "),V.measureText(D).width)},function(D,X){return[D,Object.values(X||C(D)).join()].join("")},4096),C=function(D){var X=D.style.fontFamily||"sans-serif",j=D.style.fontWeight||"normal",de=D.style.fontStyle||"normal",he=D.style.fontVariant,we=D.style.fontSize;return we=typeof we=="object"?we.value:we,{fontSize:we,fontFamily:X,fontWeight:j,fontStyle:de,fontVariant:he}};function P(D){return D.nodeName==="text"?D:D.nodeName==="g"&&D.children.length===1&&D.children[0].nodeName==="text"?D.children[0]:null}function H(D,X){var j=P(D);j&&j.attr(X)}},69014:function(Be,Me,b){"use strict";b.d(Me,{Cp:function(){return V},$Z:function(){return Z},WD:function(){return N}});function m(E,F){F(E),E.children&&E.children.forEach(function(C){C&&m(C,F)})}function Z(E){N(E,!0)}function V(E){N(E,!1)}function N(E,F){var C=F?"visible":"hidden";m(E,function(P){P.attr("visibility",C)})}},49336:function(Be,Me){"use strict";var b="*",m=function(){function Z(){this._events={}}return Z.prototype.on=function(V,N,E){return this._events[V]||(this._events[V]=[]),this._events[V].push({callback:N,once:!!E}),this},Z.prototype.once=function(V,N){return this.on(V,N,!0)},Z.prototype.emit=function(V){for(var N=this,E=[],F=1;FOe&&tn>Qe,ze&&(typeof ze.resetTransform=="function"?ze.resetTransform():ze.setTransform(1,0,0,1,0,0),dt.clearFullScreen&&dt.clearRect(ze,0,0,At*Je,xt*Je,bn.background))},w=function(ie,ze){for(var Je=[ie];Je.length>0;){var At,xt=Je.pop();xt.isVisible()&&!xt.isCulled()&&(si?dt.renderDisplayObjectOptimized(xt,ze,dt.context,H(dt,at)[at],st):dt.renderDisplayObject(xt,ze,dt.context,H(dt,at)[at],st));for(var Sn=((At=xt.sortable)===null||At===void 0||(At=At.sorted)===null||At===void 0?void 0:At.length)>0?xt.sortable.sorted:xt.childNodes,Oe=Sn.length-1;Oe>=0;Oe--)Je.push(Sn[Oe])}};ar.hooks.endFrame.tap(En.tag,function(){if(Q(),rr.root.childNodes.length===0){dt.clearFullScreenLastFrame=!0;return}si=bn.renderer.getConfig().enableRenderingOptimization,H(dt,at)[at]={restoreStack:[],prevObject:null,currentContext:H(dt,at)[at].currentContext},H(dt,at)[at].currentContext.clear(),dt.clearFullScreenLastFrame=!1;var z=Ie.getContext(),ie=Ie.getDPR();if(j.fromScaling(dt.dprMatrix,[ie,ie,1]),j.multiply(dt.vpMatrix,dt.dprMatrix,Jt.getOrthoMatrix()),dt.clearFullScreen)si?(z.save(),w(rr.root,z),z.restore()):w(rr.root,z);else{var ze=dt.safeMergeAABB(dt.mergeDirtyAABBs(dt.renderQueue));if(E.mN.isEmpty(ze)){dt.renderQueue=[];return}var Je=dt.convertAABB2Rect(ze),At=Je.x,xt=Je.y,Sn=Je.width,Oe=Je.height,Qe=de.fF(dt.vec3a,[At,xt,0],dt.vpMatrix),Re=de.fF(dt.vec3b,[At+Sn,xt,0],dt.vpMatrix),Ke=de.fF(dt.vec3c,[At,xt+Oe,0],dt.vpMatrix),gt=de.fF(dt.vec3d,[At+Sn,xt+Oe,0],dt.vpMatrix),tn=Math.min(Qe[0],Re[0],gt[0],Ke[0]),yt=Math.min(Qe[1],Re[1],gt[1],Ke[1]),Yt=Math.max(Qe[0],Re[0],gt[0],Ke[0]),Rn=Math.max(Qe[1],Re[1],gt[1],Ke[1]),er=Math.floor(tn),Jn=Math.floor(yt),kr=Math.ceil(Yt-tn),fr=Math.ceil(Rn-yt);z.save(),dt.clearRect(z,er,Jn,kr,fr,bn.background),z.beginPath(),z.rect(er,Jn,kr,fr),z.clip(),z.setTransform(dt.vpMatrix[0],dt.vpMatrix[1],dt.vpMatrix[4],dt.vpMatrix[5],dt.vpMatrix[12],dt.vpMatrix[13]);var wr=bn.renderer.getConfig(),ei=wr.enableDirtyRectangleRenderingDebug;ei&&L.dispatchEvent(new E.Aw(E.$6.DIRTY_RECTANGLE,{dirtyRect:{x:er,y:Jn,width:kr,height:fr}}));var _n=ze.getMin(),jn=(0,P.Z)(_n,2),Hr=jn[0],Pr=jn[1],$i=ze.getMax(),Zi=(0,P.Z)($i,2),Xi=Zi[0],Ei=Zi[1],ms=rr.root.ownerDocument.elementsFromBBox(Hr,Pr,Xi,Ei);ms.sort(function(_i,Es){return _i.sortable.renderOrder-Es.sortable.renderOrder}).forEach(function(_i){_i&&_i.isVisible()&&!_i.isCulled()&&dt.renderDisplayObject(_i,z,dt.context,H(dt,at)[at],st)}),z.restore(),dt.renderQueue.forEach(function(_i){dt.saveDirtyAABB(_i)}),dt.renderQueue=[]}H(dt,at)[at].restoreStack.forEach(function(){z.restore()}),H(dt,at)[at].restoreStack=[]}),ar.hooks.render.tap(En.tag,function(z){dt.clearFullScreen||dt.renderQueue.push(z)})}},{key:"clearRect",value:function(Xt,st,dt,Wt,bn,Jt){Xt.clearRect(st,dt,Wt,bn),Jt&&(Xt.fillStyle=Jt,Xt.fillRect(st,dt,Wt,bn))}},{key:"renderDisplayObjectOptimized",value:function(Xt,st,dt,Wt,bn){var Jt=Xt.nodeName,ar=!1,rr=!1,Kr=this.context.styleRendererFactory[Jt],si=this.pathGeneratorFactory[Jt],Ie=Xt.parsedStyle.clipPath;if(Ie){ar=!Wt.prevObject||!j.exactEquals(Ie.getWorldTransform(),Wt.prevObject.getWorldTransform()),ar&&(this.applyWorldTransform(st,Ie),Wt.prevObject=null);var L=this.pathGeneratorFactory[Ie.nodeName];L&&(st.save(),rr=!0,st.beginPath(),L(st,Ie.parsedStyle),st.closePath(),st.clip())}if(Kr){ar=!Wt.prevObject||!j.exactEquals(Xt.getWorldTransform(),Wt.prevObject.getWorldTransform()),ar&&this.applyWorldTransform(st,Xt);var Q=!Wt.prevObject;if(!Q){var w=Wt.prevObject.nodeName;Jt===E.bn.TEXT?Q=w!==E.bn.TEXT:Jt===E.bn.IMAGE?Q=w!==E.bn.IMAGE:Q=w===E.bn.TEXT||w===E.bn.IMAGE}Kr.applyStyleToContext(st,Xt,Q,Wt),Wt.prevObject=Xt}si&&(st.beginPath(),si(st,Xt.parsedStyle),Jt!==E.bn.LINE&&Jt!==E.bn.PATH&&Jt!==E.bn.POLYLINE&&st.closePath()),Kr&&Kr.drawToContext(st,Xt,H(this,at)[at],this,bn),rr&&st.restore(),Xt.dirty(!1)}},{key:"renderDisplayObject",value:function(Xt,st,dt,Wt,bn){var Jt=Xt.nodeName,ar=Wt.restoreStack[Wt.restoreStack.length-1];ar&&!(Xt.compareDocumentPosition(ar)&E.NB.DOCUMENT_POSITION_CONTAINS)&&(st.restore(),Wt.restoreStack.pop());var rr=this.context.styleRendererFactory[Jt],Kr=this.pathGeneratorFactory[Jt],si=Xt.parsedStyle.clipPath;if(si){this.applyWorldTransform(st,si);var Ie=this.pathGeneratorFactory[si.nodeName];Ie&&(st.save(),Wt.restoreStack.push(Xt),st.beginPath(),Ie(st,si.parsedStyle),st.closePath(),st.clip())}rr&&(this.applyWorldTransform(st,Xt),st.save(),this.applyAttributesToContext(st,Xt)),Kr&&(st.beginPath(),Kr(st,Xt.parsedStyle),Jt!==E.bn.LINE&&Jt!==E.bn.PATH&&Jt!==E.bn.POLYLINE&&st.closePath()),rr&&(rr.render(st,Xt.parsedStyle,Xt,dt,this,bn),st.restore()),Xt.dirty(!1)}},{key:"applyAttributesToContext",value:function(Xt,st){var dt=st.parsedStyle,Wt=dt.stroke,bn=dt.fill,Jt=dt.opacity,ar=dt.lineDash,rr=dt.lineDashOffset;ar&&Xt.setLineDash(ar),(0,he.Z)(rr)||(Xt.lineDashOffset=rr),(0,he.Z)(Jt)||(Xt.globalAlpha*=Jt),!(0,he.Z)(Wt)&&!Array.isArray(Wt)&&!Wt.isNone&&(Xt.strokeStyle=st.attributes.stroke),!(0,he.Z)(bn)&&!Array.isArray(bn)&&!bn.isNone&&(Xt.fillStyle=st.attributes.fill)}},{key:"convertAABB2Rect",value:function(Xt){var st=Xt.getMin(),dt=Xt.getMax(),Wt=Math.floor(st[0]),bn=Math.floor(st[1]),Jt=Math.ceil(dt[0]),ar=Math.ceil(dt[1]),rr=Jt-Wt,Kr=ar-bn;return{x:Wt,y:bn,width:rr,height:Kr}}},{key:"mergeDirtyAABBs",value:function(Xt){var st=new E.mN;return Xt.forEach(function(dt){var Wt=dt.getRenderBounds();st.add(Wt);var bn=dt.renderable.dirtyRenderBounds;bn&&st.add(bn)}),st}},{key:"saveDirtyAABB",value:function(Xt){var st=Xt.renderable;st.dirtyRenderBounds||(st.dirtyRenderBounds=new E.mN);var dt=Xt.getRenderBounds();dt&&st.dirtyRenderBounds.update(dt.center,dt.halfExtents)}},{key:"applyWorldTransform",value:function(Xt,st,dt){dt?(j.copy(this.tmpMat4,st.getLocalTransform()),j.multiply(this.tmpMat4,dt,this.tmpMat4),j.multiply(this.tmpMat4,this.vpMatrix,this.tmpMat4)):(j.copy(this.tmpMat4,st.getWorldTransform()),j.multiply(this.tmpMat4,this.vpMatrix,this.tmpMat4)),Xt.setTransform(this.tmpMat4[0],this.tmpMat4[1],this.tmpMat4[4],this.tmpMat4[5],this.tmpMat4[12],this.tmpMat4[13])}},{key:"safeMergeAABB",value:function(){for(var Xt=new E.mN,st=arguments.length,dt=new Array(st),Wt=0;Wt0;if(si){if(dt||st.attributes.stroke!==Wt.prevObject.attributes.stroke){var Ie=!(0,he.Z)(Jt.stroke)&&!Array.isArray(Jt.stroke)&&!Jt.stroke.isNone?st.attributes.stroke:Xn.strokeStyle;zn(Xt,"strokeStyle",Ie,Wt.currentContext)}(dt||Jt.lineWidth!==bn.lineWidth)&&zn(Xt,"lineWidth",(0,he.Z)(Jt.lineWidth)?Xn.lineWidth:Jt.lineWidth,Wt.currentContext),(dt||Jt.lineDash!==bn.lineDash)&&zn(Xt,"lineDash",Jt.lineDash||Xn.lineDash,Wt.currentContext),(dt||Jt.lineDashOffset!==bn.lineDashOffset)&&zn(Xt,"lineDashOffset",(0,he.Z)(Jt.lineDashOffset)?Xn.lineDashOffset:Jt.lineDashOffset,Wt.currentContext);for(var L=0;L4&&arguments[4]!==void 0?arguments[4]:!1;if(st){zn(Xt,"shadowColor",Xn.shadowColor,Wt.currentContext);for(var Jt=0;Jt-1&&zn(Xt,"filter",rr.replace(/drop-shadow\([^)]*\)/,"").trim()||Xn.filter,Wt.currentContext)}else zn(Xt,"filter",Xn.filter,Wt.currentContext)}},{key:"fillToContext",value:function(Xt,st,dt,Wt,bn){var Jt=this,ar=st.parsedStyle,rr=ar.fill,Kr=ar.fillRule,si=null;if(Array.isArray(rr)&&rr.length>0)rr.forEach(function(L){var Q=zn(Xt,"fillStyle",Bn(L,st,Xt,Jt.imagePool),dt.currentContext);si=si!=null?si:Q,Kr?Xt.fill(Kr):Xt.fill()});else{if((0,E.R)(rr)){var Ie=It(rr,st,Xt,st.ownerDocument.defaultView.context,Wt,bn,this.imagePool);Ie&&(Xt.fillStyle=Ie,si=!0)}Kr?Xt.fill(Kr):Xt.fill()}si!==null&&zn(Xt,"fillStyle",si,dt.currentContext)}},{key:"strokeToContext",value:function(Xt,st,dt,Wt,bn){var Jt=this,ar=st.parsedStyle.stroke,rr=null;if(Array.isArray(ar)&&ar.length>0)ar.forEach(function(Ie){var L=zn(Xt,"strokeStyle",Bn(Ie,st,Xt,Jt.imagePool),dt.currentContext);rr=rr!=null?rr:L,Xt.stroke()});else{if((0,E.R)(ar)){var Kr=It(ar,st,Xt,st.ownerDocument.defaultView.context,Wt,bn,this.imagePool);if(Kr){var si=zn(Xt,"strokeStyle",Kr,dt.currentContext);rr=rr!=null?rr:si}}Xt.stroke()}rr!==null&&zn(Xt,"strokeStyle",rr,dt.currentContext)}},{key:"drawToContext",value:function(Xt,st,dt,Wt,bn){var Jt,ar=st.nodeName,rr=st.parsedStyle,Kr=rr.opacity,si=Kr===void 0?Xn.globalAlpha:Kr,Ie=rr.fillOpacity,L=Ie===void 0?Xn.fillOpacity:Ie,Q=rr.strokeOpacity,w=Q===void 0?Xn.strokeOpacity:Q,z=rr.lineWidth,ie=z===void 0?Xn.lineWidth:z,ze=rr.fill&&!rr.fill.isNone,Je=rr.stroke&&!rr.stroke.isNone&&ie>0;if(!(!ze&&!Je)){var At=!(0,he.Z)(rr.shadowColor)&&rr.shadowBlur>0,xt=rr.shadowType==="inner",Sn=((Jt=rr.fill)===null||Jt===void 0?void 0:Jt.alpha)===0,Oe=!!(rr.filter&&rr.filter.length),Qe=At&&Je&&(ar===E.bn.PATH||ar===E.bn.LINE||ar===E.bn.POLYLINE||Sn||xt),Re=null;if(ze){Qe||this.applyShadowAndFilterStyleToContext(Xt,st,At,dt);var Ke=si*L;Re=zn(Xt,"globalAlpha",Ke,dt.currentContext),this.fillToContext(Xt,st,dt,Wt,bn),Qe||this.clearShadowAndFilterStyleForContext(Xt,At,Oe,dt)}if(Je){var gt=!1,tn=si*w,yt=zn(Xt,"globalAlpha",tn,dt.currentContext);if(Re=ze?Re:yt,Qe&&(this.applyShadowAndFilterStyleToContext(Xt,st,At,dt),gt=!0,xt)){var Yt=Xt.globalCompositeOperation;Xt.globalCompositeOperation="source-atop",this.strokeToContext(Xt,st,dt,Wt,bn),Xt.globalCompositeOperation=Yt,this.clearShadowAndFilterStyleForContext(Xt,At,Oe,dt,!0)}this.strokeToContext(Xt,st,dt,Wt,bn),gt&&this.clearShadowAndFilterStyleForContext(Xt,At,Oe,dt)}Re!==null&&zn(Xt,"globalAlpha",Re,dt.currentContext)}}}])}(),vn=function(En){function rn(){return(0,Z.Z)(this,rn),(0,V.Z)(this,rn,arguments)}return(0,N.Z)(rn,En),(0,m.Z)(rn,[{key:"render",value:function(st,dt,Wt,bn,Jt,ar){var rr=dt.fill,Kr=dt.fillRule,si=dt.opacity,Ie=si===void 0?1:si,L=dt.fillOpacity,Q=L===void 0?1:L,w=dt.stroke,z=dt.strokeOpacity,ie=z===void 0?1:z,ze=dt.lineWidth,Je=ze===void 0?1:ze,At=dt.lineCap,xt=dt.lineJoin,Sn=dt.shadowType,Oe=dt.shadowColor,Qe=dt.shadowBlur,Re=dt.filter,Ke=dt.miterLimit,gt=rr&&!rr.isNone,tn=w&&!w.isNone&&Je>0,yt=(rr==null?void 0:rr.alpha)===0,Yt=!!(Re&&Re.length),Rn=!(0,he.Z)(Oe)&&Qe>0,er=Wt.nodeName,Jn=Sn==="inner",kr=tn&&Rn&&(er===E.bn.PATH||er===E.bn.LINE||er===E.bn.POLYLINE||yt||Jn);gt&&(st.globalAlpha=Ie*Q,kr||_r(Wt,st,Rn),Ge(st,Wt,rr,Kr,bn,Jt,ar,this.imagePool),kr||this.clearShadowAndFilter(st,Yt,Rn)),tn&&(st.globalAlpha=Ie*ie,st.lineWidth=Je,(0,he.Z)(Ke)||(st.miterLimit=Ke),(0,he.Z)(At)||(st.lineCap=At),(0,he.Z)(xt)||(st.lineJoin=xt),kr&&(Jn&&(st.globalCompositeOperation="source-atop"),_r(Wt,st,!0),Jn&&(Tt(st,Wt,w,bn,Jt,ar,this.imagePool),st.globalCompositeOperation=Xn.globalCompositeOperation,this.clearShadowAndFilter(st,Yt,!0))),Tt(st,Wt,w,bn,Jt,ar,this.imagePool))}},{key:"clearShadowAndFilter",value:function(st,dt,Wt){if(Wt&&(st.shadowColor="transparent",st.shadowBlur=0),dt){var bn=st.filter;!(0,he.Z)(bn)&&bn.indexOf("drop-shadow")>-1&&(st.filter=bn.replace(/drop-shadow\([^)]*\)/,"").trim()||"none")}}}])}(dr);function _r(En,rn,Xt){var st=En.parsedStyle,dt=st.filter,Wt=st.shadowColor,bn=st.shadowBlur,Jt=st.shadowOffsetX,ar=st.shadowOffsetY;dt&&dt.length&&(rn.filter=En.style.filter),Xt&&(rn.shadowColor=Wt.toString(),rn.shadowBlur=bn||0,rn.shadowOffsetX=Jt||0,rn.shadowOffsetY=ar||0)}function Ge(En,rn,Xt,st,dt,Wt,bn,Jt){var ar=arguments.length>8&&arguments[8]!==void 0?arguments[8]:!1;Array.isArray(Xt)?Xt.forEach(function(rr){En.fillStyle=Bn(rr,rn,En,Jt),ar||(st?En.fill(st):En.fill())}):((0,E.R)(Xt)&&(En.fillStyle=It(Xt,rn,En,dt,Wt,bn,Jt)),ar||(st?En.fill(st):En.fill()))}function Tt(En,rn,Xt,st,dt,Wt,bn){var Jt=arguments.length>7&&arguments[7]!==void 0?arguments[7]:!1;Array.isArray(Xt)?Xt.forEach(function(ar){En.strokeStyle=Bn(ar,rn,En,bn),Jt||En.stroke()}):((0,E.R)(Xt)&&(En.strokeStyle=It(Xt,rn,En,st,dt,Wt,bn)),Jt||En.stroke())}function On(En,rn){var Xt=(0,P.Z)(En,4),st=Xt[0],dt=Xt[1],Wt=Xt[2],bn=Xt[3],Jt=(0,P.Z)(rn,4),ar=Jt[0],rr=Jt[1],Kr=Jt[2],si=Jt[3],Ie=Math.max(st,ar),L=Math.max(dt,rr),Q=Math.min(st+Wt,ar+Kr),w=Math.min(dt+bn,rr+si);return Q<=Ie||w<=L?null:[Ie,L,Q-Ie,w-L]}function Vr(En,rn){var Xt=de.fF(de.Ue(),[En[0],En[1],0],rn),st=de.fF(de.Ue(),[En[0]+En[2],En[1],0],rn),dt=de.fF(de.Ue(),[En[0],En[1]+En[3],0],rn),Wt=de.fF(de.Ue(),[En[0]+En[2],En[1]+En[3],0],rn);return[Math.min(Xt[0],st[0],dt[0],Wt[0]),Math.min(Xt[1],st[1],dt[1],Wt[1]),Math.max(Xt[0],st[0],dt[0],Wt[0])-Math.min(Xt[0],st[0],dt[0],Wt[0]),Math.max(Xt[1],st[1],dt[1],Wt[1])-Math.min(Xt[1],st[1],dt[1],Wt[1])]}var en=function(En){function rn(){return(0,Z.Z)(this,rn),(0,V.Z)(this,rn,arguments)}return(0,N.Z)(rn,En),(0,m.Z)(rn,[{key:"renderDownSampled",value:function(st,dt,Wt,bn){var Jt=bn.src,ar=bn.imageCache;if(!ar.downSampled){this.imagePool.createDownSampledImage(Jt,Wt).then(function(){Wt.ownerDocument&&(Wt.dirty(),Wt.ownerDocument.defaultView.context.renderingService.dirty())}).catch(function(rr){console.error(rr)});return}st.drawImage(ar.downSampled,Math.floor(bn.drawRect[0]),Math.floor(bn.drawRect[1]),Math.ceil(bn.drawRect[2]),Math.ceil(bn.drawRect[3]))}},{key:"renderTile",value:function(st,dt,Wt,bn){var Jt=bn.src,ar=bn.imageCache,rr=bn.imageRect,Kr=bn.drawRect,si=ar.size,Ie=st.getTransform(),L=Ie.a,Q=Ie.b,w=Ie.c,z=Ie.d,ie=Ie.e,ze=Ie.f;if(st.resetTransform(),!(ar!=null&&ar.gridSize)){this.imagePool.createImageTiles(Jt,[],function(){Wt.ownerDocument&&(Wt.dirty(),Wt.ownerDocument.defaultView.context.renderingService.dirty())},Wt).catch(function(Rn){console.error(Rn)});return}for(var Je=[si[0]/rr[2],si[1]/rr[3]],At=[ar.tileSize[0]/Je[0],ar.tileSize[1]/Je[1]],xt=[Math.floor((Kr[0]-rr[0])/At[0]),Math.ceil((Kr[0]+Kr[2]-rr[0])/At[0])],Sn=xt[0],Oe=xt[1],Qe=[Math.floor((Kr[1]-rr[1])/At[1]),Math.ceil((Kr[1]+Kr[3]-rr[1])/At[1])],Re=Qe[0],Ke=Qe[1],gt=Re;gt<=Ke;gt++)for(var tn=Sn;tn<=Oe;tn++){var yt=ar.tiles[gt][tn];if(yt){var Yt=[Math.floor(rr[0]+yt.tileX*At[0]),Math.floor(rr[1]+yt.tileY*At[1]),Math.ceil(At[0]),Math.ceil(At[1])];st.drawImage(yt.data,Yt[0],Yt[1],Yt[2],Yt[3])}}st.setTransform(L,Q,w,z,ie,ze)}},{key:"render",value:function(st,dt,Wt){var bn=dt.x,Jt=bn===void 0?0:bn,ar=dt.y,rr=ar===void 0?0:ar,Kr=dt.width,si=dt.height,Ie=dt.src,L=dt.shadowColor,Q=dt.shadowBlur,w=this.imagePool.getImageSync(Ie,Wt),z=w==null?void 0:w.img,ie=Kr,ze=si;if(z){ie||(ie=z.width),ze||(ze=z.height);var Je=!(0,he.Z)(L)&&Q>0;_r(Wt,st,Je);try{var At=Wt.ownerDocument.defaultView.getContextService().getDomElement(),xt=At.width,Sn=At.height,Oe=st.getTransform(),Qe=Oe.a,Re=Oe.b,Ke=Oe.c,gt=Oe.d,tn=Oe.e,yt=Oe.f,Yt=j.fromValues(Qe,Ke,0,0,Re,gt,0,0,0,0,1,0,tn,yt,0,1),Rn=Vr([Jt,rr,ie,ze],Yt),er=On([0,0,xt,Sn],Rn);if(!er)return;if(!Wt.ownerDocument.defaultView.getConfig().enableLargeImageOptimization){rn.renderFull(st,dt,Wt,{image:z,drawRect:[Jt,rr,ie,ze]});return}var Jn=Rn[2]/w.size[0];if(Jn<(w.downSamplingRate||.5)){this.renderDownSampled(st,dt,Wt,{src:Ie,imageCache:w,drawRect:[Jt,rr,ie,ze]});return}if(!ImagePool.isSupportTile){rn.renderFull(st,dt,Wt,{image:z,drawRect:[Jt,rr,ie,ze]});return}this.renderTile(st,dt,Wt,{src:Ie,imageCache:w,imageRect:Rn,drawRect:er})}catch(kr){}}}},{key:"drawToContext",value:function(st,dt,Wt,bn,Jt){this.render(st,dt.parsedStyle,dt)}}],[{key:"renderFull",value:function(st,dt,Wt,bn){st.drawImage(bn.image,Math.floor(bn.drawRect[0]),Math.floor(bn.drawRect[1]),Math.ceil(bn.drawRect[2]),Math.ceil(bn.drawRect[3]))}}])}(vn),ln=function(En){function rn(){return(0,Z.Z)(this,rn),(0,V.Z)(this,rn,arguments)}return(0,N.Z)(rn,En),(0,m.Z)(rn,[{key:"render",value:function(st,dt,Wt,bn,Jt,ar){Wt.getBounds();var rr=dt.lineWidth,Kr=rr===void 0?1:rr,si=dt.textAlign,Ie=si===void 0?"start":si,L=dt.textBaseline,Q=L===void 0?"alphabetic":L,w=dt.lineJoin,z=w===void 0?"miter":w,ie=dt.miterLimit,ze=ie===void 0?10:ie,Je=dt.letterSpacing,At=Je===void 0?0:Je,xt=dt.stroke,Sn=dt.fill,Oe=dt.fillRule,Qe=dt.fillOpacity,Re=Qe===void 0?1:Qe,Ke=dt.strokeOpacity,gt=Ke===void 0?1:Ke,tn=dt.opacity,yt=tn===void 0?1:tn,Yt=dt.metrics,Rn=dt.x,er=Rn===void 0?0:Rn,Jn=dt.y,kr=Jn===void 0?0:Jn,fr=dt.dx,wr=dt.dy,ei=dt.shadowColor,_n=dt.shadowBlur,jn=dt.textDecorationLine,Hr=Yt.font,Pr=Yt.lines,$i=Yt.height,Zi=Yt.lineHeight,Xi=Yt.lineMetrics;st.font=Hr,st.lineWidth=Kr,st.textAlign=Ie==="middle"?"center":Ie;var Ei=Q;Ei==="alphabetic"&&(Ei="bottom"),st.lineJoin=z,(0,he.Z)(ze)||(st.miterLimit=ze);var ms=kr;Q==="middle"?ms+=-$i/2-Zi/2:Q==="bottom"||Q==="alphabetic"||Q==="ideographic"?ms+=-$i:(Q==="top"||Q==="hanging")&&(ms+=-Zi);var _i=er+(fr||0);ms+=wr||0,Pr.length===1&&(Ei==="bottom"?(Ei="middle",ms-=.5*$i):Ei==="top"&&(Ei="middle",ms+=.5*$i)),st.textBaseline=Ei;var Es=!(0,he.Z)(ei)&&_n>0;_r(Wt,st,Es);for(var ua=0;ua0&&arguments[0]!==void 0?arguments[0]:{};return(0,Z.Z)(this,rn),Xt=(0,V.Z)(this,rn),Xt.name="canvas-renderer",Xt.options=st,Xt}return(0,N.Z)(rn,En),(0,m.Z)(rn,[{key:"init",value:function(){var st,dt=(0,C.Z)({dirtyObjectNumThreshold:500,dirtyObjectRatioThreshold:.8},this.options),Wt=this.context.imagePool,bn=new vn(Wt),Jt=(st={},(0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)((0,F.Z)(st,E.bn.CIRCLE,bn),E.bn.ELLIPSE,bn),E.bn.RECT,bn),E.bn.IMAGE,new en(Wt)),E.bn.TEXT,new ln(Wt)),E.bn.LINE,bn),E.bn.POLYLINE,bn),E.bn.POLYGON,bn),E.bn.PATH,bn),E.bn.GROUP,void 0),(0,F.Z)((0,F.Z)((0,F.Z)(st,E.bn.HTML,void 0),E.bn.MESH,void 0),E.bn.FRAGMENT,void 0));this.context.defaultStyleRendererFactory=Jt,this.context.styleRendererFactory=Jt,this.addRenderingPlugin(new kt(dt))}},{key:"destroy",value:function(){this.removeAllRenderingPlugins(),delete this.context.defaultStyleRendererFactory,delete this.context.styleRendererFactory}}])}(E.F6),Mt=Object.freeze({__proto__:null,CircleRenderer:vn,DefaultRenderer:vn,EllipseRenderer:vn,ImageRenderer:en,LineRenderer:vn,PathRenderer:vn,Plugin:Cn,PolygonRenderer:vn,PolylineRenderer:vn,RectRenderer:vn,TextRenderer:ln}),Et=de.Ue(),pe=de.Ue(),Ae=de.Ue(),Pe=j.create(),Ut=function(){function En(){var rn=this;(0,Z.Z)(this,En),this.isHit=function(Xt,st,dt,Wt){var bn=rn.context.pointInPathPickerFactory[Xt.nodeName];if(bn){var Jt=j.invert(Pe,dt),ar=de.fF(pe,de.t8(Ae,st[0],st[1],0),Jt);if(bn(Xt,new E.E9(ar[0],ar[1]),Wt,rn.isPointInPath,rn.context,rn.runtime))return!0}return!1},this.isPointInPath=function(Xt,st){var dt=rn.runtime.offscreenCanvasCreator.getOrCreateContext(rn.context.config.offscreenCanvas),Wt=rn.context.pathGeneratorFactory[Xt.nodeName];return Wt&&(dt.beginPath(),Wt(dt,Xt.parsedStyle),dt.closePath()),dt.isPointInPath(st.x,st.y)}}return(0,m.Z)(En,[{key:"apply",value:function(Xt,st){var dt,Wt=this,bn=Xt.renderingService,Jt=Xt.renderingContext;this.context=Xt,this.runtime=st;var ar=(dt=Jt.root)===null||dt===void 0?void 0:dt.ownerDocument;bn.hooks.pick.tapPromise(En.tag,function(){var rr=(0,ct.Z)((0,Fe.Z)().mark(function Kr(si){return(0,Fe.Z)().wrap(function(Ie){for(;;)switch(Ie.prev=Ie.next){case 0:return Ie.abrupt("return",Wt.pick(ar,si));case 1:case"end":return Ie.stop()}},Kr)}));return function(Kr){return rr.apply(this,arguments)}}()),bn.hooks.pickSync.tap(En.tag,function(rr){return Wt.pick(ar,rr)})}},{key:"pick",value:function(Xt,st){var dt=st.topmost,Wt=st.position,bn=Wt.x,Jt=Wt.y,ar=de.t8(Et,bn,Jt,0),rr=Xt.elementsFromBBox(ar[0],ar[1],ar[0],ar[1]),Kr=[],si=(0,$e.Z)(rr),Ie;try{for(si.s();!(Ie=si.n()).done;){var L=Ie.value,Q=L.getWorldTransform(),w=this.isHit(L,ar,Q,!1);if(w){var z=(0,E.Oi)(L);if(z){var ie=z.parsedStyle.clipPath,ze=this.isHit(ie,ar,ie.getWorldTransform(),!0);if(ze){if(dt)return st.picked=[L],st;Kr.push(L)}}else{if(dt)return st.picked=[L],st;Kr.push(L)}}}}catch(Je){si.e(Je)}finally{si.f()}return st.picked=Kr,st}}])}();Ut.tag="CanvasPicker";function jt(En,rn,Xt){var st=En.parsedStyle,dt=st.cx,Wt=dt===void 0?0:dt,bn=st.cy,Jt=bn===void 0?0:bn,ar=st.r,rr=st.fill,Kr=st.stroke,si=st.lineWidth,Ie=si===void 0?1:si,L=st.increasedLineWidthForHitTesting,Q=L===void 0?0:L,w=st.pointerEvents,z=w===void 0?"auto":w,ie=(Ie+Q)/2,ze=(0,vt.TE)(Wt,Jt,rn.x,rn.y),Je=(0,E.L1)(z,rr,Kr),At=(0,P.Z)(Je,2),xt=At[0],Sn=At[1];return xt&&Sn||Xt?ze<=ar+ie:xt?ze<=ar:Sn?ze>=ar-ie&&ze<=ar+ie:!1}function ft(En,rn,Xt,st){return En/(Xt*Xt)+rn/(st*st)}function on(En,rn,Xt){var st=En.parsedStyle,dt=st.cx,Wt=dt===void 0?0:dt,bn=st.cy,Jt=bn===void 0?0:bn,ar=st.rx,rr=st.ry,Kr=st.fill,si=st.stroke,Ie=st.lineWidth,L=Ie===void 0?1:Ie,Q=st.increasedLineWidthForHitTesting,w=Q===void 0?0:Q,z=st.pointerEvents,ie=z===void 0?"auto":z,ze=rn.x,Je=rn.y,At=(0,E.L1)(ie,Kr,si),xt=(0,P.Z)(At,2),Sn=xt[0],Oe=xt[1],Qe=(L+w)/2,Re=(ze-Wt)*(ze-Wt),Ke=(Je-Jt)*(Je-Jt);return Sn&&Oe||Xt?ft(Re,Ke,ar+Qe,rr+Qe)<=1:Sn?ft(Re,Ke,ar,rr)<=1:Oe?ft(Re,Ke,ar-Qe,rr-Qe)>=1&&ft(Re,Ke,ar+Qe,rr+Qe)<=1:!1}function hn(En,rn,Xt,st,dt,Wt){return dt>=En&&dt<=En+Xt&&Wt>=rn&&Wt<=rn+st}function lt(En,rn,Xt,st,dt,Wt,bn){var Jt=dt/2;return hn(En-Jt,rn-Jt,Xt,dt,Wt,bn)||hn(En+Xt-Jt,rn-Jt,dt,st,Wt,bn)||hn(En+Jt,rn+st-Jt,Xt,dt,Wt,bn)||hn(En-Jt,rn+Jt,dt,st,Wt,bn)}function Ct(En,rn,Xt,st,dt,Wt,bn,Jt){var ar=(Math.atan2(Jt-rn,bn-En)+Math.PI*2)%(Math.PI*2),rr={x:En+Xt*Math.cos(ar),y:rn+Xt*Math.sin(ar)};return(0,vt.TE)(rr.x,rr.y,bn,Jt)<=Wt/2}function sn(En,rn,Xt,st,dt,Wt,bn){var Jt=Math.min(En,Xt),ar=Math.max(En,Xt),rr=Math.min(rn,st),Kr=Math.max(rn,st),si=dt/2;return Wt>=Jt-si&&Wt<=ar+si&&bn>=rr-si&&bn<=Kr+si?(0,vt._x)(En,rn,Xt,st,Wt,bn)<=dt/2:!1}function W(En,rn,Xt,st,dt){var Wt=En.length;if(Wt<2)return!1;for(var bn=0;bn0!=Ht(Jt[1]-Xt)>0&&Ht(rn-(Xt-bn[1])*(bn[0]-Jt[0])/(bn[1]-Jt[1])-bn[0])<0&&(st=!st)}return st}function Tn(En,rn,Xt){for(var st=!1,dt=0;dt=dt.min[0]&&rn.y>=dt.min[1]&&rn.x<=dt.max[0]&&rn.y<=dt.max[1]}var Vt=function(En){function rn(){var Xt;(0,Z.Z)(this,rn);for(var st=arguments.length,dt=new Array(st),Wt=0;WtJt?bn:Jt,rr=bn>Jt?1:bn/Jt,Kr=bn>Jt?Jt/bn:1;En.save(),En.scale(rr,Kr),En.arc(st,Wt,ar,0,Math.PI*2)}}function qn(En,rn){var Xt=rn.x1,st=rn.y1,dt=rn.x2,Wt=rn.y2,bn=rn.markerStart,Jt=rn.markerEnd,ar=rn.markerStartOffset,rr=rn.markerEndOffset,Kr=0,si=0,Ie=0,L=0,Q=0,w,z;bn&&(0,E.RV)(bn)&&ar&&(w=dt-Xt,z=Wt-st,Q=Math.atan2(z,w),Kr=Math.cos(Q)*(ar||0),si=Math.sin(Q)*(ar||0)),Jt&&(0,E.RV)(Jt)&&rr&&(w=Xt-dt,z=st-Wt,Q=Math.atan2(z,w),Ie=Math.cos(Q)*(rr||0),L=Math.sin(Q)*(rr||0)),En.moveTo(Xt+Kr,st+si),En.lineTo(dt+Ie,Wt+L)}function Sr(En,rn){var Xt=rn.markerStart,st=rn.markerEnd,dt=rn.markerStartOffset,Wt=rn.markerEndOffset,bn=rn.d,Jt=bn.absolutePath,ar=bn.segments,rr=0,Kr=0,si=0,Ie=0,L=0,Q,w;if(Xt&&(0,E.RV)(Xt)&&dt){var z=Xt.parentNode.getStartTangent(),ie=(0,P.Z)(z,2),ze=ie[0],Je=ie[1];Q=ze[0]-Je[0],w=ze[1]-Je[1],L=Math.atan2(w,Q),rr=Math.cos(L)*(dt||0),Kr=Math.sin(L)*(dt||0)}if(st&&(0,E.RV)(st)&&Wt){var At=st.parentNode.getEndTangent(),xt=(0,P.Z)(At,2),Sn=xt[0],Oe=xt[1];Q=Sn[0]-Oe[0],w=Sn[1]-Oe[1],L=Math.atan2(w,Q),si=Math.cos(L)*(Wt||0),Ie=Math.sin(L)*(Wt||0)}for(var Qe=0;Qe$i?Pr:$i,Es=Pr>$i?1:Pr/$i,ua=Pr>$i?$i/Pr:1;En.translate(jn,Hr),En.rotate(Ei),En.scale(Es,ua),En.arc(0,0,_i,Zi,Xi,!!(1-ms)),En.scale(1/Es,1/ua),En.rotate(-Ei),En.translate(-jn,-Hr)}yt&&En.lineTo(Re[6]+si,Re[7]+Ie);break}case"Z":En.closePath();break}}}function Jr(En,rn){var Xt=rn.markerStart,st=rn.markerEnd,dt=rn.markerStartOffset,Wt=rn.markerEndOffset,bn=rn.points.points,Jt=bn.length,ar=bn[0][0],rr=bn[0][1],Kr=bn[Jt-1][0],si=bn[Jt-1][1],Ie=0,L=0,Q=0,w=0,z=0,ie,ze;Xt&&(0,E.RV)(Xt)&&dt&&(ie=bn[1][0]-bn[0][0],ze=bn[1][1]-bn[0][1],z=Math.atan2(ze,ie),Ie=Math.cos(z)*(dt||0),L=Math.sin(z)*(dt||0)),st&&(0,E.RV)(st)&&Wt&&(ie=bn[Jt-1][0]-bn[0][0],ze=bn[Jt-1][1]-bn[0][1],z=Math.atan2(ze,ie),Q=Math.cos(z)*(Wt||0),w=Math.sin(z)*(Wt||0)),En.moveTo(ar+(Ie||Q),rr+(L||w));for(var Je=1;Je0?1:-1,L=ar>0?1:-1,Q=Ie+L===0,w=bn.map(function(xt){return(0,ve.Z)(xt,0,Math.min(Math.abs(rr)/2,Math.abs(Kr)/2))}),z=(0,P.Z)(w,4),ie=z[0],ze=z[1],Je=z[2],At=z[3];En.moveTo(Ie*ie+st,Wt),En.lineTo(rr-Ie*ze+st,Wt),ze!==0&&En.arc(rr-Ie*ze+st,L*ze+Wt,ze,-L*Math.PI/2,Ie>0?0:Math.PI,Q),En.lineTo(rr+st,Kr-L*Je+Wt),Je!==0&&En.arc(rr-Ie*Je+st,Kr-L*Je+Wt,Je,Ie>0?0:Math.PI,L>0?Math.PI/2:1.5*Math.PI,Q),En.lineTo(Ie*At+st,Kr+Wt),At!==0&&En.arc(Ie*At+st,Kr-L*At+Wt,At,L>0?Math.PI/2:-Math.PI/2,Ie>0?Math.PI:0,Q),En.lineTo(st,L*ie+Wt),ie!==0&&En.arc(Ie*ie+st,L*ie+Wt,ie,Ie>0?Math.PI:0,L>0?Math.PI*1.5:Math.PI/2,Q)}}var Mi=function(En){function rn(){var Xt;(0,Z.Z)(this,rn);for(var st=arguments.length,dt=new Array(st),Wt=0;Wt0&&Jt[0]!==void 0?Jt[0]:{},Wt=dt.type,bn=dt.encoderOptions,ar.abrupt("return",this.context.canvas.toDataURL(Wt,bn));case 1:case"end":return ar.stop()}},st,this)}));function Xt(){return rn.apply(this,arguments)}return Xt}()}])}(),es=function(En){function rn(){var Xt;(0,Z.Z)(this,rn);for(var st=arguments.length,dt=new Array(st),Wt=0;Wt=at[f]&&(f==="m"&&A.length>2?(x.segments.push([S].concat(A.splice(0,2))),f="l",S=S==="m"?"l":"L"):x.segments.push([S].concat(A.splice(0,at[f]))),!!at[f]););}function Xn(x){var S=x.index,f=x.pathValue,A=f.charCodeAt(S);if(A===48){x.param=0,x.index+=1;return}if(A===49){x.param=1,x.index+=1;return}x.err='[path-util]: invalid Arc flag "'.concat(f[S],'", expecting 0 or 1 at index ').concat(S)}function In(x){return x>=48&&x<=57||x===43||x===45||x===46}function zn(x){return x>=48&&x<=57}function dr(x){var S=x.max,f=x.pathValue,A=x.index,_=A,k=!1,G=!1,ae=!1,ge=!1,Ue;if(_>=S){x.err="[path-util]: Invalid path value at index ".concat(_,', "pathValue" is missing param');return}if(Ue=f.charCodeAt(_),(Ue===43||Ue===45)&&(_+=1,Ue=f.charCodeAt(_)),!zn(Ue)&&Ue!==46){x.err="[path-util]: Invalid path value at index ".concat(_,', "').concat(f[_],'" is not a number');return}if(Ue!==46){if(k=Ue===48,_+=1,Ue=f.charCodeAt(_),k&&_=5760&&S.includes(x)}function _r(x){for(var S=x.pathValue,f=x.max;x.index0;G-=1){if(Tt(_)&&(G===3||G===4)?Xn(x):dr(x),x.err.length)return;x.data.push(x.param),_r(x),x.index=x.max||!In(f.charCodeAt(x.index)))break}Wn(x)}var Vr=function(){function x(S){this.pathValue=S,this.segments=[],this.max=S.length,this.index=0,this.param=0,this.segmentStart=0,this.data=[],this.err=""}return x}();function en(x){if(kt(x))return[].concat(x);var S=new Vr(x);for(_r(S);S.index=k)G={x:f,y:A};else{var ae=Et([x,S],[f,A],_/k),ge=ae[0],Ue=ae[1];G={x:ge,y:Ue}}return{length:k,point:G,min:{x:Math.min(x,f),y:Math.min(S,A)},max:{x:Math.max(x,f),y:Math.max(S,A)}}}function Ae(x,S){var f=x.x,A=x.y,_=S.x,k=S.y,G=f*_+A*k,ae=Math.sqrt((Math.pow(f,2)+Math.pow(A,2))*(Math.pow(_,2)+Math.pow(k,2))),ge=f*k-A*_<0?-1:1,Ue=ge*Math.acos(G/ae);return Ue}function Pe(x,S,f,A,_,k,G,ae,ge,Ue){var rt=Math.abs,bt=Math.sin,Zt=Math.cos,wn=Math.sqrt,mn=Math.PI,Gn=rt(f),ir=rt(A),tr=(_%360+360)%360,Zn=tr*(mn/180);if(x===ae&&S===ge)return{x,y:S};if(Gn===0||ir===0)return pe(x,S,ae,ge,Ue).point;var Tr=(x-ae)/2,ni=(S-ge)/2,ns={x:Zt(Zn)*Tr+bt(Zn)*ni,y:-bt(Zn)*Tr+Zt(Zn)*ni},is=Math.pow(ns.x,2)/Math.pow(Gn,2)+Math.pow(ns.y,2)/Math.pow(ir,2);is>1&&(Gn*=wn(is),ir*=wn(is));var bi=Math.pow(Gn,2)*Math.pow(ir,2)-Math.pow(Gn,2)*Math.pow(ns.y,2)-Math.pow(ir,2)*Math.pow(ns.x,2),Ri=Math.pow(Gn,2)*Math.pow(ns.y,2)+Math.pow(ir,2)*Math.pow(ns.x,2),Gs=bi/Ri;Gs=Gs<0?0:Gs;var _s=(k!==G?1:-1)*wn(Gs),Hs={x:_s*(Gn*ns.y/ir),y:_s*(-(ir*ns.x)/Gn)},Zs={x:Zt(Zn)*Hs.x-bt(Zn)*Hs.y+(x+ae)/2,y:bt(Zn)*Hs.x+Zt(Zn)*Hs.y+(S+ge)/2},Ia={x:(ns.x-Hs.x)/Gn,y:(ns.y-Hs.y)/ir},Po=Ae({x:1,y:0},Ia),Ml={x:(-ns.x-Hs.x)/Gn,y:(-ns.y-Hs.y)/ir},El=Ae(Ia,Ml);!G&&El>0?El-=2*mn:G&&El<0&&(El+=2*mn),El%=2*mn;var Ys=Po+El*Ue,U=Gn*Zt(Ys),R=ir*bt(Ys),$={x:Zt(Zn)*U-bt(Zn)*R+Zs.x,y:bt(Zn)*U+Zt(Zn)*R+Zs.y};return $}function Ut(x,S,f,A,_,k,G,ae,ge,Ue,rt){var bt,Zt=rt.bbox,wn=Zt===void 0?!0:Zt,mn=rt.length,Gn=mn===void 0?!0:mn,ir=rt.sampleSize,tr=ir===void 0?30:ir,Zn=typeof Ue=="number",Tr=x,ni=S,ns=0,is=[Tr,ni,ns],bi=[Tr,ni],Ri=0,Gs={x:0,y:0},_s=[{x:Tr,y:ni}];Zn&&Ue<=0&&(Gs={x:Tr,y:ni});for(var Hs=0;Hs<=tr;Hs+=1){if(Ri=Hs/tr,bt=Pe(x,S,f,A,_,k,G,ae,ge,Ri),Tr=bt.x,ni=bt.y,wn&&_s.push({x:Tr,y:ni}),Gn&&(ns+=(0,Ee.y)(bi,[Tr,ni])),bi=[Tr,ni],Zn&&ns>=Ue&&Ue>is[2]){var Zs=(ns-Ue)/(ns-is[2]);Gs={x:bi[0]*(1-Zs)+is[0]*Zs,y:bi[1]*(1-Zs)+is[1]*Zs}}is=[Tr,ni,ns]}return Zn&&Ue>=ns&&(Gs={x:ae,y:ge}),{length:ns,point:Gs,min:{x:Math.min.apply(null,_s.map(function(Ia){return Ia.x})),y:Math.min.apply(null,_s.map(function(Ia){return Ia.y}))},max:{x:Math.max.apply(null,_s.map(function(Ia){return Ia.x})),y:Math.max.apply(null,_s.map(function(Ia){return Ia.y}))}}}function jt(x,S,f,A,_,k,G,ae,ge){var Ue=1-ge;return{x:Math.pow(Ue,3)*x+3*Math.pow(Ue,2)*ge*f+3*Ue*Math.pow(ge,2)*_+Math.pow(ge,3)*G,y:Math.pow(Ue,3)*S+3*Math.pow(Ue,2)*ge*A+3*Ue*Math.pow(ge,2)*k+Math.pow(ge,3)*ae}}function ft(x,S,f,A,_,k,G,ae,ge,Ue){var rt,bt=Ue.bbox,Zt=bt===void 0?!0:bt,wn=Ue.length,mn=wn===void 0?!0:wn,Gn=Ue.sampleSize,ir=Gn===void 0?10:Gn,tr=typeof ge=="number",Zn=x,Tr=S,ni=0,ns=[Zn,Tr,ni],is=[Zn,Tr],bi=0,Ri={x:0,y:0},Gs=[{x:Zn,y:Tr}];tr&&ge<=0&&(Ri={x:Zn,y:Tr});for(var _s=0;_s<=ir;_s+=1){if(bi=_s/ir,rt=jt(x,S,f,A,_,k,G,ae,bi),Zn=rt.x,Tr=rt.y,Zt&&Gs.push({x:Zn,y:Tr}),mn&&(ni+=(0,Ee.y)(is,[Zn,Tr])),is=[Zn,Tr],tr&&ni>=ge&&ge>ns[2]){var Hs=(ni-ge)/(ni-ns[2]);Ri={x:is[0]*(1-Hs)+ns[0]*Hs,y:is[1]*(1-Hs)+ns[1]*Hs}}ns=[Zn,Tr,ni]}return tr&&ge>=ni&&(Ri={x:G,y:ae}),{length:ni,point:Ri,min:{x:Math.min.apply(null,Gs.map(function(Zs){return Zs.x})),y:Math.min.apply(null,Gs.map(function(Zs){return Zs.y}))},max:{x:Math.max.apply(null,Gs.map(function(Zs){return Zs.x})),y:Math.max.apply(null,Gs.map(function(Zs){return Zs.y}))}}}function on(x,S,f,A,_,k,G){var ae=1-G;return{x:Math.pow(ae,2)*x+2*ae*G*f+Math.pow(G,2)*_,y:Math.pow(ae,2)*S+2*ae*G*A+Math.pow(G,2)*k}}function hn(x,S,f,A,_,k,G,ae){var ge,Ue=ae.bbox,rt=Ue===void 0?!0:Ue,bt=ae.length,Zt=bt===void 0?!0:bt,wn=ae.sampleSize,mn=wn===void 0?10:wn,Gn=typeof G=="number",ir=x,tr=S,Zn=0,Tr=[ir,tr,Zn],ni=[ir,tr],ns=0,is={x:0,y:0},bi=[{x:ir,y:tr}];Gn&&G<=0&&(is={x:ir,y:tr});for(var Ri=0;Ri<=mn;Ri+=1){if(ns=Ri/mn,ge=on(x,S,f,A,_,k,ns),ir=ge.x,tr=ge.y,rt&&bi.push({x:ir,y:tr}),Zt&&(Zn+=(0,Ee.y)(ni,[ir,tr])),ni=[ir,tr],Gn&&Zn>=G&&G>Tr[2]){var Gs=(Zn-G)/(Zn-Tr[2]);is={x:ni[0]*(1-Gs)+Tr[0]*Gs,y:ni[1]*(1-Gs)+Tr[1]*Gs}}Tr=[ir,tr,Zn]}return Gn&&G>=Zn&&(is={x:_,y:k}),{length:Zn,point:is,min:{x:Math.min.apply(null,bi.map(function(_s){return _s.x})),y:Math.min.apply(null,bi.map(function(_s){return _s.y}))},max:{x:Math.max.apply(null,bi.map(function(_s){return _s.x})),y:Math.max.apply(null,bi.map(function(_s){return _s.y}))}}}function lt(x,S,f){for(var A,_,k,G,ae,ge,Ue=Mt(x),rt=typeof S=="number",bt,Zt=[],wn,mn=0,Gn=0,ir=0,tr=0,Zn,Tr=[],ni=[],ns=0,is={x:0,y:0},bi=is,Ri=is,Gs=is,_s=0,Hs=0,Zs=Ue.length;Hs=S&&(Gs=Ri),ni.push(bi),Tr.push(is),_s+=ns,ge=wn!=="Z"?Zn.slice(-2):[ir,tr],mn=ge[0],Gn=ge[1];return rt&&S>=_s&&(Gs={x:mn,y:Gn}),{length:_s,point:Gs,min:{x:Math.min.apply(null,Tr.map(function(Ia){return Ia.x})),y:Math.min.apply(null,Tr.map(function(Ia){return Ia.y}))},max:{x:Math.max.apply(null,ni.map(function(Ia){return Ia.x})),y:Math.max.apply(null,ni.map(function(Ia){return Ia.y}))}}}function Ct(x,S){return lt(x,void 0,(0,vt.pi)((0,vt.pi)({},S),{bbox:!1,length:!0})).length}var sn=b(2078),W=b(82639),Se=b(5131),Ht=function(x,S){return(x%S+S)%S},zt=Ht;function Fn(x,S,f){if(x[f].length>7){x[f].shift();for(var A=x[f],_=f;A.length;)S[f]="A",x.splice(_+=1,0,["C"].concat(A.splice(0,6)));x.splice(f,1)}}function Tn(x){return Bn(x)&&x.every(function(S){var f=S[0];return"MC".includes(f)})}var lr=b(66045);function je(x,S,f,A,_,k){var G=.3333333333333333,ae=2/3;return[G*x+ae*f,G*S+ae*A,G*_+ae*f,G*k+ae*A,_,k]}var be=function(x,S,f,A){var _=.5,k=Et([x,S],[f,A],_);return(0,vt.ev)((0,vt.ev)([],k,!0),[f,A,f,A],!1)};function it(x,S){var f=x[0],A=x.slice(1).map(Number),_=A[0],k=A[1],G,ae=S.x1,ge=S.y1,Ue=S.x,rt=S.y;switch("TQ".includes(f)||(S.qx=null,S.qy=null),f){case"M":return S.x=_,S.y=k,x;case"A":return G=[ae,ge].concat(A),["C"].concat((0,lr.W)(G[0],G[1],G[2],G[3],G[4],G[5],G[6],G[7],G[8],G[9]));case"Q":return S.qx=_,S.qy=k,G=[ae,ge].concat(A),["C"].concat(je(G[0],G[1],G[2],G[3],G[4],G[5]));case"L":return["C"].concat(be(ae,ge,_,k));case"Z":return ae===Ue&&ge===rt?["C",ae,ge,Ue,rt,Ue,rt]:["C"].concat(be(ae,ge,Ue,rt));default:}return x}function wt(x,S){if(S===void 0&&(S=!1),Tn(x)){var f=[].concat(x);return S?[f,[]]:f}for(var A=Mt(x),_=(0,vt.pi)({},Lt),k=[],G="",ae=A.length,ge,Ue,rt=[],bt=0;btot)return console.warn("Maximum recursion depth reached in equalizeSegments"),[x,S];var _=_t(x),k=_t(S),G=_.length,ae=k.length,ge=_.filter(function(tr){return tr.l}).length,Ue=k.filter(function(tr){return tr.l}).length,rt=_.filter(function(tr){return tr.l}).reduce(function(tr,Zn){var Tr=Zn.l;return tr+Tr},0)/ge||0,bt=k.filter(function(tr){return tr.l}).reduce(function(tr,Zn){var Tr=Zn.l;return tr+Tr},0)/Ue||0,Zt=f||Math.max(G,ae),wn=[rt,bt],mn=[Zt-G,Zt-ae],Gn=0,ir=[_,k].map(function(tr,Zn){return tr.l===Zt?tr.map(function(Tr){return Tr.s}):tr.map(function(Tr,ni){return Gn=ni&&mn[Zn]&&Tr.l>=wn[Zn],mn[Zn]-=Gn?1:0,Gn?Tr.ss:[Tr.s]}).flat()});return ir[0].length===ir[1].length?ir:$t(ir[0],ir[1],Zt,A+1)}function Vt(x,S,f,A,_,k,G,ae){return 3*((ae-S)*(f+_)-(G-x)*(A+k)+A*(x-_)-f*(S-k)+ae*(_+x/3)-G*(k+S/3))/20}function Qt(x){var S=0,f=0,A=0;return wt(x).map(function(_){var k;switch(_[0]){case"M":return S=_[1],f=_[2],0;default:var G=_.slice(1),ae=G[0],ge=G[1],Ue=G[2],rt=G[3],bt=G[4],Zt=G[5];return A=Vt(S,f,ae,ge,Ue,rt,bt,Zt),k=_.slice(-2),S=k[0],f=k[1],A}}).reduce(function(_,k){return _+k},0)}function cn(x){return Qt(x)>=0}function Yn(x){var S=x.slice(1).map(function(f,A,_){return A?_[A-1].slice(-2).concat(f.slice(1)):x[0].slice(1).concat(f.slice(1))}).map(function(f){return f.map(function(A,_){return f[f.length-_-2*(1-_%2)]})}).reverse();return[["M"].concat(S[0].slice(0,2))].concat(S.map(function(f){return["C"].concat(f.slice(2))}))}function qn(x){return x.map(function(S){return Array.isArray(S)?[].concat(S):S})}function Sr(x){var S=x.length,f=S-1;return x.map(function(A,_){return x.map(function(k,G){var ae=_+G,ge;return G===0||x[ae]&&x[ae][0]==="M"?(ge=x[ae],["M"].concat(ge.slice(-2))):(ae>=S&&(ae-=f),x[ae])})})}function Jr(x,S){var f=x.length-1,A=[],_=0,k=0,G=Sr(x);return G.forEach(function(ae,ge){x.slice(1).forEach(function(Ue,rt){k+=(0,Ee.y)(x[(ge+rt)%f].slice(-2),S[rt%f].slice(-2))}),A[ge]=k,k=0}),_=A.indexOf(Math.min.apply(null,A)),G[_]}var vr=b(49527),Ki=b(39934),Mi=b(50264),yi=b(71018),qr=b(93785);function es(x,S,f){return lt(x,S,(0,vt.pi)((0,vt.pi)({},f),{bbox:!1,length:!0})).point}var Ci=b(20068),En=b(34907),rn=b(97047),Xt=b(19606),st=b(75044),dt=b(3202),Wt=b(19251),bn=b(75931);var Jt=function(x){return x.GROUP="g",x.FRAGMENT="fragment",x.CIRCLE="circle",x.ELLIPSE="ellipse",x.IMAGE="image",x.RECT="rect",x.LINE="line",x.POLYLINE="polyline",x.POLYGON="polygon",x.TEXT="text",x.PATH="path",x.HTML="html",x.MESH="mesh",x}({}),ar=function(x){return x[x.ZERO=0]="ZERO",x[x.NEGATIVE_ONE=1]="NEGATIVE_ONE",x}({}),rr=function(){function x(){(0,Z.Z)(this,x),this.plugins=[]}return(0,V.Z)(x,[{key:"addRenderingPlugin",value:function(f){this.plugins.push(f),this.context.renderingPlugins.push(f)}},{key:"removeAllRenderingPlugins",value:function(){var f=this;this.plugins.forEach(function(A){var _=f.context.renderingPlugins.indexOf(A);_>=0&&f.context.renderingPlugins.splice(_,1)})}}])}(),Kr=function(){function x(S){(0,Z.Z)(this,x),this.clipSpaceNearZ=ar.NEGATIVE_ONE,this.plugins=[],this.config=(0,m.Z)({enableDirtyCheck:!0,enableCulling:!1,enableAutoRendering:!0,enableDirtyRectangleRendering:!0,enableDirtyRectangleRenderingDebug:!1,enableSizeAttenuation:!0,enableRenderingOptimization:!1},S)}return(0,V.Z)(x,[{key:"registerPlugin",value:function(f){var A=this.plugins.findIndex(function(_){return _===f});A===-1&&this.plugins.push(f)}},{key:"unregisterPlugin",value:function(f){var A=this.plugins.findIndex(function(_){return _===f});A>-1&&this.plugins.splice(A,1)}},{key:"getPlugins",value:function(){return this.plugins}},{key:"getPlugin",value:function(f){return this.plugins.find(function(A){return A.name===f})}},{key:"getConfig",value:function(){return this.config}},{key:"setConfig",value:function(f){Object.assign(this.config,f)}}])}(),si=D.IH,Ie=D.JG,L=D.Fp,Q=D.VV,w=D.bA,z=D.lu,ie=function(){function x(){(0,Z.Z)(this,x),this.center=[0,0,0],this.halfExtents=[0,0,0],this.min=[0,0,0],this.max=[0,0,0]}return(0,V.Z)(x,[{key:"update",value:function(f,A){Ie(this.center,f),Ie(this.halfExtents,A),z(this.min,this.center,this.halfExtents),si(this.max,this.center,this.halfExtents)}},{key:"setMinMax",value:function(f,A){si(this.center,A,f),w(this.center,this.center,.5),z(this.halfExtents,A,f),w(this.halfExtents,this.halfExtents,.5),Ie(this.min,f),Ie(this.max,A)}},{key:"getMin",value:function(){return this.min}},{key:"getMax",value:function(){return this.max}},{key:"add",value:function(f){if(!x.isEmpty(f)){if(x.isEmpty(this)){this.setMinMax(f.getMin(),f.getMax());return}var A=this.center,_=A[0],k=A[1],G=A[2],ae=this.halfExtents,ge=ae[0],Ue=ae[1],rt=ae[2],bt=_-ge,Zt=_+ge,wn=k-Ue,mn=k+Ue,Gn=G-rt,ir=G+rt,tr=f.center,Zn=tr[0],Tr=tr[1],ni=tr[2],ns=f.halfExtents,is=ns[0],bi=ns[1],Ri=ns[2],Gs=Zn-is,_s=Zn+is,Hs=Tr-bi,Zs=Tr+bi,Ia=ni-Ri,Po=ni+Ri;GsZt&&(Zt=_s),Hsmn&&(mn=Zs),Iair&&(ir=Po),A[0]=(bt+Zt)*.5,A[1]=(wn+mn)*.5,A[2]=(Gn+ir)*.5,ae[0]=(Zt-bt)*.5,ae[1]=(mn-wn)*.5,ae[2]=(ir-Gn)*.5,this.min[0]=bt,this.min[1]=wn,this.min[2]=Gn,this.max[0]=Zt,this.max[1]=mn,this.max[2]=ir}}},{key:"setFromTransformedAABB",value:function(f,A){var _=this.center,k=this.halfExtents,G=f.center,ae=f.halfExtents,ge=A[0],Ue=A[4],rt=A[8],bt=A[1],Zt=A[5],wn=A[9],mn=A[2],Gn=A[6],ir=A[10],tr=Math.abs(ge),Zn=Math.abs(Ue),Tr=Math.abs(rt),ni=Math.abs(bt),ns=Math.abs(Zt),is=Math.abs(wn),bi=Math.abs(mn),Ri=Math.abs(Gn),Gs=Math.abs(ir);_[0]=A[12]+ge*G[0]+Ue*G[1]+rt*G[2],_[1]=A[13]+bt*G[0]+Zt*G[1]+wn*G[2],_[2]=A[14]+mn*G[0]+Gn*G[1]+ir*G[2],k[0]=tr*ae[0]+Zn*ae[1]+Tr*ae[2],k[1]=ni*ae[0]+ns*ae[1]+is*ae[2],k[2]=bi*ae[0]+Ri*ae[1]+Gs*ae[2],z(this.min,_,k),si(this.max,_,k)}},{key:"intersects",value:function(f){var A=this.getMax(),_=this.getMin(),k=f.getMax(),G=f.getMin();return _[0]<=k[0]&&A[0]>=G[0]&&_[1]<=k[1]&&A[1]>=G[1]&&_[2]<=k[2]&&A[2]>=G[2]}},{key:"intersection",value:function(f){if(!this.intersects(f))return null;var A=new x,_=L([0,0,0],this.getMin(),f.getMin()),k=Q([0,0,0],this.getMax(),f.getMax());return A.setMinMax(_,k),A}},{key:"getNegativeFarPoint",value:function(f){return f.pnVertexFlag===273?Ie([0,0,0],this.min):f.pnVertexFlag===272?[this.min[0],this.min[1],this.max[2]]:f.pnVertexFlag===257?[this.min[0],this.max[1],this.min[2]]:f.pnVertexFlag===256?[this.min[0],this.max[1],this.max[2]]:f.pnVertexFlag===17?[this.max[0],this.min[1],this.min[2]]:f.pnVertexFlag===16?[this.max[0],this.min[1],this.max[2]]:f.pnVertexFlag===1?[this.max[0],this.max[1],this.min[2]]:[this.max[0],this.max[1],this.max[2]]}},{key:"getPositiveFarPoint",value:function(f){return f.pnVertexFlag===273?Ie([0,0,0],this.max):f.pnVertexFlag===272?[this.max[0],this.max[1],this.min[2]]:f.pnVertexFlag===257?[this.max[0],this.min[1],this.max[2]]:f.pnVertexFlag===256?[this.max[0],this.min[1],this.min[2]]:f.pnVertexFlag===17?[this.min[0],this.max[1],this.max[2]]:f.pnVertexFlag===16?[this.min[0],this.max[1],this.min[2]]:f.pnVertexFlag===1?[this.min[0],this.min[1],this.max[2]]:[this.min[0],this.min[1],this.min[2]]}}],[{key:"isEmpty",value:function(f){return!f||f.halfExtents[0]===0&&f.halfExtents[1]===0&&f.halfExtents[2]===0}}])}(),ze=function(){function x(S,f){(0,Z.Z)(this,x),this.distance=S||0,this.normal=f||D.al(0,1,0),this.updatePNVertexFlag()}return(0,V.Z)(x,[{key:"updatePNVertexFlag",value:function(){this.pnVertexFlag=(+(this.normal[0]>=0)<<8)+(+(this.normal[1]>=0)<<4)+ +(this.normal[2]>=0)}},{key:"distanceToPoint",value:function(f){return D.AK(f,this.normal)-this.distance}},{key:"normalize",value:function(){var f=1/D.Zh(this.normal);D.bA(this.normal,this.normal,f),this.distance*=f}},{key:"intersectsLine",value:function(f,A,_){var k=this.distanceToPoint(f),G=this.distanceToPoint(A),ae=k/(k-G),ge=ae>=0&&ae<=1;return ge&&_&&D.t7(_,f,A,ae),ge}}])}(),Je=function(x){return x[x.OUTSIDE=4294967295]="OUTSIDE",x[x.INSIDE=0]="INSIDE",x[x.INDETERMINATE=2147483647]="INDETERMINATE",x}({}),At=function(){function x(S){if((0,Z.Z)(this,x),this.planes=[],S)this.planes=S;else for(var f=0;f<6;f++)this.planes.push(new ze)}return(0,V.Z)(x,[{key:"extractFromVPMatrix",value:function(f){var A=(0,C.Z)(f,16),_=A[0],k=A[1],G=A[2],ae=A[3],ge=A[4],Ue=A[5],rt=A[6],bt=A[7],Zt=A[8],wn=A[9],mn=A[10],Gn=A[11],ir=A[12],tr=A[13],Zn=A[14],Tr=A[15];D.t8(this.planes[0].normal,ae-_,bt-ge,Gn-Zt),this.planes[0].distance=Tr-ir,D.t8(this.planes[1].normal,ae+_,bt+ge,Gn+Zt),this.planes[1].distance=Tr+ir,D.t8(this.planes[2].normal,ae+k,bt+Ue,Gn+wn),this.planes[2].distance=Tr+tr,D.t8(this.planes[3].normal,ae-k,bt-Ue,Gn-wn),this.planes[3].distance=Tr-tr,D.t8(this.planes[4].normal,ae-G,bt-rt,Gn-mn),this.planes[4].distance=Tr-Zn,D.t8(this.planes[5].normal,ae+G,bt+rt,Gn+mn),this.planes[5].distance=Tr+Zn,this.planes.forEach(function(ni){ni.normalize(),ni.updatePNVertexFlag()})}}])}(),xt=function(){function x(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;(0,Z.Z)(this,x),this.x=0,this.y=0,this.x=S,this.y=f}return(0,V.Z)(x,[{key:"clone",value:function(){return new x(this.x,this.y)}},{key:"copyFrom",value:function(f){this.x=f.x,this.y=f.y}}])}(),Sn=function(){function x(S,f,A,_){(0,Z.Z)(this,x),this.x=S,this.y=f,this.width=A,this.height=_,this.left=S,this.right=S+A,this.top=f,this.bottom=f+_}return(0,V.Z)(x,[{key:"toJSON",value:function(){}}],[{key:"fromRect",value:function(f){return new x(f.x,f.y,f.width,f.height)}},{key:"applyTransform",value:function(f,A){var _=X.al(f.x,f.y,0,1),k=X.al(f.x+f.width,f.y,0,1),G=X.al(f.x,f.y+f.height,0,1),ae=X.al(f.x+f.width,f.y+f.height,0,1),ge=X.Ue(),Ue=X.Ue(),rt=X.Ue(),bt=X.Ue();X.fF(ge,_,A),X.fF(Ue,k,A),X.fF(rt,G,A),X.fF(bt,ae,A);var Zt=Math.min(ge[0],Ue[0],rt[0],bt[0]),wn=Math.min(ge[1],Ue[1],rt[1],bt[1]),mn=Math.max(ge[0],Ue[0],rt[0],bt[0]),Gn=Math.max(ge[1],Ue[1],rt[1],bt[1]);return x.fromRect({x:Zt,y:wn,width:mn-Zt,height:Gn-wn})}}])}(),Oe="Method not implemented.",Qe="Use document.documentElement instead.",Re="Cannot append a destroyed element.";function Ke(x){return x===void 0?0:x>360||x<-360?x%360:x}var gt=D.Ue();function tn(x){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;return Array.isArray(x)&&x.length===3?A?D.d9(x):D.JG(gt,x):(0,ve.Z)(x)?A?D.al(x,S,f):D.t8(gt,x,S,f):A?D.al(x[0],x[1]||S,x[2]||f):D.t8(gt,x[0],x[1]||S,x[2]||f)}var yt=Math.PI/180;function Yt(x){return x*yt}var Rn=180/Math.PI;function er(x){return x*Rn}var Jn=.9;function kr(x){return x%=400,x<0&&(x+=400),x*Jn}function fr(x){return x/360}function wr(x){return 360*x}var ei=Math.PI/2;function _n(x,S){var f=S[0],A=S[1],_=S[2],k=S[3],G=f*f,ae=A*A,ge=_*_,Ue=k*k,rt=G+ae+ge+Ue,bt=f*k-A*_;return bt>.499995*rt?(x[0]=ei,x[1]=2*Math.atan2(A,f),x[2]=0):bt<-.499995*rt?(x[0]=-ei,x[1]=2*Math.atan2(A,f),x[2]=0):(x[0]=Math.asin(2*(f*_-k*A)),x[1]=Math.atan2(2*(f*k+A*_),1-2*(ge+Ue)),x[2]=Math.atan2(2*(f*A+_*k),1-2*(ae+ge))),x}function jn(x,S){var f,A,_=j.getScaling(D.Ue(),S),k=(0,C.Z)(_,3),G=k[0],ae=k[1],ge=k[2],Ue=Math.asin(-S[2]/G);return Ue-ei?(f=Math.atan2(S[6]/ae,S[10]/ge),A=Math.atan2(S[1]/G,S[0]/G)):(A=0,f=-Math.atan2(S[4]/ae,S[5]/ae)):(A=0,f=Math.atan2(S[4]/ae,S[5]/ae)),x[0]=f,x[1]=Ue,x[2]=A,x}function Hr(x,S){return S.length===16?jn(x,S):_n(x,S)}function Pr(x,S,f,A,_){var k=Math.cos(x),G=Math.sin(x);return de.al(A*k,_*G,0,-A*G,_*k,0,S,f,1)}function $i(x,S,f,A,_,k,G){var ae=arguments.length>7&&arguments[7]!==void 0?arguments[7]:!1,ge=2*k,Ue=f-S,rt=A-_,bt=ge/Ue,Zt=ge/rt,wn=(f+S)/Ue,mn=(A+_)/rt,Gn,ir,tr=G-k,Zn=G*k;return ae?(Gn=-G/tr,ir=-Zn/tr):(Gn=-(G+k)/tr,ir=-2*Zn/tr),x[0]=bt,x[1]=0,x[2]=0,x[3]=0,x[4]=0,x[5]=Zt,x[6]=0,x[7]=0,x[8]=wn,x[9]=mn,x[10]=Gn,x[11]=-1,x[12]=0,x[13]=0,x[14]=ir,x[15]=0,x}function Zi(x){var S=x[0],f=x[1],A=x[3],_=x[4],k=Math.sqrt(S*S+f*f),G=Math.sqrt(A*A+_*_),ae=S*_-f*A;if(ae<0&&(S<_?k=-k:G=-G),k){var ge=1/k;S*=ge,f*=ge}if(G){var Ue=1/G;A*=Ue,_*=Ue}var rt=Math.atan2(f,S),bt=er(rt);return[x[6],x[7],k,G,bt]}var Xi=j.create(),Ei=j.create(),ms=X.Ue(),_i=[D.Ue(),D.Ue(),D.Ue()],Es=D.Ue();function ua(x,S,f,A,_,k){if(!Hn(Xi,x)||(j.copy(Ei,Xi),Ei[3]=0,Ei[7]=0,Ei[11]=0,Ei[15]=1,Math.abs(j.determinant(Ei))<1e-8))return!1;var G=Xi[3],ae=Xi[7],ge=Xi[11],Ue=Xi[12],rt=Xi[13],bt=Xi[14],Zt=Xi[15];if(G!==0||ae!==0||ge!==0){ms[0]=G,ms[1]=ae,ms[2]=ge,ms[3]=Zt;var wn=j.invert(Ei,Ei);if(!wn)return!1;j.transpose(Ei,Ei),X.fF(_,ms,Ei)}else _[0]=_[1]=_[2]=0,_[3]=1;if(S[0]=Ue,S[1]=rt,S[2]=bt,Pt(_i,Xi),f[0]=D.kE(_i[0]),D.Fv(_i[0],_i[0]),A[0]=D.AK(_i[0],_i[1]),Gt(_i[1],_i[1],_i[0],1,-A[0]),f[1]=D.kE(_i[1]),D.Fv(_i[1],_i[1]),A[0]/=f[1],A[1]=D.AK(_i[0],_i[2]),Gt(_i[2],_i[2],_i[0],1,-A[1]),A[2]=D.AK(_i[1],_i[2]),Gt(_i[2],_i[2],_i[1],1,-A[2]),f[2]=D.kE(_i[2]),D.Fv(_i[2],_i[2]),A[1]/=f[2],A[2]/=f[2],D.kC(Es,_i[1],_i[2]),D.AK(_i[0],Es)<0)for(var mn=0;mn<3;mn++)f[mn]*=-1,_i[mn][0]*=-1,_i[mn][1]*=-1,_i[mn][2]*=-1;return k[0]=.5*Math.sqrt(Math.max(1+_i[0][0]-_i[1][1]-_i[2][2],0)),k[1]=.5*Math.sqrt(Math.max(1-_i[0][0]+_i[1][1]-_i[2][2],0)),k[2]=.5*Math.sqrt(Math.max(1-_i[0][0]-_i[1][1]+_i[2][2],0)),k[3]=.5*Math.sqrt(Math.max(1+_i[0][0]+_i[1][1]+_i[2][2],0)),_i[2][1]>_i[1][2]&&(k[0]=-k[0]),_i[0][2]>_i[2][0]&&(k[1]=-k[1]),_i[1][0]>_i[0][1]&&(k[2]=-k[2]),!0}function Hn(x,S){var f=S[15];if(f===0)return!1;for(var A=1/f,_=0;_<16;_++)x[_]=S[_]*A;return!0}function Pt(x,S){x[0][0]=S[0],x[0][1]=S[1],x[0][2]=S[2],x[1][0]=S[4],x[1][1]=S[5],x[1][2]=S[6],x[2][0]=S[8],x[2][1]=S[9],x[2][2]=S[10]}function Gt(x,S,f,A,_){x[0]=S[0]*A+f[0]*_,x[1]=S[1]*A+f[1]*_,x[2]=S[2]*A+f[2]*_}var Bt=function(x){return x[x.ORBITING=0]="ORBITING",x[x.EXPLORING=1]="EXPLORING",x[x.TRACKING=2]="TRACKING",x}({}),yn=function(x){return x[x.DEFAULT=0]="DEFAULT",x[x.ROTATIONAL=1]="ROTATIONAL",x[x.TRANSLATIONAL=2]="TRANSLATIONAL",x[x.CINEMATIC=3]="CINEMATIC",x}({}),Ln=function(x){return x[x.ORTHOGRAPHIC=0]="ORTHOGRAPHIC",x[x.PERSPECTIVE=1]="PERSPECTIVE",x}({}),gr={UPDATED:"updated"},Rr=2e-4,$r=function(){function x(){(0,Z.Z)(this,x),this.clipSpaceNearZ=ar.NEGATIVE_ONE,this.eventEmitter=new H,this.matrix=j.create(),this.right=D.al(1,0,0),this.up=D.al(0,1,0),this.forward=D.al(0,0,1),this.position=D.al(0,0,1),this.focalPoint=D.al(0,0,0),this.distanceVector=D.al(0,0,-1),this.distance=1,this.azimuth=0,this.elevation=0,this.roll=0,this.relAzimuth=0,this.relElevation=0,this.relRoll=0,this.dollyingStep=0,this.maxDistance=1/0,this.minDistance=-1/0,this.zoom=1,this.rotateWorld=!1,this.fov=30,this.near=.1,this.far=1e3,this.aspect=1,this.projectionMatrix=j.create(),this.projectionMatrixInverse=j.create(),this.jitteredProjectionMatrix=void 0,this.enableUpdate=!0,this.type=Bt.EXPLORING,this.trackingMode=yn.DEFAULT,this.projectionMode=Ln.PERSPECTIVE,this.frustum=new At,this.orthoMatrix=j.create()}return(0,V.Z)(x,[{key:"isOrtho",value:function(){return this.projectionMode===Ln.ORTHOGRAPHIC}},{key:"getProjectionMode",value:function(){return this.projectionMode}},{key:"getPerspective",value:function(){return this.jitteredProjectionMatrix||this.projectionMatrix}},{key:"getPerspectiveInverse",value:function(){return this.projectionMatrixInverse}},{key:"getFrustum",value:function(){return this.frustum}},{key:"getPosition",value:function(){return this.position}},{key:"getFocalPoint",value:function(){return this.focalPoint}},{key:"getDollyingStep",value:function(){return this.dollyingStep}},{key:"getNear",value:function(){return this.near}},{key:"getFar",value:function(){return this.far}},{key:"getZoom",value:function(){return this.zoom}},{key:"getOrthoMatrix",value:function(){return this.orthoMatrix}},{key:"getView",value:function(){return this.view}},{key:"setEnableUpdate",value:function(f){this.enableUpdate=f}},{key:"setType",value:function(f,A){return this.type=f,this.type===Bt.EXPLORING?this.setWorldRotation(!0):this.setWorldRotation(!1),this._getAngles(),this.type===Bt.TRACKING&&A!==void 0&&this.setTrackingMode(A),this}},{key:"setProjectionMode",value:function(f){return this.projectionMode=f,this}},{key:"setTrackingMode",value:function(f){if(this.type!==Bt.TRACKING)throw new Error("Impossible to set a tracking mode if the camera is not of tracking type");return this.trackingMode=f,this}},{key:"setWorldRotation",value:function(f){return this.rotateWorld=f,this._getAngles(),this}},{key:"getViewTransform",value:function(){return j.invert(j.create(),this.matrix)}},{key:"getWorldTransform",value:function(){return this.matrix}},{key:"jitterProjectionMatrix",value:function(f,A){var _=j.fromTranslation(j.create(),[f,A,0]);this.jitteredProjectionMatrix=j.multiply(j.create(),_,this.projectionMatrix)}},{key:"clearJitterProjectionMatrix",value:function(){this.jitteredProjectionMatrix=void 0}},{key:"setMatrix",value:function(f){return this.matrix=f,this._update(),this}},{key:"setProjectionMatrix",value:function(f){this.projectionMatrix=f}},{key:"setFov",value:function(f){return this.setPerspective(this.near,this.far,f,this.aspect),this}},{key:"setAspect",value:function(f){return this.setPerspective(this.near,this.far,this.fov,f),this}},{key:"setNear",value:function(f){return this.projectionMode===Ln.PERSPECTIVE?this.setPerspective(f,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,f,this.far),this}},{key:"setFar",value:function(f){return this.projectionMode===Ln.PERSPECTIVE?this.setPerspective(this.near,f,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,f),this}},{key:"setViewOffset",value:function(f,A,_,k,G,ae){return this.aspect=f/A,this.view===void 0&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=f,this.view.fullHeight=A,this.view.offsetX=_,this.view.offsetY=k,this.view.width=G,this.view.height=ae,this.projectionMode===Ln.PERSPECTIVE?this.setPerspective(this.near,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far),this}},{key:"clearViewOffset",value:function(){return this.view!==void 0&&(this.view.enabled=!1),this.projectionMode===Ln.PERSPECTIVE?this.setPerspective(this.near,this.far,this.fov,this.aspect):this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far),this}},{key:"setZoom",value:function(f){return this.zoom=f,this.projectionMode===Ln.ORTHOGRAPHIC?this.setOrthographic(this.left,this.rright,this.top,this.bottom,this.near,this.far):this.projectionMode===Ln.PERSPECTIVE&&this.setPerspective(this.near,this.far,this.fov,this.aspect),this}},{key:"setZoomByViewportPoint",value:function(f,A){var _=this.canvas.viewport2Canvas({x:A[0],y:A[1]}),k=_.x,G=_.y,ae=this.roll;this.rotate(0,0,-ae),this.setPosition(k,G),this.setFocalPoint(k,G),this.setZoom(f),this.rotate(0,0,ae);var ge=this.canvas.viewport2Canvas({x:A[0],y:A[1]}),Ue=ge.x,rt=ge.y,bt=D.al(Ue-k,rt-G,0),Zt=D.AK(bt,this.right)/D.kE(this.right),wn=D.AK(bt,this.up)/D.kE(this.up),mn=this.getPosition(),Gn=(0,C.Z)(mn,2),ir=Gn[0],tr=Gn[1],Zn=this.getFocalPoint(),Tr=(0,C.Z)(Zn,2),ni=Tr[0],ns=Tr[1];return this.setPosition(ir-Zt,tr-wn),this.setFocalPoint(ni-Zt,ns-wn),this}},{key:"setPerspective",value:function(f,A,_,k){var G;this.projectionMode=Ln.PERSPECTIVE,this.fov=_,this.near=f,this.far=A,this.aspect=k;var ae=this.near*Math.tan(Yt(.5*this.fov))/this.zoom,ge=2*ae,Ue=this.aspect*ge,rt=-.5*Ue;if((G=this.view)!==null&&G!==void 0&&G.enabled){var bt=this.view.fullWidth,Zt=this.view.fullHeight;rt+=this.view.offsetX*Ue/bt,ae-=this.view.offsetY*ge/Zt,Ue*=this.view.width/bt,ge*=this.view.height/Zt}return $i(this.projectionMatrix,rt,rt+Ue,ae-ge,ae,f,this.far,this.clipSpaceNearZ===ar.ZERO),j.invert(this.projectionMatrixInverse,this.projectionMatrix),this.triggerUpdate(),this}},{key:"setOrthographic",value:function(f,A,_,k,G,ae){var ge;this.projectionMode=Ln.ORTHOGRAPHIC,this.rright=A,this.left=f,this.top=_,this.bottom=k,this.near=G,this.far=ae;var Ue=(this.rright-this.left)/(2*this.zoom),rt=(this.top-this.bottom)/(2*this.zoom),bt=(this.rright+this.left)/2,Zt=(this.top+this.bottom)/2,wn=bt-Ue,mn=bt+Ue,Gn=Zt+rt,ir=Zt-rt;if((ge=this.view)!==null&&ge!==void 0&&ge.enabled){var tr=(this.rright-this.left)/this.view.fullWidth/this.zoom,Zn=(this.top-this.bottom)/this.view.fullHeight/this.zoom;wn+=tr*this.view.offsetX,mn=wn+tr*this.view.width,Gn-=Zn*this.view.offsetY,ir=Gn-Zn*this.view.height}return this.clipSpaceNearZ===ar.NEGATIVE_ONE?j.ortho(this.projectionMatrix,wn,mn,Gn,ir,G,ae):j.orthoZO(this.projectionMatrix,wn,mn,Gn,ir,G,ae),j.invert(this.projectionMatrixInverse,this.projectionMatrix),this._getOrthoMatrix(),this.triggerUpdate(),this}},{key:"setPosition",value:function(f){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.position[1],_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.position[2],k=tn(f,A,_);return this._setPosition(k),this.setFocalPoint(this.focalPoint),this.triggerUpdate(),this}},{key:"setFocalPoint",value:function(f){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.focalPoint[1],_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.focalPoint[2],k=D.al(0,1,0);if(this.focalPoint=tn(f,A,_),this.trackingMode===yn.CINEMATIC){var G=D.$X(D.Ue(),this.focalPoint,this.position);f=G[0],A=G[1],_=G[2];var ae=D.kE(G),ge=er(Math.asin(A/ae)),Ue=90+er(Math.atan2(_,f)),rt=j.create();j.rotateY(rt,rt,Yt(Ue)),j.rotateX(rt,rt,Yt(ge)),k=D.fF(D.Ue(),[0,1,0],rt)}return j.invert(this.matrix,j.lookAt(j.create(),this.position,this.focalPoint,k)),this._getAxes(),this._getDistance(),this._getAngles(),this.triggerUpdate(),this}},{key:"getDistance",value:function(){return this.distance}},{key:"getDistanceVector",value:function(){return this.distanceVector}},{key:"setDistance",value:function(f){if(this.distance===f||f<0)return this;this.distance=f,this.distance>8&15|S>>4&240,S>>4&15|S&240,(S&15)<<4|S&15,1):f===8?ou(S>>24&255,S>>16&255,S>>8&255,(S&255)/255):f===4?ou(S>>12&15|S>>8&240,S>>8&15|S>>4&240,S>>4&15|S&240,((S&15)<<4|S&15)/255):null):(S=Lu.exec(x))?new Xo(S[1],S[2],S[3],1):(S=ao.exec(x))?new Xo(S[1]*255/100,S[2]*255/100,S[3]*255/100,1):(S=sl.exec(x))?ou(S[1],S[2],S[3],S[4]):(S=No.exec(x))?ou(S[1]*255/100,S[2]*255/100,S[3]*255/100,S[4]):(S=Uu.exec(x))?gd(S[1],S[2]/100,S[3]/100,1):(S=ws.exec(x))?gd(S[1],S[2]/100,S[3]/100,S[4]):Kh.hasOwnProperty(x)?pu(Kh[x]):x==="transparent"?new Xo(NaN,NaN,NaN,0):null}function pu(x){return new Xo(x>>16&255,x>>8&255,x&255,1)}function ou(x,S,f,A){return A<=0&&(x=S=f=NaN),new Xo(x,S,f,A)}function Ad(x){return x instanceof Ko||(x=sc(x)),x?(x=x.rgb(),new Xo(x.r,x.g,x.b,x.opacity)):new Xo}function hf(x,S,f,A){return arguments.length===1?Ad(x):new Xo(x,S,f,A==null?1:A)}function Xo(x,S,f,A){this.r=+x,this.g=+S,this.b=+f,this.opacity=+A}$a(Xo,hf,Zo(Ko,{brighter(x){return x=x==null?bo:Math.pow(bo,x),new Xo(this.r*x,this.g*x,this.b*x,this.opacity)},darker(x){return x=x==null?$o:Math.pow($o,x),new Xo(this.r*x,this.g*x,this.b*x,this.opacity)},rgb(){return this},clamp(){return new Xo(Vc(this.r),Vc(this.g),Vc(this.b),Ah(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:fh,formatHex:fh,formatHex8:Qf,formatRgb:pd,toString:pd}));function fh(){return`#${jo(this.r)}${jo(this.g)}${jo(this.b)}`}function Qf(){return`#${jo(this.r)}${jo(this.g)}${jo(this.b)}${jo((isNaN(this.opacity)?1:this.opacity)*255)}`}function pd(){const x=Ah(this.opacity);return`${x===1?"rgb(":"rgba("}${Vc(this.r)}, ${Vc(this.g)}, ${Vc(this.b)}${x===1?")":`, ${x})`}`}function Ah(x){return isNaN(x)?1:Math.max(0,Math.min(1,x))}function Vc(x){return Math.max(0,Math.min(255,Math.round(x)||0))}function jo(x){return x=Vc(x),(x<16?"0":"")+x.toString(16)}function gd(x,S,f,A){return A<=0?x=S=f=NaN:f<=0||f>=1?x=S=NaN:S<=0&&(x=NaN),new oo(x,S,f,A)}function lu(x){if(x instanceof oo)return new oo(x.h,x.s,x.l,x.opacity);if(x instanceof Ko||(x=sc(x)),!x)return new oo;if(x instanceof oo)return x;x=x.rgb();var S=x.r/255,f=x.g/255,A=x.b/255,_=Math.min(S,f,A),k=Math.max(S,f,A),G=NaN,ae=k-_,ge=(k+_)/2;return ae?(S===k?G=(f-A)/ae+(f0&&ge<1?0:G,new oo(G,ae,ge,x.opacity)}function gu(x,S,f,A){return arguments.length===1?lu(x):new oo(x,S,f,A==null?1:A)}function oo(x,S,f,A){this.h=+x,this.s=+S,this.l=+f,this.opacity=+A}$a(oo,gu,Zo(Ko,{brighter(x){return x=x==null?bo:Math.pow(bo,x),new oo(this.h,this.s,this.l*x,this.opacity)},darker(x){return x=x==null?$o:Math.pow($o,x),new oo(this.h,this.s,this.l*x,this.opacity)},rgb(){var x=this.h%360+(this.h<0)*360,S=isNaN(x)||isNaN(this.s)?0:this.s,f=this.l,A=f+(f<.5?f:1-f)*S,_=2*f-A;return new Xo(ph(x>=240?x-240:x+120,_,A),ph(x,_,A),ph(x<120?x+240:x-120,_,A),this.opacity)},clamp(){return new oo(Ic(this.h),jc(this.s),jc(this.l),Ah(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const x=Ah(this.opacity);return`${x===1?"hsl(":"hsla("}${Ic(this.h)}, ${jc(this.s)*100}%, ${jc(this.l)*100}%${x===1?")":`, ${x})`}`}}));function Ic(x){return x=(x||0)%360,x<0?x+360:x}function jc(x){return Math.max(0,Math.min(1,x||0))}function ph(x,S,f){return(x<60?S+(f-S)*x/60:x<180?f:x<240?S+(f-S)*(240-x)/60:S)*255}function Lo(x,S){if(typeof x!="function"||S!=null&&typeof S!="function")throw new TypeError("Expected a function");var f=function(){for(var _=arguments.length,k=new Array(_),G=0;G<_;G++)k[G]=arguments[G];var ae=S?S.apply(this,k):k[0],ge=f.cache;if(ge.has(ae))return ge.get(ae);var Ue=x.apply(this,k);return f.cache=ge.set(ae,Ue)||ge,Ue};return f.cache=new(Lo.Cache||Map),Lo.cacheList.push(f.cache),f}Lo.Cache=Map,Lo.cacheList=[],Lo.clearCache=function(){Lo.cacheList.forEach(function(x){return x.clear()})};var Ji=function(x){return x[x.kUnknown=0]="kUnknown",x[x.kNumber=1]="kNumber",x[x.kPercentage=2]="kPercentage",x[x.kEms=3]="kEms",x[x.kPixels=4]="kPixels",x[x.kRems=5]="kRems",x[x.kDegrees=6]="kDegrees",x[x.kRadians=7]="kRadians",x[x.kGradians=8]="kGradians",x[x.kTurns=9]="kTurns",x[x.kMilliseconds=10]="kMilliseconds",x[x.kSeconds=11]="kSeconds",x[x.kInteger=12]="kInteger",x}({}),$u=function(x){return x[x.kUNumber=0]="kUNumber",x[x.kUPercent=1]="kUPercent",x[x.kULength=2]="kULength",x[x.kUAngle=3]="kUAngle",x[x.kUTime=4]="kUTime",x[x.kUOther=5]="kUOther",x}({}),gh=function(x){return x[x.kYes=0]="kYes",x[x.kNo=1]="kNo",x}({}),mh=function(x){return x[x.kYes=0]="kYes",x[x.kNo=1]="kNo",x}({}),np=[{name:"em",unit_type:Ji.kEms},{name:"px",unit_type:Ji.kPixels},{name:"deg",unit_type:Ji.kDegrees},{name:"rad",unit_type:Ji.kRadians},{name:"grad",unit_type:Ji.kGradians},{name:"ms",unit_type:Ji.kMilliseconds},{name:"s",unit_type:Ji.kSeconds},{name:"rem",unit_type:Ji.kRems},{name:"turn",unit_type:Ji.kTurns}],vh=function(x){return x[x.kUnknownType=0]="kUnknownType",x[x.kUnparsedType=1]="kUnparsedType",x[x.kKeywordType=2]="kKeywordType",x[x.kUnitType=3]="kUnitType",x[x.kSumType=4]="kSumType",x[x.kProductType=5]="kProductType",x[x.kNegateType=6]="kNegateType",x[x.kInvertType=7]="kInvertType",x[x.kMinType=8]="kMinType",x[x.kMaxType=9]="kMaxType",x[x.kClampType=10]="kClampType",x[x.kTransformType=11]="kTransformType",x[x.kPositionType=12]="kPositionType",x[x.kURLImageType=13]="kURLImageType",x[x.kColorType=14]="kColorType",x[x.kUnsupportedColorType=15]="kUnsupportedColorType",x}({}),Cu=function(S){return np.find(function(f){return f.name===S}).unit_type},zc=function(S){return S?S==="number"?Ji.kNumber:S==="percent"||S==="%"?Ji.kPercentage:Cu(S):Ji.kUnknown},Ul=function(S){switch(S){case Ji.kNumber:case Ji.kInteger:return $u.kUNumber;case Ji.kPercentage:return $u.kUPercent;case Ji.kPixels:return $u.kULength;case Ji.kMilliseconds:case Ji.kSeconds:return $u.kUTime;case Ji.kDegrees:case Ji.kRadians:case Ji.kGradians:case Ji.kTurns:return $u.kUAngle;default:return $u.kUOther}},Xl=function(S){switch(S){case $u.kUNumber:return Ji.kNumber;case $u.kULength:return Ji.kPixels;case $u.kUPercent:return Ji.kPercentage;case $u.kUTime:return Ji.kSeconds;case $u.kUAngle:return Ji.kDegrees;default:return Ji.kUnknown}},Uo=function(S){var f=1;switch(S){case Ji.kPixels:case Ji.kDegrees:case Ji.kSeconds:break;case Ji.kMilliseconds:f=.001;break;case Ji.kRadians:f=180/Math.PI;break;case Ji.kGradians:f=.9;break;case Ji.kTurns:f=360;break}return f},Ld=function(S){switch(S){case Ji.kNumber:case Ji.kInteger:return"";case Ji.kPercentage:return"%";case Ji.kEms:return"em";case Ji.kRems:return"rem";case Ji.kPixels:return"px";case Ji.kDegrees:return"deg";case Ji.kRadians:return"rad";case Ji.kGradians:return"grad";case Ji.kMilliseconds:return"ms";case Ji.kSeconds:return"s";case Ji.kTurns:return"turn"}return""},Yc=function(){function x(){(0,Z.Z)(this,x)}return(0,V.Z)(x,[{key:"toString",value:function(){return this.buildCSSText(gh.kNo,mh.kNo,"")}},{key:"isNumericValue",value:function(){return this.getType()>=vh.kUnitType&&this.getType()<=vh.kClampType}}],[{key:"isAngle",value:function(f){return f===Ji.kDegrees||f===Ji.kRadians||f===Ji.kGradians||f===Ji.kTurns}},{key:"isLength",value:function(f){return f>=Ji.kEms&&f1&&arguments[1]!==void 0?arguments[1]:"",A="";return Number.isFinite(S)?A="NaN":S>0?A="infinity":A="-infinity",A+=f},Oo=function(S){return Xl(Ul(S))},Bo=function(x){function S(f){var A,_=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ji.kNumber;(0,Z.Z)(this,S),A=(0,E.Z)(this,S);var k;return typeof _=="string"?k=zc(_):k=_,A.unit=k,A.value=f,A}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"clone",value:function(){return new S(this.value,this.unit)}},{key:"equals",value:function(A){var _=A;return this.value===_.value&&this.unit===_.unit}},{key:"getType",value:function(){return vh.kUnitType}},{key:"convertTo",value:function(A){if(this.unit===A)return new S(this.value,this.unit);var _=Oo(this.unit);if(_!==Oo(A)||_===Ji.kUnknown)return null;var k=Uo(this.unit)/Uo(A);return new S(this.value*k,A)}},{key:"buildCSSText",value:function(A,_,k){var G;switch(this.unit){case Ji.kUnknown:break;case Ji.kInteger:G=Number(this.value).toFixed(0);break;case Ji.kNumber:case Ji.kPercentage:case Ji.kEms:case Ji.kRems:case Ji.kPixels:case Ji.kDegrees:case Ji.kRadians:case Ji.kGradians:case Ji.kMilliseconds:case Ji.kSeconds:case Ji.kTurns:{var ae=-999999,ge=999999,Ue=this.value,rt=Ld(this.unit);if(Uege){var bt=Ld(this.unit);!Number.isFinite(Ue)||Number.isNaN(Ue)?G=mu(Ue,bt):G=Ue+(bt||"")}else G="".concat(Ue).concat(rt)}}return k+=G,k}}])}(Yc),_o=new Bo(0,"px");new Bo(1,"px");var na=new Bo(0,"deg"),Wa=function(x){function S(f,A,_){var k,G=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1,ae=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;return(0,Z.Z)(this,S),k=(0,E.Z)(this,S,["rgb"]),k.r=f,k.g=A,k.b=_,k.alpha=G,k.isNone=ae,k}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"clone",value:function(){return new S(this.r,this.g,this.b,this.alpha)}},{key:"buildCSSText",value:function(A,_,k){return"".concat(k,"rgba(").concat(this.r,",").concat(this.g,",").concat(this.b,",").concat(this.alpha,")")}}])}(gl),yh=new Xu("unset"),Yo=new Xu("initial"),Tu=new Xu("inherit"),uu={"":yh,unset:yh,initial:Yo,inherit:Tu},wc=function(S){return uu[S]||(uu[S]=new Xu(S)),uu[S]},ac=new Wa(0,0,0,0,!0),Lr=new Wa(0,0,0,0),Gr=Lo(function(x,S,f,A){return new Wa(x,S,f,A)},function(x,S,f,A){return"rgba(".concat(x,",").concat(S,",").concat(f,",").concat(A,")")}),ki=function(S){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ji.kNumber;return new Bo(S,f)};new Bo(50,"%");function ju(x){var S=x.type,f=x.value;return S==="hex"?"#".concat(f):S==="literal"?f:S==="rgb"?"rgb(".concat(f.join(","),")"):"rgba(".concat(f.join(","),")")}var bl=function(){var x={linearGradient:/^(linear\-gradient)/i,repeatingLinearGradient:/^(repeating\-linear\-gradient)/i,radialGradient:/^(radial\-gradient)/i,repeatingRadialGradient:/^(repeating\-radial\-gradient)/i,conicGradient:/^(conic\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},S="";function f(Ys){throw new Error("".concat(S,": ").concat(Ys))}function A(){var Ys=_();return S.length>0&&f("Invalid input not EOF"),Ys}function _(){return Tr(k)}function k(){return G("linear-gradient",x.linearGradient,ge)||G("repeating-linear-gradient",x.repeatingLinearGradient,ge)||G("radial-gradient",x.radialGradient,bt)||G("repeating-radial-gradient",x.repeatingRadialGradient,bt)||G("conic-gradient",x.conicGradient,bt)}function G(Ys,U,R){return ae(U,function($){var K=R();return K&&(Ml(x.comma)||f("Missing comma before color stops")),{type:Ys,orientation:K,colorStops:Tr(ni)}})}function ae(Ys,U){var R=Ml(Ys);if(R){Ml(x.startCall)||f("Missing (");var $=U(R);return Ml(x.endCall)||f("Missing )"),$}}function ge(){return Ue()||rt()}function Ue(){return Po("directional",x.sideOrCorner,1)}function rt(){return Po("angular",x.angleValue,1)}function bt(){var Ys,U=Zt(),R;return U&&(Ys=[],Ys.push(U),R=S,Ml(x.comma)&&(U=Zt(),U?Ys.push(U):S=R)),Ys}function Zt(){var Ys=wn()||mn();if(Ys)Ys.at=ir();else{var U=Gn();if(U){Ys=U;var R=ir();R&&(Ys.at=R)}else{var $=tr();$&&(Ys={type:"default-radial",at:$})}}return Ys}function wn(){var Ys=Po("shape",/^(circle)/i,0);return Ys&&(Ys.style=Ia()||Gn()),Ys}function mn(){var Ys=Po("shape",/^(ellipse)/i,0);return Ys&&(Ys.style=Hs()||Gn()),Ys}function Gn(){return Po("extent-keyword",x.extentKeywords,1)}function ir(){if(Po("position",/^at/,0)){var Ys=tr();return Ys||f("Missing positioning value"),Ys}}function tr(){var Ys=Zn();if(Ys.x||Ys.y)return{type:"position",value:Ys}}function Zn(){return{x:Hs(),y:Hs()}}function Tr(Ys){var U=Ys(),R=[];if(U)for(R.push(U);Ml(x.comma);)U=Ys(),U?R.push(U):f("One extra comma");return R}function ni(){var Ys=ns();return Ys||f("Expected color definition"),Ys.length=Hs(),Ys}function ns(){return bi()||Gs()||Ri()||is()}function is(){return Po("literal",x.literalColor,0)}function bi(){return Po("hex",x.hexColor,1)}function Ri(){return ae(x.rgbColor,function(){return{type:"rgb",value:Tr(_s)}})}function Gs(){return ae(x.rgbaColor,function(){return{type:"rgba",value:Tr(_s)}})}function _s(){return Ml(x.number)[1]}function Hs(){return Po("%",x.percentageValue,1)||Zs()||Ia()}function Zs(){return Po("position-keyword",x.positionKeywords,1)}function Ia(){return Po("px",x.pixelValue,1)||Po("em",x.emValue,1)}function Po(Ys,U,R){var $=Ml(U);if($)return{type:Ys,value:$[R]}}function Ml(Ys){var U=/^[\n\r\t\s]+/.exec(S);U&&El(U[0].length);var R=Ys.exec(S);return R&&El(R[0].length),R}function El(Ys){S=S.substring(Ys)}return function(Ys){return S=Ys,A()}}();function qo(x,S,f,A){var _=Yt(A.value),k=0,G=0,ae=k+S/2,ge=G+f/2,Ue=Math.abs(S*Math.cos(_))+Math.abs(f*Math.sin(_)),rt=x[0]+ae-Math.cos(_)*Ue/2,bt=x[1]+ge-Math.sin(_)*Ue/2,Zt=x[0]+ae+Math.cos(_)*Ue/2,wn=x[1]+ge+Math.sin(_)*Ue/2;return{x1:rt,y1:bt,x2:Zt,y2:wn}}function Go(x,S,f,A,_,k){var G=A.value,ae=_.value;A.unit===Ji.kPercentage&&(G=A.value/100*S),_.unit===Ji.kPercentage&&(ae=_.value/100*f);var ge=Math.max((0,Ee.y)([0,0],[G,ae]),(0,Ee.y)([0,f],[G,ae]),(0,Ee.y)([S,f],[G,ae]),(0,Ee.y)([S,0],[G,ae]));return k&&(k instanceof Bo?ge=k.value:k instanceof Xu&&(k.value==="closest-side"?ge=Math.min(G,S-G,ae,f-ae):k.value==="farthest-side"?ge=Math.max(G,S-G,ae,f-ae):k.value==="closest-corner"&&(ge=Math.min((0,Ee.y)([0,0],[G,ae]),(0,Ee.y)([0,f],[G,ae]),(0,Ee.y)([S,f],[G,ae]),(0,Ee.y)([S,0],[G,ae]))))),{x:G+x[0],y:ae+x[1],r:ge}}var Ou=/^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i,Oh=/^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i,oc=/^p\s*\(\s*([axyn])\s*\)\s*(.*)/i,Ca=/[\d.]+:(#[^\s]+|[^\)]+\))/gi;function Ud(x){var S,f=x.length;if(x[f-1].length=(S=x[f-1].length)!==null&&S!==void 0?S:{type:"%",value:"100"},f>1){var A;x[0].length=(A=x[0].length)!==null&&A!==void 0?A:{type:"%",value:"0"}}for(var _=0,k=Number(x[0].length.value),G=1;G-1||x.indexOf("radial")>-1){var S=bl(x);return S.map(function(ae){var ge=ae.type,Ue=ae.orientation,rt=ae.colorStops;Ud(rt);var bt=rt.map(function(Tr){return{offset:ki(Number(Tr.length.value),"%"),color:ju(Tr)}});if(ge==="linear-gradient")return new ml(To.LinearGradient,{angle:Ue?Xh(Ue):na,steps:bt});if(ge==="radial-gradient"&&(Ue||(Ue=[{type:"shape",value:"circle"}]),Ue[0].type==="shape"&&Ue[0].value==="circle")){var Zt=lc(Ue[0].at),wn=Zt.cx,mn=Zt.cy,Gn;if(Ue[0].style){var ir=Ue[0].style,tr=ir.type,Zn=ir.value;tr==="extent-keyword"?Gn=wc(Zn):Gn=ki(Zn,tr)}return new ml(To.RadialGradient,{cx:wn,cy:mn,size:Gn,steps:bt})}})}var f=x[0];if(x[1]==="("||x[2]==="("){if(f==="l"){var A=Ou.exec(x);if(A){var _,k=((_=A[2].match(Ca))===null||_===void 0?void 0:_.map(function(ae){return ae.split(":")}))||[];return[new ml(To.LinearGradient,{angle:ki(parseFloat(A[1]),"deg"),steps:k.map(function(ae){var ge=(0,C.Z)(ae,2),Ue=ge[0],rt=ge[1];return{offset:ki(Number(Ue)*100,"%"),color:rt}})})]}}else if(f==="r"){var G=Od(x);if(G)if((0,Fe.Z)(G))x=G;else return[new ml(To.RadialGradient,G)]}else if(f==="p")return jh(x)}});function Od(x){var S=Oh.exec(x);if(S){var f,A=((f=S[4].match(Ca))===null||f===void 0?void 0:f.map(function(_){return _.split(":")}))||[];return{cx:ki(50,"%"),cy:ki(50,"%"),steps:A.map(function(_){var k=(0,C.Z)(_,2),G=k[0],ae=k[1];return{offset:ki(Number(G)*100,"%"),color:ae}})}}return null}function jh(x){var S=oc.exec(x);if(S){var f=S[1],A=S[2];switch(f){case"a":f="repeat";break;case"x":f="repeat-x";break;case"y":f="repeat-y";break;case"n":f="no-repeat";break;default:f="no-repeat"}return{image:A,repetition:f}}return null}function SA(x){return!!x.type&&!!x.value}function md(x){return x&&!!x.image}function vd(x){return x&&!(0,$e.Z)(x.r)&&!(0,$e.Z)(x.g)&&!(0,$e.Z)(x.b)}var mo=Lo(function(x){if(md(x))return(0,m.Z)({repetition:"repeat"},x);if((0,$e.Z)(x)&&(x=""),x==="transparent")return Lr;if(x==="currentColor")x="black";else if(x==="none")return ac;var S=wA(x);if(S)return S;var f=sc(x),A=[0,0,0,0];return f!==null&&(A[0]=f.r||0,A[1]=f.g||0,A[2]=f.b||0,A[3]=f.opacity),Gr.apply(void 0,A)});function wa(x,S){if(!(!vd(x)||!vd(S)))return[[Number(x.r),Number(x.g),Number(x.b),Number(x.alpha)],[Number(S.r),Number(S.g),Number(S.b),Number(S.alpha)],function(f){var A=f.slice();if(A[3])for(var _=0;_<3;_++)A[_]=Math.round((0,ct.Z)(A[_],0,255));return A[3]=(0,ct.Z)(A[3],0,1),"rgba(".concat(A.join(","),")")}]}function Dd(x,S){if((0,$e.Z)(S))return ki(0,"px");if(S="".concat(S).trim().toLowerCase(),isFinite(Number(S))){if("px".search(x)>=0)return ki(Number(S),"px");if("deg".search(x)>=0)return ki(Number(S),"deg")}var f=[];S=S.replace(x,function(_){return f.push(_),"U".concat(_)});var A="U(".concat(x.source,")");return f.map(function(_){return ki(Number(S.replace(new RegExp("U".concat(_),"g"),"").replace(new RegExp(A,"g"),"*0")),_)})[0]}var qi=function(S){return Dd(new RegExp("px","g"),S)},Du=Lo(qi),kn=function(S){return Dd(new RegExp("%","g"),S)};Lo(kn);var kd=function(S){return(0,ve.Z)(S)||isFinite(Number(S))?ki(Number(S)||0,"px"):Dd(new RegExp("px|%|em|rem","g"),S)},Yh=Lo(kd),vl=function(S){return Dd(new RegExp("deg|rad|grad|turn","g"),S)},He=Lo(vl);function me(x,S,f,A){var _=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,k="",G=x.value||0,ae=S.value||0,ge=Oo(x.unit),Ue=x.convertTo(ge),rt=S.convertTo(ge);return Ue&&rt?(G=Ue.value,ae=rt.value,k=Ld(x.unit)):(Bo.isLength(x.unit)||Bo.isLength(S.unit))&&(G=le(x,_,f),ae=le(S,_,f),k="px"),[G,ae,function(bt){return A&&(bt=Math.max(bt,0)),bt+k}]}function ce(x){var S=0;return x.unit===Ji.kDegrees?S=x.value:x.unit===Ji.kRadians?S=er(Number(x.value)):x.unit===Ji.kTurns?S=wr(Number(x.value)):x.value&&(S=x.value),S}function Ze(x,S){var f;return Array.isArray(x)?f=x.map(function(A){return Number(A)}):(0,Fe.Z)(x)?f=x.split(" ").map(function(A){return Number(A)}):(0,ve.Z)(x)&&(f=[x]),S===2?f.length===1?[f[0],f[0]]:[f[0],f[1]]:S===4?f.length===1?[f[0],f[0],f[0],f[0]]:f.length===2?[f[0],f[1],f[0],f[1]]:f.length===3?[f[0],f[1],f[2],f[1]]:[f[0],f[1],f[2],f[3]]:S==="even"&&f.length%2===1?[].concat((0,N.Z)(f),(0,N.Z)(f)):f}function le(x,S,f){var A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(x.unit===Ji.kPixels)return Number(x.value);if(x.unit===Ji.kPercentage&&f){var _=f.nodeName===Jt.GROUP?f.getLocalBounds():f.getGeometryBounds();return(A?_.min[S]:0)+x.value/100*_.halfExtents[S]*2}return 0}var Nt=function(S){return Dd(/deg|rad|grad|turn|px|%/g,S)},Dt=["blur","brightness","drop-shadow","contrast","grayscale","sepia","saturate","hue-rotate","invert"];function pn(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(x=x.toLowerCase().trim(),x==="none")return[];for(var S=/\s*([\w-]+)\(([^)]*)\)/g,f=[],A,_=0;A=S.exec(x);){if(A.index!==_)return[];if(_=A.index+A[0].length,Dt.indexOf(A[1])>-1&&f.push({name:A[1],params:A[2].split(" ").map(function(k){return Nt(k)||mo(k)})}),S.lastIndex===x.length)return f}return[]}function Dn(x){return x.toString()}var hr=function(S){return typeof S=="number"?ki(S):/^\s*[-+]?(\d*\.)?\d+\s*$/.test(S)?ki(Number(S)):ki(0)},br=Lo(hr);Lo(function(x){return(0,Fe.Z)(x)?x.split(" ").map(br):x.map(br)});function yr(x,S){return[x,S,Dn]}function xr(x,S){return function(f,A){return[f,A,function(_){return Dn((0,ct.Z)(_,x,S))}]}}function Fr(x,S){if(x.length===S.length)return[x,S,function(f){return f}]}function ri(x){return x.parsedStyle.d.totalLength===0&&(x.parsedStyle.d.totalLength=Ct(x.parsedStyle.d.absolutePath)),x.parsedStyle.d.totalLength}function ai(x){return x.parsedStyle.points.totalLength===0&&(x.parsedStyle.points.totalLength=(0,Xt.hE)(x.parsedStyle.points.points)),x.parsedStyle.points.totalLength}function wi(x){for(var S=0;S0&&f.push(A),{polygons:S,polylines:f}}function as(x,S){return x[0]===S[0]&&x[1]===S[1]}function Bs(x,S){for(var f=[],A=[],_=[],k=0;kMath.PI/2?Math.PI-Ue:Ue,rt=rt>Math.PI/2?Math.PI-rt:rt;var bt={xExtra:Math.cos(ge/2-Ue)*(S/2*(1/Math.sin(ge/2)))-S/2||0,yExtra:Math.cos(rt-ge/2)*(S/2*(1/Math.sin(ge/2)))-S/2||0};return bt}function zi(x,S){return[S[0]+(S[0]-x[0]),S[1]+(S[1]-x[1])]}var Ni=function(S,f){var A=S.x*f.x+S.y*f.y,_=Math.sqrt((Math.pow(S.x,2)+Math.pow(S.y,2))*(Math.pow(f.x,2)+Math.pow(f.y,2))),k=S.x*f.y-S.y*f.x<0?-1:1,G=k*Math.acos(A/_);return G},Ns=function(S,f,A,_,k,G,ae,ge){f=Math.abs(f),A=Math.abs(A),_=zt(_,360);var Ue=Yt(_);if(S.x===ae.x&&S.y===ae.y)return{x:S.x,y:S.y,ellipticalArcAngle:0};if(f===0||A===0)return{x:0,y:0,ellipticalArcAngle:0};var rt=(S.x-ae.x)/2,bt=(S.y-ae.y)/2,Zt={x:Math.cos(Ue)*rt+Math.sin(Ue)*bt,y:-Math.sin(Ue)*rt+Math.cos(Ue)*bt},wn=Math.pow(Zt.x,2)/Math.pow(f,2)+Math.pow(Zt.y,2)/Math.pow(A,2);wn>1&&(f*=Math.sqrt(wn),A*=Math.sqrt(wn));var mn=Math.pow(f,2)*Math.pow(A,2)-Math.pow(f,2)*Math.pow(Zt.y,2)-Math.pow(A,2)*Math.pow(Zt.x,2),Gn=Math.pow(f,2)*Math.pow(Zt.y,2)+Math.pow(A,2)*Math.pow(Zt.x,2),ir=mn/Gn;ir=ir<0?0:ir;var tr=(k!==G?1:-1)*Math.sqrt(ir),Zn={x:tr*(f*Zt.y/A),y:tr*(-(A*Zt.x)/f)},Tr={x:Math.cos(Ue)*Zn.x-Math.sin(Ue)*Zn.y+(S.x+ae.x)/2,y:Math.sin(Ue)*Zn.x+Math.cos(Ue)*Zn.y+(S.y+ae.y)/2},ni={x:(Zt.x-Zn.x)/f,y:(Zt.y-Zn.y)/A},ns=Ni({x:1,y:0},ni),is={x:(-Zt.x-Zn.x)/f,y:(-Zt.y-Zn.y)/A},bi=Ni(ni,is);!G&&bi>0?bi-=2*Math.PI:G&&bi<0&&(bi+=2*Math.PI),bi%=2*Math.PI;var Ri=ns+bi*ge,Gs=f*Math.cos(Ri),_s=A*Math.sin(Ri),Hs={x:Math.cos(Ue)*Gs-Math.sin(Ue)*_s+Tr.x,y:Math.sin(Ue)*Gs+Math.cos(Ue)*_s+Tr.y,ellipticalArcStartAngle:ns,ellipticalArcEndAngle:ns+bi,ellipticalArcAngle:Ri,ellipticalArcCenter:Tr,resultantRx:f,resultantRy:A};return Hs};function Os(x){for(var S=[],f=null,A=null,_=null,k=0,G=x.length,ae=0;ae2&&arguments[2]!==void 0?arguments[2]:!0,A=x.arcParams,_=A.rx,k=_===void 0?0:_,G=A.ry,ae=G===void 0?0:G,ge=A.xRotation,Ue=A.arcFlag,rt=A.sweepFlag,bt=Ns({x:x.prePoint[0],y:x.prePoint[1]},k,ae,ge,!!Ue,!!rt,{x:x.currentPoint[0],y:x.currentPoint[1]},S),Zt=Ns({x:x.prePoint[0],y:x.prePoint[1]},k,ae,ge,!!Ue,!!rt,{x:x.currentPoint[0],y:x.currentPoint[1]},f?S+.005:S-.005),wn=Zt.x-bt.x,mn=Zt.y-bt.y,Gn=Math.sqrt(wn*wn+mn*mn);return{x:-wn/Gn,y:-mn/Gn}}function Sa(x){return Math.sqrt(x[0]*x[0]+x[1]*x[1])}function oe(x,S){return Sa(x)*Sa(S)?(x[0]*S[0]+x[1]*S[1])/(Sa(x)*Sa(S)):1}function re(x,S){return(x[0]*S[1]1&&(f*=Math.sqrt(wn),A*=Math.sqrt(wn));var mn=f*f*(Zt*Zt)+A*A*(bt*bt),Gn=mn?Math.sqrt((f*f*(A*A)-mn)/mn):1;k===G&&(Gn*=-1),isNaN(Gn)&&(Gn=0);var ir=A?Gn*f*Zt/A:0,tr=f?Gn*-A*bt/f:0,Zn=(ae+Ue)/2+Math.cos(_)*ir-Math.sin(_)*tr,Tr=(ge+rt)/2+Math.sin(_)*ir+Math.cos(_)*tr,ni=[(bt-ir)/f,(Zt-tr)/A],ns=[(-1*bt-ir)/f,(-1*Zt-tr)/A],is=re([1,0],ni),bi=re(ni,ns);return oe(ni,ns)<=-1&&(bi=Math.PI),oe(ni,ns)>=1&&(bi=0),G===0&&bi>0&&(bi-=2*Math.PI),G===1&&bi<0&&(bi+=2*Math.PI),{cx:Zn,cy:Tr,rx:as(x,[Ue,rt])?0:f,ry:as(x,[Ue,rt])?0:A,startAngle:is,endAngle:is+bi,xRotation:_,arcFlag:k,sweepFlag:G}}function J(x,S,f){return x.reduce(function(A,_){var k="";if(_[0]==="M"||_[0]==="L"){var G=vec3.fromValues(_[1],_[2],0);f&&vec3.transformMat4(G,G,f),k="".concat(_[0]).concat(G[0],",").concat(G[1])}else if(_[0]==="Z")k=_[0];else if(_[0]==="C"){var ae=vec3.fromValues(_[1],_[2],0),ge=vec3.fromValues(_[3],_[4],0),Ue=vec3.fromValues(_[5],_[6],0);f&&(vec3.transformMat4(ae,ae,f),vec3.transformMat4(ge,ge,f),vec3.transformMat4(Ue,Ue,f)),k="".concat(_[0]).concat(ae[0],",").concat(ae[1],",").concat(ge[0],",").concat(ge[1],",").concat(Ue[0],",").concat(Ue[1])}else if(_[0]==="A"){var rt=vec3.fromValues(_[6],_[7],0);f&&vec3.transformMat4(rt,rt,f),k="".concat(_[0]).concat(_[1],",").concat(_[2],",").concat(_[3],",").concat(_[4],",").concat(_[5],",").concat(rt[0],",").concat(rt[1])}else if(_[0]==="Q"){var bt=vec3.fromValues(_[1],_[2],0),Zt=vec3.fromValues(_[3],_[4],0);f&&(vec3.transformMat4(bt,bt,f),vec3.transformMat4(Zt,Zt,f)),k="".concat(_[0]).concat(_[1],",").concat(_[2],",").concat(_[3],",").concat(_[4],"}")}return A+=k},"")}function fe(x,S,f,A){return[["M",x,S],["L",f,A]]}function Te(x,S,f,A){var _=(-1+Math.sqrt(2))/3*4,k=x*_,G=S*_,ae=f-x,ge=f+x,Ue=A-S,rt=A+S;return[["M",ae,A],["C",ae,A-G,f-k,Ue,f,Ue],["C",f+k,Ue,ge,A-G,ge,A],["C",ge,A+G,f+k,rt,f,rt],["C",f-k,rt,ae,A+G,ae,A],["Z"]]}function De(x,S){var f=x.map(function(A,_){return[_===0?"M":"L",A[0],A[1]]});return S&&f.push(["Z"]),f}function Le(x,S,f,A,_){if(_){var k=_slicedToArray(_,4),G=k[0],ae=k[1],ge=k[2],Ue=k[3],rt=x>0?1:-1,bt=S>0?1:-1,Zt=rt+bt!==0?1:0;return[["M",rt*G+f,A],["L",x-rt*ae+f,A],ae?["A",ae,ae,0,0,Zt,x+f,bt*ae+A]:null,["L",x+f,S-bt*ge+A],ge?["A",ge,ge,0,0,Zt,x+f-rt*ge,S+A]:null,["L",f+rt*Ue,S+A],Ue?["A",Ue,Ue,0,0,Zt,f,S+A-bt*Ue]:null,["L",f,bt*G+A],G?["A",G,G,0,0,Zt,rt*G+f,A]:null,["Z"]].filter(function(wn){return wn})}return[["M",f,A],["L",f+x,A],["L",f+x,A+S],["L",f,A+S],["Z"]]}function Xe(x){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:x.getLocalTransform(),f=[];switch(x.nodeName){case Jt.LINE:var A=x.parsedStyle,_=A.x1,k=_===void 0?0:_,G=A.y1,ae=G===void 0?0:G,ge=A.x2,Ue=ge===void 0?0:ge,rt=A.y2,bt=rt===void 0?0:rt;f=fe(k,ae,Ue,bt);break;case Jt.CIRCLE:{var Zt=x.parsedStyle,wn=Zt.r,mn=wn===void 0?0:wn,Gn=Zt.cx,ir=Gn===void 0?0:Gn,tr=Zt.cy,Zn=tr===void 0?0:tr;f=Te(mn,mn,ir,Zn);break}case Jt.ELLIPSE:{var Tr=x.parsedStyle,ni=Tr.rx,ns=ni===void 0?0:ni,is=Tr.ry,bi=is===void 0?0:is,Ri=Tr.cx,Gs=Ri===void 0?0:Ri,_s=Tr.cy,Hs=_s===void 0?0:_s;f=Te(ns,bi,Gs,Hs);break}case Jt.POLYLINE:case Jt.POLYGON:var Zs=x.parsedStyle.points;f=De(Zs.points,x.nodeName===Jt.POLYGON);break;case Jt.RECT:var Ia=x.parsedStyle,Po=Ia.width,Ml=Po===void 0?0:Po,El=Ia.height,Ys=El===void 0?0:El,U=Ia.x,R=U===void 0?0:U,$=Ia.y,K=$===void 0?0:$,_e=Ia.radius,et=_e&&_e.some(function(dn){return dn!==0});f=Le(Ml,Ys,R,K,et&&_e.map(function(dn){return clamp(dn,0,Math.min(Math.abs(Ml)/2,Math.abs(Ys)/2))}));break;case Jt.PATH:var Ft=x.parsedStyle.d.absolutePath;f=_toConsumableArray(Ft);break}if(f.length)return J(f,x,S)}function mt(x){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,A=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,_=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,k=x.map(function(G,ae){var ge=G[0],Ue=x[ae+1],rt=ae===0&&(S!==0||f!==0),bt=(ae===x.length-1||Ue&&(Ue[0]==="M"||Ue[0]==="Z"))&&A!==0&&_!==0,Zt=rt?[S,f]:[0,0],wn=_slicedToArray(Zt,2),mn=wn[0],Gn=wn[1],ir=bt?[A,_]:[0,0],tr=_slicedToArray(ir,2),Zn=tr[0],Tr=tr[1];switch(ge){case"M":return"M ".concat(G[1]+mn,",").concat(G[2]+Gn);case"L":return"L ".concat(G[1]+Zn,",").concat(G[2]+Tr);case"Q":return"Q ".concat(G[1]," ").concat(G[2],",").concat(G[3]+Zn," ").concat(G[4]+Tr);case"C":return"C ".concat(G[1]," ").concat(G[2],",").concat(G[3]," ").concat(G[4],",").concat(G[5]+Zn," ").concat(G[6]+Tr);case"A":return"A ".concat(G[1]," ").concat(G[2]," ").concat(G[3]," ").concat(G[4]," ").concat(G[5]," ").concat(G[6]," ").concat(G[7]).concat(bt?" L ".concat(G[6]+A,",").concat(G[7]+_):"");case"Z":return"Z";default:return null}}).filter(function(G){return G!==null}).join(" ");return~k.indexOf("NaN")?"":k}var Kt=function(S){if(S===""||Array.isArray(S)&&S.length===0)return{absolutePath:[],hasArc:!1,segments:[],polygons:[],polylines:[],curve:null,totalLength:0,rect:{x:0,y:0,width:0,height:0}};var f;try{f=Mt(S)}catch(wn){f=Mt(""),console.error("[g]: Invalid SVG Path definition: ".concat(S))}wi(f);var A=Vi(f),_=rs(f),k=_.polygons,G=_.polylines,ae=Os(f),ge=Bs(ae,0),Ue=ge.x,rt=ge.y,bt=ge.width,Zt=ge.height;return{absolutePath:f,hasArc:A,segments:ae,polygons:k,polylines:G,totalLength:0,rect:{x:Number.isFinite(Ue)?Ue:0,y:Number.isFinite(rt)?rt:0,width:Number.isFinite(bt)?bt:0,height:Number.isFinite(Zt)?Zt:0}}},nn=Lo(Kt);function gn(x){return(0,Fe.Z)(x)?nn(x):Kt(x)}function Nn(x,S,f){var A=x.curve,_=S.curve;(!A||A.length===0)&&(A=wt(x.absolutePath,!1),x.curve=A),(!_||_.length===0)&&(_=wt(S.absolutePath,!1),S.curve=_);var k=[A,_];A.length!==_.length&&(k=$t(A,_));var G=cn(k[0])!==cn(k[1])?Yn(k[0]):qn(k[0]);return[G,Jr(k[1],G),function(ae){return ae}]}function $n(x,S){var f;return(0,Fe.Z)(x)?f=x.split(" ").map(function(A){var _=A.split(","),k=(0,C.Z)(_,2),G=k[0],ae=k[1];return[Number(G),Number(ae)]}):f=x,{points:f,totalLength:0,segments:[]}}function Er(x,S){return[x.points,S.points,function(f){return f}]}var mr=null,ti=/\s*(\w+)\(([^)]*)\)/g;function jr(x){return function(S){var f=0;return x.map(function(A){return A===mr?S[f++]:A})}}function ui(x){return x}var gi={matrix:["NNNNNN",[mr,mr,0,0,mr,mr,0,0,0,0,1,0,mr,mr,0,1],ui],matrix3d:["NNNNNNNNNNNNNNNN",ui],rotate:["A"],rotateX:["A"],rotateY:["A"],rotateZ:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",jr([mr,mr,new Bo(1)]),ui],scaleX:["N",jr([mr,new Bo(1),new Bo(1)]),jr([mr,new Bo(1)])],scaleY:["N",jr([new Bo(1),mr,new Bo(1)]),jr([new Bo(1),mr])],scaleZ:["N",jr([new Bo(1),new Bo(1),mr])],scale3d:["NNN",ui],skew:["Aa",null,ui],skewX:["A",null,jr([mr,na])],skewY:["A",null,jr([na,mr])],translate:["Tt",jr([mr,mr,_o]),ui],translateX:["T",jr([mr,_o,_o]),jr([mr,_o])],translateY:["T",jr([_o,mr,_o]),jr([_o,mr])],translateZ:["L",jr([_o,_o,mr])],translate3d:["TTL",ui]};function oi(x){for(var S=[],f=x.length,A=0;A2&&arguments[2]!==void 0?arguments[2]:{skipUpdateAttribute:!1,skipParse:!1,forceUpdateGeometry:!1,usedAttributes:[],memoize:!0};Object.assign(f.attributes,A);var k=f.parsedStyle.clipPath,G=f.parsedStyle.offsetPath;Gc(f,A);var ae=!!_.forceUpdateGeometry;if(!ae){for(var ge in A)if(dl.has(ge)){ae=!0;break}}var Ue=uc(f);Ue.has("fill")&&A.fill&&(f.parsedStyle.fill=mo(A.fill)),Ue.has("stroke")&&A.stroke&&(f.parsedStyle.stroke=mo(A.stroke)),Ue.has("shadowColor")&&A.shadowColor&&(f.parsedStyle.shadowColor=mo(A.shadowColor)),Ue.has("filter")&&A.filter&&(f.parsedStyle.filter=pn(A.filter)),Ue.has("radius")&&!(0,$e.Z)(A.radius)&&(f.parsedStyle.radius=Ze(A.radius,4)),Ue.has("lineDash")&&!(0,$e.Z)(A.lineDash)&&(f.parsedStyle.lineDash=Ze(A.lineDash,"even")),Ue.has("points")&&A.points&&(f.parsedStyle.points=$n(A.points)),Ue.has("d")&&A.d===""&&(f.parsedStyle.d=(0,m.Z)({},ca)),Ue.has("d")&&A.d&&(f.parsedStyle.d=gn(A.d)),Ue.has("textTransform")&&A.textTransform&&this.runtime.CSSPropertySyntaxFactory[Ai.TEXT_TRANSFORM].calculator(null,null,{value:A.textTransform},f,null),Ue.has("clipPath")&&!(0,vr.Z)(A.clipPath)&&this.runtime.CSSPropertySyntaxFactory[Ai.DEFINED_PATH].calculator("clipPath",k,A.clipPath,f,this.runtime),Ue.has("offsetPath")&&A.offsetPath&&this.runtime.CSSPropertySyntaxFactory[Ai.DEFINED_PATH].calculator("offsetPath",G,A.offsetPath,f,this.runtime),Ue.has("transform")&&A.transform&&(f.parsedStyle.transform=ts(A.transform)),Ue.has("transformOrigin")&&A.transformOrigin&&(f.parsedStyle.transformOrigin=al(A.transformOrigin)),Ue.has("markerStart")&&A.markerStart&&(f.parsedStyle.markerStart=this.runtime.CSSPropertySyntaxFactory[Ai.MARKER].calculator(null,A.markerStart,A.markerStart,null,null)),Ue.has("markerEnd")&&A.markerEnd&&(f.parsedStyle.markerEnd=this.runtime.CSSPropertySyntaxFactory[Ai.MARKER].calculator(null,A.markerEnd,A.markerEnd,null,null)),Ue.has("markerMid")&&A.markerMid&&(f.parsedStyle.markerMid=this.runtime.CSSPropertySyntaxFactory[Ai.MARKER].calculator("",A.markerMid,A.markerMid,null,null)),Ue.has("zIndex")&&!(0,$e.Z)(A.zIndex)&&this.runtime.CSSPropertySyntaxFactory[Ai.Z_INDEX].postProcessor(f),Ue.has("offsetDistance")&&!(0,$e.Z)(A.offsetDistance)&&this.runtime.CSSPropertySyntaxFactory[Ai.OFFSET_DISTANCE].postProcessor(f),Ue.has("transform")&&A.transform&&this.runtime.CSSPropertySyntaxFactory[Ai.TRANSFORM].postProcessor(f),Ue.has("transformOrigin")&&A.transformOrigin&&this.runtime.CSSPropertySyntaxFactory[Ai.TRANSFORM_ORIGIN].postProcessor(f),ae&&(f.dirty(!0,!0),_.forceUpdateGeometry||this.runtime.sceneGraphService.dirtyToRoot(f))}},{key:"updateGeometry",value:function(f){var A=f.nodeName,_=this.runtime.geometryUpdaterFactory[A];if(_){var k=f.geometry;k.contentBounds||(k.contentBounds=new ie),k.renderBounds||(k.renderBounds=new ie);var G=f.parsedStyle,ae=_.update(G,f),ge=ae.cx,Ue=ge===void 0?0:ge,rt=ae.cy,bt=rt===void 0?0:rt,Zt=ae.cz,wn=Zt===void 0?0:Zt,mn=ae.hwidth,Gn=mn===void 0?0:mn,ir=ae.hheight,tr=ir===void 0?0:ir,Zn=ae.hdepth,Tr=Zn===void 0?0:Zn,ni=[Math.abs(Gn),Math.abs(tr),Tr],ns=G.stroke,is=G.lineWidth,bi=is===void 0?1:is,Ri=G.increasedLineWidthForHitTesting,Gs=Ri===void 0?0:Ri,_s=G.shadowType,Hs=_s===void 0?"outer":_s,Zs=G.shadowColor,Ia=G.filter,Po=Ia===void 0?[]:Ia,Ml=G.transformOrigin,El=[Ue,bt,wn];k.contentBounds.update(El,ni);var Ys=A===Jt.POLYLINE||A===Jt.POLYGON||A===Jt.PATH?Math.SQRT2:.5,U=ns&&!ns.isNone;if(U){var R=((bi||0)+(Gs||0))*Ys;ni[0]+=R,ni[1]+=R}if(k.renderBounds.update(El,ni),Zs&&Hs&&Hs!=="inner"){var $=k.renderBounds,K=$.min,_e=$.max,et=G.shadowBlur,Ft=G.shadowOffsetX,dn=G.shadowOffsetY,fn=et||0,Ar=Ft||0,ur=dn||0,Ir=K[0]-fn+Ar,fi=_e[0]+fn+Ar,Qs=K[1]-fn+ur,us=_e[1]+fn+ur;K[0]=Math.min(K[0],Ir),_e[0]=Math.max(_e[0],fi),K[1]=Math.min(K[1],Qs),_e[1]=Math.max(_e[1],us),k.renderBounds.setMinMax(K,_e)}Po.forEach(function(ko){var uo=ko.name,Oa=ko.params;if(uo==="blur"){var ks=Oa[0].value;k.renderBounds.update(k.renderBounds.center,D.IH(k.renderBounds.halfExtents,k.renderBounds.halfExtents,[ks,ks,0]))}else if(uo==="drop-shadow"){var So=Oa[0].value,eo=Oa[1].value,za=Oa[2].value,nu=k.renderBounds,wu=nu.min,hu=nu.max,pl=wu[0]-za+So,Nu=hu[0]+za+So,Qh=wu[1]-za+eo,Ju=hu[1]+za+eo;wu[0]=Math.min(wu[0],pl),hu[0]=Math.max(hu[0],Nu),wu[1]=Math.min(wu[1],Qh),hu[1]=Math.max(hu[1],Ju),k.renderBounds.setMinMax(wu,hu)}}),f.geometry.dirty=!1;var bs=Gn<0,Ja=tr<0,fa=(bs?-1:1)*(Ml?le(Ml[0],0,f,!0):0),ea=(Ja?-1:1)*(Ml?le(Ml[1],1,f,!0):0);(fa||ea)&&f.setOrigin(fa,ea)}}},{key:"updateSizeAttenuation",value:function(f,A){f.style.isSizeAttenuation?(f.style.rawLineWidth||(f.style.rawLineWidth=f.style.lineWidth),f.style.lineWidth=(f.style.rawLineWidth||1)/A,f.nodeName===Jt.CIRCLE&&(f.style.rawR||(f.style.rawR=f.style.r),f.style.r=(f.style.rawR||1)/A)):(f.style.rawLineWidth&&(f.style.lineWidth=f.style.rawLineWidth,delete f.style.rawLineWidth),f.nodeName===Jt.CIRCLE&&f.style.rawR&&(f.style.r=f.style.rawR,delete f.style.rawR))}}])}();function Gc(x,S){var f=uc(x);for(var A in S)f.has(A)&&(x.parsedStyle[A]=S[A])}function uc(x){return x.constructor.PARSED_STYLE_LIST}var Bu=function(){function x(){(0,Z.Z)(this,x),this.mixer=yr}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_,k){return ce(_)}}])}(),cu=function(){function x(){(0,Z.Z)(this,x)}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_,k,G){return _ instanceof Xu&&(_=null),G.sceneGraphService.updateDisplayObjectDependency(f,A,_,k),f==="clipPath"&&k.forEach(function(ae){ae.childNodes.length===0&&G.sceneGraphService.dirtyToRoot(ae)}),_}}])}(),qc=function(){function x(){(0,Z.Z)(this,x),this.parser=mo,this.mixer=wa}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_,k){return _ instanceof Xu?_.value==="none"?ac:Lr:_}}])}(),_l=function(){function x(){(0,Z.Z)(this,x)}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_){return _ instanceof Xu?[]:_}}])}();function Ho(x){var S=x.parsedStyle,f=S.fontSize;return(0,$e.Z)(f)?null:f}var jl=function(){function x(){(0,Z.Z)(this,x),this.mixer=yr}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_,k,G){if((0,ve.Z)(_))return _;if(Bo.isRelativeUnit(_.unit)){if(_.unit===Ji.kPercentage)return 0;if(_.unit===Ji.kEms){if(k.parentNode){var ae=Ho(k.parentNode);if(ae)return ae*=_.value,ae}return 0}if(_.unit===Ji.kRems){var ge;if(k!=null&&(ge=k.ownerDocument)!==null&&ge!==void 0&&ge.documentElement){var Ue=Ho(k.ownerDocument.documentElement);if(Ue)return Ue*=_.value,Ue}return 0}}else return _.value}}])}(),Jc=function(){function x(){(0,Z.Z)(this,x),this.mixer=Fr}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_){return _.map(function(k){return k.value})}}])}(),eh=function(){function x(){(0,Z.Z)(this,x),this.mixer=Fr}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_){return _.map(function(k){return k.value})}}])}(),df=function(){function x(){(0,Z.Z)(this,x)}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_,k){var G;_ instanceof Xu&&(_=null);var ae=(G=_)===null||G===void 0?void 0:G.cloneNode(!0);return ae&&(ae.style.isMarker=!0),ae}}])}(),xh=function(){function x(){(0,Z.Z)(this,x),this.mixer=yr}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_){return _.value}}])}(),MA=function(){function x(){(0,Z.Z)(this,x),this.mixer=xr(0,1)}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_){return _.value}},{key:"postProcessor",value:function(f){var A=f.parsedStyle,_=A.offsetPath,k=A.offsetDistance;if(_){var G=_.nodeName;if(G===Jt.LINE||G===Jt.PATH||G===Jt.POLYLINE){var ae=_.getPoint(k);ae&&f.setLocalPosition(ae.x,ae.y)}}}}])}(),yl=function(){function x(){(0,Z.Z)(this,x),this.mixer=xr(0,1)}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_){return _.value}}])}(),Nc=function(){function x(){(0,Z.Z)(this,x),this.parser=gn,this.mixer=Nn}return(0,V.Z)(x,[{key:"calculator",value:function(f,A,_){return _ instanceof Xu&&_.value==="unset"?{absolutePath:[],hasArc:!1,segments:[],polygons:[],polylines:[],curve:null,totalLength:0,rect:new Sn(0,0,0,0)}:_}}])}(),bh=(0,V.Z)(function x(){(0,Z.Z)(this,x),this.mixer=Er}),Wf=function(x){function S(){var f;(0,Z.Z)(this,S);for(var A=arguments.length,_=new Array(A),k=0;k>>1;Rl(x[_],S)<0?f=_+1:A=_}return f}function Rl(x,S){var f=Number(x.parsedStyle.zIndex||0),A=Number(S.parsedStyle.zIndex||0);if(f===A){var _=x.parentNode;if(_){var k=_.childNodes||[];return k.indexOf(x)-k.indexOf(S)}}return f-A}function Zf(x){var S=x;do{var f,A=(f=S.parsedStyle)===null||f===void 0?void 0:f.clipPath;if(A)return S;S=S.parentElement}while(S!==null);return null}var ku="px";function Dh(x,S,f){vu&&x.style&&(x.style.width=S+ku,x.style.height=f+ku)}function Vu(x,S){if(vu)return document.defaultView.getComputedStyle(x,null).getPropertyValue(S)}function EA(x){var S=Vu(x,"width");return S==="auto"?x.offsetWidth:parseFloat(S)}function zu(x){var S=Vu(x,"height");return S==="auto"?x.offsetHeight:parseFloat(S)}var Wr=1,Hc={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},yu=typeof performance=="object"&&performance.now?performance:Date;function Hl(x){return x.nodeName===Jt.FRAGMENT?!0:x.getRootNode().nodeName===Jt.FRAGMENT}function Yl(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"auto",S=arguments.length>1?arguments[1]:void 0,f=arguments.length>2?arguments[2]:void 0,A=!1,_=!1,k=!!S&&!S.isNone,G=!!f&&!f.isNone;return x==="visiblepainted"||x==="painted"||x==="auto"?(A=k,_=G):x==="visiblefill"||x==="fill"?A=!0:x==="visiblestroke"||x==="stroke"?_=!0:(x==="visible"||x==="all")&&(A=!0,_=!0),[A,_]}var Ql=1,Km=function(){return Ql++},Ol=typeof self=="object"&&self.self===self?self:typeof b.g=="object"&&b.g.global===b.g?b.g:{},Kf=Date.now(),Zv=function(){return Ol.performance&&typeof Ol.performance.now=="function"?Ol.performance.now():Date.now()-Kf},ql={},Rp=Date.now(),$f=function(S){if(typeof S!="function")throw new TypeError("".concat(S," is not a function"));var f=Date.now(),A=f-Rp,_=A>16?0:16-A,k=Km();return ql[k]=S,Object.keys(ql).length>1||setTimeout(function(){Rp=f;var G=ql;ql={},Object.keys(G).forEach(function(ae){return G[ae](Zv())})},_),k},wl=function(S){delete ql[S]},ha=["","webkit","moz","ms","o"],$m=function(S){return typeof S!="string"?$f:S===""?Ol.requestAnimationFrame:Ol["".concat(S,"RequestAnimationFrame")]},kh=function(S){return typeof S!="string"?wl:S===""?Ol.cancelAnimationFrame:Ol["".concat(S,"CancelAnimationFrame")]||Ol["".concat(S,"CancelRequestAnimationFrame")]},lm=function(S,f){for(var A=0;S[A]!==void 0;){if(f(S[A]))return S[A];A+=1}},qh=lm(ha,function(x){return!!$m(x)}),th=$m(qh),ff=kh(qh);Ol.requestAnimationFrame=th,Ol.cancelAnimationFrame=ff;var Yu=function(){function x(){(0,Z.Z)(this,x),this.callbacks=[]}return(0,V.Z)(x,[{key:"getCallbacksNum",value:function(){return this.callbacks.length}},{key:"tapPromise",value:function(f,A){this.callbacks.push(A)}},{key:"promise",value:function(){for(var f=arguments.length,A=new Array(f),_=0;_=0;rt--){var bt=Ue[rt].trim();!Xf.test(bt)&&CA.indexOf(bt)<0&&(bt='"'.concat(bt,'"')),Ue[rt]=bt}return"".concat(k," ").concat(G," ").concat(ae," ").concat(ge," ").concat(Ue.join(","))},function(x){var S=cc(x),f=S.fontSize,A=S.fontFamily,_=S.fontStyle,k=S.fontVariant,G=S.fontWeight;return"".concat(_,"_").concat(k,"_").concat(G,"_").concat(f,"_").concat(A)}),Ru=1e-6,ka=function(S){return Math.max(S,Ru)};function Af(x,S,f){return j.identity(x),x[4]=Math.tan(S),x[1]=Math.tan(f),x}var Sl=j.create(),xd=j.create(),zd={scale:function(S){j.fromScaling(Sl,[S[0].value,S[1].value,1].map(function(f){return ka(f)}))},scaleX:function(S){j.fromScaling(Sl,[S[0].value,1,1].map(function(f){return ka(f)}))},scaleY:function(S){j.fromScaling(Sl,[1,S[0].value,1].map(function(f){return ka(f)}))},scaleZ:function(S){j.fromScaling(Sl,[1,1,S[0].value].map(function(f){return ka(f)}))},scale3d:function(S){j.fromScaling(Sl,[S[0].value,S[1].value,S[2].value].map(function(f){return ka(f)}))},translate:function(S){j.fromTranslation(Sl,[S[0].value,S[1].value,0])},translateX:function(S){j.fromTranslation(Sl,[S[0].value,0,0])},translateY:function(S){j.fromTranslation(Sl,[0,S[0].value,0])},translateZ:function(S){j.fromTranslation(Sl,[0,0,S[0].value])},translate3d:function(S){j.fromTranslation(Sl,[S[0].value,S[1].value,S[2].value])},rotate:function(S){j.fromZRotation(Sl,Yt(ce(S[0])))},rotateX:function(S){j.fromXRotation(Sl,Yt(ce(S[0])))},rotateY:function(S){j.fromYRotation(Sl,Yt(ce(S[0])))},rotateZ:function(S){j.fromZRotation(Sl,Yt(ce(S[0])))},rotate3d:function(S){j.fromRotation(Sl,Yt(ce(S[3])),[S[0].value,S[1].value,S[2].value])},skew:function(S){Af(Sl,Yt(S[0].value),Yt(S[1].value))},skewX:function(S){Af(Sl,Yt(S[0].value),0)},skewY:function(S){Af(Sl,0,Yt(S[0].value))},matrix:function(S){j.set(Sl,S[0].value,S[1].value,0,0,S[2].value,S[3].value,0,0,0,0,1,0,S[4].value,S[5].value,0,1)},matrix3d:function(S){j.set.apply(j,[Sl].concat((0,N.Z)(S.map(function(f){return f.value}))))}},TA=D.al(1,1,1),Gd=D.Ue(),Hd={translate:function(S,f){Oi.sceneGraphService.setLocalScale(S,TA,!1),Oi.sceneGraphService.setLocalEulerAngles(S,Gd,void 0,void 0,!1),Oi.sceneGraphService.setLocalPosition(S,[f[0].value,f[1].value,0],!1),Oi.sceneGraphService.dirtyLocalTransform(S,S.transformable)}};function pf(x,S){if(x.length){if(x.length===1&&Hd[x[0].t]){Hd[x[0].t](S,x[0].d);return}for(var f=j.identity(xd),A=0;A1&&arguments[1]!==void 0?arguments[1]:!1,_=arguments.length>2?arguments[2]:void 0;if(_)return this.dispatchEventToSelf(f),!0;var k;if(this.document)k=this;else if(this.defaultView)k=this.defaultView;else{var G;k=(G=this.ownerDocument)===null||G===void 0?void 0:G.defaultView}if(k){if(f.manager=k.getEventService(),!f.manager)return!1;f.defaultPrevented=!1,f.path?f.path.length=0:f.page=[],A||(f.target=this),f.manager.dispatchEvent(f,f.type,A)}else this.dispatchEventToSelf(f);return!f.defaultPrevented}}])}(),vo=function(x){function S(){var f;(0,Z.Z)(this,S);for(var A=arguments.length,_=new Array(A),k=0;k0&&arguments[0]!==void 0?arguments[0]:{};return this.parentNode?this.parentNode.getRootNode(A):A.composed&&this.host?this.host.getRootNode(A):this}},{key:"hasChildNodes",value:function(){return this.childNodes.length>0}},{key:"isDefaultNamespace",value:function(A){throw new Error(Oe)}},{key:"lookupNamespaceURI",value:function(A){throw new Error(Oe)}},{key:"lookupPrefix",value:function(A){throw new Error(Oe)}},{key:"normalize",value:function(){throw new Error(Oe)}},{key:"isEqualNode",value:function(A){return this===A}},{key:"isSameNode",value:function(A){return this.isEqualNode(A)}},{key:"parent",get:function(){return this.parentNode}},{key:"parentElement",get:function(){return null}},{key:"nextSibling",get:function(){return null}},{key:"previousSibling",get:function(){return null}},{key:"firstChild",get:function(){return this.childNodes.length>0?this.childNodes[0]:null}},{key:"lastChild",get:function(){return this.childNodes.length>0?this.childNodes[this.childNodes.length-1]:null}},{key:"compareDocumentPosition",value:function(A){if(A===this)return 0;for(var _=A,k=this,G=[_],ae=[k];(ge=_.parentNode)!==null&&ge!==void 0?ge:k.parentNode;){var ge;_=_.parentNode?(G.push(_.parentNode),_.parentNode):_,k=k.parentNode?(ae.push(k.parentNode),k.parentNode):k}if(_!==k)return S.DOCUMENT_POSITION_DISCONNECTED|S.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|S.DOCUMENT_POSITION_PRECEDING;var Ue=G.length>ae.length?G:ae,rt=Ue===G?ae:G;if(Ue[Ue.length-rt.length]===rt[0])return Ue===G?S.DOCUMENT_POSITION_CONTAINED_BY|S.DOCUMENT_POSITION_FOLLOWING:S.DOCUMENT_POSITION_CONTAINS|S.DOCUMENT_POSITION_PRECEDING;for(var bt=Ue.length-rt.length,Zt=rt.length-1;Zt>=0;Zt--){var wn=rt[Zt],mn=Ue[bt+Zt];if(mn!==wn){var Gn=wn.parentNode.childNodes;return Gn.indexOf(wn)0&&_;)_=_.parentNode,A--;return _}},{key:"forEach",value:function(A){for(var _=[this];_.length>0;){var k=_.pop(),G=A(k);if(G===!1)break;for(var ae=k.childNodes.length-1;ae>=0;ae--)_.push(k.childNodes[ae])}}}],[{key:"isNode",value:function(A){return!!A.childNodes}}])}(Sg);vo.DOCUMENT_POSITION_DISCONNECTED=1,vo.DOCUMENT_POSITION_PRECEDING=2,vo.DOCUMENT_POSITION_FOLLOWING=4,vo.DOCUMENT_POSITION_CONTAINS=8,vo.DOCUMENT_POSITION_CONTAINED_BY=16,vo.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC=32;var gf=2048,mf=function(){function x(S,f){var A=this;(0,Z.Z)(this,x),this.nativeHTMLMap=new WeakMap,this.cursor="default",this.mappingTable={},this.mappingState={trackingData:{}},this.eventPool=new Map,this.tmpMatrix=j.create(),this.tmpVec3=D.Ue(),this.onPointerDown=function(_){var k=A.createPointerEvent(_);if(A.dispatchEvent(k,"pointerdown"),k.pointerType==="touch")A.dispatchEvent(k,"touchstart");else if(k.pointerType==="mouse"||k.pointerType==="pen"){var G=k.button===2;A.dispatchEvent(k,G?"rightdown":"mousedown")}var ae=A.trackingData(_.pointerId);ae.pressTargetsByButton[_.button]=k.composedPath(),A.freeEvent(k)},this.onPointerUp=function(_){var k=yu.now(),G=A.createPointerEvent(_,void 0,void 0,A.context.config.alwaysTriggerPointerEventOnCanvas?A.rootTarget:void 0);if(A.dispatchEvent(G,"pointerup"),G.pointerType==="touch")A.dispatchEvent(G,"touchend");else if(G.pointerType==="mouse"||G.pointerType==="pen"){var ae=G.button===2;A.dispatchEvent(G,ae?"rightup":"mouseup")}var ge=A.trackingData(_.pointerId),Ue=A.findMountedTarget(ge.pressTargetsByButton[_.button]),rt=Ue;if(Ue&&!G.composedPath().includes(Ue)){for(var bt=Ue;bt&&!G.composedPath().includes(bt);){if(G.currentTarget=bt,A.notifyTarget(G,"pointerupoutside"),G.pointerType==="touch")A.notifyTarget(G,"touchendoutside");else if(G.pointerType==="mouse"||G.pointerType==="pen"){var Zt=G.button===2;A.notifyTarget(G,Zt?"rightupoutside":"mouseupoutside")}vo.isNode(bt)&&(bt=bt.parentNode)}delete ge.pressTargetsByButton[_.button],rt=bt}if(rt){var wn,mn=A.clonePointerEvent(G,"click");mn.target=rt,mn.path=[],ge.clicksByButton[_.button]||(ge.clicksByButton[_.button]={clickCount:0,target:mn.target,timeStamp:k});var Gn=A.context.renderingContext.root.ownerDocument.defaultView,ir=ge.clicksByButton[_.button];ir.target===mn.target&&k-ir.timeStamp=1;k--)if(f.currentTarget=_[k],this.notifyTarget(f,A),f.propagationStopped||f.propagationImmediatelyStopped)return;if(f.eventPhase=f.AT_TARGET,f.currentTarget=f.target,this.notifyTarget(f,A),!(f.propagationStopped||f.propagationImmediatelyStopped)){var G=_.indexOf(f.currentTarget);f.eventPhase=f.BUBBLING_PHASE;for(var ae=G+1;ae<_.length;ae++)if(f.currentTarget=_[ae],this.notifyTarget(f,A),f.propagationStopped||f.propagationImmediatelyStopped)return}}}},{key:"propagationPath",value:function(f){var A=[f],_=this.rootTarget.defaultView||null;if(_&&_===f)return A.unshift(_.document),A;for(var k=0;kG||_>ae?null:!ge&&this.pickHandler(f)||this.rootTarget||null}},{key:"isNativeEventFromCanvas",value:function(f,A){var _,k=A==null?void 0:A.target;if((_=k)!==null&&_!==void 0&&_.shadowRoot&&(k=A.composedPath()[0]),k){if(k===f)return!0;if(f&&f.contains)return f.contains(k)}return A!=null&&A.composedPath?A.composedPath().indexOf(f)>-1:!1}},{key:"getExistedHTML",value:function(f){if(f.nativeEvent.composedPath)for(var A=0,_=f.nativeEvent.composedPath();A<_.length;A++){var k=_[A],G=this.nativeHTMLMap.get(k);if(G)return G}return null}},{key:"pickTarget",value:function(f){return this.hitTest({clientX:f.clientX,clientY:f.clientY,viewportX:f.viewportX,viewportY:f.viewportY,x:f.canvasX,y:f.canvasY})}},{key:"createPointerEvent",value:function(f,A,_,k){var G=this.allocateEvent(Qd);this.copyPointerData(f,G),this.copyMouseData(f,G),this.copyData(f,G),G.nativeEvent=f.nativeEvent,G.originalEvent=f;var ae=this.getExistedHTML(G),ge=this.context.contextService.getDomElement();return G.target=_!=null?_:ae||this.isNativeEventFromCanvas(ge,G.nativeEvent)&&this.pickTarget(G)||k,typeof A=="string"&&(G.type=A),G}},{key:"createWheelEvent",value:function(f){var A=this.allocateEvent(Wd);this.copyWheelData(f,A),this.copyMouseData(f,A),this.copyData(f,A),A.nativeEvent=f.nativeEvent,A.originalEvent=f;var _=this.getExistedHTML(A),k=this.context.contextService.getDomElement();return A.target=_||this.isNativeEventFromCanvas(k,A.nativeEvent)&&this.pickTarget(A),A}},{key:"trackingData",value:function(f){return this.mappingState.trackingData[f]||(this.mappingState.trackingData[f]={pressTargetsByButton:{},clicksByButton:{},overTarget:null}),this.mappingState.trackingData[f]}},{key:"cloneWheelEvent",value:function(f){var A=this.allocateEvent(Wd);return A.nativeEvent=f.nativeEvent,A.originalEvent=f.originalEvent,this.copyWheelData(f,A),this.copyMouseData(f,A),this.copyData(f,A),A.target=f.target,A.path=f.composedPath().slice(),A.type=f.type,A}},{key:"clonePointerEvent",value:function(f,A){var _=this.allocateEvent(Qd);return _.nativeEvent=f.nativeEvent,_.originalEvent=f.originalEvent,this.copyPointerData(f,_),this.copyMouseData(f,_),this.copyData(f,_),_.target=f.target,_.path=f.composedPath().slice(),_.type=A!=null?A:_.type,_}},{key:"copyPointerData",value:function(f,A){A.pointerId=f.pointerId,A.width=f.width,A.height=f.height,A.isPrimary=f.isPrimary,A.pointerType=f.pointerType,A.pressure=f.pressure,A.tangentialPressure=f.tangentialPressure,A.tiltX=f.tiltX,A.tiltY=f.tiltY,A.twist=f.twist}},{key:"copyMouseData",value:function(f,A){A.altKey=f.altKey,A.button=f.button,A.buttons=f.buttons,A.ctrlKey=f.ctrlKey,A.metaKey=f.metaKey,A.shiftKey=f.shiftKey,A.client.copyFrom(f.client),A.movement.copyFrom(f.movement),A.canvas.copyFrom(f.canvas),A.screen.copyFrom(f.screen),A.global.copyFrom(f.global),A.offset.copyFrom(f.offset)}},{key:"copyWheelData",value:function(f,A){A.deltaMode=f.deltaMode,A.deltaX=f.deltaX,A.deltaY=f.deltaY,A.deltaZ=f.deltaZ}},{key:"copyData",value:function(f,A){A.isTrusted=f.isTrusted,A.timeStamp=yu.now(),A.type=f.type,A.detail=f.detail,A.view=f.view,A.page.copyFrom(f.page),A.viewport.copyFrom(f.viewport)}},{key:"allocateEvent",value:function(f){this.eventPool.has(f)||this.eventPool.set(f,[]);var A=this.eventPool.get(f).pop()||new f(this);return A.eventPhase=A.NONE,A.currentTarget=null,A.path=[],A.target=null,A}},{key:"freeEvent",value:function(f){if(f.manager!==this)throw new Error("It is illegal to free an event not managed by this EventBoundary!");var A=f.constructor;this.eventPool.has(A)||this.eventPool.set(A,[]),this.eventPool.get(A).push(f)}},{key:"notifyTarget",value:function(f,A){A=A!=null?A:f.type;var _=f.eventPhase===f.CAPTURING_PHASE||f.eventPhase===f.AT_TARGET?"".concat(A,"capture"):A;this.notifyListeners(f,_),f.eventPhase===f.AT_TARGET&&this.notifyListeners(f,A)}},{key:"notifyListeners",value:function(f,A){var _=f.currentTarget.emitter,k=_._events[A];if(k)if("fn"in k)k.once&&_.removeListener(A,k.fn,void 0,!0),k.fn.call(f.currentTarget||k.context,f);else for(var G=0;G=0;_--){var k=f[_];if(k===this.rootTarget||vo.isNode(k)&&k.parentNode===A)A=f[_];else break}return A}},{key:"getCursor",value:function(f){for(var A=f;A;){var _=Gl(A)&&A.getAttribute("cursor");if(_)return _;A=vo.isNode(A)&&A.parentNode}}}])}(),Np=function(){function x(){(0,Z.Z)(this,x)}return(0,V.Z)(x,[{key:"getOrCreateCanvas",value:function(f,A){if(this.canvas)return this.canvas;if(f||Oi.offscreenCanvas)this.canvas=f||Oi.offscreenCanvas,this.context=this.canvas.getContext("2d",(0,m.Z)({willReadFrequently:!0},A));else try{this.canvas=new window.OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",(0,m.Z)({willReadFrequently:!0},A)),(!this.context||!this.context.measureText)&&(this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"))}catch(_){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d",(0,m.Z)({willReadFrequently:!0},A))}return this.canvas.width=10,this.canvas.height=10,this.canvas}},{key:"getOrCreateContext",value:function(f,A){return this.context?this.context:(this.getOrCreateCanvas(f,A),this.context)}}],[{key:"createCanvas",value:function(){try{return new window.OffscreenCanvas(0,0)}catch(f){}try{return document.createElement("canvas")}catch(f){}return null}}])}(),rh=function(x){return x[x.CAMERA_CHANGED=0]="CAMERA_CHANGED",x[x.DISPLAY_OBJECT_CHANGED=1]="DISPLAY_OBJECT_CHANGED",x[x.NONE=2]="NONE",x}({}),Mc=function(){function x(S,f){(0,Z.Z)(this,x),this.inited=!1,this.stats={total:0,rendered:0},this.zIndexCounter=0,this.hooks={init:new Fc,initAsync:new Yu,dirtycheck:new Gu,cull:new Gu,beginFrame:new Fc,beforeRender:new Fc,render:new Fc,afterRender:new Fc,endFrame:new Fc,destroy:new Fc,pick:new Ui,pickSync:new Gu,pointerDown:new Fc,pointerUp:new Fc,pointerMove:new Fc,pointerOut:new Fc,pointerOver:new Fc,pointerWheel:new Fc,pointerCancel:new Fc,click:new Fc},this.globalRuntime=S,this.context=f}return(0,V.Z)(x,[{key:"init",value:function(f){var A=this,_=(0,m.Z)((0,m.Z)({},this.globalRuntime),this.context);this.context.renderingPlugins.forEach(function(k){k.apply(_,A.globalRuntime)}),this.hooks.init.call(),this.hooks.initAsync.getCallbacksNum()===0?(this.inited=!0,f()):this.hooks.initAsync.promise().then(function(){A.inited=!0,f()}).catch(function(k){})}},{key:"getStats",value:function(){return this.stats}},{key:"disableDirtyRectangleRendering",value:function(){var f=this.context.config.renderer,A=f.getConfig(),_=A.enableDirtyRectangleRendering;return!_||this.context.renderingContext.renderReasons.has(rh.CAMERA_CHANGED)}},{key:"render",value:function(f,A,_){var k=this,G=f.getConfig(),ae=this.context.renderingContext;if(this.stats.total=0,this.stats.rendered=0,this.zIndexCounter=0,this.globalRuntime.sceneGraphService.syncHierarchy(ae.root),this.globalRuntime.sceneGraphService.notifyMutationObservers(f),ae.renderReasons.size&&this.inited){ae.dirtyRectangleRenderingDisabled=this.disableDirtyRectangleRendering();var ge=ae.renderReasons.size===1&&ae.renderReasons.has(rh.CAMERA_CHANGED),Ue=!G.disableRenderHooks||!ge;Ue&&this.renderDisplayObject(ae.root,G,ae),this.hooks.beginFrame.call(A),Ue&&ae.renderListCurrentFrame.forEach(function(rt){k.hooks.beforeRender.call(rt),k.hooks.render.call(rt),k.hooks.afterRender.call(rt)}),this.hooks.endFrame.call(A),ae.renderListCurrentFrame=[],ae.renderReasons.clear(),_()}}},{key:"renderDisplayObject",value:function(f,A,_){var k=this,G=A.renderer.getConfig(),ae=G.enableDirtyCheck,ge=G.enableCulling;function Ue(Gn){var ir=Gn.renderable,tr=Gn.sortable,Zn=ae?ir.dirty||_.dirtyRectangleRenderingDisabled?Gn:null:Gn,Tr=null;Zn&&(Tr=ge?k.hooks.cull.call(Zn,k.context.camera):Zn,Tr&&(k.stats.rendered+=1,_.renderListCurrentFrame.push(Tr))),Gn.dirty(!1),tr.renderOrder=k.zIndexCounter,k.zIndexCounter+=1,k.stats.total+=1,tr.dirty&&(k.sort(Gn,tr),tr.dirty=!1,tr.dirtyChildren=[],tr.dirtyReason=void 0)}for(var rt=[f];rt.length>0;){var bt,Zt=rt.pop();Ue(Zt);for(var wn=((bt=Zt.sortable)===null||bt===void 0||(bt=bt.sorted)===null||bt===void 0?void 0:bt.length)>0?Zt.sortable.sorted:Zt.childNodes,mn=wn.length-1;mn>=0;mn--)rt.push(wn[mn])}}},{key:"sort",value:function(f,A){var _,k;(A==null||(_=A.sorted)===null||_===void 0?void 0:_.length)>0&&A.dirtyReason!==Di.Z_INDEX_CHANGED?A.dirtyChildren.forEach(function(G){var ae=A.sorted.indexOf(G);ae>-1&&A.sorted.splice(ae,1);var ge=f.childNodes.indexOf(G);if(ge>-1)if(A.sorted.length===0)A.sorted.push(G);else{var Ue=Ea(A.sorted,G);A.sorted.splice(Ue,0,G)}}):A.sorted=f.childNodes.slice().sort(Rl),((k=A.sorted)===null||k===void 0?void 0:k.length)>0&&f.childNodes.filter(function(G){return G.parsedStyle.zIndex}).length===0&&(A.sorted=[])}},{key:"destroy",value:function(){this.inited=!1,this.hooks.destroy.call()}},{key:"dirty",value:function(){this.context.renderingContext.renderReasons.add(rh.DISPLAY_OBJECT_CHANGED)}}])}(),ih=/\[\s*(.*)=(.*)\s*\]/,Fp=function(){function x(){(0,Z.Z)(this,x)}return(0,V.Z)(x,[{key:"selectOne",value:function(f,A){var _=this;if(f.startsWith("."))return A.find(function(ge){return((ge==null?void 0:ge.classList)||[]).indexOf(_.getIdOrClassname(f))>-1});if(f.startsWith("#"))return A.find(function(ge){return ge.id===_.getIdOrClassname(f)});if(f.startsWith("[")){var k=this.getAttribute(f),G=k.name,ae=k.value;return G?A.find(function(ge){return A!==ge&&(G==="name"?ge.name===ae:_.attributeToString(ge,G)===ae)}):null}return A.find(function(ge){return A!==ge&&ge.nodeName===f})}},{key:"selectAll",value:function(f,A){var _=this;if(f.startsWith("."))return A.findAll(function(ge){return A!==ge&&((ge==null?void 0:ge.classList)||[]).indexOf(_.getIdOrClassname(f))>-1});if(f.startsWith("#"))return A.findAll(function(ge){return A!==ge&&ge.id===_.getIdOrClassname(f)});if(f.startsWith("[")){var k=this.getAttribute(f),G=k.name,ae=k.value;return G?A.findAll(function(ge){return A!==ge&&(G==="name"?ge.name===ae:_.attributeToString(ge,G)===ae)}):[]}return A.findAll(function(ge){return A!==ge&&ge.nodeName===f})}},{key:"is",value:function(f,A){if(f.startsWith("."))return A.className===this.getIdOrClassname(f);if(f.startsWith("#"))return A.id===this.getIdOrClassname(f);if(f.startsWith("[")){var _=this.getAttribute(f),k=_.name,G=_.value;return k==="name"?A.name===G:this.attributeToString(A,k)===G}return A.nodeName===f}},{key:"getIdOrClassname",value:function(f){return f.substring(1)}},{key:"getAttribute",value:function(f){var A=f.match(ih),_="",k="";return A&&A.length>2&&(_=A[1].replace(/"/g,""),k=A[2].replace(/"/g,"")),{name:_,value:k}}},{key:"attributeToString",value:function(f,A){if(!f.getAttribute)return"";var _=f.getAttribute(A);return(0,$e.Z)(_)?"":_.toString?_.toString():""}}])}(),Ra=function(x){return x.ATTR_MODIFIED="DOMAttrModified",x.INSERTED="DOMNodeInserted",x.MOUNTED="DOMNodeInsertedIntoDocument",x.REMOVED="removed",x.UNMOUNTED="DOMNodeRemovedFromDocument",x.REPARENT="reparent",x.DESTROY="destroy",x.BOUNDS_CHANGED="bounds-changed",x.CULLED="culled",x}({}),Hu=function(x){function S(f,A,_,k,G,ae,ge,Ue){var rt;return(0,Z.Z)(this,S),rt=(0,E.Z)(this,S,[null]),rt.relatedNode=A,rt.prevValue=_,rt.newValue=k,rt.attrName=G,rt.attrChange=ae,rt.prevParsedValue=ge,rt.newParsedValue=Ue,rt.type=f,rt}return(0,F.Z)(S,x),(0,V.Z)(S)}(Jh);Hu.ADDITION=2,Hu.MODIFICATION=1,Hu.REMOVAL=3;var vf=new Hu(Ra.REPARENT,null,"","","",0,"",""),_d=we.Ue(),wh=D.Ue(),Iu=D.al(1,1,1),yf=j.create(),BA=we.Ue(),Lc=D.Ue(),xf=j.create(),Sh=he.Ue(),bf=D.Ue(),Yf=he.Ue(),RA=D.Ue(),wd=D.Ue(),sh=D.Ue(),Sd=j.create(),IA=he.Ue(),NA=he.Ue(),qf=he.Ue(),Mg=function(){function x(S){(0,Z.Z)(this,x),this.displayObjectDependencyMap=new WeakMap,this.runtime=S}return(0,V.Z)(x,[{key:"matches",value:function(f,A){return this.runtime.sceneGraphSelector.is(f,A)}},{key:"querySelector",value:function(f,A){return this.runtime.sceneGraphSelector.selectOne(f,A)}},{key:"querySelectorAll",value:function(f,A){return this.runtime.sceneGraphSelector.selectAll(f,A)}},{key:"attach",value:function(f,A,_){var k,G=!1;f.parentNode&&(G=f.parentNode!==A,this.detach(f));var ae=f.nodeName===Jt.FRAGMENT,ge=Hl(A);f.parentNode=A;var Ue=ae?f.childNodes:[f];(0,ve.Z)(_)?Ue.forEach(function(Gn){A.childNodes.splice(_,0,Gn),Gn.parentNode=A}):Ue.forEach(function(Gn){A.childNodes.push(Gn),Gn.parentNode=A});var rt=A,bt=rt.sortable;if((bt!=null&&(k=bt.sorted)!==null&&k!==void 0&&k.length||bt.dirty||f.parsedStyle.zIndex)&&(bt.dirtyChildren.indexOf(f)===-1&&bt.dirtyChildren.push(f),bt.dirty=!0,bt.dirtyReason=Di.ADDED),!ge){if(ae)this.dirtyFragment(f);else{var Zt=f.transformable;Zt&&this.dirtyWorldTransform(f,Zt)}if(G){var wn,mn=((wn=A.ownerDocument)===null||wn===void 0||(wn=wn.defaultView)===null||wn===void 0||(wn=wn.getConfig())===null||wn===void 0||(wn=wn.future)===null||wn===void 0?void 0:wn.experimentalCancelEventPropagation)===!0;f.dispatchEvent(vf,mn,mn)}}}},{key:"detach",value:function(f){var A,_;if(f.parentNode){var k=f.transformable,G=f.parentNode,ae=G.sortable;(ae!=null&&(A=ae.sorted)!==null&&A!==void 0&&A.length||(_=f.style)!==null&&_!==void 0&&_.zIndex)&&(ae.dirtyChildren.indexOf(f)===-1&&ae.dirtyChildren.push(f),ae.dirty=!0,ae.dirtyReason=Di.REMOVED);var ge=f.parentNode.childNodes.indexOf(f);ge>-1&&f.parentNode.childNodes.splice(ge,1),k&&this.dirtyWorldTransform(f,k),f.parentNode=null}}},{key:"getLocalPosition",value:function(f){return f.transformable.localPosition}},{key:"getLocalRotation",value:function(f){return f.transformable.localRotation}},{key:"getLocalScale",value:function(f){return f.transformable.localScale}},{key:"getLocalSkew",value:function(f){return f.transformable.localSkew}},{key:"getLocalTransform",value:function(f){var A=f.transformable;return Aa(A),A.localTransform}},{key:"setLocalPosition",value:function(f,A){var _,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,G=f.transformable;wd[0]=A[0],wd[1]=A[1],wd[2]=(_=A[2])!==null&&_!==void 0?_:0,!D.fS(G.localPosition,wd)&&(D.JG(G.localPosition,wd),k&&this.dirtyLocalTransform(f,G))}},{key:"translateLocal",value:function(f,A){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=D.al(A,_,k));var G=f.transformable;D.fS(A,wh)||(D.VC(A,A,G.localRotation),D.IH(G.localPosition,G.localPosition,A),this.dirtyLocalTransform(f,G))}},{key:"setLocalRotation",value:function(f,A,_,k,G){var ae=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;typeof A=="number"&&(A=he.t8(Sh,A,_,k,G));var ge=f.transformable;he.JG(ge.localRotation,A),ae&&this.dirtyLocalTransform(f,ge)}},{key:"rotateLocal",value:function(f,A){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=D.al(A,_,k));var G=f.transformable;he.Su(NA,A[0],A[1],A[2]),he.dC(G.localRotation,G.localRotation,NA),this.dirtyLocalTransform(f,G)}},{key:"setLocalScale",value:function(f,A){var _,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,G=f.transformable;D.t8(Lc,A[0],A[1],(_=A[2])!==null&&_!==void 0?_:G.localScale[2]),!D.fS(Lc,G.localScale)&&(D.JG(G.localScale,Lc),k&&this.dirtyLocalTransform(f,G))}},{key:"scaleLocal",value:function(f,A){var _,k=f.transformable;D.Jp(k.localScale,k.localScale,D.t8(Lc,A[0],A[1],(_=A[2])!==null&&_!==void 0?_:1)),this.dirtyLocalTransform(f,k)}},{key:"setLocalSkew",value:function(f,A,_){var k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;typeof A=="number"&&(A=we.t8(BA,A,_));var G=f.transformable;we.JG(G.localSkew,A),k&&this.dirtyLocalTransform(f,G)}},{key:"setLocalEulerAngles",value:function(f,A){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,G=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;typeof A=="number"&&(A=D.al(A,_,k));var ae=f.transformable;he.Su(ae.localRotation,A[0],A[1],A[2]),G&&this.dirtyLocalTransform(f,ae)}},{key:"setLocalTransform",value:function(f,A){var _=j.getTranslation(bf,A),k=j.getRotation(Yf,A),G=j.getScaling(RA,A);this.setLocalScale(f,G,!1),this.setLocalPosition(f,_,!1),this.setLocalRotation(f,k,void 0,void 0,void 0,!1),this.dirtyLocalTransform(f,f.transformable)}},{key:"resetLocalTransform",value:function(f){this.setLocalScale(f,Iu,!1),this.setLocalPosition(f,wh,!1),this.setLocalEulerAngles(f,wh,void 0,void 0,!1),this.setLocalSkew(f,_d,void 0,!1),this.dirtyLocalTransform(f,f.transformable)}},{key:"getPosition",value:function(f){var A=f.transformable;return j.getTranslation(A.position,this.getWorldTransform(f,A))}},{key:"getRotation",value:function(f){var A=f.transformable;return j.getRotation(A.rotation,this.getWorldTransform(f,A))}},{key:"getScale",value:function(f){var A=f.transformable;return j.getScaling(A.scaling,this.getWorldTransform(f,A))}},{key:"getOrigin",value:function(f){return f.getGeometryBounds(),f.transformable.origin}},{key:"getWorldTransform",value:function(f){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:f.transformable;return!A.localDirtyFlag&&!A.dirtyFlag||(f.parentNode&&f.parentNode.transformable&&this.getWorldTransform(f.parentNode),this.internalUpdateTransform(f)),A.worldTransform}},{key:"setPosition",value:function(f,A){var _,k=f.transformable;if(sh[0]=A[0],sh[1]=A[1],sh[2]=(_=A[2])!==null&&_!==void 0?_:0,!D.fS(this.getPosition(f),sh)){if(D.JG(k.position,sh),f.parentNode===null||!f.parentNode.transformable)D.JG(k.localPosition,sh);else{var G=f.parentNode.transformable;j.copy(Sd,G.worldTransform),j.invert(Sd,Sd),D.fF(k.localPosition,sh,Sd)}this.dirtyLocalTransform(f,k)}}},{key:"translate",value:function(f,A){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=D.t8(Lc,A,_,k)),!D.fS(A,wh)&&(D.IH(Lc,this.getPosition(f),A),this.setPosition(f,Lc))}},{key:"setRotation",value:function(f,A,_,k,G){var ae=f.transformable;if(typeof A=="number"&&(A=he.al(A,_,k,G)),f.parentNode===null||!f.parentNode.transformable)this.setLocalRotation(f,A);else{var ge=this.getRotation(f.parentNode);he.JG(Sh,ge),he.U_(Sh,Sh),he.Jp(ae.localRotation,Sh,A),he.Fv(ae.localRotation,ae.localRotation),this.dirtyLocalTransform(f,ae)}}},{key:"rotate",value:function(f,A){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=D.al(A,_,k));var G=f.transformable;if(f.parentNode===null||!f.parentNode.transformable)this.rotateLocal(f,A);else{var ae=Sh;he.Su(ae,A[0],A[1],A[2]);var ge=this.getRotation(f),Ue=this.getRotation(f.parentNode);he.JG(qf,Ue),he.U_(qf,qf),he.Jp(ae,qf,ae),he.Jp(G.localRotation,ae,ge),he.Fv(G.localRotation,G.localRotation),this.dirtyLocalTransform(f,G)}}},{key:"setOrigin",value:function(f,A){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=[A,_,k]);var G=f.transformable;if(!(A[0]===G.origin[0]&&A[1]===G.origin[1]&&A[2]===G.origin[2])){var ae=G.origin;ae[0]=A[0],ae[1]=A[1],ae[2]=A[2]||0,this.dirtyLocalTransform(f,G)}}},{key:"setEulerAngles",value:function(f,A){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;typeof A=="number"&&(A=D.al(A,_,k));var G=f.transformable;if(f.parentNode===null||!f.parentNode.transformable)this.setLocalEulerAngles(f,A);else{he.Su(G.localRotation,A[0],A[1],A[2]);var ae=this.getRotation(f.parentNode);he.JG(IA,he.U_(Sh,ae)),he.dC(G.localRotation,G.localRotation,IA),this.dirtyLocalTransform(f,G)}}},{key:"getGeometryBounds",value:function(f){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,_=f,k=_.geometry;k.dirty&&Oi.styleValueRegistry.updateGeometry(f);var G=A?k.renderBounds:k.contentBounds||null;return G||new ie}},{key:"getTransformedGeometryBounds",value:function(f){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,_=arguments.length>2?arguments[2]:void 0,k=this.getGeometryBounds(f,A);if(!ie.isEmpty(k)){var G=_||new ie;return G.setFromTransformedAABB(k,this.getWorldTransform(f)),G}return null}},{key:"getBounds",value:function(f){var A=this,_=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,k=f,G=k.renderable;if(!G.boundsDirty&&!_&&G.bounds)return G.bounds;if(!G.renderBoundsDirty&&_&&G.renderBounds)return G.renderBounds;var ae=_?G.renderBounds:G.bounds,ge=this.getTransformedGeometryBounds(f,_,ae),Ue=f.childNodes;if(Ue.forEach(function(Zt){var wn=A.getBounds(Zt,_);wn&&(ge?ge.add(wn):(ge=ae||new ie,ge.update(wn.center,wn.halfExtents)))}),ge||(ge=new ie),_){var rt=Zf(f);if(rt){var bt=rt.parsedStyle.clipPath.getBounds(_);ge?bt&&(ge=bt.intersection(ge)):ge.update(bt.center,bt.halfExtents)}}return _?(G.renderBounds=ge,G.renderBoundsDirty=!1):(G.bounds=ge,G.boundsDirty=!1),ge}},{key:"getLocalBounds",value:function(f){if(f.parentNode){var A=yf;f.parentNode.transformable&&(A=j.invert(xf,this.getWorldTransform(f.parentNode)));var _=this.getBounds(f);if(!ie.isEmpty(_)){var k=new ie;return k.setFromTransformedAABB(_,A),k}}return this.getBounds(f)}},{key:"getBoundingClientRect",value:function(f){var A,_,k=this.getGeometryBounds(f);ie.isEmpty(k)||(_=new ie,_.setFromTransformedAABB(k,this.getWorldTransform(f)));var G=(A=f.ownerDocument)===null||A===void 0||(A=A.defaultView)===null||A===void 0?void 0:A.getContextService().getBoundingClientRect();if(_){var ae=_.getMin(),ge=(0,C.Z)(ae,2),Ue=ge[0],rt=ge[1],bt=_.getMax(),Zt=(0,C.Z)(bt,2),wn=Zt[0],mn=Zt[1];return new Sn(Ue+((G==null?void 0:G.left)||0),rt+((G==null?void 0:G.top)||0),wn-Ue,mn-rt)}return new Sn((G==null?void 0:G.left)||0,(G==null?void 0:G.top)||0,0,0)}},{key:"internalUpdateTransform",value:function(f){var A,_=(A=f.parentNode)===null||A===void 0?void 0:A.transformable;Aa(f.transformable),sa(f.transformable,_)}},{key:"internalUpdateElement",value:function(f,A){var _,k,G,ae,ge=((_=f.ownerDocument)===null||_===void 0||(_=_.defaultView)===null||_===void 0||(_=_.getConfig())===null||_===void 0||(_=_.future)===null||_===void 0?void 0:_.experimentalAttributeUpdateOptimization)===!0,Ue=A[A.length-1],rt=(Ue==null?void 0:Ue.transformDirty)||((k=f.transformable)===null||k===void 0?void 0:k.localDirtyFlag);if(f.transformable){var bt;(bt=f.transformable).dirtyFlag||(bt.dirtyFlag=rt)}if(this.internalUpdateTransform(f),rt){var Zt;(Zt=f.dirty)===null||Zt===void 0||Zt.call(f,!0,!0)}var wn=((G=f.renderable)===null||G===void 0?void 0:G.boundsDirty)||((ae=f.renderable)===null||ae===void 0?void 0:ae.renderBoundsDirty);if((rt||wn)&&(Ue==null?void 0:Ue.shapeUpdated)===!1&&ge)for(var mn=A.length-1;mn>=0;){var Gn,ir,tr=A[mn];if(tr.shapeUpdated)break;(Gn=(ir=tr.node).dirty)===null||Gn===void 0||Gn.call(ir,!0,!0),tr.shapeUpdated=!0,mn-=1}return rt}},{key:"syncHierarchy",value:function(f){for(var A,_,k=[f],G=f.parentNode?[{node:f.parentNode,transformDirty:((A=f.parentNode.transformable)===null||A===void 0?void 0:A.localDirtyFlag)||((_=f.parentNode.transformable)===null||_===void 0?void 0:_.dirtyFlag),shapeUpdated:!1}]:[];k.length>0;){for(var ae=k.pop(),ge=G[G.length-1];G.length>0&&ae.parentNode!==ge.node;)ge=G.pop();var Ue=this.internalUpdateElement(ae,G);if(ae.childNodes.length>0){for(var rt=ae.childNodes.length-1;rt>=0;rt--)k.push(ae.childNodes[rt]);G.push({node:ae,transformDirty:Ue,shapeUpdated:!1})}}}},{key:"dirtyLocalTransform",value:function(f,A){Hl(f)||A.localDirtyFlag||(A.localDirtyFlag=!0,A.dirtyFlag||this.dirtyWorldTransform(f,A))}},{key:"dirtyWorldTransform",value:function(f,A){this.dirtyWorldInternal(f,A),this.dirtyToRoot(f,!0)}},{key:"dirtyWorldInternal",value:function(f,A){var _,k=this,G=((_=f.ownerDocument)===null||_===void 0||(_=_.defaultView)===null||_===void 0||(_=_.getConfig())===null||_===void 0||(_=_.future)===null||_===void 0?void 0:_.experimentalAttributeUpdateOptimization)===!0;A.dirtyFlag||(A.dirtyFlag=!0,f.dirty(!0,!0),G||f.childNodes.forEach(function(ae){var ge=ae.transformable;k.dirtyWorldInternal(ae,ge)}))}},{key:"dirtyToRoot",value:function(f){for(var A,_=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,k=f,G=((A=f.ownerDocument)===null||A===void 0||(A=A.defaultView)===null||A===void 0||(A=A.getConfig())===null||A===void 0||(A=A.future)===null||A===void 0?void 0:A.experimentalAttributeUpdateOptimization)===!0;k;){var ae,ge;if((ae=(ge=k).dirty)===null||ae===void 0||ae.call(ge,!0,!0),G)break;k=k.parentNode}_&&f.forEach(function(bt){var Zt;(Zt=bt.dirty)===null||Zt===void 0||Zt.call(bt,!0,!0)}),this.informDependentDisplayObjects(f);var Ue=f.mutations||[],rt=Ue.find(function(bt){return bt.type==="attributes"&&bt._boundsChangeData});rt?rt._boundsChangeData={affectChildren:rt._boundsChangeData.affectChildren||_}:(rt={type:"attributes",target:f,_boundsChangeData:{affectChildren:_}},Ue.push(rt)),f.mutations=Ue}},{key:"dirtyFragment",value:function(f){var A,_,k=f.transformable;k&&(k.dirtyFlag=!0,k.localDirtyFlag=!0),(A=(_=f).dirty)===null||A===void 0||A.call(_,!0,!0);for(var G=f.childNodes.length,ae=0;ae0){var _=new xu(Ra.BOUNDS_CHANGED,{detail:Array.from(A)});f.dispatchEvent(_,!0,!0)}}},{key:"updateDisplayObjectDependency",value:function(f,A,_,k){if(A&&A!==_){var G=this.displayObjectDependencyMap.get(A);if(G&&G[f]){var ae=G[f].indexOf(k);G[f].splice(ae,1)}}if(_){var ge=this.displayObjectDependencyMap.get(_);ge||(this.displayObjectDependencyMap.set(_,{}),ge=this.displayObjectDependencyMap.get(_)),ge[f]||(ge[f]=[]),ge[f].push(k)}}},{key:"informDependentDisplayObjects",value:function(f){var A,_=this,k=this.displayObjectDependencyMap.get(f);if(k){var G=(A=f.ownerDocument)===null||A===void 0||(A=A.defaultView)===null||A===void 0||(A=A.getConfig())===null||A===void 0||(A=A.future)===null||A===void 0?void 0:A.experimentalCancelEventPropagation;Object.keys(k).forEach(function(ae){k[ae].forEach(function(ge){_.dirtyToRoot(ge,!0),ge.dispatchEvent(new Hu(Ra.ATTR_MODIFIED,ge,_,_,ae,Hu.MODIFICATION,_,_),G,G),ge.isCustomElement&&ge.isConnected&&ge.attributeChangedCallback&&ge.attributeChangedCallback(ae,_,_)})})}}}])}(),hm=function(){function x(S){if((0,Z.Z)(this,x),S<=0)throw new Error("LRU capacity must be a positive number.");this.capacity=S,this.cache=new Map}return(0,V.Z)(x,[{key:"get",value:function(f){if(this.cache.has(f)){var A=this.cache.get(f);return this.cache.delete(f),this.cache.set(f,A),A}}},{key:"put",value:function(f,A){if(this.cache.has(f)&&this.cache.delete(f),this.cache.set(f,A),this.cache.size>this.capacity){var _=this.cache.keys().next().value;this.cache.delete(_)}}},{key:"len",value:function(){return this.cache.size}},{key:"clear",value:function(){this.cache.clear()}}])}(),ed={MetricsString:"|\xC9q\xC5",BaselineSymbol:"M",BaselineMultiplier:1.4,HeightMultiplier:2,Newlines:[10,13],BreakingSpaces:[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288]},td=/[a-zA-Z0-9\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff!"#$%&'()*+,-./:;]/,Jf=/[!%),.:;?\]}¢°·'""†‡›℃∶、。〃〆〕〗〞﹚﹜!"%'),.:;?!]}~]/,dm=/[$(£¥·'"〈《「『【〔〖〝﹙﹛$(.[{£¥]/,ap=/[!),.:;?\]}¢·–—'"•"、。〆〞〕〉》」︰︱︲︳﹐﹑﹒﹓﹔﹕﹖﹘﹚﹜!),.:;?︶︸︺︼︾﹀﹂﹗]|}、]/,Pp=/[([{£¥'"‵〈《「『〔〝︴﹙﹛({︵︷︹︻︽︿﹁﹃﹏]/,Lp=/[)\]}〕〉》」』】〙〗〟'"⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、:;,。.]/,Md=/[([{〔〈《「『【〘〖〝'"⦅«—...‥〳〴〵]/,Up=/[!%),.:;?\]}¢°'"†‡℃〆〈《「『〕!%),.:;?]}]/,Op=/[$([{£¥'"々〇〉》」〔$([{⦆¥₩#]/,_f=new RegExp("".concat(Jf.source,"|").concat(ap.source,"|").concat(Lp.source,"|").concat(Up.source)),eA=new RegExp("".concat(dm.source,"|").concat(Pp.source,"|").concat(Md.source,"|").concat(Op.source)),Zd=function(){function x(S){var f=this;(0,Z.Z)(this,x),this.fontMetricsCache={},this.shouldBreakByKinsokuShorui=function(A,_){return f.isBreakingSpace(_)?!1:!!(A&&(eA.exec(_)||_f.exec(A)))},this.trimByKinsokuShorui=function(A){var _=(0,N.Z)(A),k=_[_.length-2];if(!k)return A;var G=k[k.length-1];return _[_.length-2]=k.slice(0,-1),_[_.length-1]=G+_[_.length-1],_},this.runtime=S,this.charWidthCache=new hm(100)}return(0,V.Z)(x,[{key:"measureFont",value:function(f,A){if(this.fontMetricsCache[f])return this.fontMetricsCache[f];var _={ascent:0,descent:0,fontSize:0},k=this.runtime.offscreenCanvasCreator.getOrCreateCanvas(A),G=this.runtime.offscreenCanvasCreator.getOrCreateContext(A,{willReadFrequently:!0});G.font=f;var ae=ed.MetricsString+ed.BaselineSymbol,ge=Math.ceil(G.measureText(ae).width),Ue=Math.ceil(G.measureText(ed.BaselineSymbol).width),rt=ed.HeightMultiplier*Ue;Ue=Ue*ed.BaselineMultiplier|0,k.width=ge,k.height=rt,G.fillStyle="#f00",G.fillRect(0,0,ge,rt),G.font=f,G.textBaseline="alphabetic",G.fillStyle="#000",G.fillText(ae,0,Ue);var bt=G.getImageData(0,0,ge||1,rt||1).data,Zt=bt.length,wn=ge*4,mn=0,Gn=0,ir=!1;for(mn=0;mnUe;--mn){for(var Zn=0;ZnK&&R>=$;)R-=1,U=U.slice(0,-1);return{lineTxt:U,txtLastCharIndex:R}}function Hs(U,R){if(!(Gs<=0||Gs>ir)){if(!Zn[U]){Zn[U]=tr;return}var $=_s(Zn[U],R,ns+1,ir-Gs);Zn[U]=$.lineTxt+tr}}for(var Zs=0;Zs=wn){Zsir){Hs(Tr,Zs-1),A.isOverflowing=!0;break}if(ni>0&&ni+El>ir){var Ys=_s(Zn[Tr],Zs-1,ns+1,ir);if(Ys.txtLastCharIndex!==Zs-1){if(Zn[Tr]=Ys.lineTxt,Ys.txtLastCharIndex===G.length-1)break;Zs=Ys.txtLastCharIndex+1,Ia=G[Zs],Po=G[Zs-1],Ml=G[Zs+1],El=Ri(Ia)}if(Tr+1>=wn){Hs(Tr,Zs-1),A.isOverflowing=!0;break}if(ns=Zs-1,Tr+=1,ni=0,Zn[Tr]="",this.isBreakingSpace(Ia))continue;this.canBreakInLastChar(Ia)||(Zn=this.trimToBreakable(Zn),ni=this.sumTextWidthByCache(Zn[Tr]||"",Ri)),this.shouldBreakByKinsokuShorui(Ia,Ml)&&(Zn=this.trimByKinsokuShorui(Zn),ni+=Ri(Po||""))}ni+=El,Zn[Tr]+=Ia}return Zn.join(` -`)}},{key:"isBreakingSpace",value:function(f){return typeof f!="string"?!1:ed.BreakingSpaces.indexOf(f.charCodeAt(0))>=0}},{key:"isNewline",value:function(f){return typeof f!="string"?!1:ed.Newlines.indexOf(f.charCodeAt(0))>=0}},{key:"trimToBreakable",value:function(f){var A=(0,N.Z)(f),_=A[A.length-2],k=this.findBreakableIndex(_);if(k===-1||!_)return A;var G=_.slice(k,k+1),ae=this.isBreakingSpace(G),ge=k+1,Ue=k+(ae?0:1);return A[A.length-1]+=_.slice(ge,_.length),A[A.length-2]=_.slice(0,Ue),A}},{key:"canBreakInLastChar",value:function(f){return!(f&&td.test(f))}},{key:"sumTextWidthByCache",value:function(f,A){return f.split("").reduce(function(_,k){return _+A(k)},0)}},{key:"findBreakableIndex",value:function(f){for(var A=f.length-1;A>=0;A--)if(!td.test(f[A]))return A;return-1}},{key:"getFromCache",value:function(f,A,_,k){var G=_.get(f);if(typeof G!="number"){var ae=f.length*A,ge=k.measureText(f);G=ge.width+ae,_.put(f,G)}return G}},{key:"clearCache",value:function(){this.fontMetricsCache={},this.charWidthCache.clear()}}])}(),Oi={},op=function(x){var S=new Jl,f=new jf;return x={},(0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)(x,Jt.FRAGMENT,null),Jt.CIRCLE,new Il),Jt.ELLIPSE,new um),Jt.RECT,S),Jt.IMAGE,S),Jt.GROUP,new wg),Jt.LINE,new sp),Jt.TEXT,new cm(Oi)),Jt.POLYLINE,f),Jt.POLYGON,f),(0,Ci.Z)((0,Ci.Z)((0,Ci.Z)(x,Jt.PATH,new bd),Jt.HTML,new Vh),Jt.MESH,null)}(),ah=function(x){var S=new qc,f=new jl;return x={},(0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)(x,Ai.PERCENTAGE,null),Ai.NUMBER,new xh),Ai.ANGLE,new Bu),Ai.DEFINED_PATH,new cu),Ai.PAINT,S),Ai.COLOR,S),Ai.FILTER,new _l),Ai.LENGTH,f),Ai.LENGTH_PERCENTAGE,f),Ai.LENGTH_PERCENTAGE_12,new Jc),(0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)((0,Ci.Z)(x,Ai.LENGTH_PERCENTAGE_14,new eh),Ai.COORDINATE,new jl),Ai.OFFSET_DISTANCE,new MA),Ai.OPACITY_VALUE,new yl),Ai.PATH,new Nc),Ai.LIST_OF_POINTS,new bh),Ai.SHADOW_BLUR,new Wf),Ai.TEXT,new _h),Ai.TEXT_TRANSFORM,new ol),Ai.TRANSFORM,new Ip),(0,Ci.Z)((0,Ci.Z)((0,Ci.Z)(x,Ai.TRANSFORM_ORIGIN,new _g),Ai.Z_INDEX,new ip),Ai.MARKER,new df)}(),tA=function(){return typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof b.g!="undefined"?b.g:{}};Oi.CameraContribution=$r,Oi.AnimationTimeline=null,Oi.EasingFunction=null,Oi.offscreenCanvasCreator=new Np,Oi.sceneGraphSelector=new Fp,Oi.sceneGraphService=new Mg(Oi),Oi.textService=new Zd(Oi),Oi.geometryUpdaterFactory=op,Oi.CSSPropertySyntaxFactory=ah,Oi.styleValueRegistry=new zl(Oi),Oi.layoutRegistry=null,Oi.globalThis=tA(),Oi.enableStyleSyntax=!0,Oi.enableSizeAttenuation=!1;var wf=0;function Kd(){wf=0}var Mh=new Hu(Ra.INSERTED,null,"","","",0,"",""),Ed=new Hu(Ra.REMOVED,null,"","","",0,"",""),Eg=new xu(Ra.DESTROY),Dp=function(x){function S(){var f;(0,Z.Z)(this,S);for(var A=arguments.length,_=new Array(A),k=0;k0&&arguments[0]!==void 0?arguments[0]:!0,_=arguments.length>1?arguments[1]:void 0;this.renderable.dirty=A,_!==void 0&&(this.renderable.boundsDirty=_,this.renderable.renderBoundsDirty=_,this.geometry.dirty=_)}},{key:"className",get:function(){return this.getAttribute("class")||""},set:function(A){this.setAttribute("class",A)}},{key:"classList",get:function(){return this.className.split(" ").filter(function(A){return A!==""})}},{key:"tagName",get:function(){return this.nodeName}},{key:"children",get:function(){return this.childNodes}},{key:"childElementCount",get:function(){return this.childNodes.length}},{key:"firstElementChild",get:function(){return this.firstChild}},{key:"lastElementChild",get:function(){return this.lastChild}},{key:"parentElement",get:function(){return this.parentNode}},{key:"nextSibling",get:function(){if(this.parentNode){var A=this.parentNode.childNodes.indexOf(this);return this.parentNode.childNodes[A+1]||null}return null}},{key:"previousSibling",get:function(){if(this.parentNode){var A=this.parentNode.childNodes.indexOf(this);return this.parentNode.childNodes[A-1]||null}return null}},{key:"cloneNode",value:function(A){throw new Error(Oe)}},{key:"appendChild",value:function(A,_){var k;if(A.destroyed)throw new Error(Re);return Oi.sceneGraphService.attach(A,this,_),(k=this.ownerDocument)!==null&&k!==void 0&&k.defaultView&&(!Hl(this)&&A.nodeName===Jt.FRAGMENT?this.ownerDocument.defaultView.mountFragment(A):this.ownerDocument.defaultView.mountChildren(A)),this.isMutationObserved&&(Mh.relatedNode=this,A.dispatchEvent(Mh)),A}},{key:"insertBefore",value:function(A,_){if(!_)this.appendChild(A);else{A.parentElement&&A.parentElement.removeChild(A);var k=this.childNodes.indexOf(_);k===-1?this.appendChild(A):this.appendChild(A,k)}return A}},{key:"replaceChild",value:function(A,_){var k=this.childNodes.indexOf(_);return this.removeChild(_),this.appendChild(A,k),_}},{key:"removeChild",value:function(A){var _,k,G=((_=this.ownerDocument)===null||_===void 0||(_=_.defaultView)===null||_===void 0||(_=_.getConfig().future)===null||_===void 0?void 0:_.experimentalCancelEventPropagation)===!0;return Ed.relatedNode=this,A.dispatchEvent(Ed,G,G),(k=A.ownerDocument)!==null&&k!==void 0&&k.defaultView&&A.ownerDocument.defaultView.unmountChildren(A),Oi.sceneGraphService.detach(A),A}},{key:"removeChildren",value:function(){for(var A=this.childNodes.length-1;A>=0;A--){var _=this.childNodes[A];this.removeChild(_)}}},{key:"destroyChildren",value:function(){for(var A=this.childNodes.length-1;A>=0;A--){var _=this.childNodes[A];_.childNodes.length>0&&_.destroyChildren(),_.destroy()}}},{key:"matches",value:function(A){return Oi.sceneGraphService.matches(A,this)}},{key:"getElementById",value:function(A){return Oi.sceneGraphService.querySelector("#".concat(A),this)}},{key:"getElementsByName",value:function(A){return Oi.sceneGraphService.querySelectorAll('[name="'.concat(A,'"]'),this)}},{key:"getElementsByClassName",value:function(A){return Oi.sceneGraphService.querySelectorAll(".".concat(A),this)}},{key:"getElementsByTagName",value:function(A){return Oi.sceneGraphService.querySelectorAll(A,this)}},{key:"querySelector",value:function(A){return Oi.sceneGraphService.querySelector(A,this)}},{key:"querySelectorAll",value:function(A){return Oi.sceneGraphService.querySelectorAll(A,this)}},{key:"closest",value:function(A){var _=this;do{if(Oi.sceneGraphService.matches(A,_))return _;_=_.parentElement}while(_!==null);return null}},{key:"find",value:function(A){var _=this,k=null;return this.forEach(function(G){return G!==_&&A(G)?(k=G,!1):!0}),k}},{key:"findAll",value:function(A){var _=this,k=[];return this.forEach(function(G){G!==_&&A(G)&&k.push(G)}),k}},{key:"after",value:function(){var A=this;if(this.parentNode){for(var _=this.parentNode.childNodes.indexOf(this),k=arguments.length,G=new Array(k),ae=0;ae0&&arguments[0]!==void 0?arguments[0]:!1;return Oi.sceneGraphService.getGeometryBounds(this,A)}},{key:"getTransformedGeometryBounds",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return Oi.sceneGraphService.getTransformedGeometryBounds(this,A)}},{key:"getBounds",value:function(){return Oi.sceneGraphService.getBounds(this)}},{key:"getRenderBounds",value:function(){return Oi.sceneGraphService.getBounds(this,!0)}},{key:"getLocalBounds",value:function(){return Oi.sceneGraphService.getLocalBounds(this)}},{key:"getBoundingClientRect",value:function(){return Oi.sceneGraphService.getBoundingClientRect(this)}},{key:"getClientRects",value:function(){return[this.getBoundingClientRect()]}},{key:"computedStyleMap",value:function(){return new Map(Object.entries(this.computedStyle))}},{key:"getAttributeNames",value:function(){return Object.keys(this.attributes)}},{key:"getAttribute",value:function(A){if(typeof A!="symbol"){var _=this.attributes[A];return _}}},{key:"hasAttribute",value:function(A){return this.getAttributeNames().includes(A)}},{key:"hasAttributes",value:function(){return!!this.getAttributeNames().length}},{key:"removeAttribute",value:function(A){this.setAttribute(A,null),delete this.attributes[A]}},{key:"setAttribute",value:function(A,_){this.attributes[A]=_}},{key:"getAttributeNS",value:function(A,_){throw new Error(Oe)}},{key:"getAttributeNode",value:function(A){throw new Error(Oe)}},{key:"getAttributeNodeNS",value:function(A,_){throw new Error(Oe)}},{key:"hasAttributeNS",value:function(A,_){throw new Error(Oe)}},{key:"removeAttributeNS",value:function(A,_){throw new Error(Oe)}},{key:"removeAttributeNode",value:function(A){throw new Error(Oe)}},{key:"setAttributeNS",value:function(A,_,k){throw new Error(Oe)}},{key:"setAttributeNode",value:function(A){throw new Error(Oe)}},{key:"setAttributeNodeNS",value:function(A){throw new Error(Oe)}},{key:"toggleAttribute",value:function(A,_){throw new Error(Oe)}}])}(vo);function Do(x){return!!(x!=null&&x.nodeName)}var $d=Oi.globalThis.Proxy?Oi.globalThis.Proxy:function(){},Qc=new Hu(Ra.ATTR_MODIFIED,null,null,null,null,Hu.MODIFICATION,null,null),Eh=D.Ue(),lp=he.Ue(),wo=function(x){function S(f){var A;return(0,Z.Z)(this,S),A=(0,E.Z)(this,S),A.isCustomElement=!1,A.isMutationObserved=!1,A.activeAnimations=[],A.config=f,A.id=f.id||"",A.name=f.name||"",(f.className||f.class)&&(A.className=f.className||f.class),A.nodeName=f.type||Jt.GROUP,f.initialParsedStyle&&Object.assign(A.parsedStyle,f.initialParsedStyle),A.initAttributes(f.style),Oi.enableStyleSyntax&&(A.style=new $d({setProperty:function(k,G){A.setAttribute(k,G)},getPropertyValue:function(k){return A.getAttribute(k)},removeProperty:function(k){A.removeAttribute(k)},item:function(){return""}},{get:function(k,G){return k[G]!==void 0?k[G]:A.getAttribute(G)},set:function(k,G,ae){return A.setAttribute(G,ae),!0}})),A}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"destroy",value:function(){(0,En.Z)(S,"destroy",this,3)([]),this.getAnimations().forEach(function(A){A.cancel()})}},{key:"cloneNode",value:function(A,_){var k=(0,m.Z)({},this.attributes);for(var G in k){var ae=k[G];Do(ae)&&G!=="clipPath"&&G!=="offsetPath"&&G!=="textPath"&&(k[G]=ae.cloneNode(A)),_&&(k[G]=_(G,ae))}var ge=new this.constructor((0,m.Z)((0,m.Z)({},this.config),{},{style:k}));return ge.setLocalTransform(this.getLocalTransform()),A&&this.children.forEach(function(Ue){if(!Ue.style.isMarker){var rt=Ue.cloneNode(A);ge.appendChild(rt)}}),ge}},{key:"initAttributes",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_={forceUpdateGeometry:!0};Oi.styleValueRegistry.processProperties(this,A,_),this.dirty()}},{key:"setAttribute",value:function(A,_){var k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,G=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;(0,vr.Z)(_)||(k||_!==this.attributes[A])&&(this.internalSetAttribute(A,_,{memoize:G}),(0,En.Z)(S,"setAttribute",this,3)([A,_]))}},{key:"setAttributes",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},k=_.skipDispatchAttrModifiedEvent,G=k===void 0?!1:k,ae,ge;if(G||(ae=(0,m.Z)({},this.attributes),ge=(0,m.Z)({},this.parsedStyle)),Oi.styleValueRegistry.processProperties(this,A,_),this.dirty(),!G)for(var Ue in A)this.dispatchAttrModifiedEvent(Ue,ae[Ue],A[Ue],ge[Ue])}},{key:"internalSetAttribute",value:function(A,_){var k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},G=this.attributes[A],ae=this.parsedStyle[A];Oi.styleValueRegistry.processProperties(this,(0,Ci.Z)({},A,_),k),this.dirty(),this.dispatchAttrModifiedEvent(A,G,_,ae)}},{key:"dispatchAttrModifiedEvent",value:function(A,_,k,G){var ae=this.parsedStyle[A];if(this.isConnected)if(Qc.relatedNode=this,Qc.prevValue=_,Qc.newValue=k,Qc.attrName=A,Qc.prevParsedValue=G,Qc.newParsedValue=ae,this.isMutationObserved)this.dispatchEvent(Qc);else{var ge,Ue=((ge=this.ownerDocument.defaultView.getConfig().future)===null||ge===void 0?void 0:ge.experimentalCancelEventPropagation)===!0;Qc.target=this,this.ownerDocument.defaultView.dispatchEvent(Qc,!0,Ue)}if(this.isCustomElement&&this.isConnected||!this.isCustomElement){var rt,bt;(rt=(bt=this).attributeChangedCallback)===null||rt===void 0||rt.call(bt,A,_,k,G,ae)}}},{key:"getBBox",value:function(){var A=this.getBounds(),_=A.getMin(),k=(0,C.Z)(_,2),G=k[0],ae=k[1],ge=A.getMax(),Ue=(0,C.Z)(ge,2),rt=Ue[0],bt=Ue[1];return new Sn(G,ae,rt-G,bt-ae)}},{key:"setOrigin",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Oi.sceneGraphService.setOrigin(this,tn(A,_,k,!1)),this}},{key:"getOrigin",value:function(){return Oi.sceneGraphService.getOrigin(this)}},{key:"setPosition",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Oi.sceneGraphService.setPosition(this,tn(A,_,k,!1)),this}},{key:"setLocalPosition",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Oi.sceneGraphService.setLocalPosition(this,tn(A,_,k,!1)),this}},{key:"translate",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Oi.sceneGraphService.translate(this,tn(A,_,k,!1)),this}},{key:"translateLocal",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Oi.sceneGraphService.translateLocal(this,tn(A,_,k,!1)),this}},{key:"getPosition",value:function(){return Oi.sceneGraphService.getPosition(this)}},{key:"getLocalPosition",value:function(){return Oi.sceneGraphService.getLocalPosition(this)}},{key:"scale",value:function(A,_,k){return this.scaleLocal(A,_,k)}},{key:"scaleLocal",value:function(A,_,k){return typeof A=="number"&&(_=_||A,k=k||A,A=tn(A,_,k,!1)),Oi.sceneGraphService.scaleLocal(this,A),this}},{key:"setLocalScale",value:function(A,_,k){return typeof A=="number"&&(_=_||A,k=k||A,A=tn(A,_,k,!1)),Oi.sceneGraphService.setLocalScale(this,A),this}},{key:"getLocalScale",value:function(){return Oi.sceneGraphService.getLocalScale(this)}},{key:"getScale",value:function(){return Oi.sceneGraphService.getScale(this)}},{key:"getEulerAngles",value:function(){var A=Hr(Eh,Oi.sceneGraphService.getWorldTransform(this)),_=(0,C.Z)(A,3),k=_[2];return er(k)}},{key:"getLocalEulerAngles",value:function(){var A=Hr(Eh,Oi.sceneGraphService.getLocalRotation(this)),_=(0,C.Z)(A,3),k=_[2];return er(k)}},{key:"setEulerAngles",value:function(A){return Oi.sceneGraphService.setEulerAngles(this,0,0,A),this}},{key:"setLocalEulerAngles",value:function(A){return Oi.sceneGraphService.setLocalEulerAngles(this,0,0,A),this}},{key:"rotateLocal",value:function(A,_,k){return(0,$e.Z)(_)&&(0,$e.Z)(k)?Oi.sceneGraphService.rotateLocal(this,0,0,A):Oi.sceneGraphService.rotateLocal(this,A,_,k),this}},{key:"rotate",value:function(A,_,k){return(0,$e.Z)(_)&&(0,$e.Z)(k)?Oi.sceneGraphService.rotate(this,0,0,A):Oi.sceneGraphService.rotate(this,A,_,k),this}},{key:"setRotation",value:function(A,_,k,G){return Oi.sceneGraphService.setRotation(this,A,_,k,G),this}},{key:"setLocalRotation",value:function(A,_,k,G){return Oi.sceneGraphService.setLocalRotation(this,A,_,k,G),this}},{key:"setLocalSkew",value:function(A,_){return Oi.sceneGraphService.setLocalSkew(this,A,_),this}},{key:"getRotation",value:function(){return Oi.sceneGraphService.getRotation(this)}},{key:"getLocalRotation",value:function(){return Oi.sceneGraphService.getLocalRotation(this)}},{key:"getLocalSkew",value:function(){return Oi.sceneGraphService.getLocalSkew(this)}},{key:"getLocalTransform",value:function(){return Oi.sceneGraphService.getLocalTransform(this)}},{key:"getWorldTransform",value:function(){return Oi.sceneGraphService.getWorldTransform(this)}},{key:"setLocalTransform",value:function(A){return Oi.sceneGraphService.setLocalTransform(this,A),this}},{key:"resetLocalTransform",value:function(){Oi.sceneGraphService.resetLocalTransform(this)}},{key:"getAnimations",value:function(){return this.activeAnimations}},{key:"animate",value:function(A,_){var k,G=(k=this.ownerDocument)===null||k===void 0?void 0:k.timeline;return G?G.play(this,A,_):null}},{key:"isVisible",value:function(){var A;return((A=this.parsedStyle)===null||A===void 0?void 0:A.visibility)!=="hidden"}},{key:"interactive",get:function(){return this.isInteractive()},set:function(A){this.style.pointerEvents=A?"auto":"none"}},{key:"isInteractive",value:function(){var A;return((A=this.parsedStyle)===null||A===void 0?void 0:A.pointerEvents)!=="none"}},{key:"isCulled",value:function(){return!!(this.cullable&&this.cullable.enable&&!this.cullable.visible)}},{key:"toFront",value:function(){return this.parentNode&&(this.style.zIndex=Math.max.apply(Math,(0,N.Z)(this.parentNode.children.map(function(A){return Number(A.style.zIndex)})))+1),this}},{key:"toBack",value:function(){return this.parentNode&&(this.style.zIndex=Math.min.apply(Math,(0,N.Z)(this.parentNode.children.map(function(A){return Number(A.style.zIndex)})))-1),this}},{key:"getConfig",value:function(){return this.config}},{key:"attr",value:function(){for(var A=this,_=arguments.length,k=new Array(_),G=0;G<_;G++)k[G]=arguments[G];var ae=k[0],ge=k[1];return ae?(0,qr.Z)(ae)?(Object.keys(ae).forEach(function(Ue){A.setAttribute(Ue,ae[Ue])}),this):k.length===2?(this.setAttribute(ae,ge),this):this.attributes[ae]:this.attributes}},{key:"getMatrix",value:function(A){var _=A||this.getWorldTransform(),k=j.getTranslation(Eh,_),G=(0,C.Z)(k,2),ae=G[0],ge=G[1],Ue=j.getScaling(Eh,_),rt=(0,C.Z)(Ue,2),bt=rt[0],Zt=rt[1],wn=j.getRotation(lp,_),mn=Hr(Eh,wn),Gn=(0,C.Z)(mn,3),ir=Gn[0],tr=Gn[2];return Pr(ir||tr,ae,ge,bt,Zt)}},{key:"getLocalMatrix",value:function(){return this.getMatrix(this.getLocalTransform())}},{key:"setMatrix",value:function(A){var _=Zi(A),k=(0,C.Z)(_,5),G=k[0],ae=k[1],ge=k[2],Ue=k[3],rt=k[4];this.setEulerAngles(rt).setPosition(G,ae).setLocalScale(ge,Ue)}},{key:"setLocalMatrix",value:function(A){var _=Zi(A),k=(0,C.Z)(_,5),G=k[0],ae=k[1],ge=k[2],Ue=k[3],rt=k[4];this.setLocalEulerAngles(rt).setLocalPosition(G,ae).setLocalScale(ge,Ue)}},{key:"show",value:function(){this.forEach(function(A){A.style.visibility="visible"})}},{key:"hide",value:function(){this.forEach(function(A){A.style.visibility="hidden"})}},{key:"getCount",value:function(){return this.childElementCount}},{key:"getParent",value:function(){return this.parentElement}},{key:"getChildren",value:function(){return this.children}},{key:"getFirst",value:function(){return this.firstElementChild}},{key:"getLast",value:function(){return this.lastElementChild}},{key:"getChildByIndex",value:function(A){return this.children[A]||null}},{key:"add",value:function(A,_){return this.appendChild(A,_)}},{key:"set",value:function(A,_){this.config[A]=_}},{key:"get",value:function(A){return this.config[A]}},{key:"moveTo",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return this.setPosition(A,_,k),this}},{key:"move",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return this.setPosition(A,_,k),this}},{key:"setZIndex",value:function(A){return this.style.zIndex=A,this}}])}(Dp);wo.PARSED_STYLE_LIST=new Set(["class","className","clipPath","cursor","display","draggable","droppable","fill","fillOpacity","fillRule","filter","increasedLineWidthForHitTesting","lineCap","lineDash","lineDashOffset","lineJoin","lineWidth","miterLimit","hitArea","offsetDistance","offsetPath","offsetX","offsetY","opacity","pointerEvents","shadowColor","shadowType","shadowBlur","shadowOffsetX","shadowOffsetY","stroke","strokeOpacity","strokeWidth","strokeLinecap","strokeLineJoin","strokeDasharray","strokeDashoffset","transform","transformOrigin","textTransform","visibility","zIndex"]);var Ch=function(x){function S(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,Z.Z)(this,S),(0,E.Z)(this,S,[(0,m.Z)({type:Jt.CIRCLE},f)])}return(0,F.Z)(S,x),(0,V.Z)(S)}(wo);Ch.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["cx","cy","cz","r","isBillboard","isSizeAttenuation"]));var Cg=["style"],Ec=function(x){function S(){var f,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=A.style,k=(0,bn.Z)(A,Cg);return(0,Z.Z)(this,S),f=(0,E.Z)(this,S,[(0,m.Z)({style:_},k)]),f.isCustomElement=!0,f}return(0,F.Z)(S,x),(0,V.Z)(S)}(wo);Ec.PARSED_STYLE_LIST=new Set(["class","className","clipPath","cursor","draggable","droppable","opacity","pointerEvents","transform","transformOrigin","zIndex","visibility"]);var zh=function(x){function S(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,Z.Z)(this,S),(0,E.Z)(this,S,[(0,m.Z)({type:Jt.ELLIPSE},f)])}return(0,F.Z)(S,x),(0,V.Z)(S)}(wo);zh.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["cx","cy","cz","rx","ry","isBillboard","isSizeAttenuation"]));var fm=function(x){function S(){return(0,Z.Z)(this,S),(0,E.Z)(this,S,[{type:Jt.FRAGMENT}])}return(0,F.Z)(S,x),(0,V.Z)(S)}(wo);fm.PARSED_STYLE_LIST=new Set(["class","className"]);var Xd=function(x){function S(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,Z.Z)(this,S),(0,E.Z)(this,S,[(0,m.Z)({type:Jt.GROUP},f)])}return(0,F.Z)(S,x),(0,V.Z)(S)}(wo);Xd.PARSED_STYLE_LIST=new Set(["class","className","clipPath","cursor","draggable","droppable","opacity","pointerEvents","transform","transformOrigin","zIndex","visibility"]);var qu=["style"],Th=function(x){function S(){var f,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=A.style,k=(0,bn.Z)(A,qu);return(0,Z.Z)(this,S),f=(0,E.Z)(this,S,[(0,m.Z)({type:Jt.HTML,style:_},k)]),f.cullable.enable=!1,f}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"getDomElement",value:function(){return this.parsedStyle.$el}},{key:"getClientRects",value:function(){return[this.getBoundingClientRect()]}},{key:"getLocalBounds",value:function(){if(this.parentNode){var A=j.invert(j.create(),this.parentNode.getWorldTransform()),_=this.getBounds();if(!ie.isEmpty(_)){var k=new ie;return k.setFromTransformedAABB(_,A),k}}return this.getBounds()}}])}(wo);Th.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["x","y","$el","innerHTML","width","height"]));var oh=function(x){function S(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,Z.Z)(this,S),(0,E.Z)(this,S,[(0,m.Z)({type:Jt.IMAGE},f)])}return(0,F.Z)(S,x),(0,V.Z)(S)}(wo);oh.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["x","y","z","src","width","height","isBillboard","billboardRotation","isSizeAttenuation","keepAspectRatio"]));var kp=["style"],Sf=function(x){function S(){var f,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=A.style,k=(0,bn.Z)(A,kp);(0,Z.Z)(this,S),f=(0,E.Z)(this,S,[(0,m.Z)({type:Jt.LINE,style:(0,m.Z)({x1:0,y1:0,x2:0,y2:0,z1:0,z2:0},_)},k)]),f.markerStartAngle=0,f.markerEndAngle=0;var G=f.parsedStyle,ae=G.markerStart,ge=G.markerEnd;return ae&&Do(ae)&&(f.markerStartAngle=ae.getLocalEulerAngles(),f.appendChild(ae)),ge&&Do(ge)&&(f.markerEndAngle=ge.getLocalEulerAngles(),f.appendChild(ge)),f.transformMarker(!0),f.transformMarker(!1),f}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"attributeChangedCallback",value:function(A,_,k,G,ae){A==="x1"||A==="y1"||A==="x2"||A==="y2"||A==="markerStartOffset"||A==="markerEndOffset"?(this.transformMarker(!0),this.transformMarker(!1)):A==="markerStart"?(G&&Do(G)&&(this.markerStartAngle=0,G.remove()),ae&&Do(ae)&&(this.markerStartAngle=ae.getLocalEulerAngles(),this.appendChild(ae),this.transformMarker(!0))):A==="markerEnd"&&(G&&Do(G)&&(this.markerEndAngle=0,G.remove()),ae&&Do(ae)&&(this.markerEndAngle=ae.getLocalEulerAngles(),this.appendChild(ae),this.transformMarker(!1)))}},{key:"transformMarker",value:function(A){var _=this.parsedStyle,k=_.markerStart,G=_.markerEnd,ae=_.markerStartOffset,ge=_.markerEndOffset,Ue=_.x1,rt=_.x2,bt=_.y1,Zt=_.y2,wn=A?k:G;if(!(!wn||!Do(wn))){var mn=0,Gn,ir,tr,Zn,Tr,ni;A?(tr=Ue,Zn=bt,Gn=rt-Ue,ir=Zt-bt,Tr=ae||0,ni=this.markerStartAngle):(tr=rt,Zn=Zt,Gn=Ue-rt,ir=bt-Zt,Tr=ge||0,ni=this.markerEndAngle),mn=Math.atan2(ir,Gn),wn.setLocalEulerAngles(mn*180/Math.PI+ni),wn.setLocalPosition(tr+Math.cos(mn)*Tr,Zn+Math.sin(mn)*Tr)}}},{key:"getPoint",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,k=this.parsedStyle,G=k.x1,ae=k.y1,ge=k.x2,Ue=k.y2,rt=(0,Xt.U4)(G,ae,ge,Ue,A),bt=rt.x,Zt=rt.y,wn=D.fF(D.Ue(),D.al(bt,Zt,0),_?this.getWorldTransform():this.getLocalTransform());return new xt(wn[0],wn[1])}},{key:"getPointAtLength",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.getPoint(A/this.getTotalLength(),_)}},{key:"getTotalLength",value:function(){var A=this.parsedStyle,_=A.x1,k=A.y1,G=A.x2,ae=A.y2;return(0,Xt.Xk)(_,k,G,ae)}}])}(wo);Sf.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["x1","y1","x2","y2","z1","z2","isBillboard","isSizeAttenuation","markerStart","markerEnd","markerStartOffset","markerEndOffset"]));var Gh=["style"],Mf=function(x){function S(){var f,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=A.style,k=(0,bn.Z)(A,Gh);(0,Z.Z)(this,S),f=(0,E.Z)(this,S,[(0,m.Z)({type:Jt.PATH,style:_,initialParsedStyle:{miterLimit:4,d:(0,m.Z)({},ca)}},k)]),f.markerStartAngle=0,f.markerEndAngle=0,f.markerMidList=[];var G=f.parsedStyle,ae=G.markerStart,ge=G.markerEnd,Ue=G.markerMid;return ae&&Do(ae)&&(f.markerStartAngle=ae.getLocalEulerAngles(),f.appendChild(ae)),Ue&&Do(Ue)&&f.placeMarkerMid(Ue),ge&&Do(ge)&&(f.markerEndAngle=ge.getLocalEulerAngles(),f.appendChild(ge)),f.transformMarker(!0),f.transformMarker(!1),f}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"attributeChangedCallback",value:function(A,_,k,G,ae){A==="d"?(this.transformMarker(!0),this.transformMarker(!1),this.placeMarkerMid(this.parsedStyle.markerMid)):A==="markerStartOffset"||A==="markerEndOffset"?(this.transformMarker(!0),this.transformMarker(!1)):A==="markerStart"?(G&&Do(G)&&(this.markerStartAngle=0,G.remove()),ae&&Do(ae)&&(this.markerStartAngle=ae.getLocalEulerAngles(),this.appendChild(ae),this.transformMarker(!0))):A==="markerEnd"?(G&&Do(G)&&(this.markerEndAngle=0,G.remove()),ae&&Do(ae)&&(this.markerEndAngle=ae.getLocalEulerAngles(),this.appendChild(ae),this.transformMarker(!1))):A==="markerMid"&&this.placeMarkerMid(ae)}},{key:"transformMarker",value:function(A){var _=this.parsedStyle,k=_.markerStart,G=_.markerEnd,ae=_.markerStartOffset,ge=_.markerEndOffset,Ue=A?k:G;if(!(!Ue||!Do(Ue))){var rt=0,bt,Zt,wn,mn,Gn,ir;if(A){var tr=this.getStartTangent(),Zn=(0,C.Z)(tr,2),Tr=Zn[0],ni=Zn[1];wn=ni[0],mn=ni[1],bt=Tr[0]-ni[0],Zt=Tr[1]-ni[1],Gn=ae||0,ir=this.markerStartAngle}else{var ns=this.getEndTangent(),is=(0,C.Z)(ns,2),bi=is[0],Ri=is[1];wn=Ri[0],mn=Ri[1],bt=bi[0]-Ri[0],Zt=bi[1]-Ri[1],Gn=ge||0,ir=this.markerEndAngle}rt=Math.atan2(Zt,bt),Ue.setLocalEulerAngles(rt*180/Math.PI+ir),Ue.setLocalPosition(wn+Math.cos(rt)*Gn,mn+Math.sin(rt)*Gn)}}},{key:"placeMarkerMid",value:function(A){var _=this.parsedStyle.d.segments;if(this.markerMidList.forEach(function(rt){rt.remove()}),A&&Do(A))for(var k=1;k<_.length-1;k++){var G=(0,C.Z)(_[k].currentPoint,2),ae=G[0],ge=G[1],Ue=k===1?A:A.cloneNode(!0);this.markerMidList.push(Ue),this.appendChild(Ue),Ue.setLocalPosition(ae,ge)}}},{key:"getTotalLength",value:function(){return ri(this)}},{key:"getPointAtLength",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,k=this.parsedStyle.d.absolutePath,G=es(k,A),ae=G.x,ge=G.y,Ue=D.fF(D.Ue(),D.al(ae,ge,0),_?this.getWorldTransform():this.getLocalTransform());return new xt(Ue[0],Ue[1])}},{key:"getPoint",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.getPointAtLength(A*ri(this),_)}},{key:"getStartTangent",value:function(){var A=this.parsedStyle.d.segments,_=[];if(A.length>1){var k=A[0].currentPoint,G=A[1].currentPoint,ae=A[1].startTangent;_=[],ae?(_.push([k[0]-ae[0],k[1]-ae[1]]),_.push([k[0],k[1]])):(_.push([G[0],G[1]]),_.push([k[0],k[1]]))}return _}},{key:"getEndTangent",value:function(){var A=this.parsedStyle.d.segments,_=A.length,k=[];if(_>1){var G=A[_-2].currentPoint,ae=A[_-1].currentPoint,ge=A[_-1].endTangent;k=[],ge?(k.push([ae[0]-ge[0],ae[1]-ge[1]]),k.push([ae[0],ae[1]])):(k.push([G[0],G[1]]),k.push([ae[0],ae[1]]))}return k}}])}(wo);Mf.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["d","markerStart","markerMid","markerEnd","markerStartOffset","markerEndOffset","isBillboard","isSizeAttenuation"]));var bu=["style"],eu=function(x){function S(){var f,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=A.style,k=(0,bn.Z)(A,bu);(0,Z.Z)(this,S),f=(0,E.Z)(this,S,[(0,m.Z)({type:Jt.POLYGON,style:_,initialParsedStyle:{points:{points:[],totalLength:0,segments:[]},miterLimit:4,isClosed:!0}},k)]),f.markerStartAngle=0,f.markerEndAngle=0,f.markerMidList=[];var G=f.parsedStyle,ae=G.markerStart,ge=G.markerEnd,Ue=G.markerMid;return ae&&Do(ae)&&(f.markerStartAngle=ae.getLocalEulerAngles(),f.appendChild(ae)),Ue&&Do(Ue)&&f.placeMarkerMid(Ue),ge&&Do(ge)&&(f.markerEndAngle=ge.getLocalEulerAngles(),f.appendChild(ge)),f.transformMarker(!0),f.transformMarker(!1),f}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"attributeChangedCallback",value:function(A,_,k,G,ae){A==="points"?(this.transformMarker(!0),this.transformMarker(!1),this.placeMarkerMid(this.parsedStyle.markerMid)):A==="markerStartOffset"||A==="markerEndOffset"?(this.transformMarker(!0),this.transformMarker(!1)):A==="markerStart"?(G&&Do(G)&&(this.markerStartAngle=0,G.remove()),ae&&Do(ae)&&(this.markerStartAngle=ae.getLocalEulerAngles(),this.appendChild(ae),this.transformMarker(!0))):A==="markerEnd"?(G&&Do(G)&&(this.markerEndAngle=0,G.remove()),ae&&Do(ae)&&(this.markerEndAngle=ae.getLocalEulerAngles(),this.appendChild(ae),this.transformMarker(!1))):A==="markerMid"&&this.placeMarkerMid(ae)}},{key:"transformMarker",value:function(A){var _=this.parsedStyle,k=_.markerStart,G=_.markerEnd,ae=_.markerStartOffset,ge=_.markerEndOffset,Ue=_.points,rt=Ue||{},bt=rt.points,Zt=A?k:G;if(!(!Zt||!Do(Zt)||!bt)){var wn=0,mn,Gn,ir,tr,Zn,Tr;if(ir=bt[0][0],tr=bt[0][1],A)mn=bt[1][0]-bt[0][0],Gn=bt[1][1]-bt[0][1],Zn=ae||0,Tr=this.markerStartAngle;else{var ni=bt.length;this.parsedStyle.isClosed?(mn=bt[ni-1][0]-bt[0][0],Gn=bt[ni-1][1]-bt[0][1]):(ir=bt[ni-1][0],tr=bt[ni-1][1],mn=bt[ni-2][0]-bt[ni-1][0],Gn=bt[ni-2][1]-bt[ni-1][1]),Zn=ge||0,Tr=this.markerEndAngle}wn=Math.atan2(Gn,mn),Zt.setLocalEulerAngles(wn*180/Math.PI+Tr),Zt.setLocalPosition(ir+Math.cos(wn)*Zn,tr+Math.sin(wn)*Zn)}}},{key:"placeMarkerMid",value:function(A){var _=this.parsedStyle.points,k=_||{},G=k.points;if(this.markerMidList.forEach(function(bt){bt.remove()}),this.markerMidList=[],A&&Do(A)&&G)for(var ae=1;ae<(this.parsedStyle.isClosed?G.length:G.length-1);ae++){var ge=G[ae][0],Ue=G[ae][1],rt=ae===1?A:A.cloneNode(!0);this.markerMidList.push(rt),this.appendChild(rt),rt.setLocalPosition(ge,Ue)}}}])}(wo);eu.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["points","markerStart","markerMid","markerEnd","markerStartOffset","markerEndOffset","isClosed","isBillboard","isSizeAttenuation"]));var Ef=["style"],Dl=function(x){function S(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=f.style,_=(0,bn.Z)(f,Ef);return(0,Z.Z)(this,S),(0,E.Z)(this,S,[(0,m.Z)({type:Jt.POLYLINE,style:A,initialParsedStyle:{points:{points:[],totalLength:0,segments:[]},miterLimit:4,isClosed:!1}},_)])}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"getTotalLength",value:function(){return ai(this)}},{key:"getPointAtLength",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.getPoint(A/this.getTotalLength(),_)}},{key:"getPoint",value:function(A){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,k=this.parsedStyle.points.points;if(this.parsedStyle.points.segments.length===0){var G=[],ae=0,ge,Ue,rt=this.getTotalLength();k.forEach(function(tr,Zn){k[Zn+1]&&(ge=[0,0],ge[0]=ae/rt,Ue=(0,Xt.Xk)(tr[0],tr[1],k[Zn+1][0],k[Zn+1][1]),ae+=Ue,ge[1]=ae/rt,G.push(ge))}),this.parsedStyle.points.segments=G}var bt=0,Zt=0;this.parsedStyle.points.segments.forEach(function(tr,Zn){A>=tr[0]&&A<=tr[1]&&(bt=(A-tr[0])/(tr[1]-tr[0]),Zt=Zn)});var wn=(0,Xt.U4)(k[Zt][0],k[Zt][1],k[Zt+1][0],k[Zt+1][1],bt),mn=wn.x,Gn=wn.y,ir=D.fF(D.Ue(),D.al(mn,Gn,0),_?this.getWorldTransform():this.getLocalTransform());return new xt(ir[0],ir[1])}},{key:"getStartTangent",value:function(){var A=this.parsedStyle.points.points,_=[];return _.push([A[1][0],A[1][1]]),_.push([A[0][0],A[0][1]]),_}},{key:"getEndTangent",value:function(){var A=this.parsedStyle.points.points,_=A.length-1,k=[];return k.push([A[_-1][0],A[_-1][1]]),k.push([A[_][0],A[_][1]]),k}}])}(eu);Dl.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(eu.PARSED_STYLE_LIST),["points","markerStart","markerMid","markerEnd","markerStartOffset","markerEndOffset","isBillboard"]));var Bh=function(x){function S(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,Z.Z)(this,S),(0,E.Z)(this,S,[(0,m.Z)({type:Jt.RECT},f)])}return(0,F.Z)(S,x),(0,V.Z)(S)}(wo);Bh.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["x","y","z","width","height","isBillboard","isSizeAttenuation","radius"]));var Cf=["style"],tu=function(x){function S(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=f.style,_=(0,bn.Z)(f,Cf);return(0,Z.Z)(this,S),(0,E.Z)(this,S,[(0,m.Z)({type:Jt.TEXT,style:(0,m.Z)({fill:"black"},A)},_)])}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"getComputedTextLength",value:function(){var A;return this.getGeometryBounds(),((A=this.parsedStyle.metrics)===null||A===void 0?void 0:A.maxLineWidth)||0}},{key:"getLineBoundingRects",value:function(){var A;return this.getGeometryBounds(),((A=this.parsedStyle.metrics)===null||A===void 0?void 0:A.lineMetrics)||[]}},{key:"isOverflowing",value:function(){return this.getGeometryBounds(),!!this.parsedStyle.isOverflowing}}])}(wo);tu.PARSED_STYLE_LIST=new Set([].concat((0,N.Z)(wo.PARSED_STYLE_LIST),["x","y","z","isBillboard","billboardRotation","isSizeAttenuation","text","textAlign","textBaseline","fontStyle","fontSize","fontFamily","fontWeight","fontVariant","lineHeight","letterSpacing","leading","wordWrap","wordWrapWidth","maxLines","textOverflow","isOverflowing","textPath","textDecorationLine","textDecorationColor","textDecorationStyle","textDecorationThickness","textPathSide","textPathStartOffset","metrics","dx","dy"]));var FA=function(){function x(){(0,Z.Z)(this,x),this.registry={},this.define(Jt.CIRCLE,Ch),this.define(Jt.ELLIPSE,zh),this.define(Jt.RECT,Bh),this.define(Jt.IMAGE,oh),this.define(Jt.LINE,Sf),this.define(Jt.GROUP,Xd),this.define(Jt.PATH,Mf),this.define(Jt.POLYGON,eu),this.define(Jt.POLYLINE,Dl),this.define(Jt.TEXT,tu),this.define(Jt.HTML,Th)}return(0,V.Z)(x,[{key:"define",value:function(f,A){this.registry[f]=A}},{key:"get",value:function(f){return this.registry[f]}}])}(),Wc={number:function(S){return new Bo(S)},percent:function(S){return new Bo(S,"%")},px:function(S){return new Bo(S,"px")},em:function(S){return new Bo(S,"em")},rem:function(S){return new Bo(S,"rem")},deg:function(S){return new Bo(S,"deg")},grad:function(S){return new Bo(S,"grad")},rad:function(S){return new Bo(S,"rad")},turn:function(S){return new Bo(S,"turn")},s:function(S){return new Bo(S,"s")},ms:function(S){return new Bo(S,"ms")},registerProperty:function(S){var f=S.name,A=S.inherits,_=S.interpolable,k=S.initialValue,G=S.syntax;Oi.styleValueRegistry.registerMetadata({n:f,inh:A,int:_,d:k,syntax:G})},registerLayout:function(S,f){Oi.layoutRegistry.registerLayout(S,f)}},PA=function(x){function S(){var f;(0,Z.Z)(this,S),f=(0,E.Z)(this,S),f.defaultView=null,f.ownerDocument=null,f.nodeName="document";try{f.timeline=new Oi.AnimationTimeline(f)}catch(_){}var A={};return Ua.forEach(function(_){var k=_.n,G=_.inh,ae=_.d;G&&ae&&(A[k]=(0,yi.Z)(ae)?ae(Jt.GROUP):ae)}),f.documentElement=new Xd({id:"g-root",style:A}),f.documentElement.ownerDocument=f,f.documentElement.parentNode=f,f.childNodes=[f.documentElement],f}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"children",get:function(){return this.childNodes}},{key:"childElementCount",get:function(){return this.childNodes.length}},{key:"firstElementChild",get:function(){return this.firstChild}},{key:"lastElementChild",get:function(){return this.lastChild}},{key:"createElement",value:function(A,_){if(A==="svg")return this.documentElement;var k=this.defaultView.customElements.get(A);k||(console.warn("Unsupported tagName: ",A),k=A==="tspan"?tu:Xd);var G=new k(_);return G.ownerDocument=this,G}},{key:"createElementNS",value:function(A,_,k){return this.createElement(_,k)}},{key:"cloneNode",value:function(A){throw new Error(Oe)}},{key:"destroy",value:function(){try{this.documentElement.destroyChildren(),this.timeline.destroy()}catch(A){}}},{key:"elementsFromBBox",value:function(A,_,k,G){var ae=[],ge=function(rt){if(!(!rt.isInteractive()||rt.isCulled())){var bt=rt.parsedStyle.pointerEvents,Zt=bt===void 0?"auto":bt,wn=["auto","visiblepainted","visiblefill","visiblestroke","visible"].includes(Zt);if(!wn||rt.isVisible()){var mn=rt.getTransformedGeometryBounds(!0);mn&&!ie.isEmpty(mn)&&mn.max[0]>=A&&mn.min[0]<=k&&mn.max[1]>=_&&mn.min[1]<=G&&ae.push(rt)}rt.childNodes&&rt.childNodes.forEach(function(Gn){Gn instanceof wo&&ge(Gn)})}};return ge(this.documentElement),ae.sort(function(Ue,rt){return rt.sortable.renderOrder-Ue.sortable.renderOrder}),ae}},{key:"elementFromPointSync",value:function(A,_){var k=this.defaultView.canvas2Viewport({x:A,y:_}),G=k.x,ae=k.y,ge=this.defaultView.getConfig(),Ue=ge.width,rt=ge.height;if(G<0||ae<0||G>Ue||ae>rt)return null;var bt=this.defaultView.viewport2Client({x:G,y:ae}),Zt=bt.x,wn=bt.y,mn=this.defaultView.getRenderingService().hooks.pickSync.call({topmost:!0,position:{x:A,y:_,viewportX:G,viewportY:ae,clientX:Zt,clientY:wn},picked:[]}),Gn=mn.picked;return Gn&&Gn[0]||this.documentElement}},{key:"elementFromPoint",value:function(){var f=(0,dt.Z)((0,st.Z)().mark(function _(k,G){var ae,ge,Ue,rt,bt,Zt,wn,mn,Gn,ir,tr;return(0,st.Z)().wrap(function(Zn){for(;;)switch(Zn.prev=Zn.next){case 0:if(ae=this.defaultView.canvas2Viewport({x:k,y:G}),ge=ae.x,Ue=ae.y,rt=this.defaultView.getConfig(),bt=rt.width,Zt=rt.height,!(ge<0||Ue<0||ge>bt||Ue>Zt)){Zn.next=1;break}return Zn.abrupt("return",null);case 1:return wn=this.defaultView.viewport2Client({x:ge,y:Ue}),mn=wn.x,Gn=wn.y,Zn.next=2,this.defaultView.getRenderingService().hooks.pick.promise({topmost:!0,position:{x:k,y:G,viewportX:ge,viewportY:Ue,clientX:mn,clientY:Gn},picked:[]});case 2:return ir=Zn.sent,tr=ir.picked,Zn.abrupt("return",tr&&tr[0]||this.documentElement);case 3:case"end":return Zn.stop()}},_,this)}));function A(_,k){return f.apply(this,arguments)}return A}()},{key:"elementsFromPointSync",value:function(A,_){var k=this.defaultView.canvas2Viewport({x:A,y:_}),G=k.x,ae=k.y,ge=this.defaultView.getConfig(),Ue=ge.width,rt=ge.height;if(G<0||ae<0||G>Ue||ae>rt)return[];var bt=this.defaultView.viewport2Client({x:G,y:ae}),Zt=bt.x,wn=bt.y,mn=this.defaultView.getRenderingService().hooks.pickSync.call({topmost:!1,position:{x:A,y:_,viewportX:G,viewportY:ae,clientX:Zt,clientY:wn},picked:[]}),Gn=mn.picked;return Gn[Gn.length-1]!==this.documentElement&&Gn.push(this.documentElement),Gn}},{key:"elementsFromPoint",value:function(){var f=(0,dt.Z)((0,st.Z)().mark(function _(k,G){var ae,ge,Ue,rt,bt,Zt,wn,mn,Gn,ir,tr;return(0,st.Z)().wrap(function(Zn){for(;;)switch(Zn.prev=Zn.next){case 0:if(ae=this.defaultView.canvas2Viewport({x:k,y:G}),ge=ae.x,Ue=ae.y,rt=this.defaultView.getConfig(),bt=rt.width,Zt=rt.height,!(ge<0||Ue<0||ge>bt||Ue>Zt)){Zn.next=1;break}return Zn.abrupt("return",[]);case 1:return wn=this.defaultView.viewport2Client({x:ge,y:Ue}),mn=wn.x,Gn=wn.y,Zn.next=2,this.defaultView.getRenderingService().hooks.pick.promise({topmost:!1,position:{x:k,y:G,viewportX:ge,viewportY:Ue,clientX:mn,clientY:Gn},picked:[]});case 2:return ir=Zn.sent,tr=ir.picked,tr[tr.length-1]!==this.documentElement&&tr.push(this.documentElement),Zn.abrupt("return",tr);case 3:case"end":return Zn.stop()}},_,this)}));function A(_,k){return f.apply(this,arguments)}return A}()},{key:"appendChild",value:function(A,_){throw new Error(Qe)}},{key:"insertBefore",value:function(A,_){throw new Error(Qe)}},{key:"removeChild",value:function(A,_){throw new Error(Qe)}},{key:"replaceChild",value:function(A,_,k){throw new Error(Qe)}},{key:"append",value:function(){throw new Error(Qe)}},{key:"prepend",value:function(){throw new Error(Qe)}},{key:"getElementById",value:function(A){return this.documentElement.getElementById(A)}},{key:"getElementsByName",value:function(A){return this.documentElement.getElementsByName(A)}},{key:"getElementsByTagName",value:function(A){return this.documentElement.getElementsByTagName(A)}},{key:"getElementsByClassName",value:function(A){return this.documentElement.getElementsByClassName(A)}},{key:"querySelector",value:function(A){return this.documentElement.querySelector(A)}},{key:"querySelectorAll",value:function(A){return this.documentElement.querySelectorAll(A)}},{key:"find",value:function(A){return this.documentElement.find(A)}},{key:"findAll",value:function(A){return this.documentElement.findAll(A)}}])}(vo),jd=function(){function x(S){(0,Z.Z)(this,x),this.strategies=S}return(0,V.Z)(x,[{key:"apply",value:function(f){var A=f.config,_=f.camera,k=f.renderingService,G=f.renderingContext,ae=this.strategies;k.hooks.cull.tap(x.tag,function(ge){if(ge){var Ue,rt=ge.cullable;if(ae.length===0?rt.visible=G.unculledEntities.indexOf(ge.entity)>-1:rt.visible=ae.every(function(Zt){return Zt.isVisible(_,ge)}),!ge.isCulled()&&ge.isVisible())return ge;var bt=((Ue=A.future)===null||Ue===void 0?void 0:Ue.experimentalCancelEventPropagation)===!0;return ge.dispatchEvent(new xu(Ra.CULLED),bt,bt),null}return ge}),k.hooks.afterRender.tap(x.tag,function(ge){ge.cullable.visibilityPlaneMask=-1})}}])}();jd.tag="Culling";var _u=function(){function x(){var S=this;(0,Z.Z)(this,x),this.autoPreventDefault=!1,this.rootPointerEvent=new Qd(null),this.rootWheelEvent=new Wd(null),this.onPointerMove=function(f){var A,_=(A=S.context.renderingContext.root)===null||A===void 0||(A=A.ownerDocument)===null||A===void 0?void 0:A.defaultView;if(!(_.supportsTouchEvents&&f.pointerType==="touch")){var k=S.normalizeToPointerEvent(f,_),G=(0,Wt.Z)(k),ae;try{for(G.s();!(ae=G.n()).done;){var ge=ae.value,Ue=S.bootstrapEvent(S.rootPointerEvent,ge,_,f);S.context.eventService.mapEvent(Ue)}}catch(rt){G.e(rt)}finally{G.f()}S.setCursor(S.context.eventService.cursor)}},this.onClick=function(f){var A,_=(A=S.context.renderingContext.root)===null||A===void 0||(A=A.ownerDocument)===null||A===void 0?void 0:A.defaultView,k=S.normalizeToPointerEvent(f,_),G=(0,Wt.Z)(k),ae;try{for(G.s();!(ae=G.n()).done;){var ge=ae.value,Ue=S.bootstrapEvent(S.rootPointerEvent,ge,_,f);S.context.eventService.mapEvent(Ue)}}catch(rt){G.e(rt)}finally{G.f()}S.setCursor(S.context.eventService.cursor)}}return(0,V.Z)(x,[{key:"apply",value:function(f){var A=this;this.context=f;var _=f.renderingService,k=this.context.renderingContext.root.ownerDocument.defaultView;this.context.eventService.setPickHandler(function(G){var ae=A.context.renderingService.hooks.pickSync.call({position:G,picked:[],topmost:!0}),ge=ae.picked;return ge[0]||null}),_.hooks.pointerWheel.tap(x.tag,function(G){var ae=A.normalizeWheelEvent(G);A.context.eventService.mapEvent(ae)}),_.hooks.pointerDown.tap(x.tag,function(G){if(!(k.supportsTouchEvents&&G.pointerType==="touch")){var ae=A.normalizeToPointerEvent(G,k);if(A.autoPreventDefault&&ae[0].isNormalized){var ge=G.cancelable||!("cancelable"in G);ge&&G.preventDefault()}var Ue=(0,Wt.Z)(ae),rt;try{for(Ue.s();!(rt=Ue.n()).done;){var bt=rt.value,Zt=A.bootstrapEvent(A.rootPointerEvent,bt,k,G);A.context.eventService.mapEvent(Zt)}}catch(wn){Ue.e(wn)}finally{Ue.f()}A.setCursor(A.context.eventService.cursor)}}),_.hooks.pointerUp.tap(x.tag,function(G){if(!(k.supportsTouchEvents&&G.pointerType==="touch")){var ae=A.context.contextService.getDomElement(),ge=A.context.eventService.isNativeEventFromCanvas(ae,G),Ue=ge?"":"outside",rt=A.normalizeToPointerEvent(G,k),bt=(0,Wt.Z)(rt),Zt;try{for(bt.s();!(Zt=bt.n()).done;){var wn=Zt.value,mn=A.bootstrapEvent(A.rootPointerEvent,wn,k,G);mn.type+=Ue,A.context.eventService.mapEvent(mn)}}catch(Gn){bt.e(Gn)}finally{bt.f()}A.setCursor(A.context.eventService.cursor)}}),_.hooks.pointerMove.tap(x.tag,this.onPointerMove),_.hooks.pointerOver.tap(x.tag,this.onPointerMove),_.hooks.pointerOut.tap(x.tag,this.onPointerMove),_.hooks.click.tap(x.tag,this.onClick),_.hooks.pointerCancel.tap(x.tag,function(G){var ae=A.normalizeToPointerEvent(G,k),ge=(0,Wt.Z)(ae),Ue;try{for(ge.s();!(Ue=ge.n()).done;){var rt=Ue.value,bt=A.bootstrapEvent(A.rootPointerEvent,rt,k,G);A.context.eventService.mapEvent(bt)}}catch(Zt){ge.e(Zt)}finally{ge.f()}A.setCursor(A.context.eventService.cursor)})}},{key:"bootstrapEvent",value:function(f,A,_,k){f.view=_,f.originalEvent=null,f.nativeEvent=k,f.pointerId=A.pointerId,f.width=A.width,f.height=A.height,f.isPrimary=A.isPrimary,f.pointerType=A.pointerType,f.pressure=A.pressure,f.tangentialPressure=A.tangentialPressure,f.tiltX=A.tiltX,f.tiltY=A.tiltY,f.twist=A.twist,this.transferMouseData(f,A);var G=this.context.eventService.client2Viewport({x:A.clientX,y:A.clientY}),ae=G.x,ge=G.y;f.viewport.x=ae,f.viewport.y=ge;var Ue=this.context.eventService.viewport2Canvas(f.viewport),rt=Ue.x,bt=Ue.y;return f.canvas.x=rt,f.canvas.y=bt,f.global.copyFrom(f.canvas),f.offset.copyFrom(f.canvas),f.isTrusted=k.isTrusted,f.type==="pointerleave"&&(f.type="pointerout"),f.type.startsWith("mouse")&&(f.type=f.type.replace("mouse","pointer")),f.type.startsWith("touch")&&(f.type=Hc[f.type]||f.type),f}},{key:"normalizeWheelEvent",value:function(f){var A=this.rootWheelEvent;this.transferMouseData(A,f),A.deltaMode=f.deltaMode,A.deltaX=f.deltaX,A.deltaY=f.deltaY,A.deltaZ=f.deltaZ;var _=this.context.eventService.client2Viewport({x:f.clientX,y:f.clientY}),k=_.x,G=_.y;A.viewport.x=k,A.viewport.y=G;var ae=this.context.eventService.viewport2Canvas(A.viewport),ge=ae.x,Ue=ae.y;return A.canvas.x=ge,A.canvas.y=Ue,A.global.copyFrom(A.canvas),A.offset.copyFrom(A.canvas),A.nativeEvent=f,A.type=f.type,A}},{key:"transferMouseData",value:function(f,A){f.isTrusted=A.isTrusted,f.srcElement=A.srcElement,f.timeStamp=yu.now(),f.type=A.type,f.altKey=A.altKey,f.metaKey=A.metaKey,f.shiftKey=A.shiftKey,f.ctrlKey=A.ctrlKey,f.button=A.button,f.buttons=A.buttons,f.client.x=A.clientX,f.client.y=A.clientY,f.movement.x=A.movementX,f.movement.y=A.movementY,f.page.x=A.pageX,f.page.y=A.pageY,f.screen.x=A.screenX,f.screen.y=A.screenY,f.relatedTarget=null}},{key:"setCursor",value:function(f){this.context.contextService.applyCursorStyle(f||this.context.config.cursor||"default")}},{key:"normalizeToPointerEvent",value:function(f,A){var _=[];if(A.isTouchEvent(f))for(var k=0;k-1,ge=0,Ue=k.length;ge=1?Math.ceil(_s):1,k&&(Ri=ae||EA(k)||k.width/_s,Gs=ge||zu(k)||k.height/_s),A.customElements=new FA,A.devicePixelRatio=_s,A.requestAnimationFrame=ir!=null?ir:th.bind(Oi.globalThis),A.cancelAnimationFrame=tr!=null?tr:ff.bind(Oi.globalThis),A.createImage=Zn!=null?Zn:function(){return new window.Image},A.supportsTouchEvents=Tr!=null?Tr:"ontouchstart"in Oi.globalThis,A.supportsPointerEvents=ni!=null?ni:!!Oi.globalThis.PointerEvent,A.isTouchEvent=ns!=null?ns:function(Hs){return A.supportsTouchEvents&&Hs instanceof Oi.globalThis.TouchEvent},A.isMouseEvent=is!=null?is:function(Hs){return!Oi.globalThis.MouseEvent||Hs instanceof Oi.globalThis.MouseEvent&&(!A.supportsPointerEvents||!(Hs instanceof Oi.globalThis.PointerEvent))},mn&&(Oi.offscreenCanvas=mn),A.document=new PA,A.document.defaultView=A,bt||Co(_,A,wn),A.initRenderingContext((0,m.Z)((0,m.Z)({},f),{},{width:Ri,height:Gs,background:Ue!=null?Ue:"transparent",cursor:rt!=null?rt:"default",cleanUpOnDestroy:wn,devicePixelRatio:_s,requestAnimationFrame:A.requestAnimationFrame,cancelAnimationFrame:A.cancelAnimationFrame,createImage:A.createImage,supportsTouchEvents:A.supportsTouchEvents,supportsPointerEvents:A.supportsPointerEvents,isTouchEvent:A.isTouchEvent,isMouseEvent:A.isMouseEvent,dblClickSpeed:bi!=null?bi:200})),A.initDefaultCamera(Ri,Gs,G.clipSpaceNearZ),A.initRenderer(G,!0),A}return(0,F.Z)(S,x),(0,V.Z)(S,[{key:"initRenderingContext",value:function(A){this.context.config=A,this.context.renderingContext={root:this.document.documentElement,unculledEntities:[],renderListCurrentFrame:[],renderReasons:new Set,force:!1,dirty:!1}}},{key:"initDefaultCamera",value:function(A,_,k){var G=this,ae=new Oi.CameraContribution;ae.clipSpaceNearZ=k,ae.setType(Bt.EXPLORING,yn.DEFAULT).setPosition(A/2,_/2,Tf).setFocalPoint(A/2,_/2,0).setOrthographic(A/-2,A/2,_/2,_/-2,cp,Tg),ae.canvas=this,ae.eventEmitter.on(gr.UPDATED,function(){G.context.renderingContext.renderReasons.add(rh.CAMERA_CHANGED),Oi.enableSizeAttenuation&&G.getConfig().renderer.getConfig().enableSizeAttenuation&&G.updateSizeAttenuation()}),this.context.camera=ae}},{key:"updateSizeAttenuation",value:function(){var A=this.getCamera().getZoom();this.document.documentElement.forEach(function(_){Oi.styleValueRegistry.updateSizeAttenuation(_,A)})}},{key:"getConfig",value:function(){return this.context.config}},{key:"getRoot",value:function(){return this.document.documentElement}},{key:"getCamera",value:function(){return this.context.camera}},{key:"getContextService",value:function(){return this.context.contextService}},{key:"getEventService",value:function(){return this.context.eventService}},{key:"getRenderingService",value:function(){return this.context.renderingService}},{key:"getRenderingContext",value:function(){return this.context.renderingContext}},{key:"getStats",value:function(){return this.getRenderingService().getStats()}},{key:"ready",get:function(){var A=this;return this.readyPromise||(this.readyPromise=new Promise(function(_){A.resolveReadyPromise=function(){_(A)}}),this.inited&&this.resolveReadyPromise()),this.readyPromise}},{key:"destroy",value:function(){var A,_=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,k=arguments.length>1?arguments[1]:void 0;Lo.clearCache();var G=((A=this.getConfig().future)===null||A===void 0?void 0:A.experimentalCancelEventPropagation)===!0;k||this.dispatchEvent(new xu(fl.BEFORE_DESTROY),G,G),this.frameId&&this.cancelAnimationFrame(this.frameId);var ae=this.getRoot();_&&(this.unmountChildren(ae),this.document.destroy(),this.getEventService().destroy()),this.getRenderingService().destroy(),this.getContextService().destroy(),k||this.dispatchEvent(new xu(fl.AFTER_DESTROY),G,G);var ge=function(rt){rt.currentTarget=null,rt.manager=null,rt.target=null,rt.relatedNode=null};ge(nd),ge(nA),ge(LA),ge(Vp),ge(qd),ge(Qc),ge(Mh),ge(Ed),ge(Eg),Oi.textService.clearCache()}},{key:"changeSize",value:function(A,_){this.resize(A,_)}},{key:"resize",value:function(A,_){var k,G=this.context.config;G.width=A,G.height=_,this.getContextService().resize(A,_);var ae=this.context.camera,ge=ae.getProjectionMode();ae.setPosition(A/2,_/2,Tf).setFocalPoint(A/2,_/2,0),ge===Ln.ORTHOGRAPHIC?ae.setOrthographic(A/-2,A/2,_/2,_/-2,ae.getNear(),ae.getFar()):ae.setAspect(A/_);var Ue=((k=G.future)===null||k===void 0?void 0:k.experimentalCancelEventPropagation)===!0;this.dispatchEvent(new xu(fl.RESIZE,{width:A,height:_}),Ue,Ue)}},{key:"appendChild",value:function(A,_){return this.document.documentElement.appendChild(A,_)}},{key:"insertBefore",value:function(A,_){return this.document.documentElement.insertBefore(A,_)}},{key:"removeChild",value:function(A){return this.document.documentElement.removeChild(A)}},{key:"removeChildren",value:function(){this.document.documentElement.removeChildren()}},{key:"destroyChildren",value:function(){this.document.documentElement.destroyChildren()}},{key:"render",value:function(A){var _,k=this;A&&(LA.detail=A,qd.detail=A);var G=((_=this.getConfig().future)===null||_===void 0?void 0:_.experimentalCancelEventPropagation)===!0;this.dispatchEvent(LA,G,G);var ae=this.getRenderingService();ae.render(this,A,function(){k.dispatchEvent(Vp,G,G)}),this.dispatchEvent(qd,G,G)}},{key:"run",value:function(){var A=this,_=function(G,ae){A.render(ae),A.frameId=A.requestAnimationFrame(_)};_()}},{key:"initRenderer",value:function(A){var _=this,k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!A)throw new Error("Renderer is required.");this.inited=!1,this.readyPromise=void 0,this.context.renderingPlugins=[],this.context.renderingPlugins.push(new _u,new lh,new jd([new up])),this.loadRendererContainerModule(A),this.context.contextService=new this.context.ContextService((0,m.Z)((0,m.Z)({},Oi),this.context)),this.context.renderingService=new Mc(Oi,this.context),this.context.eventService=new mf(Oi,this.context),this.context.eventService.init(),this.context.contextService.init?(this.context.contextService.init(),this.initRenderingService(A,k,!0)):this.context.contextService.initAsync().then(function(){_.initRenderingService(A,k)}).catch(function(G){console.error(G)})}},{key:"initRenderingService",value:function(A){var _=this,k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,G=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.context.renderingService.init(function(){var ae;_.inited=!0;var ge=((ae=_.getConfig().future)===null||ae===void 0?void 0:ae.experimentalCancelEventPropagation)===!0;k?G?_.requestAnimationFrame(function(){_.dispatchEvent(new xu(fl.READY),ge,ge)}):_.dispatchEvent(new xu(fl.READY),ge,ge):_.dispatchEvent(new xu(fl.RENDERER_CHANGED),ge,ge),_.readyPromise&&_.resolveReadyPromise(),k||_.getRoot().forEach(function(Ue){var rt,bt;(rt=(bt=Ue).dirty)===null||rt===void 0||rt.call(bt,!0,!0)}),_.mountChildren(_.getRoot()),A.getConfig().enableAutoRendering&&_.run()})}},{key:"loadRendererContainerModule",value:function(A){var _=this,k=A.getPlugins();k.forEach(function(G){G.context=_.context,G.init(Oi)})}},{key:"setRenderer",value:function(A){var _=this.getConfig();if(_.renderer!==A){var k=_.renderer;_.renderer=A,this.destroy(!1,!0),(0,N.Z)((k==null?void 0:k.getPlugins())||[]).reverse().forEach(function(G){G.destroy(Oi)}),this.initRenderer(A)}}},{key:"setCursor",value:function(A){var _=this.getConfig();_.cursor=A,this.getContextService().applyCursorStyle(A)}},{key:"unmountChildren",value:function(A){var _=this;if(A.childNodes.forEach(function(ae){_.unmountChildren(ae)}),this.inited){if(A.isMutationObserved)A.dispatchEvent(nA);else{var k,G=((k=this.getConfig().future)===null||k===void 0?void 0:k.experimentalCancelEventPropagation)===!0;nA.target=A,this.dispatchEvent(nA,!0,G)}A!==this.document.documentElement&&(A.ownerDocument=null),A.isConnected=!1}A.isCustomElement&&A.disconnectedCallback&&A.disconnectedCallback()}},{key:"mountChildren",value:function(A){var _=this,k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Hl(A);if(this.inited){if(!A.isConnected&&(A.ownerDocument=this.document,A.isConnected=!0,!k))if(A.isMutationObserved)A.dispatchEvent(nd);else{var G,ae=((G=this.getConfig().future)===null||G===void 0?void 0:G.experimentalCancelEventPropagation)===!0;nd.target=A,this.dispatchEvent(nd,!0,ae)}}else console.warn("[g]: You are trying to call `canvas.appendChild` before canvas' initialization finished. You can either await `canvas.ready` or listen to `CanvasEvent.READY` manually.","appended child: ",A.nodeName);A.childNodes.forEach(function(ge){_.mountChildren(ge,k)}),A.isCustomElement&&A.connectedCallback&&A.connectedCallback()}},{key:"mountFragment",value:function(A){this.mountChildren(A,!1)}},{key:"client2Viewport",value:function(A){return this.getEventService().client2Viewport(A)}},{key:"viewport2Client",value:function(A){return this.getEventService().viewport2Client(A)}},{key:"viewport2Canvas",value:function(A){return this.getEventService().viewport2Canvas(A)}},{key:"canvas2Viewport",value:function(A){return this.getEventService().canvas2Viewport(A)}},{key:"getPointByClient",value:function(A,_){return this.client2Viewport({x:A,y:_})}},{key:"getClientByPoint",value:function(A,_){return this.viewport2Client({x:A,y:_})}}])}(Sg),UA=0,hp=new WeakMap,dp=null,Kv=null,jm=null,fp,rd;function Am(x,S){return fp=new dp(x,S)}function pm(x){return rd||(rd=dp.copy(fp),rd.oldValue=x,rd)}function D0(){fp=rd=void 0}function Ym(x){return x===rd||x===fp}function k0(x,S){return x===S?x:rd&&Ym(x)?rd:null}function gm(x){x.nodes.forEach(function(S){var f=hp.get(S);f&&f.forEach(function(A){A.observer===x&&A.removeTransientObservers()})})}function OA(x,S){for(var f=x;f;f=f.parentNode){var A=hp.get(f);if(A)for(var _=0;_0&&arguments[0]!==void 0?arguments[0]:x.api;x.rafId&&(f.cancelAnimationFrame(x.rafId),x.rafId=null)}},{key:"executeTask",value:function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x.api;sA.length<=0&&Fo.length<=0||(Fo.forEach(function(A){return A()}),Fo=sA.splice(0,x.TASK_NUM_PER_FRAME),x.rafId=f.requestAnimationFrame(function(){x.executeTask(f)}))}},{key:"sliceImage",value:function(f,A,_,k){for(var G=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,ae=arguments.length>5&&arguments[5]!==void 0?arguments[5]:x.api,ge=f.naturalWidth||f.width,Ue=f.naturalHeight||f.height,rt=A-G,bt=_-G,Zt=Math.ceil(ge/rt),wn=Math.ceil(Ue/bt),mn={tileSize:[A,_],gridSize:[wn,Zt],tiles:Array(wn).fill(null).map(function(){return Array(Zt).fill(null)})},Gn=function(Zn){for(var Tr=function(is){sA.push(function(){var bi=is*rt,Ri=Zn*bt,Gs=[Math.min(A,ge-bi),Math.min(_,Ue-Ri)],_s=Gs[0],Hs=Gs[1],Zs=ae.createCanvas();Zs.width=A,Zs.height=_;var Ia=Zs.getContext("2d");Ia.drawImage(f,bi,Ri,_s,Hs,0,0,_s,Hs),mn.tiles[Zn][is]={x:bi,y:Ri,tileX:is,tileY:Zn,data:Zs},k()})},ni=0;ni1&&arguments[1]!==void 0?arguments[1]:[0,0,0];return"matrix(".concat([f[0],f[1],f[4],f[5],f[12]+A[0],f[13]+A[1]].join(","),")")}},{key:"apply",value:function(f,A){var _=this,k=f.camera,G=f.renderingContext,ae=f.renderingService;this.context=f;var ge=G.root.ownerDocument.defaultView,Ue=ge.context.eventService.nativeHTMLMap,rt=function(tr,Zn){Zn.style.transform=_.joinTransformMatrix(tr.getWorldTransform(),tr.getOrigin())},bt=function(tr){var Zn=tr.target;if(Zn.nodeName===Jt.HTML){_.$camera||(_.$camera=_.createCamera(k));var Tr=_.getOrCreateEl(Zn);_.$camera.appendChild(Tr),Object.keys(Zn.attributes).forEach(function(ni){_.updateAttribute(ni,Zn)}),rt(Zn,Tr),Ue.set(Tr,Zn)}},Zt=function(tr){var Zn=tr.target;if(Zn.nodeName===Jt.HTML&&_.$camera){var Tr=_.getOrCreateEl(Zn);Tr&&(Tr.remove(),Ue.delete(Tr))}},wn=function(tr){var Zn=tr.target;if(Zn.nodeName===Jt.HTML){var Tr=tr.attrName;_.updateAttribute(Tr,Zn)}},mn=function(tr){for(var Zn=tr.detail,Tr=0;Tr0?_t:_t*-1}function P(ot,ut,_t,$t,Vt,Qt){var cn=_t,Yn=$t;if(cn===0||Yn===0)return{x:ot,y:ut};for(var qn=Vt-ot,Sr=Qt-ut,Jr=Math.abs(qn),vr=Math.abs(Sr),Ki=cn*cn,Mi=Yn*Yn,yi=Math.PI/4,qr=0,es=0,Ci=0;Ci<4;Ci++){qr=cn*Math.cos(yi),es=Yn*Math.sin(yi);var En=(Ki-Mi)*Math.pow(Math.cos(yi),3)/cn,rn=(Mi-Ki)*Math.pow(Math.sin(yi),3)/Yn,Xt=qr-En,st=es-rn,dt=Jr-En,Wt=vr-rn,bn=Math.hypot(st,Xt),Jt=Math.hypot(Wt,dt),ar=bn*Math.asin((Xt*Wt-st*dt)/(bn*Jt)),rr=ar/Math.sqrt(Ki+Mi-qr*qr-es*es);yi+=rr,yi=Math.min(Math.PI/2,Math.max(0,yi))}return{x:ot+C(qr,qn),y:ut+C(es,Sr)}}function H(ot,ut,_t,$t,Vt,Qt,cn,Yn){return-1*_t*Math.cos(Vt)*Math.sin(Yn)-$t*Math.sin(Vt)*Math.cos(Yn)}function D(ot,ut,_t,$t,Vt,Qt,cn,Yn){return-1*_t*Math.sin(Vt)*Math.sin(Yn)+$t*Math.cos(Vt)*Math.cos(Yn)}function X(ot,ut,_t){return Math.atan(-ut/ot*Math.tan(_t))}function j(ot,ut,_t){return Math.atan(ut/(ot*Math.tan(_t)))}function de(ot,ut,_t,$t,Vt,Qt){return _t*Math.cos(Vt)*Math.cos(Qt)-$t*Math.sin(Vt)*Math.sin(Qt)+ot}function he(ot,ut,_t,$t,Vt,Qt){return _t*Math.sin(Vt)*Math.cos(Qt)+$t*Math.cos(Vt)*Math.sin(Qt)+ut}function we(ot,ut,_t,$t){var Vt=Math.atan2($t*ot,_t*ut);return(Vt+Math.PI*2)%(Math.PI*2)}function ve(ot,ut,_t){return{x:ot*Math.cos(_t),y:ut*Math.sin(_t)}}function Ee(ot,ut,_t){var $t=Math.cos(_t),Vt=Math.sin(_t);return[ot*$t-ut*Vt,ot*Vt+ut*$t]}function $e(ot,ut,_t,$t,Vt,Qt,cn){for(var Yn=X(_t,$t,Vt),qn=1/0,Sr=-1/0,Jr=[Qt,cn],vr=-Math.PI*2;vr<=Math.PI*2;vr+=Math.PI){var Ki=Yn+vr;QtSr&&(Sr=yi)}for(var qr=j(_t,$t,Vt),es=1/0,Ci=-1/0,En=[Qt,cn],rn=-Math.PI*2;rn<=Math.PI*2;rn+=Math.PI){var Xt=qr+rn;QtCi&&(Ci=dt)}return{x:qn,y:es,width:Sr-qn,height:Ci-es}}function Fe(ot,ut,_t,$t,Vt,Qt,cn,Yn,qn){var Sr=Ee(Yn-ot,qn-ut,-Vt),Jr=_slicedToArray(Sr,2),vr=Jr[0],Ki=Jr[1],Mi=P(0,0,_t,$t,vr,Ki),yi=we(_t,$t,Mi.x,Mi.y);yicn&&(Mi=ve(_t,$t,cn));var qr=Ee(Mi.x,Mi.y,Vt);return{x:qr[0]+ot,y:qr[1]+ut}}function ct(ot,ut,_t,$t,Vt,Qt,cn,Yn){var qn=(cn-Qt)*Yn+Qt,Sr=H(ot,ut,_t,$t,Vt,Qt,cn,qn),Jr=D(ot,ut,_t,$t,Vt,Qt,cn,qn);return F(Math.atan2(Jr,Sr))}var vt=1e-4;function at(ot,ut,_t,$t,Vt,Qt){var cn=-1,Yn=1/0,qn=[_t,$t],Sr=20;Qt&&Qt>200&&(Sr=Qt/10);for(var Jr=1/Sr,vr=Jr/10,Ki=0;Ki<=Sr;Ki++){var Mi=Ki*Jr,yi=[Vt.apply(void 0,(0,m.Z)(ot.concat([Mi]))),Vt.apply(void 0,(0,m.Z)(ut.concat([Mi])))],qr=N(qn[0],qn[1],yi[0],yi[1]);qr=0&&stYn?N(_t,$t,Vt,Qt):Xn(ot,ut,_t,$t,Vt,Qt)}function Xn(ot,ut,_t,$t,Vt,Qt){var cn=[_t-ot,$t-ut];if(V.I6(cn,[0,0]))return Math.sqrt((Vt-ot)*(Vt-ot)+(Qt-ut)*(Qt-ut));var Yn=[-cn[1],cn[0]];V.Fv(Yn,Yn);var qn=[Vt-ot,Qt-ut];return Math.abs(V.AK(qn,Yn))}function In(ot,ut,_t,$t){return Math.atan2($t-ut,_t-ot)}function zn(ot,ut,_t,$t,Vt){var Qt=1-Vt;return Qt*Qt*Qt*ot+3*ut*Vt*Qt*Qt+3*_t*Vt*Vt*Qt+$t*Vt*Vt*Vt}function dr(ot,ut,_t,$t,Vt){var Qt=1-Vt;return 3*(Qt*Qt*(ut-ot)+2*Qt*Vt*(_t-ut)+Vt*Vt*($t-_t))}function vn(ot,ut,_t,$t){var Vt=-3*ot+9*ut-9*_t+3*$t,Qt=6*ot-12*ut+6*_t,cn=3*ut-3*ot,Yn=[],qn,Sr,Jr;if((0,Z.Z)(Vt,0))(0,Z.Z)(Qt,0)||(qn=-cn/Qt,qn>=0&&qn<=1&&Yn.push(qn));else{var vr=Qt*Qt-4*Vt*cn;(0,Z.Z)(vr,0)?Yn.push(-Qt/(2*Vt)):vr>0&&(Jr=Math.sqrt(vr),qn=(-Qt+Jr)/(2*Vt),Sr=(-Qt-Jr)/(2*Vt),qn>=0&&qn<=1&&Yn.push(qn),Sr>=0&&Sr<=1&&Yn.push(Sr))}return Yn}function _r(ot,ut,_t,$t,Vt,Qt,cn,Yn,qn){var Sr=zn(ot,_t,Vt,cn,qn),Jr=zn(ut,$t,Qt,Yn,qn),vr=Lt(ot,ut,_t,$t,qn),Ki=Lt(_t,$t,Vt,Qt,qn),Mi=Lt(Vt,Qt,cn,Yn,qn),yi=Lt(vr.x,vr.y,Ki.x,Ki.y,qn),qr=Lt(Ki.x,Ki.y,Mi.x,Mi.y,qn);return[[ot,ut,vr.x,vr.y,yi.x,yi.y,Sr,Jr],[Sr,Jr,qr.x,qr.y,Mi.x,Mi.y,cn,Yn]]}function Ge(ot,ut,_t,$t,Vt,Qt,cn,Yn,qn){if(qn===0)return kt([ot,_t,Vt,cn],[ut,$t,Qt,Yn]);var Sr=_r(ot,ut,_t,$t,Vt,Qt,cn,Yn,.5),Jr=[].concat(_toConsumableArray(Sr[0]),[qn-1]),vr=[].concat(_toConsumableArray(Sr[1]),[qn-1]);return Ge.apply(void 0,_toConsumableArray(Jr))+Ge.apply(void 0,_toConsumableArray(vr))}function Tt(ot,ut,_t,$t,Vt,Qt,cn,Yn){for(var qn=[ot,cn],Sr=[ut,Yn],Jr=vn(ot,_t,Vt,cn),vr=vn(ut,$t,Qt,Yn),Ki=0;Ki1||ut<0||ot.length<2)return null;var _t=Mt(ot),$t=_t.segments,Vt=_t.totalLength;if(Vt===0)return{x:ot[0][0],y:ot[0][1]};for(var Qt=0,cn=null,Yn=0;Yn<$t.length;Yn++){var qn=$t[Yn],Sr=qn.from,Jr=qn.to,vr=qn.length/Vt;if(ut>=Qt&&ut<=Qt+vr){var Ki=(ut-Qt)/vr;cn=Lt(Sr[0],Sr[1],Jr[0],Jr[1],Ki);break}Qt+=vr}return cn}function Ae(ot,ut){if(ut>1||ut<0||ot.length<2)return 0;for(var _t=Mt(ot),$t=_t.segments,Vt=_t.totalLength,Qt=0,cn=0,Yn=0;Yn<$t.length;Yn++){var qn=$t[Yn],Sr=qn.from,Jr=qn.to,vr=qn.length/Vt;if(ut>=Qt&&ut<=Qt+vr){cn=Math.atan2(Jr[1]-Sr[1],Jr[0]-Sr[0]);break}Qt+=vr}return cn}function Pe(ot,ut,_t){for(var $t=1/0,Vt=0;Vt=0?[Vt]:[]}function Tn(ot,ut,_t,$t,Vt,Qt,cn){var Yn=zt(ot,_t,Vt,cn),qn=zt(ut,$t,Qt,cn),Sr=Lt(ot,ut,_t,$t,cn),Jr=Lt(_t,$t,Vt,Qt,cn);return[[ot,ut,Sr.x,Sr.y,Yn,qn],[Yn,qn,Jr.x,Jr.y,Vt,Qt]]}function lr(ot,ut,_t,$t,Vt,Qt,cn){if(cn===0)return(N(ot,ut,_t,$t)+N(_t,$t,Vt,Qt)+N(ot,ut,Vt,Qt))/2;var Yn=Tn(ot,ut,_t,$t,Vt,Qt,.5),qn=Yn[0],Sr=Yn[1];return qn.push(cn-1),Sr.push(cn-1),lr.apply(void 0,_toConsumableArray(qn))+lr.apply(void 0,_toConsumableArray(Sr))}function je(ot,ut,_t,$t,Vt,Qt){var cn=Fn(ot,_t,Vt)[0],Yn=Fn(ut,$t,Qt)[0],qn=[ot,Vt],Sr=[ut,Qt];return cn!==void 0&&qn.push(zt(ot,_t,Vt,cn)),Yn!==void 0&&Sr.push(zt(ut,$t,Qt,Yn)),E(qn,Sr)}function be(ot,ut,_t,$t,Vt,Qt){return lr(ot,ut,_t,$t,Vt,Qt,3)}function it(ot,ut,_t,$t,Vt,Qt,cn,Yn){return at([ot,_t,Vt],[ut,$t,Qt],cn,Yn,zt)}function wt(ot,ut,_t,$t,Vt,Qt,cn,Yn){var qn=it(ot,ut,_t,$t,Vt,Qt,cn,Yn);return N(qn.x,qn.y,cn,Yn)}},59293:function(Be,Me,b){"use strict";b.d(Me,{S:function(){return X}});var m=b(33885),Z=b(67732),V=b(83652),N=b(22214),E=b(42403),F=b(72818),C=b(75044),P=b(3202),H=b(68901);var D=function(){function j(de){(0,Z.Z)(this,j),this.dragndropPluginOptions=de}return(0,V.Z)(j,[{key:"apply",value:function(he){var we=this,ve=he.renderingService,Ee=he.renderingContext,$e=Ee.root.ownerDocument,Fe=$e.defaultView,ct=function(at){var kt=at.target,It=kt===$e,Bn=It&&we.dragndropPluginOptions.isDocumentDraggable?$e:kt.closest&&kt.closest("[draggable=true]");if(Bn){var Lt=!1,Wn=at.timeStamp,Xn=[at.clientX,at.clientY],In=null,zn=[at.clientX,at.clientY],dr=function(){var _r=(0,P.Z)((0,C.Z)().mark(function Ge(Tt){var On,Vr,en,ln,Cn,Mt;return(0,C.Z)().wrap(function(Et){for(;;)switch(Et.prev=Et.next){case 0:if(Lt){Et.next=2;break}if(On=Tt.timeStamp-Wn,Vr=(0,H.y)([Tt.clientX,Tt.clientY],Xn),!(On<=we.dragndropPluginOptions.dragstartTimeThreshold||Vr<=we.dragndropPluginOptions.dragstartDistanceThreshold)){Et.next=1;break}return Et.abrupt("return");case 1:Tt.type="dragstart",Bn.dispatchEvent(Tt),Lt=!0;case 2:if(Tt.type="drag",Tt.dx=Tt.clientX-zn[0],Tt.dy=Tt.clientY-zn[1],Bn.dispatchEvent(Tt),zn=[Tt.clientX,Tt.clientY],It){Et.next=4;break}return en=we.dragndropPluginOptions.overlap==="pointer"?[Tt.canvasX,Tt.canvasY]:kt.getBounds().center,Et.next=3,$e.elementsFromPoint(en[0],en[1]);case 3:ln=Et.sent,Cn=ln[ln.indexOf(kt)+1],Mt=(Cn==null?void 0:Cn.closest("[droppable=true]"))||(we.dragndropPluginOptions.isDocumentDroppable?$e:null),In!==Mt&&(In&&(Tt.type="dragleave",Tt.target=In,In.dispatchEvent(Tt)),Mt&&(Tt.type="dragenter",Tt.target=Mt,Mt.dispatchEvent(Tt)),In=Mt,In&&(Tt.type="dragover",Tt.target=In,In.dispatchEvent(Tt)));case 4:case"end":return Et.stop()}},Ge)}));return function(Tt){return _r.apply(this,arguments)}}();Fe.addEventListener("pointermove",dr);var vn=function(Ge){if(Lt){Ge.detail={preventClick:!0};var Tt=Ge.clone();In&&(Tt.type="drop",Tt.target=In,In.dispatchEvent(Tt)),Tt.type="dragend",Bn.dispatchEvent(Tt),Lt=!1}Fe.removeEventListener("pointermove",dr)};kt.addEventListener("pointerup",vn,{once:!0}),kt.addEventListener("pointerupoutside",vn,{once:!0})}};ve.hooks.init.tap(j.tag,function(){Fe.addEventListener("pointerdown",ct)}),ve.hooks.destroy.tap(j.tag,function(){Fe.removeEventListener("pointerdown",ct)})}}])}();D.tag="Dragndrop";var X=function(j){function de(){var he,we=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return(0,Z.Z)(this,de),he=(0,N.Z)(this,de),he.name="dragndrop",he.options=we,he}return(0,E.Z)(de,j),(0,V.Z)(de,[{key:"init",value:function(){this.addRenderingPlugin(new D((0,m.Z)({overlap:"pointer",isDocumentDraggable:!1,isDocumentDroppable:!1,dragstartDistanceThreshold:0,dragstartTimeThreshold:0},this.options)))}},{key:"destroy",value:function(){this.removeAllRenderingPlugins()}},{key:"setOptions",value:function(we){Object.assign(this.plugins[0].dragndropPluginOptions,we)}}])}(F.F6)},66623:function(Be,Me,b){"use strict";b.d(Me,{$6:function(){return m.$6},Aw:function(){return m.Aw},BB:function(){return m.BB},BV:function(){return m.BV},Cd:function(){return m.Cd},Dk:function(){return m.Dk},Ee:function(){return m.Ee},GZ:function(){return m.GZ},Pj:function(){return m.Pj},UL:function(){return m.UL},Xz:function(){return m.Xz},ZA:function(){return m.ZA},aH:function(){return m.aH},b_:function(){return m.b_},k9:function(){return m.k9},mN:function(){return m.mN},mg:function(){return m.mg},nR:function(){return m.nR},s$:function(){return m.s$},x1:function(){return m.x1},xv:function(){return m.xv},y$:function(){return m.y$}});var m=b(72818),Z=b(67732),V=b(83652),N=b(22214),E=b(42403),F=b(94480),C=b(42978),P=b(70208),H=b(1933),D=b(76075),X=b(71879),j=b(5131),de=b(94569),he=b(60187),we=b(92421),ve=b(75931),Ee=b(64270),$e=b.n(Ee),Fe=b(33885),ct=b(20068),vt=b(34907);var at=function(Hn){function Pt(Gt,Bt,yn,Ln){var gr;return(0,Z.Z)(this,Pt),gr=(0,N.Z)(this,Pt,[Gt]),gr.currentTime=yn,gr.timelineTime=Ln,gr.target=Bt,gr.type="finish",gr.bubbles=!1,gr.currentTarget=Bt,gr.defaultPrevented=!1,gr.eventPhase=gr.AT_TARGET,gr.timeStamp=Date.now(),gr.currentTime=yn,gr.timelineTime=Ln,gr}return(0,E.Z)(Pt,Hn),(0,V.Z)(Pt)}(m.xA),kt=0,It=function(){function Hn(Pt,Gt){var Bt;(0,Z.Z)(this,Hn),this.currentTimePending=!1,this._idle=!0,this._paused=!1,this._finishedFlag=!0,this._currentTime=0,this._playbackRate=1,this._inTimeline=!0,this.effect=Pt,Pt.animation=this,this.timeline=Gt,this.id="".concat(kt++),this._inEffect=!!this.effect.update(0),this._totalDuration=Number((Bt=this.effect)===null||Bt===void 0?void 0:Bt.getComputedTiming().endTime),this._holdTime=0,this._paused=!1,this.oldPlayState="idle",this.updatePromises()}return(0,V.Z)(Hn,[{key:"pending",get:function(){return this._startTime===null&&!this._paused&&this.playbackRate!==0||this.currentTimePending}},{key:"playState",get:function(){return this._idle?"idle":this._isFinished?"finished":this._paused?"paused":"running"}},{key:"ready",get:function(){var Gt=this;return this.readyPromise||(this.timeline.animationsWithPromises.indexOf(this)===-1&&this.timeline.animationsWithPromises.push(this),this.readyPromise=new Promise(function(Bt,yn){Gt.resolveReadyPromise=function(){Bt(Gt)},Gt.rejectReadyPromise=function(){yn(new Error)}}),this.pending||this.resolveReadyPromise()),this.readyPromise}},{key:"finished",get:function(){var Gt=this;return this.finishedPromise||(this.timeline.animationsWithPromises.indexOf(this)===-1&&this.timeline.animationsWithPromises.push(this),this.finishedPromise=new Promise(function(Bt,yn){Gt.resolveFinishedPromise=function(){Bt(Gt)},Gt.rejectFinishedPromise=function(){yn(new Error)}}),this.playState==="finished"&&this.resolveFinishedPromise()),this.finishedPromise}},{key:"currentTime",get:function(){return this.updatePromises(),this._idle||this.currentTimePending?null:this._currentTime},set:function(Gt){if(Gt=Number(Gt),!isNaN(Gt)){if(this.timeline.restart(),!this._paused&&this._startTime!==null){var Bt;this._startTime=Number((Bt=this.timeline)===null||Bt===void 0?void 0:Bt.currentTime)-Gt/this.playbackRate}this.currentTimePending=!1,this._currentTime!==Gt&&(this._idle&&(this._idle=!1,this._paused=!0),this.tickCurrentTime(Gt,!0),this.timeline.applyDirtiedAnimation(this))}}},{key:"startTime",get:function(){return this._startTime},set:function(Gt){if(Gt!==null){if(this.updatePromises(),Gt=Number(Gt),isNaN(Gt)||this._paused||this._idle)return;this._startTime=Gt,this.tickCurrentTime((Number(this.timeline.currentTime)-this._startTime)*this.playbackRate),this.timeline.applyDirtiedAnimation(this),this.updatePromises()}}},{key:"playbackRate",get:function(){return this._playbackRate},set:function(Gt){if(Gt!==this._playbackRate){this.updatePromises();var Bt=this.currentTime;this._playbackRate=Gt,this.startTime=null,this.playState!=="paused"&&this.playState!=="idle"&&(this._finishedFlag=!1,this._idle=!1,this.ensureAlive(),this.timeline.applyDirtiedAnimation(this)),Bt!==null&&(this.currentTime=Bt),this.updatePromises()}}},{key:"_isFinished",get:function(){return!this._idle&&(this._playbackRate>0&&Number(this._currentTime)>=this._totalDuration||this._playbackRate<0&&Number(this._currentTime)<=0)}},{key:"totalDuration",get:function(){return this._totalDuration}},{key:"_needsTick",get:function(){return this.pending||this.playState==="running"||!this._finishedFlag}},{key:"updatePromises",value:function(){var Gt;if((Gt=this.effect.target)!==null&&Gt!==void 0&&Gt.destroyed)return this.readyPromise=void 0,this.finishedPromise=void 0,!1;var Bt=this.oldPlayState,yn=this.pending?"pending":this.playState;return this.readyPromise&&yn!==Bt&&(yn==="idle"?(this.rejectReadyPromise(),this.readyPromise=void 0):Bt==="pending"?this.resolveReadyPromise():yn==="pending"&&(this.readyPromise=void 0)),this.finishedPromise&&yn!==Bt&&(yn==="idle"?(this.rejectFinishedPromise(),this.finishedPromise=void 0):yn==="finished"?this.resolveFinishedPromise():Bt==="finished"&&(this.finishedPromise=void 0)),this.oldPlayState=yn,this.readyPromise||this.finishedPromise}},{key:"play",value:function(){this.updatePromises(),this._paused=!1,(this._isFinished||this._idle)&&(this.rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this.ensureAlive(),this.timeline.applyDirtiedAnimation(this),this.timeline.animations.indexOf(this)===-1&&this.timeline.animations.push(this),this.updatePromises()}},{key:"pause",value:function(){this.updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),!this._isFinished&&!this._paused&&!this._idle?this.currentTimePending=!0:this._idle&&(this.rewind(),this._idle=!1),this._startTime=null,this._paused=!0,this.updatePromises()}},{key:"finish",value:function(){this.updatePromises(),!this._idle&&(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this.currentTimePending=!1,this.timeline.applyDirtiedAnimation(this),this.updatePromises())}},{key:"cancel",value:function(){var Gt=this;if(this.updatePromises(),!!this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._finishedFlag=!0,this._currentTime=null,this._startTime=null,this.effect.update(null),this.timeline.applyDirtiedAnimation(this),this.updatePromises(),this.oncancel)){var Bt=new at(null,this,this.currentTime,null);setTimeout(function(){Gt.oncancel(Bt)})}}},{key:"reverse",value:function(){this.updatePromises();var Gt=this.currentTime;this.playbackRate*=-1,this.play(),Gt!==null&&(this.currentTime=Gt),this.updatePromises()}},{key:"updatePlaybackRate",value:function(Gt){this.playbackRate=Gt}},{key:"targetAnimations",value:function(){var Gt,Bt=(Gt=this.effect)===null||Gt===void 0?void 0:Gt.target;return Bt.getAnimations()}},{key:"markTarget",value:function(){var Gt=this.targetAnimations();Gt.indexOf(this)===-1&&Gt.push(this)}},{key:"unmarkTarget",value:function(){var Gt=this.targetAnimations(),Bt=Gt.indexOf(this);Bt!==-1&&Gt.splice(Bt,1)}},{key:"tick",value:function(Gt,Bt){!this._idle&&!this._paused&&(this._startTime===null?Bt&&(this.startTime=Gt-this._currentTime/this.playbackRate):this._isFinished||this.tickCurrentTime((Gt-this._startTime)*this.playbackRate)),Bt&&(this.currentTimePending=!1,this.fireEvents(Gt))}},{key:"rewind",value:function(){if(this.playbackRate>=0)this.currentTime=0;else if(this._totalDuration<1/0)this.currentTime=this._totalDuration;else throw new Error("Unable to rewind negative playback rate animation with infinite duration")}},{key:"persist",value:function(){throw new Error(m.jf)}},{key:"addEventListener",value:function(Gt,Bt,yn){throw new Error(m.jf)}},{key:"removeEventListener",value:function(Gt,Bt,yn){throw new Error(m.jf)}},{key:"dispatchEvent",value:function(Gt){throw new Error(m.jf)}},{key:"commitStyles",value:function(){throw new Error(m.jf)}},{key:"ensureAlive",value:function(){if(this.playbackRate<0&&this.currentTime===0){var Gt;this._inEffect=!!((Gt=this.effect)!==null&&Gt!==void 0&&Gt.update(-1))}else{var Bt;this._inEffect=!!((Bt=this.effect)!==null&&Bt!==void 0&&Bt.update(this.currentTime))}!this._inTimeline&&(this._inEffect||!this._finishedFlag)&&(this._inTimeline=!0,this.timeline.animations.push(this))}},{key:"tickCurrentTime",value:function(Gt,Bt){Gt!==this._currentTime&&(this._currentTime=Gt,this._isFinished&&!Bt&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this.ensureAlive())}},{key:"fireEvents",value:function(Gt){var Bt=this;if(this._isFinished){if(!this._finishedFlag){if(this.onfinish){var yn=new at(null,this,this.currentTime,Gt);setTimeout(function(){Bt.onfinish&&Bt.onfinish(yn)})}this._finishedFlag=!0}}else{if(this.onframe&&this.playState==="running"){var Ln=new at(null,this,this.currentTime,Gt);this.onframe(Ln)}this._finishedFlag=!1}}}])}(),Bn=4,Lt=.001,Wn=1e-7,Xn=10,In=11,zn=1/(In-1),dr=typeof Float32Array=="function",vn=function(Pt,Gt){return 1-3*Gt+3*Pt},_r=function(Pt,Gt){return 3*Gt-6*Pt},Ge=function(Pt){return 3*Pt},Tt=function(Pt,Gt,Bt){return((vn(Gt,Bt)*Pt+_r(Gt,Bt))*Pt+Ge(Gt))*Pt},On=function(Pt,Gt,Bt){return 3*vn(Gt,Bt)*Pt*Pt+2*_r(Gt,Bt)*Pt+Ge(Gt)},Vr=function(Pt,Gt,Bt,yn,Ln){var gr,Rr,$r=0;do Rr=Gt+(Bt-Gt)/2,gr=Tt(Rr,yn,Ln)-Pt,gr>0?Bt=Rr:Gt=Rr;while(Math.abs(gr)>Wn&&++$r=0&&Pt<=1&&Bt>=0&&Bt<=1))throw new Error("bezier x values must be in [0, 1] range");if(Pt===Gt&&Bt===yn)return function($r){return $r};for(var Ln=dr?new Float32Array(In):new Array(In),gr=0;gr=Lt?en(Ii,Aa,Pt,Bt):sa===0?Aa:Vr(Ii,Di,Di+zn,Pt,Bt)};return function($r){return $r===0||$r===1?$r:Tt(Rr($r),Gt,yn)}},Cn=function(Pt){return Pt=Pt.replace(/([A-Z])/g,function(Gt){return"-".concat(Gt.toLowerCase())}),Pt.charAt(0)==="-"?Pt.substring(1):Pt},Mt=function(Pt){return Math.pow(Pt,2)},Et=function(Pt){return Math.pow(Pt,3)},pe=function(Pt){return Math.pow(Pt,4)},Ae=function(Pt){return Math.pow(Pt,5)},Pe=function(Pt){return Math.pow(Pt,6)},Ut=function(Pt){return 1-Math.cos(Pt*Math.PI/2)},jt=function(Pt){return 1-Math.sqrt(1-Pt*Pt)},ft=function(Pt){return Pt*Pt*(3*Pt-2)},on=function(Pt){for(var Gt,Bt=4;Pt<((Gt=Math.pow(2,--Bt))-1)/11;);return 1/Math.pow(4,3-Bt)-7.5625*Math.pow((Gt*3-2)/22-Pt,2)},hn=function(Pt){var Gt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Bt=(0,C.Z)(Gt,2),yn=Bt[0],Ln=yn===void 0?1:yn,gr=Bt[1],Rr=gr===void 0?.5:gr,$r=(0,P.Z)(Number(Ln),1,10),Ii=(0,P.Z)(Number(Rr),.1,2);return Pt===0||Pt===1?Pt:-$r*Math.pow(2,10*(Pt-1))*Math.sin((Pt-1-Ii/(Math.PI*2)*Math.asin(1/$r))*(Math.PI*2)/Ii)},lt=function(Pt){var Gt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Bt=arguments.length>2?arguments[2]:void 0,yn=(0,C.Z)(Gt,4),Ln=yn[0],gr=Ln===void 0?1:Ln,Rr=yn[1],$r=Rr===void 0?100:Rr,Ii=yn[2],Di=Ii===void 0?10:Ii,ss=yn[3],vs=ss===void 0?0:ss;gr=(0,P.Z)(gr,.1,1e3),$r=(0,P.Z)($r,.1,1e3),Di=(0,P.Z)(Di,.1,1e3),vs=(0,P.Z)(vs,.1,1e3);var Cs=Math.sqrt($r/gr),Aa=Di/(2*Math.sqrt($r*gr)),sa=Aa<1?Cs*Math.sqrt(1-Aa*Aa):0,ca=1,Ai=Aa<1?(Aa*Cs+-vs)/sa:-vs+Cs,$a=Bt?Bt*Pt/1e3:Pt;return Aa<1?$a=Math.exp(-$a*Aa*Cs)*(ca*Math.cos(sa*$a)+Ai*Math.sin(sa*$a)):$a=(ca+Ai*$a)*Math.exp(-$a*Cs),Pt===0||Pt===1?Pt:1-$a},Ct=function(Pt){var Gt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Bt=Gt,yn=(0,C.Z)(Bt,2),Ln=yn[0],gr=Ln===void 0?10:Ln,Rr=yn[1],$r=Rr==="start"?Math.ceil:Math.floor;return $r((0,P.Z)(Pt,0,1)*gr)/gr},sn=function(Pt){var Gt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],Bt=(0,C.Z)(Gt,4),yn=Bt[0],Ln=Bt[1],gr=Bt[2],Rr=Bt[3];return ln(yn,Ln,gr,Rr)(Pt)},W=ln(.42,0,1,1),Se=function(Pt){return function(Gt){var Bt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],yn=arguments.length>2?arguments[2]:void 0;return 1-Pt(1-Gt,Bt,yn)}},Ht=function(Pt){return function(Gt){var Bt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],yn=arguments.length>2?arguments[2]:void 0;return Gt<.5?Pt(Gt*2,Bt,yn)/2:1-Pt(Gt*-2+2,Bt,yn)/2}},zt=function(Pt){return function(Gt){var Bt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],yn=arguments.length>2?arguments[2]:void 0;return Gt<.5?(1-Pt(1-Gt*2,Bt,yn))/2:(Pt(Gt*2-1,Bt,yn)+1)/2}},Fn={steps:Ct,"step-start":function(Pt){return Ct(Pt,[1,"start"])},"step-end":function(Pt){return Ct(Pt,[1,"end"])},linear:function(Pt){return Pt},"cubic-bezier":sn,ease:function(Pt){return sn(Pt,[.25,.1,.25,1])},in:W,out:Se(W),"in-out":Ht(W),"out-in":zt(W),"in-quad":Mt,"out-quad":Se(Mt),"in-out-quad":Ht(Mt),"out-in-quad":zt(Mt),"in-cubic":Et,"out-cubic":Se(Et),"in-out-cubic":Ht(Et),"out-in-cubic":zt(Et),"in-quart":pe,"out-quart":Se(pe),"in-out-quart":Ht(pe),"out-in-quart":zt(pe),"in-quint":Ae,"out-quint":Se(Ae),"in-out-quint":Ht(Ae),"out-in-quint":zt(Ae),"in-expo":Pe,"out-expo":Se(Pe),"in-out-expo":Ht(Pe),"out-in-expo":zt(Pe),"in-sine":Ut,"out-sine":Se(Ut),"in-out-sine":Ht(Ut),"out-in-sine":zt(Ut),"in-circ":jt,"out-circ":Se(jt),"in-out-circ":Ht(jt),"out-in-circ":zt(jt),"in-back":ft,"out-back":Se(ft),"in-out-back":Ht(ft),"out-in-back":zt(ft),"in-bounce":on,"out-bounce":Se(on),"in-out-bounce":Ht(on),"out-in-bounce":zt(on),"in-elastic":hn,"out-elastic":Se(hn),"in-out-elastic":Ht(hn),"out-in-elastic":zt(hn),spring:lt,"spring-in":lt,"spring-out":Se(lt),"spring-in-out":Ht(lt),"spring-out-in":zt(lt)},Tn=function(Pt){return Cn(Pt).replace(/^ease-/,"").replace(/(\(|\s).+/,"").toLowerCase().trim()},lr=function(Pt){return Fn[Tn(Pt)]||Fn.linear},je=function(Pt){return Pt},be=1,it=.5,wt=0;function ot(Hn,Pt){return function(Gt){if(Gt>=1)return 1;var Bt=1/Hn;return Gt+=Pt*Bt,Gt-Gt%Bt}}var ut="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",_t=new RegExp("cubic-bezier\\(".concat(ut,",").concat(ut,",").concat(ut,",").concat(ut,"\\)")),$t=/steps\(\s*(\d+)\s*\)/,Vt=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/;function Qt(Hn){var Pt=_t.exec(Hn);if(Pt)return ln.apply(void 0,(0,F.Z)(Pt.slice(1).map(Number)));var Gt=$t.exec(Hn);if(Gt)return ot(Number(Gt[1]),wt);var Bt=Vt.exec(Hn);return Bt?ot(Number(Bt[1]),{start:be,middle:it,end:wt}[Bt[2]]):lr(Hn)}function cn(Hn){return Math.abs(Yn(Hn)/(Hn.playbackRate||1))}function Yn(Hn){var Pt;return Hn.duration===0||Hn.iterations===0?0:(Hn.duration==="auto"?0:Number(Hn.duration))*((Pt=Hn.iterations)!==null&&Pt!==void 0?Pt:1)}var qn=0,Sr=1,Jr=2,vr=3;function Ki(Hn,Pt,Gt){if(Pt===null)return qn;var Bt=Gt.endTime;return Pt=Math.min(Gt.delay+Hn+Gt.endDelay,Bt)?Jr:vr}function Mi(Hn,Pt,Gt,Bt,yn){switch(Bt){case Sr:return Pt==="backwards"||Pt==="both"?0:null;case vr:return Gt-yn;case Jr:return Pt==="forwards"||Pt==="both"?Hn:null;case qn:return null}}function yi(Hn,Pt,Gt,Bt,yn){var Ln=yn;return Hn===0?Pt!==Sr&&(Ln+=Gt):Ln+=Bt/Hn,Ln}function qr(Hn,Pt,Gt,Bt,yn,Ln){var gr=Hn===1/0?Pt%1:Hn%1;return gr===0&&Gt===Jr&&Bt!==0&&(yn!==0||Ln===0)&&(gr=1),gr}function es(Hn,Pt,Gt,Bt){return Hn===Jr&&Pt===1/0?1/0:Gt===1?Math.floor(Bt)-1:Math.floor(Bt)}function Ci(Hn,Pt,Gt){var Bt=Hn;if(Hn!=="normal"&&Hn!=="reverse"){var yn=Pt;Hn==="alternate-reverse"&&(yn+=1),Bt="normal",yn!==1/0&&yn%2!==0&&(Bt="reverse")}return Bt==="normal"?Gt:1-Gt}function En(Hn,Pt,Gt){var Bt=Ki(Hn,Pt,Gt),yn=Mi(Hn,Gt.fill,Pt,Bt,Gt.delay);if(yn===null)return null;var Ln=Gt.duration==="auto"?0:Gt.duration,gr=yi(Ln,Bt,Gt.iterations,yn,Gt.iterationStart),Rr=qr(gr,Gt.iterationStart,Bt,Gt.iterations,yn,Ln),$r=es(Bt,Gt.iterations,Rr,gr),Ii=Ci(Gt.direction,$r,Rr);return Gt.currentIteration=$r,Gt.progress=Ii,Gt.easingFunction(Ii)}function rn(Hn,Pt,Gt){var Bt=st(Hn,Pt),yn=dt(Bt,Gt);return function(Ln,gr){if(gr!==null)yn.filter(function($r){return gr>=$r.applyFrom&&gr<$r.applyTo}).forEach(function($r){var Ii=gr-$r.startOffset,Di=$r.endOffset-$r.startOffset,ss=Di===0?0:Ii/Di;Ln.setAttribute($r.property,$r.interpolation(ss),!1,!1)});else for(var Rr in Bt)Xt(Rr)&&Ln.setAttribute(Rr,null)}}function Xt(Hn){return Hn!=="offset"&&Hn!=="easing"&&Hn!=="composite"&&Hn!=="computedOffset"}function st(Hn,Pt){for(var Gt={},Bt=0;Bt1)throw new Error("Keyframe offsets must be between 0 and 1.");Ii.computedOffset=ss}}else if(Di==="composite"&&["replace","add","accumulate","auto"].indexOf(ss)===-1)throw new Error("".concat(ss," compositing is not supported"));Ii[Di]=ss}return Ii.offset===void 0&&(Ii.offset=null),Ii.easing===void 0&&(Ii.easing=(Pt==null?void 0:Pt.easing)||"linear"),Ii.composite===void 0&&(Ii.composite="auto"),Ii}),Bt=!0,yn=-1/0,Ln=0;Ln=0&&Number($r.offset)<=1});function Rr(){var $r,Ii=Gt,Di=Ii.length;if(Gt[Di-1].computedOffset=Number(($r=Gt[Di-1].offset)!==null&&$r!==void 0?$r:1),Di>1){var ss;Gt[0].computedOffset=Number((ss=Gt[0].offset)!==null&&ss!==void 0?ss:0)}for(var vs=0,Cs=Number(Gt[0].computedOffset),Aa=1;Aa90)return this;this.computeMatrix()}return this._getAxes(),this.type===m.iM.ORBITING||this.type===m.iM.EXPLORING?this._getPosition():this.type===m.iM.TRACKING&&this._getFocalPoint(),this._update(),this}},{key:"pan",value:function(Bt,yn){var Ln=(0,m.O4)(Bt,yn,0),gr=we.d9(this.position);return we.IH(gr,gr,we.bA(we.Ue(),this.right,Ln[0])),we.IH(gr,gr,we.bA(we.Ue(),this.up,Ln[1])),this._setPosition(gr),this.triggerUpdate(),this}},{key:"dolly",value:function(Bt){var yn=this.forward,Ln=we.d9(this.position),gr=Bt*this.dollyingStep,Rr=this.distance+Bt*this.dollyingStep;return gr=Math.max(Math.min(Rr,this.maxDistance),this.minDistance)-this.distance,Ln[0]+=gr*yn[0],Ln[1]+=gr*yn[1],Ln[2]+=gr*yn[2],this._setPosition(Ln),this.type===m.iM.ORBITING||this.type===m.iM.EXPLORING?this._getDistance():this.type===m.iM.TRACKING&&we.IH(this.focalPoint,Ln,this.distanceVector),this.triggerUpdate(),this}},{key:"cancelLandmarkAnimation",value:function(){this.landmarkAnimationID!==void 0&&this.canvas.cancelAnimationFrame(this.landmarkAnimationID)}},{key:"createLandmark",value:function(Bt){var yn,Ln,gr,Rr,$r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Ii=$r.position,Di=Ii===void 0?this.position:Ii,ss=$r.focalPoint,vs=ss===void 0?this.focalPoint:ss,Cs=$r.roll,Aa=$r.zoom,sa=new m.GZ.CameraContribution;sa.setType(this.type,void 0),sa.setPosition(Di[0],(yn=Di[1])!==null&&yn!==void 0?yn:this.position[1],(Ln=Di[2])!==null&&Ln!==void 0?Ln:this.position[2]),sa.setFocalPoint(vs[0],(gr=vs[1])!==null&&gr!==void 0?gr:this.focalPoint[1],(Rr=vs[2])!==null&&Rr!==void 0?Rr:this.focalPoint[2]),sa.setRoll(Cs!=null?Cs:this.roll),sa.setZoom(Aa!=null?Aa:this.zoom);var ca={name:Bt,matrix:he.clone(sa.getWorldTransform()),right:we.d9(sa.right),up:we.d9(sa.up),forward:we.d9(sa.forward),position:we.d9(sa.getPosition()),focalPoint:we.d9(sa.getFocalPoint()),distanceVector:we.d9(sa.getDistanceVector()),distance:sa.getDistance(),dollyingStep:sa.getDollyingStep(),azimuth:sa.getAzimuth(),elevation:sa.getElevation(),roll:sa.getRoll(),relAzimuth:sa.relAzimuth,relElevation:sa.relElevation,relRoll:sa.relRoll,zoom:sa.getZoom()};return this.landmarks.push(ca),ca}},{key:"gotoLandmark",value:function(Bt){var yn=this,Ln=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},gr=(0,X.Z)(Bt)?this.landmarks.find(function(Lu){return Lu.name===Bt}):Bt;if(gr){var Rr=(0,H.Z)(Ln)?{duration:Ln}:Ln,$r=Rr.easing,Ii=$r===void 0?"linear":$r,Di=Rr.duration,ss=Di===void 0?100:Di,vs=Rr.easingFunction,Cs=vs===void 0?void 0:vs,Aa=Rr.onfinish,sa=Aa===void 0?void 0:Aa,ca=Rr.onframe,Ai=ca===void 0?void 0:ca,$a=.01;this.cancelLandmarkAnimation();var Zo=gr.position,Ko=gr.focalPoint,$o=gr.zoom,bo=gr.roll,Pl=Cs||m.GZ.EasingFunction(Ii),il,go=function(){yn.setFocalPoint(Ko),yn.setPosition(Zo),yn.setRoll(bo),yn.setZoom($o),yn.computeMatrix(),yn.triggerUpdate(),sa==null||sa()};if(ss===0)return go();var Ll=function(ao){il===void 0&&(il=ao);var sl=ao-il;if(sl>=ss){go();return}var No=Pl(sl/ss),Uu=we.Ue(),ws=we.Ue(),Kh=1,dh=0;we.t7(Uu,yn.focalPoint,Ko,No),we.t7(ws,yn.position,Zo,No),dh=yn.roll*(1-No)+bo*No,Kh=yn.zoom*(1-No)+$o*No,yn.setFocalPoint(Uu),yn.setPosition(ws),yn.setRoll(dh),yn.setZoom(Kh);var $h=we.TK(Uu,Ko)+we.TK(ws,Zo);if($h<=$a&&$o===void 0&&bo===void 0)return go();yn.computeMatrix(),yn.triggerUpdate(),slNo*No+Uu*Uu&&(il=Ll,go=Lu),{cx:il,cy:go,x0:-Di,y0:-ss,x1:il*(yn/$o-1),y1:go*(yn/$o-1)}}function Es(Hn,Pt){return Pt=Pt<0&&Hn>=0?Pt+fr:Pt,Pt-Hn<=kr?0:1}var ua=function(Hn){function Pt(Gt){var Bt;return(0,Z.Z)(this,Pt),Bt=(0,N.Z)(this,Pt,[Gt]),Bt.updatePath(),Bt}return(0,E.Z)(Pt,Hn),(0,V.Z)(Pt,[{key:"setAttribute",value:function(Bt,yn,Ln){(0,vt.Z)(Pt,"setAttribute",this,3)([Bt,yn,Ln]),["startAngle","endAngle","sr","sr0","radius"].indexOf(Bt)>-1&&this.updatePath()}},{key:"updatePath",value:function(){var Bt=this.parsedStyle,yn=Bt.x,Ln=Bt.y,gr=Bt.startAngle,Rr=Bt.endAngle,$r=Bt.sr,Ii=Bt.sr0,Di=Bt.radius,ss=this.createPath(yn,Ln,gr?(0,m.Vl)(gr):0,Rr?(0,m.Vl)(Rr):Math.PI*2,$r||0,Ii||0,Di||[0,0,0,0]);(0,vt.Z)(Pt,"setAttribute",this,3)(["d",ss])}},{key:"createPath",value:function(Bt,yn,Ln,gr,Rr,$r,Ii){if(!(Rr<=0)){var Di=Ei(Bt,yn,Rr,Ln),ss=Ei(Bt,yn,Rr,gr),vs=Ei(Bt,yn,$r,Ln),Cs=Ei(Bt,yn,$r,gr);if((0,j.Z)(gr-Ln,Math.PI*2)){var Aa=Ei(Bt,yn,Rr,Ln+Math.PI),sa=Ei(Bt,yn,$r,Ln+Math.PI),ca=[["M",Di.x,Di.y],["A",Rr,Rr,0,1,1,Aa.x,Aa.y],["A",Rr,Rr,0,1,1,ss.x,ss.y],["M",vs.x,vs.y]];return $r&&(ca.push(["A",$r,$r,0,1,0,sa.x,sa.y]),ca.push(["A",$r,$r,0,1,0,Cs.x,Cs.y])),ca.push(["M",Di.x,Di.y]),ca.push(["Z"]),ca}var Ai=gr-Ln,$a=Rr*ei(Ln),Zo=Rr*wr(Ln),Ko=$r*ei(gr),$o=$r*wr(gr),bo=Rr*ei(gr),Pl=Rr*wr(gr),il=$r*ei(Ln),go=$r*wr(Ln),Ll=(0,C.Z)(Ii,4),Lu=Ll[0],ao=Ll[1],sl=Ll[2],No=Ll[3],Uu=(Rr-$r)/2,ws=$i(Uu,Lu),Kh=$i(Uu,ao),dh=$i(Uu,sl),$h=$i(Uu,No),Uh=Pr(ws,Kh),Ku=Pr(dh,$h),sc=Uh,pu=Ku;if((Uh>Zi||Ku>Zi)&&AiZi){var gd=$i(Lu,sc),lu=$i(ao,sc),gu=_i(il,go,$a,Zo,Rr,gd,Vc),oo=_i(bo,Pl,Ko,$o,Rr,lu,Vc);if(jo.push(["M",Bt+gu.cx+gu.x0,yn+gu.cy+gu.y0]),sc0){var ph=jn(gu.y0,gu.x0),Lo=jn(gu.y1,gu.x1),Ji=Ei(Bt,yn,Rr,Lo);jo.push(["A",gd,gd,0,Es(ph,Lo),1,Ji.x,Ji.y])}var $u=jn(gu.cy+gu.y1,gu.cx+gu.x1),gh=jn(oo.cy+oo.y1,oo.cx+oo.x1),mh=Ei(Bt,yn,Rr,gh);if(jo.push(["A",Rr,Rr,0,Es($u,gh),1,mh.x,mh.y]),lu>0){var np=jn(oo.y1,oo.x1),vh=jn(oo.y0,oo.x0);jo.push(["A",lu,lu,0,Es(np,vh),1,Bt+oo.cx+oo.x0,yn+oo.cy+oo.y0])}}}else jo.push(["M",Di.x,Di.y]),jo.push(["A",Rr,Rr,0,Ah,1,ss.x,ss.y]);if($rZi){var Cu=$i(No,pu),zc=$i(sl,pu),Ul=_i(Ko,$o,0,0,$r-Rr,zc,Vc),Xl=_i(0,0,il,go,$r-Rr,Cu,Vc);if(jo.push(["L",Bt+Ul.cx+Ul.x0,yn+Ul.cy+Ul.y0]),pu0){var gl=jn(Ul.y0,Ul.x0),To=jn(Ul.y1,Ul.x1),ml=Ei(Bt,yn,$r-Rr,To);jo.push(["A",zc,zc,0,Es(gl,To),1,ml.x,ml.y])}var Xu=jn(Ul.cy+Ul.y1,Ul.cx+Ul.x1),mu=jn(Xl.cy+Xl.y1,Xl.cx+Xl.x1),Oo=Ei(Bt,yn,$r,mu);if(jo.push(["A",$r,$r,0,Es(mu,Xu),0,Oo.x,Oo.y]),jo.push(["L",Oo.x,Oo.y]),Cu>0){var Bo=jn(Xl.y1,Xl.x1),_o=jn(Xl.y0,Xl.x0);jo.push(["A",Cu,Cu,0,Es(Bo,_o),1,Bt+Xl.cx+Xl.x0,yn+Xl.cy+Xl.y0])}}}else jo.push(["L",Cs.x,Cs.y]),jo.push(["A",$r,$r,0,Ah,0,vs.x,vs.y]);return jo.push(["Z"]),jo}}}])}(m.y$);ua.PARSED_STYLE_LIST=new Set([].concat((0,F.Z)(m.y$.PARSED_STYLE_LIST),["x","y","sr","sr0","radius","startAngle","endAngle"]))},67469:function(Be,Me,b){"use strict";b.d(Me,{k:function(){return N}});var m=b(49336),Z=b(54648),V=b(7663);class N extends m.Z{constructor(C){super();_c(this,"nodeMap",new Map);_c(this,"edgeMap",new Map);_c(this,"inEdgesMap",new Map);_c(this,"outEdgesMap",new Map);_c(this,"bothEdgesMap",new Map);_c(this,"treeIndices",new Map);_c(this,"changes",[]);_c(this,"batchCount",0);_c(this,"onChanged",()=>{});_c(this,"batch",C=>{this.batchCount+=1,C(),this.batchCount-=1,this.batchCount||this.commit()});C&&(C.nodes&&this.addNodes(C.nodes),C.edges&&this.addEdges(C.edges),C.tree&&this.addTree(C.tree),C.onChanged&&(this.onChanged=C.onChanged))}commit(){const C=this.changes;this.changes=[];const P={graph:this,changes:C};this.emit("changed",P),this.onChanged(P)}reduceChanges(C){let P=[];return C.forEach(H=>{switch(H.type){case"NodeRemoved":{let D=!1;P=P.filter(X=>{if(X.type==="NodeAdded"){const j=X.value.id===H.value.id;return j&&(D=!0),!j}else{if(X.type==="NodeDataUpdated")return X.id!==H.value.id;if(X.type==="TreeStructureChanged")return X.nodeId!==H.value.id}return!0}),D||P.push(H);break}case"EdgeRemoved":{let D=!1;P=P.filter(X=>{if(X.type==="EdgeAdded"){const j=X.value.id===H.value.id;return j&&(D=!0),!j}else if(X.type==="EdgeDataUpdated"||X.type==="EdgeUpdated")return X.id!==H.value.id;return!0}),D||P.push(H);break}case"NodeDataUpdated":case"EdgeDataUpdated":case"EdgeUpdated":{const D=P.findIndex(j=>j.type===H.type&&j.id===H.id&&(H.propertyName===void 0||j.propertyName===H.propertyName)),X=P[D];X?H.propertyName!==void 0?X.newValue=H.newValue:(P.splice(D,1),P.push(H)):P.push(H);break}case"TreeStructureDetached":{P=P.filter(D=>D.type==="TreeStructureAttached"||D.type==="TreeStructureChanged"?D.treeKey!==H.treeKey:!0),P.push(H);break}case"TreeStructureChanged":{const D=P.find(X=>X.type==="TreeStructureChanged"&&X.treeKey===H.treeKey&&X.nodeId===H.nodeId);D?D.newParentId=H.newParentId:P.push(H);break}default:P.push(H);break}}),P}checkNodeExistence(C){this.getNode(C)}hasNode(C){return this.nodeMap.has(C)}areNeighbors(C,P){return this.getNeighbors(P).some(H=>H.id===C)}getNode(C){const P=this.nodeMap.get(C);if(!P)throw new Error("Node not found for id: "+C);return P}getRelatedEdges(C,P){if(this.checkNodeExistence(C),P==="in"){const H=this.inEdgesMap.get(C);return Array.from(H)}else if(P==="out"){const H=this.outEdgesMap.get(C);return Array.from(H)}else{const H=this.bothEdgesMap.get(C);return Array.from(H)}}getDegree(C,P){return this.getRelatedEdges(C,P).length}getSuccessors(C){const H=this.getRelatedEdges(C,"out").map(D=>this.getNode(D.target));return Array.from(new Set(H))}getPredecessors(C){const H=this.getRelatedEdges(C,"in").map(D=>this.getNode(D.source));return Array.from(new Set(H))}getNeighbors(C){const P=this.getPredecessors(C),H=this.getSuccessors(C);return Array.from(new Set([...P,...H]))}doAddNode(C){if(this.hasNode(C.id))throw new Error("Node already exists: "+C.id);this.nodeMap.set(C.id,C),this.inEdgesMap.set(C.id,new Set),this.outEdgesMap.set(C.id,new Set),this.bothEdgesMap.set(C.id,new Set),this.treeIndices.forEach(P=>{P.childrenMap.set(C.id,new Set)}),this.changes.push({type:"NodeAdded",value:C})}addNodes(C){this.batch(()=>{for(const P of C)this.doAddNode(P)})}addNode(C){this.addNodes([C])}doRemoveNode(C){const P=this.getNode(C),H=this.bothEdgesMap.get(C);H==null||H.forEach(D=>this.doRemoveEdge(D.id)),this.nodeMap.delete(C),this.treeIndices.forEach(D=>{var j,de;(j=D.childrenMap.get(C))==null||j.forEach(he=>{D.parentMap.delete(he.id)});const X=D.parentMap.get(C);X&&((de=D.childrenMap.get(X.id))==null||de.delete(P)),D.parentMap.delete(C),D.childrenMap.delete(C)}),this.bothEdgesMap.delete(C),this.inEdgesMap.delete(C),this.outEdgesMap.delete(C),this.changes.push({type:"NodeRemoved",value:P})}removeNodes(C){this.batch(()=>{C.forEach(P=>this.doRemoveNode(P))})}removeNode(C){this.removeNodes([C])}updateNodeDataProperty(C,P,H){const D=this.getNode(C);this.batch(()=>{const X=D.data[P],j=H;D.data[P]=j,this.changes.push({type:"NodeDataUpdated",id:C,propertyName:P,oldValue:X,newValue:j})})}mergeNodeData(C,P){this.batch(()=>{Object.entries(P).forEach(([H,D])=>{this.updateNodeDataProperty(C,H,D)})})}updateNodeData(...C){const P=C[0],H=this.getNode(P);if(typeof C[1]=="string"){this.updateNodeDataProperty(P,C[1],C[2]);return}let D;if(typeof C[1]=="function"){const X=C[1];D=X(H.data)}else typeof C[1]=="object"&&(D=C[1]);this.batch(()=>{const X=H.data,j=D;H.data=D,this.changes.push({type:"NodeDataUpdated",id:P,oldValue:X,newValue:j})})}checkEdgeExistence(C){if(!this.hasEdge(C))throw new Error("Edge not found for id: "+C)}hasEdge(C){return this.edgeMap.has(C)}getEdge(C){return this.checkEdgeExistence(C),this.edgeMap.get(C)}getEdgeDetail(C){const P=this.getEdge(C);return{edge:P,source:this.getNode(P.source),target:this.getNode(P.target)}}doAddEdge(C){if(this.hasEdge(C.id))throw new Error("Edge already exists: "+C.id);this.checkNodeExistence(C.source),this.checkNodeExistence(C.target),this.edgeMap.set(C.id,C);const P=this.inEdgesMap.get(C.target),H=this.outEdgesMap.get(C.source),D=this.bothEdgesMap.get(C.source),X=this.bothEdgesMap.get(C.target);P.add(C),H.add(C),D.add(C),X.add(C),this.changes.push({type:"EdgeAdded",value:C})}addEdges(C){this.batch(()=>{for(const P of C)this.doAddEdge(P)})}addEdge(C){this.addEdges([C])}doRemoveEdge(C){const P=this.getEdge(C),H=this.outEdgesMap.get(P.source),D=this.inEdgesMap.get(P.target),X=this.bothEdgesMap.get(P.source),j=this.bothEdgesMap.get(P.target);H.delete(P),D.delete(P),X.delete(P),j.delete(P),this.edgeMap.delete(C),this.changes.push({type:"EdgeRemoved",value:P})}removeEdges(C){this.batch(()=>{C.forEach(P=>this.doRemoveEdge(P))})}removeEdge(C){this.removeEdges([C])}updateEdgeSource(C,P){const H=this.getEdge(C);this.checkNodeExistence(P);const D=H.source,X=P;this.outEdgesMap.get(D).delete(H),this.bothEdgesMap.get(D).delete(H),this.outEdgesMap.get(X).add(H),this.bothEdgesMap.get(X).add(H),H.source=P,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:C,propertyName:"source",oldValue:D,newValue:X})})}updateEdgeTarget(C,P){const H=this.getEdge(C);this.checkNodeExistence(P);const D=H.target,X=P;this.inEdgesMap.get(D).delete(H),this.bothEdgesMap.get(D).delete(H),this.inEdgesMap.get(X).add(H),this.bothEdgesMap.get(X).add(H),H.target=P,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:C,propertyName:"target",oldValue:D,newValue:X})})}updateEdgeDataProperty(C,P,H){const D=this.getEdge(C);this.batch(()=>{const X=D.data[P],j=H;D.data[P]=j,this.changes.push({type:"EdgeDataUpdated",id:C,propertyName:P,oldValue:X,newValue:j})})}updateEdgeData(...C){const P=C[0],H=this.getEdge(P);if(typeof C[1]=="string"){this.updateEdgeDataProperty(P,C[1],C[2]);return}let D;if(typeof C[1]=="function"){const X=C[1];D=X(H.data)}else typeof C[1]=="object"&&(D=C[1]);this.batch(()=>{const X=H.data,j=D;H.data=D,this.changes.push({type:"EdgeDataUpdated",id:P,oldValue:X,newValue:j})})}mergeEdgeData(C,P){this.batch(()=>{Object.entries(P).forEach(([H,D])=>{this.updateEdgeDataProperty(C,H,D)})})}checkTreeExistence(C){if(!this.hasTreeStructure(C))throw new Error("Tree structure not found for treeKey: "+C)}hasTreeStructure(C){return this.treeIndices.has(C)}attachTreeStructure(C){this.treeIndices.has(C)||(this.treeIndices.set(C,{parentMap:new Map,childrenMap:new Map}),this.batch(()=>{this.changes.push({type:"TreeStructureAttached",treeKey:C})}))}detachTreeStructure(C){this.checkTreeExistence(C),this.treeIndices.delete(C),this.batch(()=>{this.changes.push({type:"TreeStructureDetached",treeKey:C})})}addTree(C,P){this.batch(()=>{this.attachTreeStructure(P);const H=[],D=Array.isArray(C)?C:[C];for(;D.length;){const X=D.shift();H.push(X),X.children&&D.push(...X.children)}this.addNodes(H),H.forEach(X=>{var j;(j=X.children)==null||j.forEach(de=>{this.setParent(de.id,X.id,P)})})})}getRoots(C){return this.checkTreeExistence(C),this.getAllNodes().filter(P=>!this.getParent(P.id,C))}getChildren(C,P){this.checkNodeExistence(C),this.checkTreeExistence(P);const D=this.treeIndices.get(P).childrenMap.get(C);return Array.from(D||[])}getParent(C,P){return this.checkNodeExistence(C),this.checkTreeExistence(P),this.treeIndices.get(P).parentMap.get(C)||null}getAncestors(C,P){const H=[];let D=this.getNode(C),X;for(;X=this.getParent(D.id,P);)H.push(X),D=X;return H}setParent(C,P,H){var we,ve;this.checkTreeExistence(H);const D=this.treeIndices.get(H);if(!D)return;const X=this.getNode(C),j=D.parentMap.get(C);if((j==null?void 0:j.id)===P)return;if(P==null){j&&((we=D.childrenMap.get(j.id))==null||we.delete(X)),D.parentMap.delete(C);return}const de=this.getNode(P);D.parentMap.set(C,de),j&&((ve=D.childrenMap.get(j.id))==null||ve.delete(X));let he=D.childrenMap.get(de.id);he||(he=new Set,D.childrenMap.set(de.id,he)),he.add(X),this.batch(()=>{this.changes.push({type:"TreeStructureChanged",treeKey:H,nodeId:C,oldParentId:j==null?void 0:j.id,newParentId:de.id})})}dfsTree(C,P,H){const D=X=>this.getChildren(X,H);return(0,V.I)(this.getNode(C),new Set,P,D)}bfsTree(C,P,H){const D=X=>this.getChildren(X,H);return(0,V.O)([this.getNode(C)],new Set,P,D)}getAllNodes(){return Array.from(this.nodeMap.values())}getAllEdges(){return Array.from(this.edgeMap.values())}bfs(C,P,H="out"){const D={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[H];return(0,V.O)([this.getNode(C)],new Set,P,D)}dfs(C,P,H="out"){const D={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[H];return(0,V.I)(this.getNode(C),new Set,P,D)}clone(){const C=this.getAllNodes().map(D=>fd(rl({},D),{data:rl({},D.data)})),P=this.getAllEdges().map(D=>fd(rl({},D),{data:rl({},D.data)})),H=new N({nodes:C,edges:P});return this.treeIndices.forEach(({parentMap:D,childrenMap:X},j)=>{const de=new Map;D.forEach((we,ve)=>{de.set(ve,H.getNode(we.id))});const he=new Map;X.forEach((we,ve)=>{he.set(ve,new Set(Array.from(we).map(Ee=>H.getNode(Ee.id))))}),H.treeIndices.set(j,{parentMap:de,childrenMap:he})}),H}toJSON(){return JSON.stringify({nodes:this.getAllNodes(),edges:this.getAllEdges()})}createView(C){return new Z.t(rl({graph:this},C))}}},54648:function(Be,Me,b){"use strict";b.d(Me,{t:function(){return V}});var m=b(7663);const Z=()=>!0;class V{constructor(E){_c(this,"graph");_c(this,"nodeFilter");_c(this,"edgeFilter");_c(this,"cacheEnabled");_c(this,"inEdgesMap",new Map);_c(this,"outEdgesMap",new Map);_c(this,"bothEdgesMap",new Map);_c(this,"allNodesMap",new Map);_c(this,"allEdgesMap",new Map);_c(this,"clearCache",()=>{this.inEdgesMap.clear(),this.outEdgesMap.clear(),this.bothEdgesMap.clear(),this.allNodesMap.clear(),this.allEdgesMap.clear()});_c(this,"refreshCache",()=>{this.clearCache(),this.updateCache(this.graph.getAllNodes().map(E=>E.id))});_c(this,"updateCache",E=>{const F=new Set;E.forEach(C=>{const P=this.bothEdgesMap.get(C);if(P&&P.forEach(H=>F.add(H.id)),!this.hasNode(C))this.inEdgesMap.delete(C),this.outEdgesMap.delete(C),this.bothEdgesMap.delete(C),this.allNodesMap.delete(C);else{const H=this.graph.getRelatedEdges(C,"in").filter(this.edgeFilter),D=this.graph.getRelatedEdges(C,"out").filter(this.edgeFilter),X=Array.from(new Set([...H,...D]));X.forEach(j=>F.add(j.id)),this.inEdgesMap.set(C,H),this.outEdgesMap.set(C,D),this.bothEdgesMap.set(C,X),this.allNodesMap.set(C,this.graph.getNode(C))}}),F.forEach(C=>{this.hasEdge(C)?this.allEdgesMap.set(C,this.graph.getEdge(C)):this.allEdgesMap.delete(C)})});_c(this,"handleGraphChanged",E=>{const F=new Set;E.changes.forEach(C=>{switch(C.type){case"NodeAdded":F.add(C.value.id);break;case"NodeDataUpdated":F.add(C.id);break;case"EdgeAdded":F.add(C.value.source),F.add(C.value.target);break;case"EdgeUpdated":(C.propertyName==="source"||C.propertyName==="target")&&(F.add(C.oldValue),F.add(C.newValue));break;case"EdgeDataUpdated":if(E.graph.hasEdge(C.id)){const P=E.graph.getEdge(C.id);F.add(P.source),F.add(P.target)}break;case"EdgeRemoved":F.add(C.value.source),F.add(C.value.target);break;case"NodeRemoved":F.add(C.value.id);break;default:break}}),this.updateCache(F)});this.graph=E.graph;const F=E.nodeFilter||Z,C=E.edgeFilter||Z;this.nodeFilter=F,this.edgeFilter=P=>{const{source:H,target:D}=this.graph.getEdgeDetail(P.id);return!F(H)||!F(D)?!1:C(P,H,D)},E.cache==="auto"?(this.cacheEnabled=!0,this.startAutoCache()):E.cache==="manual"?this.cacheEnabled=!0:this.cacheEnabled=!1}startAutoCache(){this.refreshCache(),this.graph.on("changed",this.handleGraphChanged)}stopAutoCache(){this.graph.off("changed",this.handleGraphChanged)}checkNodeExistence(E){this.getNode(E)}hasNode(E){if(!this.graph.hasNode(E))return!1;const F=this.graph.getNode(E);return this.nodeFilter(F)}areNeighbors(E,F){return this.checkNodeExistence(E),this.getNeighbors(F).some(C=>C.id===E)}getNode(E){const F=this.graph.getNode(E);if(!this.nodeFilter(F))throw new Error("Node not found for id: "+E);return F}getRelatedEdges(E,F){return this.checkNodeExistence(E),this.cacheEnabled?F==="in"?this.inEdgesMap.get(E):F==="out"?this.outEdgesMap.get(E):this.bothEdgesMap.get(E):this.graph.getRelatedEdges(E,F).filter(this.edgeFilter)}getDegree(E,F){return this.getRelatedEdges(E,F).length}getSuccessors(E){const C=this.getRelatedEdges(E,"out").map(P=>this.getNode(P.target));return Array.from(new Set(C))}getPredecessors(E){const C=this.getRelatedEdges(E,"in").map(P=>this.getNode(P.source));return Array.from(new Set(C))}getNeighbors(E){const F=this.getPredecessors(E),C=this.getSuccessors(E);return Array.from(new Set([...F,...C]))}hasEdge(E){if(!this.graph.hasEdge(E))return!1;const F=this.graph.getEdge(E);return this.edgeFilter(F)}getEdge(E){const F=this.graph.getEdge(E);if(!this.edgeFilter(F))throw new Error("Edge not found for id: "+E);return F}getEdgeDetail(E){const F=this.getEdge(E);return{edge:F,source:this.getNode(F.source),target:this.getNode(F.target)}}hasTreeStructure(E){return this.graph.hasTreeStructure(E)}getRoots(E){return this.graph.getRoots(E).filter(this.nodeFilter)}getChildren(E,F){return this.checkNodeExistence(E),this.graph.getChildren(E,F).filter(this.nodeFilter)}getParent(E,F){this.checkNodeExistence(E);const C=this.graph.getParent(E,F);return!C||!this.nodeFilter(C)?null:C}getAllNodes(){return this.cacheEnabled?Array.from(this.allNodesMap.values()):this.graph.getAllNodes().filter(this.nodeFilter)}getAllEdges(){return this.cacheEnabled?Array.from(this.allEdgesMap.values()):this.graph.getAllEdges().filter(this.edgeFilter)}bfs(E,F,C="out"){const P={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[C];(0,m.O)([this.getNode(E)],new Set,F,P)}dfs(E,F,C="out"){const P={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[C];(0,m.I)(this.getNode(E),new Set,F,P)}}},7663:function(Be,Me,b){"use strict";b.d(Me,{I:function(){return Z},O:function(){return m}});function m(V,N,E,F){for(;V.length;){const C=V.shift();if(E(C))return!0;N.add(C.id),F(C.id).forEach(H=>{N.has(H.id)||(N.add(H.id),V.push(H))})}return!1}function Z(V,N,E,F){if(E(V))return!0;N.add(V.id);for(const P of F(V.id))if(!N.has(P.id)&&Z(P,N,E,F))return!0;return!1}},85580:function(Be,Me,b){"use strict";b.d(Me,{L:function(){return m}});function m(Z){var V=document.createElement("div");V.innerHTML=Z;var N=V.childNodes[0];return N&&V.contains(N)&&V.removeChild(N),N}},70208:function(Be,Me){"use strict";var b=function(m,Z,V){return mV?V:m};Me.Z=b},37547:function(Be,Me,b){"use strict";var m=b(39934),Z=function(V){if(typeof V!="object"||V===null)return V;var N;if((0,m.Z)(V)){N=[];for(var E=0,F=V.length;E-1:!1},E=N,F=function(P,H){return H===void 0&&(H=[]),V(P,function(D){return!E(H,D)})},C=F},56039:function(Be,Me,b){"use strict";var m=b(39934),Z=b(93785);function V(N,E){if(N){var F;if((0,m.Z)(N))for(var C=0,P=N.length;CP&&(C=F,D(1),++E),F[X]=j}function D(X){E=0,F=Object.create(null),X||(C=Object.create(null))}return D(),{clear:D,has:function(X){return F[X]!==void 0||C[X]!==void 0},get:function(X){var j=F[X];if(j!==void 0)return j;if((j=C[X])!==void 0)return H(X,j),j},set:function(X,j){F[X]!==void 0?F[X]=j:H(X,j)}}}var Z=new Map;function V(N,E,F){F===void 0&&(F=128);var C=function(){for(var P=[],H=0;Hm?(V&&(clearTimeout(V),V=null),C=D,F=b.apply(N,E),V||(N=E=null)):!V&&Z.trailing!==!1&&(V=setTimeout(P,X)),F};return H.cancel=function(){clearTimeout(V),C=0,V=N=E=null},H}},96862:function(Be,Me,b){"use strict";var m=b(76075);Me.Z=function(Z){return(0,m.Z)(Z)?"":Z.toString()}},35300:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return m}});function m(Z,V){V===void 0&&(V=new Map);var N=[];if(Array.isArray(Z))for(var E=0,F=Z.length;E1&&(In=Math.sqrt(In),we*=In,ve*=In);var zn=we*we,dr=ve*ve,vn=(P===H?-1:1)*Math.sqrt(Math.abs((zn*dr-zn*Xn*Xn-dr*Wn*Wn)/(zn*Xn*Xn+dr*Wn*Wn)));Bn=vn*we*Xn/ve+(de+Ee)/2,Lt=vn*-ve*Wn/we+(he+$e)/2,kt=Math.asin(((he-Lt)/ve*Math.pow(10,9)>>0)/Math.pow(10,9)),It=Math.asin((($e-Lt)/ve*Math.pow(10,9)>>0)/Math.pow(10,9)),kt=deIt&&(kt-=Math.PI*2),!H&&It>kt&&(It-=Math.PI*2)}var _r=It-kt;if(Math.abs(_r)>Fe){var Ge=It,Tt=Ee,On=$e;It=kt+Fe*(H&&It>kt?1:-1),Ee=Bn+we*Math.cos(It),$e=Lt+ve*Math.sin(It),vt=Z(Ee,$e,we,ve,C,0,H,Tt,On,[It,Ge,Bn,Lt])}_r=It-kt;var Vr=Math.cos(kt),en=Math.sin(kt),ln=Math.cos(It),Cn=Math.sin(It),Mt=Math.tan(_r/4),Et=4/3*we*Mt,pe=4/3*ve*Mt,Ae=[de,he],Pe=[de+Et*en,he-pe*Vr],Ut=[Ee+Et*Cn,$e-pe*ln],jt=[Ee,$e];if(Pe[0]=2*Ae[0]-Pe[0],Pe[1]=2*Ae[1]-Pe[1],j)return Pe.concat(Ut,jt,vt);vt=Pe.concat(Ut,jt,vt);for(var ft=[],on=0,hn=vt.length;on{throw TypeError(Ie)},N=Math.pow,E=(Ie,L,Q)=>L in Ie?Z(Ie,L,{enumerable:!0,configurable:!0,writable:!0,value:Q}):Ie[L]=Q,F=(Ie,L,Q)=>E(Ie,typeof L!="symbol"?L+"":L,Q),C=(Ie,L,Q)=>L.has(Ie)||V("Cannot "+Q),P=(Ie,L,Q)=>(C(Ie,L,"read from private field"),Q?Q.call(Ie):L.get(Ie)),H=(Ie,L,Q)=>L.has(Ie)?V("Cannot add the same private member more than once"):L instanceof WeakSet?L.add(Ie):L.set(Ie,Q),D=(Ie,L,Q,w)=>(C(Ie,L,"write to private field"),w?w.call(Ie,Q):L.set(Ie,Q),Q),X=(Ie,L,Q)=>(C(Ie,L,"access private method"),Q),j,de,he;m={value:!0};var we=b(34634),ve=b(34402);const Ee=" ".repeat(2),$e=" ".repeat(4);function Fe(){return ct(this)}function ct(Ie,L={}){const{maxRows:Q=15,maxColumns:w=10,maxNumSize:z=8,padMinus:ie="auto"}=L;return`${Ie.constructor.name} { -${Ee}[ -${$e}${vt(Ie,Q,w,z,ie)} -${Ee}] -${Ee}rows: ${Ie.rows} -${Ee}columns: ${Ie.columns} -}`}function vt(Ie,L,Q,w,z){const{rows:ie,columns:ze}=Ie,Je=Math.min(ie,L),At=Math.min(ze,Q),xt=[];if(z==="auto"){z=!1;e:for(let Sn=0;Sn=0&&Q?` ${kt(Ie,L-1)}`:kt(Ie,L)).padEnd(L)}function kt(Ie,L){let Q=Ie.toString();if(Q.length<=L)return Q;let w=Ie.toFixed(L);if(w.length>L&&(w=Ie.toFixed(Math.max(0,L-(w.length-L)))),w.length<=L&&!w.startsWith("0.000")&&!w.startsWith("-0.000"))return w;let z=Ie.toExponential(L);return z.length>L&&(z=Ie.toExponential(Math.max(0,L-(z.length-L)))),z.slice(0)}function It(Ie,L){Ie.prototype.add=function(w){return typeof w=="number"?this.addS(w):this.addM(w)},Ie.prototype.addS=function(w){for(let z=0;z>w);return this},Ie.prototype.signPropagatingRightShiftM=function(w){if(w=L.checkMatrix(w),this.rows!==w.rows||this.columns!==w.columns)throw new RangeError("Matrices dimensions must be equal");for(let z=0;z>w.get(z,ie));return this},Ie.signPropagatingRightShift=function(w,z){return new L(w).signPropagatingRightShift(z)},Ie.prototype.rightShift=function(w){return typeof w=="number"?this.rightShiftS(w):this.rightShiftM(w)},Ie.prototype.rightShiftS=function(w){for(let z=0;z>>w);return this},Ie.prototype.rightShiftM=function(w){if(w=L.checkMatrix(w),this.rows!==w.rows||this.columns!==w.columns)throw new RangeError("Matrices dimensions must be equal");for(let z=0;z>>w.get(z,ie));return this},Ie.rightShift=function(w,z){return new L(w).rightShift(z)},Ie.prototype.zeroFillRightShift=Ie.prototype.rightShift,Ie.prototype.zeroFillRightShiftS=Ie.prototype.rightShiftS,Ie.prototype.zeroFillRightShiftM=Ie.prototype.rightShiftM,Ie.zeroFillRightShift=Ie.rightShift,Ie.prototype.not=function(){for(let w=0;ww)throw new RangeError("Row index out of range")}function Lt(Ie,L,Q){let w=Q?Ie.columns:Ie.columns-1;if(L<0||L>w)throw new RangeError("Column index out of range")}function Wn(Ie,L){if(L.to1DArray&&(L=L.to1DArray()),L.length!==Ie.columns)throw new RangeError("vector size must be the same as the number of columns");return L}function Xn(Ie,L){if(L.to1DArray&&(L=L.to1DArray()),L.length!==Ie.rows)throw new RangeError("vector size must be the same as the number of rows");return L}function In(Ie,L){if(!we.isAnyArray(L))throw new TypeError("row indices must be an array");for(let Q=0;Q=Ie.rows)throw new RangeError("row indices are out of range")}function zn(Ie,L){if(!we.isAnyArray(L))throw new TypeError("column indices must be an array");for(let Q=0;Q=Ie.columns)throw new RangeError("column indices are out of range")}function dr(Ie,L,Q,w,z){if(arguments.length!==5)throw new RangeError("expected 4 arguments");if(_r("startRow",L),_r("endRow",Q),_r("startColumn",w),_r("endColumn",z),L>Q||w>z||L<0||L>=Ie.rows||Q<0||Q>=Ie.rows||w<0||w>=Ie.columns||z<0||z>=Ie.columns)throw new RangeError("Submatrix indices are out of range")}function vn(Ie,L=0){let Q=[];for(let w=0;w=ie)throw new RangeError("min must be smaller than max");let Je=ie-z,At=new zt(L,Q);for(let xt=0;xtw?(ie=!0,w=Q):(z=!1,ie=!0);L++}return z}isReducedEchelonForm(){let L=0,Q=0,w=-1,z=!0,ie=!1;for(;Lw?(ie=!0,w=Q):(z=!1,ie=!0);for(let ze=Q+1;zeL.get(z,w)&&(z=ie);if(L.get(z,w)===0)w++;else{L.swapRows(Q,z);let ie=L.get(Q,w);for(let ze=w;ze=0;)if(L.maxRow(z)===0)z--;else{let ie=0,ze=!1;for(;ieQ[w]&&(Q[w]=this.get(w,z));return Q}case"column":{const Q=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let w=0;wQ[z]&&(Q[z]=this.get(w,z));return Q}case void 0:{let Q=this.get(0,0);for(let w=0;wQ&&(Q=this.get(w,z));return Q}default:throw new Error(`invalid option: ${L}`)}}maxIndex(){Ge(this);let L=this.get(0,0),Q=[0,0];for(let w=0;wL&&(L=this.get(w,z),Q[0]=w,Q[1]=z);return Q}min(L){if(this.isEmpty())return NaN;switch(L){case"row":{const Q=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let w=0;wQ&&(Q=this.get(L,w));return Q}maxRowIndex(L){Bn(this,L),Ge(this);let Q=this.get(L,0),w=[L,0];for(let z=1;zQ&&(Q=this.get(L,z),w[1]=z);return w}minRow(L){if(Bn(this,L),this.isEmpty())return NaN;let Q=this.get(L,0);for(let w=1;wQ&&(Q=this.get(w,L));return Q}maxColumnIndex(L){Lt(this,L),Ge(this);let Q=this.get(0,L),w=[0,L];for(let z=1;zQ&&(Q=this.get(z,L),w[0]=z);return w}minColumn(L){if(Lt(this,L),this.isEmpty())return NaN;let Q=this.get(0,L);for(let w=1;w=1;z/=2)z&1&&(Q=Q.mmul(w)),w=w.mmul(w);return Q}strassen2x2(L){L=zt.checkMatrix(L);let Q=new zt(2,2);const w=this.get(0,0),z=L.get(0,0),ie=this.get(0,1),ze=L.get(0,1),Je=this.get(1,0),At=L.get(1,0),xt=this.get(1,1),Sn=L.get(1,1),Oe=(w+xt)*(z+Sn),Qe=(Je+xt)*z,Re=w*(ze-Sn),Ke=xt*(At-z),gt=(w+ie)*Sn,tn=(Je-w)*(z+ze),yt=(ie-xt)*(At+Sn),Yt=Oe+Ke-gt+yt,Rn=Re+gt,er=Qe+Ke,Jn=Oe-Qe+Re+tn;return Q.set(0,0,Yt),Q.set(0,1,Rn),Q.set(1,0,er),Q.set(1,1,Jn),Q}strassen3x3(L){L=zt.checkMatrix(L);let Q=new zt(3,3);const w=this.get(0,0),z=this.get(0,1),ie=this.get(0,2),ze=this.get(1,0),Je=this.get(1,1),At=this.get(1,2),xt=this.get(2,0),Sn=this.get(2,1),Oe=this.get(2,2),Qe=L.get(0,0),Re=L.get(0,1),Ke=L.get(0,2),gt=L.get(1,0),tn=L.get(1,1),yt=L.get(1,2),Yt=L.get(2,0),Rn=L.get(2,1),er=L.get(2,2),Jn=(w+z+ie-ze-Je-Sn-Oe)*tn,kr=(w-ze)*(-Re+tn),fr=Je*(-Qe+Re+gt-tn-yt-Yt+er),wr=(-w+ze+Je)*(Qe-Re+tn),ei=(ze+Je)*(-Qe+Re),_n=w*Qe,jn=(-w+xt+Sn)*(Qe-Ke+yt),Hr=(-w+xt)*(Ke-yt),Pr=(xt+Sn)*(-Qe+Ke),$i=(w+z+ie-Je-At-xt-Sn)*yt,Zi=Sn*(-Qe+Ke+gt-tn-yt-Yt+Rn),Xi=(-ie+Sn+Oe)*(tn+Yt-Rn),Ei=(ie-Oe)*(tn-Rn),ms=ie*Yt,_i=(Sn+Oe)*(-Yt+Rn),Es=(-ie+Je+At)*(yt+Yt-er),ua=(ie-At)*(yt-er),Hn=(Je+At)*(-Yt+er),Pt=z*gt,Gt=At*Rn,Bt=ze*Ke,yn=xt*Re,Ln=Oe*er,gr=_n+ms+Pt,Rr=Jn+wr+ei+_n+Xi+ms+_i,$r=_n+jn+Pr+$i+ms+Es+Hn,Ii=kr+fr+wr+_n+ms+Es+ua,Di=kr+wr+ei+_n+Gt,ss=ms+Es+ua+Hn+Bt,vs=_n+jn+Hr+Zi+Xi+Ei+ms,Cs=Xi+Ei+ms+_i+yn,Aa=_n+jn+Hr+Pr+Ln;return Q.set(0,0,gr),Q.set(0,1,Rr),Q.set(0,2,$r),Q.set(1,0,Ii),Q.set(1,1,Di),Q.set(1,2,ss),Q.set(2,0,vs),Q.set(2,1,Cs),Q.set(2,2,Aa),Q}mmulStrassen(L){L=zt.checkMatrix(L);let Q=this.clone(),w=Q.rows,z=Q.columns,ie=L.rows,ze=L.columns;z!==ie&&console.warn(`Multiplying ${w} x ${z} and ${ie} x ${ze} matrix: dimensions do not match.`);function Je(Oe,Qe,Re){let Ke=Oe.rows,gt=Oe.columns;if(Ke===Qe&>===Re)return Oe;{let tn=sn.zeros(Qe,Re);return tn=tn.setSubMatrix(Oe,0,0),tn}}let At=Math.max(w,ie),xt=Math.max(z,ze);Q=Je(Q,At,xt),L=Je(L,At,xt);function Sn(Oe,Qe,Re,Ke){if(Re<=512||Ke<=512)return Oe.mmul(Qe);Re%2===1&&Ke%2===1?(Oe=Je(Oe,Re+1,Ke+1),Qe=Je(Qe,Re+1,Ke+1)):Re%2===1?(Oe=Je(Oe,Re+1,Ke),Qe=Je(Qe,Re+1,Ke)):Ke%2===1&&(Oe=Je(Oe,Re,Ke+1),Qe=Je(Qe,Re,Ke+1));let gt=parseInt(Oe.rows/2,10),tn=parseInt(Oe.columns/2,10),yt=Oe.subMatrix(0,gt-1,0,tn-1),Yt=Qe.subMatrix(0,gt-1,0,tn-1),Rn=Oe.subMatrix(0,gt-1,tn,Oe.columns-1),er=Qe.subMatrix(0,gt-1,tn,Qe.columns-1),Jn=Oe.subMatrix(gt,Oe.rows-1,0,tn-1),kr=Qe.subMatrix(gt,Qe.rows-1,0,tn-1),fr=Oe.subMatrix(gt,Oe.rows-1,tn,Oe.columns-1),wr=Qe.subMatrix(gt,Qe.rows-1,tn,Qe.columns-1),ei=Sn(sn.add(yt,fr),sn.add(Yt,wr),gt,tn),_n=Sn(sn.add(Jn,fr),Yt,gt,tn),jn=Sn(yt,sn.sub(er,wr),gt,tn),Hr=Sn(fr,sn.sub(kr,Yt),gt,tn),Pr=Sn(sn.add(yt,Rn),wr,gt,tn),$i=Sn(sn.sub(Jn,yt),sn.add(Yt,er),gt,tn),Zi=Sn(sn.sub(Rn,fr),sn.add(kr,wr),gt,tn),Xi=sn.add(ei,Hr);Xi.sub(Pr),Xi.add(Zi);let Ei=sn.add(jn,Pr),ms=sn.add(_n,Hr),_i=sn.sub(ei,_n);_i.add(jn),_i.add($i);let Es=sn.zeros(2*Xi.rows,2*Xi.columns);return Es=Es.setSubMatrix(Xi,0,0),Es=Es.setSubMatrix(Ei,Xi.rows,0),Es=Es.setSubMatrix(ms,0,Xi.columns),Es=Es.setSubMatrix(_i,Xi.rows,Xi.columns),Es.subMatrix(0,Re-1,0,Ke-1)}return Sn(Q,L,At,xt)}scaleRows(L={}){if(typeof L!="object")throw new TypeError("options must be an object");const{min:Q=0,max:w=1}=L;if(!Number.isFinite(Q))throw new TypeError("min must be a number");if(!Number.isFinite(w))throw new TypeError("max must be a number");if(Q>=w)throw new RangeError("min must be smaller than max");let z=new zt(this.rows,this.columns);for(let ie=0;ie0&&ve(ze,{min:Q,max:w,output:ze}),z.setRow(ie,ze)}return z}scaleColumns(L={}){if(typeof L!="object")throw new TypeError("options must be an object");const{min:Q=0,max:w=1}=L;if(!Number.isFinite(Q))throw new TypeError("min must be a number");if(!Number.isFinite(w))throw new TypeError("max must be a number");if(Q>=w)throw new RangeError("min must be smaller than max");let z=new zt(this.rows,this.columns);for(let ie=0;iew||Q<0||Q>=this.columns||w<0||w>=this.columns)throw new RangeError("Argument out of range");let z=new zt(L.length,w-Q+1);for(let ie=0;ie=this.rows)throw new RangeError(`Row index out of range: ${L[ie]}`);z.set(ie,ze-Q,this.get(L[ie],ze))}return z}subMatrixColumn(L,Q,w){if(Q===void 0&&(Q=0),w===void 0&&(w=this.rows-1),Q>w||Q<0||Q>=this.rows||w<0||w>=this.rows)throw new RangeError("Argument out of range");let z=new zt(w-Q+1,L.length);for(let ie=0;ie=this.columns)throw new RangeError(`Column index out of range: ${L[ie]}`);z.set(ze-Q,ie,this.get(ze,L[ie]))}return z}setSubMatrix(L,Q,w){if(L=zt.checkMatrix(L),L.isEmpty())return this;let z=Q+L.rows-1,ie=w+L.columns-1;dr(this,Q,z,w,ie);for(let ze=0;zetypeof L=="number")}sn.random=sn.rand,sn.randomInt=sn.randInt,sn.diagonal=sn.diag,sn.prototype.diagonal=sn.prototype.diag,sn.identity=sn.eye,sn.prototype.negate=sn.prototype.neg,sn.prototype.tensorProduct=sn.prototype.kroneckerProduct;const Ht=class NE extends sn{constructor(L,Q){if(super(),H(this,j),F(this,"data"),NE.isMatrix(L))X(this,j,de).call(this,L.rows,L.columns),NE.copy(L,this);else if(Number.isInteger(L)&&L>=0)X(this,j,de).call(this,L,Q);else if(we.isAnyArray(L)){const w=L;if(L=w.length,Q=L?w[0].length:0,typeof Q!="number")throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let z=0;z=0)for(let Q=0;Q=0)D(this,he,new zt(L,L));else if(D(this,he,new zt(L)),!this.isSymmetric())throw new TypeError("not symmetric data")}get size(){return P(this,he).size}get rows(){return P(this,he).rows}get columns(){return P(this,he).columns}get diagonalSize(){return this.rows}static isSymmetricMatrix(L){return zt.isMatrix(L)&&L.klassType==="SymmetricMatrix"}static zeros(L){return new this(L)}static ones(L){return new this(L).fill(1)}clone(){const L=new FE(this.diagonalSize);for(const[Q,w,z]of this.upperRightEntries())L.set(Q,w,z);return L}toMatrix(){return new zt(this)}get(L,Q){return P(this,he).get(L,Q)}set(L,Q,w){return P(this,he).set(L,Q,w),P(this,he).set(Q,L,w),this}removeCross(L){return P(this,he).removeRow(L),P(this,he).removeColumn(L),this}addCross(L,Q){Q===void 0&&(Q=L,L=this.diagonalSize);const w=Q.slice();return w.splice(L,1),P(this,he).addRow(L,w),P(this,he).addColumn(L,Q),this}applyMask(L){if(L.length!==this.diagonalSize)throw new RangeError("Mask size do not match with matrix size");const Q=[];for(const[w,z]of L.entries())z||Q.push(w);Q.reverse();for(const w of Q)this.removeCross(w);return this}toCompact(){const{diagonalSize:L}=this,Q=new Array(L*(L+1)/2);for(let w=0,z=0,ie=0;ie=L&&(w=++z);return Q}static fromCompact(L){const Q=L.length,w=(Math.sqrt(8*Q+1)-1)/2;if(!Number.isInteger(w))throw new TypeError(`This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(L)}`);const z=new FE(w);for(let ie=0,ze=0,Je=0;Je=w&&(ie=++ze);return z}*upperRightEntries(){for(let L=0,Q=0;L=this.diagonalSize&&(Q=++L)}}*upperRightValues(){for(let L=0,Q=0;L=this.diagonalSize&&(Q=++L)}};he=new WeakMap;let Tn=Fn;Tn.prototype.klassType="SymmetricMatrix";class lr extends Tn{static isDistanceMatrix(L){return Tn.isSymmetricMatrix(L)&&L.klassSubType==="DistanceMatrix"}constructor(L){if(super(L),!this.isDistance())throw new TypeError("Provided arguments do no produce a distance matrix")}set(L,Q,w){return L===Q&&(w=0),super.set(L,Q,w)}addCross(L,Q){return Q===void 0&&(Q=L,L=this.diagonalSize),Q=Q.slice(),Q[L]=0,super.addCross(L,Q)}toSymmetricMatrix(){return new Tn(this)}clone(){const L=new lr(this.diagonalSize);for(const[Q,w,z]of this.upperRightEntries())Q!==w&&L.set(Q,w,z);return L}toCompact(){const{diagonalSize:L}=this,Q=(L-1)*L/2,w=new Array(Q);for(let z=1,ie=0,ze=0;ze=L&&(z=++ie+1);return w}static fromCompact(L){const Q=L.length;if(Q===0)return new this(0);const w=(Math.sqrt(8*Q+1)+1)/2;if(!Number.isInteger(w))throw new TypeError(`This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(L)}`);const z=new this(w);for(let ie=1,ze=0,Je=0;Je=w&&(ie=++ze+1);return z}}lr.prototype.klassSubType="DistanceMatrix";class je extends sn{constructor(L,Q,w){super(),this.matrix=L,this.rows=Q,this.columns=w}}class be extends je{constructor(L,Q){Lt(L,Q),super(L,L.rows,1),this.column=Q}set(L,Q,w){return this.matrix.set(L,this.column,w),this}get(L){return this.matrix.get(L,this.column)}}class it extends je{constructor(L,Q){zn(L,Q),super(L,L.rows,Q.length),this.columnIndices=Q}set(L,Q,w){return this.matrix.set(L,this.columnIndices[Q],w),this}get(L,Q){return this.matrix.get(L,this.columnIndices[Q])}}class wt extends je{constructor(L){super(L,L.rows,L.columns)}set(L,Q,w){return this.matrix.set(L,this.columns-Q-1,w),this}get(L,Q){return this.matrix.get(L,this.columns-Q-1)}}class ot extends je{constructor(L){super(L,L.rows,L.columns)}set(L,Q,w){return this.matrix.set(this.rows-L-1,Q,w),this}get(L,Q){return this.matrix.get(this.rows-L-1,Q)}}class ut extends je{constructor(L,Q){Bn(L,Q),super(L,1,L.columns),this.row=Q}set(L,Q,w){return this.matrix.set(this.row,Q,w),this}get(L,Q){return this.matrix.get(this.row,Q)}}class _t extends je{constructor(L,Q){In(L,Q),super(L,Q.length,L.columns),this.rowIndices=Q}set(L,Q,w){return this.matrix.set(this.rowIndices[L],Q,w),this}get(L,Q){return this.matrix.get(this.rowIndices[L],Q)}}class $t extends je{constructor(L,Q,w){In(L,Q),zn(L,w),super(L,Q.length,w.length),this.rowIndices=Q,this.columnIndices=w}set(L,Q,w){return this.matrix.set(this.rowIndices[L],this.columnIndices[Q],w),this}get(L,Q){return this.matrix.get(this.rowIndices[L],this.columnIndices[Q])}}class Vt extends je{constructor(L,Q,w,z,ie){dr(L,Q,w,z,ie),super(L,w-Q+1,ie-z+1),this.startRow=Q,this.startColumn=z}set(L,Q,w){return this.matrix.set(this.startRow+L,this.startColumn+Q,w),this}get(L,Q){return this.matrix.get(this.startRow+L,this.startColumn+Q)}}class Qt extends je{constructor(L){super(L,L.columns,L.rows)}set(L,Q,w){return this.matrix.set(Q,L,w),this}get(L,Q){return this.matrix.get(Q,L)}}class cn extends sn{constructor(L,Q={}){const{rows:w=1}=Q;if(L.length%w!==0)throw new Error("the data length is not divisible by the number of rows");super(),this.rows=w,this.columns=L.length/w,this.data=L}set(L,Q,w){let z=this._calculateIndex(L,Q);return this.data[z]=w,this}get(L,Q){let w=this._calculateIndex(L,Q);return this.data[w]}_calculateIndex(L,Q){return L*this.columns+Q}}class Yn extends sn{constructor(L){super(),this.data=L,this.rows=L.length,this.columns=L[0].length}set(L,Q,w){return this.data[L][Q]=w,this}get(L,Q){return this.data[L][Q]}}function qn(Ie,L){if(we.isAnyArray(Ie))return Ie[0]&&we.isAnyArray(Ie[0])?new Yn(Ie):new cn(Ie,L);throw new Error("the argument is not an array")}class Sr{constructor(L){L=Yn.checkMatrix(L);let Q=L.clone(),w=Q.rows,z=Q.columns,ie=new Float64Array(w),ze=1,Je,At,xt,Sn,Oe,Qe,Re,Ke,gt;for(Je=0;JeMath.abs(Ke[Sn])&&(Sn=Je);if(Sn!==At){for(xt=0;xt=0;xt--){for(At=0;Atze?z.set(ie,ze,L.get(ie,ze)):ie===ze?z.set(ie,ze,1):z.set(ie,ze,0);return z}get upperTriangularMatrix(){let L=this.LU,Q=L.rows,w=L.columns,z=new zt(Q,w);for(let ie=0;ieMath.abs(L)?(Q=L/Ie,Math.abs(Ie)*Math.sqrt(1+Q*Q)):L!==0?(Q=Ie/L,Math.abs(L)*Math.sqrt(1+Q*Q)):0}class vr{constructor(L){L=Yn.checkMatrix(L);let Q=L.clone(),w=L.rows,z=L.columns,ie=new Float64Array(z),ze,Je,At,xt;for(At=0;At=0;xt--){for(At=0;At=0;Je--){for(ie=0;ie=0;_n--)if(Ke[_n]!==0){for(let jn=_n+1;jn=0;_n--){if(_n0;){let _n,jn;for(_n=fr-2;_n>=-1&&_n!==-1;_n--){const Hr=Number.MIN_VALUE+ei*Math.abs(Ke[_n]+Math.abs(Ke[_n+1]));if(Math.abs(yt[_n])<=Hr||Number.isNaN(yt[_n])){yt[_n]=0;break}}if(_n===fr-2)jn=4;else{let Hr;for(Hr=fr-1;Hr>=_n&&Hr!==_n;Hr--){let Pr=(Hr!==fr?Math.abs(yt[Hr]):0)+(Hr!==_n+1?Math.abs(yt[Hr-1]):0);if(Math.abs(Ke[Hr])<=ei*Pr){Ke[Hr]=0;break}}Hr===_n?jn=3:Hr===fr-1?jn=1:(jn=2,_n=Hr)}switch(_n++,jn){case 1:{let Hr=yt[fr-2];yt[fr-2]=0;for(let Pr=fr-2;Pr>=_n;Pr--){let $i=Jr(Ke[Pr],Hr),Zi=Ke[Pr]/$i,Xi=Hr/$i;if(Ke[Pr]=$i,Pr!==_n&&(Hr=-Xi*yt[Pr-1],yt[Pr-1]=Zi*yt[Pr-1]),xt)for(let Ei=0;Ei=Ke[_n+1]);){let Hr=Ke[_n];if(Ke[_n]=Ke[_n+1],Ke[_n+1]=Hr,xt&&_nQ&&ie.set(Sn,Oe,L.get(Sn,Oe)/this.s[Oe]);let ze=this.U,Je=ze.rows,At=ze.columns,xt=new zt(w,Je);for(let Sn=0;SnL&&Q++;return Q}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return zt.diag(this.s)}}function Mi(Ie,L=!1){return Ie=Yn.checkMatrix(Ie),L?new Ki(Ie).inverse():yi(Ie,zt.eye(Ie.rows))}function yi(Ie,L,Q=!1){return Ie=Yn.checkMatrix(Ie),L=Yn.checkMatrix(L),Q?new Ki(Ie).solve(L):Ie.isSquare()?new Sr(Ie).solve(L):new vr(Ie).solve(L)}function qr(Ie){if(Ie=zt.checkMatrix(Ie),Ie.isSquare()){if(Ie.columns===0)return 1;let L,Q,w,z;if(Ie.columns===2)return L=Ie.get(0,0),Q=Ie.get(0,1),w=Ie.get(1,0),z=Ie.get(1,1),L*z-Q*w;if(Ie.columns===3){let ie,ze,Je;return ie=new $t(Ie,[1,2],[1,2]),ze=new $t(Ie,[1,2],[0,2]),Je=new $t(Ie,[1,2],[0,1]),L=Ie.get(0,0),Q=Ie.get(0,1),w=Ie.get(0,2),L*qr(ie)-Q*qr(ze)+w*qr(Je)}else return new Sr(Ie).determinant}else throw Error("determinant can only be calculated for a square matrix")}function es(Ie,L){let Q=[];for(let w=0;wz)return new Array(L.rows+1).fill(0);{let ie=L.addRow(Q,[0]);for(let ze=0;zeL?ie[ze]=1/ie[ze]:ie[ze]=0;return z.mmul(zt.diag(ie).mmul(w.transpose()))}function Xt(Ie,L=Ie,Q={}){Ie=new zt(Ie);let w=!1;if(typeof L=="object"&&!zt.isMatrix(L)&&!we.isAnyArray(L)?(Q=L,L=Ie,w=!0):L=new zt(L),Ie.rows!==L.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:z=!0}=Q;z&&(Ie=Ie.center("column"),w||(L=L.center("column")));const ie=Ie.transpose().mmul(L);for(let ze=0;ze0?z.set(ie,ie+1,Q[ie]):Q[ie]<0&&z.set(ie,ie-1,Q[ie])}return z}}function Wt(Ie,L,Q,w){let z,ie,ze,Je,At,xt,Sn,Oe;for(At=0;At0;Je--){for(Oe=0,ze=0,xt=0;xt0&&(ie=-ie),L[Je]=Oe*ie,ze=ze-z*ie,Q[Je-1]=z-ie,At=0;Atxt)do{for(z=Q[xt],Oe=(Q[xt+1]-z)/(2*L[xt]),Qe=Jr(Oe,1),Oe<0&&(Qe=-Qe),Q[xt]=L[xt]/(Oe+Qe),Q[xt+1]=L[xt]*(Oe+Qe),Re=Q[xt+1],ie=z-Q[xt],ze=xt+2;ze=xt;ze--)for(tn=gt,gt=Ke,Rn=Yt,z=Ke*L[ze],ie=Ke*Oe,Qe=Jr(Oe,L[ze]),L[ze+1]=Yt*Qe,Yt=L[ze]/Qe,Ke=Oe/Qe,Oe=Ke*Q[ze]-Yt*z,Q[ze+1]=ie+Yt*(Ke*z+Yt*Q[ze]),At=0;Atkr*Jn);Q[xt]=Q[xt]+er,L[xt]=0}for(ze=0;ze=Oe;xt--)Q[xt]=L.get(xt,Oe-1)/Qe,At+=Q[xt]*Q[xt];for(Je=Math.sqrt(At),Q[Oe]>0&&(Je=-Je),At=At-Q[Oe]*Je,Q[Oe]=Q[Oe]-Je,Sn=Oe;Sn=Oe;xt--)ze+=Q[xt]*L.get(xt,Sn);for(ze=ze/At,xt=Oe;xt<=ie;xt++)L.set(xt,Sn,L.get(xt,Sn)-ze*Q[xt])}for(xt=0;xt<=ie;xt++){for(ze=0,Sn=ie;Sn>=Oe;Sn--)ze+=Q[Sn]*L.get(xt,Sn);for(ze=ze/At,Sn=Oe;Sn<=ie;Sn++)L.set(xt,Sn,L.get(xt,Sn)-ze*Q[Sn])}Q[Oe]=Qe*Q[Oe],L.set(Oe,Oe-1,Qe*Je)}}for(xt=0;xt=z+1;Oe--)if(L.get(Oe,Oe-1)!==0){for(xt=Oe+1;xt<=ie;xt++)Q[xt]=L.get(xt,Oe-1);for(Sn=Oe;Sn<=ie;Sn++){for(Je=0,xt=Oe;xt<=ie;xt++)Je+=Q[xt]*w.get(xt,Sn);for(Je=Je/Q[Oe]/L.get(Oe,Oe-1),xt=Oe;xt<=ie;xt++)w.set(xt,Sn,w.get(xt,Sn)+Je*Q[xt])}}}function ar(Ie,L,Q,w,z){let ie=Ie-1,ze=0,Je=Ie-1,At=Number.EPSILON,xt=0,Sn=0,Oe=0,Qe=0,Re=0,Ke=0,gt=0,tn=0,yt,Yt,Rn,er,Jn,kr,fr,wr,ei,_n,jn,Hr,Pr,$i,Zi;for(yt=0;ytJe)&&(Q[yt]=z.get(yt,yt),L[yt]=0),Yt=Math.max(yt-1,0);Yt=ze;){for(er=ie;er>ze&&(Ke=Math.abs(z.get(er-1,er-1))+Math.abs(z.get(er,er)),Ke===0&&(Ke=Sn),!(Math.abs(z.get(er,er-1))=0){for(gt=Oe>=0?Oe+gt:Oe-gt,Q[ie-1]=wr+gt,Q[ie]=Q[ie-1],gt!==0&&(Q[ie]=wr-fr/gt),L[ie-1]=0,L[ie]=0,wr=z.get(ie,ie-1),Ke=Math.abs(wr)+Math.abs(gt),Oe=wr/Ke,Qe=gt/Ke,Re=Math.sqrt(Oe*Oe+Qe*Qe),Oe=Oe/Re,Qe=Qe/Re,Yt=ie-1;Yt0)){for(Ke=Math.sqrt(Ke),ei=er&&(gt=z.get(Jn,Jn),Re=wr-gt,Ke=ei-gt,Oe=(Re*Ke-fr)/z.get(Jn+1,Jn)+z.get(Jn,Jn+1),Qe=z.get(Jn+1,Jn+1)-gt-Re-Ke,Re=z.get(Jn+2,Jn+1),Ke=Math.abs(Oe)+Math.abs(Qe)+Math.abs(Re),Oe=Oe/Ke,Qe=Qe/Ke,Re=Re/Ke,!(Jn===er||Math.abs(z.get(Jn,Jn-1))*(Math.abs(Qe)+Math.abs(Re))Jn+2&&z.set(yt,yt-3,0);for(Rn=Jn;Rn<=ie-1&&($i=Rn!==ie-1,Rn!==Jn&&(Oe=z.get(Rn,Rn-1),Qe=z.get(Rn+1,Rn-1),Re=$i?z.get(Rn+2,Rn-1):0,wr=Math.abs(Oe)+Math.abs(Qe)+Math.abs(Re),wr!==0&&(Oe=Oe/wr,Qe=Qe/wr,Re=Re/wr)),wr!==0);Rn++)if(Ke=Math.sqrt(Oe*Oe+Qe*Qe+Re*Re),Oe<0&&(Ke=-Ke),Ke!==0){for(Rn!==Jn?z.set(Rn,Rn-1,-Ke*wr):er!==Jn&&z.set(Rn,Rn-1,-z.get(Rn,Rn-1)),Oe=Oe+Ke,wr=Oe/Ke,ei=Qe/Ke,gt=Re/Ke,Qe=Qe/Oe,Re=Re/Oe,Yt=Rn;Yt=0;ie--)if(Oe=Q[ie],Qe=L[ie],Qe===0)for(er=ie,z.set(ie,ie,1),yt=ie-1;yt>=0;yt--){for(fr=z.get(yt,yt)-Oe,Re=0,Yt=er;Yt<=ie;Yt++)Re=Re+z.get(yt,Yt)*z.get(Yt,ie);if(L[yt]<0)gt=fr,Ke=Re;else if(er=yt,L[yt]===0?z.set(yt,ie,fr!==0?-Re/fr:-Re/(At*Sn)):(wr=z.get(yt,yt+1),ei=z.get(yt+1,yt),Qe=(Q[yt]-Oe)*(Q[yt]-Oe)+L[yt]*L[yt],kr=(wr*Ke-gt*Re)/Qe,z.set(yt,ie,kr),z.set(yt+1,ie,Math.abs(wr)>Math.abs(gt)?(-Re-fr*kr)/wr:(-Ke-ei*kr)/gt)),kr=Math.abs(z.get(yt,ie)),At*kr*kr>1)for(Yt=yt;Yt<=ie;Yt++)z.set(Yt,ie,z.get(Yt,ie)/kr)}else if(Qe<0)for(er=ie-1,Math.abs(z.get(ie,ie-1))>Math.abs(z.get(ie-1,ie))?(z.set(ie-1,ie-1,Qe/z.get(ie,ie-1)),z.set(ie-1,ie,-(z.get(ie,ie)-Oe)/z.get(ie,ie-1))):(Zi=rr(0,-z.get(ie-1,ie),z.get(ie-1,ie-1)-Oe,Qe),z.set(ie-1,ie-1,Zi[0]),z.set(ie-1,ie,Zi[1])),z.set(ie,ie-1,0),z.set(ie,ie,1),yt=ie-2;yt>=0;yt--){for(_n=0,jn=0,Yt=er;Yt<=ie;Yt++)_n=_n+z.get(yt,Yt)*z.get(Yt,ie-1),jn=jn+z.get(yt,Yt)*z.get(Yt,ie);if(fr=z.get(yt,yt)-Oe,L[yt]<0)gt=fr,Re=_n,Ke=jn;else if(er=yt,L[yt]===0?(Zi=rr(-_n,-jn,fr,Qe),z.set(yt,ie-1,Zi[0]),z.set(yt,ie,Zi[1])):(wr=z.get(yt,yt+1),ei=z.get(yt+1,yt),Hr=(Q[yt]-Oe)*(Q[yt]-Oe)+L[yt]*L[yt]-Qe*Qe,Pr=(Q[yt]-Oe)*2*Qe,Hr===0&&Pr===0&&(Hr=At*Sn*(Math.abs(fr)+Math.abs(Qe)+Math.abs(wr)+Math.abs(ei)+Math.abs(gt))),Zi=rr(wr*Re-gt*_n+Qe*jn,wr*Ke-gt*jn-Qe*_n,Hr,Pr),z.set(yt,ie-1,Zi[0]),z.set(yt,ie,Zi[1]),Math.abs(wr)>Math.abs(gt)+Math.abs(Qe)?(z.set(yt+1,ie-1,(-_n-fr*z.get(yt,ie-1)+Qe*z.get(yt,ie))/wr),z.set(yt+1,ie,(-jn-fr*z.get(yt,ie)-Qe*z.get(yt,ie-1))/wr)):(Zi=rr(-Re-ei*z.get(yt,ie-1),-Ke-ei*z.get(yt,ie),gt,Qe),z.set(yt+1,ie-1,Zi[0]),z.set(yt+1,ie,Zi[1]))),kr=Math.max(Math.abs(z.get(yt,ie-1)),Math.abs(z.get(yt,ie))),At*kr*kr>1)for(Yt=yt;Yt<=ie;Yt++)z.set(Yt,ie-1,z.get(Yt,ie-1)/kr),z.set(Yt,ie,z.get(Yt,ie)/kr)}for(yt=0;ytJe)for(Yt=yt;Yt=ze;Yt--)for(yt=ze;yt<=Je;yt++){for(gt=0,Rn=ze;Rn<=Math.min(Yt,Je);Rn++)gt=gt+w.get(yt,Rn)*z.get(Rn,Yt);w.set(yt,Yt,gt)}}}function rr(Ie,L,Q,w){let z,ie;return Math.abs(Q)>Math.abs(w)?(z=w/Q,ie=Q+z*w,[(Ie+z*L)/ie,(L-z*Ie)/ie]):(z=Q/w,ie=w+z*Q,[(z*Ie+L)/ie,(z*L-Ie)/ie])}class Kr{constructor(L){if(L=Yn.checkMatrix(L),!L.isSymmetric())throw new Error("Matrix is not symmetric");let Q=L,w=Q.rows,z=new zt(w,w),ie=!0,ze,Je,At;for(Je=0;Je0),z.set(Je,Je,Math.sqrt(Math.max(xt,0))),At=Je+1;At=0;At--)for(Je=0;Jeze;Re++)Oe=L.transpose().mmul(Je).div(Je.transpose().mmul(Je).get(0,0)),Oe=Oe.div(Oe.norm()),xt=L.mmul(Oe).div(Oe.transpose().mmul(Oe).get(0,0)),Re>0&&(At=xt.clone().sub(Qe).pow(2).sum()),Qe=xt.clone(),w?(Sn=w.transpose().mmul(xt).div(xt.transpose().mmul(xt).get(0,0)),Sn=Sn.div(Sn.norm()),Je=w.mmul(Sn).div(Sn.transpose().mmul(Sn).get(0,0))):Je=xt;if(w){let Re=L.transpose().mmul(xt).div(xt.transpose().mmul(xt).get(0,0));Re=Re.div(Re.norm());let Ke=L.clone().sub(xt.clone().mmul(Re.transpose())),gt=Je.transpose().mmul(xt).div(xt.transpose().mmul(xt).get(0,0)),tn=w.clone().sub(xt.clone().mulS(gt.get(0,0)).mmul(Sn.transpose()));this.t=xt,this.p=Re.transpose(),this.w=Oe.transpose(),this.q=Sn,this.u=Je,this.s=xt.transpose().mmul(xt),this.xResidual=Ke,this.yResidual=tn,this.betas=gt}else this.w=Oe.transpose(),this.s=xt.transpose().mmul(xt).sqrt(),z?this.t=xt.clone().div(this.s.get(0,0)):this.t=xt,this.xResidual=L.sub(xt.mmul(Oe.transpose()))}}Me.XA=sn,Me.a_=Kr,Me.yQ=Kr,Me.Hs=lr,Me.Ec=dt,Me.dx=dt,Me.LU=Sr,Me.Rm=Sr,Me.y3=zt,Me.qK=it,Me.pb=be,Me.j=wt,Me.sO=ot,Me.BZ=_t,Me.EK=ut,Me.Db=$t,Me.Fx=Vt,Me.tU=Qt,Me.Ym=si,Me.rs=si,Me.QR=vr,Me.TB=vr,Me.oH=Ki,Me.Sc=Ki,Me.BN=Tn,Me.it=cn,Me.$r=Yn,Me.QM=st,Me.AV=Xt,m=zt,Me.GH=qr,Me.SO=Mi,Me.uZ=En,Me.yU=rn,Me.F1=yi,Me.re=qn},78241:function(Be,Me,b){"use strict";b.d(Me,{default:function(){return Q}});var m=b(94480),Z=b(92310),V=b.n(Z),N=b(77900),E=b(59301),F=b(62892),C=b(32441);function P(w){const[z,ie]=E.useState(w);return E.useEffect(()=>{const ze=setTimeout(()=>{ie(w)},w.length?0:10);return()=>{clearTimeout(ze)}},[w]),z}var H=b(17313),D=b(29878),X=b(8378),j=b(37613),de=b(83116),we=w=>{const{componentCls:z}=w,ie=`${z}-show-help`,ze=`${z}-show-help-item`;return{[ie]:{transition:`opacity ${w.motionDurationSlow} ${w.motionEaseInOut}`,"&-appear, &-enter":{opacity:0,"&-active":{opacity:1}},"&-leave":{opacity:1,"&-active":{opacity:0}},[ze]:{overflow:"hidden",transition:`height ${w.motionDurationSlow} ${w.motionEaseInOut}, - opacity ${w.motionDurationSlow} ${w.motionEaseInOut}, - transform ${w.motionDurationSlow} ${w.motionEaseInOut} !important`,[`&${ze}-appear, &${ze}-enter`]:{transform:"translateY(-5px)",opacity:0,"&-active":{transform:"translateY(0)",opacity:1}},[`&${ze}-leave-active`]:{transform:"translateY(-5px)"}}}}};const ve=w=>({legend:{display:"block",width:"100%",marginBottom:w.marginLG,padding:0,color:w.colorTextDescription,fontSize:w.fontSizeLG,lineHeight:"inherit",border:0,borderBottom:`${w.lineWidth}px ${w.lineType} ${w.colorBorder}`},label:{fontSize:w.fontSize},'input[type="search"]':{boxSizing:"border-box"},'input[type="radio"], input[type="checkbox"]':{lineHeight:"normal"},'input[type="file"]':{display:"block"},'input[type="range"]':{display:"block",width:"100%"},"select[multiple], select[size]":{height:"auto"},"input[type='file']:focus,\n input[type='radio']:focus,\n input[type='checkbox']:focus":{outline:0,boxShadow:`0 0 0 ${w.controlOutlineWidth}px ${w.controlOutline}`},output:{display:"block",paddingTop:15,color:w.colorText,fontSize:w.fontSize,lineHeight:w.lineHeight}}),Ee=(w,z)=>{const{formItemCls:ie}=w;return{[ie]:{[`${ie}-label > label`]:{height:z},[`${ie}-control-input`]:{minHeight:z}}}},$e=w=>{const{componentCls:z}=w;return{[w.componentCls]:Object.assign(Object.assign(Object.assign({},(0,H.Wf)(w)),ve(w)),{[`${z}-text`]:{display:"inline-block",paddingInlineEnd:w.paddingSM},"&-small":Object.assign({},Ee(w,w.controlHeightSM)),"&-large":Object.assign({},Ee(w,w.controlHeightLG))})}},Fe=w=>{const{formItemCls:z,iconCls:ie,componentCls:ze,rootPrefixCls:Je,labelRequiredMarkColor:At,labelColor:xt,labelFontSize:Sn,labelHeight:Oe,labelColonMarginInlineStart:Qe,labelColonMarginInlineEnd:Re,itemMarginBottom:Ke}=w;return{[z]:Object.assign(Object.assign({},(0,H.Wf)(w)),{marginBottom:Ke,verticalAlign:"top","&-with-help":{transition:"none"},[`&-hidden, - &-hidden.${Je}-row`]:{display:"none"},"&-has-warning":{[`${z}-split`]:{color:w.colorError}},"&-has-error":{[`${z}-split`]:{color:w.colorWarning}},[`${z}-label`]:{flexGrow:0,overflow:"hidden",whiteSpace:"nowrap",textAlign:"end",verticalAlign:"middle","&-left":{textAlign:"start"},"&-wrap":{overflow:"unset",lineHeight:`${w.lineHeight} - 0.25em`,whiteSpace:"unset"},"> label":{position:"relative",display:"inline-flex",alignItems:"center",maxWidth:"100%",height:Oe,color:xt,fontSize:Sn,[`> ${ie}`]:{fontSize:w.fontSize,verticalAlign:"top"},[`&${z}-required:not(${z}-required-mark-optional)::before`]:{display:"inline-block",marginInlineEnd:w.marginXXS,color:At,fontSize:w.fontSize,fontFamily:"SimSun, sans-serif",lineHeight:1,content:'"*"',[`${ze}-hide-required-mark &`]:{display:"none"}},[`${z}-optional`]:{display:"inline-block",marginInlineStart:w.marginXXS,color:w.colorTextDescription,[`${ze}-hide-required-mark &`]:{display:"none"}},[`${z}-tooltip`]:{color:w.colorTextDescription,cursor:"help",writingMode:"horizontal-tb",marginInlineStart:w.marginXXS},"&::after":{content:'":"',position:"relative",marginBlock:0,marginInlineStart:Qe,marginInlineEnd:Re},[`&${z}-no-colon::after`]:{content:'"\\a0"'}}},[`${z}-control`]:{"--ant-display":"flex",flexDirection:"column",flexGrow:1,[`&:first-child:not([class^="'${Je}-col-'"]):not([class*="' ${Je}-col-'"])`]:{width:"100%"},"&-input":{position:"relative",display:"flex",alignItems:"center",minHeight:w.controlHeight,"&-content":{flex:"auto",maxWidth:"100%"}}},[z]:{"&-explain, &-extra":{clear:"both",color:w.colorTextDescription,fontSize:w.fontSize,lineHeight:w.lineHeight},"&-explain-connected":{width:"100%"},"&-extra":{minHeight:w.controlHeightSM,transition:`color ${w.motionDurationMid} ${w.motionEaseOut}`},"&-explain":{"&-error":{color:w.colorError},"&-warning":{color:w.colorWarning}}},[`&-with-help ${z}-explain`]:{height:"auto",opacity:1},[`${z}-feedback-icon`]:{fontSize:w.fontSize,textAlign:"center",visibility:"visible",animationName:D.kr,animationDuration:w.motionDurationMid,animationTimingFunction:w.motionEaseOutBack,pointerEvents:"none","&-success":{color:w.colorSuccess},"&-error":{color:w.colorError},"&-warning":{color:w.colorWarning},"&-validating":{color:w.colorPrimary}}})}},ct=w=>{const{componentCls:z,formItemCls:ie}=w;return{[`${z}-horizontal`]:{[`${ie}-label`]:{flexGrow:0},[`${ie}-control`]:{flex:"1 1 0",minWidth:0},[`${ie}-label[class$='-24'], ${ie}-label[class*='-24 ']`]:{[`& + ${ie}-control`]:{minWidth:"unset"}}}}},vt=w=>{const{componentCls:z,formItemCls:ie}=w;return{[`${z}-inline`]:{display:"flex",flexWrap:"wrap",[ie]:{flex:"none",marginInlineEnd:w.margin,marginBottom:0,"&-row":{flexWrap:"nowrap"},[`> ${ie}-label, - > ${ie}-control`]:{display:"inline-block",verticalAlign:"top"},[`> ${ie}-label`]:{flex:"none"},[`${z}-text`]:{display:"inline-block"},[`${ie}-has-feedback`]:{display:"inline-block"}}}}},at=w=>({padding:w.verticalLabelPadding,margin:w.verticalLabelMargin,whiteSpace:"initial",textAlign:"start","> label":{margin:0,"&::after":{visibility:"hidden"}}}),kt=w=>{const{componentCls:z,formItemCls:ie,rootPrefixCls:ze}=w;return{[`${ie} ${ie}-label`]:at(w),[z]:{[ie]:{flexWrap:"wrap",[`${ie}-label, ${ie}-control`]:{[`&:not([class*=" ${ze}-col-xs"])`]:{flex:"0 0 100%",maxWidth:"100%"}}}}}},It=w=>{const{componentCls:z,formItemCls:ie,rootPrefixCls:ze}=w;return{[`${z}-vertical`]:{[ie]:{"&-row":{flexDirection:"column"},"&-label > label":{height:"auto"},[`${z}-item-control`]:{width:"100%"}}},[`${z}-vertical ${ie}-label, - .${ze}-col-24${ie}-label, - .${ze}-col-xl-24${ie}-label`]:at(w),[`@media (max-width: ${w.screenXSMax}px)`]:[kt(w),{[z]:{[`.${ze}-col-xs-24${ie}-label`]:at(w)}}],[`@media (max-width: ${w.screenSMMax}px)`]:{[z]:{[`.${ze}-col-sm-24${ie}-label`]:at(w)}},[`@media (max-width: ${w.screenMDMax}px)`]:{[z]:{[`.${ze}-col-md-24${ie}-label`]:at(w)}},[`@media (max-width: ${w.screenLGMax}px)`]:{[z]:{[`.${ze}-col-lg-24${ie}-label`]:at(w)}}}},Bn=(w,z)=>(0,j.TS)(w,{formItemCls:`${w.componentCls}-item`,rootPrefixCls:z});var Lt=(0,de.Z)("Form",(w,z)=>{let{rootPrefixCls:ie}=z;const ze=Bn(w,ie);return[$e(ze),Fe(ze),we(ze),ct(ze),vt(ze),It(ze),(0,X.Z)(ze),D.kr]},w=>({labelRequiredMarkColor:w.colorError,labelColor:w.colorTextHeading,labelFontSize:w.fontSize,labelHeight:w.controlHeight,labelColonMarginInlineStart:w.marginXXS/2,labelColonMarginInlineEnd:w.marginXS,itemMarginBottom:w.marginLG,verticalLabelPadding:`0 0 ${w.paddingXS}px`,verticalLabelMargin:0}),{order:-1e3});const Wn=[];function Xn(w,z,ie){let ze=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;return{key:typeof w=="string"?w:`${z}-${ze}`,error:w,errorStatus:ie}}var zn=w=>{let{help:z,helpStatus:ie,errors:ze=Wn,warnings:Je=Wn,className:At,fieldId:xt,onVisibleChanged:Sn}=w;const{prefixCls:Oe}=E.useContext(C.Rk),Qe=`${Oe}-item-explain`,[,Re]=Lt(Oe),Ke=(0,E.useMemo)(()=>(0,F.Z)(Oe),[Oe]),gt=P(ze),tn=P(Je),yt=E.useMemo(()=>z!=null?[Xn(z,"help",ie)]:[].concat((0,m.Z)(gt.map((Rn,er)=>Xn(Rn,"error","error",er))),(0,m.Z)(tn.map((Rn,er)=>Xn(Rn,"warning","warning",er)))),[z,ie,gt,tn]),Yt={};return xt&&(Yt.id=`${xt}_help`),E.createElement(N.default,{motionDeadline:Ke.motionDeadline,motionName:`${Oe}-show-help`,visible:!!yt.length,onVisibleChanged:Sn},Rn=>{const{className:er,style:Jn}=Rn;return E.createElement("div",Object.assign({},Yt,{className:V()(Qe,er,At,Re),style:Jn,role:"alert"}),E.createElement(N.CSSMotionList,Object.assign({keys:yt},(0,F.Z)(Oe),{motionName:`${Oe}-show-help-item`,component:!1}),kr=>{const{key:fr,error:wr,errorStatus:ei,className:_n,style:jn}=kr;return E.createElement("div",{key:fr,className:V()(_n,{[`${Qe}-${ei}`]:ei}),style:jn},wr)}))})},dr=b(95013),vn=b(36355),_r=b(1684),Ge=b(52946),Tt=b(19716),On=b(16722);const Vr=["parentNode"],en="form_item";function ln(w){return w===void 0||w===!1?[]:Array.isArray(w)?w:[w]}function Cn(w,z){if(!w.length)return;const ie=w.join("_");return z?`${z}_${ie}`:Vr.includes(ie)?`${en}_${ie}`:ie}function Mt(w,z,ie,ze,Je,At){let xt=ze;return At!==void 0?xt=At:ie.validating?xt="validating":w.length?xt="error":z.length?xt="warning":(ie.touched||Je&&ie.validated)&&(xt="success"),xt}function Et(w){return ln(w).join("_")}function pe(w){const[z]=(0,dr.useForm)(),ie=E.useRef({}),ze=E.useMemo(()=>w!=null?w:Object.assign(Object.assign({},z),{__INTERNAL__:{itemRef:Je=>At=>{const xt=Et(Je);At?ie.current[xt]=At:delete ie.current[xt]}},scrollToField:function(Je){let At=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const xt=ln(Je),Sn=Cn(xt,ze.__INTERNAL__.name),Oe=Sn?document.getElementById(Sn):null;Oe&&(0,On.Z)(Oe,Object.assign({scrollMode:"if-needed",block:"nearest"},At))},getFieldInstance:Je=>{const At=Et(Je);return ie.current[At]}}),[w,z]);return[ze]}var Ae=b(28726),Pe=function(w,z){var ie={};for(var ze in w)Object.prototype.hasOwnProperty.call(w,ze)&&z.indexOf(ze)<0&&(ie[ze]=w[ze]);if(w!=null&&typeof Object.getOwnPropertySymbols=="function")for(var Je=0,ze=Object.getOwnPropertySymbols(w);Je{const ie=E.useContext(_r.Z),{getPrefixCls:ze,direction:Je,form:At}=E.useContext(vn.E_),{prefixCls:xt,className:Sn,rootClassName:Oe,size:Qe,disabled:Re=ie,form:Ke,colon:gt,labelAlign:tn,labelWrap:yt,labelCol:Yt,wrapperCol:Rn,hideRequiredMark:er,layout:Jn="horizontal",scrollToFirstError:kr,requiredMark:fr,onFinishFailed:wr,name:ei,style:_n,feedbackIcons:jn}=w,Hr=Pe(w,["prefixCls","className","rootClassName","size","disabled","form","colon","labelAlign","labelWrap","labelCol","wrapperCol","hideRequiredMark","layout","scrollToFirstError","requiredMark","onFinishFailed","name","style","feedbackIcons"]),Pr=(0,Tt.Z)(Qe),$i=E.useContext(Ae.Z),Zi=(0,E.useMemo)(()=>fr!==void 0?fr:At&&At.requiredMark!==void 0?At.requiredMark:!er,[er,fr,At]),Xi=gt!=null?gt:At==null?void 0:At.colon,Ei=ze("form",xt),[ms,_i]=Lt(Ei),Es=V()(Ei,`${Ei}-${Jn}`,{[`${Ei}-hide-required-mark`]:Zi===!1,[`${Ei}-rtl`]:Je==="rtl",[`${Ei}-${Pr}`]:Pr},_i,At==null?void 0:At.className,Sn,Oe),[ua]=pe(Ke),{__INTERNAL__:Hn}=ua;Hn.name=ei;const Pt=(0,E.useMemo)(()=>({name:ei,labelAlign:tn,labelCol:Yt,labelWrap:yt,wrapperCol:Rn,vertical:Jn==="vertical",colon:Xi,requiredMark:Zi,itemRef:Hn.itemRef,form:ua,feedbackIcons:jn}),[ei,tn,Yt,Rn,Jn,Xi,Zi,ua,jn]);E.useImperativeHandle(z,()=>ua);const Gt=(yn,Ln)=>{if(yn){let gr={block:"nearest"};typeof yn=="object"&&(gr=yn),ua.scrollToField(Ln,gr)}},Bt=yn=>{if(wr==null||wr(yn),yn.errorFields.length){const Ln=yn.errorFields[0].name;if(kr!==void 0){Gt(kr,Ln);return}At&&At.scrollToFirstError!==void 0&&Gt(At.scrollToFirstError,Ln)}};return ms(E.createElement(_r.n,{disabled:Re},E.createElement(Ge.q,{size:Pr},E.createElement(C.RV,Object.assign({},{validateMessages:$i}),E.createElement(C.q3.Provider,{value:Pt},E.createElement(dr.default,Object.assign({id:ei},Hr,{name:ei,onFinishFailed:Bt,form:ua,style:Object.assign(Object.assign({},At==null?void 0:At.style),_n),className:Es})))))))};var ft=E.forwardRef(Ut),on=b(41799),hn=b(8654),lt=b(92343),Ct=b(11592);function sn(w){if(typeof w=="function")return w;const z=(0,Ct.Z)(w);return z.length<=1?z[0]:z}const W=()=>{const{status:w,errors:z=[],warnings:ie=[]}=(0,E.useContext)(C.aM);return{status:w,errors:z,warnings:ie}};W.Context=C.aM;var Se=W,Ht=b(16089);function zt(w){const[z,ie]=E.useState(w),ze=(0,E.useRef)(null),Je=(0,E.useRef)([]),At=(0,E.useRef)(!1);E.useEffect(()=>(At.current=!1,()=>{At.current=!0,Ht.Z.cancel(ze.current),ze.current=null}),[]);function xt(Sn){At.current||(ze.current===null&&(Je.current=[],ze.current=(0,Ht.Z)(()=>{ze.current=null,ie(Oe=>{let Qe=Oe;return Je.current.forEach(Re=>{Qe=Re(Qe)}),Qe})})),Je.current.push(Sn))}return[z,xt]}function Fn(){const{itemRef:w}=E.useContext(C.q3),z=E.useRef({});function ie(ze,Je){const At=Je&&typeof Je=="object"&&Je.ref,xt=ze.join("_");return(z.current.name!==xt||z.current.originRef!==At)&&(z.current.name=xt,z.current.originRef=At,z.current.ref=(0,hn.sQ)(w(ze),At)),z.current.ref}return ie}var Tn=b(29194),lr=b(34280),je=b(2738),be=b(27382),it=b(37028);const wt=w=>{const{formItemCls:z}=w;return{"@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)":{[`${z}-control`]:{display:"flex"}}}};var ot=(0,de.b)(["Form","item-item"],(w,z)=>{let{rootPrefixCls:ie}=z;const ze=Bn(w,ie);return[wt(ze)]}),_t=w=>{const{prefixCls:z,status:ie,wrapperCol:ze,children:Je,errors:At,warnings:xt,_internalItemRender:Sn,extra:Oe,help:Qe,fieldId:Re,marginBottom:Ke,onErrorVisibleChanged:gt}=w,tn=`${z}-item`,yt=E.useContext(C.q3),Yt=ze||yt.wrapperCol||{},Rn=V()(`${tn}-control`,Yt.className),er=E.useMemo(()=>Object.assign({},yt),[yt]);delete er.labelCol,delete er.wrapperCol;const Jn=E.createElement("div",{className:`${tn}-control-input`},E.createElement("div",{className:`${tn}-control-input-content`},Je)),kr=E.useMemo(()=>({prefixCls:z,status:ie}),[z,ie]),fr=Ke!==null||At.length||xt.length?E.createElement("div",{style:{display:"flex",flexWrap:"nowrap"}},E.createElement(C.Rk.Provider,{value:kr},E.createElement(zn,{fieldId:Re,errors:At,warnings:xt,help:Qe,helpStatus:ie,className:`${tn}-explain-connected`,onVisibleChanged:gt})),!!Ke&&E.createElement("div",{style:{width:0,height:Ke}})):null,wr={};Re&&(wr.id=`${Re}_extra`);const ei=Oe?E.createElement("div",Object.assign({},wr,{className:`${tn}-extra`}),Oe):null,_n=Sn&&Sn.mark==="pro_table_render"&&Sn.render?Sn.render(w,{input:Jn,errorList:fr,extra:ei}):E.createElement(E.Fragment,null,Jn,fr,ei);return E.createElement(C.q3.Provider,{value:er},E.createElement(it.Z,Object.assign({},Yt,{className:Rn}),_n),E.createElement(ot,{prefixCls:z}))},$t=b(61485),Vt=b(31724),Qt=b(9763),cn=b(6848),Yn=function(w,z){var ie={};for(var ze in w)Object.prototype.hasOwnProperty.call(w,ze)&&z.indexOf(ze)<0&&(ie[ze]=w[ze]);if(w!=null&&typeof Object.getOwnPropertySymbols=="function")for(var Je=0,ze=Object.getOwnPropertySymbols(w);Je{let{prefixCls:z,label:ie,htmlFor:ze,labelCol:Je,labelAlign:At,colon:xt,required:Sn,requiredMark:Oe,tooltip:Qe}=w;var Re;const[Ke]=(0,Qt.Z)("Form"),{vertical:gt,labelAlign:tn,labelCol:yt,labelWrap:Yt,colon:Rn}=E.useContext(C.q3);if(!ie)return null;const er=Je||yt||{},Jn=At||tn,kr=`${z}-item-label`,fr=V()(kr,Jn==="left"&&`${kr}-left`,er.className,{[`${kr}-wrap`]:!!Yt});let wr=ie;const ei=xt===!0||Rn!==!1&&xt!==!1;ei&&!gt&&typeof ie=="string"&&ie.trim()!==""&&(wr=ie.replace(/[:|:]\s*$/,""));const jn=qn(Qe);if(jn){const{icon:Zi=E.createElement($t.Z,null)}=jn,Xi=Yn(jn,["icon"]),Ei=E.createElement(cn.Z,Object.assign({},Xi),E.cloneElement(Zi,{className:`${z}-item-tooltip`,title:""}));wr=E.createElement(E.Fragment,null,wr,Ei)}const Hr=Oe==="optional",Pr=typeof Oe=="function";Pr?wr=Oe(wr,{required:!!Sn}):Hr&&!Sn&&(wr=E.createElement(E.Fragment,null,wr,E.createElement("span",{className:`${z}-item-optional`,title:""},(Ke==null?void 0:Ke.optional)||((Re=Vt.Z.Form)===null||Re===void 0?void 0:Re.optional))));const $i=V()({[`${z}-item-required`]:Sn,[`${z}-item-required-mark-optional`]:Hr||Pr,[`${z}-item-no-colon`]:!ei});return E.createElement(it.Z,Object.assign({},er,{className:fr}),E.createElement("label",{htmlFor:ze,className:$i,title:typeof ie=="string"?ie:""},wr))},vr=b(29679),Ki=b(19248),Mi=b(96512),yi=b(58617);const qr={success:vr.Z,warning:Mi.Z,error:Ki.Z,validating:yi.Z};function es(w){let{children:z,errors:ie,warnings:ze,hasFeedback:Je,validateStatus:At,prefixCls:xt,meta:Sn,noStyle:Oe}=w;const Qe=`${xt}-item`,{feedbackIcons:Re}=E.useContext(C.q3),Ke=Mt(ie,ze,Sn,null,!!Je,At),{isFormItemInput:gt,status:tn}=E.useContext(C.aM),yt=E.useMemo(()=>{var Yt;let Rn;if(Je){const kr=Je!==!0&&Je.icons||Re,fr=Ke&&((Yt=kr==null?void 0:kr({status:Ke,errors:ie,warnings:ze}))===null||Yt===void 0?void 0:Yt[Ke]),wr=Ke&&qr[Ke];Rn=fr!==!1&&wr?E.createElement("span",{className:V()(`${Qe}-feedback-icon`,`${Qe}-feedback-icon-${Ke}`)},fr||E.createElement(wr,null)):null}let er=!0,Jn=Ke||"";return Oe&&(er=gt,Jn=(Ke!=null?Ke:tn)||""),{status:Jn,errors:ie,warnings:ze,hasFeedback:!!Je,feedbackIcon:Rn,isFormItemInput:er}},[Ke,Je,Oe,gt,tn]);return E.createElement(C.aM.Provider,{value:yt},z)}var Ci=function(w,z){var ie={};for(var ze in w)Object.prototype.hasOwnProperty.call(w,ze)&&z.indexOf(ze)<0&&(ie[ze]=w[ze]);if(w!=null&&typeof Object.getOwnPropertySymbols=="function")for(var Je=0,ze=Object.getOwnPropertySymbols(w);Je{if(jn&&fr.current){const _i=getComputedStyle(fr.current);$i(parseInt(_i.marginBottom,10))}},[jn,Hr]);const Zi=_i=>{_i||$i(null)},Ei=function(){let _i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const Es=_i?wr:Qe.errors,ua=_i?ei:Qe.warnings;return Mt(Es,ua,Qe,"",!!Re,Oe)}(),ms=V()(Jn,ie,ze,{[`${Jn}-with-help`]:_n||wr.length||ei.length,[`${Jn}-has-feedback`]:Ei&&Re,[`${Jn}-has-success`]:Ei==="success",[`${Jn}-has-warning`]:Ei==="warning",[`${Jn}-has-error`]:Ei==="error",[`${Jn}-is-validating`]:Ei==="validating",[`${Jn}-hidden`]:Ke});return E.createElement("div",{className:ms,style:Je,ref:fr},E.createElement(be.Z,Object.assign({className:`${Jn}-row`},(0,je.Z)(er,["_internalItemRender","colon","dependencies","extra","fieldKey","getValueFromEvent","getValueProps","htmlFor","id","initialValue","isListField","label","labelAlign","labelCol","labelWrap","messageVariables","name","normalize","noStyle","preserve","requiredMark","rules","shouldUpdate","trigger","tooltip","validateFirst","validateTrigger","valuePropName","wrapperCol","validateDebounce"])),E.createElement(Jr,Object.assign({htmlFor:tn},w,{requiredMark:kr,required:yt!=null?yt:Yt,prefixCls:z})),E.createElement(_t,Object.assign({},w,Qe,{errors:wr,warnings:ei,prefixCls:z,status:Ei,help:At,marginBottom:Pr,onErrorVisibleChanged:Zi}),E.createElement(C.qI.Provider,{value:Rn},E.createElement(es,{prefixCls:z,meta:Qe,errors:Qe.errors,warnings:Qe.warnings,hasFeedback:Re,validateStatus:Ei},gt)))),!!Pr&&E.createElement("div",{className:`${Jn}-margin-offset`,style:{marginBottom:-Pr}}))}const rn="__SPLIT__",Xt=null,st=E.memo(w=>{let{children:z}=w;return z},(w,z)=>w.value===z.value&&w.update===z.update&&w.childProps.length===z.childProps.length&&w.childProps.every((ie,ze)=>ie===z.childProps[ze]));function dt(w){return w!=null}function Wt(){return{errors:[],warnings:[],touched:!1,validating:!1,name:[],validated:!1}}function bn(w){const{name:z,noStyle:ie,className:ze,dependencies:Je,prefixCls:At,shouldUpdate:xt,rules:Sn,children:Oe,required:Qe,label:Re,messageVariables:Ke,trigger:gt="onChange",validateTrigger:tn,hidden:yt,help:Yt}=w,{getPrefixCls:Rn}=E.useContext(vn.E_),{name:er}=E.useContext(C.q3),Jn=sn(Oe),kr=typeof Jn=="function",fr=E.useContext(C.qI),{validateTrigger:wr}=E.useContext(dr.FieldContext),ei=tn!==void 0?tn:wr,_n=dt(z),jn=Rn("form",At),[Hr,Pr]=Lt(jn),$i=E.useContext(dr.ListContext),Zi=E.useRef(),[Xi,Ei]=zt({}),[ms,_i]=(0,on.Z)(()=>Wt()),Es=Ln=>{const gr=$i==null?void 0:$i.getKey(Ln.name);if(_i(Ln.destroy?Wt():Ln,!0),ie&&Yt!==!1&&fr){let Rr=Ln.name;if(Ln.destroy)Rr=Zi.current||Rr;else if(gr!==void 0){const[$r,Ii]=gr;Rr=[$r].concat((0,m.Z)(Ii)),Zi.current=Rr}fr(Ln,Rr)}},ua=(Ln,gr)=>{Ei(Rr=>{const $r=Object.assign({},Rr),Di=[].concat((0,m.Z)(Ln.name.slice(0,-1)),(0,m.Z)(gr)).join(rn);return Ln.destroy?delete $r[Di]:$r[Di]=Ln,$r})},[Hn,Pt]=E.useMemo(()=>{const Ln=(0,m.Z)(ms.errors),gr=(0,m.Z)(ms.warnings);return Object.values(Xi).forEach(Rr=>{Ln.push.apply(Ln,(0,m.Z)(Rr.errors||[])),gr.push.apply(gr,(0,m.Z)(Rr.warnings||[]))}),[Ln,gr]},[Xi,ms.errors,ms.warnings]),Gt=Fn();function Bt(Ln,gr,Rr){return ie&&!yt?E.createElement(es,{prefixCls:jn,hasFeedback:w.hasFeedback,validateStatus:w.validateStatus,meta:ms,errors:Hn,warnings:Pt,noStyle:!0},Ln):E.createElement(En,Object.assign({key:"row"},w,{className:V()(ze,Pr),prefixCls:jn,fieldId:gr,isRequired:Rr,errors:Hn,warnings:Pt,meta:ms,onSubItemMetaChange:ua}),Ln)}if(!_n&&!kr&&!Je)return Hr(Bt(Jn));let yn={};return typeof Re=="string"?yn.label=Re:z&&(yn.label=String(z)),Ke&&(yn=Object.assign(Object.assign({},yn),Ke)),Hr(E.createElement(dr.Field,Object.assign({},w,{messageVariables:yn,trigger:gt,validateTrigger:ei,onMetaChange:Es}),(Ln,gr,Rr)=>{const $r=ln(z).length&&gr?gr.name:[],Ii=Cn($r,er),Di=Qe!==void 0?Qe:!!(Sn&&Sn.some(Cs=>{if(Cs&&typeof Cs=="object"&&Cs.required&&!Cs.warningOnly)return!0;if(typeof Cs=="function"){const Aa=Cs(Rr);return Aa&&Aa.required&&!Aa.warningOnly}return!1})),ss=Object.assign({},Ln);let vs=null;if(Array.isArray(Jn)&&_n)vs=Jn;else if(!(kr&&(!(xt||Je)||_n))){if(!(Je&&!kr&&!_n))if((0,lt.l$)(Jn)){const Cs=Object.assign(Object.assign({},Jn.props),ss);if(Cs.id||(Cs.id=Ii),Yt||Hn.length>0||Pt.length>0||w.extra){const ca=[];(Yt||Hn.length>0)&&ca.push(`${Ii}_help`),w.extra&&ca.push(`${Ii}_extra`),Cs["aria-describedby"]=ca.join(" ")}Hn.length>0&&(Cs["aria-invalid"]="true"),Di&&(Cs["aria-required"]="true"),(0,hn.Yr)(Jn)&&(Cs.ref=Gt($r,Jn)),new Set([].concat((0,m.Z)(ln(gt)),(0,m.Z)(ln(ei)))).forEach(ca=>{Cs[ca]=function(){for(var Ai,$a,Zo,Ko,$o,bo=arguments.length,Pl=new Array(bo),il=0;il{var{prefixCls:z,children:ie}=w,ze=rr(w,["prefixCls","children"]);const{getPrefixCls:Je}=E.useContext(vn.E_),At=Je("form",z),xt=E.useMemo(()=>({prefixCls:At,status:"error"}),[At]);return E.createElement(dr.List,Object.assign({},ze),(Sn,Oe,Qe)=>E.createElement(C.Rk.Provider,{value:xt},ie(Sn.map(Re=>Object.assign(Object.assign({},Re),{fieldKey:Re.key})),Oe,{errors:Qe.errors,warnings:Qe.warnings})))};function Ie(){const{form:w}=(0,E.useContext)(C.q3);return w}const L=ft;L.Item=ar,L.List=si,L.ErrorList=zn,L.useForm=pe,L.useFormInstance=Ie,L.useWatch=dr.useWatch,L.Provider=C.RV,L.create=()=>{};var Q=L},5112:function(Be,Me,b){"use strict";b.d(Me,{ZP:function(){return Vr}});var m=b(92310),Z=b.n(m),V=b(18929),N=b(26112),E=b(59301),F=b(36355),C=b(19716);const P=E.createContext(null),H=P.Provider;var D=P;const X=E.createContext(null),j=X.Provider;var de=b(5630),he=b(8654),we=b(1684),ve=b(32441),Ee=b(17313),$e=b(83116),Fe=b(37613);const ct=en=>{const{componentCls:ln,antCls:Cn}=en,Mt=`${ln}-group`;return{[Mt]:Object.assign(Object.assign({},(0,Ee.Wf)(en)),{display:"inline-block",fontSize:0,[`&${Mt}-rtl`]:{direction:"rtl"},[`${Cn}-badge ${Cn}-badge-count`]:{zIndex:1},[`> ${Cn}-badge:not(:first-child) > ${Cn}-button-wrapper`]:{borderInlineStart:"none"}})}},vt=en=>{const{componentCls:ln,wrapperMarginInlineEnd:Cn,colorPrimary:Mt,radioSize:Et,motionDurationSlow:pe,motionDurationMid:Ae,motionEaseInOutCirc:Pe,colorBgContainer:Ut,colorBorder:jt,lineWidth:ft,dotSize:on,colorBgContainerDisabled:hn,colorTextDisabled:lt,paddingXS:Ct,dotColorDisabled:sn,lineType:W,radioDotDisabledSize:Se,wireframe:Ht,colorWhite:zt}=en,Fn=`${ln}-inner`;return{[`${ln}-wrapper`]:Object.assign(Object.assign({},(0,Ee.Wf)(en)),{display:"inline-flex",alignItems:"baseline",marginInlineStart:0,marginInlineEnd:Cn,cursor:"pointer",[`&${ln}-wrapper-rtl`]:{direction:"rtl"},"&-disabled":{cursor:"not-allowed",color:en.colorTextDisabled},"&::after":{display:"inline-block",width:0,overflow:"hidden",content:'"\\a0"'},[`${ln}-checked::after`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,width:"100%",height:"100%",border:`${ft}px ${W} ${Mt}`,borderRadius:"50%",visibility:"hidden",content:'""'},[ln]:Object.assign(Object.assign({},(0,Ee.Wf)(en)),{position:"relative",display:"inline-block",outline:"none",cursor:"pointer",alignSelf:"center",borderRadius:"50%"}),[`${ln}-wrapper:hover &, - &:hover ${Fn}`]:{borderColor:Mt},[`${ln}-input:focus-visible + ${Fn}`]:Object.assign({},(0,Ee.oN)(en)),[`${ln}:hover::after, ${ln}-wrapper:hover &::after`]:{visibility:"visible"},[`${ln}-inner`]:{"&::after":{boxSizing:"border-box",position:"absolute",insetBlockStart:"50%",insetInlineStart:"50%",display:"block",width:Et,height:Et,marginBlockStart:Et/-2,marginInlineStart:Et/-2,backgroundColor:Ht?Mt:zt,borderBlockStart:0,borderInlineStart:0,borderRadius:Et,transform:"scale(0)",opacity:0,transition:`all ${pe} ${Pe}`,content:'""'},boxSizing:"border-box",position:"relative",insetBlockStart:0,insetInlineStart:0,display:"block",width:Et,height:Et,backgroundColor:Ut,borderColor:jt,borderStyle:"solid",borderWidth:ft,borderRadius:"50%",transition:`all ${Ae}`},[`${ln}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0},[`${ln}-checked`]:{[Fn]:{borderColor:Mt,backgroundColor:Ht?Ut:Mt,"&::after":{transform:`scale(${on/Et})`,opacity:1,transition:`all ${pe} ${Pe}`}}},[`${ln}-disabled`]:{cursor:"not-allowed",[Fn]:{backgroundColor:hn,borderColor:jt,cursor:"not-allowed","&::after":{backgroundColor:sn}},[`${ln}-input`]:{cursor:"not-allowed"},[`${ln}-disabled + span`]:{color:lt,cursor:"not-allowed"},[`&${ln}-checked`]:{[Fn]:{"&::after":{transform:`scale(${Se/Et})`}}}},[`span${ln} + *`]:{paddingInlineStart:Ct,paddingInlineEnd:Ct}})}},at=en=>{const{buttonColor:ln,controlHeight:Cn,componentCls:Mt,lineWidth:Et,lineType:pe,colorBorder:Ae,motionDurationSlow:Pe,motionDurationMid:Ut,buttonPaddingInline:jt,fontSize:ft,buttonBg:on,fontSizeLG:hn,controlHeightLG:lt,controlHeightSM:Ct,paddingXS:sn,borderRadius:W,borderRadiusSM:Se,borderRadiusLG:Ht,buttonCheckedBg:zt,buttonSolidCheckedColor:Fn,colorTextDisabled:Tn,colorBgContainerDisabled:lr,buttonCheckedBgDisabled:je,buttonCheckedColorDisabled:be,colorPrimary:it,colorPrimaryHover:wt,colorPrimaryActive:ot,buttonSolidCheckedBg:ut,buttonSolidCheckedHoverBg:_t,buttonSolidCheckedActiveBg:$t}=en;return{[`${Mt}-button-wrapper`]:{position:"relative",display:"inline-block",height:Cn,margin:0,paddingInline:jt,paddingBlock:0,color:ln,fontSize:ft,lineHeight:`${Cn-Et*2}px`,background:on,border:`${Et}px ${pe} ${Ae}`,borderBlockStartWidth:Et+.02,borderInlineStartWidth:0,borderInlineEndWidth:Et,cursor:"pointer",transition:[`color ${Ut}`,`background ${Ut}`,`box-shadow ${Ut}`].join(","),a:{color:ln},[`> ${Mt}-button`]:{position:"absolute",insetBlockStart:0,insetInlineStart:0,zIndex:-1,width:"100%",height:"100%"},"&:not(:first-child)":{"&::before":{position:"absolute",insetBlockStart:-Et,insetInlineStart:-Et,display:"block",boxSizing:"content-box",width:1,height:"100%",paddingBlock:Et,paddingInline:0,backgroundColor:Ae,transition:`background-color ${Pe}`,content:'""'}},"&:first-child":{borderInlineStart:`${Et}px ${pe} ${Ae}`,borderStartStartRadius:W,borderEndStartRadius:W},"&:last-child":{borderStartEndRadius:W,borderEndEndRadius:W},"&:first-child:last-child":{borderRadius:W},[`${Mt}-group-large &`]:{height:lt,fontSize:hn,lineHeight:`${lt-Et*2}px`,"&:first-child":{borderStartStartRadius:Ht,borderEndStartRadius:Ht},"&:last-child":{borderStartEndRadius:Ht,borderEndEndRadius:Ht}},[`${Mt}-group-small &`]:{height:Ct,paddingInline:sn-Et,paddingBlock:0,lineHeight:`${Ct-Et*2}px`,"&:first-child":{borderStartStartRadius:Se,borderEndStartRadius:Se},"&:last-child":{borderStartEndRadius:Se,borderEndEndRadius:Se}},"&:hover":{position:"relative",color:it},"&:has(:focus-visible)":Object.assign({},(0,Ee.oN)(en)),[`${Mt}-inner, input[type='checkbox'], input[type='radio']`]:{width:0,height:0,opacity:0,pointerEvents:"none"},[`&-checked:not(${Mt}-button-wrapper-disabled)`]:{zIndex:1,color:it,background:zt,borderColor:it,"&::before":{backgroundColor:it},"&:first-child":{borderColor:it},"&:hover":{color:wt,borderColor:wt,"&::before":{backgroundColor:wt}},"&:active":{color:ot,borderColor:ot,"&::before":{backgroundColor:ot}}},[`${Mt}-group-solid &-checked:not(${Mt}-button-wrapper-disabled)`]:{color:Fn,background:ut,borderColor:ut,"&:hover":{color:Fn,background:_t,borderColor:_t},"&:active":{color:Fn,background:$t,borderColor:$t}},"&-disabled":{color:Tn,backgroundColor:lr,borderColor:Ae,cursor:"not-allowed","&:first-child, &:hover":{color:Tn,backgroundColor:lr,borderColor:Ae}},[`&-disabled${Mt}-button-wrapper-checked`]:{color:be,backgroundColor:je,borderColor:Ae,boxShadow:"none"}}}},kt=en=>en-4*2;var It=(0,$e.Z)("Radio",en=>{const{controlOutline:ln,controlOutlineWidth:Cn,radioSize:Mt}=en,Et=`0 0 0 ${Cn}px ${ln}`,pe=Et,Ae=kt(Mt),Pe=(0,Fe.TS)(en,{radioDotDisabledSize:Ae,radioFocusShadow:Et,radioButtonFocusShadow:pe});return[ct(Pe),vt(Pe),at(Pe)]},en=>{const{wireframe:ln,padding:Cn,marginXS:Mt,lineWidth:Et,fontSizeLG:pe,colorText:Ae,colorBgContainer:Pe,colorTextDisabled:Ut,controlItemBgActiveDisabled:jt,colorTextLightSolid:ft,colorPrimary:on,colorPrimaryHover:hn,colorPrimaryActive:lt}=en,Ct=4,sn=pe,W=ln?kt(sn):sn-(Ct+Et)*2;return{radioSize:sn,dotSize:W,dotColorDisabled:Ut,buttonSolidCheckedColor:ft,buttonSolidCheckedBg:on,buttonSolidCheckedHoverBg:hn,buttonSolidCheckedActiveBg:lt,buttonBg:Pe,buttonCheckedBg:Pe,buttonColor:Ae,buttonCheckedBgDisabled:jt,buttonCheckedColorDisabled:Ut,buttonPaddingInline:Cn-Et,wrapperMarginInlineEnd:Mt}}),Bn=b(14088),Lt=b(4572),Wn=function(en,ln){var Cn={};for(var Mt in en)Object.prototype.hasOwnProperty.call(en,Mt)&&ln.indexOf(Mt)<0&&(Cn[Mt]=en[Mt]);if(en!=null&&typeof Object.getOwnPropertySymbols=="function")for(var Et=0,Mt=Object.getOwnPropertySymbols(en);Et{var Cn,Mt;const Et=E.useContext(D),pe=E.useContext(X),{getPrefixCls:Ae,direction:Pe,radio:Ut}=E.useContext(F.E_),jt=E.useRef(null),ft=(0,he.sQ)(ln,jt),{isFormItemInput:on}=E.useContext(ve.aM),hn=ot=>{var ut,_t;(ut=en.onChange)===null||ut===void 0||ut.call(en,ot),(_t=Et==null?void 0:Et.onChange)===null||_t===void 0||_t.call(Et,ot)},{prefixCls:lt,className:Ct,rootClassName:sn,children:W,style:Se}=en,Ht=Wn(en,["prefixCls","className","rootClassName","children","style"]),zt=Ae("radio",lt),Fn=((Et==null?void 0:Et.optionType)||pe)==="button",Tn=Fn?`${zt}-button`:zt,[lr,je]=It(zt),be=Object.assign({},Ht),it=E.useContext(we.Z);Et&&(be.name=Et.name,be.onChange=hn,be.checked=en.value===Et.value,be.disabled=(Cn=be.disabled)!==null&&Cn!==void 0?Cn:Et.disabled),be.disabled=(Mt=be.disabled)!==null&&Mt!==void 0?Mt:it;const wt=Z()(`${Tn}-wrapper`,{[`${Tn}-wrapper-checked`]:be.checked,[`${Tn}-wrapper-disabled`]:be.disabled,[`${Tn}-wrapper-rtl`]:Pe==="rtl",[`${Tn}-wrapper-in-form-item`]:on},Ut==null?void 0:Ut.className,Ct,sn,je);return lr(E.createElement(Bn.Z,{component:"Radio",disabled:be.disabled},E.createElement("label",{className:wt,style:Object.assign(Object.assign({},Ut==null?void 0:Ut.style),Se),onMouseEnter:en.onMouseEnter,onMouseLeave:en.onMouseLeave},E.createElement(de.Z,Object.assign({},be,{className:Z()(be.className,!Fn&&Lt.A),type:"radio",prefixCls:Tn,ref:ft})),W!==void 0?E.createElement("span",null,W):null)))};var zn=E.forwardRef(Xn);const dr=E.forwardRef((en,ln)=>{const{getPrefixCls:Cn,direction:Mt}=E.useContext(F.E_),[Et,pe]=(0,V.Z)(en.defaultValue,{value:en.value}),Ae=ut=>{const _t=Et,$t=ut.target.value;"value"in en||pe($t);const{onChange:Vt}=en;Vt&&$t!==_t&&Vt(ut)},{prefixCls:Pe,className:Ut,rootClassName:jt,options:ft,buttonStyle:on="outline",disabled:hn,children:lt,size:Ct,style:sn,id:W,onMouseEnter:Se,onMouseLeave:Ht,onFocus:zt,onBlur:Fn}=en,Tn=Cn("radio",Pe),lr=`${Tn}-group`,[je,be]=It(Tn);let it=lt;ft&&ft.length>0&&(it=ft.map(ut=>typeof ut=="string"||typeof ut=="number"?E.createElement(zn,{key:ut.toString(),prefixCls:Tn,disabled:hn,value:ut,checked:Et===ut},ut):E.createElement(zn,{key:`radio-group-value-options-${ut.value}`,prefixCls:Tn,disabled:ut.disabled||hn,value:ut.value,checked:Et===ut.value,title:ut.title,style:ut.style},ut.label)));const wt=(0,C.Z)(Ct),ot=Z()(lr,`${lr}-${on}`,{[`${lr}-${wt}`]:wt,[`${lr}-rtl`]:Mt==="rtl"},Ut,jt,be);return je(E.createElement("div",Object.assign({},(0,N.Z)(en,{aria:!0,data:!0}),{className:ot,style:sn,onMouseEnter:Se,onMouseLeave:Ht,onFocus:zt,onBlur:Fn,id:W,ref:ln}),E.createElement(H,{value:{onChange:Ae,value:Et,disabled:en.disabled,name:en.name,optionType:en.optionType}},it)))});var vn=E.memo(dr),_r=function(en,ln){var Cn={};for(var Mt in en)Object.prototype.hasOwnProperty.call(en,Mt)&&ln.indexOf(Mt)<0&&(Cn[Mt]=en[Mt]);if(en!=null&&typeof Object.getOwnPropertySymbols=="function")for(var Et=0,Mt=Object.getOwnPropertySymbols(en);Et{const{getPrefixCls:Cn}=E.useContext(F.E_),{prefixCls:Mt}=en,Et=_r(en,["prefixCls"]),pe=Cn("radio",Mt);return E.createElement(j,{value:"button"},E.createElement(zn,Object.assign({prefixCls:pe},Et,{type:"radio",ref:ln})))};var Tt=E.forwardRef(Ge);const On=zn;On.Button=Tt,On.Group=vn,On.__ANT_RADIO=!0;var Vr=On},80574:function(Be,Me,b){"use strict";b.d(Me,{Ae:function(){return Ee},CF:function(){return zt},vC:function(){return sn},x1:function(){return F}});function m(je,be,it,wt,ot,ut){const _t=je,$t=be,Vt=it-_t,Qt=wt-$t;let cn=ot-_t,Yn=ut-$t,qn=cn*Vt+Yn*Qt,Sr=0;qn<=0?Sr=0:(cn=Vt-cn,Yn=Qt-Yn,qn=cn*Vt+Yn*Qt,qn<=0?Sr=0:Sr=qn*qn/(Vt*Vt+Qt*Qt));const Jr=cn*cn+Yn*Yn-Sr;return Jr<0?0:Jr}function Z(je,be,it,wt){return(je-it)*(je-it)+(be-wt)*(be-wt)}function V(je,be,it,wt,ot){return Z(je,be,it,wt)it;if(je===0)return Math.round;const be=Math.pow(10,je);return it=>Math.round(it*be)/be}function E(je){const be=Math.min(je.x1,je.x2),it=Math.max(je.x1,je.x2),wt=Math.min(je.y1,je.y2),ot=Math.max(je.y1,je.y2);return{x:be,y:wt,x2:it,y2:ot,width:it-be,height:ot-wt}}class F{constructor(be,it,wt,ot){this.x1=be,this.y1=it,this.x2=wt,this.y2=ot}equals(be){return this.x1===be.x1&&this.y1===be.y1&&this.x2===be.x2&&this.y2===be.y2}draw(be){be.moveTo(this.x1,this.y1),be.lineTo(this.x2,this.y2)}toString(){return`Line(from=(${this.x1},${this.y1}),to=(${this.x2},${this.y2}))`}static from(be){return new F(be.x1,be.y1,be.x2,be.y2)}cuts(be,it){if(this.y1===this.y2||itthis.y1&&it>=this.y2||be>this.x1&&be>=this.x2)return!1;if(bethis.x2+wt)return!1}else if(bethis.x1+wt)return!1;if(this.y1this.y2+wt)return!1}else if(itthis.y1+wt)return!1;return!0}}var C;(function(je){je[je.POINT=1]="POINT",je[je.PARALLEL=2]="PARALLEL",je[je.COINCIDENT=3]="COINCIDENT",je[je.NONE=4]="NONE"})(C||(C={}));class P{constructor(be,it=0,wt=0){this.state=be,this.x=it,this.y=wt}}function H(je,be){const it=(be.x2-be.x1)*(je.y1-be.y1)-(be.y2-be.y1)*(je.x1-be.x1),wt=(je.x2-je.x1)*(je.y1-be.y1)-(je.y2-je.y1)*(je.x1-be.x1),ot=(be.y2-be.y1)*(je.x2-je.x1)-(be.x2-be.x1)*(je.y2-je.y1);if(ot){const ut=it/ot,_t=wt/ot;return 0<=ut&&ut<=1&&0<=_t&&_t<=1?new P(C.POINT,je.x1+ut*(je.x2-je.x1),je.y1+ut*(je.y2-je.y1)):new P(C.NONE)}return new P(it===0||wt===0?C.COINCIDENT:C.PARALLEL)}function D(je,be){const it=(be.x2-be.x1)*(je.y1-be.y1)-(be.y2-be.y1)*(je.x1-be.x1),wt=(je.x2-je.x1)*(je.y1-be.y1)-(je.y2-je.y1)*(je.x1-be.x1),ot=(be.y2-be.y1)*(je.x2-je.x1)-(be.x2-be.x1)*(je.y2-je.y1);if(ot){const ut=it/ot,_t=wt/ot;if(0<=ut&&ut<=1&&0<=_t&&_t<=1)return ut}return Number.POSITIVE_INFINITY}function X(je,be){function it(ot,ut,_t,$t){let Vt=D(be,new F(ot,ut,_t,$t));return Vt=Math.abs(Vt-.5),Vt>=0&&Vt<=1?1:0}let wt=it(je.x,je.y,je.x2,je.y);return wt+=it(je.x,je.y,je.x,je.y2),wt>1||(wt+=it(je.x,je.y2,je.x2,je.y2),wt>1)?!0:(wt+=it(je.x2,je.y,je.x2,je.y2),wt>0)}var j;(function(je){je[je.LEFT=0]="LEFT",je[je.TOP=1]="TOP",je[je.RIGHT=2]="RIGHT",je[je.BOTTOM=3]="BOTTOM"})(j||(j={}));function de(je,be,it){const wt=new Set;return je.width<=0?(wt.add(j.LEFT),wt.add(j.RIGHT)):beje.x+je.width&&wt.add(j.RIGHT),je.height<=0?(wt.add(j.TOP),wt.add(j.BOTTOM)):itje.y+je.height&&wt.add(j.BOTTOM),wt}function he(je,be){let it=be.x1,wt=be.y1;const ot=be.x2,ut=be.y2,_t=Array.from(de(je,ot,ut));if(_t.length===0)return!0;let $t=de(je,it,wt);for(;$t.size!==0;){for(const Vt of _t)if($t.has(Vt))return!1;if($t.has(j.RIGHT)||$t.has(j.LEFT)){let Vt=je.x;$t.has(j.RIGHT)&&(Vt+=je.width),wt=wt+(Vt-it)*(ut-wt)/(ot-it),it=Vt}else{let Vt=je.y;$t.has(j.BOTTOM)&&(Vt+=je.height),it=it+(Vt-wt)*(ot-it)/(ut-wt),wt=Vt}$t=de(je,it,wt)}return!0}function we(je,be){let it=Number.POSITIVE_INFINITY,wt=0;function ot(ut,_t,$t,Vt){let Qt=D(be,new F(ut,_t,$t,Vt));Qt=Math.abs(Qt-.5),Qt>=0&&Qt<=1&&(wt++,Qt1||(ot(je.x,je.y2,je.x2,je.y2),wt>1)?it:(ot(je.x2,je.y,je.x2,je.y2),wt===0?-1:it)}function ve(je,be){let it=0;const wt=H(je,new F(be.x,be.y,be.x2,be.y));it+=wt.state===C.POINT?1:0;const ot=H(je,new F(be.x,be.y,be.x,be.y2));it+=ot.state===C.POINT?1:0;const ut=H(je,new F(be.x,be.y2,be.x2,be.y2));it+=ut.state===C.POINT?1:0;const _t=H(je,new F(be.x2,be.y,be.x2,be.y2));return it+=_t.state===C.POINT?1:0,{top:wt,left:ot,bottom:ut,right:_t,count:it}}class Ee{constructor(be,it,wt,ot){this.x=be,this.y=it,this.width=wt,this.height=ot}get x2(){return this.x+this.width}get y2(){return this.y+this.height}get cx(){return this.x+this.width/2}get cy(){return this.y+this.height/2}get radius(){return Math.max(this.width,this.height)/2}static from(be){return new Ee(be.x,be.y,be.width,be.height)}equals(be){return this.x===be.x&&this.y===be.y&&this.width===be.width&&this.height===be.height}clone(){return new Ee(this.x,this.y,this.width,this.height)}add(be){const it=Math.min(this.x,be.x),wt=Math.min(this.y,be.y),ot=Math.max(this.x2,be.x+be.width),ut=Math.max(this.y2,be.y+be.height);this.x=it,this.y=wt,this.width=ot-it,this.height=ut-wt}addPoint(be){const it=Math.min(this.x,be.x),wt=Math.min(this.y,be.y),ot=Math.max(this.x2,be.x),ut=Math.max(this.y2,be.y);this.x=it,this.y=wt,this.width=ot-it,this.height=ut-wt}toString(){return`Rectangle[x=${this.x}, y=${this.y}, w=${this.width}, h=${this.height}]`}draw(be){be.rect(this.x,this.y,this.width,this.height)}containsPt(be,it){return be>=this.x&&be<=this.x2&&it>=this.y&&it<=this.y2}get area(){return this.width*this.height}intersects(be){return this.area<=0||be.width<=0||be.height<=0?!1:be.x+be.width>this.x&&be.y+be.height>this.y&&be.x=this.width?this.width-1:be}boundY(be){return be=this.height?this.height-1:be}scaleX(be){return this.boundX(Math.floor((be-this.pixelX)/this.pixelGroup))}scaleY(be){return this.boundY(Math.floor((be-this.pixelY)/this.pixelGroup))}scale(be){const it=this.scaleX(be.x),wt=this.scaleY(be.y),ot=this.boundX(Math.ceil((be.x+be.width-this.pixelX)/this.pixelGroup)),ut=this.boundY(Math.ceil((be.y+be.height-this.pixelY)/this.pixelGroup)),_t=ot-it,$t=ut-wt;return new Ee(it,wt,_t,$t)}invertScaleX(be){return Math.round(be*this.pixelGroup+this.pixelX)}invertScaleY(be){return Math.round(be*this.pixelGroup+this.pixelY)}addPadding(be,it){const wt=Math.ceil(it/this.pixelGroup),ot=this.boundX(be.x-wt),ut=this.boundY(be.y-wt),_t=this.boundX(be.x2+wt),$t=this.boundY(be.y2+wt),Vt=_t-ot,Qt=$t-ut;return new Ee(ot,ut,Vt,Qt)}get(be,it){return be<0||it<0||be>=this.width||it>=this.height?Number.NaN:this.area[be+it*this.width]}inc(be,it,wt){be<0||it<0||be>=this.width||it>=this.height||(this.area[be+it*this.width]+=wt)}set(be,it,wt){be<0||it<0||be>=this.width||it>=this.height||(this.area[be+it*this.width]=wt)}incArea(be,it){if(be.width<=0||be.height<=0||it===0)return;const wt=this.width,ot=be.width,ut=Math.max(0,be.i),_t=Math.max(0,be.j),$t=Math.min(be.i+be.width,wt),Vt=Math.min(be.j+be.height,this.height);if(!(Vt<=0||$t<=0||ut>=wt||Vt>=this.height))for(let Qt=_t;QtMath.min(_t,$t),Number.POSITIVE_INFINITY),ot=this.area.reduce((_t,$t)=>Math.max(_t,$t),Number.NEGATIVE_INFINITY),ut=_t=>(_t-wt)/(ot-wt);be.scale(this.pixelGroup,this.pixelGroup);for(let _t=0;_tit?"black":"white",be.fillRect(ot,ut,1,1)}be.restore()}}}function vt(je,be){const it=wt=>({x:wt.x-be,y:wt.y-be,width:wt.width+2*be,height:wt.height+2*be});return Array.isArray(je)?je.map(it):it(je)}function at(je,be,it){return kt(Object.assign(E(je),{distSquare:(wt,ot)=>m(je.x1,je.y1,je.x2,je.y2,wt,ot)}),be,it)}function kt(je,be,it){const wt=vt(je,it),ot=be.scale(wt),ut=be.createSub(ot,wt);return It(ut,be,it,(_t,$t)=>je.distSquare(_t,$t)),ut}function It(je,be,it,wt){const ot=it*it;for(let ut=0;ut{const $t=ot.slice(0,_t);return dr(be,ut,$t,it,wt)}).flat()}function dr(je,be,it,wt,ot){const ut=In(be.cx,be.cy),_t=Ge(ut,it,je);if(_t==null)return[];const $t=new F(ut.x,ut.y,_t.cx,_t.cy),Vt=vn($t,je,wt,ot);return _r(Vt,je)}function vn(je,be,it,wt){const ot=[],ut=[];ut.push(je);let _t=!0;for(let $t=0;$t0;){const Vt=ut.pop(),Qt=en(be,Vt),cn=Qt?ve(Vt,Qt):null;if(!Qt||!cn||cn.count!==2){_t||ot.push(Vt);continue}let Yn=wt,qn=Cn(Qt,Yn,cn,!0),Sr=Vr(qn,ut)||Vr(qn,ot),Jr=On(qn,be);for(;!Sr&&Jr&&Yn>=1;)Yn/=1.5,qn=Cn(Qt,Yn,cn,!0),Sr=Vr(qn,ut)||Vr(qn,ot),Jr=On(qn,be);if(qn&&!Sr&&!Jr&&(ut.push(new F(Vt.x1,Vt.y1,qn.x,qn.y)),ut.push(new F(qn.x,qn.y,Vt.x2,Vt.y2)),_t=!0),_t)continue;Yn=wt,qn=Cn(Qt,Yn,cn,!1);let vr=Vr(qn,ut)||Vr(qn,ot);for(Jr=On(qn,be);!vr&&Jr&&Yn>=1;)Yn/=1.5,qn=Cn(Qt,Yn,cn,!1),vr=Vr(qn,ut)||Vr(qn,ot),Jr=On(qn,be);qn&&!vr&&(ut.push(new F(Vt.x1,Vt.y1,qn.x,qn.y)),ut.push(new F(qn.x,qn.y,Vt.x2,Vt.y2)),_t=!0),_t||ot.push(Vt)}for(;ut.length>0;)ot.push(ut.pop());return ot}function _r(je,be){const it=[];for(;je.length>0;){const wt=je.pop();if(je.length===0){it.push(wt);break}const ot=je.pop(),ut=new F(wt.x1,wt.y1,ot.x2,ot.y2);en(be,ut)?(it.push(wt),je.push(ot)):je.push(ut)}return it}function Ge(je,be,it){let wt=Number.POSITIVE_INFINITY;return be.reduce((ot,ut)=>{const _t=Z(je.x,je.y,ut.cx,ut.cy);if(_t>wt)return ot;const $t=new F(je.x,je.y,ut.cx,ut.cy),Vt=ln(it,$t);return _t*(Vt+1)*(Vt+1){be+=wt.cx,it+=wt.cy}),be/=je.length,it/=je.length,je.map(wt=>{const ot=be-wt.cx,ut=it-wt.cy,_t=ot*ot+ut*ut;return[wt,_t]}).sort((wt,ot)=>wt[1]-ot[1]).map(wt=>wt[0])}function On(je,be){return be.some(it=>it.containsPt(je.x,je.y))}function Vr(je,be){return be.some(it=>!!(V(it.x1,it.y1,je.x,je.y,.001)||V(it.x2,it.y2,je.x,je.y,.001)))}function en(je,be){let it=Number.POSITIVE_INFINITY,wt=null;for(const ot of je){if(!he(ot,be))continue;const ut=we(ot,be);ut>=0&&uthe(wt,be)&&X(wt,be)?it+1:it,0)}function Cn(je,be,it,wt){const ot=it.top,ut=it.left,_t=it.bottom,$t=it.right;if(wt){if(ut.state===C.POINT){if(ot.state===C.POINT)return In(je.x-be,je.y-be);if(_t.state===C.POINT)return In(je.x-be,je.y2+be);const qn=je.width*je.height;return je.width*((ut.y-je.y+($t.y-je.y))*.5)$t.y?In(je.x-be,je.y-be):In(je.x2+be,je.y-be):ut.y<$t.y?In(je.x-be,je.y2+be):In(je.x2+be,je.y2+be)}if($t.state===C.POINT){if(ot.state===C.POINT)return In(je.x2+be,je.y-be);if(_t.state===C.POINT)return In(je.x2+be,je.y2+be)}const cn=je.height*je.width;return je.height*((ot.x-je.x+($t.x-je.x))*.5)_t.x?In(je.x-be,je.y-be):In(je.x-be,je.y2+be):ot.x<_t.x?In(je.x2+be,je.y-be):In(je.x2+be,je.y2+be)}if(ut.state===C.POINT){if(ot.state===C.POINT)return In(je.x2+be,je.y2+be);if(_t.state===C.POINT)return In(je.x2+be,je.y-be);const cn=je.height*je.width;return je.width*((ut.y-je.y+($t.y-je.y))*.5)$t.y?In(je.x2+be,je.y2+be):In(je.x-be,je.y2+be):ut.y<$t.y?In(je.x2+be,je.y-be):In(je.x-be,je.y-be)}if($t.state===C.POINT){if(ot.state===C.POINT)return In(je.x-be,je.y2+be);if(_t.state===C.POINT)return In(je.x-be,je.y-be)}const Vt=je.height*je.width;return je.height*((ot.x-je.x+($t.x-je.x))*.5)_t.x?In(je.x2+be,je.y2+be):In(je.x2+be,je.y-be):ot.x<_t.x?In(je.x-be,je.y2+be):In(je.x-be,je.y-be)}function Mt(je,be,it,wt){if(!(je.closed?itwt)return!1}return!0}function Et(je=0){return be=>{if(je<0||be.length<3)return be;const it=[];let wt=0;const ot=je*je;for(;wt{if(_t.length<3)return _t;const $t=[],Vt=_t.closed,Qt=_t.length+3-1+(Vt?0:2);$t.push(ut(_t,2-(Vt?0:2),0));for(let cn=2-(Vt?0:2);cn{let it=je,wt=be.length;if(it>1)for(wt=Math.floor(be.length/it);wt<3&&it>1;)it-=1,wt=Math.floor(be.length/it);const ot=[];for(let ut=0,_t=0;_t=wt?this.closed?this.get(be-wt):this.points[wt-1]:this.points[it]}get length(){return this.points.length}toString(be=1/0){const it=this.points;if(it.length===0)return"";const wt=typeof be=="function"?be:N(be);let ot="M";for(const ut of it)ot+=`${wt(ut.x)},${wt(ut.y)} L`;return ot=ot.slice(0,-1),this.closed&&(ot+=" Z"),ot}draw(be){const it=this.points;if(it.length!==0){be.beginPath(),be.moveTo(it[0].x,it[0].y);for(const wt of it)be.lineTo(wt.x,wt.y);this.closed&&be.closePath()}}sample(be){return Pe(be)(this)}simplify(be){return Et(be)(this)}bSplines(be){return Ae(be)(this)}apply(be){return be(this)}containsElements(be){const it=$e(this.points);return it?be.every(wt=>it.containsPt(wt.cx,wt.cy)&&this.withinArea(wt.cx,wt.cy)):!1}withinArea(be,it){if(this.length===0)return!1;let wt=0;const ot=this.points[0],ut=new F(ot.x,ot.y,ot.x,ot.y);for(let _t=1;_tbe?cn+Yn:cn}function ut(Vt,Qt){let cn=ft;return cn=ot(Vt,Qt,cn,1),cn=ot(Vt+1,Qt,cn,2),cn=ot(Vt,Qt+1,cn,4),cn=ot(Vt+1,Qt+1,cn,8),Number.isNaN(cn)?-1:cn}let _t=on;function $t(Vt,Qt){let cn=Vt,Yn=Qt,qn=je.invertScaleX(cn),Sr=je.invertScaleY(Yn);for(let Jr=0;JrSe(wt.raw,be));return it<0?!1:(this.members.splice(it,1),this.dirty.add(Ht.MEMBERS),!0)}removeNonMember(be){const it=this.nonMembers.findIndex(wt=>Se(wt.raw,be));return it<0?!1:(this.nonMembers.splice(it,1),this.dirty.add(Ht.NON_MEMBERS),!0)}removeEdge(be){const it=this.edges.findIndex(wt=>wt.obj.equals(be));return it<0?!1:(this.edges.splice(it,1),this.dirty.add(Ht.NON_MEMBERS),!0)}pushNonMember(...be){if(be.length!==0){this.dirty.add(Ht.NON_MEMBERS);for(const it of be)this.nonMembers.push({raw:it,obj:W(it)?Fe.from(it):Ee.from(it),area:null})}}pushEdge(...be){if(be.length!==0){this.dirty.add(Ht.EDGES);for(const it of be)this.edges.push({raw:it,obj:F.from(it),area:null})}}update(){const be=this.dirty.has(Ht.MEMBERS),it=this.dirty.has(Ht.NON_MEMBERS);let wt=this.dirty.has(Ht.EDGES);this.dirty.clear();const ot=this.members.map(Qt=>Qt.obj);if(this.o.virtualEdges&&(be||it)){const Qt=this.nonMembers.map(qn=>qn.obj),cn=zn(ot,Qt,this.o.maxRoutingIterations,this.o.morphBuffer),Yn=new Map(this.virtualEdges.map(qn=>[qn.obj.toString(),qn.area]));this.virtualEdges=cn.map(qn=>{var Sr;return{raw:qn,obj:qn,area:(Sr=Yn.get(qn.toString()))!==null&&Sr!==void 0?Sr:null}}),wt=!0}let ut=!1;if(be||wt){const Qt=this.virtualEdges.concat(this.edges).map(Sr=>Sr.obj),cn=Tn(ot,Qt),Yn=Math.max(this.o.edgeR1,this.o.nodeR1)+this.o.morphBuffer,qn=Ee.from(vt(cn,Yn));qn.equals(this.activeRegion)||(ut=!0,this.activeRegion=qn)}if(ut){const Qt=Math.ceil(this.activeRegion.width/this.o.pixelGroup),cn=Math.ceil(this.activeRegion.height/this.o.pixelGroup);this.activeRegion.x!==this.potentialArea.pixelX||this.activeRegion.y!==this.potentialArea.pixelY?(this.potentialArea=ct.fromPixelRegion(this.activeRegion,this.o.pixelGroup),this.members.forEach(Yn=>Yn.area=null),this.nonMembers.forEach(Yn=>Yn.area=null),this.edges.forEach(Yn=>Yn.area=null),this.virtualEdges.forEach(Yn=>Yn.area=null)):(Qt!==this.potentialArea.width||cn!==this.potentialArea.height)&&(this.potentialArea=ct.fromPixelRegion(this.activeRegion,this.o.pixelGroup))}const _t=new Map,$t=Qt=>{if(Qt.area){const cn=`${Qt.obj.width}x${Qt.obj.height}x${Qt.obj instanceof Ee?"R":"C"}`;_t.set(cn,Qt.area)}},Vt=Qt=>{if(Qt.area)return;const cn=`${Qt.obj.width}x${Qt.obj.height}x${Qt.obj instanceof Ee?"R":"C"}`;if(_t.has(cn)){const qn=_t.get(cn);Qt.area=this.potentialArea.copy(qn,{x:Qt.obj.x-this.o.nodeR1,y:Qt.obj.y-this.o.nodeR1});return}const Yn=Qt.obj instanceof Ee?Bn(Qt.obj,this.potentialArea,this.o.nodeR1):kt(Qt.obj,this.potentialArea,this.o.nodeR1);Qt.area=Yn,_t.set(cn,Yn)};this.members.forEach($t),this.nonMembers.forEach($t),this.members.forEach(Vt),this.nonMembers.forEach(Qt=>{this.activeRegion.intersects(Qt.obj)?Vt(Qt):Qt.area=null}),this.edges.forEach(Qt=>{Qt.area||(Qt.area=at(Qt.obj,this.potentialArea,this.o.edgeR1))}),this.virtualEdges.forEach(Qt=>{Qt.area||(Qt.area=at(Qt.obj,this.potentialArea,this.o.edgeR1))})}drawMembers(be){for(const it of this.members)it.obj.draw(be)}drawNonMembers(be){for(const it of this.nonMembers)it.obj.draw(be)}drawEdges(be){for(const it of this.edges)it.obj.draw(be)}drawPotentialArea(be,it=!0){this.potentialArea.draw(be,it)}compute(){if(this.members.length===0)return new Ut([]);this.dirty.size>0&&this.update();const{o:be,potentialArea:it}=this,wt=this.members.map($t=>$t.area),ot=this.virtualEdges.concat(this.edges).map($t=>$t.area),ut=this.nonMembers.filter($t=>$t.area!=null).map($t=>$t.area),_t=this.members.map($t=>$t.obj);return Fn(it,wt,ot,ut,$t=>$t.containsElements(_t),be)}}function Fn(je,be,it,wt,ot,ut={}){const _t=Object.assign({},sn,ut);let $t=_t.threshold,Vt=_t.memberInfluenceFactor,Qt=_t.edgeInfluenceFactor,cn=_t.nonMemberInfluenceFactor;const Yn=(_t.nodeR0-_t.nodeR1)*(_t.nodeR0-_t.nodeR1),qn=(_t.edgeR0-_t.edgeR1)*(_t.edgeR0-_t.edgeR1);for(let Sr=0;Sr<_t.maxMarchingIterations;Sr++){if(je.clear(),Vt!==0){const vr=Vt/Yn;for(const Ki of be)je.incArea(Ki,vr)}if(Qt!==0){const vr=Qt/qn;for(const Ki of it)je.incArea(Ki,vr)}if(cn!==0){const vr=cn/Yn;for(const Ki of wt)je.incArea(Ki,vr)}const Jr=Ct(je,$t);if(Jr&&ot(Jr))return Jr;if($t*=.95,Sr<=_t.maxMarchingIterations*.5)Vt*=1.2,Qt*=1.2;else if(cn!==0&&wt.length>0)cn*=.8;else break}return new Ut([])}function Tn(je,be){if(je.length===0)return new Ee(0,0,0,0);const it=Ee.from(je[0]);for(const wt of je)it.add(wt);for(const wt of be)it.add(E(wt));return it}function lr(je,be=[],it=[],wt={}){if(je.length===0)return new Ut([]);const ot=new zt(wt);return ot.pushMember(...je),ot.pushNonMember(...be),ot.pushEdge(...it),ot.compute()}},45411:function(Be){"use strict";Be.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},75196:function(Be,Me,b){var m=b(45411),Z=b(81683),V=Object.hasOwnProperty,N=Object.create(null);for(var E in m)V.call(m,E)&&(N[m[E]]=E);var F=Be.exports={to:{},get:{}};F.get=function(H){var D=H.substring(0,3).toLowerCase(),X,j;switch(D){case"hsl":X=F.get.hsl(H),j="hsl";break;case"hwb":X=F.get.hwb(H),j="hwb";break;default:X=F.get.rgb(H),j="rgb";break}return X?{model:j,value:X}:null},F.get.rgb=function(H){if(!H)return null;var D=/^#([a-f0-9]{3,4})$/i,X=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,j=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,de=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,he=/^(\w+)$/,we=[0,0,0,1],ve,Ee,$e;if(ve=H.match(X)){for($e=ve[2],ve=ve[1],Ee=0;Ee<3;Ee++){var Fe=Ee*2;we[Ee]=parseInt(ve.slice(Fe,Fe+2),16)}$e&&(we[3]=parseInt($e,16)/255)}else if(ve=H.match(D)){for(ve=ve[1],$e=ve[3],Ee=0;Ee<3;Ee++)we[Ee]=parseInt(ve[Ee]+ve[Ee],16);$e&&(we[3]=parseInt($e+$e,16)/255)}else if(ve=H.match(j)){for(Ee=0;Ee<3;Ee++)we[Ee]=parseInt(ve[Ee+1],0);ve[4]&&(ve[5]?we[3]=parseFloat(ve[4])*.01:we[3]=parseFloat(ve[4]))}else if(ve=H.match(de)){for(Ee=0;Ee<3;Ee++)we[Ee]=Math.round(parseFloat(ve[Ee+1])*2.55);ve[4]&&(ve[5]?we[3]=parseFloat(ve[4])*.01:we[3]=parseFloat(ve[4]))}else return(ve=H.match(he))?ve[1]==="transparent"?[0,0,0,0]:V.call(m,ve[1])?(we=m[ve[1]],we[3]=1,we):null:null;for(Ee=0;Ee<3;Ee++)we[Ee]=C(we[Ee],0,255);return we[3]=C(we[3],0,1),we},F.get.hsl=function(H){if(!H)return null;var D=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,X=H.match(D);if(X){var j=parseFloat(X[4]),de=(parseFloat(X[1])%360+360)%360,he=C(parseFloat(X[2]),0,100),we=C(parseFloat(X[3]),0,100),ve=C(isNaN(j)?1:j,0,1);return[de,he,we,ve]}return null},F.get.hwb=function(H){if(!H)return null;var D=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,X=H.match(D);if(X){var j=parseFloat(X[4]),de=(parseFloat(X[1])%360+360)%360,he=C(parseFloat(X[2]),0,100),we=C(parseFloat(X[3]),0,100),ve=C(isNaN(j)?1:j,0,1);return[de,he,we,ve]}return null},F.to.hex=function(){var H=Z(arguments);return"#"+P(H[0])+P(H[1])+P(H[2])+(H[3]<1?P(Math.round(H[3]*255)):"")},F.to.rgb=function(){var H=Z(arguments);return H.length<4||H[3]===1?"rgb("+Math.round(H[0])+", "+Math.round(H[1])+", "+Math.round(H[2])+")":"rgba("+Math.round(H[0])+", "+Math.round(H[1])+", "+Math.round(H[2])+", "+H[3]+")"},F.to.rgb.percent=function(){var H=Z(arguments),D=Math.round(H[0]/255*100),X=Math.round(H[1]/255*100),j=Math.round(H[2]/255*100);return H.length<4||H[3]===1?"rgb("+D+"%, "+X+"%, "+j+"%)":"rgba("+D+"%, "+X+"%, "+j+"%, "+H[3]+")"},F.to.hsl=function(){var H=Z(arguments);return H.length<4||H[3]===1?"hsl("+H[0]+", "+H[1]+"%, "+H[2]+"%)":"hsla("+H[0]+", "+H[1]+"%, "+H[2]+"%, "+H[3]+")"},F.to.hwb=function(){var H=Z(arguments),D="";return H.length>=4&&H[3]!==1&&(D=", "+H[3]),"hwb("+H[0]+", "+H[1]+"%, "+H[2]+"%"+D+")"},F.to.keyword=function(H){return N[H.slice(0,3)]};function C(H,D,X){return Math.min(Math.max(D,H),X)}function P(H){var D=Math.round(H).toString(16).toUpperCase();return D.length<2?"0"+D:D}},92546:function(Be,Me,b){Be.exports={graphlib:b(76626),layout:b(47194),debug:b(11303),util:{time:b(53063).time,notime:b(53063).notime},version:b(11897)}},81255:function(Be,Me,b){"use strict";var m=b(72361),Z=b(39240);Be.exports={run:V,undo:E};function V(F){var C=F.graph().acyclicer==="greedy"?Z(F,P(F)):N(F);m.forEach(C,function(H){var D=F.edge(H);F.removeEdge(H),D.forwardName=H.name,D.reversed=!0,F.setEdge(H.w,H.v,D,m.uniqueId("rev"))});function P(H){return function(D){return H.edge(D).weight}}}function N(F){var C=[],P={},H={};function D(X){m.has(H,X)||(H[X]=!0,P[X]=!0,m.forEach(F.outEdges(X),function(j){m.has(P,j.w)?C.push(j):D(j.w)}),delete P[X])}return m.forEach(F.nodes(),D),C}function E(F){m.forEach(F.edges(),function(C){var P=F.edge(C);if(P.reversed){F.removeEdge(C);var H=P.forwardName;delete P.reversed,delete P.forwardName,F.setEdge(C.w,C.v,P,H)}})}},60765:function(Be,Me,b){var m=b(72361),Z=b(53063);Be.exports=V;function V(E){function F(C){var P=E.children(C),H=E.node(C);if(P.length&&m.forEach(P,F),m.has(H,"minRank")){H.borderLeft=[],H.borderRight=[];for(var D=H.minRank,X=H.maxRank+1;D0;--Ee)if(ve=X[Ee].dequeue(),ve){de=de.concat(C(D,X,j,ve,!0));break}}}return de}function C(D,X,j,de,he){var we=he?[]:void 0;return m.forEach(D.inEdges(de.v),function(ve){var Ee=D.edge(ve),$e=D.node(ve.v);he&&we.push({v:ve.v,w:ve.w}),$e.out-=Ee,H(X,j,$e)}),m.forEach(D.outEdges(de.v),function(ve){var Ee=D.edge(ve),$e=ve.w,Fe=D.node($e);Fe.in-=Ee,H(X,j,Fe)}),D.removeNode(de.v),we}function P(D,X){var j=new Z,de=0,he=0;m.forEach(D.nodes(),function(Ee){j.setNode(Ee,{v:Ee,in:0,out:0})}),m.forEach(D.edges(),function(Ee){var $e=j.edge(Ee.v,Ee.w)||0,Fe=X(Ee),ct=$e+Fe;j.setEdge(Ee.v,Ee.w,ct),he=Math.max(he,j.node(Ee.v).out+=Fe),de=Math.max(de,j.node(Ee.w).in+=Fe)});var we=m.range(he+de+3).map(function(){return new V}),ve=de+1;return m.forEach(j.nodes(),function(Ee){H(we,ve,j.node(Ee))}),{graph:j,buckets:we,zeroIdx:ve}}function H(D,X,j){j.out?j.in?D[j.out-j.in+X].enqueue(j):D[D.length-1].enqueue(j):D[0].enqueue(j)}},47194:function(Be,Me,b){"use strict";var m=b(72361),Z=b(81255),V=b(27163),N=b(64505),E=b(53063).normalizeRanks,F=b(71970),C=b(53063).removeEmptyRanks,P=b(31733),H=b(60765),D=b(13257),X=b(62852),j=b(93021),de=b(53063),he=b(76626).Graph;Be.exports=we;function we(Mt,Et){var pe=Et&&Et.debugTiming?de.time:de.notime;pe("layout",function(){var Ae=pe(" buildLayoutGraph",function(){return Lt(Mt)});pe(" runLayout",function(){ve(Ae,pe)}),pe(" updateInputGraph",function(){Ee(Mt,Ae)})})}function ve(Mt,Et){Et(" makeSpaceForEdgeLabels",function(){Wn(Mt)}),Et(" removeSelfEdges",function(){On(Mt)}),Et(" acyclic",function(){Z.run(Mt)}),Et(" nestingGraph.run",function(){P.run(Mt)}),Et(" rank",function(){N(de.asNonCompoundGraph(Mt))}),Et(" injectEdgeLabelProxies",function(){Xn(Mt)}),Et(" removeEmptyRanks",function(){C(Mt)}),Et(" nestingGraph.cleanup",function(){P.cleanup(Mt)}),Et(" normalizeRanks",function(){E(Mt)}),Et(" assignRankMinMax",function(){In(Mt)}),Et(" removeEdgeLabelProxies",function(){zn(Mt)}),Et(" normalize.run",function(){V.run(Mt)}),Et(" parentDummyChains",function(){F(Mt)}),Et(" addBorderSegments",function(){H(Mt)}),Et(" order",function(){X(Mt)}),Et(" insertSelfEdges",function(){Vr(Mt)}),Et(" adjustCoordinateSystem",function(){D.adjust(Mt)}),Et(" position",function(){j(Mt)}),Et(" positionSelfEdges",function(){en(Mt)}),Et(" removeBorderNodes",function(){Tt(Mt)}),Et(" normalize.undo",function(){V.undo(Mt)}),Et(" fixupEdgeLabelCoords",function(){_r(Mt)}),Et(" undoCoordinateSystem",function(){D.undo(Mt)}),Et(" translateGraph",function(){dr(Mt)}),Et(" assignNodeIntersects",function(){vn(Mt)}),Et(" reversePoints",function(){Ge(Mt)}),Et(" acyclic.undo",function(){Z.undo(Mt)})}function Ee(Mt,Et){m.forEach(Mt.nodes(),function(pe){var Ae=Mt.node(pe),Pe=Et.node(pe);Ae&&(Ae.x=Pe.x,Ae.y=Pe.y,Et.children(pe).length&&(Ae.width=Pe.width,Ae.height=Pe.height))}),m.forEach(Mt.edges(),function(pe){var Ae=Mt.edge(pe),Pe=Et.edge(pe);Ae.points=Pe.points,m.has(Pe,"x")&&(Ae.x=Pe.x,Ae.y=Pe.y)}),Mt.graph().width=Et.graph().width,Mt.graph().height=Et.graph().height}var $e=["nodesep","edgesep","ranksep","marginx","marginy"],Fe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},ct=["acyclicer","ranker","rankdir","align"],vt=["width","height"],at={width:0,height:0},kt=["minlen","weight","width","height","labeloffset"],It={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Bn=["labelpos"];function Lt(Mt){var Et=new he({multigraph:!0,compound:!0}),pe=Cn(Mt.graph());return Et.setGraph(m.merge({},Fe,ln(pe,$e),m.pick(pe,ct))),m.forEach(Mt.nodes(),function(Ae){var Pe=Cn(Mt.node(Ae));Et.setNode(Ae,m.defaults(ln(Pe,vt),at)),Et.setParent(Ae,Mt.parent(Ae))}),m.forEach(Mt.edges(),function(Ae){var Pe=Cn(Mt.edge(Ae));Et.setEdge(Ae,m.merge({},It,ln(Pe,kt),m.pick(Pe,Bn)))}),Et}function Wn(Mt){var Et=Mt.graph();Et.ranksep/=2,m.forEach(Mt.edges(),function(pe){var Ae=Mt.edge(pe);Ae.minlen*=2,Ae.labelpos.toLowerCase()!=="c"&&(Et.rankdir==="TB"||Et.rankdir==="BT"?Ae.width+=Ae.labeloffset:Ae.height+=Ae.labeloffset)})}function Xn(Mt){m.forEach(Mt.edges(),function(Et){var pe=Mt.edge(Et);if(pe.width&&pe.height){var Ae=Mt.node(Et.v),Pe=Mt.node(Et.w),Ut={rank:(Pe.rank-Ae.rank)/2+Ae.rank,e:Et};de.addDummyNode(Mt,"edge-proxy",Ut,"_ep")}})}function In(Mt){var Et=0;m.forEach(Mt.nodes(),function(pe){var Ae=Mt.node(pe);Ae.borderTop&&(Ae.minRank=Mt.node(Ae.borderTop).rank,Ae.maxRank=Mt.node(Ae.borderBottom).rank,Et=m.max(Et,Ae.maxRank))}),Mt.graph().maxRank=Et}function zn(Mt){m.forEach(Mt.nodes(),function(Et){var pe=Mt.node(Et);pe.dummy==="edge-proxy"&&(Mt.edge(pe.e).labelRank=pe.rank,Mt.removeNode(Et))})}function dr(Mt){var Et=Number.POSITIVE_INFINITY,pe=0,Ae=Number.POSITIVE_INFINITY,Pe=0,Ut=Mt.graph(),jt=Ut.marginx||0,ft=Ut.marginy||0;function on(hn){var lt=hn.x,Ct=hn.y,sn=hn.width,W=hn.height;Et=Math.min(Et,lt-sn/2),pe=Math.max(pe,lt+sn/2),Ae=Math.min(Ae,Ct-W/2),Pe=Math.max(Pe,Ct+W/2)}m.forEach(Mt.nodes(),function(hn){on(Mt.node(hn))}),m.forEach(Mt.edges(),function(hn){var lt=Mt.edge(hn);m.has(lt,"x")&&on(lt)}),Et-=jt,Ae-=ft,m.forEach(Mt.nodes(),function(hn){var lt=Mt.node(hn);lt.x-=Et,lt.y-=Ae}),m.forEach(Mt.edges(),function(hn){var lt=Mt.edge(hn);m.forEach(lt.points,function(Ct){Ct.x-=Et,Ct.y-=Ae}),m.has(lt,"x")&&(lt.x-=Et),m.has(lt,"y")&&(lt.y-=Ae)}),Ut.width=pe-Et+jt,Ut.height=Pe-Ae+ft}function vn(Mt){m.forEach(Mt.edges(),function(Et){var pe=Mt.edge(Et),Ae=Mt.node(Et.v),Pe=Mt.node(Et.w),Ut,jt;pe.points?(Ut=pe.points[0],jt=pe.points[pe.points.length-1]):(pe.points=[],Ut=Pe,jt=Ae),pe.points.unshift(de.intersectRect(Ae,Ut)),pe.points.push(de.intersectRect(Pe,jt))})}function _r(Mt){m.forEach(Mt.edges(),function(Et){var pe=Mt.edge(Et);if(m.has(pe,"x"))switch((pe.labelpos==="l"||pe.labelpos==="r")&&(pe.width-=pe.labeloffset),pe.labelpos){case"l":pe.x-=pe.width/2+pe.labeloffset;break;case"r":pe.x+=pe.width/2+pe.labeloffset;break}})}function Ge(Mt){m.forEach(Mt.edges(),function(Et){var pe=Mt.edge(Et);pe.reversed&&pe.points.reverse()})}function Tt(Mt){m.forEach(Mt.nodes(),function(Et){if(Mt.children(Et).length){var pe=Mt.node(Et),Ae=Mt.node(pe.borderTop),Pe=Mt.node(pe.borderBottom),Ut=Mt.node(m.last(pe.borderLeft)),jt=Mt.node(m.last(pe.borderRight));pe.width=Math.abs(jt.x-Ut.x),pe.height=Math.abs(Pe.y-Ae.y),pe.x=Ut.x+pe.width/2,pe.y=Ae.y+pe.height/2}}),m.forEach(Mt.nodes(),function(Et){Mt.node(Et).dummy==="border"&&Mt.removeNode(Et)})}function On(Mt){m.forEach(Mt.edges(),function(Et){if(Et.v===Et.w){var pe=Mt.node(Et.v);pe.selfEdges||(pe.selfEdges=[]),pe.selfEdges.push({e:Et,label:Mt.edge(Et)}),Mt.removeEdge(Et)}})}function Vr(Mt){var Et=de.buildLayerMatrix(Mt);m.forEach(Et,function(pe){var Ae=0;m.forEach(pe,function(Pe,Ut){var jt=Mt.node(Pe);jt.order=Ut+Ae,m.forEach(jt.selfEdges,function(ft){de.addDummyNode(Mt,"selfedge",{width:ft.label.width,height:ft.label.height,rank:jt.rank,order:Ut+ ++Ae,e:ft.e,label:ft.label},"_se")}),delete jt.selfEdges})})}function en(Mt){m.forEach(Mt.nodes(),function(Et){var pe=Mt.node(Et);if(pe.dummy==="selfedge"){var Ae=Mt.node(pe.e.v),Pe=Ae.x+Ae.width/2,Ut=Ae.y,jt=pe.x-Pe,ft=Ae.height/2;Mt.setEdge(pe.e,pe.label),Mt.removeNode(Et),pe.label.points=[{x:Pe+2*jt/3,y:Ut-ft},{x:Pe+5*jt/6,y:Ut-ft},{x:Pe+jt,y:Ut},{x:Pe+5*jt/6,y:Ut+ft},{x:Pe+2*jt/3,y:Ut+ft}],pe.label.x=pe.x,pe.label.y=pe.y}})}function ln(Mt,Et){return m.mapValues(m.pick(Mt,Et),Number)}function Cn(Mt){var Et={};return m.forEach(Mt,function(pe,Ae){Et[Ae.toLowerCase()]=pe}),Et}},72361:function(Be,Me,b){var m;try{m={cloneDeep:b(20250),constant:b(13503),defaults:b(28548),each:b(76934),filter:b(64725),find:b(79785),flatten:b(40151),forEach:b(99204),forIn:b(23190),has:b(99946),isUndefined:b(16513),last:b(10611),map:b(9924),mapValues:b(70642),max:b(95987),merge:b(28440),min:b(73376),minBy:b(83296),now:b(5795),pick:b(89409),range:b(60859),reduce:b(16473),sortBy:b(351),uniqueId:b(95708),values:b(81229),zipObject:b(65441)}}catch(Z){}m||(m=window._),Be.exports=m},31733:function(Be,Me,b){var m=b(72361),Z=b(53063);Be.exports={run:V,cleanup:C};function V(P){var H=Z.addDummyNode(P,"root",{},"_root"),D=E(P),X=m.max(m.values(D))-1,j=2*X+1;P.graph().nestingRoot=H,m.forEach(P.edges(),function(he){P.edge(he).minlen*=j});var de=F(P)+1;m.forEach(P.children(),function(he){N(P,H,j,de,X,D,he)}),P.graph().nodeRankFactor=j}function N(P,H,D,X,j,de,he){var we=P.children(he);if(!we.length){he!==H&&P.setEdge(H,he,{weight:0,minlen:D});return}var ve=Z.addBorderNode(P,"_bt"),Ee=Z.addBorderNode(P,"_bb"),$e=P.node(he);P.setParent(ve,he),$e.borderTop=ve,P.setParent(Ee,he),$e.borderBottom=Ee,m.forEach(we,function(Fe){N(P,H,D,X,j,de,Fe);var ct=P.node(Fe),vt=ct.borderTop?ct.borderTop:Fe,at=ct.borderBottom?ct.borderBottom:Fe,kt=ct.borderTop?X:2*X,It=vt!==at?1:j-de[he]+1;P.setEdge(ve,vt,{weight:kt,minlen:It,nestingEdge:!0}),P.setEdge(at,Ee,{weight:kt,minlen:It,nestingEdge:!0})}),P.parent(he)||P.setEdge(H,ve,{weight:0,minlen:j+de[he]})}function E(P){var H={};function D(X,j){var de=P.children(X);de&&de.length&&m.forEach(de,function(he){D(he,j+1)}),H[X]=j}return m.forEach(P.children(),function(X){D(X,1)}),H}function F(P){return m.reduce(P.edges(),function(H,D){return H+P.edge(D).weight},0)}function C(P){var H=P.graph();P.removeNode(H.nestingRoot),delete H.nestingRoot,m.forEach(P.edges(),function(D){var X=P.edge(D);X.nestingEdge&&P.removeEdge(D)})}},27163:function(Be,Me,b){"use strict";var m=b(72361),Z=b(53063);Be.exports={run:V,undo:E};function V(F){F.graph().dummyChains=[],m.forEach(F.edges(),function(C){N(F,C)})}function N(F,C){var P=C.v,H=F.node(P).rank,D=C.w,X=F.node(D).rank,j=C.name,de=F.edge(C),he=de.labelRank;if(X!==H+1){F.removeEdge(C);var we,ve,Ee;for(Ee=0,++H;H0;)he%2&&(we+=X[he+1]),he=he-1>>1,X[he]+=de.weight;j+=de.weight*we})),j}},62852:function(Be,Me,b){"use strict";var m=b(72361),Z=b(18043),V=b(45456),N=b(86490),E=b(59105),F=b(52205),C=b(76626).Graph,P=b(53063);Be.exports=H;function H(de){var he=P.maxRank(de),we=D(de,m.range(1,he+1),"inEdges"),ve=D(de,m.range(he-1,-1,-1),"outEdges"),Ee=Z(de);j(de,Ee);for(var $e=Number.POSITIVE_INFINITY,Fe,ct=0,vt=0;vt<4;++ct,++vt){X(ct%2?we:ve,ct%4>=2),Ee=P.buildLayerMatrix(de);var at=V(de,Ee);at<$e&&(vt=0,Fe=m.cloneDeep(Ee),$e=at)}j(de,Fe)}function D(de,he,we){return m.map(he,function(ve){return E(de,ve,we)})}function X(de,he){var we=new C;m.forEach(de,function(ve){var Ee=ve.graph().root,$e=N(ve,Ee,we,he);m.forEach($e.vs,function(Fe,ct){ve.node(Fe).order=ct}),F(ve,we,$e.vs)})}function j(de,he){m.forEach(he,function(we){m.forEach(we,function(ve,Ee){de.node(ve).order=Ee})})}},18043:function(Be,Me,b){"use strict";var m=b(72361);Be.exports=Z;function Z(V){var N={},E=m.filter(V.nodes(),function(D){return!V.children(D).length}),F=m.max(m.map(E,function(D){return V.node(D).rank})),C=m.map(m.range(F+1),function(){return[]});function P(D){if(!m.has(N,D)){N[D]=!0;var X=V.node(D);C[X.rank].push(D),m.forEach(V.successors(D),P)}}var H=m.sortBy(E,function(D){return V.node(D).rank});return m.forEach(H,P),C}},45926:function(Be,Me,b){"use strict";var m=b(72361);Be.exports=Z;function Z(E,F){var C={};m.forEach(E,function(H,D){var X=C[H.v]={indegree:0,in:[],out:[],vs:[H.v],i:D};m.isUndefined(H.barycenter)||(X.barycenter=H.barycenter,X.weight=H.weight)}),m.forEach(F.edges(),function(H){var D=C[H.v],X=C[H.w];!m.isUndefined(D)&&!m.isUndefined(X)&&(X.indegree++,D.out.push(C[H.w]))});var P=m.filter(C,function(H){return!H.indegree});return V(P)}function V(E){var F=[];function C(D){return function(X){X.merged||(m.isUndefined(X.barycenter)||m.isUndefined(D.barycenter)||X.barycenter>=D.barycenter)&&N(D,X)}}function P(D){return function(X){X.in.push(D),--X.indegree===0&&E.push(X)}}for(;E.length;){var H=E.pop();F.push(H),m.forEach(H.in.reverse(),C(H)),m.forEach(H.out,P(H))}return m.map(m.filter(F,function(D){return!D.merged}),function(D){return m.pick(D,["vs","i","barycenter","weight"])})}function N(E,F){var C=0,P=0;E.weight&&(C+=E.barycenter*E.weight,P+=E.weight),F.weight&&(C+=F.barycenter*F.weight,P+=F.weight),E.vs=F.vs.concat(E.vs),E.barycenter=C/P,E.weight=P,E.i=Math.min(F.i,E.i),F.merged=!0}},86490:function(Be,Me,b){var m=b(72361),Z=b(99506),V=b(45926),N=b(1349);Be.exports=E;function E(P,H,D,X){var j=P.children(H),de=P.node(H),he=de?de.borderLeft:void 0,we=de?de.borderRight:void 0,ve={};he&&(j=m.filter(j,function(at){return at!==he&&at!==we}));var Ee=Z(P,j);m.forEach(Ee,function(at){if(P.children(at.v).length){var kt=E(P,at.v,D,X);ve[at.v]=kt,m.has(kt,"barycenter")&&C(at,kt)}});var $e=V(Ee,D);F($e,ve);var Fe=N($e,X);if(he&&(Fe.vs=m.flatten([he,Fe.vs,we],!0),P.predecessors(he).length)){var ct=P.node(P.predecessors(he)[0]),vt=P.node(P.predecessors(we)[0]);m.has(Fe,"barycenter")||(Fe.barycenter=0,Fe.weight=0),Fe.barycenter=(Fe.barycenter*Fe.weight+ct.order+vt.order)/(Fe.weight+2),Fe.weight+=2}return Fe}function F(P,H){m.forEach(P,function(D){D.vs=m.flatten(D.vs.map(function(X){return H[X]?H[X].vs:X}),!0)})}function C(P,H){m.isUndefined(P.barycenter)?(P.barycenter=H.barycenter,P.weight=H.weight):(P.barycenter=(P.barycenter*P.weight+H.barycenter*H.weight)/(P.weight+H.weight),P.weight+=H.weight)}},1349:function(Be,Me,b){var m=b(72361),Z=b(53063);Be.exports=V;function V(F,C){var P=Z.partition(F,function(ve){return m.has(ve,"barycenter")}),H=P.lhs,D=m.sortBy(P.rhs,function(ve){return-ve.i}),X=[],j=0,de=0,he=0;H.sort(E(!!C)),he=N(X,D,he),m.forEach(H,function(ve){he+=ve.vs.length,X.push(ve.vs),j+=ve.barycenter*ve.weight,de+=ve.weight,he=N(X,D,he)});var we={vs:m.flatten(X,!0)};return de&&(we.barycenter=j/de,we.weight=de),we}function N(F,C,P){for(var H;C.length&&(H=m.last(C)).i<=P;)C.pop(),F.push(H.vs),P++;return P}function E(F){return function(C,P){return C.barycenterP.barycenter?1:F?P.i-C.i:C.i-P.i}}},71970:function(Be,Me,b){var m=b(72361);Be.exports=Z;function Z(E){var F=N(E);m.forEach(E.graph().dummyChains,function(C){for(var P=E.node(C),H=P.edgeObj,D=V(E,F,H.v,H.w),X=D.path,j=D.lca,de=0,he=X[de],we=!0;C!==H.w;){if(P=E.node(C),we){for(;(he=X[de])!==j&&E.node(he).maxRankX||j>F[de].lim));for(he=de,de=P;(de=E.parent(de))!==he;)D.push(de);return{path:H.concat(D.reverse()),lca:he}}function N(E){var F={},C=0;function P(H){var D=C;m.forEach(E.children(H),P),F[H]={low:D,lim:C++}}return m.forEach(E.children(),P),F}},92080:function(Be,Me,b){"use strict";var m=b(72361),Z=b(76626).Graph,V=b(53063);Be.exports={positionX:we,findType1Conflicts:N,findType2Conflicts:E,addConflict:C,hasConflict:P,verticalAlignment:H,horizontalCompaction:D,alignCoordinates:de,findSmallestWidthAlignment:j,balance:he};function N($e,Fe){var ct={};function vt(at,kt){var It=0,Bn=0,Lt=at.length,Wn=m.last(kt);return m.forEach(kt,function(Xn,In){var zn=F($e,Xn),dr=zn?$e.node(zn).order:Lt;(zn||Xn===Wn)&&(m.forEach(kt.slice(Bn,In+1),function(vn){m.forEach($e.predecessors(vn),function(_r){var Ge=$e.node(_r),Tt=Ge.order;(TtWn)&&C(ct,zn,Xn)})})}function at(kt,It){var Bn=-1,Lt,Wn=0;return m.forEach(It,function(Xn,In){if($e.node(Xn).dummy==="border"){var zn=$e.predecessors(Xn);zn.length&&(Lt=$e.node(zn[0]).order,vt(It,Wn,In,Bn,Lt),Wn=In,Bn=Lt)}vt(It,Wn,It.length,Lt,kt.length)}),It}return m.reduce(Fe,at),ct}function F($e,Fe){if($e.node(Fe).dummy)return m.find($e.predecessors(Fe),function(ct){return $e.node(ct).dummy})}function C($e,Fe,ct){if(Fe>ct){var vt=Fe;Fe=ct,ct=vt}var at=$e[Fe];at||($e[Fe]=at={}),at[ct]=!0}function P($e,Fe,ct){if(Fe>ct){var vt=Fe;Fe=ct,ct=vt}return m.has($e[Fe],ct)}function H($e,Fe,ct,vt){var at={},kt={},It={};return m.forEach(Fe,function(Bn){m.forEach(Bn,function(Lt,Wn){at[Lt]=Lt,kt[Lt]=Lt,It[Lt]=Wn})}),m.forEach(Fe,function(Bn){var Lt=-1;m.forEach(Bn,function(Wn){var Xn=vt(Wn);if(Xn.length){Xn=m.sortBy(Xn,function(_r){return It[_r]});for(var In=(Xn.length-1)/2,zn=Math.floor(In),dr=Math.ceil(In);zn<=dr;++zn){var vn=Xn[zn];kt[Wn]===Wn&&LtLt.lim&&(Wn=Lt,Xn=!0);var In=m.filter(vt.edges(),function(zn){return Xn===Fe(ct,ct.node(zn.v),Wn)&&Xn!==Fe(ct,ct.node(zn.w),Wn)});return m.minBy(In,function(zn){return V(vt,zn)})}function ve(ct,vt,at,kt){var It=at.v,Bn=at.w;ct.removeEdge(It,Bn),ct.setEdge(kt.v,kt.w,{}),j(ct),H(ct,vt),Ee(ct,vt)}function Ee(ct,vt){var at=m.find(ct.nodes(),function(It){return!vt.node(It).parent}),kt=E(ct,at);kt=kt.slice(1),m.forEach(kt,function(It){var Bn=ct.node(It).parent,Lt=vt.edge(It,Bn),Wn=!1;Lt||(Lt=vt.edge(Bn,It),Wn=!0),vt.node(It).rank=vt.node(Bn).rank+(Wn?Lt.minlen:-Lt.minlen)})}function $e(ct,vt,at){return ct.hasEdge(vt,at)}function Fe(ct,vt,at){return at.low<=vt.lim&&vt.lim<=at.lim}},2416:function(Be,Me,b){"use strict";var m=b(72361);Be.exports={longestPath:Z,slack:V};function Z(N){var E={};function F(C){var P=N.node(C);if(m.has(E,C))return P.rank;E[C]=!0;var H=m.min(m.map(N.outEdges(C),function(D){return F(D.w)-N.edge(D).minlen}));return(H===Number.POSITIVE_INFINITY||H===void 0||H===null)&&(H=0),P.rank=H}m.forEach(N.sources(),F)}function V(N,E){return N.node(E.w).rank-N.node(E.v).rank-N.edge(E).minlen}},53063:function(Be,Me,b){"use strict";var m=b(72361),Z=b(76626).Graph;Be.exports={addDummyNode:V,simplify:N,asNonCompoundGraph:E,successorWeights:F,predecessorWeights:C,intersectRect:P,buildLayerMatrix:H,normalizeRanks:D,removeEmptyRanks:X,addBorderNode:j,maxRank:de,partition:he,time:we,notime:ve};function V(Ee,$e,Fe,ct){var vt;do vt=m.uniqueId(ct);while(Ee.hasNode(vt));return Fe.dummy=$e,Ee.setNode(vt,Fe),vt}function N(Ee){var $e=new Z().setGraph(Ee.graph());return m.forEach(Ee.nodes(),function(Fe){$e.setNode(Fe,Ee.node(Fe))}),m.forEach(Ee.edges(),function(Fe){var ct=$e.edge(Fe.v,Fe.w)||{weight:0,minlen:1},vt=Ee.edge(Fe);$e.setEdge(Fe.v,Fe.w,{weight:ct.weight+vt.weight,minlen:Math.max(ct.minlen,vt.minlen)})}),$e}function E(Ee){var $e=new Z({multigraph:Ee.isMultigraph()}).setGraph(Ee.graph());return m.forEach(Ee.nodes(),function(Fe){Ee.children(Fe).length||$e.setNode(Fe,Ee.node(Fe))}),m.forEach(Ee.edges(),function(Fe){$e.setEdge(Fe,Ee.edge(Fe))}),$e}function F(Ee){var $e=m.map(Ee.nodes(),function(Fe){var ct={};return m.forEach(Ee.outEdges(Fe),function(vt){ct[vt.w]=(ct[vt.w]||0)+Ee.edge(vt).weight}),ct});return m.zipObject(Ee.nodes(),$e)}function C(Ee){var $e=m.map(Ee.nodes(),function(Fe){var ct={};return m.forEach(Ee.inEdges(Fe),function(vt){ct[vt.v]=(ct[vt.v]||0)+Ee.edge(vt).weight}),ct});return m.zipObject(Ee.nodes(),$e)}function P(Ee,$e){var Fe=Ee.x,ct=Ee.y,vt=$e.x-Fe,at=$e.y-ct,kt=Ee.width/2,It=Ee.height/2;if(!vt&&!at)throw new Error("Not possible to find intersection inside of the rectangle");var Bn,Lt;return Math.abs(at)*kt>Math.abs(vt)*It?(at<0&&(It=-It),Bn=It*vt/at,Lt=It):(vt<0&&(kt=-kt),Bn=kt,Lt=kt*at/vt),{x:Fe+Bn,y:ct+Lt}}function H(Ee){var $e=m.map(m.range(de(Ee)+1),function(){return[]});return m.forEach(Ee.nodes(),function(Fe){var ct=Ee.node(Fe),vt=ct.rank;m.isUndefined(vt)||($e[vt][ct.order]=Fe)}),$e}function D(Ee){var $e=m.min(m.map(Ee.nodes(),function(Fe){return Ee.node(Fe).rank}));m.forEach(Ee.nodes(),function(Fe){var ct=Ee.node(Fe);m.has(ct,"rank")&&(ct.rank-=$e)})}function X(Ee){var $e=m.min(m.map(Ee.nodes(),function(at){return Ee.node(at).rank})),Fe=[];m.forEach(Ee.nodes(),function(at){var kt=Ee.node(at).rank-$e;Fe[kt]||(Fe[kt]=[]),Fe[kt].push(at)});var ct=0,vt=Ee.graph().nodeRankFactor;m.forEach(Fe,function(at,kt){m.isUndefined(at)&&kt%vt!==0?--ct:ct&&m.forEach(at,function(It){Ee.node(It).rank+=ct})})}function j(Ee,$e,Fe,ct){var vt={width:0,height:0};return arguments.length>=4&&(vt.rank=Fe,vt.order=ct),V(Ee,"border",vt,$e)}function de(Ee){return m.max(m.map(Ee.nodes(),function($e){var Fe=Ee.node($e).rank;if(!m.isUndefined(Fe))return Fe}))}function he(Ee,$e){var Fe={lhs:[],rhs:[]};return m.forEach(Ee,function(ct){$e(ct)?Fe.lhs.push(ct):Fe.rhs.push(ct)}),Fe}function we(Ee,$e){var Fe=m.now();try{return $e()}finally{console.log(Ee+" time: "+(m.now()-Fe)+"ms")}}function ve(Ee,$e){return $e()}},11897:function(Be){Be.exports="0.8.5"},37271:function(Be){"use strict";var Me=Object.prototype.hasOwnProperty,b="~";function m(){}Object.create&&(m.prototype=Object.create(null),new m().__proto__||(b=!1));function Z(F,C,P){this.fn=F,this.context=C,this.once=P||!1}function V(F,C,P,H,D){if(typeof P!="function")throw new TypeError("The listener must be a function");var X=new Z(P,H||F,D),j=b?b+C:C;return F._events[j]?F._events[j].fn?F._events[j]=[F._events[j],X]:F._events[j].push(X):(F._events[j]=X,F._eventsCount++),F}function N(F,C){--F._eventsCount===0?F._events=new m:delete F._events[C]}function E(){this._events=new m,this._eventsCount=0}E.prototype.eventNames=function(){var C=[],P,H;if(this._eventsCount===0)return C;for(H in P=this._events)Me.call(P,H)&&C.push(b?H.slice(1):H);return Object.getOwnPropertySymbols?C.concat(Object.getOwnPropertySymbols(P)):C},E.prototype.listeners=function(C){var P=b?b+C:C,H=this._events[P];if(!H)return[];if(H.fn)return[H.fn];for(var D=0,X=H.length,j=new Array(X);D=0?Math.round(j):j%.5===0?Math.floor(j):Math.round(j)}function F(j){Z=j}var C=Math.PI/180,P=180/Math.PI;function H(j){return j*C}function D(j){return j*P}function X(j,de){var he=arguments.length>2&&arguments[2]!==void 0?arguments[2]:m;return Math.abs(j-de)<=he*Math.max(1,Math.abs(j),Math.abs(de))}},79111:function(Be,Me,b){"use strict";b.d(Me,{Ue:function(){return Z},al:function(){return F},xO:function(){return V}});var m=b(85551);function Z(){var Ge=new m.WT(9);return m.WT!=Float32Array&&(Ge[1]=0,Ge[2]=0,Ge[3]=0,Ge[5]=0,Ge[6]=0,Ge[7]=0),Ge[0]=1,Ge[4]=1,Ge[8]=1,Ge}function V(Ge,Tt){return Ge[0]=Tt[0],Ge[1]=Tt[1],Ge[2]=Tt[2],Ge[3]=Tt[4],Ge[4]=Tt[5],Ge[5]=Tt[6],Ge[6]=Tt[8],Ge[7]=Tt[9],Ge[8]=Tt[10],Ge}function N(Ge){var Tt=new glMatrix.ARRAY_TYPE(9);return Tt[0]=Ge[0],Tt[1]=Ge[1],Tt[2]=Ge[2],Tt[3]=Ge[3],Tt[4]=Ge[4],Tt[5]=Ge[5],Tt[6]=Ge[6],Tt[7]=Ge[7],Tt[8]=Ge[8],Tt}function E(Ge,Tt){return Ge[0]=Tt[0],Ge[1]=Tt[1],Ge[2]=Tt[2],Ge[3]=Tt[3],Ge[4]=Tt[4],Ge[5]=Tt[5],Ge[6]=Tt[6],Ge[7]=Tt[7],Ge[8]=Tt[8],Ge}function F(Ge,Tt,On,Vr,en,ln,Cn,Mt,Et){var pe=new m.WT(9);return pe[0]=Ge,pe[1]=Tt,pe[2]=On,pe[3]=Vr,pe[4]=en,pe[5]=ln,pe[6]=Cn,pe[7]=Mt,pe[8]=Et,pe}function C(Ge,Tt,On,Vr,en,ln,Cn,Mt,Et,pe){return Ge[0]=Tt,Ge[1]=On,Ge[2]=Vr,Ge[3]=en,Ge[4]=ln,Ge[5]=Cn,Ge[6]=Mt,Ge[7]=Et,Ge[8]=pe,Ge}function P(Ge){return Ge[0]=1,Ge[1]=0,Ge[2]=0,Ge[3]=0,Ge[4]=1,Ge[5]=0,Ge[6]=0,Ge[7]=0,Ge[8]=1,Ge}function H(Ge,Tt){if(Ge===Tt){var On=Tt[1],Vr=Tt[2],en=Tt[5];Ge[1]=Tt[3],Ge[2]=Tt[6],Ge[3]=On,Ge[5]=Tt[7],Ge[6]=Vr,Ge[7]=en}else Ge[0]=Tt[0],Ge[1]=Tt[3],Ge[2]=Tt[6],Ge[3]=Tt[1],Ge[4]=Tt[4],Ge[5]=Tt[7],Ge[6]=Tt[2],Ge[7]=Tt[5],Ge[8]=Tt[8];return Ge}function D(Ge,Tt){var On=Tt[0],Vr=Tt[1],en=Tt[2],ln=Tt[3],Cn=Tt[4],Mt=Tt[5],Et=Tt[6],pe=Tt[7],Ae=Tt[8],Pe=Ae*Cn-Mt*pe,Ut=-Ae*ln+Mt*Et,jt=pe*ln-Cn*Et,ft=On*Pe+Vr*Ut+en*jt;return ft?(ft=1/ft,Ge[0]=Pe*ft,Ge[1]=(-Ae*Vr+en*pe)*ft,Ge[2]=(Mt*Vr-en*Cn)*ft,Ge[3]=Ut*ft,Ge[4]=(Ae*On-en*Et)*ft,Ge[5]=(-Mt*On+en*ln)*ft,Ge[6]=jt*ft,Ge[7]=(-pe*On+Vr*Et)*ft,Ge[8]=(Cn*On-Vr*ln)*ft,Ge):null}function X(Ge,Tt){var On=Tt[0],Vr=Tt[1],en=Tt[2],ln=Tt[3],Cn=Tt[4],Mt=Tt[5],Et=Tt[6],pe=Tt[7],Ae=Tt[8];return Ge[0]=Cn*Ae-Mt*pe,Ge[1]=en*pe-Vr*Ae,Ge[2]=Vr*Mt-en*Cn,Ge[3]=Mt*Et-ln*Ae,Ge[4]=On*Ae-en*Et,Ge[5]=en*ln-On*Mt,Ge[6]=ln*pe-Cn*Et,Ge[7]=Vr*Et-On*pe,Ge[8]=On*Cn-Vr*ln,Ge}function j(Ge){var Tt=Ge[0],On=Ge[1],Vr=Ge[2],en=Ge[3],ln=Ge[4],Cn=Ge[5],Mt=Ge[6],Et=Ge[7],pe=Ge[8];return Tt*(pe*ln-Cn*Et)+On*(-pe*en+Cn*Mt)+Vr*(Et*en-ln*Mt)}function de(Ge,Tt,On){var Vr=Tt[0],en=Tt[1],ln=Tt[2],Cn=Tt[3],Mt=Tt[4],Et=Tt[5],pe=Tt[6],Ae=Tt[7],Pe=Tt[8],Ut=On[0],jt=On[1],ft=On[2],on=On[3],hn=On[4],lt=On[5],Ct=On[6],sn=On[7],W=On[8];return Ge[0]=Ut*Vr+jt*Cn+ft*pe,Ge[1]=Ut*en+jt*Mt+ft*Ae,Ge[2]=Ut*ln+jt*Et+ft*Pe,Ge[3]=on*Vr+hn*Cn+lt*pe,Ge[4]=on*en+hn*Mt+lt*Ae,Ge[5]=on*ln+hn*Et+lt*Pe,Ge[6]=Ct*Vr+sn*Cn+W*pe,Ge[7]=Ct*en+sn*Mt+W*Ae,Ge[8]=Ct*ln+sn*Et+W*Pe,Ge}function he(Ge,Tt,On){var Vr=Tt[0],en=Tt[1],ln=Tt[2],Cn=Tt[3],Mt=Tt[4],Et=Tt[5],pe=Tt[6],Ae=Tt[7],Pe=Tt[8],Ut=On[0],jt=On[1];return Ge[0]=Vr,Ge[1]=en,Ge[2]=ln,Ge[3]=Cn,Ge[4]=Mt,Ge[5]=Et,Ge[6]=Ut*Vr+jt*Cn+pe,Ge[7]=Ut*en+jt*Mt+Ae,Ge[8]=Ut*ln+jt*Et+Pe,Ge}function we(Ge,Tt,On){var Vr=Tt[0],en=Tt[1],ln=Tt[2],Cn=Tt[3],Mt=Tt[4],Et=Tt[5],pe=Tt[6],Ae=Tt[7],Pe=Tt[8],Ut=Math.sin(On),jt=Math.cos(On);return Ge[0]=jt*Vr+Ut*Cn,Ge[1]=jt*en+Ut*Mt,Ge[2]=jt*ln+Ut*Et,Ge[3]=jt*Cn-Ut*Vr,Ge[4]=jt*Mt-Ut*en,Ge[5]=jt*Et-Ut*ln,Ge[6]=pe,Ge[7]=Ae,Ge[8]=Pe,Ge}function ve(Ge,Tt,On){var Vr=On[0],en=On[1];return Ge[0]=Vr*Tt[0],Ge[1]=Vr*Tt[1],Ge[2]=Vr*Tt[2],Ge[3]=en*Tt[3],Ge[4]=en*Tt[4],Ge[5]=en*Tt[5],Ge[6]=Tt[6],Ge[7]=Tt[7],Ge[8]=Tt[8],Ge}function Ee(Ge,Tt){return Ge[0]=1,Ge[1]=0,Ge[2]=0,Ge[3]=0,Ge[4]=1,Ge[5]=0,Ge[6]=Tt[0],Ge[7]=Tt[1],Ge[8]=1,Ge}function $e(Ge,Tt){var On=Math.sin(Tt),Vr=Math.cos(Tt);return Ge[0]=Vr,Ge[1]=On,Ge[2]=0,Ge[3]=-On,Ge[4]=Vr,Ge[5]=0,Ge[6]=0,Ge[7]=0,Ge[8]=1,Ge}function Fe(Ge,Tt){return Ge[0]=Tt[0],Ge[1]=0,Ge[2]=0,Ge[3]=0,Ge[4]=Tt[1],Ge[5]=0,Ge[6]=0,Ge[7]=0,Ge[8]=1,Ge}function ct(Ge,Tt){return Ge[0]=Tt[0],Ge[1]=Tt[1],Ge[2]=0,Ge[3]=Tt[2],Ge[4]=Tt[3],Ge[5]=0,Ge[6]=Tt[4],Ge[7]=Tt[5],Ge[8]=1,Ge}function vt(Ge,Tt){var On=Tt[0],Vr=Tt[1],en=Tt[2],ln=Tt[3],Cn=On+On,Mt=Vr+Vr,Et=en+en,pe=On*Cn,Ae=Vr*Cn,Pe=Vr*Mt,Ut=en*Cn,jt=en*Mt,ft=en*Et,on=ln*Cn,hn=ln*Mt,lt=ln*Et;return Ge[0]=1-Pe-ft,Ge[3]=Ae-lt,Ge[6]=Ut+hn,Ge[1]=Ae+lt,Ge[4]=1-pe-ft,Ge[7]=jt-on,Ge[2]=Ut-hn,Ge[5]=jt+on,Ge[8]=1-pe-Pe,Ge}function at(Ge,Tt){var On=Tt[0],Vr=Tt[1],en=Tt[2],ln=Tt[3],Cn=Tt[4],Mt=Tt[5],Et=Tt[6],pe=Tt[7],Ae=Tt[8],Pe=Tt[9],Ut=Tt[10],jt=Tt[11],ft=Tt[12],on=Tt[13],hn=Tt[14],lt=Tt[15],Ct=On*Mt-Vr*Cn,sn=On*Et-en*Cn,W=On*pe-ln*Cn,Se=Vr*Et-en*Mt,Ht=Vr*pe-ln*Mt,zt=en*pe-ln*Et,Fn=Ae*on-Pe*ft,Tn=Ae*hn-Ut*ft,lr=Ae*lt-jt*ft,je=Pe*hn-Ut*on,be=Pe*lt-jt*on,it=Ut*lt-jt*hn,wt=Ct*it-sn*be+W*je+Se*lr-Ht*Tn+zt*Fn;return wt?(wt=1/wt,Ge[0]=(Mt*it-Et*be+pe*je)*wt,Ge[1]=(Et*lr-Cn*it-pe*Tn)*wt,Ge[2]=(Cn*be-Mt*lr+pe*Fn)*wt,Ge[3]=(en*be-Vr*it-ln*je)*wt,Ge[4]=(On*it-en*lr+ln*Tn)*wt,Ge[5]=(Vr*lr-On*be-ln*Fn)*wt,Ge[6]=(on*zt-hn*Ht+lt*Se)*wt,Ge[7]=(hn*W-ft*zt-lt*sn)*wt,Ge[8]=(ft*Ht-on*W+lt*Ct)*wt,Ge):null}function kt(Ge,Tt,On){return Ge[0]=2/Tt,Ge[1]=0,Ge[2]=0,Ge[3]=0,Ge[4]=-2/On,Ge[5]=0,Ge[6]=-1,Ge[7]=1,Ge[8]=1,Ge}function It(Ge){return"mat3("+Ge[0]+", "+Ge[1]+", "+Ge[2]+", "+Ge[3]+", "+Ge[4]+", "+Ge[5]+", "+Ge[6]+", "+Ge[7]+", "+Ge[8]+")"}function Bn(Ge){return Math.sqrt(Ge[0]*Ge[0]+Ge[1]*Ge[1]+Ge[2]*Ge[2]+Ge[3]*Ge[3]+Ge[4]*Ge[4]+Ge[5]*Ge[5]+Ge[6]*Ge[6]+Ge[7]*Ge[7]+Ge[8]*Ge[8])}function Lt(Ge,Tt,On){return Ge[0]=Tt[0]+On[0],Ge[1]=Tt[1]+On[1],Ge[2]=Tt[2]+On[2],Ge[3]=Tt[3]+On[3],Ge[4]=Tt[4]+On[4],Ge[5]=Tt[5]+On[5],Ge[6]=Tt[6]+On[6],Ge[7]=Tt[7]+On[7],Ge[8]=Tt[8]+On[8],Ge}function Wn(Ge,Tt,On){return Ge[0]=Tt[0]-On[0],Ge[1]=Tt[1]-On[1],Ge[2]=Tt[2]-On[2],Ge[3]=Tt[3]-On[3],Ge[4]=Tt[4]-On[4],Ge[5]=Tt[5]-On[5],Ge[6]=Tt[6]-On[6],Ge[7]=Tt[7]-On[7],Ge[8]=Tt[8]-On[8],Ge}function Xn(Ge,Tt,On){return Ge[0]=Tt[0]*On,Ge[1]=Tt[1]*On,Ge[2]=Tt[2]*On,Ge[3]=Tt[3]*On,Ge[4]=Tt[4]*On,Ge[5]=Tt[5]*On,Ge[6]=Tt[6]*On,Ge[7]=Tt[7]*On,Ge[8]=Tt[8]*On,Ge}function In(Ge,Tt,On,Vr){return Ge[0]=Tt[0]+On[0]*Vr,Ge[1]=Tt[1]+On[1]*Vr,Ge[2]=Tt[2]+On[2]*Vr,Ge[3]=Tt[3]+On[3]*Vr,Ge[4]=Tt[4]+On[4]*Vr,Ge[5]=Tt[5]+On[5]*Vr,Ge[6]=Tt[6]+On[6]*Vr,Ge[7]=Tt[7]+On[7]*Vr,Ge[8]=Tt[8]+On[8]*Vr,Ge}function zn(Ge,Tt){return Ge[0]===Tt[0]&&Ge[1]===Tt[1]&&Ge[2]===Tt[2]&&Ge[3]===Tt[3]&&Ge[4]===Tt[4]&&Ge[5]===Tt[5]&&Ge[6]===Tt[6]&&Ge[7]===Tt[7]&&Ge[8]===Tt[8]}function dr(Ge,Tt){var On=Ge[0],Vr=Ge[1],en=Ge[2],ln=Ge[3],Cn=Ge[4],Mt=Ge[5],Et=Ge[6],pe=Ge[7],Ae=Ge[8],Pe=Tt[0],Ut=Tt[1],jt=Tt[2],ft=Tt[3],on=Tt[4],hn=Tt[5],lt=Tt[6],Ct=Tt[7],sn=Tt[8];return Math.abs(On-Pe)<=glMatrix.EPSILON*Math.max(1,Math.abs(On),Math.abs(Pe))&&Math.abs(Vr-Ut)<=glMatrix.EPSILON*Math.max(1,Math.abs(Vr),Math.abs(Ut))&&Math.abs(en-jt)<=glMatrix.EPSILON*Math.max(1,Math.abs(en),Math.abs(jt))&&Math.abs(ln-ft)<=glMatrix.EPSILON*Math.max(1,Math.abs(ln),Math.abs(ft))&&Math.abs(Cn-on)<=glMatrix.EPSILON*Math.max(1,Math.abs(Cn),Math.abs(on))&&Math.abs(Mt-hn)<=glMatrix.EPSILON*Math.max(1,Math.abs(Mt),Math.abs(hn))&&Math.abs(Et-lt)<=glMatrix.EPSILON*Math.max(1,Math.abs(Et),Math.abs(lt))&&Math.abs(pe-Ct)<=glMatrix.EPSILON*Math.max(1,Math.abs(pe),Math.abs(Ct))&&Math.abs(Ae-sn)<=glMatrix.EPSILON*Math.max(1,Math.abs(Ae),Math.abs(sn))}var vn=null,_r=null},60187:function(Be,Me,b){"use strict";b.r(Me),b.d(Me,{add:function(){return Ut},adjoint:function(){return D},clone:function(){return V},copy:function(){return N},create:function(){return Z},decompose:function(){return zn},determinant:function(){return X},equals:function(){return lt},exactEquals:function(){return hn},frob:function(){return Pe},fromQuat:function(){return _r},fromQuat2:function(){return Lt},fromRotation:function(){return vt},fromRotationTranslation:function(){return Bn},fromRotationTranslationScale:function(){return dr},fromRotationTranslationScaleOrigin:function(){return vn},fromScaling:function(){return ct},fromTranslation:function(){return Fe},fromValues:function(){return E},fromXRotation:function(){return at},fromYRotation:function(){return kt},fromZRotation:function(){return It},frustum:function(){return Ge},getRotation:function(){return In},getScaling:function(){return Xn},getTranslation:function(){return Wn},identity:function(){return C},invert:function(){return H},lookAt:function(){return Et},mul:function(){return Ct},multiply:function(){return j},multiplyScalar:function(){return ft},multiplyScalarAndAdd:function(){return on},ortho:function(){return Cn},orthoNO:function(){return ln},orthoZO:function(){return Mt},perspective:function(){return On},perspectiveFromFieldOfView:function(){return en},perspectiveNO:function(){return Tt},perspectiveZO:function(){return Vr},rotate:function(){return we},rotateX:function(){return ve},rotateY:function(){return Ee},rotateZ:function(){return $e},scale:function(){return he},set:function(){return F},str:function(){return Ae},sub:function(){return sn},subtract:function(){return jt},targetTo:function(){return pe},translate:function(){return de},transpose:function(){return P}});var m=b(85551);function Z(){var W=new m.WT(16);return m.WT!=Float32Array&&(W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[6]=0,W[7]=0,W[8]=0,W[9]=0,W[11]=0,W[12]=0,W[13]=0,W[14]=0),W[0]=1,W[5]=1,W[10]=1,W[15]=1,W}function V(W){var Se=new m.WT(16);return Se[0]=W[0],Se[1]=W[1],Se[2]=W[2],Se[3]=W[3],Se[4]=W[4],Se[5]=W[5],Se[6]=W[6],Se[7]=W[7],Se[8]=W[8],Se[9]=W[9],Se[10]=W[10],Se[11]=W[11],Se[12]=W[12],Se[13]=W[13],Se[14]=W[14],Se[15]=W[15],Se}function N(W,Se){return W[0]=Se[0],W[1]=Se[1],W[2]=Se[2],W[3]=Se[3],W[4]=Se[4],W[5]=Se[5],W[6]=Se[6],W[7]=Se[7],W[8]=Se[8],W[9]=Se[9],W[10]=Se[10],W[11]=Se[11],W[12]=Se[12],W[13]=Se[13],W[14]=Se[14],W[15]=Se[15],W}function E(W,Se,Ht,zt,Fn,Tn,lr,je,be,it,wt,ot,ut,_t,$t,Vt){var Qt=new m.WT(16);return Qt[0]=W,Qt[1]=Se,Qt[2]=Ht,Qt[3]=zt,Qt[4]=Fn,Qt[5]=Tn,Qt[6]=lr,Qt[7]=je,Qt[8]=be,Qt[9]=it,Qt[10]=wt,Qt[11]=ot,Qt[12]=ut,Qt[13]=_t,Qt[14]=$t,Qt[15]=Vt,Qt}function F(W,Se,Ht,zt,Fn,Tn,lr,je,be,it,wt,ot,ut,_t,$t,Vt,Qt){return W[0]=Se,W[1]=Ht,W[2]=zt,W[3]=Fn,W[4]=Tn,W[5]=lr,W[6]=je,W[7]=be,W[8]=it,W[9]=wt,W[10]=ot,W[11]=ut,W[12]=_t,W[13]=$t,W[14]=Vt,W[15]=Qt,W}function C(W){return W[0]=1,W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[5]=1,W[6]=0,W[7]=0,W[8]=0,W[9]=0,W[10]=1,W[11]=0,W[12]=0,W[13]=0,W[14]=0,W[15]=1,W}function P(W,Se){if(W===Se){var Ht=Se[1],zt=Se[2],Fn=Se[3],Tn=Se[6],lr=Se[7],je=Se[11];W[1]=Se[4],W[2]=Se[8],W[3]=Se[12],W[4]=Ht,W[6]=Se[9],W[7]=Se[13],W[8]=zt,W[9]=Tn,W[11]=Se[14],W[12]=Fn,W[13]=lr,W[14]=je}else W[0]=Se[0],W[1]=Se[4],W[2]=Se[8],W[3]=Se[12],W[4]=Se[1],W[5]=Se[5],W[6]=Se[9],W[7]=Se[13],W[8]=Se[2],W[9]=Se[6],W[10]=Se[10],W[11]=Se[14],W[12]=Se[3],W[13]=Se[7],W[14]=Se[11],W[15]=Se[15];return W}function H(W,Se){var Ht=Se[0],zt=Se[1],Fn=Se[2],Tn=Se[3],lr=Se[4],je=Se[5],be=Se[6],it=Se[7],wt=Se[8],ot=Se[9],ut=Se[10],_t=Se[11],$t=Se[12],Vt=Se[13],Qt=Se[14],cn=Se[15],Yn=Ht*je-zt*lr,qn=Ht*be-Fn*lr,Sr=Ht*it-Tn*lr,Jr=zt*be-Fn*je,vr=zt*it-Tn*je,Ki=Fn*it-Tn*be,Mi=wt*Vt-ot*$t,yi=wt*Qt-ut*$t,qr=wt*cn-_t*$t,es=ot*Qt-ut*Vt,Ci=ot*cn-_t*Vt,En=ut*cn-_t*Qt,rn=Yn*En-qn*Ci+Sr*es+Jr*qr-vr*yi+Ki*Mi;return rn?(rn=1/rn,W[0]=(je*En-be*Ci+it*es)*rn,W[1]=(Fn*Ci-zt*En-Tn*es)*rn,W[2]=(Vt*Ki-Qt*vr+cn*Jr)*rn,W[3]=(ut*vr-ot*Ki-_t*Jr)*rn,W[4]=(be*qr-lr*En-it*yi)*rn,W[5]=(Ht*En-Fn*qr+Tn*yi)*rn,W[6]=(Qt*Sr-$t*Ki-cn*qn)*rn,W[7]=(wt*Ki-ut*Sr+_t*qn)*rn,W[8]=(lr*Ci-je*qr+it*Mi)*rn,W[9]=(zt*qr-Ht*Ci-Tn*Mi)*rn,W[10]=($t*vr-Vt*Sr+cn*Yn)*rn,W[11]=(ot*Sr-wt*vr-_t*Yn)*rn,W[12]=(je*yi-lr*es-be*Mi)*rn,W[13]=(Ht*es-zt*yi+Fn*Mi)*rn,W[14]=(Vt*qn-$t*Jr-Qt*Yn)*rn,W[15]=(wt*Jr-ot*qn+ut*Yn)*rn,W):null}function D(W,Se){var Ht=Se[0],zt=Se[1],Fn=Se[2],Tn=Se[3],lr=Se[4],je=Se[5],be=Se[6],it=Se[7],wt=Se[8],ot=Se[9],ut=Se[10],_t=Se[11],$t=Se[12],Vt=Se[13],Qt=Se[14],cn=Se[15],Yn=Ht*je-zt*lr,qn=Ht*be-Fn*lr,Sr=Ht*it-Tn*lr,Jr=zt*be-Fn*je,vr=zt*it-Tn*je,Ki=Fn*it-Tn*be,Mi=wt*Vt-ot*$t,yi=wt*Qt-ut*$t,qr=wt*cn-_t*$t,es=ot*Qt-ut*Vt,Ci=ot*cn-_t*Vt,En=ut*cn-_t*Qt;return W[0]=je*En-be*Ci+it*es,W[1]=Fn*Ci-zt*En-Tn*es,W[2]=Vt*Ki-Qt*vr+cn*Jr,W[3]=ut*vr-ot*Ki-_t*Jr,W[4]=be*qr-lr*En-it*yi,W[5]=Ht*En-Fn*qr+Tn*yi,W[6]=Qt*Sr-$t*Ki-cn*qn,W[7]=wt*Ki-ut*Sr+_t*qn,W[8]=lr*Ci-je*qr+it*Mi,W[9]=zt*qr-Ht*Ci-Tn*Mi,W[10]=$t*vr-Vt*Sr+cn*Yn,W[11]=ot*Sr-wt*vr-_t*Yn,W[12]=je*yi-lr*es-be*Mi,W[13]=Ht*es-zt*yi+Fn*Mi,W[14]=Vt*qn-$t*Jr-Qt*Yn,W[15]=wt*Jr-ot*qn+ut*Yn,W}function X(W){var Se=W[0],Ht=W[1],zt=W[2],Fn=W[3],Tn=W[4],lr=W[5],je=W[6],be=W[7],it=W[8],wt=W[9],ot=W[10],ut=W[11],_t=W[12],$t=W[13],Vt=W[14],Qt=W[15],cn=Se*lr-Ht*Tn,Yn=Se*je-zt*Tn,qn=Ht*je-zt*lr,Sr=it*$t-wt*_t,Jr=it*Vt-ot*_t,vr=wt*Vt-ot*$t,Ki=Se*vr-Ht*Jr+zt*Sr,Mi=Tn*vr-lr*Jr+je*Sr,yi=it*qn-wt*Yn+ot*cn,qr=_t*qn-$t*Yn+Vt*cn;return be*Ki-Fn*Mi+Qt*yi-ut*qr}function j(W,Se,Ht){var zt=Se[0],Fn=Se[1],Tn=Se[2],lr=Se[3],je=Se[4],be=Se[5],it=Se[6],wt=Se[7],ot=Se[8],ut=Se[9],_t=Se[10],$t=Se[11],Vt=Se[12],Qt=Se[13],cn=Se[14],Yn=Se[15],qn=Ht[0],Sr=Ht[1],Jr=Ht[2],vr=Ht[3];return W[0]=qn*zt+Sr*je+Jr*ot+vr*Vt,W[1]=qn*Fn+Sr*be+Jr*ut+vr*Qt,W[2]=qn*Tn+Sr*it+Jr*_t+vr*cn,W[3]=qn*lr+Sr*wt+Jr*$t+vr*Yn,qn=Ht[4],Sr=Ht[5],Jr=Ht[6],vr=Ht[7],W[4]=qn*zt+Sr*je+Jr*ot+vr*Vt,W[5]=qn*Fn+Sr*be+Jr*ut+vr*Qt,W[6]=qn*Tn+Sr*it+Jr*_t+vr*cn,W[7]=qn*lr+Sr*wt+Jr*$t+vr*Yn,qn=Ht[8],Sr=Ht[9],Jr=Ht[10],vr=Ht[11],W[8]=qn*zt+Sr*je+Jr*ot+vr*Vt,W[9]=qn*Fn+Sr*be+Jr*ut+vr*Qt,W[10]=qn*Tn+Sr*it+Jr*_t+vr*cn,W[11]=qn*lr+Sr*wt+Jr*$t+vr*Yn,qn=Ht[12],Sr=Ht[13],Jr=Ht[14],vr=Ht[15],W[12]=qn*zt+Sr*je+Jr*ot+vr*Vt,W[13]=qn*Fn+Sr*be+Jr*ut+vr*Qt,W[14]=qn*Tn+Sr*it+Jr*_t+vr*cn,W[15]=qn*lr+Sr*wt+Jr*$t+vr*Yn,W}function de(W,Se,Ht){var zt=Ht[0],Fn=Ht[1],Tn=Ht[2],lr,je,be,it,wt,ot,ut,_t,$t,Vt,Qt,cn;return Se===W?(W[12]=Se[0]*zt+Se[4]*Fn+Se[8]*Tn+Se[12],W[13]=Se[1]*zt+Se[5]*Fn+Se[9]*Tn+Se[13],W[14]=Se[2]*zt+Se[6]*Fn+Se[10]*Tn+Se[14],W[15]=Se[3]*zt+Se[7]*Fn+Se[11]*Tn+Se[15]):(lr=Se[0],je=Se[1],be=Se[2],it=Se[3],wt=Se[4],ot=Se[5],ut=Se[6],_t=Se[7],$t=Se[8],Vt=Se[9],Qt=Se[10],cn=Se[11],W[0]=lr,W[1]=je,W[2]=be,W[3]=it,W[4]=wt,W[5]=ot,W[6]=ut,W[7]=_t,W[8]=$t,W[9]=Vt,W[10]=Qt,W[11]=cn,W[12]=lr*zt+wt*Fn+$t*Tn+Se[12],W[13]=je*zt+ot*Fn+Vt*Tn+Se[13],W[14]=be*zt+ut*Fn+Qt*Tn+Se[14],W[15]=it*zt+_t*Fn+cn*Tn+Se[15]),W}function he(W,Se,Ht){var zt=Ht[0],Fn=Ht[1],Tn=Ht[2];return W[0]=Se[0]*zt,W[1]=Se[1]*zt,W[2]=Se[2]*zt,W[3]=Se[3]*zt,W[4]=Se[4]*Fn,W[5]=Se[5]*Fn,W[6]=Se[6]*Fn,W[7]=Se[7]*Fn,W[8]=Se[8]*Tn,W[9]=Se[9]*Tn,W[10]=Se[10]*Tn,W[11]=Se[11]*Tn,W[12]=Se[12],W[13]=Se[13],W[14]=Se[14],W[15]=Se[15],W}function we(W,Se,Ht,zt){var Fn=zt[0],Tn=zt[1],lr=zt[2],je=Math.sqrt(Fn*Fn+Tn*Tn+lr*lr),be,it,wt,ot,ut,_t,$t,Vt,Qt,cn,Yn,qn,Sr,Jr,vr,Ki,Mi,yi,qr,es,Ci,En,rn,Xt;return je0?(Ht[0]=(je*lr+wt*zt+be*Tn-it*Fn)*2/ot,Ht[1]=(be*lr+wt*Fn+it*zt-je*Tn)*2/ot,Ht[2]=(it*lr+wt*Tn+je*Fn-be*zt)*2/ot):(Ht[0]=(je*lr+wt*zt+be*Tn-it*Fn)*2,Ht[1]=(be*lr+wt*Fn+it*zt-je*Tn)*2,Ht[2]=(it*lr+wt*Tn+je*Fn-be*zt)*2),Bn(W,Se,Ht),W}function Wn(W,Se){return W[0]=Se[12],W[1]=Se[13],W[2]=Se[14],W}function Xn(W,Se){var Ht=Se[0],zt=Se[1],Fn=Se[2],Tn=Se[4],lr=Se[5],je=Se[6],be=Se[8],it=Se[9],wt=Se[10];return W[0]=Math.sqrt(Ht*Ht+zt*zt+Fn*Fn),W[1]=Math.sqrt(Tn*Tn+lr*lr+je*je),W[2]=Math.sqrt(be*be+it*it+wt*wt),W}function In(W,Se){var Ht=new m.WT(3);Xn(Ht,Se);var zt=1/Ht[0],Fn=1/Ht[1],Tn=1/Ht[2],lr=Se[0]*zt,je=Se[1]*Fn,be=Se[2]*Tn,it=Se[4]*zt,wt=Se[5]*Fn,ot=Se[6]*Tn,ut=Se[8]*zt,_t=Se[9]*Fn,$t=Se[10]*Tn,Vt=lr+wt+$t,Qt=0;return Vt>0?(Qt=Math.sqrt(Vt+1)*2,W[3]=.25*Qt,W[0]=(ot-_t)/Qt,W[1]=(ut-be)/Qt,W[2]=(je-it)/Qt):lr>wt&&lr>$t?(Qt=Math.sqrt(1+lr-wt-$t)*2,W[3]=(ot-_t)/Qt,W[0]=.25*Qt,W[1]=(je+it)/Qt,W[2]=(ut+be)/Qt):wt>$t?(Qt=Math.sqrt(1+wt-lr-$t)*2,W[3]=(ut-be)/Qt,W[0]=(je+it)/Qt,W[1]=.25*Qt,W[2]=(ot+_t)/Qt):(Qt=Math.sqrt(1+$t-lr-wt)*2,W[3]=(je-it)/Qt,W[0]=(ut+be)/Qt,W[1]=(ot+_t)/Qt,W[2]=.25*Qt),W}function zn(W,Se,Ht,zt){Se[0]=zt[12],Se[1]=zt[13],Se[2]=zt[14];var Fn=zt[0],Tn=zt[1],lr=zt[2],je=zt[4],be=zt[5],it=zt[6],wt=zt[8],ot=zt[9],ut=zt[10];Ht[0]=Math.sqrt(Fn*Fn+Tn*Tn+lr*lr),Ht[1]=Math.sqrt(je*je+be*be+it*it),Ht[2]=Math.sqrt(wt*wt+ot*ot+ut*ut);var _t=1/Ht[0],$t=1/Ht[1],Vt=1/Ht[2],Qt=Fn*_t,cn=Tn*$t,Yn=lr*Vt,qn=je*_t,Sr=be*$t,Jr=it*Vt,vr=wt*_t,Ki=ot*$t,Mi=ut*Vt,yi=Qt+Sr+Mi,qr=0;return yi>0?(qr=Math.sqrt(yi+1)*2,W[3]=.25*qr,W[0]=(Jr-Ki)/qr,W[1]=(vr-Yn)/qr,W[2]=(cn-qn)/qr):Qt>Sr&&Qt>Mi?(qr=Math.sqrt(1+Qt-Sr-Mi)*2,W[3]=(Jr-Ki)/qr,W[0]=.25*qr,W[1]=(cn+qn)/qr,W[2]=(vr+Yn)/qr):Sr>Mi?(qr=Math.sqrt(1+Sr-Qt-Mi)*2,W[3]=(vr-Yn)/qr,W[0]=(cn+qn)/qr,W[1]=.25*qr,W[2]=(Jr+Ki)/qr):(qr=Math.sqrt(1+Mi-Qt-Sr)*2,W[3]=(cn-qn)/qr,W[0]=(vr+Yn)/qr,W[1]=(Jr+Ki)/qr,W[2]=.25*qr),W}function dr(W,Se,Ht,zt){var Fn=Se[0],Tn=Se[1],lr=Se[2],je=Se[3],be=Fn+Fn,it=Tn+Tn,wt=lr+lr,ot=Fn*be,ut=Fn*it,_t=Fn*wt,$t=Tn*it,Vt=Tn*wt,Qt=lr*wt,cn=je*be,Yn=je*it,qn=je*wt,Sr=zt[0],Jr=zt[1],vr=zt[2];return W[0]=(1-($t+Qt))*Sr,W[1]=(ut+qn)*Sr,W[2]=(_t-Yn)*Sr,W[3]=0,W[4]=(ut-qn)*Jr,W[5]=(1-(ot+Qt))*Jr,W[6]=(Vt+cn)*Jr,W[7]=0,W[8]=(_t+Yn)*vr,W[9]=(Vt-cn)*vr,W[10]=(1-(ot+$t))*vr,W[11]=0,W[12]=Ht[0],W[13]=Ht[1],W[14]=Ht[2],W[15]=1,W}function vn(W,Se,Ht,zt,Fn){var Tn=Se[0],lr=Se[1],je=Se[2],be=Se[3],it=Tn+Tn,wt=lr+lr,ot=je+je,ut=Tn*it,_t=Tn*wt,$t=Tn*ot,Vt=lr*wt,Qt=lr*ot,cn=je*ot,Yn=be*it,qn=be*wt,Sr=be*ot,Jr=zt[0],vr=zt[1],Ki=zt[2],Mi=Fn[0],yi=Fn[1],qr=Fn[2],es=(1-(Vt+cn))*Jr,Ci=(_t+Sr)*Jr,En=($t-qn)*Jr,rn=(_t-Sr)*vr,Xt=(1-(ut+cn))*vr,st=(Qt+Yn)*vr,dt=($t+qn)*Ki,Wt=(Qt-Yn)*Ki,bn=(1-(ut+Vt))*Ki;return W[0]=es,W[1]=Ci,W[2]=En,W[3]=0,W[4]=rn,W[5]=Xt,W[6]=st,W[7]=0,W[8]=dt,W[9]=Wt,W[10]=bn,W[11]=0,W[12]=Ht[0]+Mi-(es*Mi+rn*yi+dt*qr),W[13]=Ht[1]+yi-(Ci*Mi+Xt*yi+Wt*qr),W[14]=Ht[2]+qr-(En*Mi+st*yi+bn*qr),W[15]=1,W}function _r(W,Se){var Ht=Se[0],zt=Se[1],Fn=Se[2],Tn=Se[3],lr=Ht+Ht,je=zt+zt,be=Fn+Fn,it=Ht*lr,wt=zt*lr,ot=zt*je,ut=Fn*lr,_t=Fn*je,$t=Fn*be,Vt=Tn*lr,Qt=Tn*je,cn=Tn*be;return W[0]=1-ot-$t,W[1]=wt+cn,W[2]=ut-Qt,W[3]=0,W[4]=wt-cn,W[5]=1-it-$t,W[6]=_t+Vt,W[7]=0,W[8]=ut+Qt,W[9]=_t-Vt,W[10]=1-it-ot,W[11]=0,W[12]=0,W[13]=0,W[14]=0,W[15]=1,W}function Ge(W,Se,Ht,zt,Fn,Tn,lr){var je=1/(Ht-Se),be=1/(Fn-zt),it=1/(Tn-lr);return W[0]=Tn*2*je,W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[5]=Tn*2*be,W[6]=0,W[7]=0,W[8]=(Ht+Se)*je,W[9]=(Fn+zt)*be,W[10]=(lr+Tn)*it,W[11]=-1,W[12]=0,W[13]=0,W[14]=lr*Tn*2*it,W[15]=0,W}function Tt(W,Se,Ht,zt,Fn){var Tn=1/Math.tan(Se/2);if(W[0]=Tn/Ht,W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[5]=Tn,W[6]=0,W[7]=0,W[8]=0,W[9]=0,W[11]=-1,W[12]=0,W[13]=0,W[15]=0,Fn!=null&&Fn!==1/0){var lr=1/(zt-Fn);W[10]=(Fn+zt)*lr,W[14]=2*Fn*zt*lr}else W[10]=-1,W[14]=-2*zt;return W}var On=Tt;function Vr(W,Se,Ht,zt,Fn){var Tn=1/Math.tan(Se/2);if(W[0]=Tn/Ht,W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[5]=Tn,W[6]=0,W[7]=0,W[8]=0,W[9]=0,W[11]=-1,W[12]=0,W[13]=0,W[15]=0,Fn!=null&&Fn!==1/0){var lr=1/(zt-Fn);W[10]=Fn*lr,W[14]=Fn*zt*lr}else W[10]=-1,W[14]=-zt;return W}function en(W,Se,Ht,zt){var Fn=Math.tan(Se.upDegrees*Math.PI/180),Tn=Math.tan(Se.downDegrees*Math.PI/180),lr=Math.tan(Se.leftDegrees*Math.PI/180),je=Math.tan(Se.rightDegrees*Math.PI/180),be=2/(lr+je),it=2/(Fn+Tn);return W[0]=be,W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[5]=it,W[6]=0,W[7]=0,W[8]=-((lr-je)*be*.5),W[9]=(Fn-Tn)*it*.5,W[10]=zt/(Ht-zt),W[11]=-1,W[12]=0,W[13]=0,W[14]=zt*Ht/(Ht-zt),W[15]=0,W}function ln(W,Se,Ht,zt,Fn,Tn,lr){var je=1/(Se-Ht),be=1/(zt-Fn),it=1/(Tn-lr);return W[0]=-2*je,W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[5]=-2*be,W[6]=0,W[7]=0,W[8]=0,W[9]=0,W[10]=2*it,W[11]=0,W[12]=(Se+Ht)*je,W[13]=(Fn+zt)*be,W[14]=(lr+Tn)*it,W[15]=1,W}var Cn=ln;function Mt(W,Se,Ht,zt,Fn,Tn,lr){var je=1/(Se-Ht),be=1/(zt-Fn),it=1/(Tn-lr);return W[0]=-2*je,W[1]=0,W[2]=0,W[3]=0,W[4]=0,W[5]=-2*be,W[6]=0,W[7]=0,W[8]=0,W[9]=0,W[10]=it,W[11]=0,W[12]=(Se+Ht)*je,W[13]=(Fn+zt)*be,W[14]=Tn*it,W[15]=1,W}function Et(W,Se,Ht,zt){var Fn,Tn,lr,je,be,it,wt,ot,ut,_t,$t=Se[0],Vt=Se[1],Qt=Se[2],cn=zt[0],Yn=zt[1],qn=zt[2],Sr=Ht[0],Jr=Ht[1],vr=Ht[2];return Math.abs($t-Sr)0&&(_t=1/Math.sqrt(_t),wt*=_t,ot*=_t,ut*=_t);var $t=be*ut-it*ot,Vt=it*wt-je*ut,Qt=je*ot-be*wt;return _t=$t*$t+Vt*Vt+Qt*Qt,_t>0&&(_t=1/Math.sqrt(_t),$t*=_t,Vt*=_t,Qt*=_t),W[0]=$t,W[1]=Vt,W[2]=Qt,W[3]=0,W[4]=ot*Qt-ut*Vt,W[5]=ut*$t-wt*Qt,W[6]=wt*Vt-ot*$t,W[7]=0,W[8]=wt,W[9]=ot,W[10]=ut,W[11]=0,W[12]=Fn,W[13]=Tn,W[14]=lr,W[15]=1,W}function Ae(W){return"mat4("+W[0]+", "+W[1]+", "+W[2]+", "+W[3]+", "+W[4]+", "+W[5]+", "+W[6]+", "+W[7]+", "+W[8]+", "+W[9]+", "+W[10]+", "+W[11]+", "+W[12]+", "+W[13]+", "+W[14]+", "+W[15]+")"}function Pe(W){return Math.sqrt(W[0]*W[0]+W[1]*W[1]+W[2]*W[2]+W[3]*W[3]+W[4]*W[4]+W[5]*W[5]+W[6]*W[6]+W[7]*W[7]+W[8]*W[8]+W[9]*W[9]+W[10]*W[10]+W[11]*W[11]+W[12]*W[12]+W[13]*W[13]+W[14]*W[14]+W[15]*W[15])}function Ut(W,Se,Ht){return W[0]=Se[0]+Ht[0],W[1]=Se[1]+Ht[1],W[2]=Se[2]+Ht[2],W[3]=Se[3]+Ht[3],W[4]=Se[4]+Ht[4],W[5]=Se[5]+Ht[5],W[6]=Se[6]+Ht[6],W[7]=Se[7]+Ht[7],W[8]=Se[8]+Ht[8],W[9]=Se[9]+Ht[9],W[10]=Se[10]+Ht[10],W[11]=Se[11]+Ht[11],W[12]=Se[12]+Ht[12],W[13]=Se[13]+Ht[13],W[14]=Se[14]+Ht[14],W[15]=Se[15]+Ht[15],W}function jt(W,Se,Ht){return W[0]=Se[0]-Ht[0],W[1]=Se[1]-Ht[1],W[2]=Se[2]-Ht[2],W[3]=Se[3]-Ht[3],W[4]=Se[4]-Ht[4],W[5]=Se[5]-Ht[5],W[6]=Se[6]-Ht[6],W[7]=Se[7]-Ht[7],W[8]=Se[8]-Ht[8],W[9]=Se[9]-Ht[9],W[10]=Se[10]-Ht[10],W[11]=Se[11]-Ht[11],W[12]=Se[12]-Ht[12],W[13]=Se[13]-Ht[13],W[14]=Se[14]-Ht[14],W[15]=Se[15]-Ht[15],W}function ft(W,Se,Ht){return W[0]=Se[0]*Ht,W[1]=Se[1]*Ht,W[2]=Se[2]*Ht,W[3]=Se[3]*Ht,W[4]=Se[4]*Ht,W[5]=Se[5]*Ht,W[6]=Se[6]*Ht,W[7]=Se[7]*Ht,W[8]=Se[8]*Ht,W[9]=Se[9]*Ht,W[10]=Se[10]*Ht,W[11]=Se[11]*Ht,W[12]=Se[12]*Ht,W[13]=Se[13]*Ht,W[14]=Se[14]*Ht,W[15]=Se[15]*Ht,W}function on(W,Se,Ht,zt){return W[0]=Se[0]+Ht[0]*zt,W[1]=Se[1]+Ht[1]*zt,W[2]=Se[2]+Ht[2]*zt,W[3]=Se[3]+Ht[3]*zt,W[4]=Se[4]+Ht[4]*zt,W[5]=Se[5]+Ht[5]*zt,W[6]=Se[6]+Ht[6]*zt,W[7]=Se[7]+Ht[7]*zt,W[8]=Se[8]+Ht[8]*zt,W[9]=Se[9]+Ht[9]*zt,W[10]=Se[10]+Ht[10]*zt,W[11]=Se[11]+Ht[11]*zt,W[12]=Se[12]+Ht[12]*zt,W[13]=Se[13]+Ht[13]*zt,W[14]=Se[14]+Ht[14]*zt,W[15]=Se[15]+Ht[15]*zt,W}function hn(W,Se){return W[0]===Se[0]&&W[1]===Se[1]&&W[2]===Se[2]&&W[3]===Se[3]&&W[4]===Se[4]&&W[5]===Se[5]&&W[6]===Se[6]&&W[7]===Se[7]&&W[8]===Se[8]&&W[9]===Se[9]&&W[10]===Se[10]&&W[11]===Se[11]&&W[12]===Se[12]&&W[13]===Se[13]&&W[14]===Se[14]&&W[15]===Se[15]}function lt(W,Se){var Ht=W[0],zt=W[1],Fn=W[2],Tn=W[3],lr=W[4],je=W[5],be=W[6],it=W[7],wt=W[8],ot=W[9],ut=W[10],_t=W[11],$t=W[12],Vt=W[13],Qt=W[14],cn=W[15],Yn=Se[0],qn=Se[1],Sr=Se[2],Jr=Se[3],vr=Se[4],Ki=Se[5],Mi=Se[6],yi=Se[7],qr=Se[8],es=Se[9],Ci=Se[10],En=Se[11],rn=Se[12],Xt=Se[13],st=Se[14],dt=Se[15];return Math.abs(Ht-Yn)<=m.Ib*Math.max(1,Math.abs(Ht),Math.abs(Yn))&&Math.abs(zt-qn)<=m.Ib*Math.max(1,Math.abs(zt),Math.abs(qn))&&Math.abs(Fn-Sr)<=m.Ib*Math.max(1,Math.abs(Fn),Math.abs(Sr))&&Math.abs(Tn-Jr)<=m.Ib*Math.max(1,Math.abs(Tn),Math.abs(Jr))&&Math.abs(lr-vr)<=m.Ib*Math.max(1,Math.abs(lr),Math.abs(vr))&&Math.abs(je-Ki)<=m.Ib*Math.max(1,Math.abs(je),Math.abs(Ki))&&Math.abs(be-Mi)<=m.Ib*Math.max(1,Math.abs(be),Math.abs(Mi))&&Math.abs(it-yi)<=m.Ib*Math.max(1,Math.abs(it),Math.abs(yi))&&Math.abs(wt-qr)<=m.Ib*Math.max(1,Math.abs(wt),Math.abs(qr))&&Math.abs(ot-es)<=m.Ib*Math.max(1,Math.abs(ot),Math.abs(es))&&Math.abs(ut-Ci)<=m.Ib*Math.max(1,Math.abs(ut),Math.abs(Ci))&&Math.abs(_t-En)<=m.Ib*Math.max(1,Math.abs(_t),Math.abs(En))&&Math.abs($t-rn)<=m.Ib*Math.max(1,Math.abs($t),Math.abs(rn))&&Math.abs(Vt-Xt)<=m.Ib*Math.max(1,Math.abs(Vt),Math.abs(Xt))&&Math.abs(Qt-st)<=m.Ib*Math.max(1,Math.abs(Qt),Math.abs(st))&&Math.abs(cn-dt)<=m.Ib*Math.max(1,Math.abs(cn),Math.abs(dt))}var Ct=j,sn=jt},94569:function(Be,Me,b){"use strict";b.d(Me,{Fv:function(){return en},JG:function(){return Wn},Jp:function(){return D},Su:function(){return kt},U_:function(){return ct},Ue:function(){return E},al:function(){return Lt},dC:function(){return zn},t8:function(){return Xn},yY:function(){return C}});var m=b(85551),Z=b(79111),V=b(92421),N=b(97082);function E(){var Ae=new m.WT(4);return m.WT!=Float32Array&&(Ae[0]=0,Ae[1]=0,Ae[2]=0),Ae[3]=1,Ae}function F(Ae){return Ae[0]=0,Ae[1]=0,Ae[2]=0,Ae[3]=1,Ae}function C(Ae,Pe,Ut){Ut=Ut*.5;var jt=Math.sin(Ut);return Ae[0]=jt*Pe[0],Ae[1]=jt*Pe[1],Ae[2]=jt*Pe[2],Ae[3]=Math.cos(Ut),Ae}function P(Ae,Pe){var Ut=Math.acos(Pe[3])*2,jt=Math.sin(Ut/2);return jt>glMatrix.EPSILON?(Ae[0]=Pe[0]/jt,Ae[1]=Pe[1]/jt,Ae[2]=Pe[2]/jt):(Ae[0]=1,Ae[1]=0,Ae[2]=0),Ut}function H(Ae,Pe){var Ut=vn(Ae,Pe);return Math.acos(2*Ut*Ut-1)}function D(Ae,Pe,Ut){var jt=Pe[0],ft=Pe[1],on=Pe[2],hn=Pe[3],lt=Ut[0],Ct=Ut[1],sn=Ut[2],W=Ut[3];return Ae[0]=jt*W+hn*lt+ft*sn-on*Ct,Ae[1]=ft*W+hn*Ct+on*lt-jt*sn,Ae[2]=on*W+hn*sn+jt*Ct-ft*lt,Ae[3]=hn*W-jt*lt-ft*Ct-on*sn,Ae}function X(Ae,Pe,Ut){Ut*=.5;var jt=Pe[0],ft=Pe[1],on=Pe[2],hn=Pe[3],lt=Math.sin(Ut),Ct=Math.cos(Ut);return Ae[0]=jt*Ct+hn*lt,Ae[1]=ft*Ct+on*lt,Ae[2]=on*Ct-ft*lt,Ae[3]=hn*Ct-jt*lt,Ae}function j(Ae,Pe,Ut){Ut*=.5;var jt=Pe[0],ft=Pe[1],on=Pe[2],hn=Pe[3],lt=Math.sin(Ut),Ct=Math.cos(Ut);return Ae[0]=jt*Ct-on*lt,Ae[1]=ft*Ct+hn*lt,Ae[2]=on*Ct+jt*lt,Ae[3]=hn*Ct-ft*lt,Ae}function de(Ae,Pe,Ut){Ut*=.5;var jt=Pe[0],ft=Pe[1],on=Pe[2],hn=Pe[3],lt=Math.sin(Ut),Ct=Math.cos(Ut);return Ae[0]=jt*Ct+ft*lt,Ae[1]=ft*Ct-jt*lt,Ae[2]=on*Ct+hn*lt,Ae[3]=hn*Ct-on*lt,Ae}function he(Ae,Pe){var Ut=Pe[0],jt=Pe[1],ft=Pe[2];return Ae[0]=Ut,Ae[1]=jt,Ae[2]=ft,Ae[3]=Math.sqrt(Math.abs(1-Ut*Ut-jt*jt-ft*ft)),Ae}function we(Ae,Pe){var Ut=Pe[0],jt=Pe[1],ft=Pe[2],on=Pe[3],hn=Math.sqrt(Ut*Ut+jt*jt+ft*ft),lt=Math.exp(on),Ct=hn>0?lt*Math.sin(hn)/hn:0;return Ae[0]=Ut*Ct,Ae[1]=jt*Ct,Ae[2]=ft*Ct,Ae[3]=lt*Math.cos(hn),Ae}function ve(Ae,Pe){var Ut=Pe[0],jt=Pe[1],ft=Pe[2],on=Pe[3],hn=Math.sqrt(Ut*Ut+jt*jt+ft*ft),lt=hn>0?Math.atan2(hn,on)/hn:0;return Ae[0]=Ut*lt,Ae[1]=jt*lt,Ae[2]=ft*lt,Ae[3]=.5*Math.log(Ut*Ut+jt*jt+ft*ft+on*on),Ae}function Ee(Ae,Pe,Ut){return ve(Ae,Pe),dr(Ae,Ae,Ut),we(Ae,Ae),Ae}function $e(Ae,Pe,Ut,jt){var ft=Pe[0],on=Pe[1],hn=Pe[2],lt=Pe[3],Ct=Ut[0],sn=Ut[1],W=Ut[2],Se=Ut[3],Ht,zt,Fn,Tn,lr;return zt=ft*Ct+on*sn+hn*W+lt*Se,zt<0&&(zt=-zt,Ct=-Ct,sn=-sn,W=-W,Se=-Se),1-zt>m.Ib?(Ht=Math.acos(zt),Fn=Math.sin(Ht),Tn=Math.sin((1-jt)*Ht)/Fn,lr=Math.sin(jt*Ht)/Fn):(Tn=1-jt,lr=jt),Ae[0]=Tn*ft+lr*Ct,Ae[1]=Tn*on+lr*sn,Ae[2]=Tn*hn+lr*W,Ae[3]=Tn*lt+lr*Se,Ae}function Fe(Ae){var Pe=glMatrix.RANDOM(),Ut=glMatrix.RANDOM(),jt=glMatrix.RANDOM(),ft=Math.sqrt(1-Pe),on=Math.sqrt(Pe);return Ae[0]=ft*Math.sin(2*Math.PI*Ut),Ae[1]=ft*Math.cos(2*Math.PI*Ut),Ae[2]=on*Math.sin(2*Math.PI*jt),Ae[3]=on*Math.cos(2*Math.PI*jt),Ae}function ct(Ae,Pe){var Ut=Pe[0],jt=Pe[1],ft=Pe[2],on=Pe[3],hn=Ut*Ut+jt*jt+ft*ft+on*on,lt=hn?1/hn:0;return Ae[0]=-Ut*lt,Ae[1]=-jt*lt,Ae[2]=-ft*lt,Ae[3]=on*lt,Ae}function vt(Ae,Pe){return Ae[0]=-Pe[0],Ae[1]=-Pe[1],Ae[2]=-Pe[2],Ae[3]=Pe[3],Ae}function at(Ae,Pe){var Ut=Pe[0]+Pe[4]+Pe[8],jt;if(Ut>0)jt=Math.sqrt(Ut+1),Ae[3]=.5*jt,jt=.5/jt,Ae[0]=(Pe[5]-Pe[7])*jt,Ae[1]=(Pe[6]-Pe[2])*jt,Ae[2]=(Pe[1]-Pe[3])*jt;else{var ft=0;Pe[4]>Pe[0]&&(ft=1),Pe[8]>Pe[ft*3+ft]&&(ft=2);var on=(ft+1)%3,hn=(ft+2)%3;jt=Math.sqrt(Pe[ft*3+ft]-Pe[on*3+on]-Pe[hn*3+hn]+1),Ae[ft]=.5*jt,jt=.5/jt,Ae[3]=(Pe[on*3+hn]-Pe[hn*3+on])*jt,Ae[on]=(Pe[on*3+ft]+Pe[ft*3+on])*jt,Ae[hn]=(Pe[hn*3+ft]+Pe[ft*3+hn])*jt}return Ae}function kt(Ae,Pe,Ut,jt){var ft=arguments.length>4&&arguments[4]!==void 0?arguments[4]:m.yy,on=Math.PI/360;Pe*=on,jt*=on,Ut*=on;var hn=Math.sin(Pe),lt=Math.cos(Pe),Ct=Math.sin(Ut),sn=Math.cos(Ut),W=Math.sin(jt),Se=Math.cos(jt);switch(ft){case"xyz":Ae[0]=hn*sn*Se+lt*Ct*W,Ae[1]=lt*Ct*Se-hn*sn*W,Ae[2]=lt*sn*W+hn*Ct*Se,Ae[3]=lt*sn*Se-hn*Ct*W;break;case"xzy":Ae[0]=hn*sn*Se-lt*Ct*W,Ae[1]=lt*Ct*Se-hn*sn*W,Ae[2]=lt*sn*W+hn*Ct*Se,Ae[3]=lt*sn*Se+hn*Ct*W;break;case"yxz":Ae[0]=hn*sn*Se+lt*Ct*W,Ae[1]=lt*Ct*Se-hn*sn*W,Ae[2]=lt*sn*W-hn*Ct*Se,Ae[3]=lt*sn*Se+hn*Ct*W;break;case"yzx":Ae[0]=hn*sn*Se+lt*Ct*W,Ae[1]=lt*Ct*Se+hn*sn*W,Ae[2]=lt*sn*W-hn*Ct*Se,Ae[3]=lt*sn*Se-hn*Ct*W;break;case"zxy":Ae[0]=hn*sn*Se-lt*Ct*W,Ae[1]=lt*Ct*Se+hn*sn*W,Ae[2]=lt*sn*W+hn*Ct*Se,Ae[3]=lt*sn*Se-hn*Ct*W;break;case"zyx":Ae[0]=hn*sn*Se-lt*Ct*W,Ae[1]=lt*Ct*Se+hn*sn*W,Ae[2]=lt*sn*W-hn*Ct*Se,Ae[3]=lt*sn*Se+hn*Ct*W;break;default:throw new Error("Unknown angle order "+ft)}return Ae}function It(Ae){return"quat("+Ae[0]+", "+Ae[1]+", "+Ae[2]+", "+Ae[3]+")"}var Bn=N.d9,Lt=N.al,Wn=N.JG,Xn=N.t8,In=N.IH,zn=D,dr=N.bA,vn=N.AK,_r=N.t7,Ge=N.kE,Tt=null,On=N.we,Vr=null,en=N.Fv,ln=N.I6;function Cn(Ae,Pe){return Math.abs(vec4.dot(Ae,Pe))>=1-glMatrix.EPSILON}var Mt=function(){var Ae=V.Ue(),Pe=V.al(1,0,0),Ut=V.al(0,1,0);return function(jt,ft,on){var hn=V.AK(ft,on);return hn<-.999999?(V.kC(Ae,Pe,ft),V.Zh(Ae)<1e-6&&V.kC(Ae,Ut,ft),V.Fv(Ae,Ae),C(jt,Ae,Math.PI),jt):hn>.999999?(jt[0]=0,jt[1]=0,jt[2]=0,jt[3]=1,jt):(V.kC(Ae,ft,on),jt[0]=Ae[0],jt[1]=Ae[1],jt[2]=Ae[2],jt[3]=1+hn,en(jt,jt))}}(),Et=function(){var Ae=E(),Pe=E();return function(Ut,jt,ft,on,hn,lt){return $e(Ae,jt,hn,lt),$e(Pe,ft,on,lt),$e(Ut,Ae,Pe,2*lt*(1-lt)),Ut}}(),pe=function(){var Ae=Z.Ue();return function(Pe,Ut,jt,ft){return Ae[0]=jt[0],Ae[3]=jt[1],Ae[6]=jt[2],Ae[1]=ft[0],Ae[4]=ft[1],Ae[7]=ft[2],Ae[2]=-Ut[0],Ae[5]=-Ut[1],Ae[8]=-Ut[2],en(Pe,at(Pe,Ae))}}()},45545:function(Be,Me,b){"use strict";b.d(Me,{AK:function(){return Bn},Fv:function(){return It},I6:function(){return en},JG:function(){return E},Ue:function(){return Z},t8:function(){return F}});var m=b(85551);function Z(){var ft=new m.WT(2);return m.WT!=Float32Array&&(ft[0]=0,ft[1]=0),ft}function V(ft){var on=new glMatrix.ARRAY_TYPE(2);return on[0]=ft[0],on[1]=ft[1],on}function N(ft,on){var hn=new glMatrix.ARRAY_TYPE(2);return hn[0]=ft,hn[1]=on,hn}function E(ft,on){return ft[0]=on[0],ft[1]=on[1],ft}function F(ft,on,hn){return ft[0]=on,ft[1]=hn,ft}function C(ft,on,hn){return ft[0]=on[0]+hn[0],ft[1]=on[1]+hn[1],ft}function P(ft,on,hn){return ft[0]=on[0]-hn[0],ft[1]=on[1]-hn[1],ft}function H(ft,on,hn){return ft[0]=on[0]*hn[0],ft[1]=on[1]*hn[1],ft}function D(ft,on,hn){return ft[0]=on[0]/hn[0],ft[1]=on[1]/hn[1],ft}function X(ft,on){return ft[0]=Math.ceil(on[0]),ft[1]=Math.ceil(on[1]),ft}function j(ft,on){return ft[0]=Math.floor(on[0]),ft[1]=Math.floor(on[1]),ft}function de(ft,on,hn){return ft[0]=Math.min(on[0],hn[0]),ft[1]=Math.min(on[1],hn[1]),ft}function he(ft,on,hn){return ft[0]=Math.max(on[0],hn[0]),ft[1]=Math.max(on[1],hn[1]),ft}function we(ft,on){return ft[0]=glMatrix.round(on[0]),ft[1]=glMatrix.round(on[1]),ft}function ve(ft,on,hn){return ft[0]=on[0]*hn,ft[1]=on[1]*hn,ft}function Ee(ft,on,hn,lt){return ft[0]=on[0]+hn[0]*lt,ft[1]=on[1]+hn[1]*lt,ft}function $e(ft,on){var hn=on[0]-ft[0],lt=on[1]-ft[1];return Math.sqrt(hn*hn+lt*lt)}function Fe(ft,on){var hn=on[0]-ft[0],lt=on[1]-ft[1];return hn*hn+lt*lt}function ct(ft){var on=ft[0],hn=ft[1];return Math.sqrt(on*on+hn*hn)}function vt(ft){var on=ft[0],hn=ft[1];return on*on+hn*hn}function at(ft,on){return ft[0]=-on[0],ft[1]=-on[1],ft}function kt(ft,on){return ft[0]=1/on[0],ft[1]=1/on[1],ft}function It(ft,on){var hn=on[0],lt=on[1],Ct=hn*hn+lt*lt;return Ct>0&&(Ct=1/Math.sqrt(Ct)),ft[0]=on[0]*Ct,ft[1]=on[1]*Ct,ft}function Bn(ft,on){return ft[0]*on[0]+ft[1]*on[1]}function Lt(ft,on,hn){var lt=on[0]*hn[1]-on[1]*hn[0];return ft[0]=ft[1]=0,ft[2]=lt,ft}function Wn(ft,on,hn,lt){var Ct=on[0],sn=on[1];return ft[0]=Ct+lt*(hn[0]-Ct),ft[1]=sn+lt*(hn[1]-sn),ft}function Xn(ft,on){on=on===void 0?1:on;var hn=glMatrix.RANDOM()*2*Math.PI;return ft[0]=Math.cos(hn)*on,ft[1]=Math.sin(hn)*on,ft}function In(ft,on,hn){var lt=on[0],Ct=on[1];return ft[0]=hn[0]*lt+hn[2]*Ct,ft[1]=hn[1]*lt+hn[3]*Ct,ft}function zn(ft,on,hn){var lt=on[0],Ct=on[1];return ft[0]=hn[0]*lt+hn[2]*Ct+hn[4],ft[1]=hn[1]*lt+hn[3]*Ct+hn[5],ft}function dr(ft,on,hn){var lt=on[0],Ct=on[1];return ft[0]=hn[0]*lt+hn[3]*Ct+hn[6],ft[1]=hn[1]*lt+hn[4]*Ct+hn[7],ft}function vn(ft,on,hn){var lt=on[0],Ct=on[1];return ft[0]=hn[0]*lt+hn[4]*Ct+hn[12],ft[1]=hn[1]*lt+hn[5]*Ct+hn[13],ft}function _r(ft,on,hn,lt){var Ct=on[0]-hn[0],sn=on[1]-hn[1],W=Math.sin(lt),Se=Math.cos(lt);return ft[0]=Ct*Se-sn*W+hn[0],ft[1]=Ct*W+sn*Se+hn[1],ft}function Ge(ft,on){var hn=ft[0],lt=ft[1],Ct=on[0],sn=on[1];return Math.abs(Math.atan2(lt*Ct-hn*sn,hn*Ct+lt*sn))}function Tt(ft,on){var hn=ft[0],lt=ft[1],Ct=on[0],sn=on[1];return Math.atan2(hn*sn-lt*Ct,hn*Ct+lt*sn)}function On(ft){return ft[0]=0,ft[1]=0,ft}function Vr(ft){return"vec2("+ft[0]+", "+ft[1]+")"}function en(ft,on){return ft[0]===on[0]&&ft[1]===on[1]}function ln(ft,on){var hn=ft[0],lt=ft[1],Ct=on[0],sn=on[1];return Math.abs(hn-Ct)<=glMatrix.EPSILON*Math.max(1,Math.abs(hn),Math.abs(Ct))&&Math.abs(lt-sn)<=glMatrix.EPSILON*Math.max(1,Math.abs(lt),Math.abs(sn))}var Cn=null,Mt=null,Et=null,pe=null,Ae=null,Pe=null,Ut=null,jt=function(){var ft=Z();return function(on,hn,lt,Ct,sn,W){var Se,Ht;for(hn||(hn=2),lt||(lt=0),Ct?Ht=Math.min(Ct*hn+lt,on.length):Ht=on.length,Se=lt;Se0&&(Ht=1/Math.sqrt(Ht)),lt[0]=Ct[0]*Ht,lt[1]=Ct[1]*Ht,lt[2]=Ct[2]*Ht,lt}function Bn(lt,Ct){return lt[0]*Ct[0]+lt[1]*Ct[1]+lt[2]*Ct[2]}function Lt(lt,Ct,sn){var W=Ct[0],Se=Ct[1],Ht=Ct[2],zt=sn[0],Fn=sn[1],Tn=sn[2];return lt[0]=Se*Tn-Ht*Fn,lt[1]=Ht*zt-W*Tn,lt[2]=W*Fn-Se*zt,lt}function Wn(lt,Ct,sn,W){var Se=Ct[0],Ht=Ct[1],zt=Ct[2];return lt[0]=Se+W*(sn[0]-Se),lt[1]=Ht+W*(sn[1]-Ht),lt[2]=zt+W*(sn[2]-zt),lt}function Xn(lt,Ct,sn,W){var Se=Math.acos(Math.min(Math.max(Bn(Ct,sn),-1),1)),Ht=Math.sin(Se),zt=Math.sin((1-W)*Se)/Ht,Fn=Math.sin(W*Se)/Ht;return lt[0]=zt*Ct[0]+Fn*sn[0],lt[1]=zt*Ct[1]+Fn*sn[1],lt[2]=zt*Ct[2]+Fn*sn[2],lt}function In(lt,Ct,sn,W,Se,Ht){var zt=Ht*Ht,Fn=zt*(2*Ht-3)+1,Tn=zt*(Ht-2)+Ht,lr=zt*(Ht-1),je=zt*(3-2*Ht);return lt[0]=Ct[0]*Fn+sn[0]*Tn+W[0]*lr+Se[0]*je,lt[1]=Ct[1]*Fn+sn[1]*Tn+W[1]*lr+Se[1]*je,lt[2]=Ct[2]*Fn+sn[2]*Tn+W[2]*lr+Se[2]*je,lt}function zn(lt,Ct,sn,W,Se,Ht){var zt=1-Ht,Fn=zt*zt,Tn=Ht*Ht,lr=Fn*zt,je=3*Ht*Fn,be=3*Tn*zt,it=Tn*Ht;return lt[0]=Ct[0]*lr+sn[0]*je+W[0]*be+Se[0]*it,lt[1]=Ct[1]*lr+sn[1]*je+W[1]*be+Se[1]*it,lt[2]=Ct[2]*lr+sn[2]*je+W[2]*be+Se[2]*it,lt}function dr(lt,Ct){Ct=Ct===void 0?1:Ct;var sn=glMatrix.RANDOM()*2*Math.PI,W=glMatrix.RANDOM()*2-1,Se=Math.sqrt(1-W*W)*Ct;return lt[0]=Math.cos(sn)*Se,lt[1]=Math.sin(sn)*Se,lt[2]=W*Ct,lt}function vn(lt,Ct,sn){var W=Ct[0],Se=Ct[1],Ht=Ct[2],zt=sn[3]*W+sn[7]*Se+sn[11]*Ht+sn[15];return zt=zt||1,lt[0]=(sn[0]*W+sn[4]*Se+sn[8]*Ht+sn[12])/zt,lt[1]=(sn[1]*W+sn[5]*Se+sn[9]*Ht+sn[13])/zt,lt[2]=(sn[2]*W+sn[6]*Se+sn[10]*Ht+sn[14])/zt,lt}function _r(lt,Ct,sn){var W=Ct[0],Se=Ct[1],Ht=Ct[2];return lt[0]=W*sn[0]+Se*sn[3]+Ht*sn[6],lt[1]=W*sn[1]+Se*sn[4]+Ht*sn[7],lt[2]=W*sn[2]+Se*sn[5]+Ht*sn[8],lt}function Ge(lt,Ct,sn){var W=sn[0],Se=sn[1],Ht=sn[2],zt=sn[3],Fn=Ct[0],Tn=Ct[1],lr=Ct[2],je=Se*lr-Ht*Tn,be=Ht*Fn-W*lr,it=W*Tn-Se*Fn;return je=je+je,be=be+be,it=it+it,lt[0]=Fn+zt*je+Se*it-Ht*be,lt[1]=Tn+zt*be+Ht*je-W*it,lt[2]=lr+zt*it+W*be-Se*je,lt}function Tt(lt,Ct,sn,W){var Se=[],Ht=[];return Se[0]=Ct[0]-sn[0],Se[1]=Ct[1]-sn[1],Se[2]=Ct[2]-sn[2],Ht[0]=Se[0],Ht[1]=Se[1]*Math.cos(W)-Se[2]*Math.sin(W),Ht[2]=Se[1]*Math.sin(W)+Se[2]*Math.cos(W),lt[0]=Ht[0]+sn[0],lt[1]=Ht[1]+sn[1],lt[2]=Ht[2]+sn[2],lt}function On(lt,Ct,sn,W){var Se=[],Ht=[];return Se[0]=Ct[0]-sn[0],Se[1]=Ct[1]-sn[1],Se[2]=Ct[2]-sn[2],Ht[0]=Se[2]*Math.sin(W)+Se[0]*Math.cos(W),Ht[1]=Se[1],Ht[2]=Se[2]*Math.cos(W)-Se[0]*Math.sin(W),lt[0]=Ht[0]+sn[0],lt[1]=Ht[1]+sn[1],lt[2]=Ht[2]+sn[2],lt}function Vr(lt,Ct,sn,W){var Se=[],Ht=[];return Se[0]=Ct[0]-sn[0],Se[1]=Ct[1]-sn[1],Se[2]=Ct[2]-sn[2],Ht[0]=Se[0]*Math.cos(W)-Se[1]*Math.sin(W),Ht[1]=Se[0]*Math.sin(W)+Se[1]*Math.cos(W),Ht[2]=Se[2],lt[0]=Ht[0]+sn[0],lt[1]=Ht[1]+sn[1],lt[2]=Ht[2]+sn[2],lt}function en(lt,Ct){var sn=lt[0],W=lt[1],Se=lt[2],Ht=Ct[0],zt=Ct[1],Fn=Ct[2],Tn=Math.sqrt((sn*sn+W*W+Se*Se)*(Ht*Ht+zt*zt+Fn*Fn)),lr=Tn&&Bn(lt,Ct)/Tn;return Math.acos(Math.min(Math.max(lr,-1),1))}function ln(lt){return lt[0]=0,lt[1]=0,lt[2]=0,lt}function Cn(lt){return"vec3("+lt[0]+", "+lt[1]+", "+lt[2]+")"}function Mt(lt,Ct){return lt[0]===Ct[0]&<[1]===Ct[1]&<[2]===Ct[2]}function Et(lt,Ct){var sn=lt[0],W=lt[1],Se=lt[2],Ht=Ct[0],zt=Ct[1],Fn=Ct[2];return Math.abs(sn-Ht)<=m.Ib*Math.max(1,Math.abs(sn),Math.abs(Ht))&&Math.abs(W-zt)<=m.Ib*Math.max(1,Math.abs(W),Math.abs(zt))&&Math.abs(Se-Fn)<=m.Ib*Math.max(1,Math.abs(Se),Math.abs(Fn))}var pe=H,Ae=null,Pe=null,Ut=Fe,jt=null,ft=N,on=null,hn=function(){var lt=Z();return function(Ct,sn,W,Se,Ht,zt){var Fn,Tn;for(sn||(sn=3),W||(W=0),Se?Tn=Math.min(Se*sn+W,Ct.length):Tn=Ct.length,Fn=W;Fn0&&(on=1/Math.sqrt(on)),pe[0]=Pe*on,pe[1]=Ut*on,pe[2]=jt*on,pe[3]=ft*on,pe}function Bn(pe,Ae){return pe[0]*Ae[0]+pe[1]*Ae[1]+pe[2]*Ae[2]+pe[3]*Ae[3]}function Lt(pe,Ae,Pe,Ut){var jt=Pe[0]*Ut[1]-Pe[1]*Ut[0],ft=Pe[0]*Ut[2]-Pe[2]*Ut[0],on=Pe[0]*Ut[3]-Pe[3]*Ut[0],hn=Pe[1]*Ut[2]-Pe[2]*Ut[1],lt=Pe[1]*Ut[3]-Pe[3]*Ut[1],Ct=Pe[2]*Ut[3]-Pe[3]*Ut[2],sn=Ae[0],W=Ae[1],Se=Ae[2],Ht=Ae[3];return pe[0]=W*Ct-Se*lt+Ht*hn,pe[1]=-(sn*Ct)+Se*on-Ht*ft,pe[2]=sn*lt-W*on+Ht*jt,pe[3]=-(sn*hn)+W*ft-Se*jt,pe}function Wn(pe,Ae,Pe,Ut){var jt=Ae[0],ft=Ae[1],on=Ae[2],hn=Ae[3];return pe[0]=jt+Ut*(Pe[0]-jt),pe[1]=ft+Ut*(Pe[1]-ft),pe[2]=on+Ut*(Pe[2]-on),pe[3]=hn+Ut*(Pe[3]-hn),pe}function Xn(pe,Ae){Ae=Ae===void 0?1:Ae;var Pe,Ut,jt,ft,on,hn,lt;lt=glMatrix.RANDOM(),Pe=lt*2-1,Ut=(4*glMatrix.RANDOM()-2)*Math.sqrt(lt*-lt+lt),on=Pe*Pe+Ut*Ut,lt=glMatrix.RANDOM(),jt=lt*2-1,ft=(4*glMatrix.RANDOM()-2)*Math.sqrt(lt*-lt+lt),hn=jt*jt+ft*ft;var Ct=Math.sqrt((1-on)/hn);return pe[0]=Ae*Pe,pe[1]=Ae*Ut,pe[2]=Ae*jt*Ct,pe[3]=Ae*ft*Ct,pe}function In(pe,Ae,Pe){var Ut=Ae[0],jt=Ae[1],ft=Ae[2],on=Ae[3];return pe[0]=Pe[0]*Ut+Pe[4]*jt+Pe[8]*ft+Pe[12]*on,pe[1]=Pe[1]*Ut+Pe[5]*jt+Pe[9]*ft+Pe[13]*on,pe[2]=Pe[2]*Ut+Pe[6]*jt+Pe[10]*ft+Pe[14]*on,pe[3]=Pe[3]*Ut+Pe[7]*jt+Pe[11]*ft+Pe[15]*on,pe}function zn(pe,Ae,Pe){var Ut=Pe[0],jt=Pe[1],ft=Pe[2],on=Pe[3],hn=Ae[0],lt=Ae[1],Ct=Ae[2],sn=jt*Ct-ft*lt,W=ft*hn-Ut*Ct,Se=Ut*lt-jt*hn;return sn=sn+sn,W=W+W,Se=Se+Se,pe[0]=hn+on*sn+jt*Se-ft*W,pe[1]=lt+on*W+ft*sn-Ut*Se,pe[2]=Ct+on*Se+Ut*W-jt*sn,pe[3]=Ae[3],pe}function dr(pe){return pe[0]=0,pe[1]=0,pe[2]=0,pe[3]=0,pe}function vn(pe){return"vec4("+pe[0]+", "+pe[1]+", "+pe[2]+", "+pe[3]+")"}function _r(pe,Ae){return pe[0]===Ae[0]&&pe[1]===Ae[1]&&pe[2]===Ae[2]&&pe[3]===Ae[3]}function Ge(pe,Ae){var Pe=pe[0],Ut=pe[1],jt=pe[2],ft=pe[3],on=Ae[0],hn=Ae[1],lt=Ae[2],Ct=Ae[3];return Math.abs(Pe-on)<=glMatrix.EPSILON*Math.max(1,Math.abs(Pe),Math.abs(on))&&Math.abs(Ut-hn)<=glMatrix.EPSILON*Math.max(1,Math.abs(Ut),Math.abs(hn))&&Math.abs(jt-lt)<=glMatrix.EPSILON*Math.max(1,Math.abs(jt),Math.abs(lt))&&Math.abs(ft-Ct)<=glMatrix.EPSILON*Math.max(1,Math.abs(ft),Math.abs(Ct))}var Tt=null,On=null,Vr=null,en=null,ln=null,Cn=null,Mt=null,Et=function(){var pe=Z();return function(Ae,Pe,Ut,jt,ft,on){var hn,lt;for(Pe||(Pe=4),Ut||(Ut=0),jt?lt=Math.min(jt*Pe+Ut,Ae.length):lt=Ae.length,hn=Ut;hn0&&(j=X.removeMin(),de=D[j],de.distance!==Number.POSITIVE_INFINITY);)H(j).forEach(he);return D}},59324:function(Be,Me,b){var m=b(95329),Z=b(94558);Be.exports=V;function V(N){return m.filter(Z(N),function(E){return E.length>1||E.length===1&&N.hasEdge(E[0],E[0])})}},22893:function(Be,Me,b){var m=b(95329);Be.exports=V;var Z=m.constant(1);function V(E,F,C){return N(E,F||Z,C||function(P){return E.outEdges(P)})}function N(E,F,C){var P={},H=E.nodes();return H.forEach(function(D){P[D]={},P[D][D]={distance:0},H.forEach(function(X){D!==X&&(P[D][X]={distance:Number.POSITIVE_INFINITY})}),C(D).forEach(function(X){var j=X.v===D?X.w:X.v,de=F(X);P[D][j]={distance:de,predecessor:D}})}),H.forEach(function(D){var X=P[D];H.forEach(function(j){var de=P[j];H.forEach(function(he){var we=de[D],ve=X[he],Ee=de[he],$e=we.distance+ve.distance;$e0;){if(D=H.removeMin(),m.has(P,D))C.setEdge(D,P[D]);else{if(j)throw new Error("Input graph is not connected: "+E);j=!0}E.nodeEdges(D).forEach(X)}return C}},94558:function(Be,Me,b){var m=b(95329);Be.exports=Z;function Z(V){var N=0,E=[],F={},C=[];function P(H){var D=F[H]={onStack:!0,lowlink:N,index:N++};if(E.push(H),V.successors(H).forEach(function(de){m.has(F,de)?F[de].onStack&&(D.lowlink=Math.min(D.lowlink,F[de].index)):(P(de),D.lowlink=Math.min(D.lowlink,F[de].lowlink))}),D.lowlink===D.index){var X=[],j;do j=E.pop(),F[j].onStack=!1,X.push(j);while(H!==j);C.push(X)}}return V.nodes().forEach(function(H){m.has(F,H)||P(H)}),C}},7793:function(Be,Me,b){var m=b(95329);Be.exports=Z,Z.CycleException=V;function Z(N){var E={},F={},C=[];function P(H){if(m.has(F,H))throw new V;m.has(E,H)||(F[H]=!0,E[H]=!0,m.each(N.predecessors(H),P),delete F[H],C.push(H))}if(m.each(N.sinks(),P),m.size(E)!==N.nodeCount())throw new V;return C}function V(){}V.prototype=new Error},36614:function(Be,Me,b){var m=b(95329);Be.exports=Z;function Z(){this._arr=[],this._keyIndices={}}Z.prototype.size=function(){return this._arr.length},Z.prototype.keys=function(){return this._arr.map(function(V){return V.key})},Z.prototype.has=function(V){return m.has(this._keyIndices,V)},Z.prototype.priority=function(V){var N=this._keyIndices[V];if(N!==void 0)return this._arr[N].priority},Z.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},Z.prototype.add=function(V,N){var E=this._keyIndices;if(V=String(V),!m.has(E,V)){var F=this._arr,C=F.length;return E[V]=C,F.push({key:V,priority:N}),this._decrease(C),!0}return!1},Z.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var V=this._arr.pop();return delete this._keyIndices[V.key],this._heapify(0),V.key},Z.prototype.decrease=function(V,N){var E=this._keyIndices[V];if(N>this._arr[E].priority)throw new Error("New priority is greater than current priority. Key: "+V+" Old: "+this._arr[E].priority+" New: "+N);this._arr[E].priority=N,this._decrease(E)},Z.prototype._heapify=function(V){var N=this._arr,E=2*V,F=E+1,C=V;E>1,!(N[F].priority1?he.setNode(we,j):he.setNode(we)}),this},E.prototype.setNode=function(X,j){return m.has(this._nodes,X)?(arguments.length>1&&(this._nodes[X]=j),this):(this._nodes[X]=arguments.length>1?j:this._defaultNodeLabelFn(X),this._isCompound&&(this._parent[X]=V,this._children[X]={},this._children[V][X]=!0),this._in[X]={},this._preds[X]={},this._out[X]={},this._sucs[X]={},++this._nodeCount,this)},E.prototype.node=function(X){return this._nodes[X]},E.prototype.hasNode=function(X){return m.has(this._nodes,X)},E.prototype.removeNode=function(X){var j=this;if(m.has(this._nodes,X)){var de=function(he){j.removeEdge(j._edgeObjs[he])};delete this._nodes[X],this._isCompound&&(this._removeFromParentsChildList(X),delete this._parent[X],m.each(this.children(X),function(he){j.setParent(he)}),delete this._children[X]),m.each(m.keys(this._in[X]),de),delete this._in[X],delete this._preds[X],m.each(m.keys(this._out[X]),de),delete this._out[X],delete this._sucs[X],--this._nodeCount}return this},E.prototype.setParent=function(X,j){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(m.isUndefined(j))j=V;else{j+="";for(var de=j;!m.isUndefined(de);de=this.parent(de))if(de===X)throw new Error("Setting "+j+" as parent of "+X+" would create a cycle");this.setNode(j)}return this.setNode(X),this._removeFromParentsChildList(X),this._parent[X]=j,this._children[j][X]=!0,this},E.prototype._removeFromParentsChildList=function(X){delete this._children[this._parent[X]][X]},E.prototype.parent=function(X){if(this._isCompound){var j=this._parent[X];if(j!==V)return j}},E.prototype.children=function(X){if(m.isUndefined(X)&&(X=V),this._isCompound){var j=this._children[X];if(j)return m.keys(j)}else{if(X===V)return this.nodes();if(this.hasNode(X))return[]}},E.prototype.predecessors=function(X){var j=this._preds[X];if(j)return m.keys(j)},E.prototype.successors=function(X){var j=this._sucs[X];if(j)return m.keys(j)},E.prototype.neighbors=function(X){var j=this.predecessors(X);if(j)return m.union(j,this.successors(X))},E.prototype.isLeaf=function(X){var j;return this.isDirected()?j=this.successors(X):j=this.neighbors(X),j.length===0},E.prototype.filterNodes=function(X){var j=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});j.setGraph(this.graph());var de=this;m.each(this._nodes,function(ve,Ee){X(Ee)&&j.setNode(Ee,ve)}),m.each(this._edgeObjs,function(ve){j.hasNode(ve.v)&&j.hasNode(ve.w)&&j.setEdge(ve,de.edge(ve))});var he={};function we(ve){var Ee=de.parent(ve);return Ee===void 0||j.hasNode(Ee)?(he[ve]=Ee,Ee):Ee in he?he[Ee]:we(Ee)}return this._isCompound&&m.each(j.nodes(),function(ve){j.setParent(ve,we(ve))}),j},E.prototype.setDefaultEdgeLabel=function(X){return m.isFunction(X)||(X=m.constant(X)),this._defaultEdgeLabelFn=X,this},E.prototype.edgeCount=function(){return this._edgeCount},E.prototype.edges=function(){return m.values(this._edgeObjs)},E.prototype.setPath=function(X,j){var de=this,he=arguments;return m.reduce(X,function(we,ve){return he.length>1?de.setEdge(we,ve,j):de.setEdge(we,ve),ve}),this},E.prototype.setEdge=function(){var X,j,de,he,we=!1,ve=arguments[0];typeof ve=="object"&&ve!==null&&"v"in ve?(X=ve.v,j=ve.w,de=ve.name,arguments.length===2&&(he=arguments[1],we=!0)):(X=ve,j=arguments[1],de=arguments[3],arguments.length>2&&(he=arguments[2],we=!0)),X=""+X,j=""+j,m.isUndefined(de)||(de=""+de);var Ee=P(this._isDirected,X,j,de);if(m.has(this._edgeLabels,Ee))return we&&(this._edgeLabels[Ee]=he),this;if(!m.isUndefined(de)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(X),this.setNode(j),this._edgeLabels[Ee]=we?he:this._defaultEdgeLabelFn(X,j,de);var $e=H(this._isDirected,X,j,de);return X=$e.v,j=$e.w,Object.freeze($e),this._edgeObjs[Ee]=$e,F(this._preds[j],X),F(this._sucs[X],j),this._in[j][Ee]=$e,this._out[X][Ee]=$e,this._edgeCount++,this},E.prototype.edge=function(X,j,de){var he=arguments.length===1?D(this._isDirected,arguments[0]):P(this._isDirected,X,j,de);return this._edgeLabels[he]},E.prototype.hasEdge=function(X,j,de){var he=arguments.length===1?D(this._isDirected,arguments[0]):P(this._isDirected,X,j,de);return m.has(this._edgeLabels,he)},E.prototype.removeEdge=function(X,j,de){var he=arguments.length===1?D(this._isDirected,arguments[0]):P(this._isDirected,X,j,de),we=this._edgeObjs[he];return we&&(X=we.v,j=we.w,delete this._edgeLabels[he],delete this._edgeObjs[he],C(this._preds[j],X),C(this._sucs[X],j),delete this._in[j][he],delete this._out[X][he],this._edgeCount--),this},E.prototype.inEdges=function(X,j){var de=this._in[X];if(de){var he=m.values(de);return j?m.filter(he,function(we){return we.v===j}):he}},E.prototype.outEdges=function(X,j){var de=this._out[X];if(de){var he=m.values(de);return j?m.filter(he,function(we){return we.w===j}):he}},E.prototype.nodeEdges=function(X,j){var de=this.inEdges(X,j);if(de)return de.concat(this.outEdges(X,j))};function F(X,j){X[j]?X[j]++:X[j]=1}function C(X,j){--X[j]||delete X[j]}function P(X,j,de,he){var we=""+j,ve=""+de;if(!X&&we>ve){var Ee=we;we=ve,ve=Ee}return we+N+ve+N+(m.isUndefined(he)?Z:he)}function H(X,j,de,he){var we=""+j,ve=""+de;if(!X&&we>ve){var Ee=we;we=ve,ve=Ee}var $e={v:we,w:ve};return he&&($e.name=he),$e}function D(X,j){return P(X,j.v,j.w,j.name)}},89224:function(Be,Me,b){Be.exports={Graph:b(6349),version:b(16544)}},17401:function(Be,Me,b){var m=b(95329),Z=b(6349);Be.exports={write:V,read:F};function V(C){var P={options:{directed:C.isDirected(),multigraph:C.isMultigraph(),compound:C.isCompound()},nodes:N(C),edges:E(C)};return m.isUndefined(C.graph())||(P.value=m.clone(C.graph())),P}function N(C){return m.map(C.nodes(),function(P){var H=C.node(P),D=C.parent(P),X={v:P};return m.isUndefined(H)||(X.value=H),m.isUndefined(D)||(X.parent=D),X})}function E(C){return m.map(C.edges(),function(P){var H=C.edge(P),D={v:P.v,w:P.w};return m.isUndefined(P.name)||(D.name=P.name),m.isUndefined(H)||(D.value=H),D})}function F(C){var P=new Z(C.options).setGraph(C.value);return m.each(C.nodes,function(H){P.setNode(H.v,H.value),H.parent&&P.setParent(H.v,H.parent)}),m.each(C.edges,function(H){P.setEdge({v:H.v,w:H.w,name:H.name},H.value)}),P}},95329:function(Be,Me,b){var m;try{m={clone:b(76833),constant:b(13503),each:b(76934),filter:b(64725),has:b(99946),isArray:b(80744),isEmpty:b(61627),isFunction:b(9363),isUndefined:b(16513),keys:b(55451),map:b(9924),reduce:b(16473),size:b(40617),transform:b(91116),union:b(44065),values:b(81229)}}catch(Z){}m||(m=window._),Be.exports=m},16544:function(Be){Be.exports="2.1.8"},64270:function(Be){(function(Me,b){Be.exports=b()})(this,function(){"use strict";var Me=function(U,R){return Me=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function($,K){$.__proto__=K}||function($,K){for(var _e in K)Object.prototype.hasOwnProperty.call(K,_e)&&($[_e]=K[_e])},Me(U,R)};function b(U,R){if(typeof R!="function"&&R!==null)throw new TypeError("Class extends value "+String(R)+" is not a constructor or null");Me(U,R);function $(){this.constructor=U}U.prototype=R===null?Object.create(R):($.prototype=R.prototype,new $)}var m=function(){return m=Object.assign||function(R){for(var $,K=1,_e=arguments.length;K<_e;K++){$=arguments[K];for(var et in $)Object.prototype.hasOwnProperty.call($,et)&&(R[et]=$[et])}return R},m.apply(this,arguments)};function Z(U,R,$,K){function _e(et){return et instanceof $?et:new $(function(Ft){Ft(et)})}return new($||($=Promise))(function(et,Ft){function dn(ur){try{Ar(K.next(ur))}catch(Ir){Ft(Ir)}}function fn(ur){try{Ar(K.throw(ur))}catch(Ir){Ft(Ir)}}function Ar(ur){ur.done?et(ur.value):_e(ur.value).then(dn,fn)}Ar((K=K.apply(U,R||[])).next())})}function V(U,R){var $={label:0,sent:function(){if(et[0]&1)throw et[1];return et[1]},trys:[],ops:[]},K,_e,et,Ft;return Ft={next:dn(0),throw:dn(1),return:dn(2)},typeof Symbol=="function"&&(Ft[Symbol.iterator]=function(){return this}),Ft;function dn(Ar){return function(ur){return fn([Ar,ur])}}function fn(Ar){if(K)throw new TypeError("Generator is already executing.");for(;$;)try{if(K=1,_e&&(et=Ar[0]&2?_e.return:Ar[0]?_e.throw||((et=_e.return)&&et.call(_e),0):_e.next)&&!(et=et.call(_e,Ar[1])).done)return et;switch(_e=0,et&&(Ar=[Ar[0]&2,et.value]),Ar[0]){case 0:case 1:et=Ar;break;case 4:return $.label++,{value:Ar[1],done:!1};case 5:$.label++,_e=Ar[1],Ar=[0];continue;case 7:Ar=$.ops.pop(),$.trys.pop();continue;default:if(et=$.trys,!(et=et.length>0&&et[et.length-1])&&(Ar[0]===6||Ar[0]===2)){$=0;continue}if(Ar[0]===3&&(!et||Ar[1]>et[0]&&Ar[1]=55296&&_e<=56319&&$>10)+55296,Ft%1024+56320)),(_e+1===$||K.length>16384)&&(et+=String.fromCharCode.apply(String,K),K.length=0)}return et},D="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",X=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),j=0;j>4,ur[_e++]=(Ft&15)<<4|dn>>2,ur[_e++]=(dn&3)<<6|fn&63;return Ar},Ee=function(U){for(var R=U.length,$=[],K=0;K>Fe,It=1<>Fe,Wn=kt+Lt,Xn=Wn,In=32,zn=Xn+In,dr=65536>>ct,vn=1<=0){if(R<55296||R>56319&&R<=65535)return $=this.index[R>>Fe],$=($<>Fe)],$=($<>ct),$=this.index[$],$+=R>>Fe&_r,$=this.index[$],$=($<Et?(_e.push(!0),dn-=Et):_e.push(!1),["normal","auto","loose"].indexOf(R)!==-1&&[8208,8211,12316,12448].indexOf(et)!==-1)return K.push(Ft),$.push(zt);if(dn===Ut||dn===Ct){if(Ft===0)return K.push(Ft),$.push(cn);var fn=$[Ft-1];return si.indexOf(fn)===-1?(K.push(K[Ft-1]),$.push(fn)):(K.push(Ft),$.push(cn))}if(K.push(Ft),dn===Yn)return $.push(R==="strict"?be:Mi);if(dn===En||dn===Qt)return $.push(cn);if(dn===rn)return et>=131072&&et<=196605||et>=196608&&et<=262141?$.push(Mi):$.push(cn);$.push(dn)}),[K,$,_e]},w=function(U,R,$,K){var _e=K[$];if(Array.isArray(U)?U.indexOf(_e)!==-1:U===_e)for(var et=$;et<=K.length;){et++;var Ft=K[et];if(Ft===R)return!0;if(Ft!==lt)break}if(_e===lt)for(var et=$;et>0;){et--;var dn=K[et];if(Array.isArray(U)?U.indexOf(dn)!==-1:U===dn)for(var fn=$;fn<=K.length;){fn++;var Ft=K[fn];if(Ft===R)return!0;if(Ft!==lt)break}if(dn!==lt)break}return!1},z=function(U,R){for(var $=U;$>=0;){var K=R[$];if(K===lt)$--;else return K}return 0},ie=function(U,R,$,K,_e){if($[K]===0)return dt;var et=K-1;if(Array.isArray(_e)&&_e[et]===!0)return dt;var Ft=et-1,dn=et+1,fn=R[et],Ar=Ft>=0?R[Ft]:0,ur=R[dn];if(fn===Ae&&ur===Pe)return dt;if(ar.indexOf(fn)!==-1)return st;if(ar.indexOf(ur)!==-1||rr.indexOf(ur)!==-1)return dt;if(z(et,R)===on)return Wt;if(bn.get(U[et])===Ct||(fn===qn||fn===Sr)&&bn.get(U[dn])===Ct||fn===ft||ur===ft||fn===hn||[lt,W,Ht].indexOf(fn)===-1&&ur===hn||[Fn,Tn,lr,ot,Vt].indexOf(ur)!==-1||z(et,R)===it||w(wt,it,et,R)||w([Fn,Tn],be,et,R)||w(sn,sn,et,R))return dt;if(fn===lt)return Wt;if(fn===wt||ur===wt)return dt;if(ur===zt||fn===zt)return Wt;if([W,Ht,be].indexOf(ur)!==-1||fn===Se||Ar===Ki&&L.indexOf(fn)!==-1||fn===Vt&&ur===Ki||ur===je||Jt.indexOf(ur)!==-1&&fn===ut||Jt.indexOf(fn)!==-1&&ur===ut||fn===$t&&[Mi,qn,Sr].indexOf(ur)!==-1||[Mi,qn,Sr].indexOf(fn)!==-1&&ur===_t||Jt.indexOf(fn)!==-1&&Kr.indexOf(ur)!==-1||Kr.indexOf(fn)!==-1&&Jt.indexOf(ur)!==-1||[$t,_t].indexOf(fn)!==-1&&(ur===ut||[it,Ht].indexOf(ur)!==-1&&R[dn+1]===ut)||[it,Ht].indexOf(fn)!==-1&&ur===ut||fn===ut&&[ut,Vt,ot].indexOf(ur)!==-1)return dt;if([ut,Vt,ot,Fn,Tn].indexOf(ur)!==-1)for(var Ir=et;Ir>=0;){var fi=R[Ir];if(fi===ut)return dt;if([Vt,ot].indexOf(fi)!==-1)Ir--;else break}if([$t,_t].indexOf(ur)!==-1)for(var Ir=[Fn,Tn].indexOf(fn)!==-1?Ft:et;Ir>=0;){var fi=R[Ir];if(fi===ut)return dt;if([Vt,ot].indexOf(fi)!==-1)Ir--;else break}if(yi===fn&&[yi,qr,Jr,vr].indexOf(ur)!==-1||[qr,Jr].indexOf(fn)!==-1&&[qr,es].indexOf(ur)!==-1||[es,vr].indexOf(fn)!==-1&&ur===es||Ie.indexOf(fn)!==-1&&[je,_t].indexOf(ur)!==-1||Ie.indexOf(ur)!==-1&&fn===$t||Jt.indexOf(fn)!==-1&&Jt.indexOf(ur)!==-1||fn===ot&&Jt.indexOf(ur)!==-1||Jt.concat(ut).indexOf(fn)!==-1&&ur===it&&Xt.indexOf(U[dn])===-1||Jt.concat(ut).indexOf(ur)!==-1&&fn===Tn)return dt;if(fn===Ci&&ur===Ci){for(var Qs=$[et],us=1;Qs>0&&(Qs--,R[Qs]===Ci);)us++;if(us%2!==0)return dt}return fn===qn&&ur===Sr?dt:Wt},ze=function(U,R){R||(R={lineBreak:"normal",wordBreak:"normal"});var $=Q(U,R.lineBreak),K=$[0],_e=$[1],et=$[2];(R.wordBreak==="break-all"||R.wordBreak==="break-word")&&(_e=_e.map(function(dn){return[ut,cn,En].indexOf(dn)!==-1?Mi:dn}));var Ft=R.wordBreak==="keep-all"?et.map(function(dn,fn){return dn&&U[fn]>=19968&&U[fn]<=40959}):void 0;return[K,_e,Ft]},Je=function(){function U(R,$,K,_e){this.codePoints=R,this.required=$===st,this.start=K,this.end=_e}return U.prototype.slice=function(){return H.apply(void 0,this.codePoints.slice(this.start,this.end))},U}(),At=function(U,R){var $=P(U),K=ze($,R),_e=K[0],et=K[1],Ft=K[2],dn=$.length,fn=0,Ar=0;return{next:function(){if(Ar>=dn)return{done:!0,value:null};for(var ur=dt;Ar=Ai&&U<=57},sl=function(U){return U>=55296&&U<=57343},No=function(U){return ao(U)||U>=Pl&&U<=go||U>=$a&&U<=Ko},Uu=function(U){return U>=$a&&U<=bo},ws=function(U){return U>=Pl&&U<=Lu},Kh=function(U){return Uu(U)||ws(U)},dh=function(U){return U>=Gt},$h=function(U){return U===Re||U===tn||U===yt},Uh=function(U){return Kh(U)||dh(U)||U===_n},Ku=function(U){return Uh(U)||ao(U)||U===jn},sc=function(U){return U>=Di&&U<=ss||U===vs||U>=Cs&&U<=Aa||U===sa},pu=function(U,R){return U!==gt?!1:R!==Re},ou=function(U,R,$){return U===jn?Uh(R)||pu(R,$):Uh(U)?!0:!!(U===gt&&pu(U,R))},Ad=function(U,R,$){return U===Ln||U===jn?ao(R)?!0:R===Ii&&ao($):ao(U===Ii?R:U)},hf=function(U){var R=0,$=1;(U[R]===Ln||U[R]===jn)&&(U[R]===jn&&($=-1),R++);for(var K=[];ao(U[R]);)K.push(U[R++]);var _e=K.length?parseInt(H.apply(void 0,K),10):0;U[R]===Ii&&R++;for(var et=[];ao(U[R]);)et.push(U[R++]);var Ft=et.length,dn=Ft?parseInt(H.apply(void 0,et),10):0;(U[R]===il||U[R]===Zo)&&R++;var fn=1;(U[R]===Ln||U[R]===jn)&&(U[R]===jn&&(fn=-1),R++);for(var Ar=[];ao(U[R]);)Ar.push(U[R++]);var ur=Ar.length?parseInt(H.apply(void 0,Ar),10):0;return $*(_e+dn*Math.pow(10,-Ft))*Math.pow(10,fn*ur)},Xo={type:2},fh={type:3},Qf={type:4},pd={type:13},Ah={type:8},Vc={type:21},jo={type:9},gd={type:10},lu={type:11},gu={type:12},oo={type:14},Ic={type:23},jc={type:1},ph={type:25},Lo={type:24},Ji={type:26},$u={type:27},gh={type:28},mh={type:29},np={type:31},vh={type:32},Cu=function(){function U(){this._value=[]}return U.prototype.write=function(R){this._value=this._value.concat(P(R))},U.prototype.read=function(){for(var R=[],$=this.consumeToken();$!==vh;)R.push($),$=this.consumeToken();return R},U.prototype.consumeToken=function(){var R=this.consumeCodePoint();switch(R){case Yt:return this.consumeStringToken(Yt);case er:var $=this.peekCodePoint(0),K=this.peekCodePoint(1),_e=this.peekCodePoint(2);if(Ku($)||pu(K,_e)){var et=ou($,K,_e)?Sn:xt,Ft=this.consumeName();return{type:5,value:Ft,flags:et}}break;case Jn:if(this.peekCodePoint(0)===Rn)return this.consumeCodePoint(),pd;break;case fr:return this.consumeStringToken(fr);case wr:return Xo;case ei:return fh;case yn:if(this.peekCodePoint(0)===Rn)return this.consumeCodePoint(),oo;break;case Ln:if(Ad(R,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(R),this.consumeNumericToken();break;case gr:return Qf;case jn:var dn=R,fn=this.peekCodePoint(0),Ar=this.peekCodePoint(1);if(Ad(dn,fn,Ar))return this.reconsumeCodePoint(R),this.consumeNumericToken();if(ou(dn,fn,Ar))return this.reconsumeCodePoint(R),this.consumeIdentLikeToken();if(fn===jn&&Ar===$i)return this.consumeCodePoint(),this.consumeCodePoint(),Lo;break;case Ii:if(Ad(R,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(R),this.consumeNumericToken();break;case Ke:if(this.peekCodePoint(0)===yn)for(this.consumeCodePoint();;){var ur=this.consumeCodePoint();if(ur===yn&&(ur=this.consumeCodePoint(),ur===Ke))return this.consumeToken();if(ur===ca)return this.consumeToken()}break;case Rr:return Ji;case $r:return $u;case Pr:if(this.peekCodePoint(0)===Hr&&this.peekCodePoint(1)===jn&&this.peekCodePoint(2)===jn)return this.consumeCodePoint(),this.consumeCodePoint(),ph;break;case Zi:var Ir=this.peekCodePoint(0),fi=this.peekCodePoint(1),Qs=this.peekCodePoint(2);if(ou(Ir,fi,Qs)){var Ft=this.consumeName();return{type:7,value:Ft}}break;case Xi:return gh;case gt:if(pu(R,this.peekCodePoint(0)))return this.reconsumeCodePoint(R),this.consumeIdentLikeToken();break;case Ei:return mh;case ms:if(this.peekCodePoint(0)===Rn)return this.consumeCodePoint(),Ah;break;case _i:return lu;case ua:return gu;case $o:case Ll:var us=this.peekCodePoint(0),bs=this.peekCodePoint(1);return us===Ln&&(No(bs)||bs===Es)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(R),this.consumeIdentLikeToken();case Hn:if(this.peekCodePoint(0)===Rn)return this.consumeCodePoint(),jo;if(this.peekCodePoint(0)===Hn)return this.consumeCodePoint(),Vc;break;case Pt:if(this.peekCodePoint(0)===Rn)return this.consumeCodePoint(),gd;break;case ca:return vh}return $h(R)?(this.consumeWhiteSpace(),np):ao(R)?(this.reconsumeCodePoint(R),this.consumeNumericToken()):Uh(R)?(this.reconsumeCodePoint(R),this.consumeIdentLikeToken()):{type:6,value:H(R)}},U.prototype.consumeCodePoint=function(){var R=this._value.shift();return typeof R=="undefined"?-1:R},U.prototype.reconsumeCodePoint=function(R){this._value.unshift(R)},U.prototype.peekCodePoint=function(R){return R>=this._value.length?-1:this._value[R]},U.prototype.consumeUnicodeRangeToken=function(){for(var R=[],$=this.consumeCodePoint();No($)&&R.length<6;)R.push($),$=this.consumeCodePoint();for(var K=!1;$===Es&&R.length<6;)R.push($),$=this.consumeCodePoint(),K=!0;if(K){var _e=parseInt(H.apply(void 0,R.map(function(fn){return fn===Es?Ai:fn})),16),et=parseInt(H.apply(void 0,R.map(function(fn){return fn===Es?go:fn})),16);return{type:30,start:_e,end:et}}var Ft=parseInt(H.apply(void 0,R),16);if(this.peekCodePoint(0)===jn&&No(this.peekCodePoint(1))){this.consumeCodePoint(),$=this.consumeCodePoint();for(var dn=[];No($)&&dn.length<6;)dn.push($),$=this.consumeCodePoint();var et=parseInt(H.apply(void 0,dn),16);return{type:30,start:Ft,end:et}}else return{type:30,start:Ft,end:Ft}},U.prototype.consumeIdentLikeToken=function(){var R=this.consumeName();return R.toLowerCase()==="url"&&this.peekCodePoint(0)===wr?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===wr?(this.consumeCodePoint(),{type:19,value:R}):{type:20,value:R}},U.prototype.consumeUrlToken=function(){var R=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===ca)return{type:22,value:""};var $=this.peekCodePoint(0);if($===fr||$===Yt){var K=this.consumeStringToken(this.consumeCodePoint());return K.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===ca||this.peekCodePoint(0)===ei)?(this.consumeCodePoint(),{type:22,value:K.value}):(this.consumeBadUrlRemnants(),Ic)}for(;;){var _e=this.consumeCodePoint();if(_e===ca||_e===ei)return{type:22,value:H.apply(void 0,R)};if($h(_e))return this.consumeWhiteSpace(),this.peekCodePoint(0)===ca||this.peekCodePoint(0)===ei?(this.consumeCodePoint(),{type:22,value:H.apply(void 0,R)}):(this.consumeBadUrlRemnants(),Ic);if(_e===Yt||_e===fr||_e===wr||sc(_e))return this.consumeBadUrlRemnants(),Ic;if(_e===gt)if(pu(_e,this.peekCodePoint(0)))R.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),Ic;else R.push(_e)}},U.prototype.consumeWhiteSpace=function(){for(;$h(this.peekCodePoint(0));)this.consumeCodePoint()},U.prototype.consumeBadUrlRemnants=function(){for(;;){var R=this.consumeCodePoint();if(R===ei||R===ca)return;pu(R,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},U.prototype.consumeStringSlice=function(R){for(var $=5e4,K="";R>0;){var _e=Math.min($,R);K+=H.apply(void 0,this._value.splice(0,_e)),R-=_e}return this._value.shift(),K},U.prototype.consumeStringToken=function(R){var $="",K=0;do{var _e=this._value[K];if(_e===ca||_e===void 0||_e===R)return $+=this.consumeStringSlice(K),{type:0,value:$};if(_e===Re)return this._value.splice(0,K),jc;if(_e===gt){var et=this._value[K+1];et!==ca&&et!==void 0&&(et===Re?($+=this.consumeStringSlice(K),K=-1,this._value.shift()):pu(_e,et)&&($+=this.consumeStringSlice(K),$+=H(this.consumeEscapedCodePoint()),K=-1))}K++}while(!0)},U.prototype.consumeNumber=function(){var R=[],$=Oe,K=this.peekCodePoint(0);for((K===Ln||K===jn)&&R.push(this.consumeCodePoint());ao(this.peekCodePoint(0));)R.push(this.consumeCodePoint());K=this.peekCodePoint(0);var _e=this.peekCodePoint(1);if(K===Ii&&ao(_e))for(R.push(this.consumeCodePoint(),this.consumeCodePoint()),$=Qe;ao(this.peekCodePoint(0));)R.push(this.consumeCodePoint());K=this.peekCodePoint(0),_e=this.peekCodePoint(1);var et=this.peekCodePoint(2);if((K===il||K===Zo)&&((_e===Ln||_e===jn)&&ao(et)||ao(_e)))for(R.push(this.consumeCodePoint(),this.consumeCodePoint()),$=Qe;ao(this.peekCodePoint(0));)R.push(this.consumeCodePoint());return[hf(R),$]},U.prototype.consumeNumericToken=function(){var R=this.consumeNumber(),$=R[0],K=R[1],_e=this.peekCodePoint(0),et=this.peekCodePoint(1),Ft=this.peekCodePoint(2);if(ou(_e,et,Ft)){var dn=this.consumeName();return{type:15,number:$,flags:K,unit:dn}}return _e===kr?(this.consumeCodePoint(),{type:16,number:$,flags:K}):{type:17,number:$,flags:K}},U.prototype.consumeEscapedCodePoint=function(){var R=this.consumeCodePoint();if(No(R)){for(var $=H(R);No(this.peekCodePoint(0))&&$.length<6;)$+=H(this.consumeCodePoint());$h(this.peekCodePoint(0))&&this.consumeCodePoint();var K=parseInt($,16);return K===0||sl(K)||K>1114111?Bt:K}return R===ca?Bt:R},U.prototype.consumeName=function(){for(var R="";;){var $=this.consumeCodePoint();if(Ku($))R+=H($);else if(pu($,this.peekCodePoint(0)))R+=H(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint($),R}},U}(),zc=function(){function U(R){this._tokens=R}return U.create=function(R){var $=new Cu;return $.write(R),new U($.read())},U.parseValue=function(R){return U.create(R).parseComponentValue()},U.parseValues=function(R){return U.create(R).parseComponentValues()},U.prototype.parseComponentValue=function(){for(var R=this.consumeToken();R.type===31;)R=this.consumeToken();if(R.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(R);var $=this.consumeComponentValue();do R=this.consumeToken();while(R.type===31);if(R.type===32)return $;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},U.prototype.parseComponentValues=function(){for(var R=[];;){var $=this.consumeComponentValue();if($.type===32)return R;R.push($),R.push()}},U.prototype.consumeComponentValue=function(){var R=this.consumeToken();switch(R.type){case 11:case 28:case 2:return this.consumeSimpleBlock(R.type);case 19:return this.consumeFunction(R)}return R},U.prototype.consumeSimpleBlock=function(R){for(var $={type:R,values:[]},K=this.consumeToken();;){if(K.type===32||Xu(K,R))return $;this.reconsumeToken(K),$.values.push(this.consumeComponentValue()),K=this.consumeToken()}},U.prototype.consumeFunction=function(R){for(var $={name:R.value,values:[],type:18};;){var K=this.consumeToken();if(K.type===32||K.type===3)return $;this.reconsumeToken(K),$.values.push(this.consumeComponentValue())}},U.prototype.consumeToken=function(){var R=this._tokens.shift();return typeof R=="undefined"?vh:R},U.prototype.reconsumeToken=function(R){this._tokens.unshift(R)},U}(),Ul=function(U){return U.type===15},Xl=function(U){return U.type===17},Uo=function(U){return U.type===20},Ld=function(U){return U.type===0},Yc=function(U,R){return Uo(U)&&U.value===R},gl=function(U){return U.type!==31},To=function(U){return U.type!==31&&U.type!==4},ml=function(U){var R=[],$=[];return U.forEach(function(K){if(K.type===4){if($.length===0)throw new Error("Error parsing function args, zero tokens for arg");R.push($),$=[];return}K.type!==31&&$.push(K)}),$.length&&R.push($),R},Xu=function(U,R){return R===11&&U.type===12||R===28&&U.type===29?!0:R===2&&U.type===3},mu=function(U){return U.type===17||U.type===15},Oo=function(U){return U.type===16||mu(U)},Bo=function(U){return U.length>1?[U[0],U[1]]:[U[0]]},_o={type:17,number:0,flags:Oe},na={type:16,number:50,flags:Oe},Wa={type:16,number:100,flags:Oe},yh=function(U,R,$){var K=U[0],_e=U[1];return[Yo(K,R),Yo(typeof _e!="undefined"?_e:K,$)]},Yo=function(U,R){if(U.type===16)return U.number/100*R;if(Ul(U))switch(U.unit){case"rem":case"em":return 16*U.number;case"px":default:return U.number}return U.number},Tu="deg",uu="grad",wc="rad",ac="turn",Lr={name:"angle",parse:function(U,R){if(R.type===15)switch(R.unit){case Tu:return Math.PI*R.number/180;case uu:return Math.PI/200*R.number;case wc:return R.number;case ac:return Math.PI*2*R.number}throw new Error("Unsupported angle type")}},Gr=function(U){return U.type===15&&(U.unit===Tu||U.unit===uu||U.unit===wc||U.unit===ac)},ki=function(U){var R=U.filter(Uo).map(function($){return $.value}).join(" ");switch(R){case"to bottom right":case"to right bottom":case"left top":case"top left":return[_o,_o];case"to top":case"bottom":return ju(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[_o,Wa];case"to right":case"left":return ju(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[Wa,Wa];case"to bottom":case"top":return ju(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[Wa,_o];case"to left":case"right":return ju(270)}return 0},ju=function(U){return Math.PI*U/180},bl={name:"color",parse:function(U,R){if(R.type===18){var $=rp[R.name];if(typeof $=="undefined")throw new Error('Attempting to parse an unsupported color function "'+R.name+'"');return $(U,R.values)}if(R.type===5){if(R.value.length===3){var K=R.value.substring(0,1),_e=R.value.substring(1,2),et=R.value.substring(2,3);return Ou(parseInt(K+K,16),parseInt(_e+_e,16),parseInt(et+et,16),1)}if(R.value.length===4){var K=R.value.substring(0,1),_e=R.value.substring(1,2),et=R.value.substring(2,3),Ft=R.value.substring(3,4);return Ou(parseInt(K+K,16),parseInt(_e+_e,16),parseInt(et+et,16),parseInt(Ft+Ft,16)/255)}if(R.value.length===6){var K=R.value.substring(0,2),_e=R.value.substring(2,4),et=R.value.substring(4,6);return Ou(parseInt(K,16),parseInt(_e,16),parseInt(et,16),1)}if(R.value.length===8){var K=R.value.substring(0,2),_e=R.value.substring(2,4),et=R.value.substring(4,6),Ft=R.value.substring(6,8);return Ou(parseInt(K,16),parseInt(_e,16),parseInt(et,16),parseInt(Ft,16)/255)}}if(R.type===20){var dn=lc[R.value.toUpperCase()];if(typeof dn!="undefined")return dn}return lc.TRANSPARENT}},qo=function(U){return(255&U)===0},Go=function(U){var R=255&U,$=255&U>>8,K=255&U>>16,_e=255&U>>24;return R<255?"rgba("+_e+","+K+","+$+","+R/255+")":"rgb("+_e+","+K+","+$+")"},Ou=function(U,R,$,K){return(U<<24|R<<16|$<<8|Math.round(K*255)<<0)>>>0},Oh=function(U,R){if(U.type===17)return U.number;if(U.type===16){var $=R===3?1:255;return R===3?U.number/100*$:Math.round(U.number/100*$)}return 0},oc=function(U,R){var $=R.filter(To);if($.length===3){var K=$.map(Oh),_e=K[0],et=K[1],Ft=K[2];return Ou(_e,et,Ft,1)}if($.length===4){var dn=$.map(Oh),_e=dn[0],et=dn[1],Ft=dn[2],fn=dn[3];return Ou(_e,et,Ft,fn)}return 0};function Ca(U,R,$){return $<0&&($+=1),$>=1&&($-=1),$<1/6?(R-U)*$*6+U:$<1/2?R:$<2/3?(R-U)*6*(2/3-$)+U:U}var Ud=function(U,R){var $=R.filter(To),K=$[0],_e=$[1],et=$[2],Ft=$[3],dn=(K.type===17?ju(K.number):Lr.parse(U,K))/(Math.PI*2),fn=Oo(_e)?_e.number/100:0,Ar=Oo(et)?et.number/100:0,ur=typeof Ft!="undefined"&&Oo(Ft)?Yo(Ft,1):1;if(fn===0)return Ou(Ar*255,Ar*255,Ar*255,1);var Ir=Ar<=.5?Ar*(fn+1):Ar+fn-Ar*fn,fi=Ar*2-Ir,Qs=Ca(fi,Ir,dn+1/3),us=Ca(fi,Ir,dn),bs=Ca(fi,Ir,dn-1/3);return Ou(Qs*255,us*255,bs*255,ur)},rp={hsl:Ud,hsla:Ud,rgb:oc,rgba:oc},Xh=function(U,R){return bl.parse(U,zc.create(R).parseComponentValue())},lc={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},wA={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(U,R){return R.map(function($){if(Uo($))switch($.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Od={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},jh=function(U,R){var $=bl.parse(U,R[0]),K=R[1];return K&&Oo(K)?{color:$,stop:K}:{color:$,stop:null}},SA=function(U,R){var $=U[0],K=U[U.length-1];$.stop===null&&($.stop=_o),K.stop===null&&(K.stop=Wa);for(var _e=[],et=0,Ft=0;Ftet?_e.push(fn):_e.push(et),et=fn}else _e.push(null)}for(var Ar=null,Ft=0;Ft<_e.length;Ft++){var ur=_e[Ft];if(ur===null)Ar===null&&(Ar=Ft);else if(Ar!==null){for(var Ir=Ft-Ar,fi=_e[Ar-1],Qs=(ur-fi)/(Ir+1),us=1;us<=Ir;us++)_e[Ar+us-1]=Qs*us;Ar=null}}return U.map(function(bs,Ja){var fa=bs.color;return{color:fa,stop:Math.max(Math.min(1,_e[Ja]/R),0)}})},md=function(U,R,$){var K=R/2,_e=$/2,et=Yo(U[0],R)-K,Ft=_e-Yo(U[1],$);return(Math.atan2(Ft,et)+Math.PI*2)%(Math.PI*2)},vd=function(U,R,$){var K=typeof U=="number"?U:md(U,R,$),_e=Math.abs(R*Math.sin(K))+Math.abs($*Math.cos(K)),et=R/2,Ft=$/2,dn=_e/2,fn=Math.sin(K-Math.PI/2)*dn,Ar=Math.cos(K-Math.PI/2)*dn;return[_e,et-Ar,et+Ar,Ft-fn,Ft+fn]},mo=function(U,R){return Math.sqrt(U*U+R*R)},wa=function(U,R,$,K,_e){var et=[[0,0],[0,R],[U,0],[U,R]];return et.reduce(function(Ft,dn){var fn=dn[0],Ar=dn[1],ur=mo($-fn,K-Ar);return(_e?urFt.optimumDistance)?{optimumCorner:dn,optimumDistance:ur}:Ft},{optimumDistance:_e?1/0:-1/0,optimumCorner:null}).optimumCorner},Dd=function(U,R,$,K,_e){var et=0,Ft=0;switch(U.size){case 0:U.shape===0?et=Ft=Math.min(Math.abs(R),Math.abs(R-K),Math.abs($),Math.abs($-_e)):U.shape===1&&(et=Math.min(Math.abs(R),Math.abs(R-K)),Ft=Math.min(Math.abs($),Math.abs($-_e)));break;case 2:if(U.shape===0)et=Ft=Math.min(mo(R,$),mo(R,$-_e),mo(R-K,$),mo(R-K,$-_e));else if(U.shape===1){var dn=Math.min(Math.abs($),Math.abs($-_e))/Math.min(Math.abs(R),Math.abs(R-K)),fn=wa(K,_e,R,$,!0),Ar=fn[0],ur=fn[1];et=mo(Ar-R,(ur-$)/dn),Ft=dn*et}break;case 1:U.shape===0?et=Ft=Math.max(Math.abs(R),Math.abs(R-K),Math.abs($),Math.abs($-_e)):U.shape===1&&(et=Math.max(Math.abs(R),Math.abs(R-K)),Ft=Math.max(Math.abs($),Math.abs($-_e)));break;case 3:if(U.shape===0)et=Ft=Math.max(mo(R,$),mo(R,$-_e),mo(R-K,$),mo(R-K,$-_e));else if(U.shape===1){var dn=Math.max(Math.abs($),Math.abs($-_e))/Math.max(Math.abs(R),Math.abs(R-K)),Ir=wa(K,_e,R,$,!1),Ar=Ir[0],ur=Ir[1];et=mo(Ar-R,(ur-$)/dn),Ft=dn*et}break}return Array.isArray(U.size)&&(et=Yo(U.size[0],K),Ft=U.size.length===2?Yo(U.size[1],_e):et),[et,Ft]},qi=function(U,R){var $=ju(180),K=[];return ml(R).forEach(function(_e,et){if(et===0){var Ft=_e[0];if(Ft.type===20&&Ft.value==="to"){$=ki(_e);return}else if(Gr(Ft)){$=Lr.parse(U,Ft);return}}var dn=jh(U,_e);K.push(dn)}),{angle:$,stops:K,type:1}},Du=function(U,R){var $=ju(180),K=[];return ml(R).forEach(function(_e,et){if(et===0){var Ft=_e[0];if(Ft.type===20&&["top","left","right","bottom"].indexOf(Ft.value)!==-1){$=ki(_e);return}else if(Gr(Ft)){$=(Lr.parse(U,Ft)+ju(270))%ju(360);return}}var dn=jh(U,_e);K.push(dn)}),{angle:$,stops:K,type:1}},kn=function(U,R){var $=ju(180),K=[],_e=1,et=0,Ft=3,dn=[];return ml(R).forEach(function(fn,Ar){var ur=fn[0];if(Ar===0){if(Uo(ur)&&ur.value==="linear"){_e=1;return}else if(Uo(ur)&&ur.value==="radial"){_e=2;return}}if(ur.type===18){if(ur.name==="from"){var Ir=bl.parse(U,ur.values[0]);K.push({stop:_o,color:Ir})}else if(ur.name==="to"){var Ir=bl.parse(U,ur.values[0]);K.push({stop:Wa,color:Ir})}else if(ur.name==="color-stop"){var fi=ur.values.filter(To);if(fi.length===2){var Ir=bl.parse(U,fi[1]),Qs=fi[0];Xl(Qs)&&K.push({stop:{type:16,number:Qs.number*100,flags:Qs.flags},color:Ir})}}}}),_e===1?{angle:($+ju(180))%ju(360),stops:K,type:_e}:{size:Ft,shape:et,stops:K,position:dn,type:_e}},kd="closest-side",Yh="farthest-side",vl="closest-corner",He="farthest-corner",me="circle",ce="ellipse",Ze="cover",le="contain",Nt=function(U,R){var $=0,K=3,_e=[],et=[];return ml(R).forEach(function(Ft,dn){var fn=!0;if(dn===0){var Ar=!1;fn=Ft.reduce(function(Ir,fi){if(Ar)if(Uo(fi))switch(fi.value){case"center":return et.push(na),Ir;case"top":case"left":return et.push(_o),Ir;case"right":case"bottom":return et.push(Wa),Ir}else(Oo(fi)||mu(fi))&&et.push(fi);else if(Uo(fi))switch(fi.value){case me:return $=0,!1;case ce:return $=1,!1;case"at":return Ar=!0,!1;case kd:return K=0,!1;case Ze:case Yh:return K=1,!1;case le:case vl:return K=2,!1;case He:return K=3,!1}else if(mu(fi)||Oo(fi))return Array.isArray(K)||(K=[]),K.push(fi),!1;return Ir},fn)}if(fn){var ur=jh(U,Ft);_e.push(ur)}}),{size:K,shape:$,stops:_e,position:et,type:2}},Dt=function(U,R){var $=0,K=3,_e=[],et=[];return ml(R).forEach(function(Ft,dn){var fn=!0;if(dn===0?fn=Ft.reduce(function(ur,Ir){if(Uo(Ir))switch(Ir.value){case"center":return et.push(na),!1;case"top":case"left":return et.push(_o),!1;case"right":case"bottom":return et.push(Wa),!1}else if(Oo(Ir)||mu(Ir))return et.push(Ir),!1;return ur},fn):dn===1&&(fn=Ft.reduce(function(ur,Ir){if(Uo(Ir))switch(Ir.value){case me:return $=0,!1;case ce:return $=1,!1;case le:case kd:return K=0,!1;case Yh:return K=1,!1;case vl:return K=2,!1;case Ze:case He:return K=3,!1}else if(mu(Ir)||Oo(Ir))return Array.isArray(K)||(K=[]),K.push(Ir),!1;return ur},fn)),fn){var Ar=jh(U,Ft);_e.push(Ar)}}),{size:K,shape:$,stops:_e,position:et,type:2}},pn=function(U){return U.type===1},Dn=function(U){return U.type===2},hr={name:"image",parse:function(U,R){if(R.type===22){var $={url:R.value,type:0};return U.cache.addImage(R.value),$}if(R.type===18){var K=yr[R.name];if(typeof K=="undefined")throw new Error('Attempting to parse an unsupported image function "'+R.name+'"');return K(U,R.values)}throw new Error("Unsupported image type "+R.type)}};function br(U){return!(U.type===20&&U.value==="none")&&(U.type!==18||!!yr[U.name])}var yr={"linear-gradient":qi,"-moz-linear-gradient":Du,"-ms-linear-gradient":Du,"-o-linear-gradient":Du,"-webkit-linear-gradient":Du,"radial-gradient":Nt,"-moz-radial-gradient":Dt,"-ms-radial-gradient":Dt,"-o-radial-gradient":Dt,"-webkit-radial-gradient":Dt,"-webkit-gradient":kn},xr={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(U,R){if(R.length===0)return[];var $=R[0];return $.type===20&&$.value==="none"?[]:R.filter(function(K){return To(K)&&br(K)}).map(function(K){return hr.parse(U,K)})}},Fr={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(U,R){return R.map(function($){if(Uo($))switch($.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},ri={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(U,R){return ml(R).map(function($){return $.filter(Oo)}).map(Bo)}},ai={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(U,R){return ml(R).map(function($){return $.filter(Uo).map(function(K){return K.value}).join(" ")}).map(wi)}},wi=function(U){switch(U){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},Vi;(function(U){U.AUTO="auto",U.CONTAIN="contain",U.COVER="cover"})(Vi||(Vi={}));var rs={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(U,R){return ml(R).map(function($){return $.filter(as)})}},as=function(U){return Uo(U)||Oo(U)},Bs=function(U){return{name:"border-"+U+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Ls=Bs("top"),zi=Bs("right"),Ni=Bs("bottom"),Ns=Bs("left"),Os=function(U){return{name:"border-radius-"+U,initialValue:"0 0",prefix:!1,type:1,parse:function(R,$){return Bo($.filter(Oo))}}},_a=Os("top-left"),Sa=Os("top-right"),oe=Os("bottom-right"),re=Os("bottom-left"),Y=function(U){return{name:"border-"+U+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(R,$){switch($){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},J=Y("top"),fe=Y("right"),Te=Y("bottom"),De=Y("left"),Le=function(U){return{name:"border-"+U+"-width",initialValue:"0",type:0,prefix:!1,parse:function(R,$){return Ul($)?$.number:0}}},Xe=Le("top"),mt=Le("right"),Kt=Le("bottom"),nn=Le("left"),gn={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Nn={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(U,R){switch(R){case"rtl":return 1;case"ltr":default:return 0}}},$n={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(U,R){return R.filter(Uo).reduce(function($,K){return $|Er(K.value)},0)}},Er=function(U){switch(U){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},mr={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(U,R){switch(R){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},ti={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(U,R){return R.type===20&&R.value==="normal"?0:R.type===17||R.type===15?R.number:0}},jr;(function(U){U.NORMAL="normal",U.STRICT="strict"})(jr||(jr={}));var ui={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(U,R){switch(R){case"strict":return jr.STRICT;case"normal":default:return jr.NORMAL}}},gi={name:"line-height",initialValue:"normal",prefix:!1,type:4},oi=function(U,R){return Uo(U)&&U.value==="normal"?1.2*R:U.type===17?R*U.number:Oo(U)?Yo(U,R):R},ts={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(U,R){return R.type===20&&R.value==="none"?null:hr.parse(U,R)}},fs={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(U,R){switch(R){case"inside":return 0;case"outside":default:return 1}}},Ds={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(U,R){switch(R){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},Ba=function(U){return{name:"margin-"+U,initialValue:"0",prefix:!1,type:4}},Ka=Ba("top"),xo=Ba("right"),aa=Ba("bottom"),di=Ba("left"),Ma={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(U,R){return R.filter(Uo).map(function($){switch($.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},Rs={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(U,R){switch(R){case"break-word":return"break-word";case"normal":default:return"normal"}}},lo=function(U){return{name:"padding-"+U,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Jo=lo("top"),zs=lo("right"),Ya=lo("bottom"),pa=lo("left"),al={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(U,R){switch(R){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},qa={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(U,R){switch(R){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Ua={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(U,R){return R.length===1&&Yc(R[0],"none")?[]:ml(R).map(function($){for(var K={color:lc.TRANSPARENT,offsetX:_o,offsetY:_o,blur:_o},_e=0,et=0;et<$.length;et++){var Ft=$[et];mu(Ft)?(_e===0?K.offsetX=Ft:_e===1?K.offsetY=Ft:K.blur=Ft,_e++):K.color=bl.parse(U,Ft)}return K})}},dl={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(U,R){switch(R){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},Sc={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(U,R){if(R.type===20&&R.value==="none")return null;if(R.type===18){var $=uc[R.name];if(typeof $=="undefined")throw new Error('Attempting to parse an unsupported transform function "'+R.name+'"');return $(R.values)}return null}},zl=function(U){var R=U.filter(function($){return $.type===17}).map(function($){return $.number});return R.length===6?R:null},Gc=function(U){var R=U.filter(function(fn){return fn.type===17}).map(function(fn){return fn.number}),$=R[0],K=R[1];R[2],R[3];var _e=R[4],et=R[5];R[6],R[7],R[8],R[9],R[10],R[11];var Ft=R[12],dn=R[13];return R[14],R[15],R.length===16?[$,K,_e,et,Ft,dn]:null},uc={matrix:zl,matrix3d:Gc},Bu={type:16,number:50,flags:Oe},cu=[Bu,Bu],qc={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(U,R){var $=R.filter(Oo);return $.length!==2?cu:[$[0],$[1]]}},_l={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(U,R){switch(R){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},Ho;(function(U){U.NORMAL="normal",U.BREAK_ALL="break-all",U.KEEP_ALL="keep-all"})(Ho||(Ho={}));for(var jl={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(U,R){switch(R){case"break-all":return Ho.BREAK_ALL;case"keep-all":return Ho.KEEP_ALL;case"normal":default:return Ho.NORMAL}}},Jc={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(U,R){if(R.type===20)return{auto:!0,order:0};if(Xl(R))return{auto:!1,order:R.number};throw new Error("Invalid z-index number parsed")}},eh={name:"time",parse:function(U,R){if(R.type===15)switch(R.unit.toLowerCase()){case"s":return 1e3*R.number;case"ms":return R.number}throw new Error("Unsupported time type")}},df={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(U,R){return Xl(R)?R.number:1}},xh={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},MA={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(U,R){return R.filter(Uo).map(function($){switch($.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function($){return $!==0})}},yl={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(U,R){var $=[],K=[];return R.forEach(function(_e){switch(_e.type){case 20:case 0:$.push(_e.value);break;case 17:$.push(_e.number.toString());break;case 4:K.push($.join(" ")),$.length=0;break}}),$.length&&K.push($.join(" ")),K.map(function(_e){return _e.indexOf(" ")===-1?_e:"'"+_e+"'"})}},Nc={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},bh={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(U,R){if(Xl(R))return R.number;if(Uo(R))switch(R.value){case"bold":return 700;case"normal":default:return 400}return 400}},Wf={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(U,R){return R.filter(Uo).map(function($){return $.value})}},_h={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(U,R){switch(R){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},ol=function(U,R){return(U&R)!==0},Bl={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(U,R){if(R.length===0)return[];var $=R[0];return $.type===20&&$.value==="none"?[]:R}},yd={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(U,R){if(R.length===0)return null;var $=R[0];if($.type===20&&$.value==="none")return null;for(var K=[],_e=R.filter(gl),et=0;et<_e.length;et++){var Ft=_e[et],dn=_e[et+1];if(Ft.type===20){var fn=dn&&Xl(dn)?dn.number:1;K.push({counter:Ft.value,increment:fn})}}return K}},Co={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(U,R){if(R.length===0)return[];for(var $=[],K=R.filter(gl),_e=0;_e1?1:0],this.overflowWrap=Wr(R,Rs,$.overflowWrap),this.paddingTop=Wr(R,Jo,$.paddingTop),this.paddingRight=Wr(R,zs,$.paddingRight),this.paddingBottom=Wr(R,Ya,$.paddingBottom),this.paddingLeft=Wr(R,pa,$.paddingLeft),this.paintOrder=Wr(R,Zf,$.paintOrder),this.position=Wr(R,qa,$.position),this.textAlign=Wr(R,al,$.textAlign),this.textDecorationColor=Wr(R,xh,(K=$.textDecorationColor)!==null&&K!==void 0?K:$.color),this.textDecorationLine=Wr(R,MA,(_e=$.textDecorationLine)!==null&&_e!==void 0?_e:$.textDecoration),this.textShadow=Wr(R,Ua,$.textShadow),this.textTransform=Wr(R,dl,$.textTransform),this.transform=Wr(R,Sc,$.transform),this.transformOrigin=Wr(R,qc,$.transformOrigin),this.visibility=Wr(R,_l,$.visibility),this.webkitTextStrokeColor=Wr(R,ku,$.webkitTextStrokeColor),this.webkitTextStrokeWidth=Wr(R,Dh,$.webkitTextStrokeWidth),this.wordBreak=Wr(R,jl,$.wordBreak),this.zIndex=Wr(R,Jc,$.zIndex)}return U.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},U.prototype.isTransparent=function(){return qo(this.backgroundColor)},U.prototype.isTransformed=function(){return this.transform!==null},U.prototype.isPositioned=function(){return this.position!==0},U.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},U.prototype.isFloating=function(){return this.float!==0},U.prototype.isInlineLevel=function(){return ol(this.display,4)||ol(this.display,33554432)||ol(this.display,268435456)||ol(this.display,536870912)||ol(this.display,67108864)||ol(this.display,134217728)},U}(),EA=function(){function U(R,$){this.content=Wr(R,Bl,$.content),this.quotes=Wr(R,Gl,$.quotes)}return U}(),zu=function(){function U(R,$){this.counterIncrement=Wr(R,yd,$.counterIncrement),this.counterReset=Wr(R,Co,$.counterReset)}return U}(),Wr=function(U,R,$){var K=new Cu,_e=$!==null&&typeof $!="undefined"?$.toString():R.initialValue;K.write(_e);var et=new zc(K.read());switch(R.type){case 2:var Ft=et.parseComponentValue();return R.parse(U,Uo(Ft)?Ft.value:R.initialValue);case 0:return R.parse(U,et.parseComponentValue());case 1:return R.parse(U,et.parseComponentValues());case 4:return et.parseComponentValue();case 3:switch(R.format){case"angle":return Lr.parse(U,et.parseComponentValue());case"color":return bl.parse(U,et.parseComponentValue());case"image":return hr.parse(U,et.parseComponentValue());case"length":var dn=et.parseComponentValue();return mu(dn)?dn:_o;case"length-percentage":var fn=et.parseComponentValue();return Oo(fn)?fn:_o;case"time":return eh.parse(U,et.parseComponentValue())}break}},Hc="data-html2canvas-debug",yu=function(U){var R=U.getAttribute(Hc);switch(R){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},Hl=function(U,R){var $=yu(U);return $===1||R===$},Yl=function(){function U(R,$){if(this.context=R,this.textNodes=[],this.elements=[],this.flags=0,Hl($,3))debugger;this.styles=new Vu(R,window.getComputedStyle($,null)),wf($)&&(this.styles.animationDuration.some(function(K){return K>0})&&($.style.animationDuration="0s"),this.styles.transform!==null&&($.style.transform="none")),this.bounds=F(this.context,$),Hl($,4)&&(this.flags|=16)}return U}(),Ql="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",Km="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ol=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),Kf=0;Kf>4,ur[_e++]=(Ft&15)<<4|dn>>2,ur[_e++]=(dn&3)<<6|fn&63;return Ar},ql=function(U){for(var R=U.length,$=[],K=0;K>$f,lm=1<<$f,qh=lm-1,th=1024>>$f,ff=kh+th,Yu=ff,Ui=32,Fc=Yu+Ui,Gu=65536>>wl,CA=1<<$m,Xf=CA-1,cc=function(U,R,$){return U.slice?U.slice(R,$):new Uint16Array(Array.prototype.slice.call(U,R,$))},Vd=function(U,R,$){return U.slice?U.slice(R,$):new Uint32Array(Array.prototype.slice.call(U,R,$))},Ru=function(U,R){var $=Zv(U),K=Array.isArray($)?Rp($):new Uint32Array($),_e=Array.isArray($)?ql($):new Uint16Array($),et=24,Ft=cc(_e,et/2,K[4]/2),dn=K[5]===2?cc(_e,(et+K[4])/2):Vd(K,Math.ceil((et+K[4])/4));return new ka(K[0],K[1],K[2],K[3],Ft,dn)},ka=function(){function U(R,$,K,_e,et,Ft){this.initialValue=R,this.errorValue=$,this.highStart=K,this.highValueIndex=_e,this.index=et,this.data=Ft}return U.prototype.get=function(R){var $;if(R>=0){if(R<55296||R>56319&&R<=65535)return $=this.index[R>>$f],$=($<>$f)],$=($<>wl),$=this.index[$],$+=R>>$f&Xf,$=this.index[$],$=($<=55296&&_e<=56319&&$>10)+55296,Ft%1024+56320)),(_e+1===$||K.length>16384)&&(et+=String.fromCharCode.apply(String,K),K.length=0)}return et},Vh=Ru(Ql),Pc="\xD7",Jh="\xF7",nh=function(U){return Vh.get(U)},Qd=function(U,R,$){var K=$-2,_e=R[K],et=R[$-1],Ft=R[$];if(et===TA&&Ft===Gd)return Pc;if(et===TA||et===Gd||et===Hd||Ft===TA||Ft===Gd||Ft===Hd)return Jh;if(et===_g&&[_g,ip,um,sp].indexOf(Ft)!==-1||(et===um||et===ip)&&(Ft===ip||Ft===Il)||(et===sp||et===Il)&&Ft===Il||Ft===bd||Ft===pf||Ft===Ip||et===zd)return Pc;if(et===bd&&Ft===jf){for(;_e===pf;)_e=R[--K];if(_e===jf)return Pc}if(et===Jl&&Ft===Jl){for(var dn=0;_e===Jl;)dn++,_e=R[--K];if(dn%2===0)return Pc}return Jh},Wd=function(U){var R=cm(U),$=R.length,K=0,_e=0,et=R.map(nh);return{next:function(){if(K>=$)return{done:!0,value:null};for(var Ft=Pc;K<$&&(Ft=Qd(R,et,++K))===Pc;);if(Ft!==Pc||K===$){var dn=wg.apply(null,R.slice(_e,K));return _e=K,{value:dn,done:!1}}return{done:!0,value:null}}}},xu=function(U){for(var R=Wd(U),$=[],K;!(K=R.next()).done;)K.value&&$.push(K.value.slice());return $},Sg=function(U){var R=123;if(U.createRange){var $=U.createRange();if($.getBoundingClientRect){var K=U.createElement("boundtest");K.style.height=R+"px",K.style.display="block",U.body.appendChild(K),$.selectNode(K);var _e=$.getBoundingClientRect(),et=Math.round(_e.height);if(U.body.removeChild(K),et===R)return!0}}return!1},vo=function(U){var R=U.createElement("boundtest");R.style.width="50px",R.style.display="block",R.style.fontSize="12px",R.style.letterSpacing="0px",R.style.wordSpacing="0px",U.body.appendChild(R);var $=U.createRange();R.innerHTML=typeof"".repeat=="function"?"👨".repeat(10):"";var K=R.firstChild,_e=P(K.data).map(function(fn){return H(fn)}),et=0,Ft={},dn=_e.every(function(fn,Ar){$.setStart(K,et),$.setEnd(K,et+fn.length);var ur=$.getBoundingClientRect();et+=fn.length;var Ir=ur.x>Ft.x||ur.y>Ft.y;return Ft=ur,Ar===0?!0:Ir});return U.body.removeChild(R),dn},gf=function(){return typeof new Image().crossOrigin!="undefined"},mf=function(){return typeof new XMLHttpRequest().responseType=="string"},Np=function(U){var R=new Image,$=U.createElement("canvas"),K=$.getContext("2d");if(!K)return!1;R.src="data:image/svg+xml,";try{K.drawImage(R,0,0),$.toDataURL()}catch(_e){return!1}return!0},rh=function(U){return U[0]===0&&U[1]===255&&U[2]===0&&U[3]===255},Mc=function(U){var R=U.createElement("canvas"),$=100;R.width=$,R.height=$;var K=R.getContext("2d");if(!K)return Promise.reject(!1);K.fillStyle="rgb(0, 255, 0)",K.fillRect(0,0,$,$);var _e=new Image,et=R.toDataURL();_e.src=et;var Ft=ih($,$,0,0,_e);return K.fillStyle="red",K.fillRect(0,0,$,$),Fp(Ft).then(function(dn){K.drawImage(dn,0,0);var fn=K.getImageData(0,0,$,$).data;K.fillStyle="red",K.fillRect(0,0,$,$);var Ar=U.createElement("div");return Ar.style.backgroundImage="url("+et+")",Ar.style.height=$+"px",rh(fn)?Fp(ih($,$,0,0,Ar)):Promise.reject(!1)}).then(function(dn){return K.drawImage(dn,0,0),rh(K.getImageData(0,0,$,$).data)}).catch(function(){return!1})},ih=function(U,R,$,K,_e){var et="http://www.w3.org/2000/svg",Ft=document.createElementNS(et,"svg"),dn=document.createElementNS(et,"foreignObject");return Ft.setAttributeNS(null,"width",U.toString()),Ft.setAttributeNS(null,"height",R.toString()),dn.setAttributeNS(null,"width","100%"),dn.setAttributeNS(null,"height","100%"),dn.setAttributeNS(null,"x",$.toString()),dn.setAttributeNS(null,"y",K.toString()),dn.setAttributeNS(null,"externalResourcesRequired","true"),Ft.appendChild(dn),dn.appendChild(_e),Ft},Fp=function(U){return new Promise(function(R,$){var K=new Image;K.onload=function(){return R(K)},K.onerror=$,K.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(U))})},Ra={get SUPPORT_RANGE_BOUNDS(){var U=Sg(document);return Object.defineProperty(Ra,"SUPPORT_RANGE_BOUNDS",{value:U}),U},get SUPPORT_WORD_BREAKING(){var U=Ra.SUPPORT_RANGE_BOUNDS&&vo(document);return Object.defineProperty(Ra,"SUPPORT_WORD_BREAKING",{value:U}),U},get SUPPORT_SVG_DRAWING(){var U=Np(document);return Object.defineProperty(Ra,"SUPPORT_SVG_DRAWING",{value:U}),U},get SUPPORT_FOREIGNOBJECT_DRAWING(){var U=typeof Array.from=="function"&&typeof window.fetch=="function"?Mc(document):Promise.resolve(!1);return Object.defineProperty(Ra,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:U}),U},get SUPPORT_CORS_IMAGES(){var U=gf();return Object.defineProperty(Ra,"SUPPORT_CORS_IMAGES",{value:U}),U},get SUPPORT_RESPONSE_TYPE(){var U=mf();return Object.defineProperty(Ra,"SUPPORT_RESPONSE_TYPE",{value:U}),U},get SUPPORT_CORS_XHR(){var U="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Ra,"SUPPORT_CORS_XHR",{value:U}),U},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var U=!!(typeof Intl!="undefined"&&Intl.Segmenter);return Object.defineProperty(Ra,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:U}),U}},Hu=function(){function U(R,$){this.text=R,this.bounds=$}return U}(),vf=function(U,R,$,K){var _e=BA(R,$),et=[],Ft=0;return _e.forEach(function(dn){if($.textDecorationLine.length||dn.trim().length>0)if(Ra.SUPPORT_RANGE_BOUNDS){var fn=wh(K,Ft,dn.length).getClientRects();if(fn.length>1){var Ar=Iu(dn),ur=0;Ar.forEach(function(fi){et.push(new Hu(fi,E.fromDOMRectList(U,wh(K,ur+Ft,fi.length).getClientRects()))),ur+=fi.length})}else et.push(new Hu(dn,E.fromDOMRectList(U,fn)))}else{var Ir=K.splitText(dn.length);et.push(new Hu(dn,_d(U,K))),K=Ir}else Ra.SUPPORT_RANGE_BOUNDS||(K=K.splitText(dn.length));Ft+=dn.length}),et},_d=function(U,R){var $=R.ownerDocument;if($){var K=$.createElement("html2canvaswrapper");K.appendChild(R.cloneNode(!0));var _e=R.parentNode;if(_e){_e.replaceChild(K,R);var et=F(U,K);return K.firstChild&&_e.replaceChild(K.firstChild,K),et}}return E.EMPTY},wh=function(U,R,$){var K=U.ownerDocument;if(!K)throw new Error("Node has no owner document");var _e=K.createRange();return _e.setStart(U,R),_e.setEnd(U,R+$),_e},Iu=function(U){if(Ra.SUPPORT_NATIVE_TEXT_SEGMENTATION){var R=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(R.segment(U)).map(function($){return $.segment})}return xu(U)},yf=function(U,R){if(Ra.SUPPORT_NATIVE_TEXT_SEGMENTATION){var $=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from($.segment(U)).map(function(K){return K.segment})}return xf(U,R)},BA=function(U,R){return R.letterSpacing!==0?Iu(U):yf(U,R)},Lc=[32,160,4961,65792,65793,4153,4241],xf=function(U,R){for(var $=At(U,{lineBreak:R.lineBreak,wordBreak:R.overflowWrap==="break-word"?"break-word":R.wordBreak}),K=[],_e,et=function(){if(_e.value){var Ft=_e.value.slice(),dn=P(Ft),fn="";dn.forEach(function(Ar){Lc.indexOf(Ar)===-1?fn+=H(Ar):(fn.length&&K.push(fn),K.push(H(Ar)),fn="")}),fn.length&&K.push(fn)}};!(_e=$.next()).done;)et();return K},Sh=function(){function U(R,$,K){this.text=bf($.data,K.textTransform),this.textBounds=vf(R,this.text,K,$)}return U}(),bf=function(U,R){switch(R){case 1:return U.toLowerCase();case 3:return U.replace(Yf,RA);case 2:return U.toUpperCase();default:return U}},Yf=/(^|\s|:|-|\(|\))([a-z])/g,RA=function(U,R,$){return U.length>0?R+$.toUpperCase():U},wd=function(U){b(R,U);function R($,K){var _e=U.call(this,$,K)||this;return _e.src=K.currentSrc||K.src,_e.intrinsicWidth=K.naturalWidth,_e.intrinsicHeight=K.naturalHeight,_e.context.cache.addImage(_e.src),_e}return R}(Yl),sh=function(U){b(R,U);function R($,K){var _e=U.call(this,$,K)||this;return _e.canvas=K,_e.intrinsicWidth=K.width,_e.intrinsicHeight=K.height,_e}return R}(Yl),Sd=function(U){b(R,U);function R($,K){var _e=U.call(this,$,K)||this,et=new XMLSerializer,Ft=F($,K);return K.setAttribute("width",Ft.width+"px"),K.setAttribute("height",Ft.height+"px"),_e.svg="data:image/svg+xml,"+encodeURIComponent(et.serializeToString(K)),_e.intrinsicWidth=K.width.baseVal.value,_e.intrinsicHeight=K.height.baseVal.value,_e.context.cache.addImage(_e.svg),_e}return R}(Yl),IA=function(U){b(R,U);function R($,K){var _e=U.call(this,$,K)||this;return _e.value=K.value,_e}return R}(Yl),NA=function(U){b(R,U);function R($,K){var _e=U.call(this,$,K)||this;return _e.start=K.start,_e.reversed=typeof K.reversed=="boolean"&&K.reversed===!0,_e}return R}(Yl),qf=[{type:15,flags:0,unit:"px",number:3}],Mg=[{type:16,flags:0,number:50}],hm=function(U){return U.width>U.height?new E(U.left+(U.width-U.height)/2,U.top,U.height,U.height):U.width0)$.textNodes.push(new Sh(U,_e,$.styles));else if(tA(_e))if(fm(_e)&&_e.assignedNodes)_e.assignedNodes().forEach(function(dn){return _f(U,dn,$,K)});else{var Ft=eA(U,_e);Ft.styles.isVisible()&&(Oi(_e,Ft,K)?Ft.flags|=4:op(Ft.styles)&&(Ft.flags|=2),Op.indexOf(_e.tagName)!==-1&&(Ft.flags|=8),$.elements.push(Ft),_e.slot,_e.shadowRoot?_f(U,_e.shadowRoot,Ft,K):!Ec(_e)&&!Do(_e)&&!zh(_e)&&_f(U,_e,Ft,K))}},eA=function(U,R){return lp(R)?new wd(U,R):Qc(R)?new sh(U,R):Do(R)?new Sd(U,R):Mh(R)?new IA(U,R):Ed(R)?new NA(U,R):Eg(R)?new Pp(U,R):zh(R)?new Lp(U,R):Ec(R)?new Md(U,R):wo(R)?new Up(U,R):new Yl(U,R)},Zd=function(U,R){var $=eA(U,R);return $.flags|=4,_f(U,R,$,$),$},Oi=function(U,R,$){return R.styles.isPositionedWithZIndex()||R.styles.opacity<1||R.styles.isTransformed()||$d(U)&&$.styles.isTransparent()},op=function(U){return U.isPositioned()||U.isFloating()},ah=function(U){return U.nodeType===Node.TEXT_NODE},tA=function(U){return U.nodeType===Node.ELEMENT_NODE},wf=function(U){return tA(U)&&typeof U.style!="undefined"&&!Kd(U)},Kd=function(U){return typeof U.className=="object"},Mh=function(U){return U.tagName==="LI"},Ed=function(U){return U.tagName==="OL"},Eg=function(U){return U.tagName==="INPUT"},Dp=function(U){return U.tagName==="HTML"},Do=function(U){return U.tagName==="svg"},$d=function(U){return U.tagName==="BODY"},Qc=function(U){return U.tagName==="CANVAS"},Eh=function(U){return U.tagName==="VIDEO"},lp=function(U){return U.tagName==="IMG"},wo=function(U){return U.tagName==="IFRAME"},Ch=function(U){return U.tagName==="STYLE"},Cg=function(U){return U.tagName==="SCRIPT"},Ec=function(U){return U.tagName==="TEXTAREA"},zh=function(U){return U.tagName==="SELECT"},fm=function(U){return U.tagName==="SLOT"},Xd=function(U){return U.tagName.indexOf("-")>0},qu=function(){function U(){this.counters={}}return U.prototype.getCounterValue=function(R){var $=this.counters[R];return $&&$.length?$[$.length-1]:1},U.prototype.getCounterValues=function(R){var $=this.counters[R];return $||[]},U.prototype.pop=function(R){var $=this;R.forEach(function(K){return $.counters[K].pop()})},U.prototype.parse=function(R){var $=this,K=R.counterIncrement,_e=R.counterReset,et=!0;K!==null&&K.forEach(function(dn){var fn=$.counters[dn.counter];fn&&dn.increment!==0&&(et=!1,fn.length||fn.push(1),fn[Math.max(0,fn.length-1)]+=dn.increment)});var Ft=[];return et&&_e.forEach(function(dn){var fn=$.counters[dn.counter];Ft.push(dn.counter),fn||(fn=$.counters[dn.counter]=[]),fn.push(dn.reset)}),Ft},U}(),Th={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},oh={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u0554","\u0553","\u0552","\u0551","\u0550","\u054F","\u054E","\u054D","\u054C","\u054B","\u054A","\u0549","\u0548","\u0547","\u0546","\u0545","\u0544","\u0543","\u0542","\u0541","\u0540","\u053F","\u053E","\u053D","\u053C","\u053B","\u053A","\u0539","\u0538","\u0537","\u0536","\u0535","\u0534","\u0533","\u0532","\u0531"]},kp={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["\u05D9\u05F3","\u05D8\u05F3","\u05D7\u05F3","\u05D6\u05F3","\u05D5\u05F3","\u05D4\u05F3","\u05D3\u05F3","\u05D2\u05F3","\u05D1\u05F3","\u05D0\u05F3","\u05EA","\u05E9","\u05E8","\u05E7","\u05E6","\u05E4","\u05E2","\u05E1","\u05E0","\u05DE","\u05DC","\u05DB","\u05D9\u05D8","\u05D9\u05D7","\u05D9\u05D6","\u05D8\u05D6","\u05D8\u05D5","\u05D9","\u05D8","\u05D7","\u05D6","\u05D5","\u05D4","\u05D3","\u05D2","\u05D1","\u05D0"]},Sf={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u10F5","\u10F0","\u10EF","\u10F4","\u10EE","\u10ED","\u10EC","\u10EB","\u10EA","\u10E9","\u10E8","\u10E7","\u10E6","\u10E5","\u10E4","\u10F3","\u10E2","\u10E1","\u10E0","\u10DF","\u10DE","\u10DD","\u10F2","\u10DC","\u10DB","\u10DA","\u10D9","\u10D8","\u10D7","\u10F1","\u10D6","\u10D5","\u10D4","\u10D3","\u10D2","\u10D1","\u10D0"]},Gh=function(U,R,$,K,_e,et){return U$?_u(U,_e,et.length>0):K.integers.reduce(function(Ft,dn,fn){for(;U>=dn;)U-=dn,Ft+=K.values[fn];return Ft},"")+et},Mf=function(U,R,$,K){var _e="";do $||U--,_e=K(U)+_e,U/=R;while(U*R>=R);return _e},bu=function(U,R,$,K,_e){var et=$-R+1;return(U<0?"-":"")+(Mf(Math.abs(U),et,K,function(Ft){return H(Math.floor(Ft%et)+R)})+_e)},eu=function(U,R,$){$===void 0&&($=". ");var K=R.length;return Mf(Math.abs(U),K,!1,function(_e){return R[Math.floor(_e%K)]})+$},Ef=1,Dl=2,Bh=4,Cf=8,tu=function(U,R,$,K,_e,et){if(U<-9999||U>9999)return _u(U,4,_e.length>0);var Ft=Math.abs(U),dn=_e;if(Ft===0)return R[0]+dn;for(var fn=0;Ft>0&&fn<=4;fn++){var Ar=Ft%10;Ar===0&&ol(et,Ef)&&dn!==""?dn=R[Ar]+dn:Ar>1||Ar===1&&fn===0||Ar===1&&fn===1&&ol(et,Dl)||Ar===1&&fn===1&&ol(et,Bh)&&U>100||Ar===1&&fn>1&&ol(et,Cf)?dn=R[Ar]+(fn>0?$[fn-1]:"")+dn:Ar===1&&fn>0&&(dn=$[fn-1]+dn),Ft=Math.floor(Ft/10)}return(U<0?K:"")+dn},FA="\u5341\u767E\u5343\u842C",Wc="\u62FE\u4F70\u4EDF\u842C",PA="\u30DE\u30A4\u30CA\u30B9",jd="\uB9C8\uC774\uB108\uC2A4",_u=function(U,R,$){var K=$?". ":"",_e=$?"\u3001":"",et=$?", ":"",Ft=$?" ":"";switch(R){case 0:return"\u2022"+Ft;case 1:return"\u25E6"+Ft;case 2:return"\u25FE"+Ft;case 5:var dn=bu(U,48,57,!0,K);return dn.length<4?"0"+dn:dn;case 4:return eu(U,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",_e);case 6:return Gh(U,1,3999,Th,3,K).toLowerCase();case 7:return Gh(U,1,3999,Th,3,K);case 8:return bu(U,945,969,!1,K);case 9:return bu(U,97,122,!1,K);case 10:return bu(U,65,90,!1,K);case 11:return bu(U,1632,1641,!0,K);case 12:case 49:return Gh(U,1,9999,oh,3,K);case 35:return Gh(U,1,9999,oh,3,K).toLowerCase();case 13:return bu(U,2534,2543,!0,K);case 14:case 30:return bu(U,6112,6121,!0,K);case 15:return eu(U,"\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5",_e);case 16:return eu(U,"\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678",_e);case 17:case 48:return tu(U,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",FA,"\u8CA0",_e,Dl|Bh|Cf);case 47:return tu(U,"\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396",Wc,"\u8CA0",_e,Ef|Dl|Bh|Cf);case 42:return tu(U,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",FA,"\u8D1F",_e,Dl|Bh|Cf);case 41:return tu(U,"\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396",Wc,"\u8D1F",_e,Ef|Dl|Bh|Cf);case 26:return tu(U,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u4E07",PA,_e,0);case 25:return tu(U,"\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343\u4E07",PA,_e,Ef|Dl|Bh);case 31:return tu(U,"\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C","\uC2ED\uBC31\uCC9C\uB9CC",jd,et,Ef|Dl|Bh);case 33:return tu(U,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u842C",jd,et,0);case 32:return tu(U,"\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343",jd,et,Ef|Dl|Bh);case 18:return bu(U,2406,2415,!0,K);case 20:return Gh(U,1,19999,Sf,3,K);case 21:return bu(U,2790,2799,!0,K);case 22:return bu(U,2662,2671,!0,K);case 22:return Gh(U,1,10999,kp,3,K);case 23:return eu(U,"\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093");case 24:return eu(U,"\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059");case 27:return bu(U,3302,3311,!0,K);case 28:return eu(U,"\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3",_e);case 29:return eu(U,"\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9",_e);case 34:return bu(U,3792,3801,!0,K);case 37:return bu(U,6160,6169,!0,K);case 38:return bu(U,4160,4169,!0,K);case 39:return bu(U,2918,2927,!0,K);case 40:return bu(U,1776,1785,!0,K);case 43:return bu(U,3046,3055,!0,K);case 44:return bu(U,3174,3183,!0,K);case 45:return bu(U,3664,3673,!0,K);case 46:return bu(U,3872,3881,!0,K);case 3:default:return bu(U,48,57,!0,K)}},Yd="data-html2canvas-ignore",up=function(){function U(R,$,K){if(this.context=R,this.options=K,this.scrolledElements=[],this.referenceElement=$,this.counters=new qu,this.quoteDepth=0,!$.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode($.ownerDocument.documentElement,!1)}return U.prototype.toIFrame=function(R,$){var K=this,_e=Xm(R,$);if(!_e.contentWindow)return Promise.reject("Unable to find iframe window");var et=R.defaultView.pageXOffset,Ft=R.defaultView.pageYOffset,dn=_e.contentWindow,fn=dn.document,Ar=cp(_e).then(function(){return Z(K,void 0,void 0,function(){var ur,Ir;return V(this,function(fi){switch(fi.label){case 0:return this.scrolledElements.forEach(Vp),dn&&(dn.scrollTo($.left,$.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(dn.scrollY!==$.top||dn.scrollX!==$.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(dn.scrollX-$.left,dn.scrollY-$.top,0,0))),ur=this.options.onclone,Ir=this.clonedReferenceElement,typeof Ir=="undefined"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:fn.fonts&&fn.fonts.ready?[4,fn.fonts.ready]:[3,2];case 1:fi.sent(),fi.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,Tf(fn)]:[3,4];case 3:fi.sent(),fi.label=4;case 4:return typeof ur=="function"?[2,Promise.resolve().then(function(){return ur(fn,Ir)}).then(function(){return _e})]:[2,_e]}})})});return fn.open(),fn.write(nA(document.doctype)+""),LA(this.referenceElement.ownerDocument,et,Ft),fn.replaceChild(fn.adoptNode(this.documentElement),fn.documentElement),fn.close(),Ar},U.prototype.createElementClone=function(R){if(Hl(R,2))debugger;if(Qc(R))return this.createCanvasClone(R);if(Eh(R))return this.createVideoClone(R);if(Ch(R))return this.createStyleClone(R);var $=R.cloneNode(!1);return lp($)&&(lp(R)&&R.currentSrc&&R.currentSrc!==R.src&&($.src=R.currentSrc,$.srcset=""),$.loading==="lazy"&&($.loading="eager")),Xd($)?this.createCustomElementClone($):$},U.prototype.createCustomElementClone=function(R){var $=document.createElement("html2canvascustomelement");return nd(R.style,$),$},U.prototype.createStyleClone=function(R){try{var $=R.sheet;if($&&$.cssRules){var K=[].slice.call($.cssRules,0).reduce(function(et,Ft){return Ft&&typeof Ft.cssText=="string"?et+Ft.cssText:et},""),_e=R.cloneNode(!1);return _e.textContent=K,_e}}catch(et){if(this.context.logger.error("Unable to access cssRules property",et),et.name!=="SecurityError")throw et}return R.cloneNode(!1)},U.prototype.createCanvasClone=function(R){var $;if(this.options.inlineImages&&R.ownerDocument){var K=R.ownerDocument.createElement("img");try{return K.src=R.toDataURL(),K}catch(Ar){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",R)}}var _e=R.cloneNode(!1);try{_e.width=R.width,_e.height=R.height;var et=R.getContext("2d"),Ft=_e.getContext("2d");if(Ft)if(!this.options.allowTaint&&et)Ft.putImageData(et.getImageData(0,0,R.width,R.height),0,0);else{var dn=($=R.getContext("webgl2"))!==null&&$!==void 0?$:R.getContext("webgl");if(dn){var fn=dn.getContextAttributes();(fn==null?void 0:fn.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",R)}Ft.drawImage(R,0,0)}return _e}catch(Ar){this.context.logger.info("Unable to clone canvas as it is tainted",R)}return _e},U.prototype.createVideoClone=function(R){var $=R.ownerDocument.createElement("canvas");$.width=R.offsetWidth,$.height=R.offsetHeight;var K=$.getContext("2d");try{return K&&(K.drawImage(R,0,0,$.width,$.height),this.options.allowTaint||K.getImageData(0,0,$.width,$.height)),$}catch(et){this.context.logger.info("Unable to clone video as it is tainted",R)}var _e=R.ownerDocument.createElement("canvas");return _e.width=R.offsetWidth,_e.height=R.offsetHeight,_e},U.prototype.appendChildNode=function(R,$,K){(!tA($)||!Cg($)&&!$.hasAttribute(Yd)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements($)))&&(!this.options.copyStyles||!tA($)||!Ch($))&&R.appendChild(this.cloneNode($,K))},U.prototype.cloneChildNodes=function(R,$,K){for(var _e=this,et=R.shadowRoot?R.shadowRoot.firstChild:R.firstChild;et;et=et.nextSibling)if(tA(et)&&fm(et)&&typeof et.assignedNodes=="function"){var Ft=et.assignedNodes();Ft.length&&Ft.forEach(function(dn){return _e.appendChildNode($,dn,K)})}else this.appendChildNode($,et,K)},U.prototype.cloneNode=function(R,$){if(ah(R))return document.createTextNode(R.data);if(!R.ownerDocument)return R.cloneNode(!1);var K=R.ownerDocument.defaultView;if(K&&tA(R)&&(wf(R)||Kd(R))){var _e=this.createElementClone(R);_e.style.transitionProperty="none";var et=K.getComputedStyle(R),Ft=K.getComputedStyle(R,":before"),dn=K.getComputedStyle(R,":after");this.referenceElement===R&&wf(_e)&&(this.clonedReferenceElement=_e),$d(_e)&&Kv(_e);var fn=this.counters.parse(new zu(this.context,et)),Ar=this.resolvePseudoContent(R,_e,Ft,lh.BEFORE);Xd(R)&&($=!0),Eh(R)||this.cloneChildNodes(R,_e,$),Ar&&_e.insertBefore(Ar,_e.firstChild);var ur=this.resolvePseudoContent(R,_e,dn,lh.AFTER);return ur&&_e.appendChild(ur),this.counters.pop(fn),(et&&(this.options.copyStyles||Kd(R))&&!wo(R)||$)&&nd(et,_e),(R.scrollTop!==0||R.scrollLeft!==0)&&this.scrolledElements.push([_e,R.scrollLeft,R.scrollTop]),(Ec(R)||zh(R))&&(Ec(_e)||zh(_e))&&(_e.value=R.value),_e}return R.cloneNode(!1)},U.prototype.resolvePseudoContent=function(R,$,K,_e){var et=this;if(K){var Ft=K.content,dn=$.ownerDocument;if(!(!dn||!Ft||Ft==="none"||Ft==="-moz-alt-content"||K.display==="none")){this.counters.parse(new zu(this.context,K));var fn=new EA(this.context,K),Ar=dn.createElement("html2canvaspseudoelement");nd(K,Ar),fn.content.forEach(function(Ir){if(Ir.type===0)Ar.appendChild(dn.createTextNode(Ir.value));else if(Ir.type===22){var fi=dn.createElement("img");fi.src=Ir.value,fi.style.opacity="1",Ar.appendChild(fi)}else if(Ir.type===18){if(Ir.name==="attr"){var Qs=Ir.values.filter(Uo);Qs.length&&Ar.appendChild(dn.createTextNode(R.getAttribute(Qs[0].value)||""))}else if(Ir.name==="counter"){var us=Ir.values.filter(To),bs=us[0],Ja=us[1];if(bs&&Uo(bs)){var fa=et.counters.getCounterValue(bs.value),ea=Ja&&Uo(Ja)?Ds.parse(et.context,Ja.value):3;Ar.appendChild(dn.createTextNode(_u(fa,ea,!1)))}}else if(Ir.name==="counters"){var ko=Ir.values.filter(To),bs=ko[0],uo=ko[1],Ja=ko[2];if(bs&&Uo(bs)){var Oa=et.counters.getCounterValues(bs.value),ks=Ja&&Uo(Ja)?Ds.parse(et.context,Ja.value):3,So=uo&&uo.type===0?uo.value:"",eo=Oa.map(function(wu){return _u(wu,ks,!1)}).join(So);Ar.appendChild(dn.createTextNode(eo))}}}else if(Ir.type===20)switch(Ir.value){case"open-quote":Ar.appendChild(dn.createTextNode(Ea(fn.quotes,et.quoteDepth++,!0)));break;case"close-quote":Ar.appendChild(dn.createTextNode(Ea(fn.quotes,--et.quoteDepth,!1)));break;default:Ar.appendChild(dn.createTextNode(Ir.value))}}),Ar.className=UA+" "+hp;var ur=_e===lh.BEFORE?" "+UA:" "+hp;return Kd($)?$.className.baseValue+=ur:$.className+=ur,Ar}}},U.destroy=function(R){return R.parentNode?(R.parentNode.removeChild(R),!0):!1},U}(),lh;(function(U){U[U.BEFORE=0]="BEFORE",U[U.AFTER=1]="AFTER"})(lh||(lh={}));var Xm=function(U,R){var $=U.createElement("iframe");return $.className="html2canvas-container",$.style.visibility="hidden",$.style.position="fixed",$.style.left="-10000px",$.style.top="0px",$.style.border="0",$.width=R.width.toString(),$.height=R.height.toString(),$.scrolling="no",$.setAttribute(Yd,"true"),U.body.appendChild($),$},fl=function(U){return new Promise(function(R){if(U.complete){R();return}if(!U.src){R();return}U.onload=R,U.onerror=R})},Tf=function(U){return Promise.all([].slice.call(U.images,0).map(fl))},cp=function(U){return new Promise(function(R,$){var K=U.contentWindow;if(!K)return $("No window assigned for iframe");var _e=K.document;K.onload=U.onload=function(){K.onload=U.onload=null;var et=setInterval(function(){_e.body.childNodes.length>0&&_e.readyState==="complete"&&(clearInterval(et),R(U))},50)}})},Tg=["all","d","content"],nd=function(U,R){for(var $=U.length-1;$>=0;$--){var K=U.item($);Tg.indexOf(K)===-1&&R.style.setProperty(K,U.getPropertyValue(K))}return R},nA=function(U){var R="";return U&&(R+=""),R},LA=function(U,R,$){U&&U.defaultView&&(R!==U.defaultView.pageXOffset||$!==U.defaultView.pageYOffset)&&U.defaultView.scrollTo(R,$)},Vp=function(U){var R=U[0],$=U[1],K=U[2];R.scrollLeft=$,R.scrollTop=K},qd=":before",rA=":after",UA="___html2canvas___pseudoelement_before",hp="___html2canvas___pseudoelement_after",dp=`{ - content: "" !important; - display: none !important; -}`,Kv=function(U){jm(U,"."+UA+qd+dp+` - .`+hp+rA+dp)},jm=function(U,R){var $=U.ownerDocument;if($){var K=$.createElement("style");K.textContent=R,U.appendChild(K)}},fp=function(){function U(){}return U.getOrigin=function(R){var $=U._link;return $?($.href=R,$.href=$.href,$.protocol+$.hostname+$.port):"about:blank"},U.isSameOrigin=function(R){return U.getOrigin(R)===U._origin},U.setContext=function(R){U._link=R.document.createElement("a"),U._origin=U.getOrigin(R.location.href)},U._origin="about:blank",U}(),rd=function(){function U(R,$){this.context=R,this._options=$,this._cache={}}return U.prototype.addImage=function(R){var $=Promise.resolve();return this.has(R)||(OA(R)||Ym(R))&&(this._cache[R]=this.loadImage(R)).catch(function(){}),$},U.prototype.match=function(R){return this._cache[R]},U.prototype.loadImage=function(R){return Z(this,void 0,void 0,function(){var $,K,_e,et,Ft=this;return V(this,function(dn){switch(dn.label){case 0:return $=fp.isSameOrigin(R),K=!k0(R)&&this._options.useCORS===!0&&Ra.SUPPORT_CORS_IMAGES&&!$,_e=!k0(R)&&!$&&!OA(R)&&typeof this._options.proxy=="string"&&Ra.SUPPORT_CORS_XHR&&!K,!$&&this._options.allowTaint===!1&&!k0(R)&&!OA(R)&&!_e&&!K?[2]:(et=R,_e?[4,this.proxy(et)]:[3,2]);case 1:et=dn.sent(),dn.label=2;case 2:return this.context.logger.debug("Added image "+R.substring(0,256)),[4,new Promise(function(fn,Ar){var ur=new Image;ur.onload=function(){return fn(ur)},ur.onerror=Ar,(gm(et)||K)&&(ur.crossOrigin="anonymous"),ur.src=et,ur.complete===!0&&setTimeout(function(){return fn(ur)},500),Ft._options.imageTimeout>0&&setTimeout(function(){return Ar("Timed out ("+Ft._options.imageTimeout+"ms) loading image")},Ft._options.imageTimeout)})];case 3:return[2,dn.sent()]}})})},U.prototype.has=function(R){return typeof this._cache[R]!="undefined"},U.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},U.prototype.proxy=function(R){var $=this,K=this._options.proxy;if(!K)throw new Error("No proxy defined");var _e=R.substring(0,256);return new Promise(function(et,Ft){var dn=Ra.SUPPORT_RESPONSE_TYPE?"blob":"text",fn=new XMLHttpRequest;fn.onload=function(){if(fn.status===200)if(dn==="text")et(fn.response);else{var Ir=new FileReader;Ir.addEventListener("load",function(){return et(Ir.result)},!1),Ir.addEventListener("error",function(fi){return Ft(fi)},!1),Ir.readAsDataURL(fn.response)}else Ft("Failed to proxy resource "+_e+" with status code "+fn.status)},fn.onerror=Ft;var Ar=K.indexOf("?")>-1?"&":"?";if(fn.open("GET",""+K+Ar+"url="+encodeURIComponent(R)+"&responseType="+dn),dn!=="text"&&fn instanceof XMLHttpRequest&&(fn.responseType=dn),$._options.imageTimeout){var ur=$._options.imageTimeout;fn.timeout=ur,fn.ontimeout=function(){return Ft("Timed out ("+ur+"ms) proxying "+_e)}}fn.send()})},U}(),Am=/^data:image\/svg\+xml/i,pm=/^data:image\/.*;base64,/i,D0=/^data:image\/.*/i,Ym=function(U){return Ra.SUPPORT_SVG_DRAWING||!DA(U)},k0=function(U){return D0.test(U)},gm=function(U){return pm.test(U)},OA=function(U){return U.substr(0,4)==="blob"},DA=function(U){return U.substr(-3).toLowerCase()==="svg"||Am.test(U)},Us=function(){function U(R,$){this.type=0,this.x=R,this.y=$}return U.prototype.add=function(R,$){return new U(this.x+R,this.y+$)},U}(),Cd=function(U,R,$){return new Us(U.x+(R.x-U.x)*$,U.y+(R.y-U.y)*$)},iA=function(){function U(R,$,K,_e){this.type=1,this.start=R,this.startControl=$,this.endControl=K,this.end=_e}return U.prototype.subdivide=function(R,$){var K=Cd(this.start,this.startControl,R),_e=Cd(this.startControl,this.endControl,R),et=Cd(this.endControl,this.end,R),Ft=Cd(K,_e,R),dn=Cd(_e,et,R),fn=Cd(Ft,dn,R);return $?new U(this.start,K,Ft,fn):new U(fn,dn,et,this.end)},U.prototype.add=function(R,$){return new U(this.start.add(R,$),this.startControl.add(R,$),this.endControl.add(R,$),this.end.add(R,$))},U.prototype.reverse=function(){return new U(this.end,this.endControl,this.startControl,this.start)},U}(),Al=function(U){return U.type===1},sA=function(){function U(R){var $=R.styles,K=R.bounds,_e=yh($.borderTopLeftRadius,K.width,K.height),et=_e[0],Ft=_e[1],dn=yh($.borderTopRightRadius,K.width,K.height),fn=dn[0],Ar=dn[1],ur=yh($.borderBottomRightRadius,K.width,K.height),Ir=ur[0],fi=ur[1],Qs=yh($.borderBottomLeftRadius,K.width,K.height),us=Qs[0],bs=Qs[1],Ja=[];Ja.push((et+fn)/K.width),Ja.push((us+Ir)/K.width),Ja.push((Ft+bs)/K.height),Ja.push((Ar+fi)/K.height);var fa=Math.max.apply(Math,Ja);fa>1&&(et/=fa,Ft/=fa,fn/=fa,Ar/=fa,Ir/=fa,fi/=fa,us/=fa,bs/=fa);var ea=K.width-fn,ko=K.height-fi,uo=K.width-Ir,Oa=K.height-bs,ks=$.borderTopWidth,So=$.borderRightWidth,eo=$.borderBottomWidth,za=$.borderLeftWidth,nu=Yo($.paddingTop,R.bounds.width),wu=Yo($.paddingRight,R.bounds.width),hu=Yo($.paddingBottom,R.bounds.width),pl=Yo($.paddingLeft,R.bounds.width);this.topLeftBorderDoubleOuterBox=et>0||Ft>0?ll(K.left+za/3,K.top+ks/3,et-za/3,Ft-ks/3,Fo.TOP_LEFT):new Us(K.left+za/3,K.top+ks/3),this.topRightBorderDoubleOuterBox=et>0||Ft>0?ll(K.left+ea,K.top+ks/3,fn-So/3,Ar-ks/3,Fo.TOP_RIGHT):new Us(K.left+K.width-So/3,K.top+ks/3),this.bottomRightBorderDoubleOuterBox=Ir>0||fi>0?ll(K.left+uo,K.top+ko,Ir-So/3,fi-eo/3,Fo.BOTTOM_RIGHT):new Us(K.left+K.width-So/3,K.top+K.height-eo/3),this.bottomLeftBorderDoubleOuterBox=us>0||bs>0?ll(K.left+za/3,K.top+Oa,us-za/3,bs-eo/3,Fo.BOTTOM_LEFT):new Us(K.left+za/3,K.top+K.height-eo/3),this.topLeftBorderDoubleInnerBox=et>0||Ft>0?ll(K.left+za*2/3,K.top+ks*2/3,et-za*2/3,Ft-ks*2/3,Fo.TOP_LEFT):new Us(K.left+za*2/3,K.top+ks*2/3),this.topRightBorderDoubleInnerBox=et>0||Ft>0?ll(K.left+ea,K.top+ks*2/3,fn-So*2/3,Ar-ks*2/3,Fo.TOP_RIGHT):new Us(K.left+K.width-So*2/3,K.top+ks*2/3),this.bottomRightBorderDoubleInnerBox=Ir>0||fi>0?ll(K.left+uo,K.top+ko,Ir-So*2/3,fi-eo*2/3,Fo.BOTTOM_RIGHT):new Us(K.left+K.width-So*2/3,K.top+K.height-eo*2/3),this.bottomLeftBorderDoubleInnerBox=us>0||bs>0?ll(K.left+za*2/3,K.top+Oa,us-za*2/3,bs-eo*2/3,Fo.BOTTOM_LEFT):new Us(K.left+za*2/3,K.top+K.height-eo*2/3),this.topLeftBorderStroke=et>0||Ft>0?ll(K.left+za/2,K.top+ks/2,et-za/2,Ft-ks/2,Fo.TOP_LEFT):new Us(K.left+za/2,K.top+ks/2),this.topRightBorderStroke=et>0||Ft>0?ll(K.left+ea,K.top+ks/2,fn-So/2,Ar-ks/2,Fo.TOP_RIGHT):new Us(K.left+K.width-So/2,K.top+ks/2),this.bottomRightBorderStroke=Ir>0||fi>0?ll(K.left+uo,K.top+ko,Ir-So/2,fi-eo/2,Fo.BOTTOM_RIGHT):new Us(K.left+K.width-So/2,K.top+K.height-eo/2),this.bottomLeftBorderStroke=us>0||bs>0?ll(K.left+za/2,K.top+Oa,us-za/2,bs-eo/2,Fo.BOTTOM_LEFT):new Us(K.left+za/2,K.top+K.height-eo/2),this.topLeftBorderBox=et>0||Ft>0?ll(K.left,K.top,et,Ft,Fo.TOP_LEFT):new Us(K.left,K.top),this.topRightBorderBox=fn>0||Ar>0?ll(K.left+ea,K.top,fn,Ar,Fo.TOP_RIGHT):new Us(K.left+K.width,K.top),this.bottomRightBorderBox=Ir>0||fi>0?ll(K.left+uo,K.top+ko,Ir,fi,Fo.BOTTOM_RIGHT):new Us(K.left+K.width,K.top+K.height),this.bottomLeftBorderBox=us>0||bs>0?ll(K.left,K.top+Oa,us,bs,Fo.BOTTOM_LEFT):new Us(K.left,K.top+K.height),this.topLeftPaddingBox=et>0||Ft>0?ll(K.left+za,K.top+ks,Math.max(0,et-za),Math.max(0,Ft-ks),Fo.TOP_LEFT):new Us(K.left+za,K.top+ks),this.topRightPaddingBox=fn>0||Ar>0?ll(K.left+Math.min(ea,K.width-So),K.top+ks,ea>K.width+So?0:Math.max(0,fn-So),Math.max(0,Ar-ks),Fo.TOP_RIGHT):new Us(K.left+K.width-So,K.top+ks),this.bottomRightPaddingBox=Ir>0||fi>0?ll(K.left+Math.min(uo,K.width-za),K.top+Math.min(ko,K.height-eo),Math.max(0,Ir-So),Math.max(0,fi-eo),Fo.BOTTOM_RIGHT):new Us(K.left+K.width-So,K.top+K.height-eo),this.bottomLeftPaddingBox=us>0||bs>0?ll(K.left+za,K.top+Math.min(Oa,K.height-eo),Math.max(0,us-za),Math.max(0,bs-eo),Fo.BOTTOM_LEFT):new Us(K.left+za,K.top+K.height-eo),this.topLeftContentBox=et>0||Ft>0?ll(K.left+za+pl,K.top+ks+nu,Math.max(0,et-(za+pl)),Math.max(0,Ft-(ks+nu)),Fo.TOP_LEFT):new Us(K.left+za+pl,K.top+ks+nu),this.topRightContentBox=fn>0||Ar>0?ll(K.left+Math.min(ea,K.width+za+pl),K.top+ks+nu,ea>K.width+za+pl?0:fn-za+pl,Ar-(ks+nu),Fo.TOP_RIGHT):new Us(K.left+K.width-(So+wu),K.top+ks+nu),this.bottomRightContentBox=Ir>0||fi>0?ll(K.left+Math.min(uo,K.width-(za+pl)),K.top+Math.min(ko,K.height+ks+nu),Math.max(0,Ir-(So+wu)),fi-(eo+hu),Fo.BOTTOM_RIGHT):new Us(K.left+K.width-(So+wu),K.top+K.height-(eo+hu)),this.bottomLeftContentBox=us>0||bs>0?ll(K.left+za+pl,K.top+Oa,Math.max(0,us-(za+pl)),bs-(eo+hu),Fo.BOTTOM_LEFT):new Us(K.left+za+pl,K.top+K.height-(eo+hu))}return U}(),Fo;(function(U){U[U.TOP_LEFT=0]="TOP_LEFT",U[U.TOP_RIGHT=1]="TOP_RIGHT",U[U.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",U[U.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(Fo||(Fo={}));var ll=function(U,R,$,K,_e){var et=4*((Math.sqrt(2)-1)/3),Ft=$*et,dn=K*et,fn=U+$,Ar=R+K;switch(_e){case Fo.TOP_LEFT:return new iA(new Us(U,Ar),new Us(U,Ar-dn),new Us(fn-Ft,R),new Us(fn,R));case Fo.TOP_RIGHT:return new iA(new Us(U,R),new Us(U+Ft,R),new Us(fn,Ar-dn),new Us(fn,Ar));case Fo.BOTTOM_RIGHT:return new iA(new Us(fn,R),new Us(fn,R+dn),new Us(U+Ft,Ar),new Us(U,Ar));case Fo.BOTTOM_LEFT:default:return new iA(new Us(fn,Ar),new Us(fn-Ft,Ar),new Us(U,R+dn),new Us(U,R))}},hc=function(U){return[U.topLeftBorderBox,U.topRightBorderBox,U.bottomRightBorderBox,U.bottomLeftBorderBox]},Cc=function(U){return[U.topLeftContentBox,U.topRightContentBox,U.bottomRightContentBox,U.bottomLeftContentBox]},Rh=function(U){return[U.topLeftPaddingBox,U.topRightPaddingBox,U.bottomRightPaddingBox,U.bottomLeftPaddingBox]},Bf=function(){function U(R,$,K){this.offsetX=R,this.offsetY=$,this.matrix=K,this.type=0,this.target=6}return U}(),Rf=function(){function U(R,$){this.path=R,this.target=$,this.type=1}return U}(),aA=function(){function U(R){this.opacity=R,this.type=2,this.target=6}return U}(),kA=function(U){return U.type===0},oA=function(U){return U.type===1},VA=function(U){return U.type===2},mm=function(U,R){return U.length===R.length?U.some(function($,K){return $===R[K]}):!1},Hh=function(U,R,$,K,_e){return U.map(function(et,Ft){switch(Ft){case 0:return et.add(R,$);case 1:return et.add(R+K,$);case 2:return et.add(R+K,$+_e);case 3:return et.add(R,$+_e)}return et})},zp=function(){function U(R){this.element=R,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return U}(),vm=function(){function U(R,$){if(this.container=R,this.parent=$,this.effects=[],this.curves=new sA(this.container),this.container.styles.opacity<1&&this.effects.push(new aA(this.container.styles.opacity)),this.container.styles.transform!==null){var K=this.container.bounds.left+this.container.styles.transformOrigin[0].number,_e=this.container.bounds.top+this.container.styles.transformOrigin[1].number,et=this.container.styles.transform;this.effects.push(new Bf(K,_e,et))}if(this.container.styles.overflowX!==0){var Ft=hc(this.curves),dn=Rh(this.curves);mm(Ft,dn)?this.effects.push(new Rf(Ft,6)):(this.effects.push(new Rf(Ft,2)),this.effects.push(new Rf(dn,4)))}}return U.prototype.getEffects=function(R){for(var $=[2,3].indexOf(this.container.styles.position)===-1,K=this.parent,_e=this.effects.slice(0);K;){var et=K.effects.filter(function(fn){return!oA(fn)});if($||K.container.styles.position!==0||!K.parent){if(_e.unshift.apply(_e,et),$=[2,3].indexOf(K.container.styles.position)===-1,K.container.styles.overflowX!==0){var Ft=hc(K.curves),dn=Rh(K.curves);mm(Ft,dn)||_e.unshift(new Rf(dn,6))}}else _e.unshift.apply(_e,et);K=K.parent}return _e.filter(function(fn){return ol(fn.target,R)})},U}(),zA=function(U,R,$,K){U.container.elements.forEach(function(_e){var et=ol(_e.flags,4),Ft=ol(_e.flags,2),dn=new vm(_e,U);ol(_e.styles.display,2048)&&K.push(dn);var fn=ol(_e.flags,8)?[]:K;if(et||Ft){var Ar=et||_e.styles.isPositioned()?$:R,ur=new zp(dn);if(_e.styles.isPositioned()||_e.styles.opacity<1||_e.styles.isTransformed()){var Ir=_e.styles.zIndex.order;if(Ir<0){var fi=0;Ar.negativeZIndex.some(function(us,bs){return Ir>us.element.container.styles.zIndex.order?(fi=bs,!1):fi>0}),Ar.negativeZIndex.splice(fi,0,ur)}else if(Ir>0){var Qs=0;Ar.positiveZIndex.some(function(us,bs){return Ir>=us.element.container.styles.zIndex.order?(Qs=bs+1,!1):Qs>0}),Ar.positiveZIndex.splice(Qs,0,ur)}else Ar.zeroOrAutoZIndexOrTransformedOrOpacity.push(ur)}else _e.styles.isFloating()?Ar.nonPositionedFloats.push(ur):Ar.nonPositionedInlineLevel.push(ur);zA(dn,ur,et?ur:$,fn)}else _e.styles.isInlineLevel()?R.inlineLevel.push(dn):R.nonInlineLevel.push(dn),zA(dn,R,$,fn);ol(_e.flags,8)&&Jd(_e,fn)})},Jd=function(U,R){for(var $=U instanceof NA?U.start:1,K=U instanceof NA?U.reversed:!1,_e=0;_e0&&$.intrinsicHeight>0){var et=ae($),Ft=Rh(K);this.path(Ft),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(_e,0,0,$.intrinsicWidth,$.intrinsicHeight,et.left,et.top,et.width,et.height),this.ctx.restore()}},R.prototype.renderNodeContent=function($){return Z(this,void 0,void 0,function(){var K,_e,et,Ft,dn,fn,ea,ea,Ar,ur,Ir,fi,uo,Qs,us,Oa,bs,Ja,fa,ea,ko,uo,Oa;return V(this,function(ks){switch(ks.label){case 0:this.applyEffects($.getEffects(4)),K=$.container,_e=$.curves,et=K.styles,Ft=0,dn=K.textNodes,ks.label=1;case 1:return Ft0&&Nu>0&&(eo=et.ctx.createPattern(Oa,"repeat"),et.renderRepeat(nu,eo,Ju,Tc))):Dn(ur)&&(za=rt($,K,[null,null,null]),nu=za[0],wu=za[1],hu=za[2],pl=za[3],Nu=za[4],Qh=ur.position.length===0?[na]:ur.position,Ju=Yo(Qh[0],pl),Tc=Yo(Qh[Qh.length-1],Nu),If=Dd(ur,Ju,Tc,pl,Nu),id=If[0],GA=If[1],id>0&&GA>0&&(sd=et.ctx.createRadialGradient(wu+Ju,hu+Tc,0,wu+Ju,hu+Tc,id),SA(ur.stops,id*2).forEach(function(Hp){return sd.addColorStop(Hp.stop,Go(Hp.color))}),et.path(nu),et.ctx.fillStyle=sd,id!==GA?(lA=$.bounds.left+.5*$.bounds.width,ef=$.bounds.top+.5*$.bounds.height,Nf=GA/id,Td=1/Nf,et.ctx.save(),et.ctx.translate(lA,ef),et.ctx.transform(1,0,0,Nf,0,0),et.ctx.translate(-lA,-ef),et.ctx.fillRect(wu,Td*(hu-ef)+ef,pl,Nu*Td),et.ctx.restore()):et.ctx.fill())),Gp.label=6;case 6:return K--,[2]}})},et=this,Ft=0,dn=$.styles.backgroundImage.slice(0).reverse(),Ar.label=1;case 1:return Ft0?ur.style!==2?[3,5]:[4,this.renderDashedDottedBorder(ur.color,ur.width,dn,$.curves,2)]:[3,11]):[3,13];case 4:return fi.sent(),[3,11];case 5:return ur.style!==3?[3,7]:[4,this.renderDashedDottedBorder(ur.color,ur.width,dn,$.curves,3)];case 6:return fi.sent(),[3,11];case 7:return ur.style!==4?[3,9]:[4,this.renderDoubleBorder(ur.color,ur.width,dn,$.curves)];case 8:return fi.sent(),[3,11];case 9:return[4,this.renderSolidBorder(ur.color,dn,$.curves)];case 10:fi.sent(),fi.label=11;case 11:dn++,fi.label=12;case 12:return fn++,[3,3];case 13:return[2]}})})},R.prototype.renderDashedDottedBorder=function($,K,_e,et,Ft){return Z(this,void 0,void 0,function(){var dn,fn,Ar,ur,Ir,fi,Qs,us,bs,Ja,fa,ea,ko,uo,Oa,ks,Oa,ks;return V(this,function(So){return this.ctx.save(),dn=A(et,_e),fn=x(et,_e),Ft===2&&(this.path(fn),this.ctx.clip()),Al(fn[0])?(Ar=fn[0].start.x,ur=fn[0].start.y):(Ar=fn[0].x,ur=fn[0].y),Al(fn[1])?(Ir=fn[1].end.x,fi=fn[1].end.y):(Ir=fn[1].x,fi=fn[1].y),_e===0||_e===2?Qs=Math.abs(Ar-Ir):Qs=Math.abs(ur-fi),this.ctx.beginPath(),Ft===3?this.formatPath(dn):this.formatPath(fn.slice(0,2)),us=K<3?K*3:K*2,bs=K<3?K*2:K,Ft===3&&(us=K,bs=K),Ja=!0,Qs<=us*2?Ja=!1:Qs<=us*2+bs?(fa=Qs/(2*us+bs),us*=fa,bs*=fa):(ea=Math.floor((Qs+bs)/(us+bs)),ko=(Qs-ea*us)/(ea-1),uo=(Qs-(ea+1)*us)/ea,bs=uo<=0||Math.abs(bs-ko)=0&&(b.splice instanceof Function||Object.getOwnPropertyDescriptor(b,b.length-1)&&b.constructor.name!=="String")}},15584:function(Be,Me,b){var m=b(73893),Z=b(33152),V=m(Z,"DataView");Be.exports=V},97288:function(Be,Me,b){var m=b(73893),Z=b(33152),V=m(Z,"Promise");Be.exports=V},23599:function(Be,Me,b){var m=b(73893),Z=b(33152),V=m(Z,"Set");Be.exports=V},98924:function(Be,Me,b){var m=b(52166),Z=b(34776),V=b(40393);function N(E){var F=-1,C=E==null?0:E.length;for(this.__data__=new m;++F-1}Be.exports=Z},94874:function(Be){function Me(b,m,Z){for(var V=-1,N=b==null?0:b.length;++V0&&F(X)?E>1?V(X,E-1,F,C,P):m(P,X):C||(P[P.length]=X)}return P}Be.exports=V},85605:function(Be,Me,b){var m=b(14018),Z=b(55451);function V(N,E){return N&&m(N,E,Z)}Be.exports=V},89147:function(Be,Me,b){var m=b(1186),Z=b(9171);function V(N,E){E=m(E,N);for(var F=0,C=E.length;N!=null&&Fm}Be.exports=Me},3251:function(Be){var Me=Object.prototype,b=Me.hasOwnProperty;function m(Z,V){return Z!=null&&b.call(Z,V)}Be.exports=m},62348:function(Be){function Me(b,m){return b!=null&&m in Object(b)}Be.exports=Me},17424:function(Be,Me,b){var m=b(51533),Z=b(8373),V=b(49237);function N(E,F,C){return F===F?V(E,F,C):m(E,Z,C)}Be.exports=N},77295:function(Be,Me,b){var m=b(84412),Z=b(93913);function V(N,E,F,C,P){return N===E?!0:N==null||E==null||!Z(N)&&!Z(E)?N!==N&&E!==E:m(N,E,F,C,V,P)}Be.exports=V},84412:function(Be,Me,b){var m=b(91866),Z=b(50401),V=b(57710),N=b(4983),E=b(66139),F=b(80744),C=b(57835),P=b(18397),H=1,D="[object Arguments]",X="[object Array]",j="[object Object]",de=Object.prototype,he=de.hasOwnProperty;function we(ve,Ee,$e,Fe,ct,vt){var at=F(ve),kt=F(Ee),It=at?X:E(ve),Bn=kt?X:E(Ee);It=It==D?j:It,Bn=Bn==D?j:Bn;var Lt=It==j,Wn=Bn==j,Xn=It==Bn;if(Xn&&C(ve)){if(!C(Ee))return!1;at=!0,Lt=!1}if(Xn&&!Lt)return vt||(vt=new m),at||P(ve)?Z(ve,Ee,$e,Fe,ct,vt):V(ve,Ee,It,$e,Fe,ct,vt);if(!($e&H)){var In=Lt&&he.call(ve,"__wrapped__"),zn=Wn&&he.call(Ee,"__wrapped__");if(In||zn){var dr=In?ve.value():ve,vn=zn?Ee.value():Ee;return vt||(vt=new m),ct(dr,vn,$e,Fe,vt)}}return Xn?(vt||(vt=new m),N(ve,Ee,$e,Fe,ct,vt)):!1}Be.exports=we},55005:function(Be,Me,b){var m=b(66139),Z=b(93913),V="[object Map]";function N(E){return Z(E)&&m(E)==V}Be.exports=N},51524:function(Be,Me,b){var m=b(91866),Z=b(77295),V=1,N=2;function E(F,C,P,H){var D=P.length,X=D,j=!H;if(F==null)return!X;for(F=Object(F);D--;){var de=P[D];if(j&&de[2]?de[1]!==F[de[0]]:!(de[0]in F))return!1}for(;++D=C){var $e=D?null:E(H);if($e)return F($e);we=!1,de=N,Ee=new m}else Ee=D?[]:ve;e:for(;++jN||P&&H&&X&&!D&&!j||F&&H&&X||!E&&X||!C)return 1;if(!F&&!P&&!j&&V=D)return X;var j=E[F];return X*(j=="desc"?-1:1)}}return V.index-N.index}Be.exports=Z},15168:function(Be,Me,b){var m=b(95378),Z=b(58966);function V(N,E){return m(N,Z(N),E)}Be.exports=V},71678:function(Be,Me,b){var m=b(95378),Z=b(66817);function V(N,E){return m(N,Z(N),E)}Be.exports=V},49164:function(Be,Me,b){var m=b(24665);function Z(V,N){return function(E,F){if(E==null)return E;if(!m(E))return V(E,F);for(var C=E.length,P=N?C:-1,H=Object(E);(N?P--:++P-1?H[D?F[X]:X]:void 0}}Be.exports=N},76106:function(Be,Me,b){var m=b(36121),Z=b(8138),V=b(97341);function N(E){return function(F,C,P){return P&&typeof P!="number"&&Z(F,C,P)&&(C=P=void 0),F=V(F),C===void 0?(C=F,F=0):C=V(C),P=P===void 0?Fhe))return!1;var ve=j.get(C),Ee=j.get(P);if(ve&&Ee)return ve==P&&Ee==C;var $e=-1,Fe=!0,ct=H&E?new m:void 0;for(j.set(C,P),j.set(P,C);++$e2?H[2]:void 0;for(j&&V(H[0],H[1],j)&&(X=1);++D1&&N(F,C[0],C[1])?C=[]:P>2&&N(C[0],C[1],C[2])&&(C=[C[0]]),Z(F,m(C,1),[])});Be.exports=E},4134:function(Be){function Me(){return[]}Be.exports=Me},97341:function(Be,Me,b){var m=b(59406),Z=1/0,V=17976931348623157e292;function N(E){if(!E)return E===0?E:0;if(E=m(E),E===Z||E===-Z){var F=E<0?-1:1;return F*V}return E===E?E:0}Be.exports=N},12824:function(Be,Me,b){var m=b(97341);function Z(V){var N=m(V),E=N%1;return N===N?E?N-E:N:0}Be.exports=Z},59406:function(Be,Me,b){var m=b(13927),Z=b(20816),V=b(45029),N=NaN,E=/^[-+]0x[0-9a-f]+$/i,F=/^0b[01]+$/i,C=/^0o[0-7]+$/i,P=parseInt;function H(D){if(typeof D=="number")return D;if(V(D))return N;if(Z(D)){var X=typeof D.valueOf=="function"?D.valueOf():D;D=Z(X)?X+"":X}if(typeof D!="string")return D===0?D:+D;D=m(D);var j=F.test(D);return j||C.test(D)?P(D.slice(2),j?2:8):E.test(D)?N:+D}Be.exports=H},44140:function(Be,Me,b){var m=b(50230);function Z(V){return V==null?"":m(V)}Be.exports=Z},91116:function(Be,Me,b){var m=b(74809),Z=b(35024),V=b(85605),N=b(95979),E=b(49217),F=b(80744),C=b(57835),P=b(9363),H=b(20816),D=b(18397);function X(j,de,he){var we=F(j),ve=we||C(j)||D(j);if(de=N(de,4),he==null){var Ee=j&&j.constructor;ve?he=we?new Ee:[]:H(j)?he=P(Ee)?Z(E(j)):{}:he={}}return(ve?m:V)(j,function($e,Fe,ct){return de(he,$e,Fe,ct)}),he}Be.exports=X},44065:function(Be,Me,b){var m=b(9256),Z=b(92918),V=b(29098),N=b(41590),E=Z(function(F){return V(m(F,1,N,!0))});Be.exports=E},95708:function(Be,Me,b){var m=b(44140),Z=0;function V(N){var E=++Z;return m(N)+E}Be.exports=V},81229:function(Be,Me,b){var m=b(20720),Z=b(55451);function V(N){return N==null?[]:m(N,Z(N))}Be.exports=V},65441:function(Be,Me,b){var m=b(60348),Z=b(94484);function V(N,E){return Z(N||[],E||[],m)}Be.exports=V},34402:function(Be,Me,b){"use strict";b.r(Me),b.d(Me,{default:function(){return N}});var m=b(34634);function Z(E){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(0,m.isAnyArray)(E))throw new TypeError("input must be an array");if(E.length===0)throw new TypeError("input must not be empty");var C=F.fromIndex,P=C===void 0?0:C,H=F.toIndex,D=H===void 0?E.length:H;if(P<0||P>=E.length||!Number.isInteger(P))throw new Error("fromIndex must be a positive integer smaller than length");if(D<=P||D>E.length||!Number.isInteger(D))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var X=E[P],j=P+1;jX&&(X=E[j]);return X}function V(E){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(0,m.isAnyArray)(E))throw new TypeError("input must be an array");if(E.length===0)throw new TypeError("input must not be empty");var C=F.fromIndex,P=C===void 0?0:C,H=F.toIndex,D=H===void 0?E.length:H;if(P<0||P>=E.length||!Number.isInteger(P))throw new Error("fromIndex must be a positive integer smaller than length");if(D<=P||D>E.length||!Number.isInteger(D))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var X=E[P],j=P+1;j1&&arguments[1]!==void 0?arguments[1]:{};if((0,m.isAnyArray)(E)){if(E.length===0)throw new TypeError("input must not be empty")}else throw new TypeError("input must be an array");var C;if(F.output!==void 0){if(!(0,m.isAnyArray)(F.output))throw new TypeError("output option must be an array if specified");C=F.output}else C=new Array(E.length);var P=V(E),H=Z(E);if(P===H)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var D=F.min,X=D===void 0?F.autoMinMax?P:0:D,j=F.max,de=j===void 0?F.autoMinMax?H:1:j;if(X>=de)throw new RangeError("min option must be smaller than max option");for(var he=(de-X)/(H-P),we=0;we19?_r:vn;E&&typeof E.nodeMass=="function"&&(P=E.nodeMass);var H=new Map,D={},X=0,j=C.settings.springTransform||V;kt(),ct();var de=!1,he={step:function(){if(X===0)return we(!0),!0;var Ge=C.step();he.lastMove=Ge,he.fire("step");var Tt=Ge/X,On=Tt<=.01;return we(On),On},getNodePosition:function(Ge){return dr(Ge).pos},setNodePosition:function(Ge){var Tt=dr(Ge);Tt.setPosition.apply(Tt,Array.prototype.slice.call(arguments,1))},getLinkPosition:function(Ge){var Tt=D[Ge];if(Tt)return{from:Tt.from.pos,to:Tt.to.pos}},getGraphRect:function(){return C.getBBox()},forEachBody:ve,pinNode:function(Ge,Tt){var On=dr(Ge.id);On.isPinned=!!Tt},isNodePinned:function(Ge){return dr(Ge.id).isPinned},dispose:function(){N.off("changed",at),he.fire("disposed")},getBody:Fe,getSpring:$e,getForceVectorLength:Ee,simulator:C,graph:N,lastMove:0};return m(he),he;function we(Ge){de!==Ge&&(de=Ge,vt(Ge))}function ve(Ge){H.forEach(Ge)}function Ee(){var Ge=0,Tt=0;return ve(function(On){Ge+=Math.abs(On.force.x),Tt+=Math.abs(On.force.y)}),Math.sqrt(Ge*Ge+Tt*Tt)}function $e(Ge,Tt){var On;if(Tt===void 0)typeof Ge!="object"?On=Ge:On=Ge.id;else{var Vr=N.hasLink(Ge,Tt);if(!Vr)return;On=Vr.id}return D[On]}function Fe(Ge){return H.get(Ge)}function ct(){N.on("changed",at)}function vt(Ge){he.fire("stable",Ge)}function at(Ge){for(var Tt=0;Tt max_{var}) max_{var} = bodyPos.{var};",{indent:6})} - } - - ${E("boundingBox.min_{var} = min_{var};",{indent:4})} - ${E("boundingBox.max_{var} = max_{var};",{indent:4})} - } - - function resetBoundingBox() { - ${E("boundingBox.min_{var} = boundingBox.max_{var} = 0;",{indent:4})} - } -`}},53623:function(Be,Me,b){const m=b(98786);Be.exports=Z,Be.exports.generateCreateBodyFunctionBody=V,Be.exports.getVectorCode=E,Be.exports.getBodyCode=N;function Z(F,C){let P=V(F,C),{Body:H}=new Function(P)();return H}function V(F,C){return` -${E(F,C)} -${N(F,C)} -return {Body: Body, Vector: Vector}; -`}function N(F){let C=m(F),P=C("{var}",{join:", "});return` -function Body(${P}) { - this.isPinned = false; - this.pos = new Vector(${P}); - this.force = new Vector(); - this.velocity = new Vector(); - this.mass = 1; - - this.springCount = 0; - this.springLength = 0; -} - -Body.prototype.reset = function() { - this.force.reset(); - this.springCount = 0; - this.springLength = 0; -} - -Body.prototype.setPosition = function (${P}) { - ${C("this.pos.{var} = {var} || 0;",{indent:2})} -};`}function E(F,C){let P=m(F),H="";return C&&(H=`${P(` - var v{var}; -Object.defineProperty(this, '{var}', { - set: function(v) { - if (!Number.isFinite(v)) throw new Error('Cannot set non-numbers to {var}'); - v{var} = v; - }, - get: function() { return v{var}; } -});`)}`),`function Vector(${P("{var}",{join:", "})}) { - ${H} - if (typeof arguments[0] === 'object') { - // could be another vector - let v = arguments[0]; - ${P('if (!Number.isFinite(v.{var})) throw new Error("Expected value is not a finite number at Vector constructor ({var})");',{indent:4})} - ${P("this.{var} = v.{var};",{indent:4})} - } else { - ${P('this.{var} = typeof {var} === "number" ? {var} : 0;',{indent:4})} - } - } - - Vector.prototype.reset = function () { - ${P("this.{var} = ",{join:""})}0; - };`}},48812:function(Be,Me,b){const m=b(98786);Be.exports=Z,Be.exports.generateCreateDragForceFunctionBody=V;function Z(N){let E=V(N);return new Function("options",E)}function V(N){return` - if (!Number.isFinite(options.dragCoefficient)) throw new Error('dragCoefficient is not a finite number'); - - return { - update: function(body) { - ${m(N)("body.force.{var} -= options.dragCoefficient * body.velocity.{var};",{indent:6})} - } - }; -`}},7584:function(Be,Me,b){const m=b(98786);Be.exports=Z,Be.exports.generateCreateSpringForceFunctionBody=V;function Z(N){let E=V(N);return new Function("options","random",E)}function V(N){let E=m(N);return` - if (!Number.isFinite(options.springCoefficient)) throw new Error('Spring coefficient is not a number'); - if (!Number.isFinite(options.springLength)) throw new Error('Spring length is not a number'); - - return { - /** - * Updates forces acting on a spring - */ - update: function (spring) { - var body1 = spring.from; - var body2 = spring.to; - var length = spring.length < 0 ? options.springLength : spring.length; - ${E("var d{var} = body2.pos.{var} - body1.pos.{var};",{indent:6})} - var r = Math.sqrt(${E("d{var} * d{var}",{join:" + "})}); - - if (r === 0) { - ${E("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:8})} - r = Math.sqrt(${E("d{var} * d{var}",{join:" + "})}); - } - - var d = r - length; - var coefficient = ((spring.coefficient > 0) ? spring.coefficient : options.springCoefficient) * d / r; - - ${E("body1.force.{var} += coefficient * d{var}",{indent:6})}; - body1.springCount += 1; - body1.springLength += r; - - ${E("body2.force.{var} -= coefficient * d{var}",{indent:6})}; - body2.springCount += 1; - body2.springLength += r; - } - }; -`}},26302:function(Be,Me,b){const m=b(98786);Be.exports=Z,Be.exports.generateIntegratorFunctionBody=V;function Z(N){let E=V(N);return new Function("bodies","timeStep","adaptiveTimeStepWeight",E)}function V(N){let E=m(N);return` - var length = bodies.length; - if (length === 0) return 0; - - ${E("var d{var} = 0, t{var} = 0;",{indent:2})} - - for (var i = 0; i < length; ++i) { - var body = bodies[i]; - if (body.isPinned) continue; - - if (adaptiveTimeStepWeight && body.springCount) { - timeStep = (adaptiveTimeStepWeight * body.springLength/body.springCount); - } - - var coeff = timeStep / body.mass; - - ${E("body.velocity.{var} += coeff * body.force.{var};",{indent:4})} - ${E("var v{var} = body.velocity.{var};",{indent:4})} - var v = Math.sqrt(${E("v{var} * v{var}",{join:" + "})}); - - if (v > 1) { - // We normalize it so that we move within timeStep range. - // for the case when v <= 1 - we let velocity to fade out. - ${E("body.velocity.{var} = v{var} / v;",{indent:6})} - } - - ${E("d{var} = timeStep * body.velocity.{var};",{indent:4})} - - ${E("body.pos.{var} += d{var};",{indent:4})} - - ${E("t{var} += Math.abs(d{var});",{indent:4})} - } - - return (${E("t{var} * t{var}",{join:" + "})})/length; -`}},24454:function(Be,Me,b){const m=b(98786),Z=b(59321);Be.exports=V,Be.exports.generateQuadTreeFunctionBody=N,Be.exports.getInsertStackCode=H,Be.exports.getQuadNodeCode=P,Be.exports.isSamePosition=E,Be.exports.getChildBodyCode=C,Be.exports.setChildBodyCode=F;function V(D){let X=N(D);return new Function(X)()}function N(D){let X=m(D),j=Math.pow(2,D);return` -${H()} -${P(D)} -${E(D)} -${C(D)} -${F(D)} - -function createQuadTree(options, random) { - options = options || {}; - options.gravity = typeof options.gravity === 'number' ? options.gravity : -1; - options.theta = typeof options.theta === 'number' ? options.theta : 0.8; - - var gravity = options.gravity; - var updateQueue = []; - var insertStack = new InsertStack(); - var theta = options.theta; - - var nodesCache = []; - var currentInCache = 0; - var root = newNode(); - - return { - insertBodies: insertBodies, - - /** - * Gets root node if it is present - */ - getRoot: function() { - return root; - }, - - updateBodyForce: update, - - options: function(newOptions) { - if (newOptions) { - if (typeof newOptions.gravity === 'number') { - gravity = newOptions.gravity; - } - if (typeof newOptions.theta === 'number') { - theta = newOptions.theta; - } - - return this; - } - - return { - gravity: gravity, - theta: theta - }; - } - }; - - function newNode() { - // To avoid pressure on GC we reuse nodes. - var node = nodesCache[currentInCache]; - if (node) { -${ve(" node.")} - node.body = null; - node.mass = ${X("node.mass_{var} = ",{join:""})}0; - ${X("node.min_{var} = node.max_{var} = ",{join:""})}0; - } else { - node = new QuadNode(); - nodesCache[currentInCache] = node; - } - - ++currentInCache; - return node; - } - - function update(sourceBody) { - var queue = updateQueue; - var v; - ${X("var d{var};",{indent:4})} - var r; - ${X("var f{var} = 0;",{indent:4})} - var queueLength = 1; - var shiftIdx = 0; - var pushIdx = 1; - - queue[0] = root; - - while (queueLength) { - var node = queue[shiftIdx]; - var body = node.body; - - queueLength -= 1; - shiftIdx += 1; - var differentBody = (body !== sourceBody); - if (body && differentBody) { - // If the current node is a leaf node (and it is not source body), - // calculate the force exerted by the current node on body, and add this - // amount to body's net force. - ${X("d{var} = body.pos.{var} - sourceBody.pos.{var};",{indent:8})} - r = Math.sqrt(${X("d{var} * d{var}",{join:" + "})}); - - if (r === 0) { - // Poor man's protection against zero distance. - ${X("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:10})} - r = Math.sqrt(${X("d{var} * d{var}",{join:" + "})}); - } - - // This is standard gravitation force calculation but we divide - // by r^3 to save two operations when normalizing force vector. - v = gravity * body.mass * sourceBody.mass / (r * r * r); - ${X("f{var} += v * d{var};",{indent:8})} - } else if (differentBody) { - // Otherwise, calculate the ratio s / r, where s is the width of the region - // represented by the internal node, and r is the distance between the body - // and the node's center-of-mass - ${X("d{var} = node.mass_{var} / node.mass - sourceBody.pos.{var};",{indent:8})} - r = Math.sqrt(${X("d{var} * d{var}",{join:" + "})}); - - if (r === 0) { - // Sorry about code duplication. I don't want to create many functions - // right away. Just want to see performance first. - ${X("d{var} = (random.nextDouble() - 0.5) / 50;",{indent:10})} - r = Math.sqrt(${X("d{var} * d{var}",{join:" + "})}); - } - // If s / r < \u03B8, treat this internal node as a single body, and calculate the - // force it exerts on sourceBody, and add this amount to sourceBody's net force. - if ((node.max_${Z(0)} - node.min_${Z(0)}) / r < theta) { - // in the if statement above we consider node's width only - // because the region was made into square during tree creation. - // Thus there is no difference between using width or height. - v = gravity * node.mass * sourceBody.mass / (r * r * r); - ${X("f{var} += v * d{var};",{indent:10})} - } else { - // Otherwise, run the procedure recursively on each of the current node's children. - - // I intentionally unfolded this loop, to save several CPU cycles. -${we()} - } - } - } - - ${X("sourceBody.force.{var} += f{var};",{indent:4})} - } - - function insertBodies(bodies) { - ${X("var {var}min = Number.MAX_VALUE;",{indent:4})} - ${X("var {var}max = Number.MIN_VALUE;",{indent:4})} - var i = bodies.length; - - // To reduce quad tree depth we are looking for exact bounding box of all particles. - while (i--) { - var pos = bodies[i].pos; - ${X("if (pos.{var} < {var}min) {var}min = pos.{var};",{indent:6})} - ${X("if (pos.{var} > {var}max) {var}max = pos.{var};",{indent:6})} - } - - // Makes the bounds square. - var maxSideLength = -Infinity; - ${X("if ({var}max - {var}min > maxSideLength) maxSideLength = {var}max - {var}min ;",{indent:4})} - - currentInCache = 0; - root = newNode(); - ${X("root.min_{var} = {var}min;",{indent:4})} - ${X("root.max_{var} = {var}min + maxSideLength;",{indent:4})} - - i = bodies.length - 1; - if (i >= 0) { - root.body = bodies[i]; - } - while (i--) { - insert(bodies[i], root); - } - } - - function insert(newBody) { - insertStack.reset(); - insertStack.push(root, newBody); - - while (!insertStack.isEmpty()) { - var stackItem = insertStack.pop(); - var node = stackItem.node; - var body = stackItem.body; - - if (!node.body) { - // This is internal node. Update the total mass of the node and center-of-mass. - ${X("var {var} = body.pos.{var};",{indent:8})} - node.mass += body.mass; - ${X("node.mass_{var} += body.mass * {var};",{indent:8})} - - // Recursively insert the body in the appropriate quadrant. - // But first find the appropriate quadrant. - var quadIdx = 0; // Assume we are in the 0's quad. - ${X("var min_{var} = node.min_{var};",{indent:8})} - ${X("var max_{var} = (min_{var} + node.max_{var}) / 2;",{indent:8})} - -${he(8)} - - var child = getChild(node, quadIdx); - - if (!child) { - // The node is internal but this quadrant is not taken. Add - // subnode to it. - child = newNode(); - ${X("child.min_{var} = min_{var};",{indent:10})} - ${X("child.max_{var} = max_{var};",{indent:10})} - child.body = body; - - setChild(node, quadIdx, child); - } else { - // continue searching in this quadrant. - insertStack.push(child, body); - } - } else { - // We are trying to add to the leaf node. - // We have to convert current leaf into internal node - // and continue adding two nodes. - var oldBody = node.body; - node.body = null; // internal nodes do not cary bodies - - if (isSamePosition(oldBody.pos, body.pos)) { - // Prevent infinite subdivision by bumping one node - // anywhere in this quadrant - var retriesCount = 3; - do { - var offset = random.nextDouble(); - ${X("var d{var} = (node.max_{var} - node.min_{var}) * offset;",{indent:12})} - - ${X("oldBody.pos.{var} = node.min_{var} + d{var};",{indent:12})} - retriesCount -= 1; - // Make sure we don't bump it out of the box. If we do, next iteration should fix it - } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos)); - - if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) { - // This is very bad, we ran out of precision. - // if we do not return from the method we'll get into - // infinite loop here. So we sacrifice correctness of layout, and keep the app running - // Next layout iteration should get larger bounding box in the first step and fix this - return; - } - } - // Next iteration should subdivide node further. - insertStack.push(node, oldBody); - insertStack.push(node, body); - } - } - } -} -return createQuadTree; - -`;function he(Ee){let $e=[],Fe=Array(Ee+1).join(" ");for(let ct=0;ct max_${Z(ct)}) {`),$e.push(Fe+` quadIdx = quadIdx + ${Math.pow(2,ct)};`),$e.push(Fe+` min_${Z(ct)} = max_${Z(ct)};`),$e.push(Fe+` max_${Z(ct)} = node.max_${Z(ct)};`),$e.push(Fe+"}");return $e.join(` -`)}function we(){let Ee=Array(11).join(" "),$e=[];for(let Fe=0;Fe 0) { - return this.stack[--this.popIdx]; - } - }, - reset: function () { - this.popIdx = 0; - } -}; - -function InsertStackElement(node, body) { - this.node = node; // QuadTree node - this.body = body; // physical body which needs to be inserted to node -} -`}},59321:function(Be){Be.exports=function(b){return b===0?"x":b===1?"y":b===2?"z":"c"+(b+1)}},72879:function(Be,Me,b){Be.exports=P;var m=b(53623),Z=b(24454),V=b(41085),N=b(48812),E=b(7584),F=b(26302),C={};function P(X){var j=b(75877),de=b(35764),he=b(82396);if(X){if(X.springCoeff!==void 0)throw new Error("springCoeff was renamed to springCoefficient");if(X.dragCoeff!==void 0)throw new Error("dragCoeff was renamed to dragCoefficient")}X=de(X,{springLength:10,springCoefficient:.8,gravity:-12,theta:.8,dragCoefficient:.9,timeStep:.5,adaptiveTimeStepWeight:0,dimensions:2,debug:!1});var we=C[X.dimensions];if(!we){var ve=X.dimensions;we={Body:m(ve,X.debug),createQuadTree:Z(ve),createBounds:V(ve),createDragForce:N(ve),createSpringForce:E(ve),integrate:F(ve)},C[ve]=we}var Ee=we.Body,$e=we.createQuadTree,Fe=we.createBounds,ct=we.createDragForce,vt=we.createSpringForce,at=we.integrate,kt=Et=>new Ee(Et),It=b(40232).random(42),Bn=[],Lt=[],Wn=$e(X,It),Xn=Fe(Bn,X,It),In=vt(X,It),zn=ct(X),dr=0,vn=[],_r=new Map,Ge=0;Vr("nbody",Cn),Vr("spring",Mt);var Tt={bodies:Bn,quadTree:Wn,springs:Lt,settings:X,addForce:Vr,removeForce:en,getForces:ln,step:function(){for(var Et=0;Et=0?Pe:-1);return Lt.push(Ut),Ut},getTotalMovement:function(){return dr},removeSpring:function(Et){if(Et){var pe=Lt.indexOf(Et);if(pe>-1)return Lt.splice(pe,1),!0}},getBestNewBodyPosition:function(Et){return Xn.getBestNewPosition(Et)},getBBox:On,getBoundingBox:On,invalidateBBox:function(){console.warn("invalidateBBox() is deprecated, bounds always recomputed on `getBBox()` call")},gravity:function(Et){return Et!==void 0?(X.gravity=Et,Wn.options({gravity:Et}),this):X.gravity},theta:function(Et){return Et!==void 0?(X.theta=Et,Wn.options({theta:Et}),this):X.theta},random:It};return H(X,Tt),he(Tt),Tt;function On(){return Xn.update(),Xn.box}function Vr(Et,pe){if(_r.has(Et))throw new Error("Force "+Et+" is already added");_r.set(Et,pe),vn.push(pe)}function en(Et){var pe=vn.indexOf(_r.get(Et));pe<0||(vn.splice(pe,1),_r.delete(Et))}function ln(){return _r}function Cn(){if(Bn.length!==0){Wn.insertBodies(Bn);for(var Et=Bn.length;Et--;){var pe=Bn[Et];pe.isPinned||(pe.reset(),Wn.updateBodyForce(pe),zn.update(pe))}}}function Mt(){for(var Et=Lt.length;Et--;)In.update(Lt[Et])}}function H(X,j){for(var de in X)D(X,j,de)}function D(X,j,de){if(X.hasOwnProperty(de)&&typeof j[de]!="function"){var he=Number.isFinite(X[de]);he?j[de]=function(we){if(we!==void 0){if(!Number.isFinite(we))throw new Error("Value of "+de+" should be a valid number.");return X[de]=we,j}return X[de]}:j[de]=function(we){return we!==void 0?(X[de]=we,j):X[de]}}}},75877:function(Be){Be.exports=Me;function Me(b,m,Z,V){this.from=b,this.to=m,this.length=Z,this.coefficient=V}},35764:function(Be){Be.exports=Me;function Me(b,m){var Z;if(b||(b={}),m){for(Z in m)if(m.hasOwnProperty(Z)){var V=b.hasOwnProperty(Z),N=typeof m[Z],E=!V||typeof b[Z]!==N;E?b[Z]=m[Z]:N==="object"&&(b[Z]=Me(b[Z],m[Z]))}}return b}},40232:function(Be){Be.exports=Me,Be.exports.random=Me,Be.exports.randomIterator=F;function Me(C){var P=typeof C=="number"?C:+new Date;return new b(P)}function b(C){this.seed=C}b.prototype.next=E,b.prototype.nextDouble=N,b.prototype.uniform=N,b.prototype.gaussian=m,b.prototype.random=N;function m(){var C,P,H;do P=this.nextDouble()*2-1,H=this.nextDouble()*2-1,C=P*P+H*H;while(C>=1||C===0);return P*Math.sqrt(-2*Math.log(C)/C)}b.prototype.levy=Z;function Z(){var C=1.5,P=Math.pow(V(1+C)*Math.sin(Math.PI*C/2)/(V((1+C)/2)*C*Math.pow(2,(C-1)/2)),1/C);return this.gaussian()*P/Math.pow(Math.abs(this.gaussian()),1/C)}function V(C){return Math.sqrt(2*Math.PI/C)*Math.pow(1/Math.E*(C+1/(12*C-1/(10*C))),C)}function N(){var C=this.seed;return C=C+2127912214+(C<<12)&4294967295,C=(C^3345072700^C>>>19)&4294967295,C=C+374761393+(C<<5)&4294967295,C=(C+3550635116^C<<9)&4294967295,C=C+4251993797+(C<<3)&4294967295,C=(C^3042594569^C>>>16)&4294967295,this.seed=C,(C&268435455)/268435456}function E(C){return Math.floor(this.nextDouble()*C)}function F(C,P){var H=P||Me();if(typeof H.next!="function")throw new Error("customRandom does not match expected API: next() function is missing");return{forEach:X,shuffle:D};function D(){var j,de,he;for(j=C.length-1;j>0;--j)de=H.next(j+1),he=C[de],C[de]=C[j],C[j]=he;return C}function X(j){var de,he,we;for(de=C.length-1;de>0;--de)he=H.next(de+1),we=C[he],C[he]=C[de],C[de]=we,j(we);C.length&&j(C[0])}}},5630:function(Be,Me,b){"use strict";var m=b(54476),Z=b(33885),V=b(20068),N=b(42978),E=b(75931),F=b(92310),C=b.n(F),P=b(18929),H=b(59301),D=["prefixCls","className","style","checked","disabled","defaultChecked","type","title","onChange"],X=(0,H.forwardRef)(function(j,de){var he,we=j.prefixCls,ve=we===void 0?"rc-checkbox":we,Ee=j.className,$e=j.style,Fe=j.checked,ct=j.disabled,vt=j.defaultChecked,at=vt===void 0?!1:vt,kt=j.type,It=kt===void 0?"checkbox":kt,Bn=j.title,Lt=j.onChange,Wn=(0,E.Z)(j,D),Xn=(0,H.useRef)(null),In=(0,P.Z)(at,{value:Fe}),zn=(0,N.Z)(In,2),dr=zn[0],vn=zn[1];(0,H.useImperativeHandle)(de,function(){return{focus:function(){var On;(On=Xn.current)===null||On===void 0||On.focus()},blur:function(){var On;(On=Xn.current)===null||On===void 0||On.blur()},input:Xn.current}});var _r=C()(ve,Ee,(he={},(0,V.Z)(he,"".concat(ve,"-checked"),dr),(0,V.Z)(he,"".concat(ve,"-disabled"),ct),he)),Ge=function(On){ct||("checked"in j||vn(On.target.checked),Lt==null||Lt({target:(0,Z.Z)((0,Z.Z)({},j),{},{type:It,checked:On.target.checked}),stopPropagation:function(){On.stopPropagation()},preventDefault:function(){On.preventDefault()},nativeEvent:On.nativeEvent}))};return H.createElement("span",{className:_r,title:Bn,style:$e},H.createElement("input",(0,m.Z)({},Wn,{className:"".concat(ve,"-input"),ref:Xn,onChange:Ge,disabled:ct,checked:!!dr,type:It})),H.createElement("span",{className:"".concat(ve,"-inner")}))});Me.Z=X},81683:function(Be,Me,b){"use strict";var m=b(55973),Z=Array.prototype.concat,V=Array.prototype.slice,N=Be.exports=function(F){for(var C=[],P=0,H=F.length;P"u")return V=Object.create(null),Z;if(V[N])if(typeof E!="function")delete V[N];else{const F=V[N];for(let C=0;C1&&(F=Array.prototype.slice.call(arguments,1));for(let C=0;C=0;--e)if(s[e]>=65535)return!0;return!1}const Bo={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function _o(s,e){return new Bo[s](e)}function na(s){return ArrayBuffer.isView(s)&&!(s instanceof DataView)}function Wa(s){return document.createElementNS("http://www.w3.org/1999/xhtml",s)}function yh(){const s=Wa("canvas");return s.style.display="block",s}const Yo={};let Tu=null;function uu(s){Tu=s}function wc(){return Tu}function ac(...s){const e="THREE."+s.shift();Tu?Tu("log",e,...s):console.log(e,...s)}function Lr(...s){const e="THREE."+s.shift();Tu?Tu("warn",e,...s):console.warn(e,...s)}function Gr(...s){const e="THREE."+s.shift();Tu?Tu("error",e,...s):console.error(e,...s)}function ki(...s){const e=s.join(" ");e in Yo||(Yo[e]=!0,Lr(...s))}function ju(s,e,t){return new Promise(function(n,i){function a(){switch(s.clientWaitSync(e,s.SYNC_FLUSH_COMMANDS_BIT,0)){case s.WAIT_FAILED:i();break;case s.TIMEOUT_EXPIRED:setTimeout(a,t);break;default:n()}}setTimeout(a,t)})}class bl{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const i=n[e];if(i!==void 0){const a=i.indexOf(t);a!==-1&&i.splice(a,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const i=n.slice(0);for(let a=0,o=i.length;a>8&255]+qo[s>>16&255]+qo[s>>24&255]+"-"+qo[e&255]+qo[e>>8&255]+"-"+qo[e>>16&15|64]+qo[e>>24&255]+"-"+qo[t&63|128]+qo[t>>8&255]+"-"+qo[t>>16&255]+qo[t>>24&255]+qo[n&255]+qo[n>>8&255]+qo[n>>16&255]+qo[n>>24&255]).toLowerCase()}function Ca(s,e,t){return Math.max(e,Math.min(t,s))}function Ud(s,e){return(s%e+e)%e}function rp(s,e,t,n,i){return n+(s-e)*(i-n)/(t-e)}function Xh(s,e,t){return s!==e?(t-s)/(e-s):0}function lc(s,e,t){return(1-t)*s+t*e}function wA(s,e,t,n){return lc(s,e,1-Math.exp(-t*n))}function Od(s,e=1){return e-Math.abs(Ud(s,e*2)-e)}function jh(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*(3-2*s))}function SA(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*s*(s*(s*6-15)+10))}function md(s,e){return s+Math.floor(Math.random()*(e-s+1))}function vd(s,e){return s+Math.random()*(e-s)}function mo(s){return s*(.5-Math.random())}function wa(s){s!==void 0&&(Go=s);let e=Go+=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 Dd(s){return s*Ou}function qi(s){return s*Oh}function Du(s){return(s&s-1)===0&&s!==0}function kn(s){return Math.pow(2,Math.ceil(Math.log(s)/Math.LN2))}function kd(s){return Math.pow(2,Math.floor(Math.log(s)/Math.LN2))}function Yh(s,e,t,n,i){const a=Math.cos,o=Math.sin,u=a(t/2),c=o(t/2),d=a((e+n)/2),g=o((e+n)/2),v=a((e-n)/2),M=o((e-n)/2),B=a((n-e)/2),I=o((n-e)/2);switch(i){case"XYX":s.set(u*g,c*v,c*M,u*d);break;case"YZY":s.set(c*M,u*g,c*v,u*d);break;case"ZXZ":s.set(c*v,c*M,u*g,u*d);break;case"XZX":s.set(u*g,c*I,c*B,u*d);break;case"YXY":s.set(c*B,u*g,c*I,u*d);break;case"ZYZ":s.set(c*I,c*B,u*g,u*d);break;default:Lr("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function vl(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return s/4294967295;case Uint16Array:return s/65535;case Uint8Array:return s/255;case Int32Array:return Math.max(s/2147483647,-1);case Int16Array:return Math.max(s/32767,-1);case Int8Array:return Math.max(s/127,-1);default:throw new Error("Invalid component type.")}}function He(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return Math.round(s*4294967295);case Uint16Array:return Math.round(s*65535);case Uint8Array:return Math.round(s*255);case Int32Array:return Math.round(s*2147483647);case Int16Array:return Math.round(s*32767);case Int8Array:return Math.round(s*127);default:throw new Error("Invalid component type.")}}const me={DEG2RAD:Ou,RAD2DEG:Oh,generateUUID:oc,clamp:Ca,euclideanModulo:Ud,mapLinear:rp,inverseLerp:Xh,lerp:lc,damp:wA,pingpong:Od,smoothstep:jh,smootherstep:SA,randInt:md,randFloat:vd,randFloatSpread:mo,seededRandom:wa,degToRad:Dd,radToDeg:qi,isPowerOfTwo:Du,ceilPowerOfTwo:kn,floorPowerOfTwo:kd,setQuaternionFromProperEuler:Yh,normalize:He,denormalize:vl};class ce{constructor(e=0,t=0){ce.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){const 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=Ca(this.x,e.x,t.x),this.y=Ca(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ca(this.x,e,t),this.y=Ca(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ca(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){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ca(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const 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){const n=Math.cos(t),i=Math.sin(t),a=this.x-e.x,o=this.y-e.y;return this.x=a*n-o*i+e.x,this.y=a*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}}class Ze{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,a,o,u){let c=n[i+0],d=n[i+1],g=n[i+2],v=n[i+3],M=a[o+0],B=a[o+1],I=a[o+2],ne=a[o+3];if(u<=0){e[t+0]=c,e[t+1]=d,e[t+2]=g,e[t+3]=v;return}if(u>=1){e[t+0]=M,e[t+1]=B,e[t+2]=I,e[t+3]=ne;return}if(v!==ne||c!==M||d!==B||g!==I){let ee=c*M+d*B+g*I+v*ne;ee<0&&(M=-M,B=-B,I=-I,ne=-ne,ee=-ee);let q=1-u;if(ee<.9995){const ye=Math.acos(ee),Ce=Math.sin(ye);q=Math.sin(q*ye)/Ce,u=Math.sin(u*ye)/Ce,c=c*q+M*u,d=d*q+B*u,g=g*q+I*u,v=v*q+ne*u}else{c=c*q+M*u,d=d*q+B*u,g=g*q+I*u,v=v*q+ne*u;const ye=1/Math.sqrt(c*c+d*d+g*g+v*v);c*=ye,d*=ye,g*=ye,v*=ye}}e[t]=c,e[t+1]=d,e[t+2]=g,e[t+3]=v}static multiplyQuaternionsFlat(e,t,n,i,a,o){const u=n[i],c=n[i+1],d=n[i+2],g=n[i+3],v=a[o],M=a[o+1],B=a[o+2],I=a[o+3];return e[t]=u*I+g*v+c*B-d*M,e[t+1]=c*I+g*M+d*v-u*B,e[t+2]=d*I+g*B+u*M-c*v,e[t+3]=g*I-u*v-c*M-d*B,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){const n=e._x,i=e._y,a=e._z,o=e._order,u=Math.cos,c=Math.sin,d=u(n/2),g=u(i/2),v=u(a/2),M=c(n/2),B=c(i/2),I=c(a/2);switch(o){case"XYZ":this._x=M*g*v+d*B*I,this._y=d*B*v-M*g*I,this._z=d*g*I+M*B*v,this._w=d*g*v-M*B*I;break;case"YXZ":this._x=M*g*v+d*B*I,this._y=d*B*v-M*g*I,this._z=d*g*I-M*B*v,this._w=d*g*v+M*B*I;break;case"ZXY":this._x=M*g*v-d*B*I,this._y=d*B*v+M*g*I,this._z=d*g*I+M*B*v,this._w=d*g*v-M*B*I;break;case"ZYX":this._x=M*g*v-d*B*I,this._y=d*B*v+M*g*I,this._z=d*g*I-M*B*v,this._w=d*g*v+M*B*I;break;case"YZX":this._x=M*g*v+d*B*I,this._y=d*B*v+M*g*I,this._z=d*g*I-M*B*v,this._w=d*g*v-M*B*I;break;case"XZY":this._x=M*g*v-d*B*I,this._y=d*B*v-M*g*I,this._z=d*g*I+M*B*v,this._w=d*g*v+M*B*I;break;default:Lr("Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const 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){const t=e.elements,n=t[0],i=t[4],a=t[8],o=t[1],u=t[5],c=t[9],d=t[2],g=t[6],v=t[10],M=n+u+v;if(M>0){const B=.5/Math.sqrt(M+1);this._w=.25/B,this._x=(g-c)*B,this._y=(a-d)*B,this._z=(o-i)*B}else if(n>u&&n>v){const B=2*Math.sqrt(1+n-u-v);this._w=(g-c)/B,this._x=.25*B,this._y=(i+o)/B,this._z=(a+d)/B}else if(u>v){const B=2*Math.sqrt(1+u-n-v);this._w=(a-d)/B,this._x=(i+o)/B,this._y=.25*B,this._z=(c+g)/B}else{const B=2*Math.sqrt(1+v-n-u);this._w=(o-i)/B,this._x=(a+d)/B,this._y=(c+g)/B,this._z=.25*B}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>Math.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(Ca(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const 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){const n=e._x,i=e._y,a=e._z,o=e._w,u=t._x,c=t._y,d=t._z,g=t._w;return this._x=n*g+o*u+i*d-a*c,this._y=i*g+o*c+a*u-n*d,this._z=a*g+o*d+n*c-i*u,this._w=o*g-n*u-i*c-a*d,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let n=e._x,i=e._y,a=e._z,o=e._w,u=this.dot(e);u<0&&(n=-n,i=-i,a=-a,o=-o,u=-u);let c=1-t;if(u<.9995){const d=Math.acos(u),g=Math.sin(d);c=Math.sin(c*d)/g,t=Math.sin(t*d)/g,this._x=this._x*c+n*t,this._y=this._y*c+i*t,this._z=this._z*c+a*t,this._w=this._w*c+o*t,this._onChangeCallback()}else this._x=this._x*c+n*t,this._y=this._y*c+i*t,this._z=this._z*c+a*t,this._w=this._w*c+o*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),a=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),a*Math.sin(t),a*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}}class le{constructor(e=0,t=0,n=0){le.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(Dt.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Dt.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,a=e.elements;return this.x=a[0]*t+a[3]*n+a[6]*i,this.y=a[1]*t+a[4]*n+a[7]*i,this.z=a[2]*t+a[5]*n+a[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,a=e.elements,o=1/(a[3]*t+a[7]*n+a[11]*i+a[15]);return this.x=(a[0]*t+a[4]*n+a[8]*i+a[12])*o,this.y=(a[1]*t+a[5]*n+a[9]*i+a[13])*o,this.z=(a[2]*t+a[6]*n+a[10]*i+a[14])*o,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,a=e.x,o=e.y,u=e.z,c=e.w,d=2*(o*i-u*n),g=2*(u*t-a*i),v=2*(a*n-o*t);return this.x=t+c*d+o*v-u*g,this.y=n+c*g+u*d-a*v,this.z=i+c*v+a*g-o*d,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,i=this.z,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i,this.y=a[1]*t+a[5]*n+a[9]*i,this.z=a[2]*t+a[6]*n+a[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=Ca(this.x,e.x,t.x),this.y=Ca(this.y,e.y,t.y),this.z=Ca(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ca(this.x,e,t),this.y=Ca(this.y,e,t),this.z=Ca(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ca(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){const n=e.x,i=e.y,a=e.z,o=t.x,u=t.y,c=t.z;return this.x=i*c-a*u,this.y=a*o-n*c,this.z=n*u-i*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Nt.copy(this).projectOnVector(e),this.sub(Nt)}reflect(e){return this.sub(Nt.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ca(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const 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){const 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){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const 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(){const 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}}const Nt=new le,Dt=new Ze;class pn{constructor(e,t,n,i,a,o,u,c,d){pn.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,a,o,u,c,d)}set(e,t,n,i,a,o,u,c,d){const g=this.elements;return g[0]=e,g[1]=i,g[2]=u,g[3]=t,g[4]=a,g[5]=c,g[6]=n,g[7]=o,g[8]=d,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const 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){const 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){const n=e.elements,i=t.elements,a=this.elements,o=n[0],u=n[3],c=n[6],d=n[1],g=n[4],v=n[7],M=n[2],B=n[5],I=n[8],ne=i[0],ee=i[3],q=i[6],ye=i[1],Ce=i[4],ke=i[7],nt=i[2],Ye=i[5],ht=i[8];return a[0]=o*ne+u*ye+c*nt,a[3]=o*ee+u*Ce+c*Ye,a[6]=o*q+u*ke+c*ht,a[1]=d*ne+g*ye+v*nt,a[4]=d*ee+g*Ce+v*Ye,a[7]=d*q+g*ke+v*ht,a[2]=M*ne+B*ye+I*nt,a[5]=M*ee+B*Ce+I*Ye,a[8]=M*q+B*ke+I*ht,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],n=e[1],i=e[2],a=e[3],o=e[4],u=e[5],c=e[6],d=e[7],g=e[8];return t*o*g-t*u*d-n*a*g+n*u*c+i*a*d-i*o*c}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],a=e[3],o=e[4],u=e[5],c=e[6],d=e[7],g=e[8],v=g*o-u*d,M=u*c-g*a,B=d*a-o*c,I=t*v+n*M+i*B;if(I===0)return this.set(0,0,0,0,0,0,0,0,0);const ne=1/I;return e[0]=v*ne,e[1]=(i*d-g*n)*ne,e[2]=(u*n-i*o)*ne,e[3]=M*ne,e[4]=(g*t-i*c)*ne,e[5]=(i*a-u*t)*ne,e[6]=B*ne,e[7]=(n*c-d*t)*ne,e[8]=(o*t-n*a)*ne,this}transpose(){let e;const 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){const 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,a,o,u){const c=Math.cos(a),d=Math.sin(a);return this.set(n*c,n*d,-n*(c*o+d*u)+o+e,-i*d,i*c,-i*(-d*o+c*u)+u+t,0,0,1),this}scale(e,t){return this.premultiply(Dn.makeScale(e,t)),this}rotate(e){return this.premultiply(Dn.makeRotation(-e)),this}translate(e,t){return this.premultiply(Dn.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){const 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){const 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){const 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)}}const Dn=new pn,hr=new pn().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),br=new pn().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function yr(){const s={enabled:!0,workingColorSpace:No,spaces:{},convert:function(i,a,o){return this.enabled===!1||a===o||!a||!o||(this.spaces[a].transfer===ws&&(i.r=Fr(i.r),i.g=Fr(i.g),i.b=Fr(i.b)),this.spaces[a].primaries!==this.spaces[o].primaries&&(i.applyMatrix3(this.spaces[a].toXYZ),i.applyMatrix3(this.spaces[o].fromXYZ)),this.spaces[o].transfer===ws&&(i.r=ri(i.r),i.g=ri(i.g),i.b=ri(i.b))),i},workingToColorSpace:function(i,a){return this.convert(i,this.workingColorSpace,a)},colorSpaceToWorking:function(i,a){return this.convert(i,a,this.workingColorSpace)},getPrimaries:function(i){return this.spaces[i].primaries},getTransfer:function(i){return i===ao?Uu:this.spaces[i].transfer},getToneMappingMode:function(i){return this.spaces[i].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(i,a=this.workingColorSpace){return i.fromArray(this.spaces[a].luminanceCoefficients)},define:function(i){Object.assign(this.spaces,i)},_getMatrix:function(i,a,o){return i.copy(this.spaces[a].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},fromWorkingColorSpace:function(i,a){return ki("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),s.workingToColorSpace(i,a)},toWorkingColorSpace:function(i,a){return ki("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),s.colorSpaceToWorking(i,a)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return s.define({[No]:{primaries:e,whitePoint:n,transfer:Uu,toXYZ:hr,fromXYZ:br,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:sl},outputColorSpaceConfig:{drawingBufferColorSpace:sl}},[sl]:{primaries:e,whitePoint:n,transfer:ws,toXYZ:hr,fromXYZ:br,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:sl}}}),s}const xr=yr();function Fr(s){return s<.04045?s*.0773993808:Math.pow(s*.9478672986+.0521327014,2.4)}function ri(s){return s<.0031308?s*12.92:1.055*Math.pow(s,.41666)-.055}let ai;class wi{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement=="undefined")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{ai===void 0&&(ai=Wa("canvas")),ai.width=e.width,ai.height=e.height;const i=ai.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),n=ai}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){const t=Wa("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const i=n.getImageData(0,0,e.width,e.height),a=i.data;for(let o=0;o1),this.pmremVersion=0}get width(){return this.source.getSize(Ls).x}get height(){return this.source.getSize(Ls).y}get depth(){return this.source.getSize(Ls).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){Lr(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const i=this[t];if(i===void 0){Lr(`Texture.setValues(): property '${t}' does not exist.`);continue}i&&n&&i.isVector2&&n.isVector2||i&&n&&i.isVector3&&n.isVector3||i&&n&&i.isMatrix3&&n.isMatrix3?i.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==be)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case $t:e.x=e.x-Math.floor(e.x);break;case Vt:e.x=e.x<0?0:1;break;case Qt: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 $t:e.y=e.y-Math.floor(e.y);break;case Vt:e.y=e.y<0?0:1;break;case Qt: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++}}zi.DEFAULT_IMAGE=null,zi.DEFAULT_MAPPING=be,zi.DEFAULT_ANISOTROPY=1;class Ni{constructor(e=0,t=0,n=0,i=1){Ni.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){const t=this.x,n=this.y,i=this.z,a=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*i+o[12]*a,this.y=o[1]*t+o[5]*n+o[9]*i+o[13]*a,this.z=o[2]*t+o[6]*n+o[10]*i+o[14]*a,this.w=o[3]*t+o[7]*n+o[11]*i+o[15]*a,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);const 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,a;const c=e.elements,d=c[0],g=c[4],v=c[8],M=c[1],B=c[5],I=c[9],ne=c[2],ee=c[6],q=c[10];if(Math.abs(g-M)<.01&&Math.abs(v-ne)<.01&&Math.abs(I-ee)<.01){if(Math.abs(g+M)<.1&&Math.abs(v+ne)<.1&&Math.abs(I+ee)<.1&&Math.abs(d+B+q-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const Ce=(d+1)/2,ke=(B+1)/2,nt=(q+1)/2,Ye=(g+M)/4,ht=(v+ne)/4,Rt=(I+ee)/4;return Ce>ke&&Ce>nt?Ce<.01?(n=0,i=.707106781,a=.707106781):(n=Math.sqrt(Ce),i=Ye/n,a=ht/n):ke>nt?ke<.01?(n=.707106781,i=0,a=.707106781):(i=Math.sqrt(ke),n=Ye/i,a=Rt/i):nt<.01?(n=.707106781,i=.707106781,a=0):(a=Math.sqrt(nt),n=ht/a,i=Rt/a),this.set(n,i,a,t),this}let ye=Math.sqrt((ee-I)*(ee-I)+(v-ne)*(v-ne)+(M-g)*(M-g));return Math.abs(ye)<.001&&(ye=1),this.x=(ee-I)/ye,this.y=(v-ne)/ye,this.z=(M-g)/ye,this.w=Math.acos((d+B+q-1)/2),this}setFromMatrixPosition(e){const 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=Ca(this.x,e.x,t.x),this.y=Ca(this.y,e.y,t.y),this.z=Ca(this.z,e.z,t.z),this.w=Ca(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ca(this.x,e,t),this.y=Ca(this.y,e,t),this.z=Ca(this.z,e,t),this.w=Ca(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ca(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}}class Ns extends bl{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:vr,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new Ni(0,0,e,t),this.scissorTest=!1,this.viewport=new Ni(0,0,e,t);const i={width:e,height:t,depth:n.depth},a=new zi(i);this.textures=[];const o=n.count;for(let u=0;u1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.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,fe),fe.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(gn),Nn.subVectors(this.max,gn),De.subVectors(e.a,gn),Le.subVectors(e.b,gn),Xe.subVectors(e.c,gn),mt.subVectors(Le,De),Kt.subVectors(Xe,Le),nn.subVectors(De,Xe);let t=[0,-mt.z,mt.y,0,-Kt.z,Kt.y,0,-nn.z,nn.y,mt.z,0,-mt.x,Kt.z,0,-Kt.x,nn.z,0,-nn.x,-mt.y,mt.x,0,-Kt.y,Kt.x,0,-nn.y,nn.x,0];return!mr(t,De,Le,Xe,Nn)||(t=[1,0,0,0,1,0,0,0,1],!mr(t,De,Le,Xe,Nn))?!1:($n.crossVectors(mt,Kt),t=[$n.x,$n.y,$n.z],mr(t,De,Le,Xe,Nn))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,fe).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(fe).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:(J[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),J[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),J[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),J[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),J[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),J[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),J[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),J[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(J),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)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const J=[new le,new le,new le,new le,new le,new le,new le,new le],fe=new le,Te=new Y,De=new le,Le=new le,Xe=new le,mt=new le,Kt=new le,nn=new le,gn=new le,Nn=new le,$n=new le,Er=new le;function mr(s,e,t,n,i){for(let a=0,o=s.length-3;a<=o;a+=3){Er.fromArray(s,a);const u=i.x*Math.abs(Er.x)+i.y*Math.abs(Er.y)+i.z*Math.abs(Er.z),c=e.dot(Er),d=t.dot(Er),g=n.dot(Er);if(Math.max(-Math.max(c,d,g),Math.min(c,d,g))>u)return!1}return!0}const ti=new Y,jr=new le,ui=new le;class gi{constructor(e=new le,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){const n=this.center;t!==void 0?n.copy(t):ti.setFromPoints(e).getCenter(n);let i=0;for(let a=0,o=e.length;athis.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;jr.subVectors(e,this.center);const t=jr.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.addScaledVector(jr,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):(ui.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(jr.copy(e.center).add(ui)),this.expandByPoint(jr.copy(e.center).sub(ui))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const oi=new le,ts=new le,fs=new le,Ds=new le,Ba=new le,Ka=new le,xo=new le;class aa{constructor(e=new le,t=new le(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,oi)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const 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){const t=oi.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(oi.copy(this.origin).addScaledVector(this.direction,t),oi.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){ts.copy(e).add(t).multiplyScalar(.5),fs.copy(t).sub(e).normalize(),Ds.copy(this.origin).sub(ts);const a=e.distanceTo(t)*.5,o=-this.direction.dot(fs),u=Ds.dot(this.direction),c=-Ds.dot(fs),d=Ds.lengthSq(),g=Math.abs(1-o*o);let v,M,B,I;if(g>0)if(v=o*c-u,M=o*u-c,I=a*g,v>=0)if(M>=-I)if(M<=I){const ne=1/g;v*=ne,M*=ne,B=v*(v+o*M+2*u)+M*(o*v+M+2*c)+d}else M=a,v=Math.max(0,-(o*M+u)),B=-v*v+M*(M+2*c)+d;else M=-a,v=Math.max(0,-(o*M+u)),B=-v*v+M*(M+2*c)+d;else M<=-I?(v=Math.max(0,-(-o*a+u)),M=v>0?-a:Math.min(Math.max(-a,-c),a),B=-v*v+M*(M+2*c)+d):M<=I?(v=0,M=Math.min(Math.max(-a,-c),a),B=M*(M+2*c)+d):(v=Math.max(0,-(o*a+u)),M=v>0?a:Math.min(Math.max(-a,-c),a),B=-v*v+M*(M+2*c)+d);else M=o>0?-a:a,v=Math.max(0,-(o*M+u)),B=-v*v+M*(M+2*c)+d;return n&&n.copy(this.origin).addScaledVector(this.direction,v),i&&i.copy(ts).addScaledVector(fs,M),B}intersectSphere(e,t){oi.subVectors(e.center,this.origin);const n=oi.dot(this.direction),i=oi.dot(oi)-n*n,a=e.radius*e.radius;if(i>a)return null;const o=Math.sqrt(a-i),u=n-o,c=n+o;return c<0?null:u<0?this.at(c,t):this.at(u,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,a,o,u,c;const d=1/this.direction.x,g=1/this.direction.y,v=1/this.direction.z,M=this.origin;return d>=0?(n=(e.min.x-M.x)*d,i=(e.max.x-M.x)*d):(n=(e.max.x-M.x)*d,i=(e.min.x-M.x)*d),g>=0?(a=(e.min.y-M.y)*g,o=(e.max.y-M.y)*g):(a=(e.max.y-M.y)*g,o=(e.min.y-M.y)*g),n>o||a>i||((a>n||isNaN(n))&&(n=a),(o=0?(u=(e.min.z-M.z)*v,c=(e.max.z-M.z)*v):(u=(e.max.z-M.z)*v,c=(e.min.z-M.z)*v),n>c||u>i)||((u>n||n!==n)&&(n=u),(c=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,oi)!==null}intersectTriangle(e,t,n,i,a){Ba.subVectors(t,e),Ka.subVectors(n,e),xo.crossVectors(Ba,Ka);let o=this.direction.dot(xo),u;if(o>0){if(i)return null;u=1}else if(o<0)u=-1,o=-o;else return null;Ds.subVectors(this.origin,e);const c=u*this.direction.dot(Ka.crossVectors(Ds,Ka));if(c<0)return null;const d=u*this.direction.dot(Ba.cross(Ds));if(d<0||c+d>o)return null;const g=-u*Ds.dot(xo);return g<0?null:this.at(g/o,a)}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)}}class di{constructor(e,t,n,i,a,o,u,c,d,g,v,M,B,I,ne,ee){di.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,a,o,u,c,d,g,v,M,B,I,ne,ee)}set(e,t,n,i,a,o,u,c,d,g,v,M,B,I,ne,ee){const q=this.elements;return q[0]=e,q[4]=t,q[8]=n,q[12]=i,q[1]=a,q[5]=o,q[9]=u,q[13]=c,q[2]=d,q[6]=g,q[10]=v,q[14]=M,q[3]=B,q[7]=I,q[11]=ne,q[15]=ee,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 di().fromArray(this.elements)}copy(e){const 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){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const 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 this.determinant()===0?(e.set(1,0,0),t.set(0,1,0),n.set(0,0,1),this):(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){if(e.determinant()===0)return this.identity();const t=this.elements,n=e.elements,i=1/Ma.setFromMatrixColumn(e,0).length(),a=1/Ma.setFromMatrixColumn(e,1).length(),o=1/Ma.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]*a,t[5]=n[5]*a,t[6]=n[6]*a,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){const t=this.elements,n=e.x,i=e.y,a=e.z,o=Math.cos(n),u=Math.sin(n),c=Math.cos(i),d=Math.sin(i),g=Math.cos(a),v=Math.sin(a);if(e.order==="XYZ"){const M=o*g,B=o*v,I=u*g,ne=u*v;t[0]=c*g,t[4]=-c*v,t[8]=d,t[1]=B+I*d,t[5]=M-ne*d,t[9]=-u*c,t[2]=ne-M*d,t[6]=I+B*d,t[10]=o*c}else if(e.order==="YXZ"){const M=c*g,B=c*v,I=d*g,ne=d*v;t[0]=M+ne*u,t[4]=I*u-B,t[8]=o*d,t[1]=o*v,t[5]=o*g,t[9]=-u,t[2]=B*u-I,t[6]=ne+M*u,t[10]=o*c}else if(e.order==="ZXY"){const M=c*g,B=c*v,I=d*g,ne=d*v;t[0]=M-ne*u,t[4]=-o*v,t[8]=I+B*u,t[1]=B+I*u,t[5]=o*g,t[9]=ne-M*u,t[2]=-o*d,t[6]=u,t[10]=o*c}else if(e.order==="ZYX"){const M=o*g,B=o*v,I=u*g,ne=u*v;t[0]=c*g,t[4]=I*d-B,t[8]=M*d+ne,t[1]=c*v,t[5]=ne*d+M,t[9]=B*d-I,t[2]=-d,t[6]=u*c,t[10]=o*c}else if(e.order==="YZX"){const M=o*c,B=o*d,I=u*c,ne=u*d;t[0]=c*g,t[4]=ne-M*v,t[8]=I*v+B,t[1]=v,t[5]=o*g,t[9]=-u*g,t[2]=-d*g,t[6]=B*v+I,t[10]=M-ne*v}else if(e.order==="XZY"){const M=o*c,B=o*d,I=u*c,ne=u*d;t[0]=c*g,t[4]=-v,t[8]=d*g,t[1]=M*v+ne,t[5]=o*g,t[9]=B*v-I,t[2]=I*v-B,t[6]=u*g,t[10]=ne*v+M}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(lo,e,Jo)}lookAt(e,t,n){const i=this.elements;return pa.subVectors(e,t),pa.lengthSq()===0&&(pa.z=1),pa.normalize(),zs.crossVectors(n,pa),zs.lengthSq()===0&&(Math.abs(n.z)===1?pa.x+=1e-4:pa.z+=1e-4,pa.normalize(),zs.crossVectors(n,pa)),zs.normalize(),Ya.crossVectors(pa,zs),i[0]=zs.x,i[4]=Ya.x,i[8]=pa.x,i[1]=zs.y,i[5]=Ya.y,i[9]=pa.y,i[2]=zs.z,i[6]=Ya.z,i[10]=pa.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,a=this.elements,o=n[0],u=n[4],c=n[8],d=n[12],g=n[1],v=n[5],M=n[9],B=n[13],I=n[2],ne=n[6],ee=n[10],q=n[14],ye=n[3],Ce=n[7],ke=n[11],nt=n[15],Ye=i[0],ht=i[4],Rt=i[8],qe=i[12],pt=i[1],xn=i[5],cr=i[9],pr=i[13],Br=i[2],zr=i[6],Dr=i[10],Zr=i[14],Ti=i[3],ds=i[7],As=i[11],Xr=i[15];return a[0]=o*Ye+u*pt+c*Br+d*Ti,a[4]=o*ht+u*xn+c*zr+d*ds,a[8]=o*Rt+u*cr+c*Dr+d*As,a[12]=o*qe+u*pr+c*Zr+d*Xr,a[1]=g*Ye+v*pt+M*Br+B*Ti,a[5]=g*ht+v*xn+M*zr+B*ds,a[9]=g*Rt+v*cr+M*Dr+B*As,a[13]=g*qe+v*pr+M*Zr+B*Xr,a[2]=I*Ye+ne*pt+ee*Br+q*Ti,a[6]=I*ht+ne*xn+ee*zr+q*ds,a[10]=I*Rt+ne*cr+ee*Dr+q*As,a[14]=I*qe+ne*pr+ee*Zr+q*Xr,a[3]=ye*Ye+Ce*pt+ke*Br+nt*Ti,a[7]=ye*ht+Ce*xn+ke*zr+nt*ds,a[11]=ye*Rt+Ce*cr+ke*Dr+nt*As,a[15]=ye*qe+Ce*pr+ke*Zr+nt*Xr,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],n=e[4],i=e[8],a=e[12],o=e[1],u=e[5],c=e[9],d=e[13],g=e[2],v=e[6],M=e[10],B=e[14],I=e[3],ne=e[7],ee=e[11],q=e[15],ye=c*B-d*M,Ce=u*B-d*v,ke=u*M-c*v,nt=o*B-d*g,Ye=o*M-c*g,ht=o*v-u*g;return t*(ne*ye-ee*Ce+q*ke)-n*(I*ye-ee*nt+q*Ye)+i*(I*Ce-ne*nt+q*ht)-a*(I*ke-ne*Ye+ee*ht)}transpose(){const e=this.elements;let 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){const 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(){const e=this.elements,t=e[0],n=e[1],i=e[2],a=e[3],o=e[4],u=e[5],c=e[6],d=e[7],g=e[8],v=e[9],M=e[10],B=e[11],I=e[12],ne=e[13],ee=e[14],q=e[15],ye=v*ee*d-ne*M*d+ne*c*B-u*ee*B-v*c*q+u*M*q,Ce=I*M*d-g*ee*d-I*c*B+o*ee*B+g*c*q-o*M*q,ke=g*ne*d-I*v*d+I*u*B-o*ne*B-g*u*q+o*v*q,nt=I*v*c-g*ne*c-I*u*M+o*ne*M+g*u*ee-o*v*ee,Ye=t*ye+n*Ce+i*ke+a*nt;if(Ye===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const ht=1/Ye;return e[0]=ye*ht,e[1]=(ne*M*a-v*ee*a-ne*i*B+n*ee*B+v*i*q-n*M*q)*ht,e[2]=(u*ee*a-ne*c*a+ne*i*d-n*ee*d-u*i*q+n*c*q)*ht,e[3]=(v*c*a-u*M*a-v*i*d+n*M*d+u*i*B-n*c*B)*ht,e[4]=Ce*ht,e[5]=(g*ee*a-I*M*a+I*i*B-t*ee*B-g*i*q+t*M*q)*ht,e[6]=(I*c*a-o*ee*a-I*i*d+t*ee*d+o*i*q-t*c*q)*ht,e[7]=(o*M*a-g*c*a+g*i*d-t*M*d-o*i*B+t*c*B)*ht,e[8]=ke*ht,e[9]=(I*v*a-g*ne*a-I*n*B+t*ne*B+g*n*q-t*v*q)*ht,e[10]=(o*ne*a-I*u*a+I*n*d-t*ne*d-o*n*q+t*u*q)*ht,e[11]=(g*u*a-o*v*a-g*n*d+t*v*d+o*n*B-t*u*B)*ht,e[12]=nt*ht,e[13]=(g*ne*i-I*v*i+I*n*M-t*ne*M-g*n*ee+t*v*ee)*ht,e[14]=(I*u*i-o*ne*i-I*n*c+t*ne*c+o*n*ee-t*u*ee)*ht,e[15]=(o*v*i-g*u*i+g*n*c-t*v*c-o*n*M+t*u*M)*ht,this}scale(e){const t=this.elements,n=e.x,i=e.y,a=e.z;return t[0]*=n,t[4]*=i,t[8]*=a,t[1]*=n,t[5]*=i,t[9]*=a,t[2]*=n,t[6]*=i,t[10]*=a,t[3]*=n,t[7]*=i,t[11]*=a,this}getMaxScaleOnAxis(){const 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){const 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){const 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){const 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){const n=Math.cos(t),i=Math.sin(t),a=1-n,o=e.x,u=e.y,c=e.z,d=a*o,g=a*u;return this.set(d*o+n,d*u-i*c,d*c+i*u,0,d*u+i*c,g*u+n,g*c-i*o,0,d*c-i*u,g*c+i*o,a*c*c+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,a,o){return this.set(1,n,a,0,e,1,o,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,a=t._x,o=t._y,u=t._z,c=t._w,d=a+a,g=o+o,v=u+u,M=a*d,B=a*g,I=a*v,ne=o*g,ee=o*v,q=u*v,ye=c*d,Ce=c*g,ke=c*v,nt=n.x,Ye=n.y,ht=n.z;return i[0]=(1-(ne+q))*nt,i[1]=(B+ke)*nt,i[2]=(I-Ce)*nt,i[3]=0,i[4]=(B-ke)*Ye,i[5]=(1-(M+q))*Ye,i[6]=(ee+ye)*Ye,i[7]=0,i[8]=(I+Ce)*ht,i[9]=(ee-ye)*ht,i[10]=(1-(M+ne))*ht,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;if(e.x=i[12],e.y=i[13],e.z=i[14],this.determinant()===0)return n.set(1,1,1),t.identity(),this;let a=Ma.set(i[0],i[1],i[2]).length();const o=Ma.set(i[4],i[5],i[6]).length(),u=Ma.set(i[8],i[9],i[10]).length();this.determinant()<0&&(a=-a),Rs.copy(this);const d=1/a,g=1/o,v=1/u;return Rs.elements[0]*=d,Rs.elements[1]*=d,Rs.elements[2]*=d,Rs.elements[4]*=g,Rs.elements[5]*=g,Rs.elements[6]*=g,Rs.elements[8]*=v,Rs.elements[9]*=v,Rs.elements[10]*=v,t.setFromRotationMatrix(Rs),n.x=a,n.y=o,n.z=u,this}makePerspective(e,t,n,i,a,o,u=gl,c=!1){const d=this.elements,g=2*a/(t-e),v=2*a/(n-i),M=(t+e)/(t-e),B=(n+i)/(n-i);let I,ne;if(c)I=a/(o-a),ne=o*a/(o-a);else if(u===gl)I=-(o+a)/(o-a),ne=-2*o*a/(o-a);else if(u===To)I=-o/(o-a),ne=-o*a/(o-a);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+u);return d[0]=g,d[4]=0,d[8]=M,d[12]=0,d[1]=0,d[5]=v,d[9]=B,d[13]=0,d[2]=0,d[6]=0,d[10]=I,d[14]=ne,d[3]=0,d[7]=0,d[11]=-1,d[15]=0,this}makeOrthographic(e,t,n,i,a,o,u=gl,c=!1){const d=this.elements,g=2/(t-e),v=2/(n-i),M=-(t+e)/(t-e),B=-(n+i)/(n-i);let I,ne;if(c)I=1/(o-a),ne=o/(o-a);else if(u===gl)I=-2/(o-a),ne=-(o+a)/(o-a);else if(u===To)I=-1/(o-a),ne=-a/(o-a);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+u);return d[0]=g,d[4]=0,d[8]=0,d[12]=M,d[1]=0,d[5]=v,d[9]=0,d[13]=B,d[2]=0,d[6]=0,d[10]=I,d[14]=ne,d[3]=0,d[7]=0,d[11]=0,d[15]=1,this}equals(e){const 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){const 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}}const Ma=new le,Rs=new di,lo=new le(0,0,0),Jo=new le(1,1,1),zs=new le,Ya=new le,pa=new le,al=new di,qa=new Ze;class Ua{constructor(e=0,t=0,n=0,i=Ua.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){const i=e.elements,a=i[0],o=i[4],u=i[8],c=i[1],d=i[5],g=i[9],v=i[2],M=i[6],B=i[10];switch(t){case"XYZ":this._y=Math.asin(Ca(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(-g,B),this._z=Math.atan2(-o,a)):(this._x=Math.atan2(M,d),this._z=0);break;case"YXZ":this._x=Math.asin(-Ca(g,-1,1)),Math.abs(g)<.9999999?(this._y=Math.atan2(u,B),this._z=Math.atan2(c,d)):(this._y=Math.atan2(-v,a),this._z=0);break;case"ZXY":this._x=Math.asin(Ca(M,-1,1)),Math.abs(M)<.9999999?(this._y=Math.atan2(-v,B),this._z=Math.atan2(-o,d)):(this._y=0,this._z=Math.atan2(c,a));break;case"ZYX":this._y=Math.asin(-Ca(v,-1,1)),Math.abs(v)<.9999999?(this._x=Math.atan2(M,B),this._z=Math.atan2(c,a)):(this._x=0,this._z=Math.atan2(-o,d));break;case"YZX":this._z=Math.asin(Ca(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-g,d),this._y=Math.atan2(-v,a)):(this._x=0,this._y=Math.atan2(u,B));break;case"XZY":this._z=Math.asin(-Ca(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(M,d),this._y=Math.atan2(u,a)):(this._x=Math.atan2(-g,B),this._y=0);break;default:Lr("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return al.makeRotationFromQuaternion(e),this.setFromRotationMatrix(al,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return qa.setFromEuler(this),this.setFromQuaternion(qa,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}}Ua.DEFAULT_ORDER="XYZ";class dl{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(u=>fd(rl({},u),{boundingBox:u.boundingBox?u.boundingBox.toJSON():void 0,boundingSphere:u.boundingSphere?u.boundingSphere.toJSON():void 0})),i.instanceInfo=this._instanceInfo.map(u=>rl({},u)),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=this.boundingSphere.toJSON()),this.boundingBox!==null&&(i.boundingBox=this.boundingBox.toJSON()));function a(u,c){return u[c.uuid]===void 0&&(u[c.uuid]=c.toJSON(e)),c.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=a(e.geometries,this.geometry);const u=this.geometry.parameters;if(u!==void 0&&u.shapes!==void 0){const c=u.shapes;if(Array.isArray(c))for(let d=0,g=c.length;d0){i.children=[];for(let u=0;u0){i.animations=[];for(let u=0;u0&&(n.geometries=u),c.length>0&&(n.materials=c),d.length>0&&(n.textures=d),g.length>0&&(n.images=g),v.length>0&&(n.shapes=v),M.length>0&&(n.skeletons=M),B.length>0&&(n.animations=B),I.length>0&&(n.nodes=I)}return n.object=i,n;function o(u){const c=[];for(const d in u){const g=u[d];delete g.metadata,c.push(g)}return c}}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(a)):i.set(0,0,0)}static getBarycoord(e,t,n,i,a){Nc.subVectors(i,t),bh.subVectors(n,t),Wf.subVectors(e,t);const o=Nc.dot(Nc),u=Nc.dot(bh),c=Nc.dot(Wf),d=bh.dot(bh),g=bh.dot(Wf),v=o*d-u*u;if(v===0)return a.set(0,0,0),null;const M=1/v,B=(d*c-u*g)*M,I=(o*g-u*c)*M;return a.set(1-B-I,I,B)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,_h)===null?!1:_h.x>=0&&_h.y>=0&&_h.x+_h.y<=1}static getInterpolation(e,t,n,i,a,o,u,c){return this.getBarycoord(e,t,n,i,_h)===null?(c.x=0,c.y=0,"z"in c&&(c.z=0),"w"in c&&(c.w=0),null):(c.setScalar(0),c.addScaledVector(a,_h.x),c.addScaledVector(o,_h.y),c.addScaledVector(u,_h.z),c)}static getInterpolatedAttribute(e,t,n,i,a,o){return Ea.setScalar(0),Rl.setScalar(0),Zf.setScalar(0),Ea.fromBufferAttribute(e,t),Rl.fromBufferAttribute(e,n),Zf.fromBufferAttribute(e,i),o.setScalar(0),o.addScaledVector(Ea,a.x),o.addScaledVector(Rl,a.y),o.addScaledVector(Zf,a.z),o}static isFrontFacing(e,t,n,i){return Nc.subVectors(n,t),bh.subVectors(e,t),Nc.cross(bh).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 Nc.subVectors(this.c,this.b),bh.subVectors(this.a,this.b),Nc.cross(bh).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return ku.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return ku.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,a){return ku.getInterpolation(e,this.a,this.b,this.c,t,n,i,a)}containsPoint(e){return ku.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return ku.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,i=this.b,a=this.c;let o,u;ol.subVectors(i,n),Bl.subVectors(a,n),Co.subVectors(e,n);const c=ol.dot(Co),d=Bl.dot(Co);if(c<=0&&d<=0)return t.copy(n);vu.subVectors(e,i);const g=ol.dot(vu),v=Bl.dot(vu);if(g>=0&&v<=g)return t.copy(i);const M=c*v-g*d;if(M<=0&&c>=0&&g<=0)return o=c/(c-g),t.copy(n).addScaledVector(ol,o);Gl.subVectors(e,a);const B=ol.dot(Gl),I=Bl.dot(Gl);if(I>=0&&B<=I)return t.copy(a);const ne=B*d-c*I;if(ne<=0&&d>=0&&I<=0)return u=d/(d-I),t.copy(n).addScaledVector(Bl,u);const ee=g*I-B*v;if(ee<=0&&v-g>=0&&B-I>=0)return yd.subVectors(a,i),u=(v-g)/(v-g+(B-I)),t.copy(i).addScaledVector(yd,u);const q=1/(ee+ne+M);return o=ne*q,u=M*q,t.copy(n).addScaledVector(ol,o).addScaledVector(Bl,u)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const Dh={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},Vu={h:0,s:0,l:0},EA={h:0,s:0,l:0};function zu(s,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?s+(e-s)*6*t:t<1/2?e:t<2/3?s+(e-s)*6*(2/3-t):s}class Wr{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){const 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=sl){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,xr.colorSpaceToWorking(this,t),this}setRGB(e,t,n,i=xr.workingColorSpace){return this.r=e,this.g=t,this.b=n,xr.colorSpaceToWorking(this,i),this}setHSL(e,t,n,i=xr.workingColorSpace){if(e=Ud(e,1),t=Ca(t,0,1),n=Ca(n,0,1),t===0)this.r=this.g=this.b=n;else{const a=n<=.5?n*(1+t):n+t-n*t,o=2*n-a;this.r=zu(o,a,e+1/3),this.g=zu(o,a,e),this.b=zu(o,a,e-1/3)}return xr.colorSpaceToWorking(this,i),this}setStyle(e,t=sl){function n(a){a!==void 0&&parseFloat(a)<1&&Lr("Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let a;const o=i[1],u=i[2];switch(o){case"rgb":case"rgba":if(a=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(u))return n(a[4]),this.setRGB(Math.min(255,parseInt(a[1],10))/255,Math.min(255,parseInt(a[2],10))/255,Math.min(255,parseInt(a[3],10))/255,t);if(a=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(u))return n(a[4]),this.setRGB(Math.min(100,parseInt(a[1],10))/100,Math.min(100,parseInt(a[2],10))/100,Math.min(100,parseInt(a[3],10))/100,t);break;case"hsl":case"hsla":if(a=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(u))return n(a[4]),this.setHSL(parseFloat(a[1])/360,parseFloat(a[2])/100,parseFloat(a[3])/100,t);break;default:Lr("Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const a=i[1],o=a.length;if(o===3)return this.setRGB(parseInt(a.charAt(0),16)/15,parseInt(a.charAt(1),16)/15,parseInt(a.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(a,16),t);Lr("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=sl){const n=Dh[e.toLowerCase()];return n!==void 0?this.setHex(n,t):Lr("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=Fr(e.r),this.g=Fr(e.g),this.b=Fr(e.b),this}copyLinearToSRGB(e){return this.r=ri(e.r),this.g=ri(e.g),this.b=ri(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=sl){return xr.workingToColorSpace(Hc.copy(this),e),Math.round(Ca(Hc.r*255,0,255))*65536+Math.round(Ca(Hc.g*255,0,255))*256+Math.round(Ca(Hc.b*255,0,255))}getHexString(e=sl){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=xr.workingColorSpace){xr.workingToColorSpace(Hc.copy(this),t);const n=Hc.r,i=Hc.g,a=Hc.b,o=Math.max(n,i,a),u=Math.min(n,i,a);let c,d;const g=(u+o)/2;if(u===o)c=0,d=0;else{const v=o-u;switch(d=g<=.5?v/(o+u):v/(2-o-u),o){case n:c=(i-a)/v+(i0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){Lr(`Material: parameter '${t}' has value of undefined.`);continue}const i=this[t];if(i===void 0){Lr(`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){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,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.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),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!==ve&&(n.blending=this.blending),this.side!==j&&(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!==zn&&(n.blendSrc=this.blendSrc),this.blendDst!==dr&&(n.blendDst=this.blendDst),this.blendEquation!==vt&&(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!==Ae&&(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!==lu&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Ku&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Ku&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Ku&&(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.allowOverride===!1&&(n.allowOverride=!1),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(a){const o=[];for(const u in a){const c=a[u];delete c.metadata,o.push(c)}return o}if(t){const a=i(e.textures),o=i(e.images);a.length>0&&(n.textures=a),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;const t=e.clippingPlanes;let n=null;if(t!==null){const i=t.length;n=new Array(i);for(let a=0;a!==i;++a)n[a]=t[a].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.allowOverride=e.allowOverride,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++}}class Yl extends Hl{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Wr(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 Ua,this.combine=on,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}}const Ql=Km();function Km(){const s=new ArrayBuffer(4),e=new Float32Array(s),t=new Uint32Array(s),n=new Uint32Array(512),i=new Uint32Array(512);for(let c=0;c<256;++c){const d=c-127;d<-27?(n[c]=0,n[c|256]=32768,i[c]=24,i[c|256]=24):d<-14?(n[c]=1024>>-d-14,n[c|256]=1024>>-d-14|32768,i[c]=-d-1,i[c|256]=-d-1):d<=15?(n[c]=d+15<<10,n[c|256]=d+15<<10|32768,i[c]=13,i[c|256]=13):d<128?(n[c]=31744,n[c|256]=64512,i[c]=24,i[c|256]=24):(n[c]=31744,n[c|256]=64512,i[c]=13,i[c|256]=13)}const a=new Uint32Array(2048),o=new Uint32Array(64),u=new Uint32Array(64);for(let c=1;c<1024;++c){let d=c<<13,g=0;for(;!(d&8388608);)d<<=1,g-=8388608;d&=-8388609,g+=947912704,a[c]=d|g}for(let c=1024;c<2048;++c)a[c]=939524096+(c-1024<<13);for(let c=1;c<31;++c)o[c]=c<<23;o[31]=1199570944,o[32]=2147483648;for(let c=33;c<63;++c)o[c]=2147483648+(c-32<<23);o[63]=3347054592;for(let c=1;c<64;++c)c!==32&&(u[c]=1024);return{floatView:e,uint32View:t,baseTable:n,shiftTable:i,mantissaTable:a,exponentTable:o,offsetTable:u}}function Ol(s){Math.abs(s)>65504&&Lr("DataUtils.toHalfFloat(): Value out of range."),s=Ca(s,-65504,65504),Ql.floatView[0]=s;const e=Ql.uint32View[0],t=e>>23&511;return Ql.baseTable[t]+((e&8388607)>>Ql.shiftTable[t])}function Kf(s){const e=s>>10;return Ql.uint32View[0]=Ql.mantissaTable[Ql.offsetTable[e]+(s&1023)]+Ql.exponentTable[e],Ql.floatView[0]}class Zv{static toHalfFloat(e){return Ol(e)}static fromHalfFloat(e){return Kf(e)}}const ql=new le,Rp=new ce;let $f=0;class wl{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:$f++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=gh,this.updateRanges=[],this.gpuType=dt,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,a=this.itemSize;it.count&&Lr("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 Y);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Gr("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new le(-1/0,-1/0,-1/0),new le(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){const c=this.parameters;for(const d in c)c[d]!==void 0&&(e[d]=c[d]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const c in n){const d=n[c];e.data.attributes[c]=d.toJSON(e.data)}const i={};let a=!1;for(const c in this.morphAttributes){const d=this.morphAttributes[c],g=[];for(let v=0,M=d.length;v0&&(i[c]=g,a=!0)}a&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const u=this.boundingSphere;return u!==null&&(e.data.boundingSphere=u.toJSON()),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;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const i=e.attributes;for(const d in i){const g=i[d];this.setAttribute(d,g.clone(t))}const a=e.morphAttributes;for(const d in a){const g=[],v=a[d];for(let M=0,B=v.length;M0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,o=i.length;aBp(e.far-e.near,2)))&&(Af.copy(a).invert(),Sl.copy(e.ray).applyMatrix4(Af),!(n.boundingBox!==null&&Sl.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Sl)))}_computeIntersections(e,t,n){let i;const a=this.geometry,o=this.material,u=a.index,c=a.attributes.position,d=a.attributes.uv,g=a.attributes.uv1,v=a.attributes.normal,M=a.groups,B=a.drawRange;if(u!==null)if(Array.isArray(o))for(let I=0,ne=M.length;It.far?null:{distance:d,point:ip.clone(),object:s}}function sp(s,e,t,n,i,a,o,u,c,d){s.getVertexPosition(u,TA),s.getVertexPosition(c,Gd),s.getVertexPosition(d,Hd);const g=um(s,e,t,n,TA,Gd,Hd,_g);if(g){const v=new le;ku.getBarycoord(_g,TA,Gd,Hd,v),i&&(g.uv=ku.getInterpolatedAttribute(i,u,c,d,v,new ce)),a&&(g.uv1=ku.getInterpolatedAttribute(a,u,c,d,v,new ce)),o&&(g.normal=ku.getInterpolatedAttribute(o,u,c,d,v,new le),g.normal.dot(n.direction)>0&&g.normal.multiplyScalar(-1));const M={a:u,b:c,c:d,normal:new le,materialIndex:0};ku.getNormal(TA,Gd,Hd,M.normal),g.face=M,g.barycoord=v}return g}class bd extends ka{constructor(e=1,t=1,n=1,i=1,a=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:a,depthSegments:o};const u=this;i=Math.floor(i),a=Math.floor(a),o=Math.floor(o);const c=[],d=[],g=[],v=[];let M=0,B=0;I("z","y","x",-1,-1,n,t,e,o,a,0),I("z","y","x",1,-1,n,t,-e,o,a,1),I("x","z","y",1,1,e,n,t,i,o,2),I("x","z","y",1,-1,e,n,-t,i,o,3),I("x","y","z",1,-1,e,t,n,i,a,4),I("x","y","z",-1,-1,e,t,-n,i,a,5),this.setIndex(c),this.setAttribute("position",new Ui(d,3)),this.setAttribute("normal",new Ui(g,3)),this.setAttribute("uv",new Ui(v,2));function I(ne,ee,q,ye,Ce,ke,nt,Ye,ht,Rt,qe){const pt=ke/ht,xn=nt/Rt,cr=ke/2,pr=nt/2,Br=Ye/2,zr=ht+1,Dr=Rt+1;let Zr=0,Ti=0;const ds=new le;for(let As=0;As0?1:-1,g.push(ds.x,ds.y,ds.z),v.push(Yi/ht),v.push(1-As/Rt),Zr+=1}}for(let As=0;As0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Qd extends yl{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new di,this.projectionMatrix=new di,this.projectionMatrixInverse=new di,this.coordinateSystem=gl,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}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)}}const Wd=new le,xu=new ce,Sg=new ce;class vo extends Qd{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){const t=.5*this.getFilmHeight()/e;this.fov=Oh*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Ou*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Oh*2*Math.atan(Math.tan(Ou*.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){Wd.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Wd.x,Wd.y).multiplyScalar(-e/Wd.z),Wd.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Wd.x,Wd.y).multiplyScalar(-e/Wd.z)}getViewSize(e,t){return this.getViewBounds(e,xu,Sg),t.subVectors(Sg,xu)}setViewOffset(e,t,n,i,a,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=a,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Ou*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,a=-.5*i;const o=this.view;if(this.view!==null&&this.view.enabled){const c=o.fullWidth,d=o.fullHeight;a+=o.offsetX*i/c,t-=o.offsetY*n/d,i*=o.width/c,n*=o.height/d}const u=this.filmOffset;u!==0&&(a+=e*u/this.getFilmWidth()),this.projectionMatrix.makePerspective(a,a+i,t,t-n,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const 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}}const gf=-90,mf=1;class Np extends yl{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new vo(gf,mf,e,t);i.layers=this.layers,this.add(i);const a=new vo(gf,mf,e,t);a.layers=this.layers,this.add(a);const o=new vo(gf,mf,e,t);o.layers=this.layers,this.add(o);const u=new vo(gf,mf,e,t);u.layers=this.layers,this.add(u);const c=new vo(gf,mf,e,t);c.layers=this.layers,this.add(c);const d=new vo(gf,mf,e,t);d.layers=this.layers,this.add(d)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,i,a,o,u,c]=t;for(const d of t)this.remove(d);if(e===gl)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),a.up.set(0,0,-1),a.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),u.up.set(0,1,0),u.lookAt(0,0,1),c.up.set(0,1,0),c.lookAt(0,0,-1);else if(e===To)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),a.up.set(0,0,1),a.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),u.up.set(0,-1,0),u.lookAt(0,0,1),c.up.set(0,-1,0),c.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const d of t)this.add(d),d.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[a,o,u,c,d,g]=this.children,v=e.getRenderTarget(),M=e.getActiveCubeFace(),B=e.getActiveMipmapLevel(),I=e.xr.enabled;e.xr.enabled=!1;const ne=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,a),e.setRenderTarget(n,1,i),e.render(t,o),e.setRenderTarget(n,2,i),e.render(t,u),e.setRenderTarget(n,3,i),e.render(t,c),e.setRenderTarget(n,4,i),e.render(t,d),n.texture.generateMipmaps=ne,e.setRenderTarget(n,5,i),e.render(t,g),e.setRenderTarget(v,M,B),e.xr.enabled=I,n.texture.needsPMREMUpdate=!0}}class rh extends zi{constructor(e=[],t=it,n,i,a,o,u,c,d,g){super(e,t,n,i,a,o,u,c,d,g),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Mc extends Os{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];this.texture=new rh(i),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}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;const n={uniforms:{tEquirect:{value:null}},vertexShader:` - - varying vec3 vWorldDirection; - - vec3 transformDirection( in vec3 dir, in mat4 matrix ) { - - return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); - - } - - void main() { - - vWorldDirection = transformDirection( position, modelMatrix ); - - #include - #include - - } - `,fragmentShader:` - - uniform sampler2D tEquirect; - - varying vec3 vWorldDirection; - - #include - - void main() { - - vec3 direction = normalize( vWorldDirection ); - - vec2 sampleUV = equirectUv( direction ); - - gl_FragColor = texture2D( tEquirect, sampleUV ); - - } - `},i=new bd(5,5,5),a=new nh({name:"CubemapFromEquirect",uniforms:jf(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:de,blending:we});a.uniforms.tEquirect.value=t;const o=new Il(i,a),u=t.minFilter;return t.minFilter===yi&&(t.minFilter=vr),new Np(1,10,this).update(e,o),t.minFilter=u,o.geometry.dispose(),o.material.dispose(),this}clear(e,t=!0,n=!0,i=!0){const a=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,n,i);e.setRenderTarget(a)}}class ih extends yl{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Fp={type:"move"};class Ra{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new ih,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 ih,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new le,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new le),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new ih,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new le,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new le),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){const t=this._hand;if(t)for(const 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,a=null,o=null;const u=this._targetRay,c=this._grip,d=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(d&&e.hand){o=!0;for(const ne of e.hand.values()){const ee=t.getJointPose(ne,n),q=this._getHandJoint(d,ne);ee!==null&&(q.matrix.fromArray(ee.transform.matrix),q.matrix.decompose(q.position,q.rotation,q.scale),q.matrixWorldNeedsUpdate=!0,q.jointRadius=ee.radius),q.visible=ee!==null}const g=d.joints["index-finger-tip"],v=d.joints["thumb-tip"],M=g.position.distanceTo(v.position),B=.02,I=.005;d.inputState.pinching&&M>B+I?(d.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!d.inputState.pinching&&M<=B-I&&(d.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else c!==null&&e.gripSpace&&(a=t.getPose(e.gripSpace,n),a!==null&&(c.matrix.fromArray(a.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.matrixWorldNeedsUpdate=!0,a.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(a.linearVelocity)):c.hasLinearVelocity=!1,a.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(a.angularVelocity)):c.hasAngularVelocity=!1));u!==null&&(i=t.getPose(e.targetRaySpace,n),i===null&&a!==null&&(i=a),i!==null&&(u.matrix.fromArray(i.transform.matrix),u.matrix.decompose(u.position,u.rotation,u.scale),u.matrixWorldNeedsUpdate=!0,i.linearVelocity?(u.hasLinearVelocity=!0,u.linearVelocity.copy(i.linearVelocity)):u.hasLinearVelocity=!1,i.angularVelocity?(u.hasAngularVelocity=!0,u.angularVelocity.copy(i.angularVelocity)):u.hasAngularVelocity=!1,this.dispatchEvent(Fp)))}return u!==null&&(u.visible=i!==null),c!==null&&(c.visible=a!==null),d!==null&&(d.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new ih;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Hu{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new Wr(e),this.density=t}clone(){return new Hu(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class vf{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new Wr(e),this.near=t,this.far=n}clone(){return new vf(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class _d extends yl{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 Ua,this.environmentIntensity=1,this.environmentRotation=new Ua,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__!="undefined"&&__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){const 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}}class wh{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=gh,this.updateRanges=[],this.version=0,this.uuid=oc()}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.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,a=this.stride;ie.far||t.push({distance:c,point:xf.clone(),uv:ku.getInterpolation(xf,sh,Sd,IA,NA,qf,Mg,new ce),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function ed(s,e,t,n,i,a){Yf.subVectors(s,t).addScalar(.5).multiply(n),i!==void 0?(RA.x=a*Yf.x-i*Yf.y,RA.y=i*Yf.x+a*Yf.y):RA.copy(Yf),s.copy(e),s.x+=RA.x,s.y+=RA.y,s.applyMatrix4(wd)}const td=new le,Jf=new le;class dm extends null{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,i=t.length;n0){let n,i;for(n=1,i=t.length;n0){td.setFromMatrixPosition(this.matrixWorld);const i=e.ray.origin.distanceTo(td);this.getObjectForDistance(i).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){td.setFromMatrixPosition(e.matrixWorld),Jf.setFromMatrixPosition(this.matrixWorld);const n=td.distanceTo(Jf)/e.zoom;t[0].object.visible=!0;let i,a;for(i=1,a=t.length;i=o)t[i-1].object.visible=!1,t[i].object.visible=!0;else break}for(this._currentLevel=i-1;i1?null:t.copy(e.start).addScaledVector(n,a)}intersectsLine(e){const 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){const n=t||Cg.getNormalMatrix(e),i=this.coplanarPoint(wo).applyMatrix4(e),a=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(a),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)}}const zh=new gi,fm=new ce(.5,.5),Xd=new le;class qu{constructor(e=new Ec,t=new Ec,n=new Ec,i=new Ec,a=new Ec,o=new Ec){this.planes=[e,t,n,i,a,o]}set(e,t,n,i,a,o){const u=this.planes;return u[0].copy(e),u[1].copy(t),u[2].copy(n),u[3].copy(i),u[4].copy(a),u[5].copy(o),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=gl,n=!1){const i=this.planes,a=e.elements,o=a[0],u=a[1],c=a[2],d=a[3],g=a[4],v=a[5],M=a[6],B=a[7],I=a[8],ne=a[9],ee=a[10],q=a[11],ye=a[12],Ce=a[13],ke=a[14],nt=a[15];if(i[0].setComponents(d-o,B-g,q-I,nt-ye).normalize(),i[1].setComponents(d+o,B+g,q+I,nt+ye).normalize(),i[2].setComponents(d+u,B+v,q+ne,nt+Ce).normalize(),i[3].setComponents(d-u,B-v,q-ne,nt-Ce).normalize(),n)i[4].setComponents(c,M,ee,ke).normalize(),i[5].setComponents(d-c,B-M,q-ee,nt-ke).normalize();else if(i[4].setComponents(d-c,B-M,q-ee,nt-ke).normalize(),t===gl)i[5].setComponents(d+c,B+M,q+ee,nt+ke).normalize();else if(t===To)i[5].setComponents(c,M,ee,ke).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(),zh.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),zh.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(zh)}intersectsSprite(e){zh.center.set(0,0,0);const t=fm.distanceTo(e.center);return zh.radius=.7071067811865476+t,zh.applyMatrix4(e.matrixWorld),this.intersectsSphere(zh)}intersectsSphere(e){const t=this.planes,n=e.center,i=-e.radius;for(let a=0;a<6;a++)if(t[a].distanceToPoint(n)0?e.max.x:e.min.x,Xd.y=i.normal.y>0?e.max.y:e.min.y,Xd.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(Xd)<0)return!1}return!0}containsPoint(e){const 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)}}const Th=new di,oh=new qu;class kp{constructor(){this.coordinateSystem=gl}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let n=0;n=a.length&&a.push({start:-1,count:-1,z:-1,index:-1});const u=a[this.index];o.push(u),this.index++,u.start=e,u.count=t,u.z=n,u.index=i}reset(){this.list.length=0,this.index=0}}const eu=new di,Ef=new Wr(1,1,1),Dl=new qu,Bh=new kp,Cf=new Y,tu=new gi,FA=new le,Wc=new le,PA=new le,jd=new bu,_u=new Il,Yd=null;function up(s,e,t=0){const n=e.itemSize;if(s.isInterleavedBufferAttribute||s.array.constructor!==e.array.constructor){const i=s.count;for(let a=0;a65535?new Uint32Array(i):new Uint16Array(i);t.setIndex(new wl(a,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const n in t.attributes){if(!e.hasAttribute(n))throw new Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);const i=e.getAttribute(n),a=t.getAttribute(n);if(i.itemSize!==a.itemSize||i.normalized!==a.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Y);const e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,i=t.length;n=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const n={visible:!0,active:!0,geometryIndex:e};let i=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(Sf),i=this._availableInstanceIds.shift(),this._instanceInfo[i]=n):(i=this._instanceInfo.length,this._instanceInfo.push(n));const a=this._matricesTexture;eu.identity().toArray(a.image.data,i*16),a.needsUpdate=!0;const o=this._colorsTexture;return o&&(Ef.toArray(o.image.data,i*4),o.needsUpdate=!0),this._visibilityChanged=!0,i}addGeometry(e,t=-1,n=-1){this._initializeGeometry(e),this._validateGeometry(e);const i={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},a=this._geometryInfo;i.vertexStart=this._nextVertexStart,i.reservedVertexCount=t===-1?e.getAttribute("position").count:t;const o=e.getIndex();if(o!==null&&(i.indexStart=this._nextIndexStart,i.reservedIndexCount=n===-1?o.count:n),i.indexStart!==-1&&i.indexStart+i.reservedIndexCount>this._maxIndexCount||i.vertexStart+i.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let c;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(Sf),c=this._availableGeometryIds.shift(),a[c]=i):(c=this._geometryCount,this._geometryCount++,a.push(i)),this.setGeometryAt(c,e),this._nextIndexStart=i.indexStart+i.reservedIndexCount,this._nextVertexStart=i.vertexStart+i.reservedVertexCount,c}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const n=this.geometry,i=n.getIndex()!==null,a=n.getIndex(),o=t.getIndex(),u=this._geometryInfo[e];if(i&&o.count>u.reservedIndexCount||t.attributes.position.count>u.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const c=u.vertexStart,d=u.reservedVertexCount;u.vertexCount=t.getAttribute("position").count;for(const g in n.attributes){const v=t.getAttribute(g),M=n.getAttribute(g);up(v,M,c);const B=v.itemSize;for(let I=v.count,ne=d;I=t.length||t[e].active===!1)return this;const n=this._instanceInfo;for(let i=0,a=n.length;iu).sort((o,u)=>n[o].vertexStart-n[u].vertexStart),a=this.geometry;for(let o=0,u=n.length;o=this._geometryCount)return null;const n=this.geometry,i=this._geometryInfo[e];if(i.boundingBox===null){const a=new Y,o=n.index,u=n.attributes.position;for(let c=i.start,d=i.start+i.count;c=this._geometryCount)return null;const n=this.geometry,i=this._geometryInfo[e];if(i.boundingSphere===null){const a=new gi;this.getBoundingBoxAt(e,Cf),Cf.getCenter(a.center);const o=n.index,u=n.attributes.position;let c=0;for(let d=i.start,g=i.start+i.count;du.active);if(Math.max(...n.map(u=>u.vertexStart+u.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(c=>c.indexStart+c.reservedIndexCount))>t)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);const a=this.geometry;a.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new ka,this._initializeGeometry(a));const o=this.geometry;a.index&&lh(a.index.array,o.index.array);for(const u in a.attributes)lh(a.attributes[u].array,o.attributes[u].array)}raycast(e,t){const n=this._instanceInfo,i=this._geometryInfo,a=this.matrixWorld,o=this.geometry;_u.material=this.material,_u.geometry.index=o.index,_u.geometry.attributes=o.attributes,_u.geometry.boundingBox===null&&(_u.geometry.boundingBox=new Y),_u.geometry.boundingSphere===null&&(_u.geometry.boundingSphere=new gi);for(let u=0,c=n.length;ufd(rl({},t),{boundingBox:t.boundingBox!==null?t.boundingBox.clone():null,boundingSphere:t.boundingSphere!==null?t.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(t=>rl({},t)),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,n,i,a){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const o=i.getIndex(),u=o===null?1:o.array.BYTES_PER_ELEMENT,c=this._instanceInfo,d=this._multiDrawStarts,g=this._multiDrawCounts,v=this._geometryInfo,M=this.perObjectFrustumCulled,B=this._indirectTexture,I=B.image.data,ne=n.isArrayCamera?Bh:Dl;M&&!n.isArrayCamera&&(eu.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),Dl.setFromProjectionMatrix(eu,n.coordinateSystem,n.reversedDepth));let ee=0;if(this.sortObjects){eu.copy(this.matrixWorld).invert(),FA.setFromMatrixPosition(n.matrixWorld).applyMatrix4(eu),Wc.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(eu);for(let Ce=0,ke=c.length;Ce0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,o=i.length;an)return;LA.applyMatrix4(s.matrixWorld);const d=e.ray.origin.distanceTo(LA);if(!(de.far))return{distance:d,point:Vp.clone().applyMatrix4(s.matrixWorld),index:o,face:null,faceIndex:null,barycoord:null,object:s}}const UA=new le,hp=new le;class dp extends null{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let i=0,a=t.count;i0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,o=i.length;ai.far)return;a.push({distance:d,distanceToRay:Math.sqrt(u),point:c,index:e,face:null,faceIndex:null,barycoord:null,object:o})}}class k0 extends null{constructor(e,t,n,i,a=vr,o=vr,u,c,d){super(e,t,n,i,a,o,u,c,d),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const g=this;function v(){g.needsUpdate=!0,g._requestVideoFrameCallbackId=e.requestVideoFrameCallback(v)}"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(v))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class gm extends null{constructor(e,t,n,i,a,o,u,c){super({},e,t,n,i,a,o,u,c),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class OA extends zi{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=cn,this.minFilter=cn,this.generateMipmaps=!1,this.needsUpdate=!0}}class DA extends null{constructor(e,t,n,i,a,o,u,c,d,g,v,M){super(null,o,u,c,d,g,i,a,v,M),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class Us extends null{constructor(e,t,n,i,a,o){super(e,t,n,a,o),this.isCompressedArrayTexture=!0,this.image.depth=i,this.wrapR=Vt,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Cd extends null{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,it),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class iA extends null{constructor(e,t,n,i,a,o,u,c,d){super(e,t,n,i,a,o,u,c,d),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Al extends zi{constructor(e,t,n=st,i,a,o,u=cn,c=cn,d,g=Q,v=1){if(g!==Q&&g!==w)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const M={width:e,height:t,depth:v};super(M,i,a,o,u,c,g,n,d),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new rs(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class sA extends Al{constructor(e,t=st,n=it,i,a,o=cn,u=cn,c,d=Q){const g={width:e,height:e,depth:1},v=[g,g,g,g,g,g];super(e,e,t,n,i,a,o,u,c,d),this.image=v,this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}}class Fo extends zi{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class ll extends ka{constructor(e=1,t=1,n=4,i=8,a=1){super(),this.type="CapsuleGeometry",this.parameters={radius:e,height:t,capSegments:n,radialSegments:i,heightSegments:a},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),i=Math.max(3,Math.floor(i)),a=Math.max(1,Math.floor(a));const o=[],u=[],c=[],d=[],g=t/2,v=Math.PI/2*e,M=t,B=2*v+M,I=n*2+a,ne=i+1,ee=new le,q=new le;for(let ye=0;ye<=I;ye++){let Ce=0,ke=0,nt=0,Ye=0;if(ye<=n){const qe=ye/n,pt=qe*Math.PI/2;ke=-g-e*Math.cos(pt),nt=e*Math.sin(pt),Ye=-e*Math.cos(pt),Ce=qe*v}else if(ye<=n+a){const qe=(ye-n)/a;ke=-g+qe*t,nt=e,Ye=0,Ce=v+qe*M}else{const qe=(ye-n-a)/n,pt=qe*Math.PI/2;ke=g+e*Math.sin(pt),nt=e*Math.cos(pt),Ye=e*Math.sin(pt),Ce=v+M+qe*v}const ht=Math.max(0,Math.min(1,Ce/B));let Rt=0;ye===0?Rt=.5/i:ye===I&&(Rt=-.5/i);for(let qe=0;qe<=i;qe++){const pt=qe/i,xn=pt*Math.PI*2,cr=Math.sin(xn),pr=Math.cos(xn);q.x=-nt*pr,q.y=ke,q.z=nt*cr,u.push(q.x,q.y,q.z),ee.set(-nt*pr,Ye,nt*cr),ee.normalize(),c.push(ee.x,ee.y,ee.z),d.push(pt+Rt,ht)}if(ye>0){const qe=(ye-1)*ne;for(let pt=0;pt0&&Ce(!0),t>0&&Ce(!1)),this.setIndex(g),this.setAttribute("position",new Ui(v,3)),this.setAttribute("normal",new Ui(M,3)),this.setAttribute("uv",new Ui(B,2));function ye(){const ke=new le,nt=new le;let Ye=0;const ht=(t-e)/n;for(let Rt=0;Rt<=a;Rt++){const qe=[],pt=Rt/a,xn=pt*(t-e)+e;for(let cr=0;cr<=i;cr++){const pr=cr/i,Br=pr*c+u,zr=Math.sin(Br),Dr=Math.cos(Br);nt.x=xn*zr,nt.y=-pt*n+ee,nt.z=xn*Dr,v.push(nt.x,nt.y,nt.z),ke.set(zr,ht,Dr).normalize(),M.push(ke.x,ke.y,ke.z),B.push(pr,1-pt),qe.push(I++)}ne.push(qe)}for(let Rt=0;Rt0||qe!==0)&&(g.push(pt,xn,pr),Ye+=3),(t>0||qe!==a-1)&&(g.push(xn,cr,pr),Ye+=3)}d.addGroup(q,Ye,0),q+=Ye}function Ce(ke){const nt=I,Ye=new ce,ht=new le;let Rt=0;const qe=ke===!0?e:t,pt=ke===!0?1:-1;for(let cr=1;cr<=i;cr++)v.push(0,ee*pt,0),M.push(0,pt,0),B.push(.5,.5),I++;const xn=I;for(let cr=0;cr<=i;cr++){const Br=cr/i*c+u,zr=Math.cos(Br),Dr=Math.sin(Br);ht.x=qe*Dr,ht.y=ee*pt,ht.z=qe*zr,v.push(ht.x,ht.y,ht.z),M.push(0,pt,0),Ye.x=zr*.5+.5,Ye.y=Dr*.5*pt+.5,B.push(Ye.x,Ye.y),I++}for(let cr=0;cr.9&&ht<.1&&(Ce<.2&&(o[ye+0]+=1),ke<.2&&(o[ye+2]+=1),nt<.2&&(o[ye+4]+=1))}}function M(ye){a.push(ye.x,ye.y,ye.z)}function B(ye,Ce){const ke=ye*3;Ce.x=e[ke+0],Ce.y=e[ke+1],Ce.z=e[ke+2]}function I(){const ye=new le,Ce=new le,ke=new le,nt=new le,Ye=new ce,ht=new ce,Rt=new ce;for(let qe=0,pt=0;qe0)c=i-1;else{c=i;break}if(i=c,n[i]===o)return i/(a-1);const g=n[i],M=n[i+1]-g,B=(o-g)/M;return(i+B)/(a-1)}getTangent(e,t){let i=e-1e-4,a=e+1e-4;i<0&&(i=0),a>1&&(a=1);const o=this.getPoint(i),u=this.getPoint(a),c=t||(o.isVector2?new ce:new le);return c.copy(u).sub(o).normalize(),c}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){const n=new le,i=[],a=[],o=[],u=new le,c=new di;for(let B=0;B<=e;B++){const I=B/e;i[B]=this.getTangentAt(I,new le)}a[0]=new le,o[0]=new le;let d=Number.MAX_VALUE;const g=Math.abs(i[0].x),v=Math.abs(i[0].y),M=Math.abs(i[0].z);g<=d&&(d=g,n.set(1,0,0)),v<=d&&(d=v,n.set(0,1,0)),M<=d&&n.set(0,0,1),u.crossVectors(i[0],n).normalize(),a[0].crossVectors(i[0],u),o[0].crossVectors(i[0],a[0]);for(let B=1;B<=e;B++){if(a[B]=a[B-1].clone(),o[B]=o[B-1].clone(),u.crossVectors(i[B-1],i[B]),u.length()>Number.EPSILON){u.normalize();const I=Math.acos(Ca(i[B-1].dot(i[B]),-1,1));a[B].applyMatrix4(c.makeRotationAxis(u,I))}o[B].crossVectors(i[B],a[B])}if(t===!0){let B=Math.acos(Ca(a[0].dot(a[e]),-1,1));B/=e,i[0].dot(u.crossVectors(a[0],a[e]))>0&&(B=-B);for(let I=1;I<=e;I++)a[I].applyMatrix4(c.makeRotationAxis(i[I],B*I)),o[I].crossVectors(i[I],a[I])}return{tangents:i,normals:a,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class zp extends Hh{constructor(e=0,t=0,n=1,i=1,a=0,o=Math.PI*2,u=!1,c=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=a,this.aEndAngle=o,this.aClockwise=u,this.aRotation=c}getPoint(e,t=new ce){const n=t,i=Math.PI*2;let a=this.aEndAngle-this.aStartAngle;const o=Math.abs(a)i;)a-=i;a0?0:(Math.floor(Math.abs(u)/a)+1)*a:c===0&&u===a-1&&(u=a-2,c=1);let d,g;this.closed||u>0?d=i[(u-1)%a]:(Jd.subVectors(i[0],i[1]).add(i[0]),d=Jd);const v=i[u%a],M=i[(u+1)%a];if(this.closed||u+2i.length-2?i.length-1:o+1],v=i[o>i.length-3?i.length-1:o+2];return n.set(A(u,c.x,d.x,g.x,v.x),A(u,c.y,d.y,g.y,v.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){const o=i[a]-n,u=this.curves[a],c=u.getLength(),d=c===0?0:1-o/c;return u.getPointAt(d,t)}a++}return null}getLength(){const 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;const e=[];let 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){const v=d.getPoint(0);v.equals(this.currentPoint)||this.lineTo(v.x,v.y)}this.curves.push(d);const g=d.getPoint(1);return this.currentPoint.copy(g),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class bi extends is{constructor(e){super(e),this.uuid=oc(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let n=0,i=this.holes.length;n80*t){u=s[0],c=s[1];let g=u,v=c;for(let M=t;Mg&&(g=B),I>v&&(v=I)}d=Math.max(g-u,v-c),d=d!==0?32767/d:0}return Hs(a,o,t,u,c,d,0),o}function Gs(s,e,t,n,i){let a;if(i===ks(s,e,t,n)>0)for(let o=e;o=e;o-=n)a=ko(o/n|0,s[o],s[o+1],a);return a&&Ir(a,a.next)&&(uo(a),a=a.next),a}function _s(s,e){if(!s)return s;e||(e=s);let t=s,n;do if(n=!1,!t.steiner&&(Ir(t,t.next)||ur(t.prev,t,t.next)===0)){if(uo(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function Hs(s,e,t,n,i,a,o){if(!s)return;!o&&a&&K(s,n,i,a);let u=s;for(;s.prev!==s.next;){const c=s.prev,d=s.next;if(a?Ia(s,n,i,a):Zs(s)){e.push(c.i,s.i,d.i),uo(s),s=d.next,u=d.next;continue}if(s=d,s===u){o?o===1?(s=Po(_s(s),e),Hs(s,e,t,n,i,a,2)):o===2&&Ml(s,e,t,n,i,a):Hs(_s(s),e,t,n,i,a,1);break}}}function Zs(s){const e=s.prev,t=s,n=s.next;if(ur(e,t,n)>=0)return!1;const i=e.x,a=t.x,o=n.x,u=e.y,c=t.y,d=n.y,g=Math.min(i,a,o),v=Math.min(u,c,d),M=Math.max(i,a,o),B=Math.max(u,c,d);let I=n.next;for(;I!==e;){if(I.x>=g&&I.x<=M&&I.y>=v&&I.y<=B&&fn(i,u,a,c,o,d,I.x,I.y)&&ur(I.prev,I,I.next)>=0)return!1;I=I.next}return!0}function Ia(s,e,t,n){const i=s.prev,a=s,o=s.next;if(ur(i,a,o)>=0)return!1;const u=i.x,c=a.x,d=o.x,g=i.y,v=a.y,M=o.y,B=Math.min(u,c,d),I=Math.min(g,v,M),ne=Math.max(u,c,d),ee=Math.max(g,v,M),q=et(B,I,e,t,n),ye=et(ne,ee,e,t,n);let Ce=s.prevZ,ke=s.nextZ;for(;Ce&&Ce.z>=q&&ke&&ke.z<=ye;){if(Ce.x>=B&&Ce.x<=ne&&Ce.y>=I&&Ce.y<=ee&&Ce!==i&&Ce!==o&&fn(u,g,c,v,d,M,Ce.x,Ce.y)&&ur(Ce.prev,Ce,Ce.next)>=0||(Ce=Ce.prevZ,ke.x>=B&&ke.x<=ne&&ke.y>=I&&ke.y<=ee&&ke!==i&&ke!==o&&fn(u,g,c,v,d,M,ke.x,ke.y)&&ur(ke.prev,ke,ke.next)>=0))return!1;ke=ke.nextZ}for(;Ce&&Ce.z>=q;){if(Ce.x>=B&&Ce.x<=ne&&Ce.y>=I&&Ce.y<=ee&&Ce!==i&&Ce!==o&&fn(u,g,c,v,d,M,Ce.x,Ce.y)&&ur(Ce.prev,Ce,Ce.next)>=0)return!1;Ce=Ce.prevZ}for(;ke&&ke.z<=ye;){if(ke.x>=B&&ke.x<=ne&&ke.y>=I&&ke.y<=ee&&ke!==i&&ke!==o&&fn(u,g,c,v,d,M,ke.x,ke.y)&&ur(ke.prev,ke,ke.next)>=0)return!1;ke=ke.nextZ}return!0}function Po(s,e){let t=s;do{const n=t.prev,i=t.next.next;!Ir(n,i)&&fi(n,t,t.next,i)&&Ja(n,i)&&Ja(i,n)&&(e.push(n.i,t.i,i.i),uo(t),uo(t.next),t=s=i),t=t.next}while(t!==s);return _s(t)}function Ml(s,e,t,n,i,a){let o=s;do{let u=o.next.next;for(;u!==o.prev;){if(o.i!==u.i&&Ar(o,u)){let c=ea(o,u);o=_s(o,o.next),c=_s(c,c.next),Hs(o,e,t,n,i,a,0),Hs(c,e,t,n,i,a,0);return}u=u.next}o=o.next}while(o!==s)}function El(s,e,t,n){const i=[];for(let a=0,o=e.length;a=t.next.y&&t.next.y!==t.y){const v=t.x+(i-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(v<=n&&v>a&&(a=v,o=t.x=t.x&&t.x>=c&&n!==t.x&&dn(io.x||t.x===o.x&&$(o,t)))&&(o=t,g=v)}t=t.next}while(t!==u);return o}function $(s,e){return ur(s.prev,s,e.prev)<0&&ur(e.next,s,s.next)<0}function K(s,e,t,n){let i=s;do i.z===0&&(i.z=et(i.x,i.y,e,t,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==s);i.prevZ.nextZ=null,i.prevZ=null,_e(i)}function _e(s){let e,t=1;do{let n=s,i;s=null;let a=null;for(e=0;n;){e++;let o=n,u=0;for(let d=0;d0||c>0&&o;)u!==0&&(c===0||!o||n.z<=o.z)?(i=n,n=n.nextZ,u--):(i=o,o=o.nextZ,c--),a?a.nextZ=i:s=i,i.prevZ=a,a=i;n=o}a.nextZ=null,t*=2}while(e>1);return s}function et(s,e,t,n,i){return s=(s-t)*i|0,e=(e-n)*i|0,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,s|e<<1}function Ft(s){let e=s,t=s;do(e.x=(s-o)*(a-u)&&(s-o)*(n-u)>=(t-o)*(e-u)&&(t-o)*(a-u)>=(i-o)*(n-u)}function fn(s,e,t,n,i,a,o,u){return!(s===o&&e===u)&&dn(s,e,t,n,i,a,o,u)}function Ar(s,e){return s.next.i!==e.i&&s.prev.i!==e.i&&!bs(s,e)&&(Ja(s,e)&&Ja(e,s)&&fa(s,e)&&(ur(s.prev,s,e.prev)||ur(s,e.prev,e))||Ir(s,e)&&ur(s.prev,s,s.next)>0&&ur(e.prev,e,e.next)>0)}function ur(s,e,t){return(e.y-s.y)*(t.x-e.x)-(e.x-s.x)*(t.y-e.y)}function Ir(s,e){return s.x===e.x&&s.y===e.y}function fi(s,e,t,n){const i=us(ur(s,e,t)),a=us(ur(s,e,n)),o=us(ur(t,n,s)),u=us(ur(t,n,e));return!!(i!==a&&o!==u||i===0&&Qs(s,t,e)||a===0&&Qs(s,n,e)||o===0&&Qs(t,s,n)||u===0&&Qs(t,e,n))}function Qs(s,e,t){return e.x<=Math.max(s.x,t.x)&&e.x>=Math.min(s.x,t.x)&&e.y<=Math.max(s.y,t.y)&&e.y>=Math.min(s.y,t.y)}function us(s){return s>0?1:s<0?-1:0}function bs(s,e){let t=s;do{if(t.i!==s.i&&t.next.i!==s.i&&t.i!==e.i&&t.next.i!==e.i&&fi(t,t.next,s,e))return!0;t=t.next}while(t!==s);return!1}function Ja(s,e){return ur(s.prev,s,s.next)<0?ur(s,e,s.next)>=0&&ur(s,s.prev,e)>=0:ur(s,e,s.prev)<0||ur(s,s.next,e)<0}function fa(s,e){let t=s,n=!1;const i=(s.x+e.x)/2,a=(s.y+e.y)/2;do t.y>a!=t.next.y>a&&t.next.y!==t.y&&i<(t.next.x-t.x)*(a-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==s);return n}function ea(s,e){const t=Oa(s.i,s.x,s.y),n=Oa(e.i,e.x,e.y),i=s.next,a=e.prev;return s.next=e,e.prev=s,t.next=i,i.prev=t,n.next=t,t.prev=n,a.next=n,n.prev=a,n}function ko(s,e,t,n){const i=Oa(s,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 uo(s){s.next.prev=s.prev,s.prev.next=s.next,s.prevZ&&(s.prevZ.nextZ=s.nextZ),s.nextZ&&(s.nextZ.prevZ=s.prevZ)}function Oa(s,e,t){return{i:s,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function ks(s,e,t,n){let i=0;for(let a=e,o=t-n;a2&&s[e-1].equals(s[0])&&s.pop()}function nu(s,e){for(let t=0;tNumber.EPSILON){const xi=Math.sqrt(St),Qi=Math.sqrt(Ps*Ps+Mn*Mn),Si=os.x-ho/xi,La=os.y+da/xi,Vs=Hi.x-Mn/Qi,Na=Hi.y+Ps/Qi,po=((Vs-Si)*Mn-(Na-La)*Ps)/(da*Mn-ho*Ps);Fs=Si+da*po-Li.x,Pn=La+ho*po-Li.y;const hs=Fs*Fs+Pn*Pn;if(hs<=2)return new ce(Fs,Pn);ja=Math.sqrt(hs/2)}else{let xi=!1;da>Number.EPSILON?Ps>Number.EPSILON&&(xi=!0):da<-Number.EPSILON?Ps<-Number.EPSILON&&(xi=!0):Math.sign(ho)===Math.sign(Mn)&&(xi=!0),xi?(Fs=-ho,Pn=da,ja=Math.sqrt(St)):(Fs=da,Pn=ho,ja=Math.sqrt(St/2))}return new ce(Fs/ja,Pn/ja)}const ds=[];for(let Li=0,os=zr.length,Hi=os-1,Fs=Li+1;Li=0;Li--){const os=Li/ee,Hi=B*Math.cos(os*Math.PI/2),Fs=I*Math.sin(os*Math.PI/2)+ne;for(let Pn=0,ja=zr.length;Pn=0;){const Fs=Hi;let Pn=Hi-1;Pn<0&&(Pn=Li.length-1);for(let ja=0,da=g+ee*2;ja0)&&B.push(Ce,ke,Ye),(q!==n-1||c0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class Xv extends Hl{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Wr(16777215),this.specular=new Wr(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Wr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ll,this.normalScale=new ce(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ua,this.combine=on,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,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.flatShading=e.flatShading,this.fog=e.fog,this}}class jv extends Hl{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Wr(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Wr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ll,this.normalScale=new ce(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,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.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class V0 extends Hl{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ll,this.normalScale=new ce(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class qm extends Hl{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Wr(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Wr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ll,this.normalScale=new ce(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ua,this.combine=on,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,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.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,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.flatShading=e.flatShading,this.fog=e.fog,this}}class Bx extends Hl{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=bo,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}}class Rx extends Hl{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}}class nw extends Hl{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Wr(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ll,this.normalScale=new ce(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class xm extends fl{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Bg(s,e){return!s||s.constructor===e?s:typeof e.BYTES_PER_ELEMENT=="number"?new e(s):Array.prototype.slice.call(s)}function Yv(s){function e(i,a){return s[i]-s[a]}const t=s.length,n=new Array(t);for(let i=0;i!==t;++i)n[i]=i;return n.sort(e),n}function qv(s,e,t){const n=s.length,i=new s.constructor(n);for(let a=0,o=0;o!==n;++a){const u=t[a]*e;for(let c=0;c!==e;++c)i[o++]=s[u+c]}return i}function tf(s,e,t,n){let i=1,a=s[0];for(;a!==void 0&&a[n]===void 0;)a=s[i++];if(a===void 0)return;let o=a[n];if(o!==void 0)if(Array.isArray(o))do o=a[n],o!==void 0&&(e.push(a.time),t.push(...o)),a=s[i++];while(a!==void 0);else if(o.toArray!==void 0)do o=a[n],o!==void 0&&(e.push(a.time),o.toArray(t,t.length)),a=s[i++];while(a!==void 0);else do o=a[n],o!==void 0&&(e.push(a.time),t.push(o)),a=s[i++];while(a!==void 0)}function bm(s,e,t,n,i=30){const a=s.clone();a.name=e;const o=[];for(let c=0;c=n)){v.push(d.times[B]);for(let ne=0;nea.tracks[c].times[0]&&(u=a.tracks[c].times[0]);for(let c=0;c=u.times[I]){const q=I*v+g,ye=q+v-g;ne=u.values.slice(q,ye)}else{const q=u.createInterpolant(),ye=g,Ce=v-g;q.evaluate(a),ne=q.resultBuffer.slice(ye,Ce)}c==="quaternion"&&new Ze().fromArray(ne).normalize().conjugate().toArray(ne);const ee=d.times.length;for(let q=0;q=a)){const u=t[1];e=a)break t}o=n,n=0;break n}break e}for(;n>>1;et;)--o;if(++o,a!==0||o!==i){a>=o&&(o=Math.max(o,1),a=o-1);const u=this.getValueSize();this.times=n.slice(a,o),this.values=this.values.slice(a*u,o*u)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(Gr("KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,i=this.values,a=n.length;a===0&&(Gr("KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let u=0;u!==a;u++){const c=n[u];if(typeof c=="number"&&isNaN(c)){Gr("KeyframeTrack: Time is not a valid number.",this,u,c),e=!1;break}if(o!==null&&o>c){Gr("KeyframeTrack: Out of order keys.",this,u,c,o),e=!1;break}o=c}if(i!==void 0&&na(i))for(let u=0,c=i.length;u!==c;++u){const d=i[u];if(isNaN(d)){Gr("KeyframeTrack: Value is not a valid number.",this,u,d),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===Cs,a=e.length-1;let o=1;for(let u=1;u0){e[o]=e[a];for(let u=a*n,c=o*n,d=0;d!==n;++d)t[c+d]=t[u+d];++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(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}}Bd.prototype.ValueTypeName="",Bd.prototype.TimeBufferType=Float32Array,Bd.prototype.ValueBufferType=Float32Array,Bd.prototype.DefaultInterpolation=vs;class _m extends Bd{constructor(e,t,n){super(e,t,n)}}_m.prototype.ValueTypeName="bool",_m.prototype.ValueBufferType=Array,_m.prototype.DefaultInterpolation=ss,_m.prototype.InterpolantFactoryMethodLinear=void 0,_m.prototype.InterpolantFactoryMethodSmooth=void 0;class Nx extends Bd{constructor(e,t,n,i){super(e,t,n,i)}}Nx.prototype.ValueTypeName="color";class Ff extends Bd{constructor(e,t,n,i){super(e,t,n,i)}}Ff.prototype.ValueTypeName="number";class Fx extends z0{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const a=this.resultBuffer,o=this.sampleValues,u=this.valueSize,c=(n-t)/(i-t);let d=e*u;for(let g=d+u;d!==g;d+=4)Ze.slerpFlat(a,0,o,d-u,o,d,c);return a}}class Q0 extends Bd{constructor(e,t,n,i){super(e,t,n,i)}InterpolantFactoryMethodLinear(e){return new Fx(this.times,this.values,this.getValueSize(),e)}}Q0.prototype.ValueTypeName="quaternion",Q0.prototype.InterpolantFactoryMethodSmooth=void 0;class wm extends Bd{constructor(e,t,n){super(e,t,n)}}wm.prototype.ValueTypeName="string",wm.prototype.ValueBufferType=Array,wm.prototype.DefaultInterpolation=ss,wm.prototype.InterpolantFactoryMethodLinear=void 0,wm.prototype.InterpolantFactoryMethodSmooth=void 0;class Pf extends Bd{constructor(e,t,n,i){super(e,t,n,i)}}Pf.prototype.ValueTypeName="vector";class W0{constructor(e="",t=-1,n=[],i=Ai){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=oc(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,i=1/(e.fps||1);for(let o=0,u=n.length;o!==u;++o)t.push(PE(n[o]).scale(i));const a=new this(e.name,e.duration,t,e.blendMode);return a.uuid=e.uuid,a.userData=JSON.parse(e.userData||"{}"),a}static toJSON(e){const t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let a=0,o=n.length;a!==o;++a)t.push(Bd.toJSON(n[a]));return i}static CreateFromMorphTargetSequence(e,t,n,i){const a=t.length,o=[];for(let u=0;u1){const v=g[1];let M=i[v];M||(i[v]=M=[]),M.push(d)}}const o=[];for(const u in i)o.push(this.CreateFromMorphTargetSequence(u,i[u],t,n));return o}static parseAnimation(e,t){if(Lr("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Gr("AnimationClip: No animation in JSONLoader data."),null;const n=function(v,M,B,I,ne){if(B.length!==0){const ee=[],q=[];tf(B,ee,q,I),ee.length!==0&&ne.push(new v(M,ee,q))}},i=[],a=e.name||"default",o=e.fps||30,u=e.blendMode;let c=e.length||-1;const d=e.hierarchy||[];for(let v=0;v{t&&t(a),this.manager.itemEnd(e)},0),a;if(Kp[e]!==void 0){Kp[e].push({onLoad:t,onProgress:n,onError:i});return}Kp[e]=[],Kp[e].push({onLoad:t,onProgress:n,onError:i});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),u=this.mimeType,c=this.responseType;fetch(o).then(d=>{if(d.status===200||d.status===0){if(d.status===0&&Lr("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||d.body===void 0||d.body.getReader===void 0)return d;const g=Kp[e],v=d.body.getReader(),M=d.headers.get("X-File-Size")||d.headers.get("Content-Length"),B=M?parseInt(M):0,I=B!==0;let ne=0;const ee=new ReadableStream({start(q){ye();function ye(){v.read().then(({done:Ce,value:ke})=>{if(Ce)q.close();else{ne+=ke.byteLength;const nt=new ProgressEvent("progress",{lengthComputable:I,loaded:ne,total:B});for(let Ye=0,ht=g.length;Ye{q.error(Ce)})}}});return new Response(ee)}else throw new LE(`fetch for "${d.url}" responded with ${d.status}: ${d.statusText}`,d)}).then(d=>{switch(c){case"arraybuffer":return d.arrayBuffer();case"blob":return d.blob();case"document":return d.text().then(g=>new DOMParser().parseFromString(g,u));case"json":return d.json();default:if(u==="")return d.text();{const v=/charset="?([^;"\s]*)"?/i.exec(u),M=v&&v[1]?v[1].toLowerCase():void 0,B=new TextDecoder(M);return d.arrayBuffer().then(I=>B.decode(I))}}}).then(d=>{Zp.add(`file:${e}`,d);const g=Kp[e];delete Kp[e];for(let v=0,M=g.length;v{const g=Kp[e];if(g===void 0)throw this.manager.itemError(e),d;delete Kp[e];for(let v=0,M=g.length;v{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class UE extends null{constructor(e){super(e)}load(e,t,n,i){const a=this,o=new Ng(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(u){try{t(a.parse(JSON.parse(u)))}catch(c){i?i(c):Gr(c),a.manager.itemError(e)}},n,i)}parse(e){const t=[];for(let n=0;n0:i.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const a in e.uniforms){const o=e.uniforms[a];switch(i.uniforms[a]={},o.type){case"t":i.uniforms[a].value=n(o.value);break;case"c":i.uniforms[a].value=new Wr().setHex(o.value);break;case"v2":i.uniforms[a].value=new ce().fromArray(o.value);break;case"v3":i.uniforms[a].value=new le().fromArray(o.value);break;case"v4":i.uniforms[a].value=new Ni().fromArray(o.value);break;case"m3":i.uniforms[a].value=new pn().fromArray(o.value);break;case"m4":i.uniforms[a].value=new di().fromArray(o.value);break;default:i.uniforms[a].value=o.value}}if(e.defines!==void 0&&(i.defines=e.defines),e.vertexShader!==void 0&&(i.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(i.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(i.glslVersion=e.glslVersion),e.extensions!==void 0)for(const a in e.extensions)i.extensions[a]=e.extensions[a];if(e.lights!==void 0&&(i.lights=e.lights),e.clipping!==void 0&&(i.clipping=e.clipping),e.size!==void 0&&(i.size=e.size),e.sizeAttenuation!==void 0&&(i.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(i.map=n(e.map)),e.matcap!==void 0&&(i.matcap=n(e.matcap)),e.alphaMap!==void 0&&(i.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(i.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(i.bumpScale=e.bumpScale),e.normalMap!==void 0&&(i.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(i.normalMapType=e.normalMapType),e.normalScale!==void 0){let a=e.normalScale;Array.isArray(a)===!1&&(a=[a,a]),i.normalScale=new ce().fromArray(a)}return e.displacementMap!==void 0&&(i.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(i.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(i.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(i.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(i.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(i.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(i.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(i.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(i.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(i.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(i.envMap=n(e.envMap)),e.envMapRotation!==void 0&&i.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(i.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(i.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(i.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(i.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(i.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(i.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(i.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(i.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(i.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(i.clearcoatNormalScale=new ce().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(i.iridescenceMap=n(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(i.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(i.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(i.thicknessMap=n(e.thicknessMap)),e.anisotropyMap!==void 0&&(i.anisotropyMap=n(e.anisotropyMap)),e.sheenColorMap!==void 0&&(i.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(i.sheenRoughnessMap=n(e.sheenRoughnessMap)),i}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return ey.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:Cx,SpriteMaterial:BA,RawShaderMaterial:Tx,ShaderMaterial:nh,PointsMaterial:jm,MeshPhysicalMaterial:Qp,MeshStandardMaterial:$v,MeshPhongMaterial:Xv,MeshToonMaterial:jv,MeshNormalMaterial:V0,MeshLambertMaterial:qm,MeshDepthMaterial:Bx,MeshDistanceMaterial:Rx,MeshBasicMaterial:Yl,MeshMatcapMaterial:nw,LineDashedMaterial:xm,LineBasicMaterial:fl,Material:Hl};return new t[e]}}class ty{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class zx extends null{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class ny extends null{constructor(e){super(e)}load(e,t,n,i){const a=this,o=new Ng(a.manager);o.setPath(a.path),o.setRequestHeader(a.requestHeader),o.setWithCredentials(a.withCredentials),o.load(e,function(u){try{t(a.parse(JSON.parse(u)))}catch(c){i?i(c):Gr(c),a.manager.itemError(e)}},n,i)}parse(e){const t={},n={};function i(B,I){if(t[I]!==void 0)return t[I];const ee=B.interleavedBuffers[I],q=a(B,ee.buffer),ye=_o(ee.type,q),Ce=new wh(ye,ee.stride);return Ce.uuid=ee.uuid,t[I]=Ce,Ce}function a(B,I){if(n[I]!==void 0)return n[I];const ee=B.arrayBuffers[I],q=new Uint32Array(ee).buffer;return n[I]=q,q}const o=e.isInstancedBufferGeometry?new zx:new ka,u=e.data.index;if(u!==void 0){const B=_o(u.type,u.array);o.setIndex(new wl(B,1))}const c=e.data.attributes;for(const B in c){const I=c[B];let ne;if(I.isInterleavedBufferAttribute){const ee=i(e.data,I.data);ne=new yf(ee,I.itemSize,I.offset,I.normalized)}else{const ee=_o(I.type,I.array),q=I.isInstancedBufferAttribute?Mh:wl;ne=new q(ee,I.itemSize,I.normalized)}I.name!==void 0&&(ne.name=I.name),I.usage!==void 0&&ne.setUsage(I.usage),o.setAttribute(B,ne)}const d=e.data.morphAttributes;if(d)for(const B in d){const I=d[B],ne=[];for(let ee=0,q=I.length;ee0){const c=new Ig(t);a=new Jm(c),a.setCrossOrigin(this.crossOrigin);for(let d=0,g=e.length;d0){i=new Jm(this.manager),i.setCrossOrigin(this.crossOrigin);for(let o=0,u=e.length;o{let q=null,ye=null;return ee.boundingBox!==void 0&&(q=new Y().fromJSON(ee.boundingBox)),ee.boundingSphere!==void 0&&(ye=new gi().fromJSON(ee.boundingSphere)),fd(rl({},ee),{boundingBox:q,boundingSphere:ye})}),o._instanceInfo=e.instanceInfo,o._availableInstanceIds=e._availableInstanceIds,o._availableGeometryIds=e._availableGeometryIds,o._nextIndexStart=e.nextIndexStart,o._nextVertexStart=e.nextVertexStart,o._geometryCount=e.geometryCount,o._maxInstanceCount=e.maxInstanceCount,o._maxVertexCount=e.maxVertexCount,o._maxIndexCount=e.maxIndexCount,o._geometryInitialized=e.geometryInitialized,o._matricesTexture=d(e.matricesTexture.uuid),o._indirectTexture=d(e.indirectTexture.uuid),e.colorsTexture!==void 0&&(o._colorsTexture=d(e.colorsTexture.uuid)),e.boundingSphere!==void 0&&(o.boundingSphere=new gi().fromJSON(e.boundingSphere)),e.boundingBox!==void 0&&(o.boundingBox=new Y().fromJSON(e.boundingBox));break;case"LOD":o=new dm;break;case"Line":o=new qd(u(e.geometry),c(e.material));break;case"LineLoop":o=new Kv(u(e.geometry),c(e.material));break;case"LineSegments":o=new dp(u(e.geometry),c(e.material));break;case"PointCloud":case"Points":o=new D0(u(e.geometry),c(e.material));break;case"Sprite":o=new hm(c(e.material));break;case"Group":o=new ih;break;case"Bone":o=new op;break;default:o=new yl}if(o.uuid=e.uuid,e.name!==void 0&&(o.name=e.name),e.matrix!==void 0?(o.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(o.matrixAutoUpdate=e.matrixAutoUpdate),o.matrixAutoUpdate&&o.matrix.decompose(o.position,o.quaternion,o.scale)):(e.position!==void 0&&o.position.fromArray(e.position),e.rotation!==void 0&&o.rotation.fromArray(e.rotation),e.quaternion!==void 0&&o.quaternion.fromArray(e.quaternion),e.scale!==void 0&&o.scale.fromArray(e.scale)),e.up!==void 0&&o.up.fromArray(e.up),e.castShadow!==void 0&&(o.castShadow=e.castShadow),e.receiveShadow!==void 0&&(o.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(o.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(o.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(o.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(o.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&o.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(o.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(o.visible=e.visible),e.frustumCulled!==void 0&&(o.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(o.renderOrder=e.renderOrder),e.userData!==void 0&&(o.userData=e.userData),e.layers!==void 0&&(o.layers.mask=e.layers),e.children!==void 0){const M=e.children;for(let B=0;B{if(Y0.has(o)===!0)i&&i(Y0.get(o)),a.manager.itemError(e),a.manager.itemEnd(e);else return t&&t(d),a.manager.itemEnd(e),d});return}return setTimeout(function(){t&&t(o),a.manager.itemEnd(e)},0),o}const u={};u.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",u.headers=this.requestHeader,u.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const c=fetch(e,u).then(function(d){return d.blob()}).then(function(d){return createImageBitmap(d,Object.assign(a.options,{colorSpaceConversion:"none"}))}).then(function(d){return Zp.add(`image-bitmap:${e}`,d),t&&t(d),a.manager.itemEnd(e),d}).catch(function(d){i&&i(d),Y0.set(c,d),Zp.remove(`image-bitmap:${e}`),a.manager.itemError(e),a.manager.itemEnd(e)});Zp.add(`image-bitmap:${e}`,c),a.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let HA;class cw{static getContext(){return HA===void 0&&(HA=new(window.AudioContext||window.webkitAudioContext)),HA}static setContext(e){HA=e}}class IP extends null{constructor(e){super(e)}load(e,t,n,i){const a=this,o=new Ng(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(c){try{const d=c.slice(0);cw.getContext().decodeAudioData(d,function(v){t(v)}).catch(u)}catch(d){u(d)}},n,i);function u(c){i?i(c):Gr(c),a.manager.itemError(e)}}}const Gx=new di,Xp=new di,Ap=new di;class DE{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new vo,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new vo,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Ap.copy(e.projectionMatrix);const i=t.eyeSep/2,a=i*t.near/t.focus,o=t.near*Math.tan(Ou*t.fov*.5)/t.zoom;let u,c;Xp.elements[12]=-i,Gx.elements[12]=i,u=-o*t.aspect+a,c=o*t.aspect+a,Ap.elements[0]=2*t.near/(c-u),Ap.elements[8]=(c+u)/(c-u),this.cameraL.projectionMatrix.copy(Ap),u=-o*t.aspect-a,c=o*t.aspect-a,Ap.elements[0]=2*t.near/(c-u),Ap.elements[8]=(c+u)/(c-u),this.cameraR.projectionMatrix.copy(Ap)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(Xp),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(Gx)}}class jp extends vo{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class pp{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}const Mm=new le,Hx=new Ze,Lg=new le,Yp=new le,Ug=new le;class Em extends null{constructor(){super(),this.type="AudioListener",this.context=cw.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new pp}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Mm,Hx,Lg),Yp.set(0,0,-1).applyQuaternion(Hx),Ug.set(0,1,0).applyQuaternion(Hx),t.positionX){const n=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Mm.x,n),t.positionY.linearRampToValueAtTime(Mm.y,n),t.positionZ.linearRampToValueAtTime(Mm.z,n),t.forwardX.linearRampToValueAtTime(Yp.x,n),t.forwardY.linearRampToValueAtTime(Yp.y,n),t.forwardZ.linearRampToValueAtTime(Yp.z,n),t.upX.linearRampToValueAtTime(Ug.x,n),t.upY.linearRampToValueAtTime(Ug.y,n),t.upZ.linearRampToValueAtTime(Ug.z,n)}else t.setPosition(Mm.x,Mm.y,Mm.z),t.setOrientation(Yp.x,Yp.y,Yp.z,Ug.x,Ug.y,Ug.z)}}class NP extends null{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){Lr("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){Lr("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){Lr("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){Lr("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let c=t,d=t+t;c!==d;++c)if(n[c]!==n[c+t]){u.setValue(n,i);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let a=n,o=i;a!==o;++a)t[a]=t[i+a%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let o=0;o!==a;++o)e[t+o]=e[n+o]}_slerp(e,t,n,i){Ze.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,a){const o=this._workIndex*a;Ze.multiplyQuaternionsFlat(e,o,e,t,e,n),Ze.slerpFlat(e,t,e,t,e,o,i)}_lerp(e,t,n,i,a){const o=1-i;for(let u=0;u!==a;++u){const c=t+u;e[c]=e[c]*o+e[n+u]*i}}_lerpAdditive(e,t,n,i,a){for(let o=0;o!==a;++o){const u=t+o;e[u]=e[u]+e[n+o]*i}}}const sy="\\[\\]\\.:\\/",dw=new RegExp("["+sy+"]","g"),ay="[^"+sy+"]",fw="[^"+sy.replace("\\.","")+"]",Aw=/((?:WC+[\/:])*)/.source.replace("WC",ay),pw=/(WCOD+)?/.source.replace("WCOD",fw),Cl=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",ay),VE=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",ay),gw=new RegExp("^"+Aw+pw+Cl+VE+"$"),mw=["material","materials","bones","map"];class zE{constructor(e,t,n){const i=n||Nl.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,a=n.length;i!==a;++i)n[i].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class Nl{constructor(e,t,n){this.path=t,this.parsedPath=n||Nl.parseTrackName(t),this.node=Nl.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new Nl.Composite(e,t,n):new Nl(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(dw,"")}static parseTrackName(e){const t=gw.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){const a=n.nodeName.substring(i+1);mw.indexOf(a)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=a)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(a){for(let o=0;o=a){const v=a++,M=e[v];t[M.uuid]=g,e[g]=M,t[d]=v,e[v]=c;for(let B=0,I=i;B!==I;++B){const ne=n[B],ee=ne[v],q=ne[g];ne[g]=ee,ne[v]=q}}}this.nCachedObjects_=a}uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length;let a=this.nCachedObjects_,o=e.length;for(let u=0,c=arguments.length;u!==c;++u){const d=arguments[u],g=d.uuid,v=t[g];if(v!==void 0)if(delete t[g],v0&&(t[B.uuid]=v),e[v]=B,e.pop();for(let I=0,ne=i;I!==ne;++I){const ee=n[I];ee[v]=ee[M],ee.pop()}}}this.nCachedObjects_=a}subscribe_(e,t){const n=this._bindingsIndicesByPath;let i=n[e];const a=this._bindings;if(i!==void 0)return a[i];const o=this._paths,u=this._parsedPaths,c=this._objects,d=c.length,g=this.nCachedObjects_,v=new Array(d);i=a.length,n[e]=i,o.push(e),u.push(t),a.push(v);for(let M=g,B=c.length;M!==B;++M){const I=c[M];v[M]=new Nl(I,e,t)}return v}unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){const i=this._paths,a=this._parsedPaths,o=this._bindings,u=o.length-1,c=o[u],d=e[u];t[d]=n,o[n]=c,o.pop(),a[n]=a[u],a.pop(),i[n]=i[u],i.pop()}}}class yw{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;const a=t.tracks,o=a.length,u=new Array(o),c={endingStart:Aa,endingEnd:Aa};for(let d=0;d!==o;++d){const g=a[d].createInterpolant(null);u[d]=g,g.settings=c}this._interpolantSettings=c,this._interpolants=u,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Ii,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n=!1){if(e.fadeOut(t),this.fadeIn(t),n===!0){const i=this._clip.duration,a=e._clip.duration,o=a/i,u=i/a;e.warp(1,o,t),this.warp(u,1,t)}return this}crossFadeTo(e,t,n=!1){return e.crossFadeFrom(this,t,n)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){const i=this._mixer,a=i.time,o=this.timeScale;let u=this._timeScaleInterpolant;u===null&&(u=i._lendControlInterpolant(),this._timeScaleInterpolant=u);const c=u.parameterPositions,d=u.sampleValues;return c[0]=a,c[1]=a+n,d[0]=e/o,d[1]=t/o,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,i){if(!this.enabled){this._updateWeight(e);return}const a=this._startTime;if(a!==null){const c=(e-a)*n;c<0||n===0?t=0:(this._startTime=null,t=n*c)}t*=this._updateTimeScale(e);const o=this._updateTime(t),u=this._updateWeight(e);if(u>0){const c=this._interpolants,d=this._propertyBindings;switch(this.blendMode){case $a:for(let g=0,v=c.length;g!==v;++g)c[g].evaluate(o),d[g].accumulateAdditive(u);break;case Ai:default:for(let g=0,v=c.length;g!==v;++g)c[g].evaluate(o),d[g].accumulate(i,u)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(n!==null){const i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),i===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;if(n!==null){const i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let i=this.time+e,a=this._loopCount;const o=n===Di;if(e===0)return a===-1?i:o&&(a&1)===1?t-i:i;if(n===$r){a===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(i>=t)i=t;else if(i<0)i=0;else{this.time=i;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(a===-1&&(e>=0?(a=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),i>=t||i<0){const u=Math.floor(i/t);i-=t*u,a+=Math.abs(u);const c=this.repetitions-a;if(c<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(c===1){const d=e<0;this._setEndings(d,!d,o)}else this._setEndings(!1,!1,o);this._loopCount=a,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:u})}}else this.time=i;if(o&&(a&1)===1)return t-i}return i}_setEndings(e,t,n){const i=this._interpolantSettings;n?(i.endingStart=sa,i.endingEnd=sa):(e?i.endingStart=this.zeroSlopeAtStart?sa:Aa:i.endingStart=ca,t?i.endingEnd=this.zeroSlopeAtEnd?sa:Aa:i.endingEnd=ca)}_scheduleFading(e,t,n){const i=this._mixer,a=i.time;let o=this._weightInterpolant;o===null&&(o=i._lendControlInterpolant(),this._weightInterpolant=o);const u=o.parameterPositions,c=o.sampleValues;return u[0]=a,c[0]=t,u[1]=a+e,c[1]=n,this}}const GE=new Float32Array(1);class FP extends null{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,i=e._clip.tracks,a=i.length,o=e._propertyBindings,u=e._interpolants,c=n.uuid,d=this._bindingsByRootAndName;let g=d[c];g===void 0&&(g={},d[c]=g);for(let v=0;v!==a;++v){const M=i[v],B=M.name;let I=g[B];if(I!==void 0)++I.referenceCount,o[v]=I;else{if(I=o[v],I!==void 0){I._cacheIndex===null&&(++I.referenceCount,this._addInactiveBinding(I,c,B));continue}const ne=t&&t._propertyBindings[v].binding.parsedPath;I=new hw(Nl.create(n,B,ne),M.ValueTypeName,M.getValueSize()),++I.referenceCount,this._addInactiveBinding(I,c,B),o[v]=I}u[v].resultBuffer=I.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const n=(e._localRoot||this._root).uuid,i=e._clip.uuid,a=this._actionsByClip[i];this._bindAction(e,a&&a.knownActions[0]),this._addInactiveAction(e,i,n)}const t=e._propertyBindings;for(let n=0,i=t.length;n!==i;++n){const a=t[n];a.useCount++===0&&(this._lendBinding(a),a.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let n=0,i=t.length;n!==i;++n){const a=t[n];--a.useCount===0&&(a.restoreOriginalState(),this._takeBackBinding(a))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,i=this.time+=e,a=Math.sign(e),o=this._accuIndex^=1;for(let d=0;d!==n;++d)t[d]._update(i,e,a,o);const u=this._bindings,c=this._nActiveBindings;for(let d=0;d!==c;++d)u[d].apply(o);return this}setTime(e){this.time=0;for(let t=0;t=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,Dg).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const $x=new le,J0=new le,n0=new le,kg=new le,Xx=new le,qp=new le,ev=new le;class jx{constructor(e=new le,t=new le){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){$x.subVectors(e,this.start),J0.subVectors(this.end,this.start);const n=J0.dot(J0);let a=J0.dot($x)/n;return t&&(a=Ca(a,0,1)),a}closestPointToPoint(e,t,n){const i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}distanceSqToLine3(e,t=qp,n=ev){const i=10000000000000001e-32;let a,o;const u=this.start,c=e.start,d=this.end,g=e.end;n0.subVectors(d,u),kg.subVectors(g,c),Xx.subVectors(u,c);const v=n0.dot(n0),M=kg.dot(kg),B=kg.dot(Xx);if(v<=i&&M<=i)return t.copy(u),n.copy(c),t.sub(n),t.dot(t);if(v<=i)a=0,o=B/M,o=Ca(o,0,1);else{const I=n0.dot(Xx);if(M<=i)o=0,a=Ca(-I/v,0,1);else{const ne=n0.dot(kg),ee=v*M-ne*ne;ee!==0?a=Ca((ne*B-I*M)/ee,0,1):a=0,o=(ne*a+B)/M,o<0?(o=0,a=Ca(-I/v,0,1)):o>1&&(o=1,a=Ca((ne-I)/v,0,1))}}return t.copy(u).add(n0.multiplyScalar(a)),n.copy(c).add(kg.multiplyScalar(o)),t.sub(n),t.dot(t)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const Sw=new le;class Mw extends null{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new ka,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,u=1,c=32;o1)for(let v=0;v.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{Bw.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(Bw,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class KE extends null{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],i=new ka;i.setAttribute("position",new Ui(t,3)),i.setAttribute("color",new Ui(n,3));const a=new fl({vertexColors:!0,toneMapped:!1});super(i,a),this.type="AxesHelper"}setColors(e,t,n){const i=new Wr,a=this.geometry.attributes.color.array;return i.set(e),i.toArray(a,0),i.toArray(a,3),i.set(t),i.toArray(a,6),i.toArray(a,9),i.set(n),i.toArray(a,12),i.toArray(a,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class $E{constructor(){this.type="ShapePath",this.color=new Wr,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new is,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,a,o){return this.currentPath.bezierCurveTo(e,t,n,i,a,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(q){const ye=[];for(let Ce=0,ke=q.length;CeNumber.EPSILON){if(pt<0&&(ht=ye[Ye],qe=-qe,Rt=ye[nt],pt=-pt),q.yRt.y)continue;if(q.y===ht.y){if(q.x===ht.x)return!0}else{const xn=pt*(q.x-ht.x)-qe*(q.y-ht.y);if(xn===0)return!0;if(xn<0)continue;ke=!ke}}else{if(q.y!==ht.y)continue;if(Rt.x<=q.x&&q.x<=ht.x||ht.x<=q.x&&q.x<=Rt.x)return!0}}return ke}const i=eo.isClockWise,a=this.subPaths;if(a.length===0)return[];let o,u,c;const d=[];if(a.length===1)return u=a[0],c=new bi,c.curves=u.curves,d.push(c),d;let g=!i(a[0].getPoints());g=e?!g:g;const v=[],M=[];let B=[],I=0,ne;M[I]=void 0,B[I]=[];for(let q=0,ye=a.length;q1){let q=!1,ye=0;for(let Ce=0,ke=M.length;Ce0&&q===!1&&(B=v)}let ee;for(let q=0,ye=M.length;qe?(s.repeat.x=1,s.repeat.y=t/e,s.offset.x=0,s.offset.y=(1-s.repeat.y)/2):(s.repeat.x=e/t,s.repeat.y=1,s.offset.x=(1-s.repeat.x)/2,s.offset.y=0),s}function ue(s,e){const t=s.image&&s.image.width?s.image.width/s.image.height:1;return t>e?(s.repeat.x=e/t,s.repeat.y=1,s.offset.x=(1-s.repeat.x)/2,s.offset.y=0):(s.repeat.x=1,s.repeat.y=t/e,s.offset.x=0,s.offset.y=(1-s.repeat.y)/2),s}function r(s){return s.repeat.x=1,s.repeat.y=1,s.offset.x=0,s.offset.y=0,s}function l(s,e,t,n){const i=h(n);switch(t){case si:return s*e;case z:return s*e/i.components*i.byteLength;case ie:return s*e/i.components*i.byteLength;case ze:return s*e*2/i.components*i.byteLength;case Je:return s*e*2/i.components*i.byteLength;case Ie:return s*e*3/i.components*i.byteLength;case L:return s*e*4/i.components*i.byteLength;case xt:return s*e*4/i.components*i.byteLength;case Sn:case Oe:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case Qe:case Re:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case gt:case yt:return Math.max(s,16)*Math.max(e,8)/4;case Ke:case tn:return Math.max(s,8)*Math.max(e,8)/2;case Yt:case Rn:case Jn:case kr:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case er:case fr:case wr:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case ei:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case _n:return Math.floor((s+4)/5)*Math.floor((e+3)/4)*16;case jn:return Math.floor((s+4)/5)*Math.floor((e+4)/5)*16;case Hr:return Math.floor((s+5)/6)*Math.floor((e+4)/5)*16;case Pr:return Math.floor((s+5)/6)*Math.floor((e+5)/6)*16;case $i:return Math.floor((s+7)/8)*Math.floor((e+4)/5)*16;case Zi:return Math.floor((s+7)/8)*Math.floor((e+5)/6)*16;case Xi:return Math.floor((s+7)/8)*Math.floor((e+7)/8)*16;case Ei:return Math.floor((s+9)/10)*Math.floor((e+4)/5)*16;case ms:return Math.floor((s+9)/10)*Math.floor((e+5)/6)*16;case _i:return Math.floor((s+9)/10)*Math.floor((e+7)/8)*16;case Es:return Math.floor((s+9)/10)*Math.floor((e+9)/10)*16;case ua:return Math.floor((s+11)/12)*Math.floor((e+9)/10)*16;case Hn:return Math.floor((s+11)/12)*Math.floor((e+11)/12)*16;case Pt:case Gt:case Bt:return Math.ceil(s/4)*Math.ceil(e/4)*16;case yn:case Ln:return Math.ceil(s/4)*Math.ceil(e/4)*8;case gr:case Rr:return Math.ceil(s/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function h(s){switch(s){case es:case Ci:return{byteLength:1,components:1};case rn:case En:case Wt:return{byteLength:2,components:1};case bn:case Jt:return{byteLength:2,components:4};case st:case Xt:case dt:return{byteLength:4,components:1};case rr:case Kr:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${s}.`)}class p{static contain(e,t){return XE(e,t)}static cover(e,t){return ue(e,t)}static fill(e){return r(e)}static getByteLength(e,t,n,i){return l(e,t,n,i)}}typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:m}})),typeof window!="undefined"&&(window.__THREE__?Lr("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=m);const y=new Ec,T=new ce,O=new le,te=new ce,se=new ce,xe=new le,Ne=new le,Ve=new di,We=new le,tt=new le;let Ot=null,An=null;const un=[],Un={NONE:-1,PAN:0,ROTATE:1};class Vn extends rv{constructor(e,t,n=null){super(t,n),this.objects=e,this.recursive=!0,this.transformGroup=!1,this.rotateSpeed=1,this.raycaster=new bw,this.mouseButtons={LEFT:Z.PAN,MIDDLE:Z.PAN,RIGHT:Z.ROTATE},this.touches={ONE:V.PAN},this._onPointerMove=nr.bind(this),this._onPointerDown=ii.bind(this),this._onPointerCancel=pi.bind(this),this._onContextMenu=Bi.bind(this),n!==null&&this.connect(n)}connect(e){super.connect(e),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointerup",this._onPointerCancel),this.domElement.addEventListener("pointerleave",this._onPointerCancel),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointerup",this._onPointerCancel),this.domElement.removeEventListener("pointerleave",this._onPointerCancel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="auto",this.domElement.style.cursor=""}dispose(){this.disconnect()}_updatePointer(e){const t=this.domElement.getBoundingClientRect();T.x=(e.clientX-t.left)/t.width*2-1,T.y=-(e.clientY-t.top)/t.height*2+1}_updateState(e){let t;if(e.pointerType==="touch")t=this.touches.ONE;else switch(e.button){case 0:t=this.mouseButtons.LEFT;break;case 1:t=this.mouseButtons.MIDDLE;break;case 2:t=this.mouseButtons.RIGHT;break;default:t=null}switch(t){case Z.PAN:case V.PAN:this.state=Un.PAN;break;case Z.ROTATE:case V.ROTATE:this.state=Un.ROTATE;break;default:this.state=Un.NONE}}}function nr(s){const e=this.object,t=this.domElement,n=this.raycaster;if(this.enabled!==!1){if(this._updatePointer(s),n.setFromCamera(T,e),Ot)this.state===Un.PAN?n.ray.intersectPlane(y,xe)&&(Ot.position.copy(xe.sub(O).applyMatrix4(Ve)),this.dispatchEvent({type:"drag",object:Ot})):this.state===Un.ROTATE&&(te.subVectors(T,se).multiplyScalar(this.rotateSpeed),Ot.rotateOnWorldAxis(We,te.x),Ot.rotateOnWorldAxis(tt.normalize(),-te.y),this.dispatchEvent({type:"drag",object:Ot})),se.copy(T);else if(s.pointerType==="mouse"||s.pointerType==="pen")if(un.length=0,n.setFromCamera(T,e),n.intersectObjects(this.objects,this.recursive,un),un.length>0){const i=un[0].object;y.setFromNormalAndCoplanarPoint(e.getWorldDirection(y.normal),Ne.setFromMatrixPosition(i.matrixWorld)),An!==i&&An!==null&&(this.dispatchEvent({type:"hoveroff",object:An}),t.style.cursor="auto",An=null),An!==i&&(this.dispatchEvent({type:"hoveron",object:i}),t.style.cursor="pointer",An=i)}else An!==null&&(this.dispatchEvent({type:"hoveroff",object:An}),t.style.cursor="auto",An=null);se.copy(T)}}function ii(s){const e=this.object,t=this.domElement,n=this.raycaster;this.enabled!==!1&&(this._updatePointer(s),this._updateState(s),un.length=0,n.setFromCamera(T,e),n.intersectObjects(this.objects,this.recursive,un),un.length>0&&(this.transformGroup===!0?Ot=mi(un[0].object):Ot=un[0].object,y.setFromNormalAndCoplanarPoint(e.getWorldDirection(y.normal),Ne.setFromMatrixPosition(Ot.matrixWorld)),n.ray.intersectPlane(y,xe)&&(this.state===Un.PAN?(Ve.copy(Ot.parent.matrixWorld).invert(),O.copy(xe).sub(Ne.setFromMatrixPosition(Ot.matrixWorld)),t.style.cursor="move",this.dispatchEvent({type:"dragstart",object:Ot})):this.state===Un.ROTATE&&(We.set(0,1,0).applyQuaternion(e.quaternion).normalize(),tt.set(1,0,0).applyQuaternion(e.quaternion).normalize(),t.style.cursor="move",this.dispatchEvent({type:"dragstart",object:Ot})))),se.copy(T))}function pi(){this.enabled!==!1&&(Ot&&(this.dispatchEvent({type:"dragend",object:Ot}),Ot=null),this.domElement.style.cursor=An?"pointer":"auto",this.state=Un.NONE)}function Bi(s){this.enabled!==!1&&s.preventDefault()}function mi(s,e=null){return s.isGroup&&(e=s),s.parent===null?e:mi(s.parent,e)}var ls=b(21668),ys=b(76633),Da=b(61147),Mo=b(38192),Ro=b(85320);function du(s,e,t,n){var i,a,o=(0,Ro.Z)(.1),u,c;typeof s!="function"&&(s=(0,Ro.Z)(+s)),e==null&&(e=0),t==null&&(t=0),n==null&&(n=0);function d(v){for(var M=0,B=i.length;M1&&(I.vy+=ee*Ce),a>2&&(I.vz+=q*Ce)}}function g(){if(i){var v,M=i.length;for(u=new Array(M),c=new Array(M),v=0;v[1,2,3].includes(B))||2,g()},d.strength=function(v){return arguments.length?(o=typeof v=="function"?v:(0,Ro.Z)(+v),g(),d):o},d.radius=function(v){return arguments.length?(s=typeof v=="function"?v:(0,Ro.Z)(+v),g(),d):s},d.x=function(v){return arguments.length?(e=+v,d):e},d.y=function(v){return arguments.length?(t=+v,d):t},d.z=function(v){return arguments.length?(n=+v,d):n},d}function ru(s){Ih(s);const e=Zc(s);return s.on=e.on,s.off=e.off,s.fire=e.fire,s}function Zc(s){let e=Object.create(null);return{on:function(t,n,i){if(typeof n!="function")throw new Error("callback is expected to be a function");let a=e[t];return a||(a=e[t]=[]),a.push({callback:n,ctx:i}),s},off:function(t,n){if(typeof t=="undefined")return e=Object.create(null),s;if(e[t])if(typeof n!="function")delete e[t];else{const o=e[t];for(let u=0;u1&&(i=Array.prototype.slice.call(arguments,1));for(let a=0;a0&&(v.fire("changed",o),o.length=0)}function As(Xr){if(typeof Xr!="function")throw new Error("Function is expected to iterate over graph nodes. You passed "+Xr);for(var Yi=e.values(),ps=Yi.next();!ps.done;){if(Xr(ps.value))return!0;ps=Yi.next()}}}function Uc(s,e){this.id=s,this.links=null,this.data=e}function tc(s,e){s.links?s.links.add(e):s.links=new Set([e])}function Lf(s,e,t,n){this.fromId=s,this.toId=e,this.data=t,this.id=n}function ad(s,e){return s.toString()+"\u{1F449} "+e.toString()}var Tm=b(91998),Gg=b(91519),Rw=b(12778),Iw=function(){return Rw.Z.Date.now()},iv=Iw,mp=/\s/;function sv(s){for(var e=s.length;e--&&mp.test(s.charAt(e)););return e}var Nw=sv,vp=/^\s+/;function yp(s){return s&&s.slice(0,Nw(s)+1).replace(vp,"")}var Xs=yp,ma=b(90681),ya=b(64162),Za="[object Symbol]";function Ga(s){return typeof s=="symbol"||(0,ya.Z)(s)&&(0,ma.Z)(s)==Za}var Tl=Ga,Io=NaN,Qu=/^[-+]0x[0-9a-f]+$/i,nc=/^0b[01]+$/i,Kc=/^0o[0-7]+$/i,nf=parseInt;function Hg(s){if(typeof s=="number")return s;if(Tl(s))return Io;if((0,Gg.Z)(s)){var e=typeof s.valueOf=="function"?s.valueOf():s;s=(0,Gg.Z)(e)?e+"":e}if(typeof s!="string")return s===0?s:+s;s=Xs(s);var t=nc.test(s);return t||Kc.test(s)?nf(s.slice(2),t?2:8):Qu.test(s)?Io:+s}var Rd=Hg,qx="Expected a function",Jx=Math.max,eb=Math.min;function Fw(s,e,t){var n,i,a,o,u,c,d=0,g=!1,v=!1,M=!0;if(typeof s!="function")throw new TypeError(qx);e=Rd(e)||0,(0,Gg.Z)(t)&&(g=!!t.leading,v="maxWait"in t,a=v?Jx(Rd(t.maxWait)||0,e):a,M="trailing"in t?!!t.trailing:M);function B(Ye){var ht=n,Rt=i;return n=i=void 0,d=Ye,o=s.apply(Rt,ht),o}function I(Ye){return d=Ye,u=setTimeout(q,e),g?B(Ye):o}function ne(Ye){var ht=Ye-c,Rt=Ye-d,qe=e-ht;return v?eb(qe,a-Rt):qe}function ee(Ye){var ht=Ye-c,Rt=Ye-d;return c===void 0||ht>=e||ht<0||v&&Rt>=a}function q(){var Ye=iv();if(ee(Ye))return ye(Ye);u=setTimeout(q,ne(Ye))}function ye(Ye){return u=void 0,M&&n?B(Ye):(n=i=void 0,o)}function Ce(){u!==void 0&&clearTimeout(u),d=0,n=c=i=u=void 0}function ke(){return u===void 0?o:ye(iv())}function nt(){var Ye=iv(),ht=ee(Ye);if(n=arguments,i=this,c=Ye,ht){if(u===void 0)return I(c);if(v)return clearTimeout(u),u=setTimeout(q,e),B(c)}return u===void 0&&(u=setTimeout(q,e)),o}return nt.cancel=Ce,nt.flush=ke,nt}var Pw=Fw;function vy(s,e){(e==null||e>s.length)&&(e=s.length);for(var t=0,n=Array(e);tn||t===void 0&&n>=n)&&(t=n);else{let n=-1;for(let i of s)(i=e(i,++n,s))!=null&&(t>i||t===void 0&&i>=i)&&(t=i)}return t}function XP(s,e){let t;if(e===void 0)for(const n of s)n!=null&&(t=n)&&(t=n);else{let n=-1;for(let i of s)(i=e(i,++n,s))!=null&&(t=i)&&(t=i)}return t}function Lw(s,e){(e==null||e>s.length)&&(e=s.length);for(var t=0,n=Array(e);ts.length)&&(e=s.length);for(var t=0,n=Array(e);t1&&arguments[1]!==void 0?arguments[1]:{},a=i.dataBindAttr,o=a===void 0?"__data":a,u=i.objBindAttr,c=u===void 0?"__threeObj":u;return oC(this,e),n=aC(this,e),ib(n,"scene",void 0),lC(n,$w,void 0),lC(n,sb,void 0),n.scene=t,uC($w,n,o),uC(sb,n,c),n.onRemoveObj(function(){}),n}return dC(e,s),hC(e,[{key:"onCreateObj",value:function(n){var i=this;return Ww(e,"onCreateObj",this)([function(a){var o=n(a);return a[zw(sb,i)]=o,o[zw($w,i)]=a,i.scene.add(o),o}]),this}},{key:"onRemoveObj",value:function(n){var i=this;return Ww(e,"onRemoveObj",this)([function(a,o){var u=Ww(e,"getData",i)([a]);n(a,o),i.scene.remove(a),Kw(a),delete u[zw(sb,i)]}]),this}}])}(cL),_y=function(e){return isNaN(e)?parseInt((0,iC.Z)(e).toHex(),16):e},Xw=function(e){return isNaN(e)?(0,iC.Z)(e).getAlpha():1},CL=rC(fL);function vC(s,e,t){!e||typeof t!="string"||s.filter(function(n){return!n[t]}).forEach(function(n){n[t]=CL(e(n))})}function TL(s,e){var t=s.nodes,n=s.links,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=i.nodeFilter,o=a===void 0?function(){return!0}:a,u=i.onLoopError,c=u===void 0?function(B){throw"Invalid DAG structure! Found cycle in node path: ".concat(B.join(" -> "),".")}:u,d={};t.forEach(function(B){return d[e(B)]={data:B,out:[],depth:-1,skip:!o(B)}}),n.forEach(function(B){var I=B.source,ne=B.target,ee=ke(I),q=ke(ne);if(!d.hasOwnProperty(ee))throw"Missing source node with id: ".concat(ee);if(!d.hasOwnProperty(q))throw"Missing target node with id: ".concat(q);var ye=d[ee],Ce=d[q];ye.out.push(Ce);function ke(nt){return Zw(nt)==="object"?e(nt):nt}});var g=[];M(Object.values(d));var v=Object.assign.apply(Object,[{}].concat(xp(Object.entries(d).filter(function(B){var I=xy(B,2),ne=I[1];return!ne.skip}).map(function(B){var I=xy(B,2),ne=I[0],ee=I[1];return ib({},ne,ee.depth)}))));return v;function M(B){for(var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],ne=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,ee=function(){var ke=B[q];if(I.indexOf(ke)!==-1){var nt=[].concat(xp(I.slice(I.indexOf(ke))),[ke]).map(function(Ye){return e(Ye.data)});return g.some(function(Ye){return Ye.length===nt.length&&Ye.every(function(ht,Rt){return ht===nt[Rt]})})||(g.push(nt),c(nt)),1}ne>ke.depth&&(ke.depth=ne,M(ke.out,[].concat(xp(I),[ke]),ne+(ke.skip?0:1)))},q=0,ye=B.length;q2?-60:-30),e<3&&i(t.graphData.nodes,"z"),e<2&&i(t.graphData.nodes,"y");function i(a,o){a.forEach(function(u){delete u[o],delete u["v".concat(o)]})}}},dagMode:{onChange:function(e,t){!e&&t.forceEngine==="d3"&&(t.graphData.nodes||[]).forEach(function(n){return n.fx=n.fy=n.fz=void 0})}},dagLevelDistance:{},dagNodeFilter:{default:function(e){return!0}},onDagError:{triggerUpdate:!1},nodeRelSize:{default:4},nodeId:{default:"id"},nodeVal:{default:"val"},nodeResolution:{default:8},nodeColor:{default:"color"},nodeAutoColorBy:{},nodeOpacity:{default:.75},nodeVisibility:{default:!0},nodeThreeObject:{},nodeThreeObjectExtend:{default:!1},nodePositionUpdate:{triggerUpdate:!1},linkSource:{default:"source"},linkTarget:{default:"target"},linkVisibility:{default:!0},linkColor:{default:"color"},linkAutoColorBy:{},linkOpacity:{default:.2},linkWidth:{},linkResolution:{default:6},linkCurvature:{default:0,triggerUpdate:!1},linkCurveRotation:{default:0,triggerUpdate:!1},linkMaterial:{},linkThreeObject:{},linkThreeObjectExtend:{default:!1},linkPositionUpdate:{triggerUpdate:!1},linkDirectionalArrowLength:{default:0},linkDirectionalArrowColor:{},linkDirectionalArrowRelPos:{default:.5,triggerUpdate:!1},linkDirectionalArrowResolution:{default:8},linkDirectionalParticles:{default:0},linkDirectionalParticleSpeed:{default:.01,triggerUpdate:!1},linkDirectionalParticleOffset:{default:0,triggerUpdate:!1},linkDirectionalParticleWidth:{default:.5},linkDirectionalParticleColor:{},linkDirectionalParticleResolution:{default:4},linkDirectionalParticleThreeObject:{},forceEngine:{default:"d3"},d3AlphaMin:{default:0},d3AlphaDecay:{default:.0228,triggerUpdate:!1,onChange:function(e,t){t.d3ForceLayout.alphaDecay(e)}},d3AlphaTarget:{default:0,triggerUpdate:!1,onChange:function(e,t){t.d3ForceLayout.alphaTarget(e)}},d3VelocityDecay:{default:.4,triggerUpdate:!1,onChange:function(e,t){t.d3ForceLayout.velocityDecay(e)}},ngraphPhysics:{default:{timeStep:20,gravity:-1.2,theta:.8,springLength:30,springCoefficient:8e-4,dragCoefficient:.02}},warmupTicks:{default:0,triggerUpdate:!1},cooldownTicks:{default:1/0,triggerUpdate:!1},cooldownTime:{default:15e3,triggerUpdate:!1},onLoading:{default:function(){},triggerUpdate:!1},onFinishLoading:{default:function(){},triggerUpdate:!1},onUpdate:{default:function(){},triggerUpdate:!1},onFinishUpdate:{default:function(){},triggerUpdate:!1},onEngineTick:{default:function(){},triggerUpdate:!1},onEngineStop:{default:function(){},triggerUpdate:!1}},methods:{refresh:function(e){return e._flushObjects=!0,e._rerender(),this},d3Force:function(e,t,n){return n===void 0?e.d3ForceLayout.force(t):(e.d3ForceLayout.force(t,n),this)},d3ReheatSimulation:function(e){return e.d3ForceLayout.alpha(1),this.resetCountdown(),this},resetCountdown:function(e){return e.cntTicks=0,e.startTickTime=new Date,e.engineRunning=!0,this},tickFrame:function(e){var t=e.forceEngine!=="ngraph";return e.engineRunning&&n(),i(),a(),this;function n(){++e.cntTicks>e.cooldownTicks||new Date-e.startTickTime>e.cooldownTime||t&&e.d3AlphaMin>0&&e.d3ForceLayout.alpha()0){var Ye=ne.x-I.x,ht=ne.y-I.y||0,Rt=new fo.Vector3().subVectors(ye,q),qe=Rt.clone().multiplyScalar(ee).cross(Ye!==0||ht!==0?new fo.Vector3(0,0,1):new fo.Vector3(0,1,0)).applyAxisAngle(Rt.normalize(),nt).add(new fo.Vector3().addVectors(q,ye).divideScalar(2));ke=new fo.QuadraticBezierCurve3(q,qe,ye)}else{var pt=ee*70,xn=-nt,cr=xn+Math.PI/2;ke=new fo.CubicBezierCurve3(q,new fo.Vector3(pt*Math.cos(cr),pt*Math.sin(cr),0).add(q),new fo.Vector3(pt*Math.cos(xn),pt*Math.sin(xn),0).add(q),ye)}M.__curve=ke}}}}function i(){var o=ul(e.linkDirectionalArrowRelPos),u=ul(e.linkDirectionalArrowLength),c=ul(e.nodeVal);e.arrowDataMapper.entries().forEach(function(d){var g=xy(d,2),v=g[0],M=g[1];if(M){var B=t?v:e.layout.getLinkPosition(e.layout.graph.getLink(v.source,v.target).id),I=B[t?"source":"from"],ne=B[t?"target":"to"];if(!(!I||!ne||!I.hasOwnProperty("x")||!ne.hasOwnProperty("x"))){var ee=Math.cbrt(Math.max(0,c(I)||1))*e.nodeRelSize,q=Math.cbrt(Math.max(0,c(ne)||1))*e.nodeRelSize,ye=u(v),Ce=o(v),ke=v.__curve?function(pt){return v.__curve.getPoint(pt)}:function(pt){var xn=function(pr,Br,zr,Dr){return Br[pr]+(zr[pr]-Br[pr])*Dr||0};return{x:xn("x",I,ne,pt),y:xn("y",I,ne,pt),z:xn("z",I,ne,pt)}},nt=v.__curve?v.__curve.getLength():Math.sqrt(["x","y","z"].map(function(pt){return Math.pow((ne[pt]||0)-(I[pt]||0),2)}).reduce(function(pt,xn){return pt+xn},0)),Ye=ee+ye+(nt-ee-q-ye)*Ce,ht=ke(Ye/nt),Rt=ke((Ye-ye)/nt);["x","y","z"].forEach(function(pt){return M.position[pt]=Rt[pt]});var qe=cC(fo.Vector3,xp(["x","y","z"].map(function(pt){return ht[pt]})));M.parent.localToWorld(qe),M.lookAt(qe)}}})}function a(){var o=ul(e.linkDirectionalParticleSpeed),u=ul(e.linkDirectionalParticleOffset);e.graphData.links.forEach(function(c){var d=e.particlesDataMapper.getObj(c),g=d&&d.children,v=c.__singleHopPhotonsObj&&c.__singleHopPhotonsObj.children;if(!((!v||!v.length)&&(!g||!g.length))){var M=t?c:e.layout.getLinkPosition(e.layout.graph.getLink(c.source,c.target).id),B=M[t?"source":"from"],I=M[t?"target":"to"];if(!(!B||!I||!B.hasOwnProperty("x")||!I.hasOwnProperty("x"))){var ne=o(c),ee=Math.abs(u(c)),q=c.__curve?function(Ce){return c.__curve.getPoint(Ce)}:function(Ce){var ke=function(Ye,ht,Rt,qe){return ht[Ye]+(Rt[Ye]-ht[Ye])*qe||0};return{x:ke("x",B,I,Ce),y:ke("y",B,I,Ce),z:ke("z",B,I,Ce)}},ye=[].concat(xp(g||[]),xp(v||[]));ye.forEach(function(Ce,ke){var nt=Ce.parent.__linkThreeObjType==="singleHopPhotons";if(Ce.hasOwnProperty("__progressRatio")||(Ce.__progressRatio=nt?0:(ke+ee)/g.length),Ce.__progressRatio+=ne,Ce.__progressRatio>=1)if(!nt)Ce.__progressRatio=Ce.__progressRatio%1;else{Ce.parent.remove(Ce),Kw(Ce);return}var Ye=Ce.__progressRatio,ht=q(Ye);Ce.geometry.type!=="SphereGeometry"&&Ce.lookAt(ht.x,ht.y,ht.z),["x","y","z"].forEach(function(Rt){return Ce.position[Rt]=ht[Rt]})})}}})}},emitParticle:function(e,t){if(t&&e.graphData.links.includes(t)){if(!t.__singleHopPhotonsObj){var n=new fo.Group;n.__linkThreeObjType="singleHopPhotons",t.__singleHopPhotonsObj=n,e.graphScene.add(n)}var i=ul(e.linkDirectionalParticleThreeObject)(t);if(i&&e.linkDirectionalParticleThreeObject===i&&(i=i.clone()),!i){var a=ul(e.linkDirectionalParticleWidth),o=Math.ceil(a(t)*10)/10/2,u=e.linkDirectionalParticleResolution,c=new fo.SphereGeometry(o,u,u),d=ul(e.linkColor),g=ul(e.linkDirectionalParticleColor),v=g(t)||d(t)||"#f0f0f0",M=new fo.Color(_y(v)),B=e.linkOpacity*3,I=new fo.MeshLambertMaterial({color:M,transparent:!0,opacity:B});i=new fo.Mesh(c,I)}t.__singleHopPhotonsObj.add(i)}return this},getGraphBbox:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){return!0};if(!e.initialised)return null;var n=function i(a){var o=[];if(a.geometry){a.geometry.computeBoundingBox();var u=new fo.Box3;u.copy(a.geometry.boundingBox).applyMatrix4(a.matrixWorld),o.push(u)}return o.concat.apply(o,xp((a.children||[]).filter(function(c){return!c.hasOwnProperty("__graphObjType")||c.__graphObjType==="node"&&t(c.__data)}).map(i)))}(e.graphScene);return n.length?Object.assign.apply(Object,xp(["x","y","z"].map(function(i){return ib({},i,[$P(n,function(a){return a.min[i]}),XP(n,function(a){return a.max[i]})])}))):null}},stateInit:function(){return{d3ForceLayout:(0,ls.Z)().force("link",(0,ys.Z)()).force("charge",(0,Da.Z)()).force("center",(0,Mo.Z)()).force("dagRadial",null).stop(),engineRunning:!1}},init:function(e,t){t.graphScene=e,t.nodeDataMapper=new by(e,{objBindAttr:"__threeObj"}),t.linkDataMapper=new by(e,{objBindAttr:"__lineObj"}),t.arrowDataMapper=new by(e,{objBindAttr:"__arrowObj"}),t.particlesDataMapper=new by(e,{objBindAttr:"__photonsObj"})},update:function(e,t){var n=function(Nr){return Nr.some(function(Yr){return t.hasOwnProperty(Yr)})};if(e.engineRunning=!1,typeof e.onUpdate=="function"&&e.onUpdate(),e.nodeAutoColorBy!==null&&n(["nodeAutoColorBy","graphData","nodeColor"])&&vC(e.graphData.nodes,ul(e.nodeAutoColorBy),e.nodeColor),e.linkAutoColorBy!==null&&n(["linkAutoColorBy","graphData","linkColor"])&&vC(e.graphData.links,ul(e.linkAutoColorBy),e.linkColor),e._flushObjects||n(["graphData","nodeThreeObject","nodeThreeObjectExtend","nodeVal","nodeColor","nodeVisibility","nodeRelSize","nodeResolution","nodeOpacity"])){var i=ul(e.nodeThreeObject),a=ul(e.nodeThreeObjectExtend),o=ul(e.nodeVal),u=ul(e.nodeColor),c=ul(e.nodeVisibility),d={},g={};(e._flushObjects||n(["nodeThreeObject","nodeThreeObjectExtend"]))&&e.nodeDataMapper.clear(),e.nodeDataMapper.onCreateObj(function(Pi){var Nr=i(Pi),Yr=a(Pi);Nr&&e.nodeThreeObject===Nr&&(Nr=Nr.clone());var cs;return Nr&&!Yr?cs=Nr:(cs=new fo.Mesh,cs.__graphDefaultObj=!0,Nr&&Yr&&cs.add(Nr)),cs.__graphObjType="node",cs}).onUpdateObj(function(Pi,Nr){if(Pi.__graphDefaultObj){var Yr=o(Nr)||1,cs=Math.cbrt(Yr)*e.nodeRelSize,oa=e.nodeResolution;(!Pi.geometry.type.match(/^Sphere(Buffer)?Geometry$/)||Pi.geometry.parameters.radius!==cs||Pi.geometry.parameters.widthSegments!==oa)&&(d.hasOwnProperty(Yr)||(d[Yr]=new fo.SphereGeometry(cs,oa,oa)),Pi.geometry.dispose(),Pi.geometry=d[Yr]);var Ms=u(Nr),Ha=new fo.Color(_y(Ms||"#ffffaa")),Qo=e.nodeOpacity*Xw(Ms);(Pi.material.type!=="MeshLambertMaterial"||!Pi.material.color.equals(Ha)||Pi.material.opacity!==Qo)&&(g.hasOwnProperty(Ms)||(g[Ms]=new fo.MeshLambertMaterial({color:Ha,transparent:!0,opacity:Qo})),Pi.material.dispose(),Pi.material=g[Ms])}}).digest(e.graphData.nodes.filter(c))}if(e._flushObjects||n(["graphData","linkThreeObject","linkThreeObjectExtend","linkMaterial","linkColor","linkWidth","linkVisibility","linkResolution","linkOpacity","linkDirectionalArrowLength","linkDirectionalArrowColor","linkDirectionalArrowResolution","linkDirectionalParticles","linkDirectionalParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleResolution","linkDirectionalParticleThreeObject"])){var v=ul(e.linkThreeObject),M=ul(e.linkThreeObjectExtend),B=ul(e.linkMaterial),I=ul(e.linkVisibility),ne=ul(e.linkColor),ee=ul(e.linkWidth),q={},ye={},Ce={},ke=e.graphData.links.filter(I);if((e._flushObjects||n(["linkThreeObject","linkThreeObjectExtend","linkWidth"]))&&e.linkDataMapper.clear(),e.linkDataMapper.onRemoveObj(function(Pi){var Nr=Pi.__data&&Pi.__data.__singleHopPhotonsObj;Nr&&(Nr.parent.remove(Nr),Kw(Nr),delete Pi.__data.__singleHopPhotonsObj)}).onCreateObj(function(Pi){var Nr=v(Pi),Yr=M(Pi);Nr&&e.linkThreeObject===Nr&&(Nr=Nr.clone());var cs;if(!Nr||Yr){var oa=!!ee(Pi);if(oa)cs=new fo.Mesh;else{var Ms=new fo.BufferGeometry;Ms[jw]("position",new fo.BufferAttribute(new Float32Array(2*3),3)),cs=new fo.Line(Ms)}}var Ha;return Nr?Yr?(Ha=new fo.Group,Ha.__graphDefaultObj=!0,Ha.add(cs),Ha.add(Nr)):Ha=Nr:(Ha=cs,Ha.__graphDefaultObj=!0),Ha.renderOrder=10,Ha.__graphObjType="link",Ha}).onUpdateObj(function(Pi,Nr){if(Pi.__graphDefaultObj){var Yr=Pi.children.length?Pi.children[0]:Pi,cs=Math.ceil(ee(Nr)*10)/10,oa=!!cs;if(oa){var Ms=cs/2,Ha=e.linkResolution;if(!Yr.geometry.type.match(/^Cylinder(Buffer)?Geometry$/)||Yr.geometry.parameters.radiusTop!==Ms||Yr.geometry.parameters.radialSegments!==Ha){if(!q.hasOwnProperty(cs)){var Qo=new fo.CylinderGeometry(Ms,Ms,1,Ha,1,!1);Qo[ab](new fo.Matrix4().makeTranslation(0,1/2,0)),Qo[ab](new fo.Matrix4().makeRotationX(Math.PI/2)),q[cs]=Qo}Yr.geometry.dispose(),Yr.geometry=q[cs]}}var co=B(Nr);if(co)Yr.material=co;else{var Li=ne(Nr),os=new fo.Color(_y(Li||"#f0f0f0")),Hi=e.linkOpacity*Xw(Li),Fs=oa?"MeshLambertMaterial":"LineBasicMaterial";if(Yr.material.type!==Fs||!Yr.material.color.equals(os)||Yr.material.opacity!==Hi){var Pn=oa?ye:Ce;Pn.hasOwnProperty(Li)||(Pn[Li]=new fo[Fs]({color:os,transparent:Hi<1,opacity:Hi,depthWrite:Hi>=1})),Yr.material.dispose(),Yr.material=Pn[Li]}}}}).digest(ke),e.linkDirectionalArrowLength||t.hasOwnProperty("linkDirectionalArrowLength")){var nt=ul(e.linkDirectionalArrowLength),Ye=ul(e.linkDirectionalArrowColor);e.arrowDataMapper.onCreateObj(function(){var Pi=new fo.Mesh(void 0,new fo.MeshLambertMaterial({transparent:!0}));return Pi.__linkThreeObjType="arrow",Pi}).onUpdateObj(function(Pi,Nr){var Yr=nt(Nr),cs=e.linkDirectionalArrowResolution;if(!Pi.geometry.type.match(/^Cone(Buffer)?Geometry$/)||Pi.geometry.parameters.height!==Yr||Pi.geometry.parameters.radialSegments!==cs){var oa=new fo.ConeGeometry(Yr*.25,Yr,cs);oa.translate(0,Yr/2,0),oa.rotateX(Math.PI/2),Pi.geometry.dispose(),Pi.geometry=oa}var Ms=Ye(Nr)||ne(Nr)||"#f0f0f0";Pi.material.color=new fo.Color(_y(Ms)),Pi.material.opacity=e.linkOpacity*3*Xw(Ms)}).digest(ke.filter(nt))}if(e.linkDirectionalParticles||t.hasOwnProperty("linkDirectionalParticles")){var ht=ul(e.linkDirectionalParticles),Rt=ul(e.linkDirectionalParticleWidth),qe=ul(e.linkDirectionalParticleColor),pt=ul(e.linkDirectionalParticleThreeObject),xn={},cr={};e.particlesDataMapper.onCreateObj(function(){var Pi=new fo.Group;return Pi.__linkThreeObjType="photons",Pi.__photonDataMapper=new by(Pi),Pi}).onUpdateObj(function(Pi,Nr){var Yr=!!Pi.children.length&&Pi.children[0],cs=pt(Nr),oa,Ms;if(cs)oa=cs.geometry,Ms=cs.material;else{var Ha=Math.ceil(Rt(Nr)*10)/10/2,Qo=e.linkDirectionalParticleResolution;Yr&&Yr.geometry.parameters.radius===Ha&&Yr.geometry.parameters.widthSegments===Qo?oa=Yr.geometry:(cr.hasOwnProperty(Ha)||(cr[Ha]=new fo.SphereGeometry(Ha,Qo,Qo)),oa=cr[Ha]);var co=qe(Nr)||ne(Nr)||"#f0f0f0",Li=new fo.Color(_y(co)),os=e.linkOpacity*3;Yr&&Yr.material.color.equals(Li)&&Yr.material.opacity===os?Ms=Yr.material:(xn.hasOwnProperty(co)||(xn[co]=new fo.MeshLambertMaterial({color:Li,transparent:!0,opacity:os})),Ms=xn[co])}Yr&&(Yr.geometry!==oa&&Yr.geometry.dispose(),Yr.material!==Ms&&Yr.material.dispose());var Hi=Math.round(Math.abs(ht(Nr)));Pi.__photonDataMapper.id(function(Fs){return Fs.idx}).onCreateObj(function(){return new fo.Mesh(oa,Ms)}).onUpdateObj(function(Fs){Fs.geometry=oa,Fs.material=Ms}).digest(xp(new Array(Hi)).map(function(Fs,Pn){return{idx:Pn}}))}).digest(ke.filter(ht))}}if(e._flushObjects=!1,n(["graphData","nodeId","linkSource","linkTarget","numDimensions","forceEngine","dagMode","dagNodeFilter","dagLevelDistance"])){e.engineRunning=!1,e.graphData.links.forEach(function(Pi){Pi.source=Pi[e.linkSource],Pi.target=Pi[e.linkTarget]});var pr=e.forceEngine!=="ngraph",Br;if(pr){(Br=e.d3ForceLayout).stop().alpha(1).numDimensions(e.numDimensions).nodes(e.graphData.nodes);var zr=e.d3ForceLayout.force("link");zr&&zr.id(function(Pi){return Pi[e.nodeId]}).links(e.graphData.links);var Dr=e.dagMode&&TL(e.graphData,function(Pi){return Pi[e.nodeId]},{nodeFilter:e.dagNodeFilter,onLoopError:e.onDagError||void 0}),Zr=Math.max.apply(Math,xp(Object.values(Dr||[]))),Ti=e.dagLevelDistance||e.graphData.nodes.length/(Zr||1)*BL*(["radialin","radialout"].indexOf(e.dagMode)!==-1?.7:1);if(["lr","rl","td","bu","zin","zout"].includes(t.dagMode)){var ds=["lr","rl"].includes(t.dagMode)?"fx":["td","bu"].includes(t.dagMode)?"fy":"fz";e.graphData.nodes.filter(e.dagNodeFilter).forEach(function(Pi){return delete Pi[ds]})}if(["lr","rl","td","bu","zin","zout"].includes(e.dagMode)){var As=["rl","td","zout"].includes(e.dagMode),Xr=function(Nr){return(Dr[Nr[e.nodeId]]-Zr/2)*Ti*(As?-1:1)},Yi=["lr","rl"].includes(e.dagMode)?"fx":["td","bu"].includes(e.dagMode)?"fy":"fz";e.graphData.nodes.filter(e.dagNodeFilter).forEach(function(Pi){return Pi[Yi]=Xr(Pi)})}e.d3ForceLayout.force("dagRadial",["radialin","radialout"].indexOf(e.dagMode)!==-1?du(function(Pi){var Nr=Dr[Pi[e.nodeId]]||-1;return(e.dagMode==="radialin"?Zr-Nr:Nr)*Ti}).strength(function(Pi){return e.dagNodeFilter(Pi)?1:0}):null)}else{var ps=yC.graph();e.graphData.nodes.forEach(function(Pi){ps.addNode(Pi[e.nodeId])}),e.graphData.links.forEach(function(Pi){ps.addLink(Pi.source,Pi.target)}),Br=yC.forcelayout(ps,wL({dimensions:e.numDimensions},e.ngraphPhysics)),Br.graph=ps}for(var Xa=0;Xa0&&e.d3ForceLayout.alpha()1&&arguments[1]!==void 0?arguments[1]:Object,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=function(i){function a(){var o;oC(this,a);for(var u=arguments.length,c=new Array(u),d=0;dB.start-I.start);let M=0;for(let B=1;B 0 - vec4 plane; - #ifdef ALPHA_TO_COVERAGE - float distanceToPlane, distanceGradient; - float clipOpacity = 1.0; - #pragma unroll_loop_start - for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; - distanceGradient = fwidth( distanceToPlane ) / 2.0; - clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); - if ( clipOpacity == 0.0 ) discard; - } - #pragma unroll_loop_end - #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES - float unionClipOpacity = 1.0; - #pragma unroll_loop_start - for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; - distanceGradient = fwidth( distanceToPlane ) / 2.0; - unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); - } - #pragma unroll_loop_end - clipOpacity *= 1.0 - unionClipOpacity; - #endif - diffuseColor.a *= clipOpacity; - if ( diffuseColor.a == 0.0 ) discard; - #else - #pragma unroll_loop_start - for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; - } - #pragma unroll_loop_end - #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES - bool clipped = true; - #pragma unroll_loop_start - for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; - } - #pragma unroll_loop_end - if ( clipped ) discard; - #endif - #endif -#endif`,jL=`#if NUM_CLIPPING_PLANES > 0 - varying vec3 vClipPosition; - uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,YL=`#if NUM_CLIPPING_PLANES > 0 - varying vec3 vClipPosition; -#endif`,qL=`#if NUM_CLIPPING_PLANES > 0 - vClipPosition = - mvPosition.xyz; -#endif`,JL=`#if defined( USE_COLOR_ALPHA ) - diffuseColor *= vColor; -#elif defined( USE_COLOR ) - diffuseColor.rgb *= vColor; -#endif`,eU=`#if defined( USE_COLOR_ALPHA ) - varying vec4 vColor; -#elif defined( USE_COLOR ) - varying vec3 vColor; -#endif`,tU=`#if defined( USE_COLOR_ALPHA ) - varying vec4 vColor; -#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) - varying vec3 vColor; -#endif`,nU=`#if defined( USE_COLOR_ALPHA ) - vColor = vec4( 1.0 ); -#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) - vColor = vec3( 1.0 ); -#endif -#ifdef USE_COLOR - vColor *= color; -#endif -#ifdef USE_INSTANCING_COLOR - vColor.xyz *= instanceColor.xyz; -#endif -#ifdef USE_BATCHING_COLOR - vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); - vColor.xyz *= batchingColor.xyz; -#endif`,rU=`#define PI 3.141592653589793 -#define PI2 6.283185307179586 -#define PI_HALF 1.5707963267948966 -#define RECIPROCAL_PI 0.3183098861837907 -#define RECIPROCAL_PI2 0.15915494309189535 -#define EPSILON 1e-6 -#ifndef saturate -#define saturate( a ) clamp( a, 0.0, 1.0 ) -#endif -#define whiteComplement( a ) ( 1.0 - saturate( a ) ) -float pow2( const in float x ) { return x*x; } -vec3 pow2( const in vec3 x ) { return x*x; } -float pow3( const in float x ) { return x*x*x; } -float pow4( const in float x ) { float x2 = x*x; return x2*x2; } -float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } -float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } -highp float rand( const in vec2 uv ) { - const highp float a = 12.9898, b = 78.233, c = 43758.5453; - highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); - return fract( sin( sn ) * c ); -} -#ifdef HIGH_PRECISION - float precisionSafeLength( vec3 v ) { return length( v ); } -#else - float precisionSafeLength( vec3 v ) { - float maxComponent = max3( abs( v ) ); - return length( v / maxComponent ) * maxComponent; - } -#endif -struct IncidentLight { - vec3 color; - vec3 direction; - bool visible; -}; -struct ReflectedLight { - vec3 directDiffuse; - vec3 directSpecular; - vec3 indirectDiffuse; - vec3 indirectSpecular; -}; -#ifdef USE_ALPHAHASH - varying vec3 vPosition; -#endif -vec3 transformDirection( in vec3 dir, in mat4 matrix ) { - return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); -} -vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { - return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); -} -bool isPerspectiveMatrix( mat4 m ) { - return m[ 2 ][ 3 ] == - 1.0; -} -vec2 equirectUv( in vec3 dir ) { - float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; - float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; - return vec2( u, v ); -} -vec3 BRDF_Lambert( const in vec3 diffuseColor ) { - return RECIPROCAL_PI * diffuseColor; -} -vec3 F_Schlick( const in vec3 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 ); -} -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`,iU=`#ifdef ENVMAP_TYPE_CUBE_UV - #define cubeUV_minMipLevel 4.0 - #define cubeUV_minTileSize 16.0 - float getFace( vec3 direction ) { - vec3 absDirection = abs( direction ); - float face = - 1.0; - if ( absDirection.x > absDirection.z ) { - if ( absDirection.x > absDirection.y ) - face = direction.x > 0.0 ? 0.0 : 3.0; - else - face = direction.y > 0.0 ? 1.0 : 4.0; - } else { - if ( absDirection.z > absDirection.y ) - face = direction.z > 0.0 ? 2.0 : 5.0; - else - face = direction.y > 0.0 ? 1.0 : 4.0; - } - return face; - } - vec2 getUV( vec3 direction, float face ) { - vec2 uv; - if ( face == 0.0 ) { - uv = vec2( direction.z, direction.y ) / abs( direction.x ); - } else if ( face == 1.0 ) { - uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); - } else if ( face == 2.0 ) { - uv = vec2( - direction.x, direction.y ) / abs( direction.z ); - } else if ( face == 3.0 ) { - uv = vec2( - direction.z, direction.y ) / abs( direction.x ); - } else if ( face == 4.0 ) { - uv = vec2( - direction.x, direction.z ) / abs( direction.y ); - } else { - uv = vec2( direction.x, direction.y ) / abs( direction.z ); - } - return 0.5 * ( uv + 1.0 ); - } - vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { - float face = getFace( direction ); - float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); - mipInt = max( mipInt, cubeUV_minMipLevel ); - float faceSize = exp2( mipInt ); - highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; - if ( face > 2.0 ) { - uv.y += faceSize; - face -= 3.0; - } - uv.x += face * faceSize; - uv.x += filterInt * 3.0 * cubeUV_minTileSize; - uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); - uv.x *= CUBEUV_TEXEL_WIDTH; - uv.y *= CUBEUV_TEXEL_HEIGHT; - #ifdef texture2DGradEXT - return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; - #else - return texture2D( envMap, uv ).rgb; - #endif - } - #define cubeUV_r0 1.0 - #define cubeUV_m0 - 2.0 - #define cubeUV_r1 0.8 - #define cubeUV_m1 - 1.0 - #define cubeUV_r4 0.4 - #define cubeUV_m4 2.0 - #define cubeUV_r5 0.305 - #define cubeUV_m5 3.0 - #define cubeUV_r6 0.21 - #define cubeUV_m6 4.0 - float roughnessToMip( float roughness ) { - float mip = 0.0; - if ( roughness >= cubeUV_r1 ) { - mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; - } else if ( roughness >= cubeUV_r4 ) { - mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; - } else if ( roughness >= cubeUV_r5 ) { - mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; - } else if ( roughness >= cubeUV_r6 ) { - mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; - } else { - mip = - 2.0 * log2( 1.16 * roughness ); } - return mip; - } - vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { - float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); - float mipF = fract( mip ); - float mipInt = floor( mip ); - vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); - if ( mipF == 0.0 ) { - return vec4( color0, 1.0 ); - } else { - vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); - return vec4( mix( color0, color1, mipF ), 1.0 ); - } - } -#endif`,sU=`vec3 transformedNormal = objectNormal; -#ifdef USE_TANGENT - vec3 transformedTangent = objectTangent; -#endif -#ifdef USE_BATCHING - mat3 bm = mat3( batchingMatrix ); - transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); - transformedNormal = bm * transformedNormal; - #ifdef USE_TANGENT - transformedTangent = bm * transformedTangent; - #endif -#endif -#ifdef USE_INSTANCING - mat3 im = mat3( instanceMatrix ); - transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); - transformedNormal = im * transformedNormal; - #ifdef USE_TANGENT - transformedTangent = im * transformedTangent; - #endif -#endif -transformedNormal = normalMatrix * transformedNormal; -#ifdef FLIP_SIDED - transformedNormal = - transformedNormal; -#endif -#ifdef USE_TANGENT - transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; - #ifdef FLIP_SIDED - transformedTangent = - transformedTangent; - #endif -#endif`,aU=`#ifdef USE_DISPLACEMENTMAP - uniform sampler2D displacementMap; - uniform float displacementScale; - uniform float displacementBias; -#endif`,oU=`#ifdef USE_DISPLACEMENTMAP - transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,lU=`#ifdef USE_EMISSIVEMAP - vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); - #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE - emissiveColor = sRGBTransferEOTF( emissiveColor ); - #endif - totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,uU=`#ifdef USE_EMISSIVEMAP - uniform sampler2D emissiveMap; -#endif`,cU="gl_FragColor = linearToOutputTexel( gl_FragColor );",hU=`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 ); -}`,dU=`#ifdef USE_ENVMAP - #ifdef ENV_WORLDPOS - vec3 cameraToFrag; - if ( isOrthographic ) { - cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); - } else { - cameraToFrag = normalize( vWorldPosition - cameraPosition ); - } - vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - #ifdef ENVMAP_MODE_REFLECTION - vec3 reflectVec = reflect( cameraToFrag, worldNormal ); - #else - vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); - #endif - #else - vec3 reflectVec = vReflect; - #endif - #ifdef ENVMAP_TYPE_CUBE - vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); - #else - vec4 envColor = vec4( 0.0 ); - #endif - #ifdef ENVMAP_BLENDING_MULTIPLY - outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); - #elif defined( ENVMAP_BLENDING_MIX ) - outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); - #elif defined( ENVMAP_BLENDING_ADD ) - outgoingLight += envColor.xyz * specularStrength * reflectivity; - #endif -#endif`,fU=`#ifdef USE_ENVMAP - uniform float envMapIntensity; - uniform float flipEnvMap; - uniform mat3 envMapRotation; - #ifdef ENVMAP_TYPE_CUBE - uniform samplerCube envMap; - #else - uniform sampler2D envMap; - #endif -#endif`,AU=`#ifdef USE_ENVMAP - uniform float reflectivity; - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) - #define ENV_WORLDPOS - #endif - #ifdef ENV_WORLDPOS - varying vec3 vWorldPosition; - uniform float refractionRatio; - #else - varying vec3 vReflect; - #endif -#endif`,pU=`#ifdef USE_ENVMAP - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) - #define ENV_WORLDPOS - #endif - #ifdef ENV_WORLDPOS - - varying vec3 vWorldPosition; - #else - varying vec3 vReflect; - uniform float refractionRatio; - #endif -#endif`,gU=`#ifdef USE_ENVMAP - #ifdef ENV_WORLDPOS - vWorldPosition = worldPosition.xyz; - #else - vec3 cameraToVertex; - if ( isOrthographic ) { - cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); - } else { - cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); - } - vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); - #ifdef ENVMAP_MODE_REFLECTION - vReflect = reflect( cameraToVertex, worldNormal ); - #else - vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); - #endif - #endif -#endif`,mU=`#ifdef USE_FOG - vFogDepth = - mvPosition.z; -#endif`,vU=`#ifdef USE_FOG - varying float vFogDepth; -#endif`,yU=`#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`,xU=`#ifdef USE_FOG - uniform vec3 fogColor; - varying float vFogDepth; - #ifdef FOG_EXP2 - uniform float fogDensity; - #else - uniform float fogNear; - uniform float fogFar; - #endif -#endif`,bU=`#ifdef USE_GRADIENTMAP - uniform sampler2D gradientMap; -#endif -vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { - float dotNL = dot( normal, lightDirection ); - vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); - #ifdef USE_GRADIENTMAP - return vec3( texture2D( gradientMap, coord ).r ); - #else - 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 -}`,_U=`#ifdef USE_LIGHTMAP - uniform sampler2D lightMap; - uniform float lightMapIntensity; -#endif`,wU=`LambertMaterial material; -material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,SU=`varying vec3 vViewPosition; -struct LambertMaterial { - vec3 diffuseColor; - float specularStrength; -}; -void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,MU=`uniform bool receiveShadow; -uniform vec3 ambientLightColor; -#if defined( USE_LIGHT_PROBES ) - uniform vec3 lightProbe[ 9 ]; -#endif -vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { - float x = normal.x, y = normal.y, z = normal.z; - vec3 result = shCoefficients[ 0 ] * 0.886227; - result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; - result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; - result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; - result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; - result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; - result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); - result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; - result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); - return result; -} -vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { - vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); - return irradiance; -} -vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { - vec3 irradiance = ambientLightColor; - return irradiance; -} -float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { - 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 ); -} -#if NUM_DIR_LIGHTS > 0 - struct DirectionalLight { - vec3 direction; - vec3 color; - }; - uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; - void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { - light.color = directionalLight.color; - light.direction = directionalLight.direction; - light.visible = true; - } -#endif -#if NUM_POINT_LIGHTS > 0 - struct PointLight { - vec3 position; - vec3 color; - float distance; - float decay; - }; - uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; - void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { - vec3 lVector = pointLight.position - geometryPosition; - light.direction = normalize( lVector ); - float lightDistance = length( lVector ); - light.color = pointLight.color; - light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); - light.visible = ( light.color != vec3( 0.0 ) ); - } -#endif -#if NUM_SPOT_LIGHTS > 0 - struct SpotLight { - vec3 position; - vec3 direction; - vec3 color; - float distance; - float decay; - float coneCos; - float penumbraCos; - }; - uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; - void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { - vec3 lVector = spotLight.position - geometryPosition; - light.direction = normalize( lVector ); - float angleCos = dot( light.direction, spotLight.direction ); - float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); - if ( spotAttenuation > 0.0 ) { - float lightDistance = length( lVector ); - light.color = spotLight.color * spotAttenuation; - light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); - light.visible = ( light.color != vec3( 0.0 ) ); - } else { - light.color = vec3( 0.0 ); - light.visible = false; - } - } -#endif -#if NUM_RECT_AREA_LIGHTS > 0 - struct RectAreaLight { - vec3 color; - vec3 position; - vec3 halfWidth; - vec3 halfHeight; - }; - uniform sampler2D ltc_1; uniform sampler2D ltc_2; - uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; -#endif -#if NUM_HEMI_LIGHTS > 0 - struct HemisphereLight { - vec3 direction; - vec3 skyColor; - vec3 groundColor; - }; - uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; - vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { - float dotNL = dot( normal, hemiLight.direction ); - float hemiDiffuseWeight = 0.5 * dotNL + 0.5; - vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); - return irradiance; - } -#endif`,EU=`#ifdef USE_ENVMAP - vec3 getIBLIrradiance( const in vec3 normal ) { - #ifdef ENVMAP_TYPE_CUBE_UV - vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); - return PI * envMapColor.rgb * envMapIntensity; - #else - return vec3( 0.0 ); - #endif - } - vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { - #ifdef ENVMAP_TYPE_CUBE_UV - vec3 reflectVec = reflect( - viewDir, normal ); - reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) ); - reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); - vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); - return envMapColor.rgb * envMapIntensity; - #else - return vec3( 0.0 ); - #endif - } - #ifdef USE_ANISOTROPY - vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { - #ifdef ENVMAP_TYPE_CUBE_UV - vec3 bentNormal = cross( bitangent, viewDir ); - bentNormal = normalize( cross( bentNormal, bitangent ) ); - bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); - return getIBLRadiance( viewDir, bentNormal, roughness ); - #else - return vec3( 0.0 ); - #endif - } - #endif -#endif`,CU=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,TU=`varying vec3 vViewPosition; -struct ToonMaterial { - vec3 diffuseColor; -}; -void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { - vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,BU=`BlinnPhongMaterial material; -material.diffuseColor = diffuseColor.rgb; -material.specularColor = specular; -material.specularShininess = shininess; -material.specularStrength = specularStrength;`,RU=`varying vec3 vViewPosition; -struct BlinnPhongMaterial { - vec3 diffuseColor; - vec3 specularColor; - float specularShininess; - float specularStrength; -}; -void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); - reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; -} -void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,IU=`PhysicalMaterial material; -material.diffuseColor = diffuseColor.rgb; -material.diffuseContribution = diffuseColor.rgb * ( 1.0 - metalnessFactor ); -material.metalness = metalnessFactor; -vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); -float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); -material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; -material.roughness = min( material.roughness, 1.0 ); -#ifdef IOR - material.ior = ior; - #ifdef USE_SPECULAR - float specularIntensityFactor = specularIntensity; - vec3 specularColorFactor = specularColor; - #ifdef USE_SPECULAR_COLORMAP - specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; - #endif - #ifdef USE_SPECULAR_INTENSITYMAP - specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; - #endif - material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); - #else - float specularIntensityFactor = 1.0; - vec3 specularColorFactor = vec3( 1.0 ); - material.specularF90 = 1.0; - #endif - material.specularColor = min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor; - material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); -#else - material.specularColor = vec3( 0.04 ); - material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor ); - material.specularF90 = 1.0; -#endif -#ifdef USE_CLEARCOAT - material.clearcoat = clearcoat; - material.clearcoatRoughness = clearcoatRoughness; - material.clearcoatF0 = vec3( 0.04 ); - material.clearcoatF90 = 1.0; - #ifdef USE_CLEARCOATMAP - material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; - #endif - #ifdef USE_CLEARCOAT_ROUGHNESSMAP - material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; - #endif - material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); - 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; - #ifdef USE_IRIDESCENCEMAP - material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; - #endif - #ifdef USE_IRIDESCENCE_THICKNESSMAP - material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; - #else - material.iridescenceThickness = iridescenceThicknessMaximum; - #endif -#endif -#ifdef USE_SHEEN - material.sheenColor = sheenColor; - #ifdef USE_SHEEN_COLORMAP - material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; - #endif - material.sheenRoughness = clamp( sheenRoughness, 0.0001, 1.0 ); - #ifdef USE_SHEEN_ROUGHNESSMAP - material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; - #endif -#endif -#ifdef USE_ANISOTROPY - #ifdef USE_ANISOTROPYMAP - mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); - vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; - vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; - #else - vec2 anisotropyV = anisotropyVector; - #endif - material.anisotropy = length( anisotropyV ); - if( material.anisotropy == 0.0 ) { - anisotropyV = vec2( 1.0, 0.0 ); - } else { - anisotropyV /= material.anisotropy; - material.anisotropy = saturate( material.anisotropy ); - } - 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`,NU=`uniform sampler2D dfgLUT; -struct PhysicalMaterial { - vec3 diffuseColor; - vec3 diffuseContribution; - vec3 specularColor; - vec3 specularColorBlended; - float roughness; - float metalness; - float specularF90; - float dispersion; - #ifdef USE_CLEARCOAT - float clearcoat; - float clearcoatRoughness; - vec3 clearcoatF0; - float clearcoatF90; - #endif - #ifdef USE_IRIDESCENCE - float iridescence; - float iridescenceIOR; - float iridescenceThickness; - vec3 iridescenceFresnel; - vec3 iridescenceF0; - vec3 iridescenceFresnelDielectric; - vec3 iridescenceFresnelMetallic; - #endif - #ifdef USE_SHEEN - vec3 sheenColor; - float sheenRoughness; - #endif - #ifdef IOR - float ior; - #endif - #ifdef USE_TRANSMISSION - float transmission; - float transmissionAlpha; - float thickness; - float attenuationDistance; - vec3 attenuationColor; - #endif - #ifdef USE_ANISOTROPY - float anisotropy; - float alphaT; - vec3 anisotropyT; - vec3 anisotropyB; - #endif -}; -vec3 clearcoatSpecularDirect = vec3( 0.0 ); -vec3 clearcoatSpecularIndirect = vec3( 0.0 ); -vec3 sheenSpecularDirect = vec3( 0.0 ); -vec3 sheenSpecularIndirect = vec3(0.0 ); -vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { - float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); - float x2 = x * x; - float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); - return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); -} -float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { - float a2 = pow2( alpha ); - float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); - float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); - return 0.5 / max( gv + gl, EPSILON ); -} -float D_GGX( const in float alpha, const in float dotNH ) { - float a2 = pow2( alpha ); - float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; - return RECIPROCAL_PI * a2 / pow2( denom ); -} -#ifdef USE_ANISOTROPY - float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { - float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); - float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); - float v = 0.5 / ( gv + gl ); - return v; - } - float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { - float a2 = alphaT * alphaB; - highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); - highp float v2 = dot( v, v ); - float w2 = a2 / v2; - return RECIPROCAL_PI * a2 * pow2 ( w2 ); - } -#endif -#ifdef USE_CLEARCOAT - vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { - vec3 f0 = material.clearcoatF0; - float f90 = material.clearcoatF90; - float roughness = material.clearcoatRoughness; - float alpha = pow2( roughness ); - vec3 halfDir = normalize( lightDir + viewDir ); - float dotNL = saturate( dot( normal, lightDir ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - float dotNH = saturate( dot( normal, halfDir ) ); - float dotVH = saturate( dot( viewDir, halfDir ) ); - vec3 F = F_Schlick( f0, f90, dotVH ); - float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); - float D = D_GGX( alpha, dotNH ); - return F * ( V * D ); - } -#endif -vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { - vec3 f0 = material.specularColorBlended; - float f90 = material.specularF90; - float roughness = material.roughness; - float alpha = pow2( roughness ); - vec3 halfDir = normalize( lightDir + viewDir ); - float dotNL = saturate( dot( normal, lightDir ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - float dotNH = saturate( dot( normal, halfDir ) ); - float dotVH = saturate( dot( viewDir, halfDir ) ); - vec3 F = F_Schlick( f0, f90, dotVH ); - #ifdef USE_IRIDESCENCE - F = mix( F, material.iridescenceFresnel, material.iridescence ); - #endif - #ifdef USE_ANISOTROPY - float dotTL = dot( material.anisotropyT, lightDir ); - float dotTV = dot( material.anisotropyT, viewDir ); - float dotTH = dot( material.anisotropyT, halfDir ); - float dotBL = dot( material.anisotropyB, lightDir ); - float dotBV = dot( material.anisotropyB, viewDir ); - float dotBH = dot( material.anisotropyB, halfDir ); - float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); - float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); - #else - float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); - float D = D_GGX( alpha, dotNH ); - #endif - return F * ( V * D ); -} -vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { - const float LUT_SIZE = 64.0; - const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; - const float LUT_BIAS = 0.5 / LUT_SIZE; - float dotNV = saturate( dot( N, V ) ); - vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); - uv = uv * LUT_SCALE + LUT_BIAS; - return uv; -} -float LTC_ClippedSphereFormFactor( const in vec3 f ) { - float l = length( f ); - return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); -} -vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { - float x = dot( v1, v2 ); - float y = abs( x ); - float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; - float b = 3.4175940 + ( 4.1616724 + y ) * y; - float v = a / b; - float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; - return cross( v1, v2 ) * theta_sintheta; -} -vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { - vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; - vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; - vec3 lightNormal = cross( v1, v2 ); - if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); - vec3 T1, T2; - T1 = normalize( V - N * dot( V, N ) ); - T2 = - cross( N, T1 ); - mat3 mat = mInv * transpose( mat3( T1, T2, N ) ); - vec3 coords[ 4 ]; - coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); - coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); - coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); - coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); - coords[ 0 ] = normalize( coords[ 0 ] ); - coords[ 1 ] = normalize( coords[ 1 ] ); - coords[ 2 ] = normalize( coords[ 2 ] ); - coords[ 3 ] = normalize( coords[ 3 ] ); - vec3 vectorFormFactor = vec3( 0.0 ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); - float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); - return vec3( result ); -} -#if defined( USE_SHEEN ) -float D_Charlie( float roughness, float dotNH ) { - float alpha = pow2( roughness ); - float invAlpha = 1.0 / alpha; - float cos2h = dotNH * dotNH; - float sin2h = max( 1.0 - cos2h, 0.0078125 ); - return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); -} -float V_Neubelt( float dotNV, float dotNL ) { - return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); -} -vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { - vec3 halfDir = normalize( lightDir + viewDir ); - float dotNL = saturate( dot( normal, lightDir ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - float dotNH = saturate( dot( normal, halfDir ) ); - float D = D_Charlie( sheenRoughness, dotNH ); - float V = V_Neubelt( dotNV, dotNL ); - return sheenColor * ( D * V ); -} -#endif -float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { - float dotNV = saturate( dot( normal, viewDir ) ); - float r2 = roughness * roughness; - float rInv = 1.0 / ( roughness + 0.1 ); - float a = -1.9362 + 1.0678 * roughness + 0.4573 * r2 - 0.8469 * rInv; - float b = -0.6014 + 0.5538 * roughness - 0.4670 * r2 - 0.1255 * rInv; - float DG = exp( a * dotNV + b ); - return saturate( DG ); -} -vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { - float dotNV = saturate( dot( normal, viewDir ) ); - vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; - return specularColor * fab.x + specularF90 * fab.y; -} -#ifdef USE_IRIDESCENCE -void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { -#else -void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { -#endif - float dotNV = saturate( dot( normal, viewDir ) ); - vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg; - #ifdef USE_IRIDESCENCE - vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); - #else - vec3 Fr = specularColor; - #endif - vec3 FssEss = Fr * fab.x + specularF90 * fab.y; - float Ess = fab.x + fab.y; - float Ems = 1.0 - Ess; - vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); - singleScatter += FssEss; - multiScatter += Fms * Ems; -} -vec3 BRDF_GGX_Multiscatter( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { - vec3 singleScatter = BRDF_GGX( lightDir, viewDir, normal, material ); - float dotNL = saturate( dot( normal, lightDir ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - vec2 dfgV = texture2D( dfgLUT, vec2( material.roughness, dotNV ) ).rg; - vec2 dfgL = texture2D( dfgLUT, vec2( material.roughness, dotNL ) ).rg; - vec3 FssEss_V = material.specularColorBlended * dfgV.x + material.specularF90 * dfgV.y; - vec3 FssEss_L = material.specularColorBlended * dfgL.x + material.specularF90 * dfgL.y; - float Ess_V = dfgV.x + dfgV.y; - float Ess_L = dfgL.x + dfgL.y; - float Ems_V = 1.0 - Ess_V; - float Ems_L = 1.0 - Ess_L; - vec3 Favg = material.specularColorBlended + ( 1.0 - material.specularColorBlended ) * 0.047619; - vec3 Fms = FssEss_V * FssEss_L * Favg / ( 1.0 - Ems_V * Ems_L * Favg + EPSILON ); - float compensationFactor = Ems_V * Ems_L; - vec3 multiScatter = Fms * compensationFactor; - return singleScatter + multiScatter; -} -#if NUM_RECT_AREA_LIGHTS > 0 - void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - vec3 normal = geometryNormal; - vec3 viewDir = geometryViewDir; - vec3 position = geometryPosition; - vec3 lightPos = rectAreaLight.position; - vec3 halfWidth = rectAreaLight.halfWidth; - vec3 halfHeight = rectAreaLight.halfHeight; - vec3 lightColor = rectAreaLight.color; - float roughness = material.roughness; - vec3 rectCoords[ 4 ]; - rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; - rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; - rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; - vec2 uv = LTC_Uv( normal, viewDir, roughness ); - vec4 t1 = texture2D( ltc_1, uv ); - vec4 t2 = texture2D( ltc_2, uv ); - mat3 mInv = mat3( - vec3( t1.x, 0, t1.y ), - vec3( 0, 1, 0 ), - vec3( t1.z, 0, t1.w ) - ); - vec3 fresnel = ( material.specularColorBlended * t2.x + ( vec3( 1.0 ) - material.specularColorBlended ) * t2.y ); - reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); - reflectedLight.directDiffuse += lightColor * material.diffuseContribution * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); - } -#endif -void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - #ifdef USE_CLEARCOAT - float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); - vec3 ccIrradiance = dotNLcc * directLight.color; - clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); - #endif - #ifdef USE_SHEEN - - sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); - - float sheenAlbedoV = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); - float sheenAlbedoL = IBLSheenBRDF( geometryNormal, directLight.direction, material.sheenRoughness ); - - float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * max( sheenAlbedoV, sheenAlbedoL ); - - irradiance *= sheenEnergyComp; - - #endif - reflectedLight.directSpecular += irradiance * BRDF_GGX_Multiscatter( directLight.direction, geometryViewDir, geometryNormal, material ); - reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseContribution ); -} -void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - vec3 diffuse = irradiance * BRDF_Lambert( material.diffuseContribution ); - #ifdef USE_SHEEN - float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); - float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; - diffuse *= sheenEnergyComp; - #endif - reflectedLight.indirectDiffuse += diffuse; -} -void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { - #ifdef USE_CLEARCOAT - clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); - #endif - #ifdef USE_SHEEN - sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ) * RECIPROCAL_PI; - #endif - vec3 singleScatteringDielectric = vec3( 0.0 ); - vec3 multiScatteringDielectric = vec3( 0.0 ); - vec3 singleScatteringMetallic = vec3( 0.0 ); - vec3 multiScatteringMetallic = vec3( 0.0 ); - #ifdef USE_IRIDESCENCE - computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnelDielectric, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); - computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.iridescence, material.iridescenceFresnelMetallic, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); - #else - computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScatteringDielectric, multiScatteringDielectric ); - computeMultiscattering( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.roughness, singleScatteringMetallic, multiScatteringMetallic ); - #endif - vec3 singleScattering = mix( singleScatteringDielectric, singleScatteringMetallic, material.metalness ); - vec3 multiScattering = mix( multiScatteringDielectric, multiScatteringMetallic, material.metalness ); - vec3 totalScatteringDielectric = singleScatteringDielectric + multiScatteringDielectric; - vec3 diffuse = material.diffuseContribution * ( 1.0 - totalScatteringDielectric ); - vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; - vec3 indirectSpecular = radiance * singleScattering; - indirectSpecular += multiScattering * cosineWeightedIrradiance; - vec3 indirectDiffuse = diffuse * cosineWeightedIrradiance; - #ifdef USE_SHEEN - float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); - float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo; - indirectSpecular *= sheenEnergyComp; - indirectDiffuse *= sheenEnergyComp; - #endif - reflectedLight.indirectSpecular += indirectSpecular; - reflectedLight.indirectDiffuse += indirectDiffuse; -} -#define RE_Direct RE_Direct_Physical -#define RE_Direct_RectArea RE_Direct_RectArea_Physical -#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical -#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 ); -}`,FU=` -vec3 geometryPosition = - vViewPosition; -vec3 geometryNormal = normal; -vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); -vec3 geometryClearcoatNormal = vec3( 0.0 ); -#ifdef USE_CLEARCOAT - geometryClearcoatNormal = clearcoatNormal; -#endif -#ifdef USE_IRIDESCENCE - float dotNVi = saturate( dot( normal, geometryViewDir ) ); - if ( material.iridescenceThickness == 0.0 ) { - material.iridescence = 0.0; - } else { - material.iridescence = saturate( material.iridescence ); - } - if ( material.iridescence > 0.0 ) { - material.iridescenceFresnelDielectric = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); - material.iridescenceFresnelMetallic = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.diffuseColor ); - material.iridescenceFresnel = mix( material.iridescenceFresnelDielectric, material.iridescenceFresnelMetallic, material.metalness ); - material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); - } -#endif -IncidentLight directLight; -#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) - PointLight pointLight; - #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 - PointLightShadow pointLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { - pointLight = pointLights[ i ]; - getPointLightInfo( pointLight, geometryPosition, directLight ); - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) - pointLightShadow = pointLightShadows[ i ]; - 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 ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) - SpotLight spotLight; - vec4 spotColor; - vec3 spotLightCoord; - bool inSpotLightMap; - #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { - spotLight = spotLights[ i ]; - getSpotLightInfo( spotLight, geometryPosition, directLight ); - #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX - #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS - #else - #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #endif - #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) - spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; - inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); - spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); - directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; - #endif - #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.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; - #endif - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) - DirectionalLight directionalLight; - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - directionalLight = directionalLights[ i ]; - 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.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - #endif - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) - RectAreaLight rectAreaLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { - rectAreaLight = rectAreaLights[ i ]; - RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if defined( RE_IndirectDiffuse ) - vec3 iblIrradiance = vec3( 0.0 ); - vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); - #if defined( USE_LIGHT_PROBES ) - irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); - #endif - #if ( NUM_HEMI_LIGHTS > 0 ) - #pragma unroll_loop_start - for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { - irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); - } - #pragma unroll_loop_end - #endif -#endif -#if defined( RE_IndirectSpecular ) - vec3 radiance = vec3( 0.0 ); - vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,PU=`#if defined( RE_IndirectDiffuse ) - #ifdef USE_LIGHTMAP - vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); - vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; - irradiance += lightMapIrradiance; - #endif - #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) - iblIrradiance += getIBLIrradiance( geometryNormal ); - #endif -#endif -#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) - #ifdef USE_ANISOTROPY - radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); - #else - radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); - #endif - #ifdef USE_CLEARCOAT - clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); - #endif -#endif`,LU=`#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`,UU=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) - gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,OU=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) - uniform float logDepthBufFC; - varying float vFragDepth; - varying float vIsPerspective; -#endif`,DU=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER - varying float vFragDepth; - varying float vIsPerspective; -#endif`,kU=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER - vFragDepth = 1.0 + gl_Position.w; - vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); -#endif`,VU=`#ifdef USE_MAP - vec4 sampledDiffuseColor = texture2D( map, vMapUv ); - #ifdef DECODE_VIDEO_TEXTURE - sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); - #endif - diffuseColor *= sampledDiffuseColor; -#endif`,zU=`#ifdef USE_MAP - uniform sampler2D map; -#endif`,GU=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) - #if defined( USE_POINTS_UV ) - vec2 uv = vUv; - #else - vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; - #endif -#endif -#ifdef USE_MAP - diffuseColor *= texture2D( map, uv ); -#endif -#ifdef USE_ALPHAMAP - diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,HU=`#if defined( USE_POINTS_UV ) - varying vec2 vUv; -#else - #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) - uniform mat3 uvTransform; - #endif -#endif -#ifdef USE_MAP - uniform sampler2D map; -#endif -#ifdef USE_ALPHAMAP - uniform sampler2D alphaMap; -#endif`,QU=`float metalnessFactor = metalness; -#ifdef USE_METALNESSMAP - vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); - metalnessFactor *= texelMetalness.b; -#endif`,WU=`#ifdef USE_METALNESSMAP - uniform sampler2D metalnessMap; -#endif`,ZU=`#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`,KU=`#if defined( USE_MORPHCOLORS ) - vColor *= morphTargetBaseInfluence; - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - #if defined( USE_COLOR_ALPHA ) - if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; - #elif defined( USE_COLOR ) - if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; - #endif - } -#endif`,$U=`#ifdef USE_MORPHNORMALS - objectNormal *= morphTargetBaseInfluence; - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; - } -#endif`,XU=`#ifdef USE_MORPHTARGETS - #ifndef USE_INSTANCING_MORPH - uniform float morphTargetBaseInfluence; - 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`,jU=`#ifdef USE_MORPHTARGETS - transformed *= morphTargetBaseInfluence; - for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { - if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; - } -#endif`,YU=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; -#ifdef FLAT_SHADED - vec3 fdx = dFdx( vViewPosition ); - vec3 fdy = dFdy( vViewPosition ); - vec3 normal = normalize( cross( fdx, fdy ) ); -#else - vec3 normal = normalize( vNormal ); - #ifdef DOUBLE_SIDED - normal *= faceDirection; - #endif -#endif -#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) - #ifdef USE_TANGENT - mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); - #else - mat3 tbn = getTangentFrame( - vViewPosition, normal, - #if defined( USE_NORMALMAP ) - vNormalMapUv - #elif defined( USE_CLEARCOAT_NORMALMAP ) - vClearcoatNormalMapUv - #else - vUv - #endif - ); - #endif - #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) - tbn[0] *= faceDirection; - tbn[1] *= faceDirection; - #endif -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - #ifdef USE_TANGENT - mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); - #else - mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); - #endif - #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) - tbn2[0] *= faceDirection; - tbn2[1] *= faceDirection; - #endif -#endif -vec3 nonPerturbedNormal = normal;`,qU=`#ifdef USE_NORMALMAP_OBJECTSPACE - normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; - #ifdef FLIP_SIDED - normal = - normal; - #endif - #ifdef DOUBLE_SIDED - normal = normal * faceDirection; - #endif - normal = normalize( normalMatrix * normal ); -#elif defined( USE_NORMALMAP_TANGENTSPACE ) - vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; - mapN.xy *= normalScale; - normal = normalize( tbn * mapN ); -#elif defined( USE_BUMPMAP ) - normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,JU=`#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif`,eO=`#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif`,tO=`#ifndef FLAT_SHADED - vNormal = normalize( transformedNormal ); - #ifdef USE_TANGENT - vTangent = normalize( transformedTangent ); - vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); - #endif -#endif`,nO=`#ifdef USE_NORMALMAP - uniform sampler2D normalMap; - uniform vec2 normalScale; -#endif -#ifdef USE_NORMALMAP_OBJECTSPACE - uniform mat3 normalMatrix; -#endif -#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) - mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { - vec3 q0 = dFdx( eye_pos.xyz ); - vec3 q1 = dFdy( eye_pos.xyz ); - vec2 st0 = dFdx( uv.st ); - vec2 st1 = dFdy( uv.st ); - vec3 N = surf_norm; - vec3 q1perp = cross( q1, N ); - vec3 q0perp = cross( N, q0 ); - vec3 T = q1perp * st0.x + q0perp * st1.x; - vec3 B = q1perp * st0.y + q0perp * st1.y; - float det = max( dot( T, T ), dot( B, B ) ); - float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); - return mat3( T * scale, B * scale, N ); - } -#endif`,rO=`#ifdef USE_CLEARCOAT - vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,iO=`#ifdef USE_CLEARCOAT_NORMALMAP - vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; - clearcoatMapN.xy *= clearcoatNormalScale; - clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,sO=`#ifdef USE_CLEARCOATMAP - uniform sampler2D clearcoatMap; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - uniform sampler2D clearcoatNormalMap; - uniform vec2 clearcoatNormalScale; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - uniform sampler2D clearcoatRoughnessMap; -#endif`,aO=`#ifdef USE_IRIDESCENCEMAP - uniform sampler2D iridescenceMap; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - uniform sampler2D iridescenceThicknessMap; -#endif`,oO=`#ifdef OPAQUE -diffuseColor.a = 1.0; -#endif -#ifdef USE_TRANSMISSION -diffuseColor.a *= material.transmissionAlpha; -#endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,lO=`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 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 ) { - 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, UnpackFactors4 ); -} -float unpackRGBToDepth( const in vec3 v ) { - return dot( v, UnpackFactors3 ); -} -float unpackRGToDepth( const in vec2 v ) { - return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; -} -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( 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 ) { - return ( viewZ + near ) / ( near - far ); -} -float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { - return depth * ( near - far ) - near; -} -float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { - return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); -} -float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { - return ( near * far ) / ( ( far - near ) * depth - far ); -}`,uO=`#ifdef PREMULTIPLIED_ALPHA - gl_FragColor.rgb *= gl_FragColor.a; -#endif`,cO=`vec4 mvPosition = vec4( transformed, 1.0 ); -#ifdef USE_BATCHING - mvPosition = batchingMatrix * mvPosition; -#endif -#ifdef USE_INSTANCING - mvPosition = instanceMatrix * mvPosition; -#endif -mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,hO=`#ifdef DITHERING - gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,dO=`#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`,fO=`float roughnessFactor = roughness; -#ifdef USE_ROUGHNESSMAP - vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); - roughnessFactor *= texelRoughness.g; -#endif`,AO=`#ifdef USE_ROUGHNESSMAP - uniform sampler2D roughnessMap; -#endif`,pO=`#if NUM_SPOT_LIGHT_COORDS > 0 - varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; -#endif -#if NUM_SPOT_LIGHT_MAPS > 0 - uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; -#endif -#ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - #if defined( SHADOWMAP_TYPE_PCF ) - uniform sampler2DShadow directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; - #else - uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; - struct DirectionalLightShadow { - float shadowIntensity; - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - #if defined( SHADOWMAP_TYPE_PCF ) - uniform sampler2DShadow spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; - #else - uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - struct SpotLightShadow { - float shadowIntensity; - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - #if defined( SHADOWMAP_TYPE_PCF ) - uniform samplerCubeShadow pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; - #elif defined( SHADOWMAP_TYPE_BASIC ) - uniform samplerCube pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; - #endif - varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; - struct PointLightShadow { - float shadowIntensity; - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - float shadowCameraNear; - float shadowCameraFar; - }; - uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; - #endif - #if defined( SHADOWMAP_TYPE_PCF ) - float interleavedGradientNoise( vec2 position ) { - return fract( 52.9829189 * fract( dot( position, vec2( 0.06711056, 0.00583715 ) ) ) ); - } - vec2 vogelDiskSample( int sampleIndex, int samplesCount, float phi ) { - const float goldenAngle = 2.399963229728653; - float r = sqrt( ( float( sampleIndex ) + 0.5 ) / float( samplesCount ) ); - float theta = float( sampleIndex ) * goldenAngle + phi; - return vec2( cos( theta ), sin( theta ) ) * r; - } - #endif - #if defined( SHADOWMAP_TYPE_PCF ) - float getShadow( sampler2DShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { - float shadow = 1.0; - shadowCoord.xyz /= shadowCoord.w; - shadowCoord.z += shadowBias; - bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; - bool frustumTest = inFrustum && shadowCoord.z <= 1.0; - if ( frustumTest ) { - vec2 texelSize = vec2( 1.0 ) / shadowMapSize; - float radius = shadowRadius * texelSize.x; - float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; - shadow = ( - texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 0, 5, phi ) * radius, shadowCoord.z ) ) + - texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 1, 5, phi ) * radius, shadowCoord.z ) ) + - texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 2, 5, phi ) * radius, shadowCoord.z ) ) + - texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 3, 5, phi ) * radius, shadowCoord.z ) ) + - texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 4, 5, phi ) * radius, shadowCoord.z ) ) - ) * 0.2; - } - return mix( 1.0, shadow, shadowIntensity ); - } - #elif defined( SHADOWMAP_TYPE_VSM ) - 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; - bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; - bool frustumTest = inFrustum && shadowCoord.z <= 1.0; - if ( frustumTest ) { - vec2 distribution = texture2D( shadowMap, shadowCoord.xy ).rg; - float mean = distribution.x; - float variance = distribution.y * distribution.y; - #ifdef USE_REVERSED_DEPTH_BUFFER - float hard_shadow = step( mean, shadowCoord.z ); - #else - float hard_shadow = step( shadowCoord.z, mean ); - #endif - if ( hard_shadow == 1.0 ) { - shadow = 1.0; - } else { - variance = max( variance, 0.0000001 ); - float d = shadowCoord.z - mean; - float p_max = variance / ( variance + d * d ); - p_max = clamp( ( p_max - 0.3 ) / 0.65, 0.0, 1.0 ); - shadow = max( hard_shadow, p_max ); - } - } - return mix( 1.0, shadow, shadowIntensity ); - } - #else - 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; - bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; - bool frustumTest = inFrustum && shadowCoord.z <= 1.0; - if ( frustumTest ) { - float depth = texture2D( shadowMap, shadowCoord.xy ).r; - #ifdef USE_REVERSED_DEPTH_BUFFER - shadow = step( depth, shadowCoord.z ); - #else - shadow = step( shadowCoord.z, depth ); - #endif - } - return mix( 1.0, shadow, shadowIntensity ); - } - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - #if defined( SHADOWMAP_TYPE_PCF ) - float getPointShadow( samplerCubeShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { - float shadow = 1.0; - vec3 lightToPosition = shadowCoord.xyz; - vec3 bd3D = normalize( lightToPosition ); - vec3 absVec = abs( lightToPosition ); - float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); - if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { - float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); - dp += shadowBias; - float texelSize = shadowRadius / shadowMapSize.x; - vec3 absDir = abs( bd3D ); - vec3 tangent = absDir.x > absDir.z ? vec3( 0.0, 1.0, 0.0 ) : vec3( 1.0, 0.0, 0.0 ); - tangent = normalize( cross( bd3D, tangent ) ); - vec3 bitangent = cross( bd3D, tangent ); - float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718; - shadow = ( - texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 0, 5, phi ).x + bitangent * vogelDiskSample( 0, 5, phi ).y ) * texelSize, dp ) ) + - texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 1, 5, phi ).x + bitangent * vogelDiskSample( 1, 5, phi ).y ) * texelSize, dp ) ) + - texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 2, 5, phi ).x + bitangent * vogelDiskSample( 2, 5, phi ).y ) * texelSize, dp ) ) + - texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 3, 5, phi ).x + bitangent * vogelDiskSample( 3, 5, phi ).y ) * texelSize, dp ) ) + - texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 4, 5, phi ).x + bitangent * vogelDiskSample( 4, 5, phi ).y ) * texelSize, dp ) ) - ) * 0.2; - } - return mix( 1.0, shadow, shadowIntensity ); - } - #elif defined( SHADOWMAP_TYPE_BASIC ) - float getPointShadow( samplerCube shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { - float shadow = 1.0; - vec3 lightToPosition = shadowCoord.xyz; - vec3 bd3D = normalize( lightToPosition ); - vec3 absVec = abs( lightToPosition ); - float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z ); - if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) { - float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) ); - dp += shadowBias; - float depth = textureCube( shadowMap, bd3D ).r; - #ifdef USE_REVERSED_DEPTH_BUFFER - shadow = step( depth, dp ); - #else - shadow = step( dp, depth ); - #endif - } - return mix( 1.0, shadow, shadowIntensity ); - } - #endif - #endif -#endif`,gO=`#if NUM_SPOT_LIGHT_COORDS > 0 - uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; - varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; -#endif -#ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; - varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; - struct DirectionalLightShadow { - float shadowIntensity; - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - struct SpotLightShadow { - float shadowIntensity; - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; - varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; - struct PointLightShadow { - float shadowIntensity; - float shadowBias; - float shadowNormalBias; - float shadowRadius; - vec2 shadowMapSize; - float shadowCameraNear; - float shadowCameraFar; - }; - uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; - #endif -#endif`,mO=`#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 -#if defined( USE_SHADOWMAP ) - #if NUM_DIR_LIGHT_SHADOWS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { - shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); - vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; - } - #pragma unroll_loop_end - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { - shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); - vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; - } - #pragma unroll_loop_end - #endif -#endif -#if NUM_SPOT_LIGHT_COORDS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { - shadowWorldPosition = worldPosition; - #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; - #endif - vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; - } - #pragma unroll_loop_end -#endif`,vO=`float getShadowMask() { - float shadow = 1.0; - #ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLight; - #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.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - } - #pragma unroll_loop_end - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLight; - #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.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; - } - #pragma unroll_loop_end - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) ) - PointLightShadow pointLight; - #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.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; - } - #pragma unroll_loop_end - #endif - #endif - return shadow; -}`,yO=`#ifdef USE_SKINNING - mat4 boneMatX = getBoneMatrix( skinIndex.x ); - mat4 boneMatY = getBoneMatrix( skinIndex.y ); - mat4 boneMatZ = getBoneMatrix( skinIndex.z ); - mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,xO=`#ifdef USE_SKINNING - uniform mat4 bindMatrix; - uniform mat4 bindMatrixInverse; - uniform highp sampler2D boneTexture; - mat4 getBoneMatrix( const in float i ) { - int size = textureSize( boneTexture, 0 ).x; - int j = int( i ) * 4; - int x = j % size; - int y = j / size; - vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); - vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); - vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); - vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); - return mat4( v1, v2, v3, v4 ); - } -#endif`,bO=`#ifdef USE_SKINNING - vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); - vec4 skinned = vec4( 0.0 ); - skinned += boneMatX * skinVertex * skinWeight.x; - skinned += boneMatY * skinVertex * skinWeight.y; - skinned += boneMatZ * skinVertex * skinWeight.z; - skinned += boneMatW * skinVertex * skinWeight.w; - transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,_O=`#ifdef USE_SKINNING - mat4 skinMatrix = mat4( 0.0 ); - skinMatrix += skinWeight.x * boneMatX; - skinMatrix += skinWeight.y * boneMatY; - skinMatrix += skinWeight.z * boneMatZ; - skinMatrix += skinWeight.w * boneMatW; - skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; - objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; - #ifdef USE_TANGENT - objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; - #endif -#endif`,wO=`float specularStrength; -#ifdef USE_SPECULARMAP - vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); - specularStrength = texelSpecular.r; -#else - specularStrength = 1.0; -#endif`,SO=`#ifdef USE_SPECULARMAP - uniform sampler2D specularMap; -#endif`,MO=`#if defined( TONE_MAPPING ) - gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,EO=`#ifndef saturate -#define saturate( a ) clamp( a, 0.0, 1.0 ) -#endif -uniform float toneMappingExposure; -vec3 LinearToneMapping( vec3 color ) { - return saturate( toneMappingExposure * color ); -} -vec3 ReinhardToneMapping( vec3 color ) { - color *= toneMappingExposure; - return saturate( color / ( vec3( 1.0 ) + 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 ) ); -} -vec3 RRTAndODTFit( vec3 v ) { - vec3 a = v * ( v + 0.0245786 ) - 0.000090537; - vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; - return a / b; -} -vec3 ACESFilmicToneMapping( vec3 color ) { - const mat3 ACESInputMat = mat3( - vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), - vec3( 0.04823, 0.01566, 0.83777 ) - ); - const mat3 ACESOutputMat = mat3( - vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), - vec3( -0.07367, -0.00605, 1.07602 ) - ); - color *= toneMappingExposure / 0.6; - color = ACESInputMat * color; - color = RRTAndODTFit( color ); - color = ACESOutputMat * color; - return saturate( color ); -} -const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( - vec3( 1.6605, - 0.1246, - 0.0182 ), - vec3( - 0.5876, 1.1329, - 0.1006 ), - vec3( - 0.0728, - 0.0083, 1.1187 ) -); -const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( - vec3( 0.6274, 0.0691, 0.0164 ), - vec3( 0.3293, 0.9195, 0.0880 ), - vec3( 0.0433, 0.0113, 0.8956 ) -); -vec3 agxDefaultContrastApprox( vec3 x ) { - vec3 x2 = x * x; - vec3 x4 = x2 * x2; - return + 15.5 * x4 * x2 - - 40.14 * x4 * x - + 31.96 * x4 - - 6.868 * x2 * x - + 0.4298 * x2 - + 0.1191 * x - - 0.00232; -} -vec3 AgXToneMapping( vec3 color ) { - const mat3 AgXInsetMatrix = mat3( - vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), - vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), - vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) - ); - const mat3 AgXOutsetMatrix = mat3( - vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), - vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), - vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) - ); - const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; - color *= toneMappingExposure; - color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; - color = AgXInsetMatrix * color; - color = max( color, 1e-10 ); color = log2( color ); - color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); - color = clamp( color, 0.0, 1.0 ); - color = agxDefaultContrastApprox( color ); - color = AgXOutsetMatrix * color; - color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); - color = LINEAR_REC2020_TO_LINEAR_SRGB * color; - color = clamp( color, 0.0, 1.0 ); - return color; -} -vec3 NeutralToneMapping( vec3 color ) { - 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 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 ); - color *= newPeak / peak; - float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); - return mix( color, vec3( newPeak ), g ); -} -vec3 CustomToneMapping( vec3 color ) { return color; }`,CO=`#ifdef USE_TRANSMISSION - material.transmission = transmission; - material.transmissionAlpha = 1.0; - material.thickness = thickness; - material.attenuationDistance = attenuationDistance; - material.attenuationColor = attenuationColor; - #ifdef USE_TRANSMISSIONMAP - material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; - #endif - #ifdef USE_THICKNESSMAP - material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; - #endif - vec3 pos = vWorldPosition; - vec3 v = normalize( cameraPosition - pos ); - vec3 n = inverseTransformDirection( normal, viewMatrix ); - vec4 transmitted = getIBLVolumeRefraction( - n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90, - 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`,TO=`#ifdef USE_TRANSMISSION - uniform float transmission; - uniform float thickness; - uniform float attenuationDistance; - uniform vec3 attenuationColor; - #ifdef USE_TRANSMISSIONMAP - uniform sampler2D transmissionMap; - #endif - #ifdef USE_THICKNESSMAP - uniform sampler2D thicknessMap; - #endif - uniform vec2 transmissionSamplerSize; - uniform sampler2D transmissionSamplerMap; - uniform mat4 modelMatrix; - uniform mat4 projectionMatrix; - varying vec3 vWorldPosition; - float w0( float a ) { - return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); - } - float w1( float a ) { - return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); - } - float w2( float a ){ - return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); - } - float w3( float a ) { - return ( 1.0 / 6.0 ) * ( a * a * a ); - } - float g0( float a ) { - return w0( a ) + w1( a ); - } - float g1( float a ) { - return w2( a ) + w3( a ); - } - float h0( float a ) { - return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); - } - float h1( float a ) { - return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); - } - vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { - uv = uv * texelSize.zw + 0.5; - vec2 iuv = floor( uv ); - vec2 fuv = fract( uv ); - float g0x = g0( fuv.x ); - float g1x = g1( fuv.x ); - float h0x = h0( fuv.x ); - float h1x = h1( fuv.x ); - float h0y = h0( fuv.y ); - float h1y = h1( fuv.y ); - vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; - vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; - vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; - vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; - return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + - g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); - } - vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { - vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); - vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); - vec2 fLodSizeInv = 1.0 / fLodSize; - vec2 cLodSizeInv = 1.0 / cLodSize; - vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); - vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); - return mix( fSample, cSample, fract( lod ) ); - } - vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { - vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); - vec3 modelScale; - modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); - modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); - modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); - return normalize( refractionVector ) * thickness * modelScale; - } - float applyIorToRoughness( const in float roughness, const in float ior ) { - return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); - } - vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { - float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); - return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); - } - vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { - if ( isinf( attenuationDistance ) ) { - return vec3( 1.0 ); - } else { - vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; - vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; - } - } - 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 dispersion, const in float ior, const in float thickness, - const in vec3 attenuationColor, const in float 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`,BO=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) - varying vec2 vUv; -#endif -#ifdef USE_MAP - varying vec2 vMapUv; -#endif -#ifdef USE_ALPHAMAP - varying vec2 vAlphaMapUv; -#endif -#ifdef USE_LIGHTMAP - varying vec2 vLightMapUv; -#endif -#ifdef USE_AOMAP - varying vec2 vAoMapUv; -#endif -#ifdef USE_BUMPMAP - varying vec2 vBumpMapUv; -#endif -#ifdef USE_NORMALMAP - varying vec2 vNormalMapUv; -#endif -#ifdef USE_EMISSIVEMAP - varying vec2 vEmissiveMapUv; -#endif -#ifdef USE_METALNESSMAP - varying vec2 vMetalnessMapUv; -#endif -#ifdef USE_ROUGHNESSMAP - varying vec2 vRoughnessMapUv; -#endif -#ifdef USE_ANISOTROPYMAP - varying vec2 vAnisotropyMapUv; -#endif -#ifdef USE_CLEARCOATMAP - varying vec2 vClearcoatMapUv; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - varying vec2 vClearcoatNormalMapUv; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - varying vec2 vClearcoatRoughnessMapUv; -#endif -#ifdef USE_IRIDESCENCEMAP - varying vec2 vIridescenceMapUv; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - varying vec2 vIridescenceThicknessMapUv; -#endif -#ifdef USE_SHEEN_COLORMAP - varying vec2 vSheenColorMapUv; -#endif -#ifdef USE_SHEEN_ROUGHNESSMAP - varying vec2 vSheenRoughnessMapUv; -#endif -#ifdef USE_SPECULARMAP - varying vec2 vSpecularMapUv; -#endif -#ifdef USE_SPECULAR_COLORMAP - varying vec2 vSpecularColorMapUv; -#endif -#ifdef USE_SPECULAR_INTENSITYMAP - varying vec2 vSpecularIntensityMapUv; -#endif -#ifdef USE_TRANSMISSIONMAP - uniform mat3 transmissionMapTransform; - varying vec2 vTransmissionMapUv; -#endif -#ifdef USE_THICKNESSMAP - uniform mat3 thicknessMapTransform; - varying vec2 vThicknessMapUv; -#endif`,RO=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) - varying vec2 vUv; -#endif -#ifdef USE_MAP - uniform mat3 mapTransform; - varying vec2 vMapUv; -#endif -#ifdef USE_ALPHAMAP - uniform mat3 alphaMapTransform; - varying vec2 vAlphaMapUv; -#endif -#ifdef USE_LIGHTMAP - uniform mat3 lightMapTransform; - varying vec2 vLightMapUv; -#endif -#ifdef USE_AOMAP - uniform mat3 aoMapTransform; - varying vec2 vAoMapUv; -#endif -#ifdef USE_BUMPMAP - uniform mat3 bumpMapTransform; - varying vec2 vBumpMapUv; -#endif -#ifdef USE_NORMALMAP - uniform mat3 normalMapTransform; - varying vec2 vNormalMapUv; -#endif -#ifdef USE_DISPLACEMENTMAP - uniform mat3 displacementMapTransform; - varying vec2 vDisplacementMapUv; -#endif -#ifdef USE_EMISSIVEMAP - uniform mat3 emissiveMapTransform; - varying vec2 vEmissiveMapUv; -#endif -#ifdef USE_METALNESSMAP - uniform mat3 metalnessMapTransform; - varying vec2 vMetalnessMapUv; -#endif -#ifdef USE_ROUGHNESSMAP - uniform mat3 roughnessMapTransform; - varying vec2 vRoughnessMapUv; -#endif -#ifdef USE_ANISOTROPYMAP - uniform mat3 anisotropyMapTransform; - varying vec2 vAnisotropyMapUv; -#endif -#ifdef USE_CLEARCOATMAP - uniform mat3 clearcoatMapTransform; - varying vec2 vClearcoatMapUv; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - uniform mat3 clearcoatNormalMapTransform; - varying vec2 vClearcoatNormalMapUv; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - uniform mat3 clearcoatRoughnessMapTransform; - varying vec2 vClearcoatRoughnessMapUv; -#endif -#ifdef USE_SHEEN_COLORMAP - uniform mat3 sheenColorMapTransform; - varying vec2 vSheenColorMapUv; -#endif -#ifdef USE_SHEEN_ROUGHNESSMAP - uniform mat3 sheenRoughnessMapTransform; - varying vec2 vSheenRoughnessMapUv; -#endif -#ifdef USE_IRIDESCENCEMAP - uniform mat3 iridescenceMapTransform; - varying vec2 vIridescenceMapUv; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - uniform mat3 iridescenceThicknessMapTransform; - varying vec2 vIridescenceThicknessMapUv; -#endif -#ifdef USE_SPECULARMAP - uniform mat3 specularMapTransform; - varying vec2 vSpecularMapUv; -#endif -#ifdef USE_SPECULAR_COLORMAP - uniform mat3 specularColorMapTransform; - varying vec2 vSpecularColorMapUv; -#endif -#ifdef USE_SPECULAR_INTENSITYMAP - uniform mat3 specularIntensityMapTransform; - varying vec2 vSpecularIntensityMapUv; -#endif -#ifdef USE_TRANSMISSIONMAP - uniform mat3 transmissionMapTransform; - varying vec2 vTransmissionMapUv; -#endif -#ifdef USE_THICKNESSMAP - uniform mat3 thicknessMapTransform; - varying vec2 vThicknessMapUv; -#endif`,IO=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) - vUv = vec3( uv, 1 ).xy; -#endif -#ifdef USE_MAP - vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; -#endif -#ifdef USE_ALPHAMAP - vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_LIGHTMAP - vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_AOMAP - vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_BUMPMAP - vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_NORMALMAP - vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_DISPLACEMENTMAP - vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_EMISSIVEMAP - vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_METALNESSMAP - vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_ROUGHNESSMAP - vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_ANISOTROPYMAP - vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_CLEARCOATMAP - vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_IRIDESCENCEMAP - vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_IRIDESCENCE_THICKNESSMAP - vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SHEEN_COLORMAP - vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SHEEN_ROUGHNESSMAP - vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SPECULARMAP - vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SPECULAR_COLORMAP - vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_SPECULAR_INTENSITYMAP - vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_TRANSMISSIONMAP - vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; -#endif -#ifdef USE_THICKNESSMAP - vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,NO=`#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; - #endif - #ifdef USE_INSTANCING - worldPosition = instanceMatrix * worldPosition; - #endif - worldPosition = modelMatrix * worldPosition; -#endif`;const Vo={alphahash_fragment:PL,alphahash_pars_fragment:LL,alphamap_fragment:UL,alphamap_pars_fragment:OL,alphatest_fragment:DL,alphatest_pars_fragment:kL,aomap_fragment:VL,aomap_pars_fragment:zL,batching_pars_vertex:GL,batching_vertex:HL,begin_vertex:QL,beginnormal_vertex:WL,bsdfs:ZL,iridescence_fragment:KL,bumpmap_pars_fragment:$L,clipping_planes_fragment:XL,clipping_planes_pars_fragment:jL,clipping_planes_pars_vertex:YL,clipping_planes_vertex:qL,color_fragment:JL,color_pars_fragment:eU,color_pars_vertex:tU,color_vertex:nU,common:rU,cube_uv_reflection_fragment:iU,defaultnormal_vertex:sU,displacementmap_pars_vertex:aU,displacementmap_vertex:oU,emissivemap_fragment:lU,emissivemap_pars_fragment:uU,colorspace_fragment:cU,colorspace_pars_fragment:hU,envmap_fragment:dU,envmap_common_pars_fragment:fU,envmap_pars_fragment:AU,envmap_pars_vertex:pU,envmap_physical_pars_fragment:EU,envmap_vertex:gU,fog_vertex:mU,fog_pars_vertex:vU,fog_fragment:yU,fog_pars_fragment:xU,gradientmap_pars_fragment:bU,lightmap_pars_fragment:_U,lights_lambert_fragment:wU,lights_lambert_pars_fragment:SU,lights_pars_begin:MU,lights_toon_fragment:CU,lights_toon_pars_fragment:TU,lights_phong_fragment:BU,lights_phong_pars_fragment:RU,lights_physical_fragment:IU,lights_physical_pars_fragment:NU,lights_fragment_begin:FU,lights_fragment_maps:PU,lights_fragment_end:LU,logdepthbuf_fragment:UU,logdepthbuf_pars_fragment:OU,logdepthbuf_pars_vertex:DU,logdepthbuf_vertex:kU,map_fragment:VU,map_pars_fragment:zU,map_particle_fragment:GU,map_particle_pars_fragment:HU,metalnessmap_fragment:QU,metalnessmap_pars_fragment:WU,morphinstance_vertex:ZU,morphcolor_vertex:KU,morphnormal_vertex:$U,morphtarget_pars_vertex:XU,morphtarget_vertex:jU,normal_fragment_begin:YU,normal_fragment_maps:qU,normal_pars_fragment:JU,normal_pars_vertex:eO,normal_vertex:tO,normalmap_pars_fragment:nO,clearcoat_normal_fragment_begin:rO,clearcoat_normal_fragment_maps:iO,clearcoat_pars_fragment:sO,iridescence_pars_fragment:aO,opaque_fragment:oO,packing:lO,premultiplied_alpha_fragment:uO,project_vertex:cO,dithering_fragment:hO,dithering_pars_fragment:dO,roughnessmap_fragment:fO,roughnessmap_pars_fragment:AO,shadowmap_pars_fragment:pO,shadowmap_pars_vertex:gO,shadowmap_vertex:mO,shadowmask_pars_fragment:vO,skinbase_vertex:yO,skinning_pars_vertex:xO,skinning_vertex:bO,skinnormal_vertex:_O,specularmap_fragment:wO,specularmap_pars_fragment:SO,tonemapping_fragment:MO,tonemapping_pars_fragment:EO,transmission_fragment:CO,transmission_pars_fragment:TO,uv_pars_fragment:BO,uv_pars_vertex:RO,uv_vertex:IO,worldpos_vertex:NO,background_vert:`varying vec2 vUv; -uniform mat3 uvTransform; -void main() { - vUv = ( uvTransform * vec3( uv, 1 ) ).xy; - gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,background_frag:`uniform sampler2D t2D; -uniform float backgroundIntensity; -varying vec2 vUv; -void main() { - vec4 texColor = texture2D( t2D, vUv ); - #ifdef DECODE_VIDEO_TEXTURE - texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); - #endif - texColor.rgb *= backgroundIntensity; - gl_FragColor = texColor; - #include - #include -}`,backgroundCube_vert:`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include - gl_Position.z = gl_Position.w; -}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE - uniform samplerCube envMap; -#elif defined( ENVMAP_TYPE_CUBE_UV ) - uniform sampler2D envMap; -#endif -uniform float flipEnvMap; -uniform float backgroundBlurriness; -uniform float backgroundIntensity; -uniform mat3 backgroundRotation; -varying vec3 vWorldDirection; -#include -void main() { - #ifdef ENVMAP_TYPE_CUBE - vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); - #elif defined( ENVMAP_TYPE_CUBE_UV ) - vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); - #else - vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); - #endif - texColor.rgb *= backgroundIntensity; - gl_FragColor = texColor; - #include - #include -}`,cube_vert:`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include - gl_Position.z = gl_Position.w; -}`,cube_frag:`uniform samplerCube tCube; -uniform float tFlip; -uniform float opacity; -varying vec3 vWorldDirection; -void main() { - vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); - gl_FragColor = texColor; - gl_FragColor.a *= opacity; - #include - #include -}`,depth_vert:`#include -#include -#include -#include -#include -#include -#include -#include -varying vec2 vHighPrecisionZW; -void main() { - #include - #include - #include - #include - #ifdef USE_DISPLACEMENTMAP - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - vHighPrecisionZW = gl_Position.zw; -}`,depth_frag:`#if DEPTH_PACKING == 3200 - uniform float opacity; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -varying vec2 vHighPrecisionZW; -void main() { - vec4 diffuseColor = vec4( 1.0 ); - #include - #if DEPTH_PACKING == 3200 - diffuseColor.a = opacity; - #endif - #include - #include - #include - #include - #include - #ifdef USE_REVERSED_DEPTH_BUFFER - float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ]; - #else - float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5; - #endif - #if DEPTH_PACKING == 3200 - 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 -}`,distance_vert:`#define DISTANCE -varying vec3 vWorldPosition; -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #ifdef USE_DISPLACEMENTMAP - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - vWorldPosition = worldPosition.xyz; -}`,distance_frag:`#define DISTANCE -uniform vec3 referencePosition; -uniform float nearDistance; -uniform float farDistance; -varying vec3 vWorldPosition; -#include -#include -#include -#include -#include -#include -#include -void main () { - vec4 diffuseColor = vec4( 1.0 ); - #include - #include - #include - #include - #include - float dist = length( vWorldPosition - referencePosition ); - dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); - dist = saturate( dist ); - gl_FragColor = vec4( dist, 0.0, 0.0, 1.0 ); -}`,equirect_vert:`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include -}`,equirect_frag:`uniform sampler2D tEquirect; -varying vec3 vWorldDirection; -#include -void main() { - vec3 direction = normalize( vWorldDirection ); - vec2 sampleUV = equirectUv( direction ); - gl_FragColor = texture2D( tEquirect, sampleUV ); - #include - #include -}`,linedashed_vert:`uniform float scale; -attribute float lineDistance; -varying float vLineDistance; -#include -#include -#include -#include -#include -#include -#include -void main() { - vLineDistance = scale * lineDistance; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,linedashed_frag:`uniform vec3 diffuse; -uniform float opacity; -uniform float dashSize; -uniform float totalSize; -varying float vLineDistance; -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - if ( mod( vLineDistance, totalSize ) > dashSize ) { - discard; - } - vec3 outgoingLight = vec3( 0.0 ); - #include - #include - #include - outgoingLight = diffuseColor.rgb; - #include - #include - #include - #include - #include -}`,meshbasic_vert:`#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) - #include - #include - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,meshbasic_frag:`uniform vec3 diffuse; -uniform float opacity; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - #include - #include - #include - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - #ifdef USE_LIGHTMAP - vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); - reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; - #else - reflectedLight.indirectDiffuse += vec3( 1.0 ); - #endif - #include - reflectedLight.indirectDiffuse *= diffuseColor.rgb; - vec3 outgoingLight = reflectedLight.indirectDiffuse; - #include - #include - #include - #include - #include - #include - #include -}`,meshlambert_vert:`#define LAMBERT -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include - #include -}`,meshlambert_frag:`#define LAMBERT -uniform vec3 diffuse; -uniform vec3 emissive; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; - #include - #include - #include - #include - #include - #include - #include -}`,meshmatcap_vert:`#define MATCAP -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; -}`,meshmatcap_frag:`#define MATCAP -uniform vec3 diffuse; -uniform float opacity; -uniform sampler2D matcap; -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 viewDir = normalize( vViewPosition ); - vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); - vec3 y = cross( viewDir, x ); - vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; - #ifdef USE_MATCAP - vec4 matcapColor = texture2D( matcap, uv ); - #else - vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); - #endif - vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; - #include - #include - #include - #include - #include - #include -}`,meshnormal_vert:`#define NORMAL -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) - varying vec3 vViewPosition; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) - vViewPosition = - mvPosition.xyz; -#endif -}`,meshnormal_frag:`#define NORMAL -uniform float opacity; -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) - varying vec3 vViewPosition; -#endif -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); - #include - #include - #include - #include - gl_FragColor = vec4( normalize( normal ) * 0.5 + 0.5, diffuseColor.a ); - #ifdef OPAQUE - gl_FragColor.a = 1.0; - #endif -}`,meshphong_vert:`#define PHONG -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include - #include -}`,meshphong_frag:`#define PHONG -uniform vec3 diffuse; -uniform vec3 emissive; -uniform vec3 specular; -uniform float shininess; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; - #include - #include - #include - #include - #include - #include - #include -}`,meshphysical_vert:`#define STANDARD -varying vec3 vViewPosition; -#ifdef USE_TRANSMISSION - varying vec3 vWorldPosition; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include -#ifdef USE_TRANSMISSION - vWorldPosition = worldPosition.xyz; -#endif -}`,meshphysical_frag:`#define STANDARD -#ifdef PHYSICAL - #define IOR - #define USE_SPECULAR -#endif -uniform vec3 diffuse; -uniform vec3 emissive; -uniform float roughness; -uniform float metalness; -uniform float opacity; -#ifdef IOR - uniform float ior; -#endif -#ifdef USE_SPECULAR - uniform float specularIntensity; - uniform vec3 specularColor; - #ifdef USE_SPECULAR_COLORMAP - uniform sampler2D specularColorMap; - #endif - #ifdef USE_SPECULAR_INTENSITYMAP - uniform sampler2D specularIntensityMap; - #endif -#endif -#ifdef USE_CLEARCOAT - uniform float clearcoat; - uniform float clearcoatRoughness; -#endif -#ifdef USE_DISPERSION - uniform float dispersion; -#endif -#ifdef USE_IRIDESCENCE - uniform float iridescence; - uniform float iridescenceIOR; - uniform float iridescenceThicknessMinimum; - uniform float iridescenceThicknessMaximum; -#endif -#ifdef USE_SHEEN - uniform vec3 sheenColor; - uniform float sheenRoughness; - #ifdef USE_SHEEN_COLORMAP - uniform sampler2D sheenColorMap; - #endif - #ifdef USE_SHEEN_ROUGHNESSMAP - uniform sampler2D sheenRoughnessMap; - #endif -#endif -#ifdef USE_ANISOTROPY - uniform vec2 anisotropyVector; - #ifdef USE_ANISOTROPYMAP - uniform sampler2D anisotropyMap; - #endif -#endif -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; - vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; - #include - vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; - #ifdef USE_SHEEN - - outgoingLight = outgoingLight + sheenSpecularDirect + sheenSpecularIndirect; - - #endif - #ifdef USE_CLEARCOAT - float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); - vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); - outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; - #endif - #include - #include - #include - #include - #include - #include -}`,meshtoon_vert:`#define TOON -varying vec3 vViewPosition; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include -}`,meshtoon_frag:`#define TOON -uniform vec3 diffuse; -uniform vec3 emissive; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; - #include - #include - #include - #include - #include - #include -}`,points_vert:`uniform float size; -uniform float scale; -#include -#include -#include -#include -#include -#include -#ifdef USE_POINTS_UV - varying vec2 vUv; - uniform mat3 uvTransform; -#endif -void main() { - #ifdef USE_POINTS_UV - vUv = ( uvTransform * vec3( uv, 1 ) ).xy; - #endif - #include - #include - #include - #include - #include - #include - gl_PointSize = size; - #ifdef USE_SIZEATTENUATION - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); - #endif - #include - #include - #include - #include -}`,points_frag:`uniform vec3 diffuse; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - vec3 outgoingLight = vec3( 0.0 ); - #include - #include - #include - #include - #include - outgoingLight = diffuseColor.rgb; - #include - #include - #include - #include - #include -}`,shadow_vert:`#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,shadow_frag:`uniform vec3 color; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); - #include - #include - #include -}`,sprite_vert:`uniform float rotation; -uniform vec2 center; -#include -#include -#include -#include -#include -void main() { - #include - 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; - #endif - vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; - vec2 rotatedPosition; - rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; - rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; - mvPosition.xy += rotatedPosition; - gl_Position = projectionMatrix * mvPosition; - #include - #include - #include -}`,sprite_frag:`uniform vec3 diffuse; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - vec3 outgoingLight = vec3( 0.0 ); - #include - #include - #include - #include - #include - outgoingLight = diffuseColor.rgb; - #include - #include - #include - #include -}`},Js={common:{diffuse:{value:new Wr(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new pn},alphaMap:{value:null},alphaMapTransform:{value:new pn},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new pn}},envmap:{envMap:{value:null},envMapRotation:{value:new pn},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new pn}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new pn}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new pn},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new pn},normalScale:{value:new ce(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new pn},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new pn}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new pn}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new pn}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Wr(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 Wr(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new pn},alphaTest:{value:0},uvTransform:{value:new pn}},sprite:{diffuse:{value:new Wr(16777215)},opacity:{value:1},center:{value:new ce(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new pn},alphaMap:{value:null},alphaMapTransform:{value:new pn},alphaTest:{value:0}}},Jp={basic:{uniforms:Jl([Js.common,Js.specularmap,Js.envmap,Js.aomap,Js.lightmap,Js.fog]),vertexShader:Vo.meshbasic_vert,fragmentShader:Vo.meshbasic_frag},lambert:{uniforms:Jl([Js.common,Js.specularmap,Js.envmap,Js.aomap,Js.lightmap,Js.emissivemap,Js.bumpmap,Js.normalmap,Js.displacementmap,Js.fog,Js.lights,{emissive:{value:new Wr(0)}}]),vertexShader:Vo.meshlambert_vert,fragmentShader:Vo.meshlambert_frag},phong:{uniforms:Jl([Js.common,Js.specularmap,Js.envmap,Js.aomap,Js.lightmap,Js.emissivemap,Js.bumpmap,Js.normalmap,Js.displacementmap,Js.fog,Js.lights,{emissive:{value:new Wr(0)},specular:{value:new Wr(1118481)},shininess:{value:30}}]),vertexShader:Vo.meshphong_vert,fragmentShader:Vo.meshphong_frag},standard:{uniforms:Jl([Js.common,Js.envmap,Js.aomap,Js.lightmap,Js.emissivemap,Js.bumpmap,Js.normalmap,Js.displacementmap,Js.roughnessmap,Js.metalnessmap,Js.fog,Js.lights,{emissive:{value:new Wr(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Vo.meshphysical_vert,fragmentShader:Vo.meshphysical_frag},toon:{uniforms:Jl([Js.common,Js.aomap,Js.lightmap,Js.emissivemap,Js.bumpmap,Js.normalmap,Js.displacementmap,Js.gradientmap,Js.fog,Js.lights,{emissive:{value:new Wr(0)}}]),vertexShader:Vo.meshtoon_vert,fragmentShader:Vo.meshtoon_frag},matcap:{uniforms:Jl([Js.common,Js.bumpmap,Js.normalmap,Js.displacementmap,Js.fog,{matcap:{value:null}}]),vertexShader:Vo.meshmatcap_vert,fragmentShader:Vo.meshmatcap_frag},points:{uniforms:Jl([Js.points,Js.fog]),vertexShader:Vo.points_vert,fragmentShader:Vo.points_frag},dashed:{uniforms:Jl([Js.common,Js.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Vo.linedashed_vert,fragmentShader:Vo.linedashed_frag},depth:{uniforms:Jl([Js.common,Js.displacementmap]),vertexShader:Vo.depth_vert,fragmentShader:Vo.depth_frag},normal:{uniforms:Jl([Js.common,Js.bumpmap,Js.normalmap,Js.displacementmap,{opacity:{value:1}}]),vertexShader:Vo.meshnormal_vert,fragmentShader:Vo.meshnormal_frag},sprite:{uniforms:Jl([Js.sprite,Js.fog]),vertexShader:Vo.sprite_vert,fragmentShader:Vo.sprite_frag},background:{uniforms:{uvTransform:{value:new pn},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Vo.background_vert,fragmentShader:Vo.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new pn}},vertexShader:Vo.backgroundCube_vert,fragmentShader:Vo.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Vo.cube_vert,fragmentShader:Vo.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Vo.equirect_vert,fragmentShader:Vo.equirect_frag},distance:{uniforms:Jl([Js.common,Js.displacementmap,{referencePosition:{value:new le},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Vo.distance_vert,fragmentShader:Vo.distance_frag},shadow:{uniforms:Jl([Js.lights,Js.fog,{color:{value:new Wr(0)},opacity:{value:1}}]),vertexShader:Vo.shadow_vert,fragmentShader:Vo.shadow_frag}};Jp.physical={uniforms:Jl([Jp.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new pn},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new pn},clearcoatNormalScale:{value:new ce(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new pn},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new pn},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new pn},sheen:{value:0},sheenColor:{value:new Wr(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new pn},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new pn},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new pn},transmissionSamplerSize:{value:new ce},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new pn},attenuationDistance:{value:0},attenuationColor:{value:new Wr(0)},specularColor:{value:new Wr(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new pn},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new pn},anisotropyVector:{value:new ce},anisotropyMap:{value:null},anisotropyMapTransform:{value:new pn}}]),vertexShader:Vo.meshphysical_vert,fragmentShader:Vo.meshphysical_frag};const ob={r:0,b:0,g:0},i0=new Ua,FO=new di;function PO(s,e,t,n,i,a,o){const u=new Wr(0);let c=a===!0?0:1,d,g,v=null,M=0,B=null;function I(Ce){let ke=Ce.isScene===!0?Ce.background:null;return ke&&ke.isTexture&&(ke=(Ce.backgroundBlurriness>0?t:e).get(ke)),ke}function ne(Ce){let ke=!1;const nt=I(Ce);nt===null?q(u,c):nt&&nt.isColor&&(q(nt,1),ke=!0);const Ye=s.xr.getEnvironmentBlendMode();Ye==="additive"?n.buffers.color.setClear(0,0,0,1,o):Ye==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,o),(s.autoClear||ke)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),s.clear(s.autoClearColor,s.autoClearDepth,s.autoClearStencil))}function ee(Ce,ke){const nt=I(ke);nt&&(nt.isCubeTexture||nt.mapping===_t)?(g===void 0&&(g=new Il(new bd(1,1,1),new nh({name:"BackgroundCubeMaterial",uniforms:jf(Jp.backgroundCube.uniforms),vertexShader:Jp.backgroundCube.vertexShader,fragmentShader:Jp.backgroundCube.fragmentShader,side:de,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),g.geometry.deleteAttribute("normal"),g.geometry.deleteAttribute("uv"),g.onBeforeRender=function(Ye,ht,Rt){this.matrixWorld.copyPosition(Rt.matrixWorld)},Object.defineProperty(g.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(g)),i0.copy(ke.backgroundRotation),i0.x*=-1,i0.y*=-1,i0.z*=-1,nt.isCubeTexture&&nt.isRenderTargetTexture===!1&&(i0.y*=-1,i0.z*=-1),g.material.uniforms.envMap.value=nt,g.material.uniforms.flipEnvMap.value=nt.isCubeTexture&&nt.isRenderTargetTexture===!1?-1:1,g.material.uniforms.backgroundBlurriness.value=ke.backgroundBlurriness,g.material.uniforms.backgroundIntensity.value=ke.backgroundIntensity,g.material.uniforms.backgroundRotation.value.setFromMatrix4(FO.makeRotationFromEuler(i0)),g.material.toneMapped=xr.getTransfer(nt.colorSpace)!==ws,(v!==nt||M!==nt.version||B!==s.toneMapping)&&(g.material.needsUpdate=!0,v=nt,M=nt.version,B=s.toneMapping),g.layers.enableAll(),Ce.unshift(g,g.geometry,g.material,0,0,null)):nt&&nt.isTexture&&(d===void 0&&(d=new Il(new Tc(2,2),new nh({name:"BackgroundMaterial",uniforms:jf(Jp.background.uniforms),vertexShader:Jp.background.vertexShader,fragmentShader:Jp.background.fragmentShader,side:j,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),d.geometry.deleteAttribute("normal"),Object.defineProperty(d.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(d)),d.material.uniforms.t2D.value=nt,d.material.uniforms.backgroundIntensity.value=ke.backgroundIntensity,d.material.toneMapped=xr.getTransfer(nt.colorSpace)!==ws,nt.matrixAutoUpdate===!0&&nt.updateMatrix(),d.material.uniforms.uvTransform.value.copy(nt.matrix),(v!==nt||M!==nt.version||B!==s.toneMapping)&&(d.material.needsUpdate=!0,v=nt,M=nt.version,B=s.toneMapping),d.layers.enableAll(),Ce.unshift(d,d.geometry,d.material,0,0,null))}function q(Ce,ke){Ce.getRGB(ob,wg(s)),n.buffers.color.setClear(ob.r,ob.g,ob.b,ke,o)}function ye(){g!==void 0&&(g.geometry.dispose(),g.material.dispose(),g=void 0),d!==void 0&&(d.geometry.dispose(),d.material.dispose(),d=void 0)}return{getClearColor:function(){return u},setClearColor:function(Ce,ke=1){u.set(Ce),c=ke,q(u,c)},getClearAlpha:function(){return c},setClearAlpha:function(Ce){c=Ce,q(u,c)},render:ne,addToRenderList:ee,dispose:ye}}function LO(s,e){const t=s.getParameter(s.MAX_VERTEX_ATTRIBS),n={},i=M(null);let a=i,o=!1;function u(pt,xn,cr,pr,Br){let zr=!1;const Dr=v(pr,cr,xn);a!==Dr&&(a=Dr,d(a.object)),zr=B(pt,pr,cr,Br),zr&&I(pt,pr,cr,Br),Br!==null&&e.update(Br,s.ELEMENT_ARRAY_BUFFER),(zr||o)&&(o=!1,ke(pt,xn,cr,pr),Br!==null&&s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,e.get(Br).buffer))}function c(){return s.createVertexArray()}function d(pt){return s.bindVertexArray(pt)}function g(pt){return s.deleteVertexArray(pt)}function v(pt,xn,cr){const pr=cr.wireframe===!0;let Br=n[pt.id];Br===void 0&&(Br={},n[pt.id]=Br);let zr=Br[xn.id];zr===void 0&&(zr={},Br[xn.id]=zr);let Dr=zr[pr];return Dr===void 0&&(Dr=M(c()),zr[pr]=Dr),Dr}function M(pt){const xn=[],cr=[],pr=[];for(let Br=0;Br=0){const As=Br[Ti];let Xr=zr[Ti];if(Xr===void 0&&(Ti==="instanceMatrix"&&pt.instanceMatrix&&(Xr=pt.instanceMatrix),Ti==="instanceColor"&&pt.instanceColor&&(Xr=pt.instanceColor)),As===void 0||As.attribute!==Xr||Xr&&As.data!==Xr.data)return!0;Dr++}return a.attributesNum!==Dr||a.index!==pr}function I(pt,xn,cr,pr){const Br={},zr=xn.attributes;let Dr=0;const Zr=cr.getAttributes();for(const Ti in Zr)if(Zr[Ti].location>=0){let As=zr[Ti];As===void 0&&(Ti==="instanceMatrix"&&pt.instanceMatrix&&(As=pt.instanceMatrix),Ti==="instanceColor"&&pt.instanceColor&&(As=pt.instanceColor));const Xr={};Xr.attribute=As,As&&As.data&&(Xr.data=As.data),Br[Ti]=Xr,Dr++}a.attributes=Br,a.attributesNum=Dr,a.index=pr}function ne(){const pt=a.newAttributes;for(let xn=0,cr=pt.length;xn=0){let ds=Br[Zr];if(ds===void 0&&(Zr==="instanceMatrix"&&pt.instanceMatrix&&(ds=pt.instanceMatrix),Zr==="instanceColor"&&pt.instanceColor&&(ds=pt.instanceColor)),ds!==void 0){const As=ds.normalized,Xr=ds.itemSize,Yi=e.get(ds);if(Yi===void 0)continue;const ps=Yi.buffer,Xa=Yi.type,Pi=Yi.bytesPerElement,Nr=Xa===s.INT||Xa===s.UNSIGNED_INT||ds.gpuType===Xt;if(ds.isInterleavedBufferAttribute){const Yr=ds.data,cs=Yr.stride,oa=ds.offset;if(Yr.isInstancedInterleavedBuffer){for(let Ms=0;Ms0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT).precision>0)return"highp";ht="mediump"}return ht==="mediump"&&s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.MEDIUM_FLOAT).precision>0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let d=t.precision!==void 0?t.precision:"highp";const g=c(d);g!==d&&(Lr("WebGLRenderer:",d,"not supported, using",g,"instead."),d=g);const v=t.logarithmicDepthBuffer===!0,M=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),B=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),I=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),ne=s.getParameter(s.MAX_TEXTURE_SIZE),ee=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),q=s.getParameter(s.MAX_VERTEX_ATTRIBS),ye=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),Ce=s.getParameter(s.MAX_VARYING_VECTORS),ke=s.getParameter(s.MAX_FRAGMENT_UNIFORM_VECTORS),nt=s.getParameter(s.MAX_SAMPLES),Ye=s.getParameter(s.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:a,getMaxPrecision:c,textureFormatReadable:o,textureTypeReadable:u,precision:d,logarithmicDepthBuffer:v,reversedDepthBuffer:M,maxTextures:B,maxVertexTextures:I,maxTextureSize:ne,maxCubemapSize:ee,maxAttributes:q,maxVertexUniforms:ye,maxVaryings:Ce,maxFragmentUniforms:ke,maxSamples:nt,samples:Ye}}function DO(s){const e=this;let t=null,n=0,i=!1,a=!1;const o=new Ec,u=new pn,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(v,M){const B=v.length!==0||M||n!==0||i;return i=M,n=v.length,B},this.beginShadows=function(){a=!0,g(null)},this.endShadows=function(){a=!1},this.setGlobalState=function(v,M){t=g(v,M,0)},this.setState=function(v,M,B){const I=v.clippingPlanes,ne=v.clipIntersection,ee=v.clipShadows,q=s.get(v);if(!i||I===null||I.length===0||a&&!ee)a?g(null):d();else{const ye=a?0:n,Ce=ye*4;let ke=q.clippingState||null;c.value=ke,ke=g(I,M,Ce,B);for(let nt=0;nt!==Ce;++nt)ke[nt]=t[nt];q.clippingState=ke,this.numIntersection=ne?this.numPlanes:0,this.numPlanes+=ye}};function d(){c.value!==t&&(c.value=t,c.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function g(v,M,B,I){const ne=v!==null?v.length:0;let ee=null;if(ne!==0){if(ee=c.value,I!==!0||ee===null){const q=B+ne*4,ye=M.matrixWorldInverse;u.getNormalMatrix(ye),(ee===null||ee.length0){const d=new Mc(c.height);return d.fromEquirectangularTexture(s,o),e.set(o,d),o.addEventListener("dispose",i),t(d.texture,o.mapping)}else return null}}return o}function i(o){const u=o.target;u.removeEventListener("dispose",i);const c=e.get(u);c!==void 0&&(e.delete(u),c.dispose())}function a(){e=new WeakMap}return{get:n,dispose:a}}const Bm=4,_C=[.125,.215,.35,.446,.526,.582],s0=20,VO=256,wy=new Pg,wC=new Wr;let Yw=null,qw=0,Jw=0,e1=!1;const zO=new le;class SC{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,i=100,a={}){const{size:o=256,position:u=zO}=a;Yw=this._renderer.getRenderTarget(),qw=this._renderer.getActiveCubeFace(),Jw=this._renderer.getActiveMipmapLevel(),e1=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(o);const c=this._allocateTargets();return c.depthBuffer=!0,this._sceneToCubeUV(e,n,i,c,u),t>0&&this._blur(c,0,0,t),this._applyPMREM(c),this._cleanup(c),c}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=CC(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=EC(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.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._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?nt:0,nt,nt),v.setRenderTarget(i),q&&v.render(ne,c),v.render(e,c)}v.toneMapping=B,v.autoClear=M,e.background=ye}_textureToCubeUV(e,t){const n=this._renderer,i=e.mapping===it||e.mapping===wt;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=CC()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=EC());const a=i?this._cubemapMaterial:this._equirectMaterial,o=this._lodMeshes[0];o.material=a;const u=a.uniforms;u.envMap.value=e;const c=this._cubeSize;cv(t,0,0,3*c,2*c),n.setRenderTarget(t),n.render(o,wy)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const i=this._lodMeshes.length;for(let a=1;aI-Bm?n-I+Bm:0),q=4*(this._cubeSize-ne);c.envMap.value=e.texture,c.roughness.value=B,c.mipInt.value=I-t,cv(a,ee,q,3*ne,2*ne),i.setRenderTarget(a),i.render(u,wy),c.envMap.value=a.texture,c.roughness.value=0,c.mipInt.value=I-n,cv(e,ee,q,3*ne,2*ne),i.setRenderTarget(e),i.render(u,wy)}_blur(e,t,n,i,a){const o=this._pingPongRenderTarget;this._halfBlur(e,o,t,n,i,"latitudinal",a),this._halfBlur(o,e,n,n,i,"longitudinal",a)}_halfBlur(e,t,n,i,a,o,u){const c=this._renderer,d=this._blurMaterial;o!=="latitudinal"&&o!=="longitudinal"&&Gr("blur direction must be either latitudinal or longitudinal!");const g=3,v=this._lodMeshes[i];v.material=d;const M=d.uniforms,B=this._sizeLods[n]-1,I=isFinite(a)?Math.PI/(2*B):2*Math.PI/(2*s0-1),ne=a/I,ee=isFinite(a)?1+Math.floor(g*ne):s0;ee>s0&&Lr(`sigmaRadians, ${a}, is too large and will clip, as it requested ${ee} samples when the maximum is set to ${s0}`);const q=[];let ye=0;for(let ht=0;htCe-Bm?i-Ce+Bm:0),Ye=4*(this._cubeSize-ke);cv(t,nt,Ye,3*ke,2*ke),c.setRenderTarget(t),c.render(v,wy)}}function GO(s){const e=[],t=[],n=[];let i=s;const a=s-Bm+1+_C.length;for(let o=0;os-Bm?c=_C[o-s+Bm-1]:o===0&&(c=0),t.push(c);const d=1/(u-2),g=-d,v=1+d,M=[g,g,v,g,v,v,g,g,v,v,g,v],B=6,I=6,ne=3,ee=2,q=1,ye=new Float32Array(ne*I*B),Ce=new Float32Array(ee*I*B),ke=new Float32Array(q*I*B);for(let Ye=0;Ye2?0:-1,qe=[ht,Rt,0,ht+2/3,Rt,0,ht+2/3,Rt+1,0,ht,Rt,0,ht+2/3,Rt+1,0,ht,Rt+1,0];ye.set(qe,ne*I*Ye),Ce.set(M,ee*I*Ye);const pt=[Ye,Ye,Ye,Ye,Ye,Ye];ke.set(pt,q*I*Ye)}const nt=new ka;nt.setAttribute("position",new wl(ye,ne)),nt.setAttribute("uv",new wl(Ce,ee)),nt.setAttribute("faceIndex",new wl(ke,q)),n.push(new Il(nt,null)),i>Bm&&i--}return{lodMeshes:n,sizeLods:e,sigmas:t}}function MC(s,e,t){const n=new Os(s,e,t);return n.texture.mapping=_t,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function cv(s,e,t,n,i){s.viewport.set(e,t,n,i),s.scissor.set(e,t,n,i)}function HO(s,e,t){return new nh({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:VO,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${s}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:lb(),fragmentShader:` - - precision highp float; - precision highp int; - - varying vec3 vOutputDirection; - - uniform sampler2D envMap; - uniform float roughness; - uniform float mipInt; - - #define ENVMAP_TYPE_CUBE_UV - #include - - #define PI 3.14159265359 - - // Van der Corput radical inverse - float radicalInverse_VdC(uint bits) { - bits = (bits << 16u) | (bits >> 16u); - bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); - bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); - bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); - bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); - return float(bits) * 2.3283064365386963e-10; // / 0x100000000 - } - - // Hammersley sequence - vec2 hammersley(uint i, uint N) { - return vec2(float(i) / float(N), radicalInverse_VdC(i)); - } - - // GGX VNDF importance sampling (Eric Heitz 2018) - // "Sampling the GGX Distribution of Visible Normals" - // https://jcgt.org/published/0007/04/01/ - vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) { - float alpha = roughness * roughness; - - // Section 3.2: Transform view direction to hemisphere configuration - vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z)); - - // Section 4.1: Orthonormal basis - float lensq = Vh.x * Vh.x + Vh.y * Vh.y; - vec3 T1 = lensq > 0.0 ? vec3(-Vh.y, Vh.x, 0.0) / sqrt(lensq) : vec3(1.0, 0.0, 0.0); - vec3 T2 = cross(Vh, T1); - - // Section 4.2: Parameterization of projected area - float r = sqrt(Xi.x); - float phi = 2.0 * PI * Xi.y; - float t1 = r * cos(phi); - float t2 = r * sin(phi); - float s = 0.5 * (1.0 + Vh.z); - t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2; - - // Section 4.3: Reprojection onto hemisphere - vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * Vh; - - // Section 3.4: Transform back to ellipsoid configuration - return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z))); - } - - void main() { - vec3 N = normalize(vOutputDirection); - vec3 V = N; // Assume view direction equals normal for pre-filtering - - vec3 prefilteredColor = vec3(0.0); - float totalWeight = 0.0; - - // For very low roughness, just sample the environment directly - if (roughness < 0.001) { - gl_FragColor = vec4(bilinearCubeUV(envMap, N, mipInt), 1.0); - return; - } - - // Tangent space basis for VNDF sampling - vec3 up = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); - vec3 tangent = normalize(cross(up, N)); - vec3 bitangent = cross(N, tangent); - - for(uint i = 0u; i < uint(GGX_SAMPLES); i++) { - vec2 Xi = hammersley(i, uint(GGX_SAMPLES)); - - // For PMREM, V = N, so in tangent space V is always (0, 0, 1) - vec3 H_tangent = importanceSampleGGX_VNDF(Xi, vec3(0.0, 0.0, 1.0), roughness); - - // Transform H back to world space - vec3 H = normalize(tangent * H_tangent.x + bitangent * H_tangent.y + N * H_tangent.z); - vec3 L = normalize(2.0 * dot(V, H) * H - V); - - float NdotL = max(dot(N, L), 0.0); - - if(NdotL > 0.0) { - // Sample environment at fixed mip level - // VNDF importance sampling handles the distribution filtering - vec3 sampleColor = bilinearCubeUV(envMap, L, mipInt); - - // Weight by NdotL for the split-sum approximation - // VNDF PDF naturally accounts for the visible microfacet distribution - prefilteredColor += sampleColor * NdotL; - totalWeight += NdotL; - } - } - - if (totalWeight > 0.0) { - prefilteredColor = prefilteredColor / totalWeight; - } - - gl_FragColor = vec4(prefilteredColor, 1.0); - } - `,blending:we,depthTest:!1,depthWrite:!1})}function QO(s,e,t){const n=new Float32Array(s0),i=new le(0,1,0);return new nh({name:"SphericalGaussianBlur",defines:{n:s0,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${s}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:lb(),fragmentShader:` - - precision mediump float; - precision mediump int; - - varying vec3 vOutputDirection; - - uniform sampler2D envMap; - uniform int samples; - uniform float weights[ n ]; - uniform bool latitudinal; - uniform float dTheta; - uniform float mipInt; - uniform vec3 poleAxis; - - #define ENVMAP_TYPE_CUBE_UV - #include - - vec3 getSample( float theta, vec3 axis ) { - - float cosTheta = cos( theta ); - // Rodrigues' axis-angle rotation - vec3 sampleDirection = vOutputDirection * cosTheta - + cross( axis, vOutputDirection ) * sin( theta ) - + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); - - return bilinearCubeUV( envMap, sampleDirection, mipInt ); - - } - - void main() { - - vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); - - if ( all( equal( axis, vec3( 0.0 ) ) ) ) { - - axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); - - } - - axis = normalize( axis ); - - gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); - gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); - - for ( int i = 1; i < n; i++ ) { - - if ( i >= samples ) { - - break; - - } - - float theta = dTheta * float( i ); - gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); - gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); - - } - - } - `,blending:we,depthTest:!1,depthWrite:!1})}function EC(){return new nh({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:lb(),fragmentShader:` - - precision mediump float; - precision mediump int; - - varying vec3 vOutputDirection; - - uniform sampler2D envMap; - - #include - - void main() { - - vec3 outputDirection = normalize( vOutputDirection ); - vec2 uv = equirectUv( outputDirection ); - - gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); - - } - `,blending:we,depthTest:!1,depthWrite:!1})}function CC(){return new nh({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:lb(),fragmentShader:` - - precision mediump float; - precision mediump int; - - uniform float flipEnvMap; - - varying vec3 vOutputDirection; - - uniform samplerCube envMap; - - void main() { - - gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); - - } - `,blending:we,depthTest:!1,depthWrite:!1})}function lb(){return` - - precision mediump float; - precision mediump int; - - attribute float faceIndex; - - varying vec3 vOutputDirection; - - // RH coordinate system; PMREM face-indexing convention - vec3 getDirection( vec2 uv, float face ) { - - uv = 2.0 * uv - 1.0; - - vec3 direction = vec3( uv, 1.0 ); - - if ( face == 0.0 ) { - - direction = direction.zyx; // ( 1, v, u ) pos x - - } else if ( face == 1.0 ) { - - direction = direction.xzy; - direction.xz *= -1.0; // ( -u, 1, -v ) pos y - - } else if ( face == 2.0 ) { - - direction.x *= -1.0; // ( -u, v, 1 ) pos z - - } else if ( face == 3.0 ) { - - direction = direction.zyx; - direction.xz *= -1.0; // ( -1, v, -u ) neg x - - } else if ( face == 4.0 ) { - - direction = direction.xzy; - direction.xy *= -1.0; // ( -u, -1, v ) neg y - - } else if ( face == 5.0 ) { - - direction.z *= -1.0; // ( u, v, -1 ) neg z - - } - - return direction; - - } - - void main() { - - vOutputDirection = getDirection( uv, faceIndex ); - gl_Position = vec4( position, 1.0 ); - - } - `}function WO(s){let e=new WeakMap,t=null;function n(u){if(u&&u.isTexture){const c=u.mapping,d=c===ot||c===ut,g=c===it||c===wt;if(d||g){let v=e.get(u);const M=v!==void 0?v.texture.pmremVersion:0;if(u.isRenderTargetTexture&&u.pmremVersion!==M)return t===null&&(t=new SC(s)),v=d?t.fromEquirectangular(u,v):t.fromCubemap(u,v),v.texture.pmremVersion=u.pmremVersion,e.set(u,v),v.texture;if(v!==void 0)return v.texture;{const B=u.image;return d&&B&&B.height>0||g&&B&&i(B)?(t===null&&(t=new SC(s)),v=d?t.fromEquirectangular(u):t.fromCubemap(u),v.texture.pmremVersion=u.pmremVersion,e.set(u,v),u.addEventListener("dispose",a),v.texture):null}}}return u}function i(u){let c=0;const d=6;for(let g=0;ge.maxTextureSize&&(nt=Math.ceil(ke/e.maxTextureSize),ke=e.maxTextureSize);const Ye=new Float32Array(ke*nt*4*v),ht=new _a(Ye,ke,nt,v);ht.type=dt,ht.needsUpdate=!0;const Rt=Ce*4;for(let pt=0;pt - #include - - void main() { - gl_FragColor = texture2D( tDiffuse, vUv ); - - #ifdef LINEAR_TONE_MAPPING - gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb ); - #elif defined( REINHARD_TONE_MAPPING ) - gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb ); - #elif defined( CINEON_TONE_MAPPING ) - gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb ); - #elif defined( ACES_FILMIC_TONE_MAPPING ) - gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb ); - #elif defined( AGX_TONE_MAPPING ) - gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb ); - #elif defined( NEUTRAL_TONE_MAPPING ) - gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb ); - #elif defined( CUSTOM_TONE_MAPPING ) - gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb ); - #endif - - #ifdef SRGB_TRANSFER - gl_FragColor = sRGBTransferOETF( gl_FragColor ); - #endif - }`,depthTest:!1,depthWrite:!1}),d=new Il(u,c),g=new Pg(-1,1,1,-1,0,1);let v=null,M=null,B=!1,I,ne=null,ee=[],q=!1;this.setSize=function(ye,Ce){a.setSize(ye,Ce),o.setSize(ye,Ce);for(let ke=0;ke0&&ee[0].isRenderPass===!0;const Ce=a.width,ke=a.height;for(let nt=0;nt0)return s;const i=e*t;let a=NC[i];if(a===void 0&&(a=new Float32Array(i),NC[i]=a),e!==0){n.toArray(a,0);for(let o=1,u=0;o!==e;++o)u+=t,s[o].toArray(a,u)}return a}function Nh(s,e){if(s.length!==e.length)return!1;for(let t=0,n=s.length;t0&&(this.seq=i.concat(a))}setValue(e,t,n,i){const a=this.map[t];a!==void 0&&a.setValue(e,n,i)}setOptional(e,t,n){const i=t[n];i!==void 0&&this.setValue(e,n,i)}static upload(e,t,n,i){for(let a=0,o=t.length;a!==o;++a){const u=t[a],c=n[u.id];c.needsUpdate!==!1&&u.setValue(e,c.value,i)}}static seqWithValue(e,t){const n=[];for(let i=0,a=e.length;i!==a;++i){const o=e[i];o.id in t&&n.push(o)}return n}}function DC(s,e,t){const n=s.createShader(e);return s.shaderSource(n,t),s.compileShader(n),n}const QD=37297;let WD=0;function ZD(s,e){const t=s.split(` -`),n=[],i=Math.max(e-6,0),a=Math.min(e+6,t.length);for(let o=i;o":" "} ${u}: ${t[o]}`)}return n.join(` -`)}const kC=new pn;function KD(s){xr._getMatrix(kC,xr.workingColorSpace,s);const e=`mat3( ${kC.elements.map(t=>t.toFixed(4))} )`;switch(xr.getTransfer(s)){case Uu:return[e,"LinearTransferOETF"];case ws:return[e,"sRGBTransferOETF"];default:return Lr("WebGLProgram: Unsupported color space: ",s),[e,"LinearTransferOETF"]}}function VC(s,e,t){const n=s.getShaderParameter(e,s.COMPILE_STATUS),a=(s.getShaderInfoLog(e)||"").trim();if(n&&a==="")return"";const o=/ERROR: 0:(\d+)/.exec(a);if(o){const u=parseInt(o[1]);return t.toUpperCase()+` - -`+a+` - -`+ZD(s.getShaderSource(e),u)}else return a}function $D(s,e){const t=KD(e);return[`vec4 ${s}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` -`)}const XD={[sn]:"Linear",[W]:"Reinhard",[Se]:"Cineon",[Ht]:"ACESFilmic",[Fn]:"AgX",[Tn]:"Neutral",[zt]:"Custom"};function jD(s,e){const t=XD[e];return t===void 0?(Lr("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+s+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+s+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const hb=new le;function YD(){xr.getLuminanceCoefficients(hb);const s=hb.x.toFixed(4),e=hb.y.toFixed(4),t=hb.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${s}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` -`)}function qD(s){return[s.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",s.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Sy).join(` -`)}function JD(s){const e=[];for(const t in s){const n=s[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(` -`)}function e3(s,e){const t={},n=s.getProgramParameter(e,s.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function r1(s){return s.replace(t3,r3)}const n3=new Map;function r3(s,e){let t=Vo[e];if(t===void 0){const n=n3.get(e);if(n!==void 0)t=Vo[n],Lr('WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return r1(t)}const i3=/#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 HC(s){return s.replace(i3,s3)}function s3(s,e,t,n){let i="";for(let a=parseInt(e);a0&&(ee+=` -`),q=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,I].filter(Sy).join(` -`),q.length>0&&(q+=` -`)):(ee=[QC(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,I,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 "+g:"",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 "+c:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","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(Sy).join(` -`),q=[QC(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,I,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 "+d:"",t.envMap?"#define "+g:"",t.envMap?"#define "+v:"",M?"#define CUBEUV_TEXEL_WIDTH "+M.texelWidth:"",M?"#define CUBEUV_TEXEL_HEIGHT "+M.texelHeight:"",M?"#define CUBEUV_MAX_MIP "+M.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 "+c:"",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_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==Ct?"#define TONE_MAPPING":"",t.toneMapping!==Ct?Vo.tonemapping_pars_fragment:"",t.toneMapping!==Ct?jD("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Vo.colorspace_pars_fragment,$D("linearToOutputTexel",t.outputColorSpace),YD(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` -`].filter(Sy).join(` -`)),o=r1(o),o=zC(o,t),o=GC(o,t),u=r1(u),u=zC(u,t),u=GC(u,t),o=HC(o),u=HC(u),t.isRawShaderMaterial!==!0&&(ye=`#version 300 es -`,ee=[B,"#define attribute in","#define varying out","#define texture2D texture"].join(` -`)+` -`+ee,q=["#define varying in",t.glslVersion===Yc?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===Yc?"":"#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(` -`)+` -`+q);const Ce=ye+ee+o,ke=ye+q+u,nt=DC(i,i.VERTEX_SHADER,Ce),Ye=DC(i,i.FRAGMENT_SHADER,ke);i.attachShader(ne,nt),i.attachShader(ne,Ye),t.index0AttributeName!==void 0?i.bindAttribLocation(ne,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(ne,0,"position"),i.linkProgram(ne);function ht(xn){if(s.debug.checkShaderErrors){const cr=i.getProgramInfoLog(ne)||"",pr=i.getShaderInfoLog(nt)||"",Br=i.getShaderInfoLog(Ye)||"",zr=cr.trim(),Dr=pr.trim(),Zr=Br.trim();let Ti=!0,ds=!0;if(i.getProgramParameter(ne,i.LINK_STATUS)===!1)if(Ti=!1,typeof s.debug.onShaderError=="function")s.debug.onShaderError(i,ne,nt,Ye);else{const As=VC(i,nt,"vertex"),Xr=VC(i,Ye,"fragment");Gr("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(ne,i.VALIDATE_STATUS)+` - -Material Name: `+xn.name+` -Material Type: `+xn.type+` - -Program Info Log: `+zr+` -`+As+` -`+Xr)}else zr!==""?Lr("WebGLProgram: Program Info Log:",zr):(Dr===""||Zr==="")&&(ds=!1);ds&&(xn.diagnostics={runnable:Ti,programLog:zr,vertexShader:{log:Dr,prefix:ee},fragmentShader:{log:Zr,prefix:q}})}i.deleteShader(nt),i.deleteShader(Ye),Rt=new cb(i,ne),qe=e3(i,ne)}let Rt;this.getUniforms=function(){return Rt===void 0&&ht(this),Rt};let qe;this.getAttributes=function(){return qe===void 0&&ht(this),qe};let pt=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return pt===!1&&(pt=i.getProgramParameter(ne,QD)),pt},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(ne),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=WD++,this.cacheKey=e,this.usedTimes=1,this.program=ne,this.vertexShader=nt,this.fragmentShader=Ye,this}let g3=0;class m3{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),a=this._getShaderStage(n),o=this._getShaderCacheForMaterial(e);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(a)===!1&&(o.add(a),a.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const 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){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new v3(e),t.set(e,n)),n}}class v3{constructor(e){this.id=g3++,this.code=e,this.usedTimes=0}}function y3(s,e,t,n,i,a,o){const u=new dl,c=new m3,d=new Set,g=[],v=new Map,M=i.logarithmicDepthBuffer;let B=i.precision;const I={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",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 ne(qe){return d.add(qe),qe===0?"uv":`uv${qe}`}function ee(qe,pt,xn,cr,pr){const Br=cr.fog,zr=pr.geometry,Dr=qe.isMeshStandardMaterial?cr.environment:null,Zr=(qe.isMeshStandardMaterial?t:e).get(qe.envMap||Dr),Ti=Zr&&Zr.mapping===_t?Zr.image.height:null,ds=I[qe.type];qe.precision!==null&&(B=i.getMaxPrecision(qe.precision),B!==qe.precision&&Lr("WebGLProgram.getParameters:",qe.precision,"not supported, using",B,"instead."));const As=zr.morphAttributes.position||zr.morphAttributes.normal||zr.morphAttributes.color,Xr=As!==void 0?As.length:0;let Yi=0;zr.morphAttributes.position!==void 0&&(Yi=1),zr.morphAttributes.normal!==void 0&&(Yi=2),zr.morphAttributes.color!==void 0&&(Yi=3);let ps,Xa,Pi,Nr;if(ds){const fu=Jp[ds];ps=fu.vertexShader,Xa=fu.fragmentShader}else ps=qe.vertexShader,Xa=qe.fragmentShader,c.update(qe),Pi=c.getVertexShaderID(qe),Nr=c.getFragmentShaderID(qe);const Yr=s.getRenderTarget(),cs=s.state.buffers.depth.getReversed(),oa=pr.isInstancedMesh===!0,Ms=pr.isBatchedMesh===!0,Ha=!!qe.map,Qo=!!qe.matcap,co=!!Zr,Li=!!qe.aoMap,os=!!qe.lightMap,Hi=!!qe.bumpMap,Fs=!!qe.normalMap,Pn=!!qe.displacementMap,ja=!!qe.emissiveMap,da=!!qe.metalnessMap,ho=!!qe.roughnessMap,Ps=qe.anisotropy>0,Mn=qe.clearcoat>0,St=qe.dispersion>0,Cr=qe.iridescence>0,xi=qe.sheen>0,Qi=qe.transmission>0,Si=Ps&&!!qe.anisotropyMap,La=Mn&&!!qe.clearcoatMap,Vs=Mn&&!!qe.clearcoatNormalMap,Na=Mn&&!!qe.clearcoatRoughnessMap,po=Cr&&!!qe.iridescenceMap,hs=Cr&&!!qe.iridescenceThicknessMap,js=xi&&!!qe.sheenColorMap,Fa=xi&&!!qe.sheenRoughnessMap,Va=!!qe.specularMap,$s=!!qe.specularColorMap,Wo=!!qe.specularIntensityMap,Mr=Qi&&!!qe.transmissionMap,la=Qi&&!!qe.thicknessMap,Ts=!!qe.gradientMap,ga=!!qe.alphaMap,gs=qe.alphaTest>0,Wi=!!qe.alphaHash,Ws=!!qe.extensions;let Eo=Ct;qe.toneMapped&&(Yr===null||Yr.isXRRenderTarget===!0)&&(Eo=s.toneMapping);const Wu={shaderID:ds,shaderType:qe.type,shaderName:qe.name,vertexShader:ps,fragmentShader:Xa,defines:qe.defines,customVertexShaderID:Pi,customFragmentShaderID:Nr,isRawShaderMaterial:qe.isRawShaderMaterial===!0,glslVersion:qe.glslVersion,precision:B,batching:Ms,batchingColor:Ms&&pr._colorsTexture!==null,instancing:oa,instancingColor:oa&&pr.instanceColor!==null,instancingMorph:oa&&pr.morphTexture!==null,outputColorSpace:Yr===null?s.outputColorSpace:Yr.isXRRenderTarget===!0?Yr.texture.colorSpace:No,alphaToCoverage:!!qe.alphaToCoverage,map:Ha,matcap:Qo,envMap:co,envMapMode:co&&Zr.mapping,envMapCubeUVHeight:Ti,aoMap:Li,lightMap:os,bumpMap:Hi,normalMap:Fs,displacementMap:Pn,emissiveMap:ja,normalMapObjectSpace:Fs&&qe.normalMapType===Lu,normalMapTangentSpace:Fs&&qe.normalMapType===Ll,metalnessMap:da,roughnessMap:ho,anisotropy:Ps,anisotropyMap:Si,clearcoat:Mn,clearcoatMap:La,clearcoatNormalMap:Vs,clearcoatRoughnessMap:Na,dispersion:St,iridescence:Cr,iridescenceMap:po,iridescenceThicknessMap:hs,sheen:xi,sheenColorMap:js,sheenRoughnessMap:Fa,specularMap:Va,specularColorMap:$s,specularIntensityMap:Wo,transmission:Qi,transmissionMap:Mr,thicknessMap:la,gradientMap:Ts,opaque:qe.transparent===!1&&qe.blending===ve&&qe.alphaToCoverage===!1,alphaMap:ga,alphaTest:gs,alphaHash:Wi,combine:qe.combine,mapUv:Ha&&ne(qe.map.channel),aoMapUv:Li&&ne(qe.aoMap.channel),lightMapUv:os&&ne(qe.lightMap.channel),bumpMapUv:Hi&&ne(qe.bumpMap.channel),normalMapUv:Fs&&ne(qe.normalMap.channel),displacementMapUv:Pn&&ne(qe.displacementMap.channel),emissiveMapUv:ja&&ne(qe.emissiveMap.channel),metalnessMapUv:da&&ne(qe.metalnessMap.channel),roughnessMapUv:ho&&ne(qe.roughnessMap.channel),anisotropyMapUv:Si&&ne(qe.anisotropyMap.channel),clearcoatMapUv:La&&ne(qe.clearcoatMap.channel),clearcoatNormalMapUv:Vs&&ne(qe.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Na&&ne(qe.clearcoatRoughnessMap.channel),iridescenceMapUv:po&&ne(qe.iridescenceMap.channel),iridescenceThicknessMapUv:hs&&ne(qe.iridescenceThicknessMap.channel),sheenColorMapUv:js&&ne(qe.sheenColorMap.channel),sheenRoughnessMapUv:Fa&&ne(qe.sheenRoughnessMap.channel),specularMapUv:Va&&ne(qe.specularMap.channel),specularColorMapUv:$s&&ne(qe.specularColorMap.channel),specularIntensityMapUv:Wo&&ne(qe.specularIntensityMap.channel),transmissionMapUv:Mr&&ne(qe.transmissionMap.channel),thicknessMapUv:la&&ne(qe.thicknessMap.channel),alphaMapUv:ga&&ne(qe.alphaMap.channel),vertexTangents:!!zr.attributes.tangent&&(Fs||Ps),vertexColors:qe.vertexColors,vertexAlphas:qe.vertexColors===!0&&!!zr.attributes.color&&zr.attributes.color.itemSize===4,pointsUvs:pr.isPoints===!0&&!!zr.attributes.uv&&(Ha||ga),fog:!!Br,useFog:qe.fog===!0,fogExp2:!!Br&&Br.isFogExp2,flatShading:qe.flatShading===!0&&qe.wireframe===!1,sizeAttenuation:qe.sizeAttenuation===!0,logarithmicDepthBuffer:M,reversedDepthBuffer:cs,skinning:pr.isSkinnedMesh===!0,morphTargets:zr.morphAttributes.position!==void 0,morphNormals:zr.morphAttributes.normal!==void 0,morphColors:zr.morphAttributes.color!==void 0,morphTargetsCount:Xr,morphTextureStride:Yi,numDirLights:pt.directional.length,numPointLights:pt.point.length,numSpotLights:pt.spot.length,numSpotLightMaps:pt.spotLightMap.length,numRectAreaLights:pt.rectArea.length,numHemiLights:pt.hemi.length,numDirLightShadows:pt.directionalShadowMap.length,numPointLightShadows:pt.pointShadowMap.length,numSpotLightShadows:pt.spotShadowMap.length,numSpotLightShadowsWithMaps:pt.numSpotLightShadowsWithMaps,numLightProbes:pt.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:qe.dithering,shadowMapEnabled:s.shadowMap.enabled&&xn.length>0,shadowMapType:s.shadowMap.type,toneMapping:Eo,decodeVideoTexture:Ha&&qe.map.isVideoTexture===!0&&xr.getTransfer(qe.map.colorSpace)===ws,decodeVideoTextureEmissive:ja&&qe.emissiveMap.isVideoTexture===!0&&xr.getTransfer(qe.emissiveMap.colorSpace)===ws,premultipliedAlpha:qe.premultipliedAlpha,doubleSided:qe.side===he,flipSided:qe.side===de,useDepthPacking:qe.depthPacking>=0,depthPacking:qe.depthPacking||0,index0AttributeName:qe.index0AttributeName,extensionClipCullDistance:Ws&&qe.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Ws&&qe.extensions.multiDraw===!0||Ms)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:qe.customProgramCacheKey()};return Wu.vertexUv1s=d.has(1),Wu.vertexUv2s=d.has(2),Wu.vertexUv3s=d.has(3),d.clear(),Wu}function q(qe){const pt=[];if(qe.shaderID?pt.push(qe.shaderID):(pt.push(qe.customVertexShaderID),pt.push(qe.customFragmentShaderID)),qe.defines!==void 0)for(const xn in qe.defines)pt.push(xn),pt.push(qe.defines[xn]);return qe.isRawShaderMaterial===!1&&(ye(pt,qe),Ce(pt,qe),pt.push(s.outputColorSpace)),pt.push(qe.customProgramCacheKey),pt.join()}function ye(qe,pt){qe.push(pt.precision),qe.push(pt.outputColorSpace),qe.push(pt.envMapMode),qe.push(pt.envMapCubeUVHeight),qe.push(pt.mapUv),qe.push(pt.alphaMapUv),qe.push(pt.lightMapUv),qe.push(pt.aoMapUv),qe.push(pt.bumpMapUv),qe.push(pt.normalMapUv),qe.push(pt.displacementMapUv),qe.push(pt.emissiveMapUv),qe.push(pt.metalnessMapUv),qe.push(pt.roughnessMapUv),qe.push(pt.anisotropyMapUv),qe.push(pt.clearcoatMapUv),qe.push(pt.clearcoatNormalMapUv),qe.push(pt.clearcoatRoughnessMapUv),qe.push(pt.iridescenceMapUv),qe.push(pt.iridescenceThicknessMapUv),qe.push(pt.sheenColorMapUv),qe.push(pt.sheenRoughnessMapUv),qe.push(pt.specularMapUv),qe.push(pt.specularColorMapUv),qe.push(pt.specularIntensityMapUv),qe.push(pt.transmissionMapUv),qe.push(pt.thicknessMapUv),qe.push(pt.combine),qe.push(pt.fogExp2),qe.push(pt.sizeAttenuation),qe.push(pt.morphTargetsCount),qe.push(pt.morphAttributeCount),qe.push(pt.numDirLights),qe.push(pt.numPointLights),qe.push(pt.numSpotLights),qe.push(pt.numSpotLightMaps),qe.push(pt.numHemiLights),qe.push(pt.numRectAreaLights),qe.push(pt.numDirLightShadows),qe.push(pt.numPointLightShadows),qe.push(pt.numSpotLightShadows),qe.push(pt.numSpotLightShadowsWithMaps),qe.push(pt.numLightProbes),qe.push(pt.shadowMapType),qe.push(pt.toneMapping),qe.push(pt.numClippingPlanes),qe.push(pt.numClipIntersection),qe.push(pt.depthPacking)}function Ce(qe,pt){u.disableAll(),pt.instancing&&u.enable(0),pt.instancingColor&&u.enable(1),pt.instancingMorph&&u.enable(2),pt.matcap&&u.enable(3),pt.envMap&&u.enable(4),pt.normalMapObjectSpace&&u.enable(5),pt.normalMapTangentSpace&&u.enable(6),pt.clearcoat&&u.enable(7),pt.iridescence&&u.enable(8),pt.alphaTest&&u.enable(9),pt.vertexColors&&u.enable(10),pt.vertexAlphas&&u.enable(11),pt.vertexUv1s&&u.enable(12),pt.vertexUv2s&&u.enable(13),pt.vertexUv3s&&u.enable(14),pt.vertexTangents&&u.enable(15),pt.anisotropy&&u.enable(16),pt.alphaHash&&u.enable(17),pt.batching&&u.enable(18),pt.dispersion&&u.enable(19),pt.batchingColor&&u.enable(20),pt.gradientMap&&u.enable(21),qe.push(u.mask),u.disableAll(),pt.fog&&u.enable(0),pt.useFog&&u.enable(1),pt.flatShading&&u.enable(2),pt.logarithmicDepthBuffer&&u.enable(3),pt.reversedDepthBuffer&&u.enable(4),pt.skinning&&u.enable(5),pt.morphTargets&&u.enable(6),pt.morphNormals&&u.enable(7),pt.morphColors&&u.enable(8),pt.premultipliedAlpha&&u.enable(9),pt.shadowMapEnabled&&u.enable(10),pt.doubleSided&&u.enable(11),pt.flipSided&&u.enable(12),pt.useDepthPacking&&u.enable(13),pt.dithering&&u.enable(14),pt.transmission&&u.enable(15),pt.sheen&&u.enable(16),pt.opaque&&u.enable(17),pt.pointsUvs&&u.enable(18),pt.decodeVideoTexture&&u.enable(19),pt.decodeVideoTextureEmissive&&u.enable(20),pt.alphaToCoverage&&u.enable(21),qe.push(u.mask)}function ke(qe){const pt=I[qe.type];let xn;if(pt){const cr=Jp[pt];xn=Vh.clone(cr.uniforms)}else xn=qe.uniforms;return xn}function nt(qe,pt){let xn=v.get(pt);return xn!==void 0?++xn.usedTimes:(xn=new p3(s,pt,qe,a),g.push(xn),v.set(pt,xn)),xn}function Ye(qe){if(--qe.usedTimes===0){const pt=g.indexOf(qe);g[pt]=g[g.length-1],g.pop(),v.delete(qe.cacheKey),qe.destroy()}}function ht(qe){c.remove(qe)}function Rt(){c.dispose()}return{getParameters:ee,getProgramCacheKey:q,getUniforms:ke,acquireProgram:nt,releaseProgram:Ye,releaseShaderCache:ht,programs:g,dispose:Rt}}function x3(){let s=new WeakMap;function e(o){return s.has(o)}function t(o){let u=s.get(o);return u===void 0&&(u={},s.set(o,u)),u}function n(o){s.delete(o)}function i(o,u,c){s.get(o)[u]=c}function a(){s=new WeakMap}return{has:e,get:t,remove:n,update:i,dispose:a}}function b3(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.material.id!==e.material.id?s.material.id-e.material.id:s.z!==e.z?s.z-e.z:s.id-e.id}function WC(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.z!==e.z?e.z-s.z:s.id-e.id}function ZC(){const s=[];let e=0;const t=[],n=[],i=[];function a(){e=0,t.length=0,n.length=0,i.length=0}function o(v,M,B,I,ne,ee){let q=s[e];return q===void 0?(q={id:v.id,object:v,geometry:M,material:B,groupOrder:I,renderOrder:v.renderOrder,z:ne,group:ee},s[e]=q):(q.id=v.id,q.object=v,q.geometry=M,q.material=B,q.groupOrder=I,q.renderOrder=v.renderOrder,q.z=ne,q.group=ee),e++,q}function u(v,M,B,I,ne,ee){const q=o(v,M,B,I,ne,ee);B.transmission>0?n.push(q):B.transparent===!0?i.push(q):t.push(q)}function c(v,M,B,I,ne,ee){const q=o(v,M,B,I,ne,ee);B.transmission>0?n.unshift(q):B.transparent===!0?i.unshift(q):t.unshift(q)}function d(v,M){t.length>1&&t.sort(v||b3),n.length>1&&n.sort(M||WC),i.length>1&&i.sort(M||WC)}function g(){for(let v=e,M=s.length;v=a.length?(o=new ZC,a.push(o)):o=a[i],o}function t(){s=new WeakMap}return{get:e,dispose:t}}function w3(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new le,color:new Wr};break;case"SpotLight":t={position:new le,direction:new le,color:new Wr,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new le,color:new Wr,distance:0,decay:0};break;case"HemisphereLight":t={direction:new le,skyColor:new Wr,groundColor:new Wr};break;case"RectAreaLight":t={color:new Wr,position:new le,halfWidth:new le,halfHeight:new le};break}return s[e.id]=t,t}}}function S3(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ce};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ce};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ce,shadowCameraNear:1,shadowCameraFar:1e3};break}return s[e.id]=t,t}}}let M3=0;function E3(s,e){return(e.castShadow?2:0)-(s.castShadow?2:0)+(e.map?1:0)-(s.map?1:0)}function C3(s){const e=new w3,t=S3(),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 d=0;d<9;d++)n.probe.push(new le);const i=new le,a=new di,o=new di;function u(d){let g=0,v=0,M=0;for(let qe=0;qe<9;qe++)n.probe[qe].set(0,0,0);let B=0,I=0,ne=0,ee=0,q=0,ye=0,Ce=0,ke=0,nt=0,Ye=0,ht=0;d.sort(E3);for(let qe=0,pt=d.length;qe0&&(s.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=Js.LTC_FLOAT_1,n.rectAreaLTC2=Js.LTC_FLOAT_2):(n.rectAreaLTC1=Js.LTC_HALF_1,n.rectAreaLTC2=Js.LTC_HALF_2)),n.ambient[0]=g,n.ambient[1]=v,n.ambient[2]=M;const Rt=n.hash;(Rt.directionalLength!==B||Rt.pointLength!==I||Rt.spotLength!==ne||Rt.rectAreaLength!==ee||Rt.hemiLength!==q||Rt.numDirectionalShadows!==ye||Rt.numPointShadows!==Ce||Rt.numSpotShadows!==ke||Rt.numSpotMaps!==nt||Rt.numLightProbes!==ht)&&(n.directional.length=B,n.spot.length=ne,n.rectArea.length=ee,n.point.length=I,n.hemi.length=q,n.directionalShadow.length=ye,n.directionalShadowMap.length=ye,n.pointShadow.length=Ce,n.pointShadowMap.length=Ce,n.spotShadow.length=ke,n.spotShadowMap.length=ke,n.directionalShadowMatrix.length=ye,n.pointShadowMatrix.length=Ce,n.spotLightMatrix.length=ke+nt-Ye,n.spotLightMap.length=nt,n.numSpotLightShadowsWithMaps=Ye,n.numLightProbes=ht,Rt.directionalLength=B,Rt.pointLength=I,Rt.spotLength=ne,Rt.rectAreaLength=ee,Rt.hemiLength=q,Rt.numDirectionalShadows=ye,Rt.numPointShadows=Ce,Rt.numSpotShadows=ke,Rt.numSpotMaps=nt,Rt.numLightProbes=ht,n.version=M3++)}function c(d,g){let v=0,M=0,B=0,I=0,ne=0;const ee=g.matrixWorldInverse;for(let q=0,ye=d.length;q=o.length?(u=new KC(s),o.push(u)):u=o[a],u}function n(){e=new WeakMap}return{get:t,dispose:n}}const B3=`void main() { - gl_Position = vec4( position, 1.0 ); -}`,R3=`uniform sampler2D shadow_pass; -uniform vec2 resolution; -uniform float radius; -void main() { - const float samples = float( VSM_SAMPLES ); - float mean = 0.0; - float squared_mean = 0.0; - float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); - float uvStart = samples <= 1.0 ? 0.0 : - 1.0; - for ( float i = 0.0; i < samples; i ++ ) { - float uvOffset = uvStart + i * uvStride; - #ifdef HORIZONTAL_PASS - vec2 distribution = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ).rg; - mean += distribution.x; - squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; - #else - float depth = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ).r; - mean += depth; - squared_mean += depth * depth; - #endif - } - mean = mean / samples; - squared_mean = squared_mean / samples; - float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) ); - gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 ); -}`,I3=[new le(1,0,0),new le(-1,0,0),new le(0,1,0),new le(0,-1,0),new le(0,0,1),new le(0,0,-1)],N3=[new le(0,-1,0),new le(0,-1,0),new le(0,0,1),new le(0,0,-1),new le(0,-1,0),new le(0,-1,0)],$C=new di,My=new le,i1=new le;function F3(s,e,t){let n=new qu;const i=new ce,a=new ce,o=new Ni,u=new Bx,c=new Rx,d={},g=t.maxTextureSize,v={[j]:de,[de]:j,[he]:he},M=new nh({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ce},radius:{value:4}},vertexShader:B3,fragmentShader:R3}),B=M.clone();B.defines.HORIZONTAL_PASS=1;const I=new ka;I.setAttribute("position",new wl(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const ne=new Il(I,M),ee=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=H;let q=this.type;this.render=function(Ye,ht,Rt){if(ee.enabled===!1||ee.autoUpdate===!1&&ee.needsUpdate===!1||Ye.length===0)return;Ye.type===D&&(Lr("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),Ye.type=H);const qe=s.getRenderTarget(),pt=s.getActiveCubeFace(),xn=s.getActiveMipmapLevel(),cr=s.state;cr.setBlending(we),cr.buffers.depth.getReversed()===!0?cr.buffers.color.setClear(0,0,0,0):cr.buffers.color.setClear(1,1,1,1),cr.buffers.depth.setTest(!0),cr.setScissorTest(!1);const pr=q!==this.type;pr&&ht.traverse(function(Br){Br.material&&(Array.isArray(Br.material)?Br.material.forEach(zr=>zr.needsUpdate=!0):Br.material.needsUpdate=!0)});for(let Br=0,zr=Ye.length;Brg||i.y>g)&&(i.x>g&&(a.x=Math.floor(g/Ti.x),i.x=a.x*Ti.x,Zr.mapSize.x=a.x),i.y>g&&(a.y=Math.floor(g/Ti.y),i.y=a.y*Ti.y,Zr.mapSize.y=a.y)),Zr.map===null||pr===!0){if(Zr.map!==null&&(Zr.map.depthTexture!==null&&(Zr.map.depthTexture.dispose(),Zr.map.depthTexture=null),Zr.map.dispose()),this.type===X){if(Dr.isPointLight){Lr("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}Zr.map=new Os(i.x,i.y,{format:ze,type:Wt,minFilter:vr,magFilter:vr,generateMipmaps:!1}),Zr.map.texture.name=Dr.name+".shadowMap",Zr.map.depthTexture=new Al(i.x,i.y,dt),Zr.map.depthTexture.name=Dr.name+".shadowMapDepth",Zr.map.depthTexture.format=Q,Zr.map.depthTexture.compareFunction=null,Zr.map.depthTexture.minFilter=cn,Zr.map.depthTexture.magFilter=cn}else{Dr.isPointLight?(Zr.map=new Mc(i.x),Zr.map.depthTexture=new sA(i.x,st)):(Zr.map=new Os(i.x,i.y),Zr.map.depthTexture=new Al(i.x,i.y,st)),Zr.map.depthTexture.name=Dr.name+".shadowMap",Zr.map.depthTexture.format=Q;const As=s.state.buffers.depth.getReversed();this.type===H?(Zr.map.depthTexture.compareFunction=As?Ji:jc,Zr.map.depthTexture.minFilter=vr,Zr.map.depthTexture.magFilter=vr):(Zr.map.depthTexture.compareFunction=null,Zr.map.depthTexture.minFilter=cn,Zr.map.depthTexture.magFilter=cn)}Zr.camera.updateProjectionMatrix()}const ds=Zr.map.isWebGLCubeRenderTarget?6:1;for(let As=0;As0||ht.map&&ht.alphaTest>0||ht.alphaToCoverage===!0){const cr=pt.uuid,pr=ht.uuid;let Br=d[cr];Br===void 0&&(Br={},d[cr]=Br);let zr=Br[pr];zr===void 0&&(zr=pt.clone(),Br[pr]=zr,ht.addEventListener("dispose",nt)),pt=zr}if(pt.visible=ht.visible,pt.wireframe=ht.wireframe,qe===X?pt.side=ht.shadowSide!==null?ht.shadowSide:ht.side:pt.side=ht.shadowSide!==null?ht.shadowSide:v[ht.side],pt.alphaMap=ht.alphaMap,pt.alphaTest=ht.alphaToCoverage===!0?.5:ht.alphaTest,pt.map=ht.map,pt.clipShadows=ht.clipShadows,pt.clippingPlanes=ht.clippingPlanes,pt.clipIntersection=ht.clipIntersection,pt.displacementMap=ht.displacementMap,pt.displacementScale=ht.displacementScale,pt.displacementBias=ht.displacementBias,pt.wireframeLinewidth=ht.wireframeLinewidth,pt.linewidth=ht.linewidth,Rt.isPointLight===!0&&pt.isMeshDistanceMaterial===!0){const cr=s.properties.get(pt);cr.light=Rt}return pt}function ke(Ye,ht,Rt,qe,pt){if(Ye.visible===!1)return;if(Ye.layers.test(ht.layers)&&(Ye.isMesh||Ye.isLine||Ye.isPoints)&&(Ye.castShadow||Ye.receiveShadow&&pt===X)&&(!Ye.frustumCulled||n.intersectsObject(Ye))){Ye.modelViewMatrix.multiplyMatrices(Rt.matrixWorldInverse,Ye.matrixWorld);const pr=e.update(Ye),Br=Ye.material;if(Array.isArray(Br)){const zr=pr.groups;for(let Dr=0,Zr=zr.length;Dr=1):Ti.indexOf("OpenGL ES")!==-1&&(Zr=parseFloat(/^OpenGL ES (\d)/.exec(Ti)[1]),Dr=Zr>=2);let ds=null,As={};const Xr=s.getParameter(s.SCISSOR_BOX),Yi=s.getParameter(s.VIEWPORT),ps=new Ni().fromArray(Xr),Xa=new Ni().fromArray(Yi);function Pi(Mr,la,Ts,ga){const gs=new Uint8Array(4),Wi=s.createTexture();s.bindTexture(Mr,Wi),s.texParameteri(Mr,s.TEXTURE_MIN_FILTER,s.NEAREST),s.texParameteri(Mr,s.TEXTURE_MAG_FILTER,s.NEAREST);for(let Ws=0;WsCr||Qi.height>Cr)&&(xi=Cr/Math.max(Qi.width,Qi.height)),xi<1)if(typeof HTMLImageElement!="undefined"&&Mn instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&Mn instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&Mn instanceof ImageBitmap||typeof VideoFrame!="undefined"&&Mn instanceof VideoFrame){const Si=Math.floor(xi*Qi.width),La=Math.floor(xi*Qi.height);v===void 0&&(v=I(Si,La));const Vs=St?I(Si,La):v;return Vs.width=Si,Vs.height=La,Vs.getContext("2d").drawImage(Mn,0,0,Si,La),Lr("WebGLRenderer: Texture has been resized from ("+Qi.width+"x"+Qi.height+") to ("+Si+"x"+La+")."),Vs}else return"data"in Mn&&Lr("WebGLRenderer: Image in DataTexture is too big ("+Qi.width+"x"+Qi.height+")."),Mn;return Mn}function ee(Mn){return Mn.generateMipmaps}function q(Mn){s.generateMipmap(Mn)}function ye(Mn){return Mn.isWebGLCubeRenderTarget?s.TEXTURE_CUBE_MAP:Mn.isWebGL3DRenderTarget?s.TEXTURE_3D:Mn.isWebGLArrayRenderTarget||Mn.isCompressedArrayTexture?s.TEXTURE_2D_ARRAY:s.TEXTURE_2D}function Ce(Mn,St,Cr,xi,Qi=!1){if(Mn!==null){if(s[Mn]!==void 0)return s[Mn];Lr("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+Mn+"'")}let Si=St;if(St===s.RED&&(Cr===s.FLOAT&&(Si=s.R32F),Cr===s.HALF_FLOAT&&(Si=s.R16F),Cr===s.UNSIGNED_BYTE&&(Si=s.R8)),St===s.RED_INTEGER&&(Cr===s.UNSIGNED_BYTE&&(Si=s.R8UI),Cr===s.UNSIGNED_SHORT&&(Si=s.R16UI),Cr===s.UNSIGNED_INT&&(Si=s.R32UI),Cr===s.BYTE&&(Si=s.R8I),Cr===s.SHORT&&(Si=s.R16I),Cr===s.INT&&(Si=s.R32I)),St===s.RG&&(Cr===s.FLOAT&&(Si=s.RG32F),Cr===s.HALF_FLOAT&&(Si=s.RG16F),Cr===s.UNSIGNED_BYTE&&(Si=s.RG8)),St===s.RG_INTEGER&&(Cr===s.UNSIGNED_BYTE&&(Si=s.RG8UI),Cr===s.UNSIGNED_SHORT&&(Si=s.RG16UI),Cr===s.UNSIGNED_INT&&(Si=s.RG32UI),Cr===s.BYTE&&(Si=s.RG8I),Cr===s.SHORT&&(Si=s.RG16I),Cr===s.INT&&(Si=s.RG32I)),St===s.RGB_INTEGER&&(Cr===s.UNSIGNED_BYTE&&(Si=s.RGB8UI),Cr===s.UNSIGNED_SHORT&&(Si=s.RGB16UI),Cr===s.UNSIGNED_INT&&(Si=s.RGB32UI),Cr===s.BYTE&&(Si=s.RGB8I),Cr===s.SHORT&&(Si=s.RGB16I),Cr===s.INT&&(Si=s.RGB32I)),St===s.RGBA_INTEGER&&(Cr===s.UNSIGNED_BYTE&&(Si=s.RGBA8UI),Cr===s.UNSIGNED_SHORT&&(Si=s.RGBA16UI),Cr===s.UNSIGNED_INT&&(Si=s.RGBA32UI),Cr===s.BYTE&&(Si=s.RGBA8I),Cr===s.SHORT&&(Si=s.RGBA16I),Cr===s.INT&&(Si=s.RGBA32I)),St===s.RGB&&(Cr===s.UNSIGNED_INT_5_9_9_9_REV&&(Si=s.RGB9_E5),Cr===s.UNSIGNED_INT_10F_11F_11F_REV&&(Si=s.R11F_G11F_B10F)),St===s.RGBA){const La=Qi?Uu:xr.getTransfer(xi);Cr===s.FLOAT&&(Si=s.RGBA32F),Cr===s.HALF_FLOAT&&(Si=s.RGBA16F),Cr===s.UNSIGNED_BYTE&&(Si=La===ws?s.SRGB8_ALPHA8:s.RGBA8),Cr===s.UNSIGNED_SHORT_4_4_4_4&&(Si=s.RGBA4),Cr===s.UNSIGNED_SHORT_5_5_5_1&&(Si=s.RGB5_A1)}return(Si===s.R16F||Si===s.R32F||Si===s.RG16F||Si===s.RG32F||Si===s.RGBA16F||Si===s.RGBA32F)&&e.get("EXT_color_buffer_float"),Si}function ke(Mn,St){let Cr;return Mn?St===null||St===st||St===ar?Cr=s.DEPTH24_STENCIL8:St===dt?Cr=s.DEPTH32F_STENCIL8:St===rn&&(Cr=s.DEPTH24_STENCIL8,Lr("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):St===null||St===st||St===ar?Cr=s.DEPTH_COMPONENT24:St===dt?Cr=s.DEPTH_COMPONENT32F:St===rn&&(Cr=s.DEPTH_COMPONENT16),Cr}function nt(Mn,St){return ee(Mn)===!0||Mn.isFramebufferTexture&&Mn.minFilter!==cn&&Mn.minFilter!==vr?Math.log2(Math.max(St.width,St.height))+1:Mn.mipmaps!==void 0&&Mn.mipmaps.length>0?Mn.mipmaps.length:Mn.isCompressedTexture&&Array.isArray(Mn.image)?St.mipmaps.length:1}function Ye(Mn){const St=Mn.target;St.removeEventListener("dispose",Ye),Rt(St),St.isVideoTexture&&g.delete(St)}function ht(Mn){const St=Mn.target;St.removeEventListener("dispose",ht),pt(St)}function Rt(Mn){const St=n.get(Mn);if(St.__webglInit===void 0)return;const Cr=Mn.source,xi=M.get(Cr);if(xi){const Qi=xi[St.__cacheKey];Qi.usedTimes--,Qi.usedTimes===0&&qe(Mn),Object.keys(xi).length===0&&M.delete(Cr)}n.remove(Mn)}function qe(Mn){const St=n.get(Mn);s.deleteTexture(St.__webglTexture);const Cr=Mn.source,xi=M.get(Cr);delete xi[St.__cacheKey],o.memory.textures--}function pt(Mn){const St=n.get(Mn);if(Mn.depthTexture&&(Mn.depthTexture.dispose(),n.remove(Mn.depthTexture)),Mn.isWebGLCubeRenderTarget)for(let xi=0;xi<6;xi++){if(Array.isArray(St.__webglFramebuffer[xi]))for(let Qi=0;Qi=i.maxTextures&&Lr("WebGLTextures: Trying to use "+Mn+" texture units while this GPU supports only "+i.maxTextures),xn+=1,Mn}function Br(Mn){const St=[];return St.push(Mn.wrapS),St.push(Mn.wrapT),St.push(Mn.wrapR||0),St.push(Mn.magFilter),St.push(Mn.minFilter),St.push(Mn.anisotropy),St.push(Mn.internalFormat),St.push(Mn.format),St.push(Mn.type),St.push(Mn.generateMipmaps),St.push(Mn.premultiplyAlpha),St.push(Mn.flipY),St.push(Mn.unpackAlignment),St.push(Mn.colorSpace),St.join()}function zr(Mn,St){const Cr=n.get(Mn);if(Mn.isVideoTexture&&da(Mn),Mn.isRenderTargetTexture===!1&&Mn.isExternalTexture!==!0&&Mn.version>0&&Cr.__version!==Mn.version){const xi=Mn.image;if(xi===null)Lr("WebGLRenderer: Texture marked for update but no image data found.");else if(xi.complete===!1)Lr("WebGLRenderer: Texture marked for update but image is incomplete");else{Nr(Cr,Mn,St);return}}else Mn.isExternalTexture&&(Cr.__webglTexture=Mn.sourceTexture?Mn.sourceTexture:null);t.bindTexture(s.TEXTURE_2D,Cr.__webglTexture,s.TEXTURE0+St)}function Dr(Mn,St){const Cr=n.get(Mn);if(Mn.isRenderTargetTexture===!1&&Mn.version>0&&Cr.__version!==Mn.version){Nr(Cr,Mn,St);return}else Mn.isExternalTexture&&(Cr.__webglTexture=Mn.sourceTexture?Mn.sourceTexture:null);t.bindTexture(s.TEXTURE_2D_ARRAY,Cr.__webglTexture,s.TEXTURE0+St)}function Zr(Mn,St){const Cr=n.get(Mn);if(Mn.isRenderTargetTexture===!1&&Mn.version>0&&Cr.__version!==Mn.version){Nr(Cr,Mn,St);return}t.bindTexture(s.TEXTURE_3D,Cr.__webglTexture,s.TEXTURE0+St)}function Ti(Mn,St){const Cr=n.get(Mn);if(Mn.isCubeDepthTexture!==!0&&Mn.version>0&&Cr.__version!==Mn.version){Yr(Cr,Mn,St);return}t.bindTexture(s.TEXTURE_CUBE_MAP,Cr.__webglTexture,s.TEXTURE0+St)}const ds={[$t]:s.REPEAT,[Vt]:s.CLAMP_TO_EDGE,[Qt]:s.MIRRORED_REPEAT},As={[cn]:s.NEAREST,[Yn]:s.NEAREST_MIPMAP_NEAREST,[Sr]:s.NEAREST_MIPMAP_LINEAR,[vr]:s.LINEAR,[Ki]:s.LINEAR_MIPMAP_NEAREST,[yi]:s.LINEAR_MIPMAP_LINEAR},Xr={[gu]:s.NEVER,[$u]:s.ALWAYS,[oo]:s.LESS,[jc]:s.LEQUAL,[Ic]:s.EQUAL,[Ji]:s.GEQUAL,[ph]:s.GREATER,[Lo]:s.NOTEQUAL};function Yi(Mn,St){if(St.type===dt&&e.has("OES_texture_float_linear")===!1&&(St.magFilter===vr||St.magFilter===Ki||St.magFilter===Sr||St.magFilter===yi||St.minFilter===vr||St.minFilter===Ki||St.minFilter===Sr||St.minFilter===yi)&&Lr("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),s.texParameteri(Mn,s.TEXTURE_WRAP_S,ds[St.wrapS]),s.texParameteri(Mn,s.TEXTURE_WRAP_T,ds[St.wrapT]),(Mn===s.TEXTURE_3D||Mn===s.TEXTURE_2D_ARRAY)&&s.texParameteri(Mn,s.TEXTURE_WRAP_R,ds[St.wrapR]),s.texParameteri(Mn,s.TEXTURE_MAG_FILTER,As[St.magFilter]),s.texParameteri(Mn,s.TEXTURE_MIN_FILTER,As[St.minFilter]),St.compareFunction&&(s.texParameteri(Mn,s.TEXTURE_COMPARE_MODE,s.COMPARE_REF_TO_TEXTURE),s.texParameteri(Mn,s.TEXTURE_COMPARE_FUNC,Xr[St.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(St.magFilter===cn||St.minFilter!==Sr&&St.minFilter!==yi||St.type===dt&&e.has("OES_texture_float_linear")===!1)return;if(St.anisotropy>1||n.get(St).__currentAnisotropy){const Cr=e.get("EXT_texture_filter_anisotropic");s.texParameterf(Mn,Cr.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(St.anisotropy,i.getMaxAnisotropy())),n.get(St).__currentAnisotropy=St.anisotropy}}}function ps(Mn,St){let Cr=!1;Mn.__webglInit===void 0&&(Mn.__webglInit=!0,St.addEventListener("dispose",Ye));const xi=St.source;let Qi=M.get(xi);Qi===void 0&&(Qi={},M.set(xi,Qi));const Si=Br(St);if(Si!==Mn.__cacheKey){Qi[Si]===void 0&&(Qi[Si]={texture:s.createTexture(),usedTimes:0},o.memory.textures++,Cr=!0),Qi[Si].usedTimes++;const La=Qi[Mn.__cacheKey];La!==void 0&&(Qi[Mn.__cacheKey].usedTimes--,La.usedTimes===0&&qe(St)),Mn.__cacheKey=Si,Mn.__webglTexture=Qi[Si].texture}return Cr}function Xa(Mn,St,Cr){return Math.floor(Math.floor(Mn/Cr)/St)}function Pi(Mn,St,Cr,xi){const Si=Mn.updateRanges;if(Si.length===0)t.texSubImage2D(s.TEXTURE_2D,0,0,0,St.width,St.height,Cr,xi,St.data);else{Si.sort((hs,js)=>hs.start-js.start);let La=0;for(let hs=1;hs0){Mr&&la&&t.texStorage2D(s.TEXTURE_2D,ga,Va,Wo[0].width,Wo[0].height);for(let gs=0,Wi=Wo.length;gs0){const Ws=l($s.width,$s.height,St.format,St.type);for(const Eo of St.layerUpdates){const Wu=$s.data.subarray(Eo*Ws/$s.data.BYTES_PER_ELEMENT,(Eo+1)*Ws/$s.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,gs,0,0,Eo,$s.width,$s.height,1,js,Wu)}St.clearLayerUpdates()}else t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,gs,0,0,0,$s.width,$s.height,hs.depth,js,$s.data)}else t.compressedTexImage3D(s.TEXTURE_2D_ARRAY,gs,Va,$s.width,$s.height,hs.depth,0,$s.data,0,0);else Lr("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else Mr?Ts&&t.texSubImage3D(s.TEXTURE_2D_ARRAY,gs,0,0,0,$s.width,$s.height,hs.depth,js,Fa,$s.data):t.texImage3D(s.TEXTURE_2D_ARRAY,gs,Va,$s.width,$s.height,hs.depth,0,js,Fa,$s.data)}else{Mr&&la&&t.texStorage2D(s.TEXTURE_2D,ga,Va,Wo[0].width,Wo[0].height);for(let gs=0,Wi=Wo.length;gs0){const gs=l(hs.width,hs.height,St.format,St.type);for(const Wi of St.layerUpdates){const Ws=hs.data.subarray(Wi*gs/hs.data.BYTES_PER_ELEMENT,(Wi+1)*gs/hs.data.BYTES_PER_ELEMENT);t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,Wi,hs.width,hs.height,1,js,Fa,Ws)}St.clearLayerUpdates()}else t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,0,hs.width,hs.height,hs.depth,js,Fa,hs.data)}else t.texImage3D(s.TEXTURE_2D_ARRAY,0,Va,hs.width,hs.height,hs.depth,0,js,Fa,hs.data);else if(St.isData3DTexture)Mr?(la&&t.texStorage3D(s.TEXTURE_3D,ga,Va,hs.width,hs.height,hs.depth),Ts&&t.texSubImage3D(s.TEXTURE_3D,0,0,0,0,hs.width,hs.height,hs.depth,js,Fa,hs.data)):t.texImage3D(s.TEXTURE_3D,0,Va,hs.width,hs.height,hs.depth,0,js,Fa,hs.data);else if(St.isFramebufferTexture){if(la)if(Mr)t.texStorage2D(s.TEXTURE_2D,ga,Va,hs.width,hs.height);else{let gs=hs.width,Wi=hs.height;for(let Ws=0;Ws>=1,Wi>>=1}}else if(Wo.length>0){if(Mr&&la){const gs=Ps(Wo[0]);t.texStorage2D(s.TEXTURE_2D,ga,Va,gs.width,gs.height)}for(let gs=0,Wi=Wo.length;gs0&&ga++;const Wi=Ps(js[0]);t.texStorage2D(s.TEXTURE_CUBE_MAP,ga,Wo,Wi.width,Wi.height)}for(let Wi=0;Wi<6;Wi++)if(hs){Mr?Ts&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Wi,0,0,0,js[Wi].width,js[Wi].height,Va,$s,js[Wi].data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Wi,0,Wo,js[Wi].width,js[Wi].height,0,Va,$s,js[Wi].data);for(let Ws=0;Ws>Si),Fa=Math.max(1,St.height>>Si);Qi===s.TEXTURE_3D||Qi===s.TEXTURE_2D_ARRAY?t.texImage3D(Qi,Si,Na,js,Fa,St.depth,0,La,Vs,null):t.texImage2D(Qi,Si,Na,js,Fa,0,La,Vs,null)}t.bindFramebuffer(s.FRAMEBUFFER,Mn),ja(St)?u.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,xi,Qi,hs.__webglTexture,0,Pn(St)):(Qi===s.TEXTURE_2D||Qi>=s.TEXTURE_CUBE_MAP_POSITIVE_X&&Qi<=s.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&s.framebufferTexture2D(s.FRAMEBUFFER,xi,Qi,hs.__webglTexture,Si),t.bindFramebuffer(s.FRAMEBUFFER,null)}function oa(Mn,St,Cr){if(s.bindRenderbuffer(s.RENDERBUFFER,Mn),St.depthBuffer){const xi=St.depthTexture,Qi=xi&&xi.isDepthTexture?xi.type:null,Si=ke(St.stencilBuffer,Qi),La=St.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT;ja(St)?u.renderbufferStorageMultisampleEXT(s.RENDERBUFFER,Pn(St),Si,St.width,St.height):Cr?s.renderbufferStorageMultisample(s.RENDERBUFFER,Pn(St),Si,St.width,St.height):s.renderbufferStorage(s.RENDERBUFFER,Si,St.width,St.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,La,s.RENDERBUFFER,Mn)}else{const xi=St.textures;for(let Qi=0;Qi{delete St.__boundDepthTexture,delete St.__depthDisposeCallback,xi.removeEventListener("dispose",Qi)};xi.addEventListener("dispose",Qi),St.__depthDisposeCallback=Qi}St.__boundDepthTexture=xi}if(Mn.depthTexture&&!St.__autoAllocateDepthBuffer)if(Cr)for(let xi=0;xi<6;xi++)Ms(St.__webglFramebuffer[xi],Mn,xi);else{const xi=Mn.texture.mipmaps;xi&&xi.length>0?Ms(St.__webglFramebuffer[0],Mn,0):Ms(St.__webglFramebuffer,Mn,0)}else if(Cr){St.__webglDepthbuffer=[];for(let xi=0;xi<6;xi++)if(t.bindFramebuffer(s.FRAMEBUFFER,St.__webglFramebuffer[xi]),St.__webglDepthbuffer[xi]===void 0)St.__webglDepthbuffer[xi]=s.createRenderbuffer(),oa(St.__webglDepthbuffer[xi],Mn,!1);else{const Qi=Mn.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,Si=St.__webglDepthbuffer[xi];s.bindRenderbuffer(s.RENDERBUFFER,Si),s.framebufferRenderbuffer(s.FRAMEBUFFER,Qi,s.RENDERBUFFER,Si)}}else{const xi=Mn.texture.mipmaps;if(xi&&xi.length>0?t.bindFramebuffer(s.FRAMEBUFFER,St.__webglFramebuffer[0]):t.bindFramebuffer(s.FRAMEBUFFER,St.__webglFramebuffer),St.__webglDepthbuffer===void 0)St.__webglDepthbuffer=s.createRenderbuffer(),oa(St.__webglDepthbuffer,Mn,!1);else{const Qi=Mn.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,Si=St.__webglDepthbuffer;s.bindRenderbuffer(s.RENDERBUFFER,Si),s.framebufferRenderbuffer(s.FRAMEBUFFER,Qi,s.RENDERBUFFER,Si)}}t.bindFramebuffer(s.FRAMEBUFFER,null)}function Qo(Mn,St,Cr){const xi=n.get(Mn);St!==void 0&&cs(xi.__webglFramebuffer,Mn,Mn.texture,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,0),Cr!==void 0&&Ha(Mn)}function co(Mn){const St=Mn.texture,Cr=n.get(Mn),xi=n.get(St);Mn.addEventListener("dispose",ht);const Qi=Mn.textures,Si=Mn.isWebGLCubeRenderTarget===!0,La=Qi.length>1;if(La||(xi.__webglTexture===void 0&&(xi.__webglTexture=s.createTexture()),xi.__version=St.version,o.memory.textures++),Si){Cr.__webglFramebuffer=[];for(let Vs=0;Vs<6;Vs++)if(St.mipmaps&&St.mipmaps.length>0){Cr.__webglFramebuffer[Vs]=[];for(let Na=0;Na0){Cr.__webglFramebuffer=[];for(let Vs=0;Vs0&&ja(Mn)===!1){Cr.__webglMultisampledFramebuffer=s.createFramebuffer(),Cr.__webglColorRenderbuffer=[],t.bindFramebuffer(s.FRAMEBUFFER,Cr.__webglMultisampledFramebuffer);for(let Vs=0;Vs0)for(let Na=0;Na0)for(let Na=0;Na0){if(ja(Mn)===!1){const St=Mn.textures,Cr=Mn.width,xi=Mn.height;let Qi=s.COLOR_BUFFER_BIT;const Si=Mn.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,La=n.get(Mn),Vs=St.length>1;if(Vs)for(let po=0;po0?t.bindFramebuffer(s.DRAW_FRAMEBUFFER,La.__webglFramebuffer[0]):t.bindFramebuffer(s.DRAW_FRAMEBUFFER,La.__webglFramebuffer);for(let po=0;po0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&St.__useRenderToTexture!==!1}function da(Mn){const St=o.render.frame;g.get(Mn)!==St&&(g.set(Mn,St),Mn.update())}function ho(Mn,St){const Cr=Mn.colorSpace,xi=Mn.format,Qi=Mn.type;return Mn.isCompressedTexture===!0||Mn.isVideoTexture===!0||Cr!==No&&Cr!==ao&&(xr.getTransfer(Cr)===ws?(xi!==L||Qi!==es)&&Lr("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Gr("WebGLTextures: Unsupported texture color space:",Cr)),St}function Ps(Mn){return typeof HTMLImageElement!="undefined"&&Mn instanceof HTMLImageElement?(d.width=Mn.naturalWidth||Mn.width,d.height=Mn.naturalHeight||Mn.height):typeof VideoFrame!="undefined"&&Mn instanceof VideoFrame?(d.width=Mn.displayWidth,d.height=Mn.displayHeight):(d.width=Mn.width,d.height=Mn.height),d}this.allocateTextureUnit=pr,this.resetTextureUnits=cr,this.setTexture2D=zr,this.setTexture2DArray=Dr,this.setTexture3D=Zr,this.setTextureCube=Ti,this.rebindTextures=Qo,this.setupRenderTarget=co,this.updateRenderTargetMipmap=Li,this.updateMultisampleRenderTarget=Fs,this.setupDepthRenderbuffer=Ha,this.setupFrameBufferTexture=cs,this.useMultisampledRTT=ja,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function O3(s,e){function t(n,i=ao){let a;const o=xr.getTransfer(i);if(n===es)return s.UNSIGNED_BYTE;if(n===bn)return s.UNSIGNED_SHORT_4_4_4_4;if(n===Jt)return s.UNSIGNED_SHORT_5_5_5_1;if(n===rr)return s.UNSIGNED_INT_5_9_9_9_REV;if(n===Kr)return s.UNSIGNED_INT_10F_11F_11F_REV;if(n===Ci)return s.BYTE;if(n===En)return s.SHORT;if(n===rn)return s.UNSIGNED_SHORT;if(n===Xt)return s.INT;if(n===st)return s.UNSIGNED_INT;if(n===dt)return s.FLOAT;if(n===Wt)return s.HALF_FLOAT;if(n===si)return s.ALPHA;if(n===Ie)return s.RGB;if(n===L)return s.RGBA;if(n===Q)return s.DEPTH_COMPONENT;if(n===w)return s.DEPTH_STENCIL;if(n===z)return s.RED;if(n===ie)return s.RED_INTEGER;if(n===ze)return s.RG;if(n===Je)return s.RG_INTEGER;if(n===xt)return s.RGBA_INTEGER;if(n===Sn||n===Oe||n===Qe||n===Re)if(o===ws)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(n===Sn)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===Oe)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Qe)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Re)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(n===Sn)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===Oe)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Qe)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Re)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Ke||n===gt||n===tn||n===yt)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(n===Ke)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===gt)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===tn)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===yt)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Yt||n===Rn||n===er||n===Jn||n===kr||n===fr||n===wr)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(n===Yt||n===Rn)return o===ws?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(n===er)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC;if(n===Jn)return a.COMPRESSED_R11_EAC;if(n===kr)return a.COMPRESSED_SIGNED_R11_EAC;if(n===fr)return a.COMPRESSED_RG11_EAC;if(n===wr)return a.COMPRESSED_SIGNED_RG11_EAC}else return null;if(n===ei||n===_n||n===jn||n===Hr||n===Pr||n===$i||n===Zi||n===Xi||n===Ei||n===ms||n===_i||n===Es||n===ua||n===Hn)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(n===ei)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===_n)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===jn)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Hr)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Pr)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===$i)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Zi)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Xi)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Ei)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===ms)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===_i)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Es)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===ua)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Hn)return o===ws?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Pt||n===Gt||n===Bt)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(n===Pt)return o===ws?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Gt)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Bt)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===yn||n===Ln||n===gr||n===Rr)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(n===yn)return a.COMPRESSED_RED_RGTC1_EXT;if(n===Ln)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===gr)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Rr)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===ar?s.UNSIGNED_INT_24_8:s[n]!==void 0?s[n]:null}return{convert:t}}const D3=` -void main() { - - gl_Position = vec4( position, 1.0 ); - -}`,k3=` -uniform sampler2DArray depthColor; -uniform float depthWidth; -uniform float depthHeight; - -void main() { - - vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); - - if ( coord.x >= 1.0 ) { - - gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; - - } else { - - gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; - - } - -}`;class V3{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const n=new Fo(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new nh({vertexShader:D3,fragmentShader:k3,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Il(new Tc(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class z3 extends bl{constructor(e,t){super();const n=this;let i=null,a=1,o=null,u="local-floor",c=1,d=null,g=null,v=null,M=null,B=null,I=null;const ne=typeof XRWebGLBinding!="undefined",ee=new V3,q={},ye=t.getContextAttributes();let Ce=null,ke=null;const nt=[],Ye=[],ht=new ce;let Rt=null;const qe=new vo;qe.viewport=new Ni;const pt=new vo;pt.viewport=new Ni;const xn=[qe,pt],cr=new jp;let pr=null,Br=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(Nr){let Yr=nt[Nr];return Yr===void 0&&(Yr=new Ra,nt[Nr]=Yr),Yr.getTargetRaySpace()},this.getControllerGrip=function(Nr){let Yr=nt[Nr];return Yr===void 0&&(Yr=new Ra,nt[Nr]=Yr),Yr.getGripSpace()},this.getHand=function(Nr){let Yr=nt[Nr];return Yr===void 0&&(Yr=new Ra,nt[Nr]=Yr),Yr.getHandSpace()};function zr(Nr){const Yr=Ye.indexOf(Nr.inputSource);if(Yr===-1)return;const cs=nt[Yr];cs!==void 0&&(cs.update(Nr.inputSource,Nr.frame,d||o),cs.dispatchEvent({type:Nr.type,data:Nr.inputSource}))}function Dr(){i.removeEventListener("select",zr),i.removeEventListener("selectstart",zr),i.removeEventListener("selectend",zr),i.removeEventListener("squeeze",zr),i.removeEventListener("squeezestart",zr),i.removeEventListener("squeezeend",zr),i.removeEventListener("end",Dr),i.removeEventListener("inputsourceschange",Zr);for(let Nr=0;Nr=0&&(Ye[oa]=null,nt[oa].disconnect(cs))}for(let Yr=0;Yr=Ye.length){Ye.push(cs),oa=Ha;break}else if(Ye[Ha]===null){Ye[Ha]=cs,oa=Ha;break}if(oa===-1)break}const Ms=nt[oa];Ms&&Ms.connect(cs)}}const Ti=new le,ds=new le;function As(Nr,Yr,cs){Ti.setFromMatrixPosition(Yr.matrixWorld),ds.setFromMatrixPosition(cs.matrixWorld);const oa=Ti.distanceTo(ds),Ms=Yr.projectionMatrix.elements,Ha=cs.projectionMatrix.elements,Qo=Ms[14]/(Ms[10]-1),co=Ms[14]/(Ms[10]+1),Li=(Ms[9]+1)/Ms[5],os=(Ms[9]-1)/Ms[5],Hi=(Ms[8]-1)/Ms[0],Fs=(Ha[8]+1)/Ha[0],Pn=Qo*Hi,ja=Qo*Fs,da=oa/(-Hi+Fs),ho=da*-Hi;if(Yr.matrixWorld.decompose(Nr.position,Nr.quaternion,Nr.scale),Nr.translateX(ho),Nr.translateZ(da),Nr.matrixWorld.compose(Nr.position,Nr.quaternion,Nr.scale),Nr.matrixWorldInverse.copy(Nr.matrixWorld).invert(),Ms[10]===-1)Nr.projectionMatrix.copy(Yr.projectionMatrix),Nr.projectionMatrixInverse.copy(Yr.projectionMatrixInverse);else{const Ps=Qo+da,Mn=co+da,St=Pn-ho,Cr=ja+(oa-ho),xi=Li*co/Mn*Ps,Qi=os*co/Mn*Ps;Nr.projectionMatrix.makePerspective(St,Cr,xi,Qi,Ps,Mn),Nr.projectionMatrixInverse.copy(Nr.projectionMatrix).invert()}}function Xr(Nr,Yr){Yr===null?Nr.matrixWorld.copy(Nr.matrix):Nr.matrixWorld.multiplyMatrices(Yr.matrixWorld,Nr.matrix),Nr.matrixWorldInverse.copy(Nr.matrixWorld).invert()}this.updateCamera=function(Nr){if(i===null)return;let Yr=Nr.near,cs=Nr.far;ee.texture!==null&&(ee.depthNear>0&&(Yr=ee.depthNear),ee.depthFar>0&&(cs=ee.depthFar)),cr.near=pt.near=qe.near=Yr,cr.far=pt.far=qe.far=cs,(pr!==cr.near||Br!==cr.far)&&(i.updateRenderState({depthNear:cr.near,depthFar:cr.far}),pr=cr.near,Br=cr.far),cr.layers.mask=Nr.layers.mask|6,qe.layers.mask=cr.layers.mask&3,pt.layers.mask=cr.layers.mask&5;const oa=Nr.parent,Ms=cr.cameras;Xr(cr,oa);for(let Ha=0;Ha0&&(ee.alphaTest.value=q.alphaTest);const ye=e.get(q),Ce=ye.envMap,ke=ye.envMapRotation;Ce&&(ee.envMap.value=Ce,a0.copy(ke),a0.x*=-1,a0.y*=-1,a0.z*=-1,Ce.isCubeTexture&&Ce.isRenderTargetTexture===!1&&(a0.y*=-1,a0.z*=-1),ee.envMapRotation.value.setFromMatrix4(G3.makeRotationFromEuler(a0)),ee.flipEnvMap.value=Ce.isCubeTexture&&Ce.isRenderTargetTexture===!1?-1:1,ee.reflectivity.value=q.reflectivity,ee.ior.value=q.ior,ee.refractionRatio.value=q.refractionRatio),q.lightMap&&(ee.lightMap.value=q.lightMap,ee.lightMapIntensity.value=q.lightMapIntensity,t(q.lightMap,ee.lightMapTransform)),q.aoMap&&(ee.aoMap.value=q.aoMap,ee.aoMapIntensity.value=q.aoMapIntensity,t(q.aoMap,ee.aoMapTransform))}function o(ee,q){ee.diffuse.value.copy(q.color),ee.opacity.value=q.opacity,q.map&&(ee.map.value=q.map,t(q.map,ee.mapTransform))}function u(ee,q){ee.dashSize.value=q.dashSize,ee.totalSize.value=q.dashSize+q.gapSize,ee.scale.value=q.scale}function c(ee,q,ye,Ce){ee.diffuse.value.copy(q.color),ee.opacity.value=q.opacity,ee.size.value=q.size*ye,ee.scale.value=Ce*.5,q.map&&(ee.map.value=q.map,t(q.map,ee.uvTransform)),q.alphaMap&&(ee.alphaMap.value=q.alphaMap,t(q.alphaMap,ee.alphaMapTransform)),q.alphaTest>0&&(ee.alphaTest.value=q.alphaTest)}function d(ee,q){ee.diffuse.value.copy(q.color),ee.opacity.value=q.opacity,ee.rotation.value=q.rotation,q.map&&(ee.map.value=q.map,t(q.map,ee.mapTransform)),q.alphaMap&&(ee.alphaMap.value=q.alphaMap,t(q.alphaMap,ee.alphaMapTransform)),q.alphaTest>0&&(ee.alphaTest.value=q.alphaTest)}function g(ee,q){ee.specular.value.copy(q.specular),ee.shininess.value=Math.max(q.shininess,1e-4)}function v(ee,q){q.gradientMap&&(ee.gradientMap.value=q.gradientMap)}function M(ee,q){ee.metalness.value=q.metalness,q.metalnessMap&&(ee.metalnessMap.value=q.metalnessMap,t(q.metalnessMap,ee.metalnessMapTransform)),ee.roughness.value=q.roughness,q.roughnessMap&&(ee.roughnessMap.value=q.roughnessMap,t(q.roughnessMap,ee.roughnessMapTransform)),q.envMap&&(ee.envMapIntensity.value=q.envMapIntensity)}function B(ee,q,ye){ee.ior.value=q.ior,q.sheen>0&&(ee.sheenColor.value.copy(q.sheenColor).multiplyScalar(q.sheen),ee.sheenRoughness.value=q.sheenRoughness,q.sheenColorMap&&(ee.sheenColorMap.value=q.sheenColorMap,t(q.sheenColorMap,ee.sheenColorMapTransform)),q.sheenRoughnessMap&&(ee.sheenRoughnessMap.value=q.sheenRoughnessMap,t(q.sheenRoughnessMap,ee.sheenRoughnessMapTransform))),q.clearcoat>0&&(ee.clearcoat.value=q.clearcoat,ee.clearcoatRoughness.value=q.clearcoatRoughness,q.clearcoatMap&&(ee.clearcoatMap.value=q.clearcoatMap,t(q.clearcoatMap,ee.clearcoatMapTransform)),q.clearcoatRoughnessMap&&(ee.clearcoatRoughnessMap.value=q.clearcoatRoughnessMap,t(q.clearcoatRoughnessMap,ee.clearcoatRoughnessMapTransform)),q.clearcoatNormalMap&&(ee.clearcoatNormalMap.value=q.clearcoatNormalMap,t(q.clearcoatNormalMap,ee.clearcoatNormalMapTransform),ee.clearcoatNormalScale.value.copy(q.clearcoatNormalScale),q.side===de&&ee.clearcoatNormalScale.value.negate())),q.dispersion>0&&(ee.dispersion.value=q.dispersion),q.iridescence>0&&(ee.iridescence.value=q.iridescence,ee.iridescenceIOR.value=q.iridescenceIOR,ee.iridescenceThicknessMinimum.value=q.iridescenceThicknessRange[0],ee.iridescenceThicknessMaximum.value=q.iridescenceThicknessRange[1],q.iridescenceMap&&(ee.iridescenceMap.value=q.iridescenceMap,t(q.iridescenceMap,ee.iridescenceMapTransform)),q.iridescenceThicknessMap&&(ee.iridescenceThicknessMap.value=q.iridescenceThicknessMap,t(q.iridescenceThicknessMap,ee.iridescenceThicknessMapTransform))),q.transmission>0&&(ee.transmission.value=q.transmission,ee.transmissionSamplerMap.value=ye.texture,ee.transmissionSamplerSize.value.set(ye.width,ye.height),q.transmissionMap&&(ee.transmissionMap.value=q.transmissionMap,t(q.transmissionMap,ee.transmissionMapTransform)),ee.thickness.value=q.thickness,q.thicknessMap&&(ee.thicknessMap.value=q.thicknessMap,t(q.thicknessMap,ee.thicknessMapTransform)),ee.attenuationDistance.value=q.attenuationDistance,ee.attenuationColor.value.copy(q.attenuationColor)),q.anisotropy>0&&(ee.anisotropyVector.value.set(q.anisotropy*Math.cos(q.anisotropyRotation),q.anisotropy*Math.sin(q.anisotropyRotation)),q.anisotropyMap&&(ee.anisotropyMap.value=q.anisotropyMap,t(q.anisotropyMap,ee.anisotropyMapTransform))),ee.specularIntensity.value=q.specularIntensity,ee.specularColor.value.copy(q.specularColor),q.specularColorMap&&(ee.specularColorMap.value=q.specularColorMap,t(q.specularColorMap,ee.specularColorMapTransform)),q.specularIntensityMap&&(ee.specularIntensityMap.value=q.specularIntensityMap,t(q.specularIntensityMap,ee.specularIntensityMapTransform))}function I(ee,q){q.matcap&&(ee.matcap.value=q.matcap)}function ne(ee,q){const ye=e.get(q).light;ee.referencePosition.value.setFromMatrixPosition(ye.matrixWorld),ee.nearDistance.value=ye.shadow.camera.near,ee.farDistance.value=ye.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function Q3(s,e,t,n){let i={},a={},o=[];const u=s.getParameter(s.MAX_UNIFORM_BUFFER_BINDINGS);function c(ye,Ce){const ke=Ce.program;n.uniformBlockBinding(ye,ke)}function d(ye,Ce){let ke=i[ye.id];ke===void 0&&(I(ye),ke=g(ye),i[ye.id]=ke,ye.addEventListener("dispose",ee));const nt=Ce.program;n.updateUBOMapping(ye,nt);const Ye=e.render.frame;a[ye.id]!==Ye&&(M(ye),a[ye.id]=Ye)}function g(ye){const Ce=v();ye.__bindingPointIndex=Ce;const ke=s.createBuffer(),nt=ye.__size,Ye=ye.usage;return s.bindBuffer(s.UNIFORM_BUFFER,ke),s.bufferData(s.UNIFORM_BUFFER,nt,Ye),s.bindBuffer(s.UNIFORM_BUFFER,null),s.bindBufferBase(s.UNIFORM_BUFFER,Ce,ke),ke}function v(){for(let ye=0;ye0&&(ke+=nt-Ye),ye.__size=ke,ye.__cache={},this}function ne(ye){const Ce={boundary:0,storage:0};return typeof ye=="number"||typeof ye=="boolean"?(Ce.boundary=4,Ce.storage=4):ye.isVector2?(Ce.boundary=8,Ce.storage=8):ye.isVector3||ye.isColor?(Ce.boundary=16,Ce.storage=12):ye.isVector4?(Ce.boundary=16,Ce.storage=16):ye.isMatrix3?(Ce.boundary=48,Ce.storage=48):ye.isMatrix4?(Ce.boundary=64,Ce.storage=64):ye.isTexture?Lr("WebGLRenderer: Texture samplers can not be part of an uniforms group."):Lr("WebGLRenderer: Unsupported uniform value type.",ye),Ce}function ee(ye){const Ce=ye.target;Ce.removeEventListener("dispose",ee);const ke=o.indexOf(Ce.__bindingPointIndex);o.splice(ke,1),s.deleteBuffer(i[Ce.id]),delete i[Ce.id],delete a[Ce.id]}function q(){for(const ye in i)s.deleteBuffer(i[ye]);o=[],i={},a={}}return{bind:c,update:d,dispose:q}}const W3=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]);let eg=null;function Z3(){return eg===null&&(eg=new ah(W3,16,16,ze,Wt),eg.name="DFG_LUT",eg.minFilter=vr,eg.magFilter=vr,eg.wrapS=Vt,eg.wrapT=Vt,eg.generateMipmaps=!1,eg.needsUpdate=!0),eg}class K3{constructor(e={}){const{canvas:t=yh(),context:n=null,depth:i=!0,stencil:a=!1,alpha:o=!1,antialias:u=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:d=!1,powerPreference:g="default",failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:M=!1,outputBufferType:B=es}=e;this.isWebGLRenderer=!0;let I;if(n!==null){if(typeof WebGLRenderingContext!="undefined"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");I=n.getContextAttributes().alpha}else I=o;const ne=B,ee=new Set([xt,Je,ie]),q=new Set([es,st,rn,ar,bn,Jt]),ye=new Uint32Array(4),Ce=new Int32Array(4);let ke=null,nt=null;const Ye=[],ht=[];let Rt=null;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=Ct,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const qe=this;let pt=!1;this._outputColorSpace=sl;let xn=0,cr=0,pr=null,Br=-1,zr=null;const Dr=new Ni,Zr=new Ni;let Ti=null;const ds=new Wr(0);let As=0,Xr=t.width,Yi=t.height,ps=1,Xa=null,Pi=null;const Nr=new Ni(0,0,Xr,Yi),Yr=new Ni(0,0,Xr,Yi);let cs=!1;const oa=new qu;let Ms=!1,Ha=!1;const Qo=new di,co=new le,Li=new Ni,os={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Hi=!1;function Fs(){return pr===null?ps:1}let Pn=n;function ja(an,Ur){return t.getContext(an,Ur)}try{const an={alpha:!0,depth:i,stencil:a,antialias:u,premultipliedAlpha:c,preserveDrawingBuffer:d,powerPreference:g,failIfMajorPerformanceCaveat:v};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${m}`),t.addEventListener("webglcontextlost",Eo,!1),t.addEventListener("webglcontextrestored",Wu,!1),t.addEventListener("webglcontextcreationerror",fu,!1),Pn===null){const Ur="webgl2";if(Pn=ja(Ur,an),Pn===null)throw ja(Ur)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(an){throw Gr("WebGLRenderer: "+an.message),an}let da,ho,Ps,Mn,St,Cr,xi,Qi,Si,La,Vs,Na,po,hs,js,Fa,Va,$s,Wo,Mr,la,Ts,ga,gs;function Wi(){da=new ZO(Pn),da.init(),Ts=new O3(Pn,da),ho=new OO(Pn,da,e,Ts),Ps=new L3(Pn,da),ho.reversedDepthBuffer&&M&&Ps.buffers.depth.setReversed(!0),Mn=new XO(Pn),St=new x3,Cr=new U3(Pn,da,Ps,St,ho,Ts,Mn),xi=new kO(qe),Qi=new WO(qe),Si=new FL(Pn),ga=new LO(Pn,Si),La=new KO(Pn,Si,Mn,ga),Vs=new YO(Pn,La,Si,Mn),Wo=new jO(Pn,ho,Cr),Fa=new DO(St),Na=new y3(qe,xi,Qi,da,ho,ga,Fa),po=new H3(qe,St),hs=new _3,js=new T3(da),$s=new PO(qe,xi,Qi,Ps,Vs,I,c),Va=new F3(qe,Vs,ho),gs=new Q3(Pn,Mn,ho,Ps),Mr=new UO(Pn,da,Mn),la=new $O(Pn,da,Mn),Mn.programs=Na.programs,qe.capabilities=ho,qe.extensions=da,qe.properties=St,qe.renderLists=hs,qe.shadowMap=Va,qe.state=Ps,qe.info=Mn}Wi(),ne!==es&&(Rt=new JO(ne,t.width,t.height,i,a));const Ws=new z3(qe,Pn);this.xr=Ws,this.getContext=function(){return Pn},this.getContextAttributes=function(){return Pn.getContextAttributes()},this.forceContextLoss=function(){const an=da.get("WEBGL_lose_context");an&&an.loseContext()},this.forceContextRestore=function(){const an=da.get("WEBGL_lose_context");an&&an.restoreContext()},this.getPixelRatio=function(){return ps},this.setPixelRatio=function(an){an!==void 0&&(ps=an,this.setSize(Xr,Yi,!1))},this.getSize=function(an){return an.set(Xr,Yi)},this.setSize=function(an,Ur,hi=!0){if(Ws.isPresenting){Lr("WebGLRenderer: Can't change size while VR device is presenting.");return}Xr=an,Yi=Ur,t.width=Math.floor(an*ps),t.height=Math.floor(Ur*ps),hi===!0&&(t.style.width=an+"px",t.style.height=Ur+"px"),Rt!==null&&Rt.setSize(t.width,t.height),this.setViewport(0,0,an,Ur)},this.getDrawingBufferSize=function(an){return an.set(Xr*ps,Yi*ps).floor()},this.setDrawingBufferSize=function(an,Ur,hi){Xr=an,Yi=Ur,ps=hi,t.width=Math.floor(an*hi),t.height=Math.floor(Ur*hi),this.setViewport(0,0,an,Ur)},this.setEffects=function(an){if(ne===es){console.error("THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.");return}if(an){for(let Ur=0;Ur{function qs(){if(li.forEach(function(ba){St.get(ba).currentProgram.isReady()&&li.delete(ba)}),li.size===0){Qr(an);return}setTimeout(qs,10)}da.get("KHR_parallel_shader_compile")!==null?qs():setTimeout(qs,10)})};let TE=null;function G$(an){TE&&TE(an)}function xP(){U0.stop()}function bP(){U0.start()}const U0=new bC;U0.setAnimationLoop(G$),typeof self!="undefined"&&U0.setContext(self),this.setAnimationLoop=function(an){TE=an,Ws.setAnimationLoop(an),an===null?U0.stop():U0.start()},Ws.addEventListener("sessionstart",xP),Ws.addEventListener("sessionend",bP),this.render=function(an,Ur){if(Ur!==void 0&&Ur.isCamera!==!0){Gr("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(pt===!0)return;const hi=Ws.enabled===!0&&Ws.isPresenting===!0,li=Rt!==null&&(pr===null||hi)&&Rt.begin(qe,pr);if(an.matrixWorldAutoUpdate===!0&&an.updateMatrixWorld(),Ur.parent===null&&Ur.matrixWorldAutoUpdate===!0&&Ur.updateMatrixWorld(),Ws.enabled===!0&&Ws.isPresenting===!0&&(Rt===null||Rt.isCompositing()===!1)&&(Ws.cameraAutoUpdate===!0&&Ws.updateCamera(Ur),Ur=Ws.getCamera()),an.isScene===!0&&an.onBeforeRender(qe,an,Ur,pr),nt=js.get(an,ht.length),nt.init(Ur),ht.push(nt),Qo.multiplyMatrices(Ur.projectionMatrix,Ur.matrixWorldInverse),oa.setFromProjectionMatrix(Qo,gl,Ur.reversedDepth),Ha=this.localClippingEnabled,Ms=Fa.init(this.clippingPlanes,Ha),ke=hs.get(an,Ye.length),ke.init(),Ye.push(ke),Ws.enabled===!0&&Ws.isPresenting===!0){const ba=qe.xr.getDepthSensingMesh();ba!==null&&BE(ba,Ur,-1/0,qe.sortObjects)}BE(an,Ur,0,qe.sortObjects),ke.finish(),qe.sortObjects===!0&&ke.sort(Xa,Pi),Hi=Ws.enabled===!1||Ws.isPresenting===!1||Ws.hasDepthSensing()===!1,Hi&&$s.addToRenderList(ke,an),this.info.render.frame++,Ms===!0&&Fa.beginShadows();const Qr=nt.state.shadowsArray;if(Va.render(Qr,an,Ur),Ms===!0&&Fa.endShadows(),this.info.autoReset===!0&&this.info.reset(),(li&&Rt.hasRenderPass())===!1){const ba=ke.opaque,ia=ke.transmissive;if(nt.setupLights(),Ur.isArrayCamera){const Ta=Ur.cameras;if(ia.length>0)for(let Qa=0,yo=Ta.length;Qa0&&wP(ba,ia,an,Ur),Hi&&$s.render(an),_P(ke,an,Ur)}pr!==null&&cr===0&&(Cr.updateMultisampleRenderTarget(pr),Cr.updateRenderTargetMipmap(pr)),li&&Rt.end(qe),an.isScene===!0&&an.onAfterRender(qe,an,Ur),ga.resetDefaultState(),Br=-1,zr=null,ht.pop(),ht.length>0?(nt=ht[ht.length-1],Ms===!0&&Fa.setGlobalState(qe.clippingPlanes,nt.state.camera)):nt=null,Ye.pop(),Ye.length>0?ke=Ye[Ye.length-1]:ke=null};function BE(an,Ur,hi,li){if(an.visible===!1)return;if(an.layers.test(Ur.layers)){if(an.isGroup)hi=an.renderOrder;else if(an.isLOD)an.autoUpdate===!0&&an.update(Ur);else if(an.isLight)nt.pushLight(an),an.castShadow&&nt.pushShadow(an);else if(an.isSprite){if(!an.frustumCulled||oa.intersectsSprite(an)){li&&Li.setFromMatrixPosition(an.matrixWorld).applyMatrix4(Qo);const ba=Vs.update(an),ia=an.material;ia.visible&&ke.push(an,ba,ia,hi,Li.z,null)}}else if((an.isMesh||an.isLine||an.isPoints)&&(!an.frustumCulled||oa.intersectsObject(an))){const ba=Vs.update(an),ia=an.material;if(li&&(an.boundingSphere!==void 0?(an.boundingSphere===null&&an.computeBoundingSphere(),Li.copy(an.boundingSphere.center)):(ba.boundingSphere===null&&ba.computeBoundingSphere(),Li.copy(ba.boundingSphere.center)),Li.applyMatrix4(an.matrixWorld).applyMatrix4(Qo)),Array.isArray(ia)){const Ta=ba.groups;for(let Qa=0,yo=Ta.length;Qa0&&ew(Qr,Ur,hi),qs.length>0&&ew(qs,Ur,hi),ba.length>0&&ew(ba,Ur,hi),Ps.buffers.depth.setTest(!0),Ps.buffers.depth.setMask(!0),Ps.buffers.color.setMask(!0),Ps.setPolygonOffset(!1)}function wP(an,Ur,hi,li){if((hi.isScene===!0?hi.overrideMaterial:null)!==null)return;if(nt.state.transmissionRenderTarget[li.id]===void 0){const nl=da.has("EXT_color_buffer_half_float")||da.has("EXT_color_buffer_float");nt.state.transmissionRenderTarget[li.id]=new Os(1,1,{generateMipmaps:!0,type:nl?Wt:es,minFilter:yi,samples:ho.samples,stencilBuffer:a,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:xr.workingColorSpace})}const qs=nt.state.transmissionRenderTarget[li.id],ba=li.viewport||Dr;qs.setSize(ba.z*qe.transmissionResolutionScale,ba.w*qe.transmissionResolutionScale);const ia=qe.getRenderTarget(),Ta=qe.getActiveCubeFace(),Qa=qe.getActiveMipmapLevel();qe.setRenderTarget(qs),qe.getClearColor(ds),As=qe.getClearAlpha(),As<1&&qe.setClearColor(16777215,.5),qe.clear(),Hi&&$s.render(hi);const yo=qe.toneMapping;qe.toneMapping=Ct;const io=li.viewport;if(li.viewport!==void 0&&(li.viewport=void 0),nt.setupLightsView(li),Ms===!0&&Fa.setGlobalState(qe.clippingPlanes,li),ew(an,hi,li),Cr.updateMultisampleRenderTarget(qs),Cr.updateRenderTargetMipmap(qs),da.has("WEBGL_multisampled_render_to_texture")===!1){let nl=!1;for(let Eu=0,Dc=Ur.length;Eu0),io=!!hi.morphAttributes.position,nl=!!hi.morphAttributes.normal,Eu=!!hi.morphAttributes.color;let Dc=Ct;li.toneMapped&&(pr===null||pr.isXRRenderTarget===!0)&&(Dc=qe.toneMapping);const kc=hi.morphAttributes.position||hi.morphAttributes.normal||hi.morphAttributes.color,Pu=kc!==void 0?kc.length:0,so=St.get(li),Au=nt.state.lights;if(Ms===!0&&(Ha===!0||an!==zr)){const cf=an===zr&&li.id===Br;Fa.setState(li,an,cf)}let Vl=!1;li.version===so.__version?(so.needsLights&&so.lightsStateVersion!==Au.state.version||so.outputColorSpace!==ia||Qr.isBatchedMesh&&so.batching===!1||!Qr.isBatchedMesh&&so.batching===!0||Qr.isBatchedMesh&&so.batchingColor===!0&&Qr.colorTexture===null||Qr.isBatchedMesh&&so.batchingColor===!1&&Qr.colorTexture!==null||Qr.isInstancedMesh&&so.instancing===!1||!Qr.isInstancedMesh&&so.instancing===!0||Qr.isSkinnedMesh&&so.skinning===!1||!Qr.isSkinnedMesh&&so.skinning===!0||Qr.isInstancedMesh&&so.instancingColor===!0&&Qr.instanceColor===null||Qr.isInstancedMesh&&so.instancingColor===!1&&Qr.instanceColor!==null||Qr.isInstancedMesh&&so.instancingMorph===!0&&Qr.morphTexture===null||Qr.isInstancedMesh&&so.instancingMorph===!1&&Qr.morphTexture!==null||so.envMap!==Ta||li.fog===!0&&so.fog!==qs||so.numClippingPlanes!==void 0&&(so.numClippingPlanes!==Fa.numPlanes||so.numIntersection!==Fa.numIntersection)||so.vertexAlphas!==Qa||so.vertexTangents!==yo||so.morphTargets!==io||so.morphNormals!==nl||so.morphColors!==Eu||so.toneMapping!==Dc||so.morphTargetsCount!==Pu)&&(Vl=!0):(Vl=!0,so.__version=li.version);let bA=so.currentProgram;Vl===!0&&(bA=tw(li,Ur,Qr));let Wv=!1,_A=!1,Mx=!1;const Zu=bA.getUniforms(),Gf=so.uniforms;if(Ps.useProgram(bA.program)&&(Wv=!0,_A=!0,Mx=!0),li.id!==Br&&(Br=li.id,_A=!0),Wv||zr!==an){Ps.buffers.depth.getReversed()&&an.reversedDepth!==!0&&(an._reversedDepth=!0,an.updateProjectionMatrix()),Zu.setValue(Pn,"projectionMatrix",an.projectionMatrix),Zu.setValue(Pn,"viewMatrix",an.matrixWorldInverse);const Hf=Zu.map.cameraPosition;Hf!==void 0&&Hf.setValue(Pn,co.setFromMatrixPosition(an.matrixWorld)),ho.logarithmicDepthBuffer&&Zu.setValue(Pn,"logDepthBufFC",2/(Math.log(an.far+1)/Math.LN2)),(li.isMeshPhongMaterial||li.isMeshToonMaterial||li.isMeshLambertMaterial||li.isMeshBasicMaterial||li.isMeshStandardMaterial||li.isShaderMaterial)&&Zu.setValue(Pn,"isOrthographic",an.isOrthographicCamera===!0),zr!==an&&(zr=an,_A=!0,Mx=!0)}if(so.needsLights&&(Au.state.directionalShadowMap.length>0&&Zu.setValue(Pn,"directionalShadowMap",Au.state.directionalShadowMap,Cr),Au.state.spotShadowMap.length>0&&Zu.setValue(Pn,"spotShadowMap",Au.state.spotShadowMap,Cr),Au.state.pointShadowMap.length>0&&Zu.setValue(Pn,"pointShadowMap",Au.state.pointShadowMap,Cr)),Qr.isSkinnedMesh){Zu.setOptional(Pn,Qr,"bindMatrix"),Zu.setOptional(Pn,Qr,"bindMatrixInverse");const cf=Qr.skeleton;cf&&(cf.boneTexture===null&&cf.computeBoneTexture(),Zu.setValue(Pn,"boneTexture",cf.boneTexture,Cr))}Qr.isBatchedMesh&&(Zu.setOptional(Pn,Qr,"batchingTexture"),Zu.setValue(Pn,"batchingTexture",Qr._matricesTexture,Cr),Zu.setOptional(Pn,Qr,"batchingIdTexture"),Zu.setValue(Pn,"batchingIdTexture",Qr._indirectTexture,Cr),Zu.setOptional(Pn,Qr,"batchingColorTexture"),Qr._colorsTexture!==null&&Zu.setValue(Pn,"batchingColorTexture",Qr._colorsTexture,Cr));const tp=hi.morphAttributes;if((tp.position!==void 0||tp.normal!==void 0||tp.color!==void 0)&&Wo.update(Qr,hi,bA),(_A||so.receiveShadow!==Qr.receiveShadow)&&(so.receiveShadow=Qr.receiveShadow,Zu.setValue(Pn,"receiveShadow",Qr.receiveShadow)),li.isMeshGouraudMaterial&&li.envMap!==null&&(Gf.envMap.value=Ta,Gf.flipEnvMap.value=Ta.isCubeTexture&&Ta.isRenderTargetTexture===!1?-1:1),li.isMeshStandardMaterial&&li.envMap===null&&Ur.environment!==null&&(Gf.envMapIntensity.value=Ur.environmentIntensity),Gf.dfgLUT!==void 0&&(Gf.dfgLUT.value=Z3()),_A&&(Zu.setValue(Pn,"toneMappingExposure",qe.toneMappingExposure),so.needsLights&&Q$(Gf,Mx),qs&&li.fog===!0&&po.refreshFogUniforms(Gf,qs),po.refreshMaterialUniforms(Gf,li,ps,Yi,nt.state.transmissionRenderTarget[an.id]),cb.upload(Pn,MP(so),Gf,Cr)),li.isShaderMaterial&&li.uniformsNeedUpdate===!0&&(cb.upload(Pn,MP(so),Gf,Cr),li.uniformsNeedUpdate=!1),li.isSpriteMaterial&&Zu.setValue(Pn,"center",Qr.center),Zu.setValue(Pn,"modelViewMatrix",Qr.modelViewMatrix),Zu.setValue(Pn,"normalMatrix",Qr.normalMatrix),Zu.setValue(Pn,"modelMatrix",Qr.matrixWorld),li.isShaderMaterial||li.isRawShaderMaterial){const cf=li.uniformsGroups;for(let Hf=0,RE=cf.length;Hf0&&Cr.useMultisampledRTT(an)===!1?li=St.get(an).__webglMultisampledFramebuffer:Array.isArray(Qa)?li=Qa[hi]:li=Qa,Dr.copy(an.viewport),Zr.copy(an.scissor),Ti=an.scissorTest}else Dr.copy(Nr).multiplyScalar(ps).floor(),Zr.copy(Yr).multiplyScalar(ps).floor(),Ti=cs;if(hi!==0&&(li=Z$),Ps.bindFramebuffer(Pn.FRAMEBUFFER,li)&&Ps.drawBuffers(an,li),Ps.viewport(Dr),Ps.scissor(Zr),Ps.setScissorTest(Ti),Qr){const ia=St.get(an.texture);Pn.framebufferTexture2D(Pn.FRAMEBUFFER,Pn.COLOR_ATTACHMENT0,Pn.TEXTURE_CUBE_MAP_POSITIVE_X+Ur,ia.__webglTexture,hi)}else if(qs){const ia=Ur;for(let Ta=0;Ta=0&&Ur<=an.width-li&&hi>=0&&hi<=an.height-Qr&&(an.textures.length>1&&Pn.readBuffer(Pn.COLOR_ATTACHMENT0+ia),Pn.readPixels(Ur,hi,li,Qr,Ts.convert(yo),Ts.convert(io),qs))}finally{const Qa=pr!==null?St.get(pr).__webglFramebuffer:null;Ps.bindFramebuffer(Pn.FRAMEBUFFER,Qa)}}},this.readRenderTargetPixelsAsync=function(an,Ur,hi,li,Qr,qs,ba,ia=0){return Pa(this,null,function*(){if(!(an&&an.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Ta=St.get(an).__webglFramebuffer;if(an.isWebGLCubeRenderTarget&&ba!==void 0&&(Ta=Ta[ba]),Ta)if(Ur>=0&&Ur<=an.width-li&&hi>=0&&hi<=an.height-Qr){Ps.bindFramebuffer(Pn.FRAMEBUFFER,Ta);const Qa=an.textures[ia],yo=Qa.format,io=Qa.type;if(!ho.textureFormatReadable(yo))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!ho.textureTypeReadable(io))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const nl=Pn.createBuffer();Pn.bindBuffer(Pn.PIXEL_PACK_BUFFER,nl),Pn.bufferData(Pn.PIXEL_PACK_BUFFER,qs.byteLength,Pn.STREAM_READ),an.textures.length>1&&Pn.readBuffer(Pn.COLOR_ATTACHMENT0+ia),Pn.readPixels(Ur,hi,li,Qr,Ts.convert(yo),Ts.convert(io),0);const Eu=pr!==null?St.get(pr).__webglFramebuffer:null;Ps.bindFramebuffer(Pn.FRAMEBUFFER,Eu);const Dc=Pn.fenceSync(Pn.SYNC_GPU_COMMANDS_COMPLETE,0);return Pn.flush(),yield ju(Pn,Dc,4),Pn.bindBuffer(Pn.PIXEL_PACK_BUFFER,nl),Pn.getBufferSubData(Pn.PIXEL_PACK_BUFFER,0,qs),Pn.deleteBuffer(nl),Pn.deleteSync(Dc),qs}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")})},this.copyFramebufferToTexture=function(an,Ur=null,hi=0){const li=Math.pow(2,-hi),Qr=Math.floor(an.image.width*li),qs=Math.floor(an.image.height*li),ba=Ur!==null?Ur.x:0,ia=Ur!==null?Ur.y:0;Cr.setTexture2D(an,0),Pn.copyTexSubImage2D(Pn.TEXTURE_2D,hi,0,0,ba,ia,Qr,qs),Ps.unbindTexture()};const K$=Pn.createFramebuffer(),$$=Pn.createFramebuffer();this.copyTextureToTexture=function(an,Ur,hi=null,li=null,Qr=0,qs=null){qs===null&&(Qr!==0?(ki("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),qs=Qr,Qr=0):qs=0);let ba,ia,Ta,Qa,yo,io,nl,Eu,Dc;const kc=an.isCompressedTexture?an.mipmaps[qs]:an.image;if(hi!==null)ba=hi.max.x-hi.min.x,ia=hi.max.y-hi.min.y,Ta=hi.isBox3?hi.max.z-hi.min.z:1,Qa=hi.min.x,yo=hi.min.y,io=hi.isBox3?hi.min.z:0;else{const tp=Math.pow(2,-Qr);ba=Math.floor(kc.width*tp),ia=Math.floor(kc.height*tp),an.isDataArrayTexture?Ta=kc.depth:an.isData3DTexture?Ta=Math.floor(kc.depth*tp):Ta=1,Qa=0,yo=0,io=0}li!==null?(nl=li.x,Eu=li.y,Dc=li.z):(nl=0,Eu=0,Dc=0);const Pu=Ts.convert(Ur.format),so=Ts.convert(Ur.type);let Au;Ur.isData3DTexture?(Cr.setTexture3D(Ur,0),Au=Pn.TEXTURE_3D):Ur.isDataArrayTexture||Ur.isCompressedArrayTexture?(Cr.setTexture2DArray(Ur,0),Au=Pn.TEXTURE_2D_ARRAY):(Cr.setTexture2D(Ur,0),Au=Pn.TEXTURE_2D),Pn.pixelStorei(Pn.UNPACK_FLIP_Y_WEBGL,Ur.flipY),Pn.pixelStorei(Pn.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Ur.premultiplyAlpha),Pn.pixelStorei(Pn.UNPACK_ALIGNMENT,Ur.unpackAlignment);const Vl=Pn.getParameter(Pn.UNPACK_ROW_LENGTH),bA=Pn.getParameter(Pn.UNPACK_IMAGE_HEIGHT),Wv=Pn.getParameter(Pn.UNPACK_SKIP_PIXELS),_A=Pn.getParameter(Pn.UNPACK_SKIP_ROWS),Mx=Pn.getParameter(Pn.UNPACK_SKIP_IMAGES);Pn.pixelStorei(Pn.UNPACK_ROW_LENGTH,kc.width),Pn.pixelStorei(Pn.UNPACK_IMAGE_HEIGHT,kc.height),Pn.pixelStorei(Pn.UNPACK_SKIP_PIXELS,Qa),Pn.pixelStorei(Pn.UNPACK_SKIP_ROWS,yo),Pn.pixelStorei(Pn.UNPACK_SKIP_IMAGES,io);const Zu=an.isDataArrayTexture||an.isData3DTexture,Gf=Ur.isDataArrayTexture||Ur.isData3DTexture;if(an.isDepthTexture){const tp=St.get(an),cf=St.get(Ur),Hf=St.get(tp.__renderTarget),RE=St.get(cf.__renderTarget);Ps.bindFramebuffer(Pn.READ_FRAMEBUFFER,Hf.__webglFramebuffer),Ps.bindFramebuffer(Pn.DRAW_FRAMEBUFFER,RE.__webglFramebuffer);for(let O0=0;O00){const{width:o,height:u}=e.context;t.bufferWidth=o,t.bufferHeight=u}t.lights=this.getLightsData(e.lightsNode.getLights()),this.renderObjects.set(e,t)}return t}getAttributesData(e){const t={};for(const n in e){const i=e[n];t[n]={version:i.version}}return t}containsNode(e){const t=e.material;for(const n in t)if(t[n]&&t[n].isNode)return!0;return!!(e.context.modelViewMatrix||e.context.modelNormalViewMatrix||e.context.getAO||e.context.getShadow)}getMaterialData(e){const t={};for(const n of this.refreshUniforms){const i=e[n];i!=null&&(typeof i=="object"&&i.clone!==void 0?i.isTexture===!0?t[n]={id:i.id,version:i.version}:t[n]=i.clone():t[n]=i)}return t}equals(e,t){const{object:n,material:i,geometry:a}=e,o=this.getRenderObjectData(e);if(o.worldMatrix.equals(n.matrixWorld)!==!0)return o.worldMatrix.copy(n.matrixWorld),!1;const u=o.material;for(const ee in u){const q=u[ee],ye=i[ee];if(q.equals!==void 0){if(q.equals(ye)===!1)return q.copy(ye),!1}else if(ye.isTexture===!0){if(q.id!==ye.id||q.version!==ye.version)return q.id=ye.id,q.version=ye.version,!1}else if(q!==ye)return u[ee]=ye,!1}if(u.transmission>0){const{width:ee,height:q}=e.context;if(o.bufferWidth!==ee||o.bufferHeight!==q)return o.bufferWidth=ee,o.bufferHeight=q,!1}const c=o.geometry,d=a.attributes,g=c.attributes,v=Object.keys(g),M=Object.keys(d);if(c.id!==a.id)return c.id=a.id,!1;if(v.length!==M.length)return o.geometry.attributes=this.getAttributesData(d),!1;for(const ee of v){const q=g[ee],ye=d[ee];if(ye===void 0)return delete g[ee],!1;if(q.version!==ye.version)return q.version=ye.version,!1}const B=a.index,I=c.indexVersion,ne=B?B.version:null;if(I!==ne)return c.indexVersion=ne,!1;if(c.drawRange.start!==a.drawRange.start||c.drawRange.count!==a.drawRange.count)return c.drawRange.start=a.drawRange.start,c.drawRange.count=a.drawRange.count,!1;if(o.morphTargetInfluences){let ee=!1;for(let q=0;q>>16,2246822507),t^=Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(t^t>>>13,3266489909),4294967296*(2097151&n)+(t>>>0)}const dv=s=>a1(s),o0=s=>a1(s),fv=(...s)=>a1(s),j3=new Map([[1,"float"],[2,"vec2"],[3,"vec3"],[4,"vec4"],[9,"mat3"],[16,"mat4"]]),XC=new WeakMap;function o1(s){return j3.get(s)}function Ey(s){if(/[iu]?vec\d/.test(s))return s.startsWith("ivec")?Int32Array:s.startsWith("uvec")?Uint32Array:Float32Array;if(/mat\d/.test(s)||/float/.test(s))return Float32Array;if(/uint/.test(s))return Uint32Array;if(/int/.test(s))return Int32Array;throw new Error(`THREE.NodeUtils: Unsupported type: ${s}`)}function l1(s){if(/float|int|uint/.test(s))return 1;if(/vec2/.test(s))return 2;if(/vec3/.test(s))return 3;if(/vec4/.test(s)||/mat2/.test(s))return 4;if(/mat3/.test(s))return 9;if(/mat4/.test(s))return 16;Gr("TSL: Unsupported type:",s)}function jC(s){if(/float|int|uint/.test(s))return 1;if(/vec2/.test(s))return 2;if(/vec3/.test(s))return 3;if(/vec4/.test(s)||/mat2/.test(s))return 4;if(/mat3/.test(s))return 12;if(/mat4/.test(s))return 16;Gr("TSL: Unsupported type:",s)}function YC(s){if(/float|int|uint/.test(s))return 4;if(/vec2/.test(s))return 8;if(/vec3/.test(s)||/vec4/.test(s))return 16;if(/mat2/.test(s))return 8;if(/mat3/.test(s)||/mat4/.test(s))return 16;Gr("TSL: Unsupported type:",s)}function Qg(s){if(s==null)return null;const e=typeof s;return s.isNode===!0?"node":e==="number"?"float":e==="boolean"?"bool":e==="string"?"string":e==="function"?"shader":s.isVector2===!0?"vec2":s.isVector3===!0?"vec3":s.isVector4===!0?"vec4":s.isMatrix2===!0?"mat2":s.isMatrix3===!0?"mat3":s.isMatrix4===!0?"mat4":s.isColor===!0?"color":s instanceof ArrayBuffer?"ArrayBuffer":null}function db(s,...e){const t=s?s.slice(-4):void 0;return e.length===1&&(t==="vec2"?e=[e[0],e[0]]:t==="vec3"?e=[e[0],e[0],e[0]]:t==="vec4"&&(e=[e[0],e[0],e[0],e[0]])),s==="color"?new Wr(...e):t==="vec2"?new ce(...e):t==="vec3"?new le(...e):t==="vec4"?new Ni(...e):t==="mat2"?new gp(...e):t==="mat3"?new pn(...e):t==="mat4"?new di(...e):s==="bool"?e[0]||!1:s==="float"||s==="int"||s==="uint"?e[0]||0:s==="string"?e[0]||"":s==="ArrayBuffer"?h1(e[0]):null}function u1(s){let e=XC.get(s);return e===void 0&&(e={},XC.set(s,e)),e}function c1(s){let e="";const t=new Uint8Array(s);for(let n=0;ne.charCodeAt(0)).buffer}var DX=Object.freeze({__proto__:null,arrayBufferToBase64:c1,base64ToArrayBuffer:h1,getAlignmentFromType:YC,getDataFromObject:u1,getLengthFromType:l1,getMemoryLengthFromType:jC,getTypeFromLength:o1,getTypedArrayFromType:Ey,getValueFromType:db,getValueType:Qg,hash:fv,hashArray:o0,hashString:dv});const Cy={VERTEX:"vertex",FRAGMENT:"fragment"},Ao={NONE:"none",FRAME:"frame",RENDER:"render",OBJECT:"object"},Y3={BOOLEAN:"bool",INTEGER:"int",FLOAT:"float",VECTOR2:"vec2",VECTOR3:"vec3",VECTOR4:"vec4",MATRIX2:"mat2",MATRIX3:"mat3",MATRIX4:"mat4"},od={READ_ONLY:"readOnly",WRITE_ONLY:"writeOnly",READ_WRITE:"readWrite"},qC=["fragment","vertex"],d1=["setup","analyze","generate"],f1=[...qC,"compute"],l0=["x","y","z","w"],q3={analyze:"setup",generate:"analyze"};let J3=0;class ta extends bl{static get type(){return"Node"}constructor(e=null){super(),this.nodeType=e,this.updateType=Ao.NONE,this.updateBeforeType=Ao.NONE,this.updateAfterType=Ao.NONE,this.uuid=me.generateUUID(),this.version=0,this.name="",this.global=!1,this.parents=!1,this.isNode=!0,this._beforeNodes=null,this._cacheKey=null,this._cacheKeyVersion=0,Object.defineProperty(this,"id",{value:J3++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this),this}onFrameUpdate(e){return this.onUpdate(e,Ao.FRAME)}onRenderUpdate(e){return this.onUpdate(e,Ao.RENDER)}onObjectUpdate(e){return this.onUpdate(e,Ao.OBJECT)}onReference(e){return this.updateReference=e.bind(this),this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(const{childNode:e}of this._getChildren())yield e}dispose(){this.dispatchEvent({type:"dispose"})}traverse(e){e(this);for(const t of this.getChildren())t.traverse(e)}_getChildren(e=new Set){const t=[];e.add(this);for(const n of Object.getOwnPropertyNames(this)){const i=this[n];if(!(n.startsWith("_")===!0||e.has(i))){if(Array.isArray(i)===!0)for(let a=0;a0&&(e.inputNodes=n)}deserialize(e){if(e.inputNodes!==void 0){const t=e.meta.nodes;for(const n in e.inputNodes)if(Array.isArray(e.inputNodes[n])){const i=[];for(const a of e.inputNodes[n])i.push(t[a]);this[n]=i}else if(typeof e.inputNodes[n]=="object"){const i={};for(const a in e.inputNodes[n]){const o=e.inputNodes[n][a];i[a]=t[o]}this[n]=i}else{const i=e.inputNodes[n];this[n]=t[i]}}}toJSON(e){const{uuid:t,type:n}=this,i=e===void 0||typeof e=="string";i&&(e={textures:{},images:{},nodes:{}});let a=e.nodes[t];a===void 0&&(a={uuid:t,type:n,meta:e,metadata:{version:4.7,type:"Node",generator:"Node.toJSON"}},i!==!0&&(e.nodes[a.uuid]=a),this.serialize(a),delete a.meta);function o(u){const c=[];for(const d in u){const g=u[d];delete g.metadata,c.push(g)}return c}if(i){const u=o(e.textures),c=o(e.images),d=o(e.nodes);u.length>0&&(a.textures=u),c.length>0&&(a.images=c),d.length>0&&(a.nodes=d)}return a}}class u0 extends ta{static get type(){return"ArrayElementNode"}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}getMemberType(e,t){return this.node.getMemberType(e,t)}generate(e){const t=this.indexNode.getNodeType(e),n=this.node.build(e),i=this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:"uint");return`${n}[ ${i} ]`}}class JC extends ta{static get type(){return"ConvertNode"}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(e){const t=this.node.getNodeType(e);let n=null;for(const i of this.convertTo.split("|"))(n===null||e.getTypeLength(t)===e.getTypeLength(i))&&(n=i);return n}serialize(e){super.serialize(e),e.convertTo=this.convertTo}deserialize(e){super.deserialize(e),this.convertTo=e.convertTo}generate(e,t){const n=this.node,i=this.getNodeType(e),a=n.build(e,i);return e.format(a,i,t)}}class pc extends ta{static get type(){return"TempNode"}constructor(e=null){super(e),this.isTempNode=!0}hasDependencies(e){return e.getDataFromNode(this).usageCount>1}build(e,t){if(e.getBuildStage()==="generate"){const i=e.getVectorType(this.getNodeType(e,t)),a=e.getDataFromNode(this);if(a.propertyName!==void 0)return e.format(a.propertyName,i,t);if(i!=="void"&&t!=="void"&&this.hasDependencies(e)){const o=super.build(e,i),u=e.getVarFromNode(this,null,i),c=e.getPropertyName(u);return e.addLineFlowCode(`${c} = ${o}`,this),a.snippet=o,a.propertyName=c,e.format(a.propertyName,i,t)}}return super.build(e,t)}}class ek extends pc{static get type(){return"JoinNode"}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(e){return this.nodeType!==null?e.getVectorType(this.nodeType):e.getTypeFromLength(this.nodes.reduce((t,n)=>t+e.getTypeLength(n.getNodeType(e)),0))}generate(e,t){const n=this.getNodeType(e),i=e.getTypeLength(n),a=this.nodes,o=e.getComponentType(n),u=[];let c=0;for(const g of a){if(c>=i){Gr(`TSL: Length of parameters exceeds maximum length of function '${n}()' type.`);break}let v=g.getNodeType(e),M=e.getTypeLength(v),B;if(c+M>i&&(Gr(`TSL: Length of '${n}()' data exceeds maximum length of output type.`),M=i-c,v=e.getTypeFromLength(M)),c+=M,B=g.build(e,v),e.getComponentType(v)!==o){const ne=e.getTypeFromLength(M,o);B=e.format(B,v,ne)}u.push(B)}const d=`${e.getType(n)}( ${u.join(", ")} )`;return e.format(d,n,t)}}const tk=l0.join("");class eT extends ta{static get type(){return"SplitNode"}constructor(e,t="x"){super(),this.node=e,this.components=t,this.isSplitNode=!0}getVectorLength(){let e=this.components.length;for(const t of this.components)e=Math.max(l0.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}getScope(){return this.node.getScope()}generate(e,t){const n=this.node,i=e.getTypeLength(n.getNodeType(e));let a=null;if(i>1){let o=null;this.getVectorLength()>=i&&(o=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));const c=n.build(e,o);this.components.length===i&&this.components===tk.slice(0,this.components.length)?a=e.format(c,o,t):a=e.format(`${c}.${this.components}`,this.getNodeType(e),t)}else a=n.build(e,t);return a}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}}class nk extends pc{static get type(){return"SetNode"}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){const{sourceNode:t,components:n,targetNode:i}=this,a=this.getNodeType(e),o=e.getComponentType(i.getNodeType(e)),u=e.getTypeFromLength(n.length,o),c=i.build(e,u),d=t.build(e,a),g=e.getTypeLength(a),v=[];for(let M=0;Ms.replace(/r|s/g,"x").replace(/g|t/g,"y").replace(/b|p/g,"z").replace(/a|q/g,"w"),nT=s=>sk(s).split("").sort().join("");ta.prototype.assign=function(...s){if(this.isStackNode!==!0)return Rm!==null?Rm.assign(this,...s):Gr("TSL: No stack defined for assign operation. Make sure the assign is inside a Fn()."),this;{const e=p1.get("assign");return this.addToStack(e(...s))}},ta.prototype.toVarIntent=function(){return this},ta.prototype.get=function(s){return new ik(this,s)};const Ty={};function fb(s,e,t){Ty[s]=Ty[e]=Ty[t]={get(){this._cache=this._cache||{};let o=this._cache[s];return o===void 0&&(o=new eT(this,s),this._cache[s]=o),o},set(o){this[s].assign(Ss(o))}};const n=s.toUpperCase(),i=e.toUpperCase(),a=t.toUpperCase();ta.prototype["set"+n]=ta.prototype["set"+i]=ta.prototype["set"+a]=function(o){const u=nT(s);return new nk(this,u,Ss(o))},ta.prototype["flip"+n]=ta.prototype["flip"+i]=ta.prototype["flip"+a]=function(){const o=nT(s);return new rk(this,o)}}const tg=["x","y","z","w"],ng=["r","g","b","a"],rg=["s","t","p","q"];for(let s=0;s<4;s++){let e=tg[s],t=ng[s],n=rg[s];fb(e,t,n);for(let i=0;i<4;i++){e=tg[s]+tg[i],t=ng[s]+ng[i],n=rg[s]+rg[i],fb(e,t,n);for(let a=0;a<4;a++){e=tg[s]+tg[i]+tg[a],t=ng[s]+ng[i]+ng[a],n=rg[s]+rg[i]+rg[a],fb(e,t,n);for(let o=0;o<4;o++)e=tg[s]+tg[i]+tg[a]+tg[o],t=ng[s]+ng[i]+ng[a]+ng[o],n=rg[s]+rg[i]+rg[a]+rg[o],fb(e,t,n)}}}for(let s=0;s<32;s++)Ty[s]={get(){this._cache=this._cache||{};let e=this._cache[s];return e===void 0&&(e=new u0(this,new QA(s,"uint")),this._cache[s]=e),e},set(e){this[s].assign(Ss(e))}};Object.defineProperties(ta.prototype,Ty);const rT=new WeakMap,ak=function(s,e=null){const t=Qg(s);return t==="node"?s:e===null&&(t==="float"||t==="boolean")||t&&t!=="shader"&&t!=="string"?Ss(y1(s,e)):t==="shader"?s.isFn?s:or(s):s},ok=function(s,e=null){for(const t in s)s[t]=Ss(s[t],e);return s},lk=function(s,e=null){const t=s.length;for(let n=0;nc?(Gr(`TSL: "${v}" parameter length exceeds limit.`),g.slice(0,c)):g}return e===null?a=(...g)=>i(new s(...c0(d(g)))):t!==null?(t=Ss(t),a=(...g)=>i(new s(e,...c0(d(g)),t))):a=(...g)=>i(new s(e,...c0(d(g)))),a.setParameterLength=(...g)=>(g.length===1?u=c=g[0]:g.length===2&&([u,c]=g),a),a.setName=g=>(o=g,a),a},uk=function(s,...e){return new s(...c0(e))};class ck extends ta{constructor(e,t){super(),this.shaderNode=e,this.rawInputs=t,this.isShaderCallNodeInternal=!0}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}getElementType(e){return this.getOutputNode(e).getElementType(e)}getMemberType(e,t){return this.getOutputNode(e).getMemberType(e,t)}call(e){const{shaderNode:t,rawInputs:n}=this,i=e.getNodeProperties(t),a=e.getClosestSubBuild(t.subBuilds)||"",o=a||"default";if(i[o])return i[o];const u=e.subBuildFn,c=e.fnCall;e.subBuildFn=a,e.fnCall=this;let d=null;if(t.layout){let g=rT.get(e.constructor);g===void 0&&(g=new WeakMap,rT.set(e.constructor,g));let v=g.get(t);v===void 0&&(v=Ss(e.buildFunctionNode(t)),g.set(t,v)),e.addInclude(v);const M=n?hk(n):null;d=Ss(v.call(M))}else{const g=new Proxy(e,{get:(ne,ee,q)=>{let ye;return Symbol.iterator===ee?ye=function*(){yield void 0}:ye=Reflect.get(ne,ee,q),ye}}),v=n?dk(n):null,M=Array.isArray(n)?n.length>0:n!==null,B=t.jsFunc,I=M||B.length>1?B(v,g):B(g);d=Ss(I)}return e.subBuildFn=u,e.fnCall=c,t.once&&(i[o]=d),d}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){const t=e.getNodeProperties(this),n=e.getSubBuildOutput(this);return t[n]=t[n]||this.setupOutput(e),t[n].subBuild=e.getClosestSubBuild(this),t[n]}build(e,t=null){let n=null;const i=e.getBuildStage(),a=e.getNodeProperties(this),o=e.getSubBuildOutput(this),u=this.getOutputNode(e),c=e.fnCall;if(e.fnCall=this,i==="setup"){const d=e.getSubBuildProperty("initialized",this);if(a[d]!==!0&&(a[d]=!0,a[o]=this.getOutputNode(e),a[o].build(e),this.shaderNode.subBuilds))for(const g of e.chaining){const v=e.getDataFromNode(g,"any");v.subBuilds=v.subBuilds||new Set;for(const M of this.shaderNode.subBuilds)v.subBuilds.add(M)}n=a[o]}else i==="analyze"?u.build(e,t):i==="generate"&&(n=u.build(e,t)||"");return e.fnCall=c,n}}function hk(s){let e;return gb(s),s[0]&&(s[0].isNode||Object.getPrototypeOf(s[0])!==Object.prototype)?e=[...s]:e=s[0],e}function dk(s){let e=0;return gb(s),new Proxy(s,{get:(t,n,i)=>{let a;if(n==="length")return a=s.length,a;if(Symbol.iterator===n)a=function*(){for(const o of s)yield Ss(o)};else{if(s.length>0)if(Object.getPrototypeOf(s[0])===Object.prototype){const o=s[0];o[n]===void 0?a=o[e++]:a=Reflect.get(o,n,i)}else s[0]instanceof ta&&(s[n]===void 0?a=s[e++]:a=Reflect.get(s,n,i));else a=Reflect.get(t,n,i);a=Ss(a)}return a}})}class fk extends ta{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}getLayout(){return this.layout}call(e=null){return new ck(this,e)}setup(){return this.call()}}const Ak=[!1,!0],pk=[0,1,2,3],gk=[-1,-2],sT=[.5,1.5,1/3,1e-6,1e6,Math.PI,Math.PI*2,1/Math.PI,2/Math.PI,1/(Math.PI*2),Math.PI/2],g1=new Map;for(const s of Ak)g1.set(s,new QA(s));const m1=new Map;for(const s of pk)m1.set(s,new QA(s,"uint"));const v1=new Map([...m1].map(s=>new QA(s.value,"int")));for(const s of gk)v1.set(s,new QA(s,"int"));const Ab=new Map([...v1].map(s=>new QA(s.value)));for(const s of sT)Ab.set(s,new QA(s));for(const s of sT)Ab.set(-s,new QA(-s));const pb={bool:g1,uint:m1,ints:v1,float:Ab},aT=new Map([...g1,...Ab]),y1=(s,e)=>aT.has(s)?aT.get(s):s.isNode===!0?s:new QA(s,e),uh=function(s,e=null){return(...t)=>{for(const i of t)if(i===void 0)return Gr(`TSL: Invalid parameter for the type "${s}".`),new QA(0,s);if((t.length===0||!["bool","float","int","uint"].includes(s)&&t.every(i=>{const a=typeof i;return a!=="object"&&a!=="function"}))&&(t=[db(s,...t)]),t.length===1&&e!==null&&e.has(t[0]))return Ry(e.get(t[0]));if(t.length===1){const i=y1(t[0],s);return i.nodeType===s?Ry(i):Ry(new JC(i,s))}const n=t.map(i=>y1(i));return Ry(new ek(n,s))}},By=s=>typeof s=="object"&&s!==null?s.value:s,oT=s=>s!=null?s.nodeType||s.convertTo||(typeof s=="string"?s:null):null;function Av(s,e){return new fk(s,e)}const Ss=(s,e=null)=>ak(s,e),Ry=(s,e=null)=>Ss(s,e).toVarIntent(),gb=(s,e=null)=>new ok(s,e),c0=(s,e=null)=>new lk(s,e),to=(s,e=null,t=null,n=null)=>new iT(s,e,t,n),xs=(s,...e)=>new uk(s,...e),ji=(s,e=null,t=null,n={})=>new iT(s,e,t,fd(rl({},n),{intent:!0}));let mk=0;class vk extends ta{constructor(e,t=null){super();let n=null;t!==null&&(typeof t=="object"?n=t.return:(typeof t=="string"?n=t:Gr("TSL: Invalid layout type."),t=null)),this.shaderNode=new Av(e,n),t!==null&&this.setLayout(t),this.isFn=!0}setLayout(e){const t=this.shaderNode.nodeType;if(typeof e.inputs!="object"){const n={name:"fn"+mk++,type:t,inputs:[]};for(const i in e)i!=="return"&&n.inputs.push({name:i,type:e[i]});e=n}return this.shaderNode.setLayout(e),this}getNodeType(e){return this.shaderNode.getNodeType(e)||"float"}call(...e){const t=this.shaderNode.call(e);return this.shaderNode.nodeType==="void"&&t.toStack(),t.toVarIntent()}once(e=null){return this.shaderNode.once=!0,this.shaderNode.subBuilds=e,this}generate(e){const t=this.getNodeType(e);return Gr('TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".'),e.generateConst(t)}}function or(s,e=null){const t=new vk(s,e);return new Proxy(()=>{},{apply(n,i,a){return t.call(...a)},get(n,i,a){return Reflect.get(t,i,a)},set(n,i,a,o){return Reflect.set(t,i,a,o)}})}const Iy=s=>{Rm=s},x1=()=>Rm,ra=(...s)=>Rm.If(...s),yk=(...s)=>Rm.Switch(...s);function mb(s){return Rm&&Rm.addToStack(s),s}ci("toStack",mb);const lT=new uh("color"),qt=new uh("float",pb.float),Qn=new uh("int",pb.ints),Fi=new uh("uint",pb.uint),WA=new uh("bool",pb.bool),Gi=new uh("vec2"),ch=new uh("ivec2"),b1=new uh("uvec2"),uT=new uh("bvec2"),Kn=new uh("vec3"),_1=new uh("ivec3"),h0=new uh("uvec3"),w1=new uh("bvec3"),Ks=new uh("vec4"),S1=new uh("ivec4"),M1=new uh("uvec4"),cT=new uh("bvec4"),vb=new uh("mat2"),ld=new uh("mat3"),Im=new uh("mat4"),xk=(s="")=>new QA(s,"string"),bk=s=>new QA(s,"ArrayBuffer");ci("toColor",lT),ci("toFloat",qt),ci("toInt",Qn),ci("toUint",Fi),ci("toBool",WA),ci("toVec2",Gi),ci("toIVec2",ch),ci("toUVec2",b1),ci("toBVec2",uT),ci("toVec3",Kn),ci("toIVec3",_1),ci("toUVec3",h0),ci("toBVec3",w1),ci("toVec4",Ks),ci("toIVec4",S1),ci("toUVec4",M1),ci("toBVec4",cT),ci("toMat2",vb),ci("toMat3",ld),ci("toMat4",Im);const hT=to(u0).setParameterLength(2),dT=(s,e)=>Ss(new JC(Ss(s),e)),_k=(s,e)=>Ss(new eT(Ss(s),e));ci("element",hT),ci("convert",dT);const wk=s=>(Lr("TSL: append() has been renamed to Stack()."),mb(s));ci("append",s=>(Lr("TSL: .append() has been renamed to .toStack()."),mb(s)));class Fl extends ta{static get type(){return"PropertyNode"}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0,this.global=!0}customCacheKey(){return dv(this.type+":"+(this.name||"")+":"+(this.varying?"1":"0"))}getHash(e){return this.name||super.getHash(e)}generate(e){let t;return this.varying===!0?(t=e.getVaryingFromNode(this,this.name),t.needsInterpolation=!0):t=e.getVarFromNode(this,this.name),e.getPropertyName(t)}}const bp=(s,e)=>new Fl(s,e),cA=(s,e)=>new Fl(s,e,!0),Wl=xs(Fl,"vec4","DiffuseColor"),d0=xs(Fl,"vec3","DiffuseContribution"),E1=xs(Fl,"vec3","EmissiveColor"),ig=xs(Fl,"float","Roughness"),Wg=xs(Fl,"float","Metalness"),yb=xs(Fl,"float","Clearcoat"),Ny=xs(Fl,"float","ClearcoatRoughness"),hA=xs(Fl,"vec3","Sheen"),Nm=xs(Fl,"float","SheenRoughness"),xb=xs(Fl,"float","Iridescence"),bb=xs(Fl,"float","IridescenceIOR"),_b=xs(Fl,"float","IridescenceThickness"),wb=xs(Fl,"float","AlphaT"),Fm=xs(Fl,"float","Anisotropy"),Fy=xs(Fl,"vec3","AnisotropyT"),f0=xs(Fl,"vec3","AnisotropyB"),Pm=xs(Fl,"color","SpecularColor"),A0=xs(Fl,"color","SpecularColorBlended"),pv=xs(Fl,"float","SpecularF90"),Sb=xs(Fl,"float","Shininess"),gv=xs(Fl,"vec4","Output"),p0=xs(Fl,"float","dashSize"),Py=xs(Fl,"float","gapSize"),Sk=xs(Fl,"float","pointWidth"),Ly=xs(Fl,"float","IOR"),Mb=xs(Fl,"float","Transmission"),C1=xs(Fl,"float","Thickness"),T1=xs(Fl,"float","AttenuationDistance"),B1=xs(Fl,"color","AttenuationColor"),R1=xs(Fl,"float","Dispersion");class fT extends ta{static get type(){return"UniformGroupNode"}constructor(e,t=!1,n=1){super("string"),this.name=e,this.shared=t,this.order=n,this.isUniformGroup=!0}serialize(e){super.serialize(e),e.name=this.name,e.version=this.version,e.shared=this.shared}deserialize(e){super.deserialize(e),this.name=e.name,this.version=e.version,this.shared=e.shared}}const AT=s=>new fT(s),Eb=(s,e=0)=>new fT(s,!0,e),pT=Eb("frame"),xa=Eb("render"),I1=AT("object");class Uy extends A1{static get type(){return"UniformNode"}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name="",this.groupNode=I1}setName(e){return this.name=e,this}label(e){return Lr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){return e=e.bind(this),super.onUpdate(n=>{const i=e(n,this);i!==void 0&&(this.value=i)},t)}getInputType(e){let t=super.getInputType(e);return t==="bool"&&(t="uint"),t}generate(e,t){const n=this.getNodeType(e),i=this.getUniformHash(e);let a=e.getNodeFromHash(i);a===void 0&&(e.setHashNode(this,i),a=this);const o=a.getInputType(e),u=e.getUniformFromNode(a,o,e.shaderStage,this.name||e.context.nodeName),c=e.getPropertyName(u);e.context.nodeName!==void 0&&delete e.context.nodeName;let d=c;if(n==="bool"){const g=e.getDataFromNode(this);let v=g.propertyName;if(v===void 0){const M=e.getVarFromNode(this,null,"bool");v=e.getPropertyName(M),g.propertyName=v,d=e.format(c,o,n),e.addLineFlowCode(`${v} = ${d}`,this)}d=v}return e.format(d,n,t)}}const va=(s,e)=>{const t=oT(e||s);if(t===s&&(s=db(t)),s&&s.isNode===!0){let n=s.value;s.traverse(i=>{i.isConstNode===!0&&(n=i.value)}),s=n}return new Uy(s,t)};class gT extends pc{static get type(){return"ArrayNode"}constructor(e,t,n=null){super(e),this.count=t,this.values=n,this.isArrayNode=!0}getArrayCount(){return this.count}getNodeType(e){return this.nodeType===null?this.values[0].getNodeType(e):this.nodeType}getElementType(e){return this.getNodeType(e)}getMemberType(e,t){return this.nodeType===null?this.values[0].getMemberType(e,t):super.getMemberType(e,t)}generate(e){const t=this.getNodeType(e);return e.generateArray(t,this.count,this.values)}}const mT=(...s)=>{let e;if(s.length===1){const t=s[0];e=new gT(null,t.length,t)}else{const t=s[0],n=s[1];e=new gT(t,n)}return Ss(e)};ci("toArray",(s,e)=>mT(Array(e).fill(s)));class Mk extends pc{static get type(){return"AssignNode"}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t,this.isAssignNode=!0}hasDependencies(){return!1}getNodeType(e,t){return t!=="void"?this.targetNode.getNodeType(e):"void"}needsSplitAssign(e){const{targetNode:t}=this;if(e.isAvailable("swizzleAssign")===!1&&t.isSplitNode&&t.components.length>1){const n=e.getTypeLength(t.node.getNodeType(e));return l0.join("").slice(0,n)!==t.components}return!1}setup(e){const{targetNode:t,sourceNode:n}=this,i=t.getScope(),a=e.getDataFromNode(i);a.assign=!0;const o=e.getNodeProperties(this);o.sourceNode=n,o.targetNode=t.context({assign:!0})}generate(e,t){const{targetNode:n,sourceNode:i}=e.getNodeProperties(this),a=this.needsSplitAssign(e),o=n.build(e),u=n.getNodeType(e),c=i.build(e,u),d=i.getNodeType(e),g=e.getDataFromNode(this);let v;if(g.initialized===!0)t!=="void"&&(v=o);else if(a){const M=e.getVarFromNode(this,null,u),B=e.getPropertyName(M);e.addLineFlowCode(`${B} = ${c}`,this);const I=n.node,ee=I.node.context({assign:!0}).build(e);for(let q=0;q{const g=d.type,v=g==="pointer";let M;return v?M="&"+c.build(e):M=c.build(e,g),M};if(Array.isArray(a)){if(a.length>i.length)Gr("TSL: The number of provided parameters exceeds the expected number of inputs in 'Fn()'."),a.length=i.length;else if(a.length(e=e.length>1||e[0]&&e[0].isNode===!0?c0(e):gb(e[0]),new Ek(Ss(s),e));ci("call",yT);const Ck={"==":"equal","!=":"notEqual","<":"lessThan",">":"greaterThan","<=":"lessThanEqual",">=":"greaterThanEqual","%":"mod"};class gc extends pc{static get type(){return"OperatorNode"}constructor(e,t,n,...i){if(super(),i.length>0){let a=new gc(e,t,n);for(let o=0;o>"||n==="<<")return e.getIntegerType(o);if(n==="!"||n==="&&"||n==="||"||n==="^^")return"bool";if(n==="=="||n==="!="||n==="<"||n===">"||n==="<="||n===">="){const c=Math.max(e.getTypeLength(o),e.getTypeLength(u));return c>1?`bvec${c}`:"bool"}else{if(e.isMatrix(o)){if(u==="float")return o;if(e.isVector(u))return e.getVectorFromMatrix(o);if(e.isMatrix(u))return o}else if(e.isMatrix(u)){if(o==="float")return u;if(e.isVector(o))return e.getVectorFromMatrix(u)}return e.getTypeLength(u)>e.getTypeLength(o)?u:o}}generate(e,t){const n=this.op,{aNode:i,bNode:a}=this,o=this.getNodeType(e,t);let u=null,c=null;o!=="void"?(u=i.getNodeType(e),c=a?a.getNodeType(e):null,n==="<"||n===">"||n==="<="||n===">="||n==="=="||n==="!="?e.isVector(u)?c=u:e.isVector(c)?u=c:u!==c&&(u=c="float"):n===">>"||n==="<<"?(u=o,c=e.changeComponentType(c,"uint")):n==="%"?(u=o,c=e.isInteger(u)&&e.isInteger(c)?c:u):e.isMatrix(u)?c==="float"?c="float":e.isVector(c)?c=e.getVectorFromMatrix(u):e.isMatrix(c)||(u=c=o):e.isMatrix(c)?u==="float"?u="float":e.isVector(u)?u=e.getVectorFromMatrix(c):u=c=o:u=c=o):u=c=o;const d=i.build(e,u),g=a?a.build(e,c):null,v=e.getFunctionOperator(n);if(t!=="void"){const M=e.renderer.coordinateSystem===gl;if(n==="=="||n==="!="||n==="<"||n===">"||n==="<="||n===">=")return M?e.isVector(u)?e.format(`${this.getOperatorMethod(e,t)}( ${d}, ${g} )`,o,t):e.format(`( ${d} ${n} ${g} )`,o,t):e.format(`( ${d} ${n} ${g} )`,o,t);if(n==="%")return e.isInteger(c)?e.format(`( ${d} % ${g} )`,o,t):e.format(`${this.getOperatorMethod(e,o)}( ${d}, ${g} )`,o,t);if(n==="!"||n==="~")return e.format(`(${n}${d})`,u,t);if(v)return e.format(`${v}( ${d}, ${g} )`,o,t);if(e.isMatrix(u)&&c==="float")return e.format(`( ${g} ${n} ${d} )`,o,t);if(u==="float"&&e.isMatrix(c))return e.format(`${d} ${n} ${g}`,o,t);{let B=`( ${d} ${n} ${g} )`;return!M&&o==="bool"&&e.isVector(u)&&e.isVector(c)&&(B=`all${B}`),e.format(B,o,t)}}else if(u!=="void")return v?e.format(`${v}( ${d}, ${g} )`,o,t):e.isMatrix(u)&&c==="float"?e.format(`${g} ${n} ${d}`,o,t):e.format(`${d} ${n} ${g}`,o,t)}serialize(e){super.serialize(e),e.op=this.op}deserialize(e){super.deserialize(e),this.op=e.op}}const $c=ji(gc,"+").setParameterLength(2,1/0).setName("add"),el=ji(gc,"-").setParameterLength(2,1/0).setName("sub"),no=ji(gc,"*").setParameterLength(2,1/0).setName("mul"),dA=ji(gc,"/").setParameterLength(2,1/0).setName("div"),Oy=ji(gc,"%").setParameterLength(2).setName("mod"),N1=ji(gc,"==").setParameterLength(2).setName("equal"),xT=ji(gc,"!=").setParameterLength(2).setName("notEqual"),bT=ji(gc,"<").setParameterLength(2).setName("lessThan"),F1=ji(gc,">").setParameterLength(2).setName("greaterThan"),_T=ji(gc,"<=").setParameterLength(2).setName("lessThanEqual"),wT=ji(gc,">=").setParameterLength(2).setName("greaterThanEqual"),ST=ji(gc,"&&").setParameterLength(2,1/0).setName("and"),MT=ji(gc,"||").setParameterLength(2,1/0).setName("or"),ET=ji(gc,"!").setParameterLength(1).setName("not"),CT=ji(gc,"^^").setParameterLength(2).setName("xor"),TT=ji(gc,"&").setParameterLength(2).setName("bitAnd"),BT=ji(gc,"~").setParameterLength(1).setName("bitNot"),RT=ji(gc,"|").setParameterLength(2).setName("bitOr"),IT=ji(gc,"^").setParameterLength(2).setName("bitXor"),NT=ji(gc,"<<").setParameterLength(2).setName("shiftLeft"),FT=ji(gc,">>").setParameterLength(2).setName("shiftRight"),PT=or(([s])=>(s.addAssign(1),s)),LT=or(([s])=>(s.subAssign(1),s)),UT=or(([s])=>{const e=Qn(s).toConst();return s.addAssign(1),e}),OT=or(([s])=>{const e=Qn(s).toConst();return s.subAssign(1),e});ci("add",$c),ci("sub",el),ci("mul",no),ci("div",dA),ci("mod",Oy),ci("equal",N1),ci("notEqual",xT),ci("lessThan",bT),ci("greaterThan",F1),ci("lessThanEqual",_T),ci("greaterThanEqual",wT),ci("and",ST),ci("or",MT),ci("not",ET),ci("xor",CT),ci("bitAnd",TT),ci("bitNot",BT),ci("bitOr",RT),ci("bitXor",IT),ci("shiftLeft",NT),ci("shiftRight",FT),ci("incrementBefore",PT),ci("decrementBefore",LT),ci("increment",UT),ci("decrement",OT);const DT=(s,e)=>(Lr('TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.'),Oy(Qn(s),Qn(e)));ci("modInt",DT);class Or extends pc{static get type(){return"MathNode"}constructor(e,t,n=null,i=null){if(super(),(e===Or.MAX||e===Or.MIN)&&arguments.length>3){let a=new Or(e,t,n);for(let o=2;oo&&a>u?t:o>u?n:u>a?i:t}getNodeType(e){const t=this.method;return t===Or.LENGTH||t===Or.DISTANCE||t===Or.DOT?"float":t===Or.CROSS?"vec3":t===Or.ALL||t===Or.ANY?"bool":t===Or.EQUALS?e.changeComponentType(this.aNode.getNodeType(e),"bool"):this.getInputType(e)}setup(e){const{aNode:t,bNode:n,method:i}=this;let a=null;if(i===Or.ONE_MINUS)a=el(1,t);else if(i===Or.RECIPROCAL)a=dA(1,t);else if(i===Or.DIFFERENCE)a=Su(el(t,n));else if(i===Or.TRANSFORM_DIRECTION){let o=t,u=n;e.isMatrix(o.getNodeType(e))?u=Ks(Kn(u),0):o=Ks(Kn(o),0);const c=no(o,u).xyz;a=rf(c)}return a!==null?a:super.setup(e)}generate(e,t){if(e.getNodeProperties(this).outputNode)return super.generate(e,t);let i=this.method;const a=this.getNodeType(e),o=this.getInputType(e),u=this.aNode,c=this.bNode,d=this.cNode,g=e.renderer.coordinateSystem;if(i===Or.NEGATE)return e.format("( - "+u.build(e,o)+" )",a,t);{const v=[];return i===Or.CROSS?v.push(u.build(e,a),c.build(e,a)):g===gl&&i===Or.STEP?v.push(u.build(e,e.getTypeLength(u.getNodeType(e))===1?"float":o),c.build(e,o)):g===gl&&(i===Or.MIN||i===Or.MAX)?v.push(u.build(e,o),c.build(e,e.getTypeLength(c.getNodeType(e))===1?"float":o)):i===Or.REFRACT?v.push(u.build(e,o),c.build(e,o),d.build(e,"float")):i===Or.MIX?v.push(u.build(e,o),c.build(e,o),d.build(e,e.getTypeLength(d.getNodeType(e))===1?"float":o)):(g===To&&i===Or.ATAN&&c!==null&&(i="atan2"),e.shaderStage!=="fragment"&&(i===Or.DFDX||i===Or.DFDY)&&(Lr(`TSL: '${i}' is not supported in the ${e.shaderStage} stage.`),i="/*"+i+"*/"),v.push(u.build(e,o)),c!==null&&v.push(c.build(e,o)),d!==null&&v.push(d.build(e,o))),e.format(`${e.getMethod(i,a)}( ${v.join(", ")} )`,a,t)}}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}}Or.ALL="all",Or.ANY="any",Or.RADIANS="radians",Or.DEGREES="degrees",Or.EXP="exp",Or.EXP2="exp2",Or.LOG="log",Or.LOG2="log2",Or.SQRT="sqrt",Or.INVERSE_SQRT="inversesqrt",Or.FLOOR="floor",Or.CEIL="ceil",Or.NORMALIZE="normalize",Or.FRACT="fract",Or.SIN="sin",Or.COS="cos",Or.TAN="tan",Or.ASIN="asin",Or.ACOS="acos",Or.ATAN="atan",Or.ABS="abs",Or.SIGN="sign",Or.LENGTH="length",Or.NEGATE="negate",Or.ONE_MINUS="oneMinus",Or.DFDX="dFdx",Or.DFDY="dFdy",Or.ROUND="round",Or.RECIPROCAL="reciprocal",Or.TRUNC="trunc",Or.FWIDTH="fwidth",Or.TRANSPOSE="transpose",Or.DETERMINANT="determinant",Or.INVERSE="inverse",Or.EQUALS="equals",Or.MIN="min",Or.MAX="max",Or.STEP="step",Or.REFLECT="reflect",Or.DISTANCE="distance",Or.DIFFERENCE="difference",Or.DOT="dot",Or.CROSS="cross",Or.POW="pow",Or.TRANSFORM_DIRECTION="transformDirection",Or.MIX="mix",Or.CLAMP="clamp",Or.REFRACT="refract",Or.SMOOTHSTEP="smoothstep",Or.FACEFORWARD="faceforward";const P1=qt(1e-6),Tk=qt(1e6),Cb=qt(Math.PI),Bk=qt(Math.PI*2),Rk=qt(Math.PI*2),Ik=qt(Math.PI*.5),kT=ji(Or,Or.ALL).setParameterLength(1),VT=ji(Or,Or.ANY).setParameterLength(1),zT=ji(Or,Or.RADIANS).setParameterLength(1),GT=ji(Or,Or.DEGREES).setParameterLength(1),L1=ji(Or,Or.EXP).setParameterLength(1),mv=ji(Or,Or.EXP2).setParameterLength(1),Tb=ji(Or,Or.LOG).setParameterLength(1),sg=ji(Or,Or.LOG2).setParameterLength(1),Nd=ji(Or,Or.SQRT).setParameterLength(1),U1=ji(Or,Or.INVERSE_SQRT).setParameterLength(1),ag=ji(Or,Or.FLOOR).setParameterLength(1),Bb=ji(Or,Or.CEIL).setParameterLength(1),rf=ji(Or,Or.NORMALIZE).setParameterLength(1),_p=ji(Or,Or.FRACT).setParameterLength(1),sf=ji(Or,Or.SIN).setParameterLength(1),wp=ji(Or,Or.COS).setParameterLength(1),HT=ji(Or,Or.TAN).setParameterLength(1),QT=ji(Or,Or.ASIN).setParameterLength(1),O1=ji(Or,Or.ACOS).setParameterLength(1),Rb=ji(Or,Or.ATAN).setParameterLength(1,2),Su=ji(Or,Or.ABS).setParameterLength(1),D1=ji(Or,Or.SIGN).setParameterLength(1),og=ji(Or,Or.LENGTH).setParameterLength(1),k1=ji(Or,Or.NEGATE).setParameterLength(1),WT=ji(Or,Or.ONE_MINUS).setParameterLength(1),V1=ji(Or,Or.DFDX).setParameterLength(1),z1=ji(Or,Or.DFDY).setParameterLength(1),ZT=ji(Or,Or.ROUND).setParameterLength(1),KT=ji(Or,Or.RECIPROCAL).setParameterLength(1),G1=ji(Or,Or.TRUNC).setParameterLength(1),H1=ji(Or,Or.FWIDTH).setParameterLength(1),$T=ji(Or,Or.TRANSPOSE).setParameterLength(1),XT=ji(Or,Or.DETERMINANT).setParameterLength(1),jT=ji(Or,Or.INVERSE).setParameterLength(1),YT=(s,e)=>(Lr('TSL: "equals" is deprecated. Use "equal" inside a vector instead, like: "bvec*( equal( ... ) )"'),N1(s,e)),Uf=ji(Or,Or.MIN).setParameterLength(2,1/0),mc=ji(Or,Or.MAX).setParameterLength(2,1/0),Ib=ji(Or,Or.STEP).setParameterLength(2),qT=ji(Or,Or.REFLECT).setParameterLength(2),JT=ji(Or,Or.DISTANCE).setParameterLength(2),eB=ji(Or,Or.DIFFERENCE).setParameterLength(2),ZA=ji(Or,Or.DOT).setParameterLength(2),Zg=ji(Or,Or.CROSS).setParameterLength(2),KA=ji(Or,Or.POW).setParameterLength(2),Q1=s=>no(s,s),tB=s=>no(s,s,s),W1=s=>no(s,s,s,s),nB=ji(Or,Or.TRANSFORM_DIRECTION).setParameterLength(2),rB=s=>no(D1(s),KA(Su(s),1/3)),Z1=s=>ZA(s,s),zo=ji(Or,Or.MIX).setParameterLength(3),Sp=(s,e=0,t=1)=>Ss(new Or(Or.CLAMP,Ss(s),Ss(e),Ss(t))),Nb=s=>Sp(s),K1=ji(Or,Or.REFRACT).setParameterLength(3),fA=ji(Or,Or.SMOOTHSTEP).setParameterLength(3),$1=ji(Or,Or.FACEFORWARD).setParameterLength(3),iB=or(([s])=>{const n=43758.5453,i=ZA(s.xy,Gi(12.9898,78.233)),a=Oy(i,Cb);return _p(sf(a).mul(n))}),sB=(s,e,t)=>zo(e,t,s),aB=(s,e,t)=>fA(e,t,s),oB=(s,e)=>Ib(e,s),lB=(s,e)=>(Lr('TSL: "atan2" is overloaded. Use "atan" instead.'),Rb(s,e)),Nk=$1,Fk=U1;ci("all",kT),ci("any",VT),ci("equals",YT),ci("radians",zT),ci("degrees",GT),ci("exp",L1),ci("exp2",mv),ci("log",Tb),ci("log2",sg),ci("sqrt",Nd),ci("inverseSqrt",U1),ci("floor",ag),ci("ceil",Bb),ci("normalize",rf),ci("fract",_p),ci("sin",sf),ci("cos",wp),ci("tan",HT),ci("asin",QT),ci("acos",O1),ci("atan",Rb),ci("abs",Su),ci("sign",D1),ci("length",og),ci("lengthSq",Z1),ci("negate",k1),ci("oneMinus",WT),ci("dFdx",V1),ci("dFdy",z1),ci("round",ZT),ci("reciprocal",KT),ci("trunc",G1),ci("fwidth",H1),ci("atan2",lB),ci("min",Uf),ci("max",mc),ci("step",oB),ci("reflect",qT),ci("distance",JT),ci("dot",ZA),ci("cross",Zg),ci("pow",KA),ci("pow2",Q1),ci("pow3",tB),ci("pow4",W1),ci("transformDirection",nB),ci("mix",sB),ci("clamp",Sp),ci("refract",K1),ci("smoothstep",aB),ci("faceForward",$1),ci("difference",eB),ci("saturate",Nb),ci("cbrt",rB),ci("transpose",$T),ci("determinant",XT),ci("inverse",jT),ci("rand",iB);class Pk extends ta{static get type(){return"ConditionalNode"}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){const{ifNode:t,elseNode:n}=e.getNodeProperties(this);if(t===void 0)return e.flowBuildStage(this,"setup"),this.getNodeType(e);const i=t.getNodeType(e);if(n!==null){const a=n.getNodeType(e);if(e.getTypeLength(a)>e.getTypeLength(i))return a}return i}setup(e){const t=this.condNode,n=this.ifNode.isolate(),i=this.elseNode?this.elseNode.isolate():null,a=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=a,i!==null&&(e.getDataFromNode(i).parentNodeBlock=a);const o=e.context.uniformFlow,u=e.getNodeProperties(this);u.condNode=t,u.ifNode=o?n:n.context({nodeBlock:n}),u.elseNode=i?o?i:i.context({nodeBlock:i}):null}generate(e,t){const n=this.getNodeType(e),i=e.getDataFromNode(this);if(i.nodeProperty!==void 0)return i.nodeProperty;const{condNode:a,ifNode:o,elseNode:u}=e.getNodeProperties(this),c=e.currentFunctionNode,d=t!=="void",g=d?bp(n).build(e):"";i.nodeProperty=g;const v=a.build(e,"bool");if(e.context.uniformFlow&&u!==null){const I=o.build(e,n),ne=u.build(e,n),ee=e.getTernary(v,I,ne);return e.format(ee,n,t)}e.addFlowCode(` -${e.tab}if ( ${v} ) { - -`).addFlowTab();let B=o.build(e,n);if(B&&(d?B=g+" = "+B+";":(B="return "+B+";",c===null&&(Lr("TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values."),B="// "+B))),e.removeFlowTab().addFlowCode(e.tab+" "+B+` - -`+e.tab+"}"),u!==null){e.addFlowCode(` else { - -`).addFlowTab();let I=u.build(e,n);I&&(d?I=g+" = "+I+";":(I="return "+I+";",c===null&&(Lr("TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values."),I="// "+I))),e.removeFlowTab().addFlowCode(e.tab+" "+I+` - -`+e.tab+`} - -`)}else e.addFlowCode(` - -`);return e.format(g,n,t)}}const ud=to(Pk).setParameterLength(2,3);ci("select",ud);class uB extends ta{static get type(){return"ContextNode"}constructor(e=null,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}getFlowContextData(){const e=[];return this.traverse(t=>{t.isContextNode===!0&&e.push(t.value)}),Object.assign({},...e)}getMemberType(e,t){return this.node.getMemberType(e,t)}analyze(e){const t=e.addContext(this.value);this.node.build(e),e.setContext(t)}setup(e){const t=e.addContext(this.value);this.node.build(e),e.setContext(t)}generate(e,t){const n=e.addContext(this.value),i=this.node.build(e,t);return e.setContext(n),i}}const Kg=(s=null,e={})=>{let t=s;return(t===null||t.isNode!==!0)&&(e=t||e,t=null),new uB(t,e)},cB=s=>Kg(s,{uniformFlow:!0}),X1=(s,e)=>Kg(s,{nodeName:e});function hB(s,e,t=null){return Kg(t,{getShadow:({light:n,shadowColorNode:i})=>e===n?i.mul(s):i})}function dB(s,e=null){return Kg(e,{getAO:(t,{material:n})=>n.transparent===!0?t:t!==null?t.mul(s):s})}function fB(s,e){return Lr('TSL: "label()" has been deprecated. Use "setName()" instead.'),X1(s,e)}ci("context",Kg),ci("label",fB),ci("uniformFlow",cB),ci("setName",X1),ci("builtinShadowContext",(s,e,t)=>hB(e,t,s)),ci("builtinAOContext",(s,e)=>dB(e,s));class Fb extends ta{static get type(){return"VarNode"}constructor(e,t=null,n=!1){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0,this.readOnly=n,this.parents=!0,this.intent=!1}setIntent(e){return this.intent=e,this}isIntent(e){return e.getDataFromNode(this).forceDeclaration===!0?!1:this.intent}getIntent(){return this.intent}getMemberType(e,t){return this.node.getMemberType(e,t)}getElementType(e){return this.node.getElementType(e)}getNodeType(e){return this.node.getNodeType(e)}getArrayCount(e){return this.node.getArrayCount(e)}isAssign(e){return e.getDataFromNode(this).assign}build(...e){const t=e[0];if(this._hasStack(t)===!1&&t.buildStage==="setup"&&(t.context.nodeLoop||t.context.nodeBlock)){let n=!1;if(this.node.isShaderCallNodeInternal&&this.node.shaderNode.getLayout()===null&&t.fnCall&&t.fnCall.shaderNode&&t.getDataFromNode(this.node.shaderNode).hasLoop){const o=t.getDataFromNode(this);o.forceDeclaration=!0,n=!0}const i=t.getBaseStack();n?i.addToStackBefore(this):i.addToStack(this)}return this.isIntent(t)&&this.isAssign(t)!==!0?this.node.build(...e):super.build(...e)}generate(e){const{node:t,name:n,readOnly:i}=this,{renderer:a}=e,o=a.backend.isWebGPUBackend===!0;let u=!1,c=!1;i&&(u=e.isDeterministic(t),c=o?i:u);const d=this.getNodeType(e);if(d=="void")return this.isIntent(e)!==!0&&Gr('TSL: ".toVar()" can not be used with void type.'),t.build(e);const g=e.getVectorType(d),v=t.build(e,g),M=e.getVarFromNode(this,n,g,void 0,c),B=e.getPropertyName(M);let I=B;if(c)if(o)I=u?`const ${B}`:`let ${B}`;else{const ne=t.getArrayCount(e);I=`const ${e.getVar(M.type,B,ne)}`}return e.addLineFlowCode(`${I} = ${v}`,this),B}_hasStack(e){return e.getDataFromNode(this).stack!==void 0}}const j1=to(Fb),AB=(s,e=null)=>j1(s,e).toStack(),pB=(s,e=null)=>j1(s,e,!0).toStack(),gB=s=>j1(s).setIntent(!0).toStack();ci("toVar",AB),ci("toConst",pB),ci("toVarIntent",gB);class Lk extends ta{static get type(){return"SubBuild"}constructor(e,t,n=null){super(n),this.node=e,this.name=t,this.isSubBuildNode=!0}getNodeType(e){if(this.nodeType!==null)return this.nodeType;e.addSubBuild(this.name);const t=this.node.getNodeType(e);return e.removeSubBuild(),t}build(e,...t){e.addSubBuild(this.name);const n=this.node.build(e,...t);return e.removeSubBuild(),n}}const vv=(s,e,t=null)=>Ss(new Lk(Ss(s),e,t));class Uk extends ta{static get type(){return"VaryingNode"}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0,this.interpolationType=null,this.interpolationSampling=null,this.global=!0}setInterpolation(e,t=null){return this.interpolationType=e,this.interpolationSampling=t,this}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){const t=e.getNodeProperties(this);let n=t.varying;if(n===void 0){const i=this.name,a=this.getNodeType(e),o=this.interpolationType,u=this.interpolationSampling;t.varying=n=e.getVaryingFromNode(this,i,a,o,u),t.node=vv(this.node,"VERTEX")}return n.needsInterpolation||(n.needsInterpolation=e.shaderStage==="fragment"),n}setup(e){this.setupVarying(e),e.flowNodeFromShaderStage(Cy.VERTEX,this.node)}analyze(e){this.setupVarying(e),e.flowNodeFromShaderStage(Cy.VERTEX,this.node)}generate(e){const t=e.getSubBuildProperty("property",e.currentStack),n=e.getNodeProperties(this),i=this.setupVarying(e);if(n[t]===void 0){const a=this.getNodeType(e),o=e.getPropertyName(i,Cy.VERTEX);e.flowNodeFromShaderStage(Cy.VERTEX,n.node,a,o),n[t]=o}return e.getPropertyName(i)}}const lg=to(Uk).setParameterLength(1,2),mB=s=>lg(s);ci("toVarying",lg),ci("toVertexStage",mB),ci("varying",(...s)=>(Lr("TSL: .varying() has been renamed to .toVarying()."),lg(...s))),ci("vertexStage",(...s)=>(Lr("TSL: .vertexStage() has been renamed to .toVertexStage()."),lg(...s)));const vB=or(([s])=>{const e=s.mul(.9478672986).add(.0521327014).pow(2.4),t=s.mul(.0773993808),n=s.lessThanEqual(.04045);return zo(e,t,n)}).setLayout({name:"sRGBTransferEOTF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),yB=or(([s])=>{const e=s.pow(.41666).mul(1.055).sub(.055),t=s.mul(12.92),n=s.lessThanEqual(.0031308);return zo(e,t,n)}).setLayout({name:"sRGBTransferOETF",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),Y1="WorkingColorSpace",Ok="OutputColorSpace";class q1 extends pc{static get type(){return"ColorSpaceNode"}constructor(e,t,n){super("vec4"),this.colorNode=e,this.source=t,this.target=n}resolveColorSpace(e,t){return t===Y1?xr.workingColorSpace:t===Ok?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){const{colorNode:t}=this,n=this.resolveColorSpace(e,this.source),i=this.resolveColorSpace(e,this.target);let a=t;return xr.enabled===!1||n===i||!n||!i||(xr.getTransfer(n)===ws&&(a=Ks(vB(a.rgb),a.a)),xr.getPrimaries(n)!==xr.getPrimaries(i)&&(a=Ks(ld(xr._getMatrix(new pn,n,i)).mul(a.rgb),a.a)),xr.getTransfer(i)===ws&&(a=Ks(yB(a.rgb),a.a))),a}}const xB=(s,e)=>Ss(new q1(Ss(s),Y1,e)),Pb=(s,e)=>Ss(new q1(Ss(s),e,Y1)),Dk=(s,e,t)=>Ss(new q1(Ss(s),e,t));ci("workingToColorSpace",xB),ci("colorSpaceToWorking",Pb);let kk=class extends u0{static get type(){return"ReferenceElementNode"}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){const t=super.generate(e),n=this.referenceNode.getNodeType(),i=this.getNodeType();return e.format(t,n,i)}};class bB extends ta{static get type(){return"ReferenceBaseNode"}constructor(e,t,n=null,i=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=i,this.properties=e.split("."),this.reference=n,this.node=null,this.group=null,this.updateType=Ao.OBJECT}setGroup(e){return this.group=e,this}element(e){return new kk(this,Ss(e))}setNodeType(e){const t=va(null,e);this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){const{properties:t}=this;let n=e[t[0]];for(let i=1;inew bB(s,e,t);class zk extends bB{static get type(){return"RendererReferenceNode"}constructor(e,t,n=null){super(e,t,n),this.renderer=n,this.setGroup(xa)}updateReference(e){return this.reference=this.renderer!==null?this.renderer:e.renderer,this.reference}}const _B=(s,e,t=null)=>new zk(s,e,t);class Gk extends pc{static get type(){return"ToneMappingNode"}constructor(e,t=SB,n=null){super("vec3"),this._toneMapping=e,this.exposureNode=t,this.colorNode=n}customCacheKey(){return fv(this._toneMapping)}setToneMapping(e){return this._toneMapping=e,this}getToneMapping(){return this._toneMapping}setup(e){const t=this.colorNode||e.context.color,n=this._toneMapping;if(n===Ct)return t;let i=null;const a=e.renderer.library.getToneMappingFunction(n);return a!==null?i=Ks(a(t.rgb,this.exposureNode),t.a):(Gr("ToneMappingNode: Unsupported Tone Mapping configuration.",n),i=t),i}}const wB=(s,e,t)=>Ss(new Gk(s,Ss(e),Ss(t))),SB=_B("toneMappingExposure","float");ci("toneMapping",(s,e,t)=>wB(e,t,s));const MB=new WeakMap;function EB(s,e){let t=MB.get(s);return t===void 0&&(t=new wh(s,e),MB.set(s,t)),t}class Lm extends A1{static get type(){return"BufferAttributeNode"}constructor(e,t=null,n=0,i=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=i,this.usage=gh,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&e.itemSize<=4&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;const t=this.getNodeType(e),n=e.getTypeLength(t),i=this.value,a=this.bufferStride||n,o=this.bufferOffset;let u;i.isInterleavedBuffer===!0?u=i:i.isBufferAttribute===!0?u=EB(i.array,a):u=EB(i,a);const c=new yf(u,n,o);u.setUsage(this.usage),this.attribute=c,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){const t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),i=e.getPropertyName(n);let a=null;return e.shaderStage==="vertex"||e.shaderStage==="compute"?(this.name=i,a=i):a=lg(this).build(e,t),a}getInputType(){return"bufferAttribute"}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}}function Lb(s,e=null,t=0,n=0,i=gh,a=!1){return e==="mat3"||e===null&&s.itemSize===9?ld(new Lm(s,"vec3",9,0).setUsage(i).setInstanced(a),new Lm(s,"vec3",9,3).setUsage(i).setInstanced(a),new Lm(s,"vec3",9,6).setUsage(i).setInstanced(a)):e==="mat4"||e===null&&s.itemSize===16?Im(new Lm(s,"vec4",16,0).setUsage(i).setInstanced(a),new Lm(s,"vec4",16,4).setUsage(i).setInstanced(a),new Lm(s,"vec4",16,8).setUsage(i).setInstanced(a),new Lm(s,"vec4",16,12).setUsage(i).setInstanced(a)):new Lm(s,e,t,n)}const J1=(s,e=null,t=0,n=0)=>Lb(s,e,t,n),Hk=(s,e=null,t=0,n=0)=>Lb(s,e,t,n,mh),Ub=(s,e=null,t=0,n=0)=>Lb(s,e,t,n,gh,!0),eS=(s,e=null,t=0,n=0)=>Lb(s,e,t,n,mh,!0);ci("toAttribute",s=>J1(s.value));class Qk extends ta{static get type(){return"ComputeNode"}constructor(e,t){super("void"),this.isComputeNode=!0,this.computeNode=e,this.workgroupSize=t,this.count=null,this.version=1,this.name="",this.updateBeforeType=Ao.OBJECT,this.onInitFunction=null}setCount(e){return this.count=e,this}getCount(){return this.count}dispose(){this.dispatchEvent({type:"dispose"})}setName(e){return this.name=e,this}label(e){return Lr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}onInit(e){return this.onInitFunction=e,this}updateBefore({renderer:e}){e.compute(this)}setup(e){const t=this.computeNode.build(e);if(t){const n=e.getNodeProperties(this);n.outputComputeNode=t.outputNode,t.outputNode=null}return t}generate(e,t){const{shaderStage:n}=e;if(n==="compute"){const i=this.computeNode.build(e,"void");i!==""&&e.addLineFlowCode(i,this)}else{const a=e.getNodeProperties(this).outputComputeNode;if(a)return a.build(e,t)}}}const tS=(s,e=[64])=>{(e.length===0||e.length>3)&&Gr("TSL: compute() workgroupSize must have 1, 2, or 3 elements");for(let t=0;ttS(s,t).setCount(e);ci("compute",CB),ci("computeKernel",tS);class Wk extends ta{static get type(){return"IsolateNode"}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isIsolateNode=!0}getNodeType(e){const t=e.getCache(),n=e.getCacheFromNode(this,this.parent);e.setCache(n);const i=this.node.getNodeType(e);return e.setCache(t),i}build(e,...t){const n=e.getCache(),i=e.getCacheFromNode(this,this.parent);e.setCache(i);const a=this.node.build(e,...t);return e.setCache(n),a}setParent(e){return this.parent=e,this}getParent(){return this.parent}}const yv=s=>new Wk(Ss(s));function TB(s,e=!0){return Lr('TSL: "cache()" has been deprecated. Use "isolate()" instead.'),yv(s).setParent(e)}ci("cache",TB),ci("isolate",yv);class Zk extends ta{static get type(){return"BypassNode"}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){const t=this.callNode.build(e,"void");return t!==""&&e.addLineFlowCode(t,this),this.outputNode.build(e)}}const BB=to(Zk).setParameterLength(2);ci("bypass",BB);class RB extends ta{static get type(){return"RemapNode"}constructor(e,t,n,i=qt(0),a=qt(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=i,this.outHighNode=a,this.doClamp=!0}setup(){const{node:e,inLowNode:t,inHighNode:n,outLowNode:i,outHighNode:a,doClamp:o}=this;let u=e.sub(t).div(n.sub(t));return o===!0&&(u=u.clamp()),u.mul(a.sub(i)).add(i)}}const IB=to(RB,null,null,{doClamp:!1}).setParameterLength(3,5),NB=to(RB).setParameterLength(3,5);ci("remap",IB),ci("remapClamp",NB);class Ob extends ta{static get type(){return"ExpressionNode"}constructor(e="",t="void"){super(t),this.snippet=e}generate(e,t){const n=this.getNodeType(e),i=this.snippet;if(n==="void")e.addLineFlowCode(i,this);else return e.format(i,n,t)}}const $g=to(Ob).setParameterLength(1,2),FB=s=>(s?ud(s,$g("discard")):$g("discard")).toStack(),Kk=()=>$g("return").toStack();ci("discard",FB);class $k extends pc{static get type(){return"RenderOutputNode"}constructor(e,t,n){super("vec4"),this.colorNode=e,this._toneMapping=t,this.outputColorSpace=n,this.isRenderOutputNode=!0}setToneMapping(e){return this._toneMapping=e,this}getToneMapping(){return this._toneMapping}setup({context:e}){let t=this.colorNode||e.color;const n=(this._toneMapping!==null?this._toneMapping:e.toneMapping)||Ct,i=(this.outputColorSpace!==null?this.outputColorSpace:e.outputColorSpace)||ao;return n!==Ct&&(t=t.toneMapping(n)),i!==ao&&i!==xr.workingColorSpace&&(t=t.workingToColorSpace(i)),t}}const nS=(s,e=null,t=null)=>Ss(new $k(Ss(s),e,t));ci("renderOutput",nS);class Xk extends pc{static get type(){return"DebugNode"}constructor(e,t=null){super(),this.node=e,this.callback=t}getNodeType(e){return this.node.getNodeType(e)}setup(e){return this.node.build(e)}analyze(e){return this.node.build(e)}generate(e){const t=this.callback,n=this.node.build(e),i="--- TSL debug - "+e.shaderStage+" shader ---",a="-".repeat(i.length);let o="";return o+="// #"+i+`# -`,o+=e.flow.code.replace(/^\t/mg,"")+` -`,o+="/* ... */ "+n+` /* ... */ -`,o+="// #"+a+`# -`,t!==null?t(e,o):ac(o),n}}const PB=(s,e=null)=>Ss(new Xk(Ss(s),e)).toStack();ci("debug",PB);class LB{constructor(){this._renderer=null,this.currentFrame=null}get nodeFrame(){return this._renderer._nodes.nodeFrame}setRenderer(e){return this._renderer=e,this}getRenderer(){return this._renderer}init(){}begin(){}finish(){}inspect(){}computeAsync(){}beginCompute(){}finishCompute(){}beginRender(){}finishRender(){}copyTextureToTexture(){}copyFramebufferToTexture(){}}class jk extends ta{static get type(){return"InspectorNode"}constructor(e,t="",n=null){super(),this.node=e,this.name=t,this.callback=n,this.updateType=Ao.FRAME,this.isInspectorNode=!0}getName(){return this.name||this.node.name}update(e){e.renderer.inspector.inspect(this)}getNodeType(e){return this.node.getNodeType(e)}setup(e){let t=this.node;return e.context.inspector===!0&&this.callback!==null&&(t=this.callback(t)),e.renderer.backend.isWebGPUBackend!==!0&&e.renderer.inspector.constructor!==LB&&ki('TSL: ".toInspector()" is only available with WebGPU.'),t}}function UB(s,e="",t=null){return s=Ss(s),s.before(new jk(s,e,t))}ci("toInspector",UB);function Yk(s){Lr("TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add",s)}class OB extends ta{static get type(){return"AttributeNode"}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){const n=this.getAttributeName(e);if(e.hasGeometryAttribute(n)){const i=e.geometry.getAttribute(n);t=e.getTypeFromAttribute(i)}else t="float"}return t}setAttributeName(e){return this._attributeName=e,this}getAttributeName(){return this._attributeName}generate(e){const t=this.getAttributeName(e),n=this.getNodeType(e);if(e.hasGeometryAttribute(t)===!0){const a=e.geometry.getAttribute(t),o=e.getTypeFromAttribute(a),u=e.getAttribute(t,o);return e.shaderStage==="vertex"?e.format(u.name,o,n):lg(this).build(e,n)}else return Lr(`AttributeNode: Vertex attribute "${t}" not found on geometry.`),e.generateConst(n)}serialize(e){super.serialize(e),e.global=this.global,e._attributeName=this._attributeName}deserialize(e){super.deserialize(e),this.global=e.global,this._attributeName=e._attributeName}}const af=(s,e=null)=>new OB(s,e),Zl=(s=0)=>af("uv"+(s>0?s:""),"vec2");class qk extends ta{static get type(){return"TextureSizeNode"}constructor(e,t=null){super("uvec2"),this.isTextureSizeNode=!0,this.textureNode=e,this.levelNode=t}generate(e,t){const n=this.textureNode.build(e,"property"),i=this.levelNode===null?"0":this.levelNode.build(e,"int");return e.format(`${e.getMethod("textureDimensions")}( ${n}, ${i} )`,this.getNodeType(e),t)}}const Xg=to(qk).setParameterLength(1,2);class Jk extends Uy{static get type(){return"MaxMipLevelNode"}constructor(e){super(0),this._textureNode=e,this.updateType=Ao.FRAME}get textureNode(){return this._textureNode}get texture(){return this._textureNode.value}update(){const e=this.texture,t=e.images,n=t&&t.length>0?t[0]&&t[0].image||t[0]:e.image;if(n&&n.width!==void 0){const{width:i,height:a}=n;this.value=Math.log2(Math.max(i,a))}}}const rS=to(Jk).setParameterLength(1),iS=new zi;class ug extends Uy{static get type(){return"TextureNode"}constructor(e=iS,t=null,n=null,i=null){super(e),this.isTextureNode=!0,this.uvNode=t,this.levelNode=n,this.biasNode=i,this.compareNode=null,this.depthNode=null,this.gradNode=null,this.offsetNode=null,this.sampler=!0,this.updateMatrix=!1,this.updateType=Ao.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this._flipYUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?"float":this.value.type===st?"uvec4":this.value.type===Xt?"ivec4":"vec4"}getInputType(){return"texture"}getDefaultUV(){return Zl(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=va(this.value.matrix)),this._matrixUniform.mul(Kn(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this}setupUV(e,t){return e.isFlipY()&&(this._flipYUniform===null&&(this._flipYUniform=va(!1)),t=t.toVar(),this.sampler?t=this._flipYUniform.select(t.flipY(),t):t=this._flipYUniform.select(t.setY(Qn(Xg(this,this.levelNode).y).sub(t.y).sub(1)),t)),t}setup(e){const t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;const n=this.value;if(!n||n.isTexture!==!0)throw new Error("THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().");const i=or(()=>{let o=this.uvNode;return(o===null||e.context.forceUVContext===!0)&&e.context.getUV&&(o=e.context.getUV(this,e)),o||(o=this.getDefaultUV()),this.updateMatrix===!0&&(o=this.getTransformedUV(o)),o=this.setupUV(e,o),this.updateType=this._matrixUniform!==null||this._flipYUniform!==null?Ao.OBJECT:Ao.NONE,o})();let a=this.levelNode;a===null&&e.context.getTextureLevel&&(a=e.context.getTextureLevel(this)),t.uvNode=i,t.levelNode=a,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode,t.offsetNode=this.offsetNode}generateUV(e,t){return t.build(e,this.sampler===!0?"vec2":"ivec2")}generateOffset(e,t){return t.build(e,"ivec2")}generateSnippet(e,t,n,i,a,o,u,c,d){const g=this.value;let v;return a?v=e.generateTextureBias(g,t,n,a,o,d):c?v=e.generateTextureGrad(g,t,n,c,o,d):u?v=e.generateTextureCompare(g,t,n,u,o,d):this.sampler===!1?v=e.generateTextureLoad(g,t,n,i,o,d):i?v=e.generateTextureLevel(g,t,n,i,o,d):v=e.generateTexture(g,t,n,o,d),v}generate(e,t){const n=this.value,i=e.getNodeProperties(this),a=super.generate(e,"property");if(/^sampler/.test(t))return a+"_sampler";if(e.isReference(t))return a;{const o=e.getDataFromNode(this);let u=o.propertyName;if(u===void 0){const{uvNode:g,levelNode:v,biasNode:M,compareNode:B,depthNode:I,gradNode:ne,offsetNode:ee}=i,q=this.generateUV(e,g),ye=v?v.build(e,"float"):null,Ce=M?M.build(e,"float"):null,ke=I?I.build(e,"int"):null,nt=B?B.build(e,"float"):null,Ye=ne?[ne[0].build(e,"vec2"),ne[1].build(e,"vec2")]:null,ht=ee?this.generateOffset(e,ee):null,Rt=e.getVarFromNode(this);u=e.getPropertyName(Rt);const qe=this.generateSnippet(e,a,q,ye,Ce,ke,nt,Ye,ht);e.addLineFlowCode(`${u} = ${qe}`,this),o.snippet=qe,o.propertyName=u}let c=u;const d=this.getNodeType(e);return e.needsToWorkingColorSpace(n)&&(c=Pb($g(c,d),n.colorSpace).setup(e).build(e,d)),e.format(c,d,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){return Lr("TextureNode: .uv() has been renamed. Use .sample() instead."),this.sample(e)}sample(e){const t=this.clone();return t.uvNode=Ss(e),t.referenceNode=this.getBase(),Ss(t)}load(e){return this.sample(e).setSampler(!1)}blur(e){const t=this.clone();t.biasNode=Ss(e).mul(rS(t)),t.referenceNode=this.getBase();const n=t.value;return t.generateMipmaps===!1&&(n&&n.generateMipmaps===!1||n.minFilter===cn||n.magFilter===cn)&&(Lr("TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture."),t.biasNode=null),Ss(t)}level(e){const t=this.clone();return t.levelNode=Ss(e),t.referenceNode=this.getBase(),Ss(t)}size(e){return Xg(this,e)}bias(e){const t=this.clone();return t.biasNode=Ss(e),t.referenceNode=this.getBase(),Ss(t)}getBase(){return this.referenceNode?this.referenceNode.getBase():this}compare(e){const t=this.clone();return t.compareNode=Ss(e),t.referenceNode=this.getBase(),Ss(t)}grad(e,t){const n=this.clone();return n.gradNode=[Ss(e),Ss(t)],n.referenceNode=this.getBase(),Ss(n)}depth(e){const t=this.clone();return t.depthNode=Ss(e),t.referenceNode=this.getBase(),Ss(t)}offset(e){const t=this.clone();return t.offsetNode=Ss(e),t.referenceNode=this.getBase(),Ss(t)}serialize(e){super.serialize(e),e.value=this.value.toJSON(e.meta).uuid,e.sampler=this.sampler,e.updateMatrix=this.updateMatrix,e.updateType=this.updateType}deserialize(e){super.deserialize(e),this.value=e.meta.textures[e.value],this.sampler=e.sampler,this.updateMatrix=e.updateMatrix,this.updateType=e.updateType}update(){const e=this.value,t=this._matrixUniform;t!==null&&(t.value=e.matrix),e.matrixAutoUpdate===!0&&e.updateMatrix();const n=this._flipYUniform;n!==null&&(n.value=e.image instanceof ImageBitmap&&e.flipY===!0||e.isRenderTargetTexture===!0||e.isFramebufferTexture===!0||e.isDepthTexture===!0)}clone(){const e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.offsetNode=this.offsetNode,e}}const e4=to(ug).setParameterLength(1,4).setName("texture"),xl=(s=iS,e=null,t=null,n=null)=>{let i;return s&&s.isTextureNode===!0?(i=Ss(s.clone()),i.referenceNode=s.getBase(),e!==null&&(i.uvNode=Ss(e)),t!==null&&(i.levelNode=Ss(t)),n!==null&&(i.biasNode=Ss(n))):i=e4(s,e,t,n),i},t4=(s=iS)=>xl(s),Rc=(...s)=>xl(...s).setSampler(!1),n4=(s,e,t)=>xl(s,e).level(t),r4=s=>(s.isNode===!0?s:xl(s)).convert("sampler"),i4=s=>(s.isNode===!0?s:xl(s)).convert("samplerComparison");class sS extends Uy{static get type(){return"BufferNode"}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n,this.updateRanges=[]}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}getElementType(e){return this.getNodeType(e)}getInputType(){return"buffer"}}const Dy=(s,e,t)=>new sS(s,e,t);class s4 extends u0{static get type(){return"UniformArrayElementNode"}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){const t=super.generate(e),n=this.getNodeType(),i=this.node.getPaddedType();return e.format(t,i,n)}}class a4 extends sS{static get type(){return"UniformArrayNode"}constructor(e,t=null){super(null),this.array=e,this.elementType=t===null?Qg(e[0]):t,this.paddedType=this.getPaddedType(),this.updateType=Ao.RENDER,this.isArrayBufferNode=!0}getNodeType(){return this.paddedType}getElementType(){return this.elementType}getPaddedType(){const e=this.elementType;let t="vec4";return e==="mat2"?t="mat2":/mat/.test(e)===!0?t="mat4":e.charAt(0)==="i"?t="ivec4":e.charAt(0)==="u"&&(t="uvec4"),t}update(){const{array:e,value:t}=this,n=this.elementType;if(n==="float"||n==="int"||n==="uint")for(let i=0;inew a4(s,e);class o4 extends ta{constructor(e){super("float"),this.name=e,this.isBuiltinNode=!0}generate(){return this.name}}const jg=to(o4).setParameterLength(1);let ky,Vy;class Fu extends ta{static get type(){return"ScreenNode"}constructor(e){super(),this.scope=e,this._output=null,this.isViewportNode=!0}getNodeType(){return this.scope===Fu.DPR?"float":this.scope===Fu.VIEWPORT?"vec4":"vec2"}getUpdateType(){let e=Ao.NONE;return(this.scope===Fu.SIZE||this.scope===Fu.VIEWPORT||this.scope===Fu.DPR)&&(e=Ao.RENDER),this.updateType=e,e}update({renderer:e}){const t=e.getRenderTarget();this.scope===Fu.VIEWPORT?t!==null?Vy.copy(t.viewport):(e.getViewport(Vy),Vy.multiplyScalar(e.getPixelRatio())):this.scope===Fu.DPR?this._output.value=e.getPixelRatio():t!==null?(ky.width=t.width,ky.height=t.height):e.getDrawingBufferSize(ky)}setup(){const e=this.scope;let t=null;return e===Fu.SIZE?t=va(ky||(ky=new ce)):e===Fu.VIEWPORT?t=va(Vy||(Vy=new Ni)):e===Fu.DPR?t=va(1):t=Gi(m0.div(g0)),this._output=t,t}generate(e){if(this.scope===Fu.COORDINATE){let t=e.getFragCoord();if(e.isFlipY()){const n=e.getNodeProperties(g0).outputNode.build(e);t=`${e.getType("vec2")}( ${t}.x, ${n}.y - ${t}.y )`}return t}return super.generate(e)}}Fu.COORDINATE="coordinate",Fu.VIEWPORT="viewport",Fu.SIZE="size",Fu.UV="uv",Fu.DPR="dpr";const aS=xs(Fu,Fu.DPR),Yg=xs(Fu,Fu.UV),g0=xs(Fu,Fu.SIZE),m0=xs(Fu,Fu.COORDINATE),xv=xs(Fu,Fu.VIEWPORT),oS=xv.zw,DB=m0.sub(xv.xy),l4=DB.div(oS),u4=or(()=>(Lr('TSL: "viewportResolution" is deprecated. Use "screenSize" instead.'),g0),"vec2").once()(),Um=va(0,"uint").setName("u_cameraIndex").setGroup(Eb("cameraIndex")).toVarying("v_cameraIndex"),qg=va("float").setName("cameraNear").setGroup(xa).onRenderUpdate(({camera:s})=>s.near),Jg=va("float").setName("cameraFar").setGroup(xa).onRenderUpdate(({camera:s})=>s.far),of=or(({camera:s})=>{let e;if(s.isArrayCamera&&s.cameras.length>0){const t=[];for(const i of s.cameras)t.push(i.projectionMatrix);e=Fd(t).setGroup(xa).setName("cameraProjectionMatrices").element(s.isMultiViewCamera?jg("gl_ViewID_OVR"):Um).toConst("cameraProjectionMatrix")}else e=va("mat4").setName("cameraProjectionMatrix").setGroup(xa).onRenderUpdate(({camera:t})=>t.projectionMatrix);return e}).once()(),c4=or(({camera:s})=>{let e;if(s.isArrayCamera&&s.cameras.length>0){const t=[];for(const i of s.cameras)t.push(i.projectionMatrixInverse);e=Fd(t).setGroup(xa).setName("cameraProjectionMatricesInverse").element(s.isMultiViewCamera?jg("gl_ViewID_OVR"):Um).toConst("cameraProjectionMatrixInverse")}else e=va("mat4").setName("cameraProjectionMatrixInverse").setGroup(xa).onRenderUpdate(({camera:t})=>t.projectionMatrixInverse);return e}).once()(),AA=or(({camera:s})=>{let e;if(s.isArrayCamera&&s.cameras.length>0){const t=[];for(const i of s.cameras)t.push(i.matrixWorldInverse);e=Fd(t).setGroup(xa).setName("cameraViewMatrices").element(s.isMultiViewCamera?jg("gl_ViewID_OVR"):Um).toConst("cameraViewMatrix")}else e=va("mat4").setName("cameraViewMatrix").setGroup(xa).onRenderUpdate(({camera:t})=>t.matrixWorldInverse);return e}).once()(),h4=or(({camera:s})=>{let e;if(s.isArrayCamera&&s.cameras.length>0){const t=[];for(const i of s.cameras)t.push(i.matrixWorld);e=Fd(t).setGroup(xa).setName("cameraWorldMatrices").element(s.isMultiViewCamera?jg("gl_ViewID_OVR"):Um).toConst("cameraWorldMatrix")}else e=va("mat4").setName("cameraWorldMatrix").setGroup(xa).onRenderUpdate(({camera:t})=>t.matrixWorld);return e}).once()(),d4=or(({camera:s})=>{let e;if(s.isArrayCamera&&s.cameras.length>0){const t=[];for(const i of s.cameras)t.push(i.normalMatrix);e=Fd(t).setGroup(xa).setName("cameraNormalMatrices").element(s.isMultiViewCamera?jg("gl_ViewID_OVR"):Um).toConst("cameraNormalMatrix")}else e=va("mat3").setName("cameraNormalMatrix").setGroup(xa).onRenderUpdate(({camera:t})=>t.normalMatrix);return e}).once()(),zy=or(({camera:s})=>{let e;if(s.isArrayCamera&&s.cameras.length>0){const t=[];for(let i=0,a=s.cameras.length;i{const o=i.cameras,u=a.array;for(let c=0,d=o.length;cn.value.setFromMatrixPosition(t.matrixWorld));return e}).once()(),f4=or(({camera:s})=>{let e;if(s.isArrayCamera&&s.cameras.length>0){const t=[];for(const i of s.cameras)t.push(i.viewport);e=Fd(t,"vec4").setGroup(xa).setName("cameraViewports").element(Um).toConst("cameraViewport")}else e=Ks(0,0,g0.x,g0.y).toConst("cameraViewport");return e}).once()(),kB=new gi;class tl extends ta{static get type(){return"Object3DNode"}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=Ao.OBJECT,this.uniformNode=new Uy(null)}getNodeType(){const e=this.scope;if(e===tl.WORLD_MATRIX)return"mat4";if(e===tl.POSITION||e===tl.VIEW_POSITION||e===tl.DIRECTION||e===tl.SCALE)return"vec3";if(e===tl.RADIUS)return"float"}update(e){const t=this.object3d,n=this.uniformNode,i=this.scope;if(i===tl.WORLD_MATRIX)n.value=t.matrixWorld;else if(i===tl.POSITION)n.value=n.value||new le,n.value.setFromMatrixPosition(t.matrixWorld);else if(i===tl.SCALE)n.value=n.value||new le,n.value.setFromMatrixScale(t.matrixWorld);else if(i===tl.DIRECTION)n.value=n.value||new le,t.getWorldDirection(n.value);else if(i===tl.VIEW_POSITION){const a=e.camera;n.value=n.value||new le,n.value.setFromMatrixPosition(t.matrixWorld),n.value.applyMatrix4(a.matrixWorldInverse)}else if(i===tl.RADIUS){const a=e.object.geometry;a.boundingSphere===null&&a.computeBoundingSphere(),kB.copy(a.boundingSphere).applyMatrix4(t.matrixWorld),n.value=kB.radius}}generate(e){const t=this.scope;return t===tl.WORLD_MATRIX?this.uniformNode.nodeType="mat4":t===tl.POSITION||t===tl.VIEW_POSITION||t===tl.DIRECTION||t===tl.SCALE?this.uniformNode.nodeType="vec3":t===tl.RADIUS&&(this.uniformNode.nodeType="float"),this.uniformNode.build(e)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}}tl.WORLD_MATRIX="worldMatrix",tl.POSITION="position",tl.SCALE="scale",tl.VIEW_POSITION="viewPosition",tl.DIRECTION="direction",tl.RADIUS="radius";const A4=to(tl,tl.DIRECTION).setParameterLength(1),p4=to(tl,tl.WORLD_MATRIX).setParameterLength(1),VB=to(tl,tl.POSITION).setParameterLength(1),g4=to(tl,tl.SCALE).setParameterLength(1),m4=to(tl,tl.VIEW_POSITION).setParameterLength(1),v4=to(tl,tl.RADIUS).setParameterLength(1);class $A extends tl{static get type(){return"ModelNode"}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}}const y4=xs($A,$A.DIRECTION),XA=xs($A,$A.WORLD_MATRIX),x4=xs($A,$A.POSITION),b4=xs($A,$A.SCALE),_4=xs($A,$A.VIEW_POSITION),zB=xs($A,$A.RADIUS),GB=va(new pn).onObjectUpdate(({object:s},e)=>e.value.getNormalMatrix(s.matrixWorld)),w4=va(new di).onObjectUpdate(({object:s},e)=>e.value.copy(s.matrixWorld).invert()),cg=or(s=>s.context.modelViewMatrix||HB).once()().toVar("modelViewMatrix"),HB=AA.mul(XA),lS=or(s=>(s.context.isHighPrecisionModelViewMatrix=!0,va("mat4").onObjectUpdate(({object:e,camera:t})=>e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld)))).once()().toVar("highpModelViewMatrix"),uS=or(s=>{const e=s.context.isHighPrecisionModelViewMatrix;return va("mat3").onObjectUpdate(({object:t,camera:n})=>(e!==!0&&t.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,t.matrixWorld),t.normalMatrix.getNormalMatrix(t.modelViewMatrix)))}).once()().toVar("highpModelNormalViewMatrix"),cd=af("position","vec3"),vc=cd.toVarying("positionLocal"),Db=cd.toVarying("positionPrevious"),pA=or(s=>XA.mul(vc).xyz.toVarying(s.getSubBuildProperty("v_positionWorld")),"vec3").once(["POSITION"])(),cS=or(()=>vc.transformDirection(XA).toVarying("v_positionWorldDirection").normalize().toVar("positionWorldDirection"),"vec3").once(["POSITION"])(),Oc=or(s=>s.context.setupPositionView().toVarying("v_positionView"),"vec3").once(["POSITION"])(),iu=or(s=>{let e;return s.camera.isOrthographicCamera?e=Kn(0,0,1):e=Oc.negate().toVarying("v_positionViewDirection").normalize(),e.toVar("positionViewDirection")},"vec3").once(["POSITION"])();class S4 extends ta{static get type(){return"FrontFacingNode"}constructor(){super("bool"),this.isFrontFacingNode=!0}generate(e){if(e.shaderStage!=="fragment")return"true";const{material:t}=e;return t.side===de?"false":e.getFrontFacing()}}const QB=xs(S4),hS=qt(QB).mul(2).sub(1),bv=or(([s],{material:e})=>{const t=e.side;return t===de?s=s.mul(-1):t===he&&(s=s.mul(hS)),s}),kb=af("normal","vec3"),Of=or(s=>s.geometry.hasAttribute("normal")===!1?(Lr('TSL: Vertex attribute "normal" not found on geometry.'),Kn(0,1,0)):kb,"vec3").once()().toVar("normalLocal"),WB=Oc.dFdx().cross(Oc.dFdy()).normalize().toVar("normalFlat"),_v=or(s=>{let e;return s.material.flatShading===!0?e=WB:e=dS(Of).toVarying("v_normalViewGeometry").normalize(),e},"vec3").once()().toVar("normalViewGeometry"),ZB=or(s=>{let e=_v.transformDirection(AA);return s.material.flatShading!==!0&&(e=e.toVarying("v_normalWorldGeometry")),e.normalize().toVar("normalWorldGeometry")},"vec3").once()(),cl=or(({subBuildFn:s,material:e,context:t})=>{let n;return s==="NORMAL"||s==="VERTEX"?(n=_v,e.flatShading!==!0&&(n=bv(n))):n=t.setupNormal().context({getUV:null}),n},"vec3").once(["NORMAL","VERTEX"])().toVar("normalView"),Om=cl.transformDirection(AA).toVar("normalWorld"),v0=or(({subBuildFn:s,context:e})=>{let t;return s==="NORMAL"||s==="VERTEX"?t=cl:t=e.setupClearcoatNormal().context({getUV:null}),t},"vec3").once(["NORMAL","VERTEX"])().toVar("clearcoatNormalView"),KB=or(([s,e=XA])=>{const t=ld(e),n=s.div(Kn(t[0].dot(t[0]),t[1].dot(t[1]),t[2].dot(t[2])));return t.mul(n).xyz}),dS=or(([s],e)=>{const t=e.context.modelNormalViewMatrix;if(t)return t.transformDirection(s);const n=GB.mul(s);return AA.transformDirection(n)}),M4=or(()=>(Lr('TSL: "transformedNormalView" is deprecated. Use "normalView" instead.'),cl)).once(["NORMAL","VERTEX"])(),E4=or(()=>(Lr('TSL: "transformedNormalWorld" is deprecated. Use "normalWorld" instead.'),Om)).once(["NORMAL","VERTEX"])(),C4=or(()=>(Lr('TSL: "transformedClearcoatNormalView" is deprecated. Use "clearcoatNormalView" instead.'),v0)).once(["NORMAL","VERTEX"])(),$B=new Ua,fS=new di,XB=va(0).onReference(({material:s})=>s).onObjectUpdate(({material:s})=>s.refractionRatio),Vb=va(1).onReference(({material:s})=>s).onObjectUpdate(function({material:s,scene:e}){return s.envMap?s.envMapIntensity:e.environmentIntensity}),AS=va(new di).onReference(function(s){return s.material}).onObjectUpdate(function({material:s,scene:e}){const t=e.environment!==null&&s.envMap===null?e.environmentRotation:s.envMapRotation;return t?($B.copy(t),fS.makeRotationFromEuler($B)):fS.identity(),fS}),jB=iu.negate().reflect(cl),YB=iu.negate().refract(cl,XB),qB=jB.transformDirection(AA).toVar("reflectVector"),JB=YB.transformDirection(AA).toVar("reflectVector"),e2=new rh;class T4 extends ug{static get type(){return"CubeTextureNode"}constructor(e,t=null,n=null,i=null){super(e,t,n,i),this.isCubeTextureNode=!0}getInputType(){return this.value.isDepthTexture===!0?"cubeDepthTexture":"cubeTexture"}getDefaultUV(){const e=this.value;return e.mapping===it?qB:e.mapping===wt?JB:(Gr('CubeTextureNode: Mapping "%s" not supported.',e.mapping),Kn(0,0,0))}setUpdateMatrix(){}setupUV(e,t){const n=this.value;return n.isDepthTexture===!0?e.renderer.coordinateSystem===To?Kn(t.x,t.y.negate(),t.z):t:((e.renderer.coordinateSystem===To||!n.isRenderTargetTexture)&&(t=Kn(t.x.negate(),t.yz)),AS.mul(t))}generateUV(e,t){return t.build(e,this.sampler===!0?"vec3":"ivec3")}}const pS=to(T4).setParameterLength(1,4).setName("cubeTexture"),lf=(s=e2,e=null,t=null,n=null)=>{let i;return s&&s.isCubeTextureNode===!0?(i=Ss(s.clone()),i.referenceNode=s,e!==null&&(i.uvNode=Ss(e)),t!==null&&(i.levelNode=Ss(t)),n!==null&&(i.biasNode=Ss(n))):i=pS(s,e,t,n),i},B4=(s=e2)=>pS(s);class R4 extends u0{static get type(){return"ReferenceElementNode"}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){const t=super.generate(e),n=this.referenceNode.getNodeType(),i=this.getNodeType();return e.format(t,n,i)}}class zb extends ta{static get type(){return"ReferenceNode"}constructor(e,t,n=null,i=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=i,this.properties=e.split("."),this.reference=n,this.node=null,this.group=null,this.name=null,this.updateType=Ao.OBJECT}element(e){return new R4(this,Ss(e))}setGroup(e){return this.group=e,this}setName(e){return this.name=e,this}label(e){return Lr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}setNodeType(e){let t=null;this.count!==null?t=Dy(null,e,this.count):Array.isArray(this.getValueFromReference())?t=Fd(null,e):e==="texture"?t=xl(null):e==="cubeTexture"?t=lf(null):t=va(null,e),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.setName(this.name),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){const{properties:t}=this;let n=e[t[0]];for(let i=1;inew zb(s,e,t),gS=(s,e,t,n)=>new zb(s,e,n,t);class I4 extends zb{static get type(){return"MaterialReferenceNode"}constructor(e,t,n=null){super(e,t,n),this.material=n,this.isMaterialReferenceNode=!0}updateReference(e){return this.reference=this.material!==null?this.material:e.material,this.reference}}const em=(s,e,t=null)=>new I4(s,e,t),t2=Zl(),N4=Oc.dFdx(),F4=Oc.dFdy(),n2=t2.dFdx(),r2=t2.dFdy(),i2=cl,s2=F4.cross(i2),a2=i2.cross(N4),mS=s2.mul(n2.x).add(a2.mul(r2.x)),vS=s2.mul(n2.y).add(a2.mul(r2.y)),o2=mS.dot(mS).max(vS.dot(vS)),l2=o2.equal(0).select(0,o2.inverseSqrt()),P4=mS.mul(l2).toVar("tangentViewFrame"),L4=vS.mul(l2).toVar("bitangentViewFrame"),Gb=af("tangent","vec4"),Gy=Gb.xyz.toVar("tangentLocal"),Hb=or(({subBuildFn:s,geometry:e,material:t})=>{let n;return s==="VERTEX"||e.hasAttribute("tangent")?n=cg.mul(Ks(Gy,0)).xyz.toVarying("v_tangentView").normalize():n=P4,t.flatShading!==!0&&(n=bv(n)),n},"vec3").once(["NORMAL","VERTEX"])().toVar("tangentView"),u2=Hb.transformDirection(AA).toVarying("v_tangentWorld").normalize().toVar("tangentWorld"),Qb=or(([s,e],{subBuildFn:t,material:n})=>{let i=s.mul(Gb.w).xyz;return t==="NORMAL"&&n.flatShading!==!0&&(i=i.toVarying(e)),i}).once(["NORMAL"]),U4=Qb(kb.cross(Gb),"v_bitangentGeometry").normalize().toVar("bitangentGeometry"),O4=Qb(Of.cross(Gy),"v_bitangentLocal").normalize().toVar("bitangentLocal"),c2=or(({subBuildFn:s,geometry:e,material:t})=>{let n;return s==="VERTEX"||e.hasAttribute("tangent")?n=Qb(cl.cross(Hb),"v_bitangentView").normalize():n=L4,t.flatShading!==!0&&(n=bv(n)),n},"vec3").once(["NORMAL","VERTEX"])().toVar("bitangentView"),D4=Qb(Om.cross(u2),"v_bitangentWorld").normalize().toVar("bitangentWorld"),y0=ld(Hb,c2,cl).toVar("TBNViewMatrix"),h2=iu.mul(y0),k4=(s,e)=>s.sub(h2.mul(e)),d2=or(()=>{let s=f0.cross(iu);return s=s.cross(f0).normalize(),s=zo(s,cl,Fm.mul(ig.oneMinus()).oneMinus().pow2().pow2()).normalize(),s}).once()(),f2=s=>Ss(s).mul(.5).add(.5),V4=s=>Ss(s).mul(2).sub(1),yS=s=>Kn(s,Nd(Nb(qt(1).sub(ZA(s,s)))));class z4 extends pc{static get type(){return"NormalMapNode"}constructor(e,t=null){super("vec3"),this.node=e,this.scaleNode=t,this.normalMapType=Ll,this.unpackNormalMode=Kh}setup({material:e}){const{normalMapType:t,scaleNode:n,unpackNormalMode:i}=this;let a=this.node.mul(2).sub(1);if(t===Ll?i===dh?a=yS(a.xy):i===$h?a=yS(a.yw):i!==Kh&&console.error(`THREE.NodeMaterial: Unexpected unpack normal mode: ${i}`):i!==Kh&&console.error(`THREE.NodeMaterial: Normal map type '${t}' is not compatible with unpack normal mode '${i}'`),n!==null){let u=n;e.flatShading===!0&&(u=bv(u)),a=Kn(a.xy.mul(u),a.z)}let o=null;return t===Lu?o=dS(a):t===Ll?o=y0.mul(a).normalize():(Gr(`NodeMaterial: Unsupported normal map type: ${t}`),o=cl),o}}const xS=to(z4).setParameterLength(1,2),G4=or(({textureNode:s,bumpScale:e})=>{const t=i=>s.isolate().context({getUV:a=>i(a.uvNode||Zl()),forceUVContext:!0}),n=qt(t(i=>i));return Gi(qt(t(i=>i.add(i.dFdx()))).sub(n),qt(t(i=>i.add(i.dFdy()))).sub(n)).mul(e)}),H4=or(s=>{const{surf_pos:e,surf_norm:t,dHdxy:n}=s,i=e.dFdx().normalize(),a=e.dFdy().normalize(),o=t,u=a.cross(o),c=o.cross(i),d=i.dot(u).mul(hS),g=d.sign().mul(n.x.mul(u).add(n.y.mul(c)));return d.abs().mul(t).sub(g).normalize()});class Q4 extends pc{static get type(){return"BumpMapNode"}constructor(e,t=null){super("vec3"),this.textureNode=e,this.scaleNode=t}setup(){const e=this.scaleNode!==null?this.scaleNode:1,t=G4({textureNode:this.textureNode,bumpScale:e});return H4({surf_pos:Oc,surf_norm:cl,dHdxy:t})}}const bS=to(Q4).setParameterLength(1,2),A2=new Map;class vi extends ta{static get type(){return"MaterialNode"}constructor(e){super(),this.scope=e}getCache(e,t){let n=A2.get(e);return n===void 0&&(n=em(e,t),A2.set(e,n)),n}getFloat(e){return this.getCache(e,"float")}getColor(e){return this.getCache(e,"color")}getTexture(e){return this.getCache(e==="map"?"map":e+"Map","texture")}setup(e){const t=e.context.material,n=this.scope;let i=null;if(n===vi.COLOR){const a=t.color!==void 0?this.getColor(n):Kn();t.map&&t.map.isTexture===!0?i=a.mul(this.getTexture("map")):i=a}else if(n===vi.OPACITY){const a=this.getFloat(n);t.alphaMap&&t.alphaMap.isTexture===!0?i=a.mul(this.getTexture("alpha")):i=a}else if(n===vi.SPECULAR_STRENGTH)t.specularMap&&t.specularMap.isTexture===!0?i=this.getTexture("specular").r:i=qt(1);else if(n===vi.SPECULAR_INTENSITY){const a=this.getFloat(n);t.specularIntensityMap&&t.specularIntensityMap.isTexture===!0?i=a.mul(this.getTexture(n).a):i=a}else if(n===vi.SPECULAR_COLOR){const a=this.getColor(n);t.specularColorMap&&t.specularColorMap.isTexture===!0?i=a.mul(this.getTexture(n).rgb):i=a}else if(n===vi.ROUGHNESS){const a=this.getFloat(n);t.roughnessMap&&t.roughnessMap.isTexture===!0?i=a.mul(this.getTexture(n).g):i=a}else if(n===vi.METALNESS){const a=this.getFloat(n);t.metalnessMap&&t.metalnessMap.isTexture===!0?i=a.mul(this.getTexture(n).b):i=a}else if(n===vi.EMISSIVE){const a=this.getFloat("emissiveIntensity"),o=this.getColor(n).mul(a);t.emissiveMap&&t.emissiveMap.isTexture===!0?i=o.mul(this.getTexture(n)):i=o}else if(n===vi.NORMAL)t.normalMap?(i=xS(this.getTexture("normal"),this.getCache("normalScale","vec2")),i.normalMapType=t.normalMapType,(t.normalMap.format==ze||t.normalMap.format==gr||t.normalMap.format==fr)&&(i.unpackNormalMode=dh)):t.bumpMap?i=bS(this.getTexture("bump").r,this.getFloat("bumpScale")):i=cl;else if(n===vi.CLEARCOAT){const a=this.getFloat(n);t.clearcoatMap&&t.clearcoatMap.isTexture===!0?i=a.mul(this.getTexture(n).r):i=a}else if(n===vi.CLEARCOAT_ROUGHNESS){const a=this.getFloat(n);t.clearcoatRoughnessMap&&t.clearcoatRoughnessMap.isTexture===!0?i=a.mul(this.getTexture(n).r):i=a}else if(n===vi.CLEARCOAT_NORMAL)t.clearcoatNormalMap?i=xS(this.getTexture(n),this.getCache(n+"Scale","vec2")):i=cl;else if(n===vi.SHEEN){const a=this.getColor("sheenColor").mul(this.getFloat("sheen"));t.sheenColorMap&&t.sheenColorMap.isTexture===!0?i=a.mul(this.getTexture("sheenColor").rgb):i=a}else if(n===vi.SHEEN_ROUGHNESS){const a=this.getFloat(n);t.sheenRoughnessMap&&t.sheenRoughnessMap.isTexture===!0?i=a.mul(this.getTexture(n).a):i=a,i=i.clamp(1e-4,1)}else if(n===vi.ANISOTROPY)if(t.anisotropyMap&&t.anisotropyMap.isTexture===!0){const a=this.getTexture(n);i=vb(wv.x,wv.y,wv.y.negate(),wv.x).mul(a.rg.mul(2).sub(Gi(1)).normalize().mul(a.b))}else i=wv;else if(n===vi.IRIDESCENCE_THICKNESS){const a=su("1","float",t.iridescenceThicknessRange);if(t.iridescenceThicknessMap){const o=su("0","float",t.iridescenceThicknessRange);i=a.sub(o).mul(this.getTexture(n).g).add(o)}else i=a}else if(n===vi.TRANSMISSION){const a=this.getFloat(n);t.transmissionMap?i=a.mul(this.getTexture(n).r):i=a}else if(n===vi.THICKNESS){const a=this.getFloat(n);t.thicknessMap?i=a.mul(this.getTexture(n).g):i=a}else if(n===vi.IOR)i=this.getFloat(n);else if(n===vi.LIGHT_MAP)i=this.getTexture(n).rgb.mul(this.getFloat("lightMapIntensity"));else if(n===vi.AO)i=this.getTexture(n).r.sub(1).mul(this.getFloat("aoMapIntensity")).add(1);else if(n===vi.LINE_DASH_OFFSET)i=t.dashOffset?this.getFloat(n):qt(0);else{const a=this.getNodeType(e);i=this.getCache(n,a)}return i}}vi.ALPHA_TEST="alphaTest",vi.COLOR="color",vi.OPACITY="opacity",vi.SHININESS="shininess",vi.SPECULAR="specular",vi.SPECULAR_STRENGTH="specularStrength",vi.SPECULAR_INTENSITY="specularIntensity",vi.SPECULAR_COLOR="specularColor",vi.REFLECTIVITY="reflectivity",vi.ROUGHNESS="roughness",vi.METALNESS="metalness",vi.NORMAL="normal",vi.CLEARCOAT="clearcoat",vi.CLEARCOAT_ROUGHNESS="clearcoatRoughness",vi.CLEARCOAT_NORMAL="clearcoatNormal",vi.EMISSIVE="emissive",vi.ROTATION="rotation",vi.SHEEN="sheen",vi.SHEEN_ROUGHNESS="sheenRoughness",vi.ANISOTROPY="anisotropy",vi.IRIDESCENCE="iridescence",vi.IRIDESCENCE_IOR="iridescenceIOR",vi.IRIDESCENCE_THICKNESS="iridescenceThickness",vi.IOR="ior",vi.TRANSMISSION="transmission",vi.THICKNESS="thickness",vi.ATTENUATION_DISTANCE="attenuationDistance",vi.ATTENUATION_COLOR="attenuationColor",vi.LINE_SCALE="scale",vi.LINE_DASH_SIZE="dashSize",vi.LINE_GAP_SIZE="gapSize",vi.LINE_WIDTH="linewidth",vi.LINE_DASH_OFFSET="dashOffset",vi.POINT_SIZE="size",vi.DISPERSION="dispersion",vi.LIGHT_MAP="light",vi.AO="ao";const p2=xs(vi,vi.ALPHA_TEST),Wb=xs(vi,vi.COLOR),g2=xs(vi,vi.SHININESS),m2=xs(vi,vi.EMISSIVE),Zb=xs(vi,vi.OPACITY),v2=xs(vi,vi.SPECULAR),_S=xs(vi,vi.SPECULAR_INTENSITY),y2=xs(vi,vi.SPECULAR_COLOR),Hy=xs(vi,vi.SPECULAR_STRENGTH),Kb=xs(vi,vi.REFLECTIVITY),x2=xs(vi,vi.ROUGHNESS),b2=xs(vi,vi.METALNESS),_2=xs(vi,vi.NORMAL),w2=xs(vi,vi.CLEARCOAT),S2=xs(vi,vi.CLEARCOAT_ROUGHNESS),M2=xs(vi,vi.CLEARCOAT_NORMAL),E2=xs(vi,vi.ROTATION),C2=xs(vi,vi.SHEEN),T2=xs(vi,vi.SHEEN_ROUGHNESS),B2=xs(vi,vi.ANISOTROPY),R2=xs(vi,vi.IRIDESCENCE),I2=xs(vi,vi.IRIDESCENCE_IOR),N2=xs(vi,vi.IRIDESCENCE_THICKNESS),F2=xs(vi,vi.TRANSMISSION),P2=xs(vi,vi.THICKNESS),L2=xs(vi,vi.IOR),U2=xs(vi,vi.ATTENUATION_DISTANCE),O2=xs(vi,vi.ATTENUATION_COLOR),wS=xs(vi,vi.LINE_SCALE),SS=xs(vi,vi.LINE_DASH_SIZE),MS=xs(vi,vi.LINE_GAP_SIZE),$b=xs(vi,vi.LINE_WIDTH),ES=xs(vi,vi.LINE_DASH_OFFSET),D2=xs(vi,vi.POINT_SIZE),k2=xs(vi,vi.DISPERSION),CS=xs(vi,vi.LIGHT_MAP),V2=xs(vi,vi.AO),wv=va(new ce).onReference(function(s){return s.material}).onRenderUpdate(function({material:s}){this.value.set(s.anisotropy*Math.cos(s.anisotropyRotation),s.anisotropy*Math.sin(s.anisotropyRotation))}),z2=or(s=>s.context.setupModelViewProjection(),"vec4").once()().toVarying("v_modelViewProjection");class W4 extends u0{static get type(){return"StorageArrayElementNode"}constructor(e,t){super(e,t),this.isStorageArrayElementNode=!0}set storageBufferNode(e){this.node=e}get storageBufferNode(){return this.node}getMemberType(e,t){const n=this.storageBufferNode.structTypeNode;return n?n.getMemberType(e,t):"void"}setup(e){return e.isAvailable("storageBuffer")===!1&&this.node.isPBO===!0&&e.setupPBO(this.node),super.setup(e)}generate(e,t){let n;const i=e.context.assign;if(e.isAvailable("storageBuffer")===!1?this.node.isPBO===!0&&i!==!0&&(this.node.value.isInstancedBufferAttribute||e.shaderStage!=="compute")?n=e.generatePBO(this):n=this.node.build(e):n=super.generate(e),i!==!0){const a=this.getNodeType(e);n=e.format(n,a,t)}return n}}const Z4=to(W4).setParameterLength(2);class K4 extends sS{static get type(){return"StorageBufferNode"}constructor(e,t=null,n=0){let i,a=null;t&&t.isStruct?(i="struct",a=t.layout,(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)&&(n=e.count)):t===null&&(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)?(i=o1(e.itemSize),n=e.count):i=t,super(e,i,n),this.isStorageBufferNode=!0,this.structTypeNode=a,this.access=od.READ_WRITE,this.isAtomic=!1,this.isPBO=!1,this._attribute=null,this._varying=null,this.global=!0,e.isStorageBufferAttribute!==!0&&e.isStorageInstancedBufferAttribute!==!0&&(e.isInstancedBufferAttribute?e.isStorageInstancedBufferAttribute=!0:e.isStorageBufferAttribute=!0)}getHash(e){if(this.bufferCount===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getInputType(){return this.value.isIndirectStorageBufferAttribute?"indirectStorageBuffer":"storageBuffer"}element(e){return Z4(this,e)}setPBO(e){return this.isPBO=e,this}getPBO(){return this.isPBO}setAccess(e){return this.access=e,this}toReadOnly(){return this.setAccess(od.READ_ONLY)}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}getAttributeData(){return this._attribute===null&&(this._attribute=J1(this.value),this._varying=lg(this._attribute)),{attribute:this._attribute,varying:this._varying}}getNodeType(e){if(this.structTypeNode!==null)return this.structTypeNode.getNodeType(e);if(e.isAvailable("storageBuffer")||e.isAvailable("indirectStorageBuffer"))return super.getNodeType(e);const{attribute:t}=this.getAttributeData();return t.getNodeType(e)}getMemberType(e,t){return this.structTypeNode!==null?this.structTypeNode.getMemberType(e,t):"void"}generate(e){if(this.structTypeNode!==null&&this.structTypeNode.build(e),e.isAvailable("storageBuffer")||e.isAvailable("indirectStorageBuffer"))return super.generate(e);const{attribute:t,varying:n}=this.getAttributeData(),i=n.build(e);return e.registerTransform(i,t),i}}const tm=(s,e=null,t=0)=>new K4(s,e,t),$4=(s,e,t)=>(Lr('TSL: "storageObject()" is deprecated. Use "storage().setPBO( true )" instead.'),tm(s,e,t).setPBO(!0));class rc extends ta{static get type(){return"IndexNode"}constructor(e){super("uint"),this.scope=e,this.isIndexNode=!0}generate(e){const t=this.getNodeType(e),n=this.scope;let i;if(n===rc.VERTEX)i=e.getVertexIndex();else if(n===rc.INSTANCE)i=e.getInstanceIndex();else if(n===rc.DRAW)i=e.getDrawIndex();else if(n===rc.INVOCATION_LOCAL)i=e.getInvocationLocalIndex();else if(n===rc.INVOCATION_SUBGROUP)i=e.getInvocationSubgroupIndex();else if(n===rc.SUBGROUP)i=e.getSubgroupIndex();else throw new Error("THREE.IndexNode: Unknown scope: "+n);let a;return e.shaderStage==="vertex"||e.shaderStage==="compute"?a=i:a=lg(this).build(e,t),a}}rc.VERTEX="vertex",rc.INSTANCE="instance",rc.SUBGROUP="subgroup",rc.INVOCATION_LOCAL="invocationLocal",rc.INVOCATION_SUBGROUP="invocationSubgroup",rc.DRAW="draw";const G2=xs(rc,rc.VERTEX),hg=xs(rc,rc.INSTANCE),X4=xs(rc,rc.SUBGROUP),j4=xs(rc,rc.INVOCATION_SUBGROUP),Y4=xs(rc,rc.INVOCATION_LOCAL),H2=xs(rc,rc.DRAW);class Q2 extends ta{static get type(){return"InstanceNode"}constructor(e,t,n=null){super("void"),this.count=e,this.instanceMatrix=t,this.instanceColor=n,this.instanceMatrixNode=null,this.instanceColorNode=null,this.updateType=Ao.FRAME,this.buffer=null,this.bufferColor=null}get isStorageMatrix(){const{instanceMatrix:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}get isStorageColor(){const{instanceColor:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}setup(e){const{instanceMatrix:t,instanceColor:n,isStorageMatrix:i,isStorageColor:a}=this,{count:o}=t;let{instanceMatrixNode:u,instanceColorNode:c}=this;if(u===null){if(i)u=tm(t,"mat4",Math.max(o,1)).element(hg);else if(o<=1e3)u=Dy(t.array,"mat4",Math.max(o,1)).element(hg);else{const g=new ly(t.array,16,1);this.buffer=g;const v=t.usage===mh?eS:Ub,M=[v(g,"vec4",16,0),v(g,"vec4",16,4),v(g,"vec4",16,8),v(g,"vec4",16,12)];u=Im(...M)}this.instanceMatrixNode=u}if(n&&c===null){if(a)c=tm(n,"vec3",Math.max(n.count,1)).element(hg);else{const g=new Mh(n.array,3),v=n.usage===mh?eS:Ub;this.bufferColor=g,c=Kn(v(g,"vec3",3,0))}this.instanceColorNode=c}const d=u.mul(vc).xyz;if(vc.assign(d),e.hasGeometryAttribute("normal")){const g=KB(Of,u);Of.assign(g)}this.instanceColorNode!==null&&cA("vec3","vInstanceColor").assign(this.instanceColorNode)}update(){this.buffer!==null&&this.isStorageMatrix!==!0&&(this.buffer.clearUpdateRanges(),this.buffer.updateRanges.push(...this.instanceMatrix.updateRanges),this.instanceMatrix.usage!==mh&&this.instanceMatrix.version!==this.buffer.version&&(this.buffer.version=this.instanceMatrix.version)),this.instanceColor&&this.bufferColor!==null&&this.isStorageColor!==!0&&(this.bufferColor.clearUpdateRanges(),this.bufferColor.updateRanges.push(...this.instanceColor.updateRanges),this.instanceColor.usage!==mh&&this.instanceColor.version!==this.bufferColor.version&&(this.bufferColor.version=this.instanceColor.version))}}const q4=to(Q2).setParameterLength(2,3);class J4 extends Q2{static get type(){return"InstancedMeshNode"}constructor(e){const{count:t,instanceMatrix:n,instanceColor:i}=e;super(t,n,i),this.instancedMesh=e}}const W2=to(J4).setParameterLength(1);class eV extends ta{static get type(){return"BatchNode"}constructor(e){super("void"),this.batchMesh=e,this.batchingIdNode=null}setup(e){this.batchingIdNode===null&&(e.getDrawIndex()===null?this.batchingIdNode=hg:this.batchingIdNode=H2);const n=or(([I])=>{const ne=Qn(Xg(Rc(this.batchMesh._indirectTexture),0).x).toConst(),ee=Qn(I).mod(ne).toConst(),q=Qn(I).div(ne).toConst();return Rc(this.batchMesh._indirectTexture,ch(ee,q)).x}).setLayout({name:"getIndirectIndex",type:"uint",inputs:[{name:"id",type:"int"}]})(Qn(this.batchingIdNode)),i=this.batchMesh._matricesTexture,a=Qn(Xg(Rc(i),0).x).toConst(),o=qt(n).mul(4).toInt().toConst(),u=o.mod(a).toConst(),c=o.div(a).toConst(),d=Im(Rc(i,ch(u,c)),Rc(i,ch(u.add(1),c)),Rc(i,ch(u.add(2),c)),Rc(i,ch(u.add(3),c))),g=this.batchMesh._colorsTexture;if(g!==null){const ne=or(([ee])=>{const q=Qn(Xg(Rc(g),0).x).toConst(),ye=ee,Ce=ye.mod(q).toConst(),ke=ye.div(q).toConst();return Rc(g,ch(Ce,ke)).rgb}).setLayout({name:"getBatchingColor",type:"vec3",inputs:[{name:"id",type:"int"}]})(n);cA("vec3","vBatchColor").assign(ne)}const v=ld(d);vc.assign(d.mul(vc));const M=Of.div(Kn(v[0].dot(v[0]),v[1].dot(v[1]),v[2].dot(v[2]))),B=v.mul(M).xyz;Of.assign(B),e.hasGeometryAttribute("tangent")&&Gy.mulAssign(v)}}const Z2=to(eV).setParameterLength(1),K2=new WeakMap;class $2 extends ta{static get type(){return"SkinningNode"}constructor(e){super("void"),this.skinnedMesh=e,this.updateType=Ao.OBJECT,this.skinIndexNode=af("skinIndex","uvec4"),this.skinWeightNode=af("skinWeight","vec4"),this.bindMatrixNode=su("bindMatrix","mat4"),this.bindMatrixInverseNode=su("bindMatrixInverse","mat4"),this.boneMatricesNode=gS("skeleton.boneMatrices","mat4",e.skeleton.bones.length),this.positionNode=vc,this.toPositionNode=vc,this.previousBoneMatricesNode=null}getSkinnedPosition(e=this.boneMatricesNode,t=this.positionNode){const{skinIndexNode:n,skinWeightNode:i,bindMatrixNode:a,bindMatrixInverseNode:o}=this,u=e.element(n.x),c=e.element(n.y),d=e.element(n.z),g=e.element(n.w),v=a.mul(t),M=$c(u.mul(i.x).mul(v),c.mul(i.y).mul(v),d.mul(i.z).mul(v),g.mul(i.w).mul(v));return o.mul(M).xyz}getSkinnedNormal(e=this.boneMatricesNode,t=Of){const{skinIndexNode:n,skinWeightNode:i,bindMatrixNode:a,bindMatrixInverseNode:o}=this,u=e.element(n.x),c=e.element(n.y),d=e.element(n.z),g=e.element(n.w);let v=$c(i.x.mul(u),i.y.mul(c),i.z.mul(d),i.w.mul(g));return v=o.mul(v).mul(a),v.transformDirection(t).xyz}getPreviousSkinnedPosition(e){const t=e.object;return this.previousBoneMatricesNode===null&&(t.skeleton.previousBoneMatrices=new Float32Array(t.skeleton.boneMatrices),this.previousBoneMatricesNode=gS("skeleton.previousBoneMatrices","mat4",t.skeleton.bones.length)),this.getSkinnedPosition(this.previousBoneMatricesNode,Db)}needsPreviousBoneMatrices(e){const t=e.renderer.getMRT();return t&&t.has("velocity")||u1(e.object).useVelocity===!0}setup(e){this.needsPreviousBoneMatrices(e)&&Db.assign(this.getPreviousSkinnedPosition(e));const t=this.getSkinnedPosition();if(this.toPositionNode&&this.toPositionNode.assign(t),e.hasGeometryAttribute("normal")){const n=this.getSkinnedNormal();Of.assign(n),e.hasGeometryAttribute("tangent")&&Gy.assign(n)}return t}generate(e,t){if(t!=="void")return super.generate(e,t)}update(e){const t=e.object&&e.object.skeleton?e.object.skeleton:this.skinnedMesh.skeleton;K2.get(t)!==e.frameId&&(K2.set(t,e.frameId),this.previousBoneMatricesNode!==null&&(t.previousBoneMatrices===null&&(t.previousBoneMatrices=new Float32Array(t.boneMatrices)),t.previousBoneMatrices.set(t.boneMatrices)),t.update())}}const X2=s=>new $2(s),tV=(s,e=null)=>{const t=new $2(s);return t.positionNode=tm(new Mh(s.geometry.getAttribute("position").array,3),"vec3").setPBO(!0).toReadOnly().element(hg).toVar(),t.skinIndexNode=tm(new Mh(new Uint32Array(s.geometry.getAttribute("skinIndex").array),4),"uvec4").setPBO(!0).toReadOnly().element(hg).toVar(),t.skinWeightNode=tm(new Mh(s.geometry.getAttribute("skinWeight").array,4),"vec4").setPBO(!0).toReadOnly().element(hg).toVar(),t.bindMatrixNode=va(s.bindMatrix,"mat4"),t.bindMatrixInverseNode=va(s.bindMatrixInverse,"mat4"),t.boneMatricesNode=Dy(s.skeleton.boneMatrices,"mat4",s.skeleton.bones.length),t.toPositionNode=e,Ss(t)};class nV extends ta{static get type(){return"LoopNode"}constructor(e=[]){super("void"),this.params=e}getVarName(e){return String.fromCharCode(105+e)}getProperties(e){const t=e.getNodeProperties(this);if(t.stackNode!==void 0)return t;const n={};for(let u=0,c=this.params.length-1;uNumber(v)?I=">=":I="<"));let ee;if(d)ee=`while ( ${v} )`;else{const q={start:g,end:v},ye=q.start,Ce=q.end;let ke;const nt=()=>I.includes("<")?"+=":"-=";if(ne!=null)switch(typeof ne){case"function":ke=e.flowStagesNode(t.updateNode,"void").code.replace(/\t|;/g,"");break;case"number":ke=M+" "+nt()+" "+e.generateConst(B,ne);break;case"string":ke=M+" "+ne;break;default:ne.isNode?ke=M+" "+nt()+" "+ne.build(e):(Gr("TSL: 'Loop( { update: ... } )' is not a function, string or number."),ke="break /* invalid update */")}else B==="int"||B==="uint"?ne=I.includes("<")?"++":"--":ne=nt()+" 1.",ke=M+" "+ne;const Ye=e.getVar(B,M)+" = "+ye,ht=M+" "+I+" "+Ce;ee=`for ( ${Ye}; ${ht}; ${ke} )`}e.addFlowCode((o===0?` -`:"")+e.tab+ee+` { - -`).addFlowTab()}const a=i.build(e,"void");t.returnsNode.build(e,"void"),e.removeFlowTab().addFlowCode(` -`+e.tab+a);for(let o=0,u=this.params.length-1;onew nV(c0(s,"int")).toStack(),rV=()=>$g("continue").toStack(),j2=()=>$g("break").toStack(),TS=new WeakMap,gA=new Ni,Y2=or(({bufferMap:s,influence:e,stride:t,width:n,depth:i,offset:a})=>{const o=Qn(G2).mul(t).add(a),u=o.div(n),c=o.sub(u.mul(n));return Rc(s,ch(c,u)).depth(i).xyz.mul(e)});function iV(s){const e=s.morphAttributes.position!==void 0,t=s.morphAttributes.normal!==void 0,n=s.morphAttributes.color!==void 0,i=s.morphAttributes.position||s.morphAttributes.normal||s.morphAttributes.color,a=i!==void 0?i.length:0;let o=TS.get(s);if(o===void 0||o.count!==a){let q=function(){ne.dispose(),TS.delete(s),s.removeEventListener("dispose",q)};o!==void 0&&o.texture.dispose();const u=s.morphAttributes.position||[],c=s.morphAttributes.normal||[],d=s.morphAttributes.color||[];let g=0;e===!0&&(g=1),t===!0&&(g=2),n===!0&&(g=3);let v=s.attributes.position.count*g,M=1;const B=4096;v>B&&(M=Math.ceil(v/B),v=B);const I=new Float32Array(v*M*4*a),ne=new _a(I,v,M,a);ne.type=dt,ne.needsUpdate=!0;const ee=g*4;for(let ye=0;ye{const M=qt(0).toVar();this.mesh.count>1&&this.mesh.morphTexture!==null&&this.mesh.morphTexture!==void 0?M.assign(Rc(this.mesh.morphTexture,ch(Qn(v).add(1),Qn(hg))).r):M.assign(su("morphTargetInfluences","float").element(v).toVar()),ra(M.notEqual(0),()=>{n===!0&&vc.addAssign(Y2({bufferMap:u,influence:M,stride:c,width:g,depth:v,offset:Qn(0)})),i===!0&&Of.addAssign(Y2({bufferMap:u,influence:M,stride:c,width:g,depth:v,offset:Qn(1)}))})})}update(){const e=this.morphBaseInfluence;this.mesh.geometry.morphTargetsRelative?e.value=1:e.value=1-this.mesh.morphTargetInfluences.reduce((t,n)=>t+n,0)}}const q2=to(sV).setParameterLength(1);class Sv extends ta{static get type(){return"LightingNode"}constructor(){super("vec3"),this.isLightingNode=!0}}class aV extends Sv{static get type(){return"AONode"}constructor(e=null){super(),this.aoNode=e}setup(e){e.context.ambientOcclusion.mulAssign(this.aoNode)}}class oV extends uB{static get type(){return"LightingContextNode"}constructor(e,t=null,n=null,i=null){super(e),this.lightingModel=t,this.backdropNode=n,this.backdropAlphaNode=i,this._value=null}getContext(){const{backdropNode:e,backdropAlphaNode:t}=this,n=Kn().toVar("directDiffuse"),i=Kn().toVar("directSpecular"),a=Kn().toVar("indirectDiffuse"),o=Kn().toVar("indirectSpecular"),u={directDiffuse:n,directSpecular:i,indirectDiffuse:a,indirectSpecular:o};return{radiance:Kn().toVar("radiance"),irradiance:Kn().toVar("irradiance"),iblIrradiance:Kn().toVar("iblIrradiance"),ambientOcclusion:qt(1).toVar("ambientOcclusion"),reflectedLight:u,backdrop:e,backdropAlpha:t}}setup(e){return this.value=this._value||(this._value=this.getContext()),this.value.lightingModel=this.lightingModel||e.context.lightingModel,super.setup(e)}}const J2=to(oV);class lV extends Sv{static get type(){return"IrradianceNode"}constructor(e){super(),this.node=e}setup(e){e.context.irradiance.addAssign(this.node)}}const Mv=new ce;class Xb extends ug{static get type(){return"ViewportTextureNode"}constructor(e=Yg,t=null,n=null){let i=null;n===null?(i=new OA,i.minFilter=yi,n=i):i=n,super(n,e,t),this.generateMipmaps=!1,this.defaultFramebuffer=i,this.isOutputTextureNode=!0,this.updateBeforeType=Ao.FRAME,this._cacheTextures=new WeakMap}getTextureForReference(e=null){let t,n;if(this.referenceNode?(t=this.referenceNode.defaultFramebuffer,n=this.referenceNode._cacheTextures):(t=this.defaultFramebuffer,n=this._cacheTextures),e===null)return t;if(n.has(e)===!1){const i=t.clone();n.set(e,i)}return n.get(e)}updateReference(e){const t=e.renderer.getRenderTarget();return this.value=this.getTextureForReference(t),this.value}updateBefore(e){const t=e.renderer,n=t.getRenderTarget();n===null?t.getDrawingBufferSize(Mv):Mv.set(n.width,n.height);const i=this.getTextureForReference(n);(i.image.width!==Mv.width||i.image.height!==Mv.height)&&(i.image.width=Mv.width,i.image.height=Mv.height,i.needsUpdate=!0);const a=i.generateMipmaps;i.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(i),i.generateMipmaps=a}clone(){const e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}}const uV=to(Xb).setParameterLength(0,3),BS=to(Xb,null,null,{generateMipmaps:!0}).setParameterLength(0,3);let jb=null;class cV extends Xb{static get type(){return"ViewportDepthTextureNode"}constructor(e=Yg,t=null){jb===null&&(jb=new Al),super(e,t,jb)}getTextureForReference(){return jb}}const RS=to(cV).setParameterLength(0,2);class Df extends ta{static get type(){return"ViewportDepthNode"}constructor(e,t=null){super("float"),this.scope=e,this.valueNode=t,this.isViewportDepthNode=!0}generate(e){const{scope:t}=this;return t===Df.DEPTH_BASE?e.getFragDepth():super.generate(e)}setup({camera:e}){const{scope:t}=this,n=this.valueNode;let i=null;if(t===Df.DEPTH_BASE)n!==null&&(i=eR().assign(n));else if(t===Df.DEPTH)e.isPerspectiveCamera?i=IS(Oc.z,qg,Jg):i=Ev(Oc.z,qg,Jg);else if(t===Df.LINEAR_DEPTH)if(n!==null)if(e.isPerspectiveCamera){const a=NS(n,qg,Jg);i=Ev(a,qg,Jg)}else i=n;else i=Ev(Oc.z,qg,Jg);return i}}Df.DEPTH_BASE="depthBase",Df.DEPTH="depth",Df.LINEAR_DEPTH="linearDepth";const Ev=(s,e,t)=>s.add(e).div(e.sub(t)),hV=(s,e,t)=>e.sub(t).mul(s).sub(e),IS=(s,e,t)=>e.add(s).mul(t).div(t.sub(e).mul(s)),NS=(s,e,t)=>e.mul(t).div(t.sub(e).mul(s).sub(t)),FS=(s,e,t)=>{e=e.max(1e-6).toVar();const n=sg(s.negate().div(e)),i=sg(t.div(e));return n.div(i)},dV=(s,e,t)=>{const n=s.mul(Tb(t.div(e)));return qt(Math.E).pow(n).mul(e).negate()},eR=to(Df,Df.DEPTH_BASE),PS=xs(Df,Df.DEPTH),Cv=to(Df,Df.LINEAR_DEPTH).setParameterLength(0,1),fV=Cv(RS());PS.assign=s=>eR(s);class jA extends ta{static get type(){return"ClippingNode"}constructor(e=jA.DEFAULT){super(),this.scope=e}setup(e){super.setup(e);const t=e.clippingContext,{intersectionPlanes:n,unionPlanes:i}=t;return this.hardwareClipping=e.material.hardwareClipping,this.scope===jA.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n,i):this.scope===jA.HARDWARE?this.setupHardwareClipping(i,e):this.setupDefault(n,i)}setupAlphaToCoverage(e,t){return or(()=>{const n=qt().toVar("distanceToPlane"),i=qt().toVar("distanceToGradient"),a=qt(1).toVar("clipOpacity"),o=t.length;if(this.hardwareClipping===!1&&o>0){const c=Fd(t).setGroup(xa);kl(o,({i:d})=>{const g=c.element(d);n.assign(Oc.dot(g.xyz).negate().add(g.w)),i.assign(n.fwidth().div(2)),a.mulAssign(fA(i.negate(),i,n))})}const u=e.length;if(u>0){const c=Fd(e).setGroup(xa),d=qt(1).toVar("intersectionClipOpacity");kl(u,({i:g})=>{const v=c.element(g);n.assign(Oc.dot(v.xyz).negate().add(v.w)),i.assign(n.fwidth().div(2)),d.mulAssign(fA(i.negate(),i,n).oneMinus())}),a.mulAssign(d.oneMinus())}Wl.a.mulAssign(a),Wl.a.equal(0).discard()})()}setupDefault(e,t){return or(()=>{const n=t.length;if(this.hardwareClipping===!1&&n>0){const a=Fd(t).setGroup(xa);kl(n,({i:o})=>{const u=a.element(o);Oc.dot(u.xyz).greaterThan(u.w).discard()})}const i=e.length;if(i>0){const a=Fd(e).setGroup(xa),o=WA(!0).toVar("clipped");kl(i,({i:u})=>{const c=a.element(u);o.assign(Oc.dot(c.xyz).greaterThan(c.w).and(o))}),o.discard()}})()}setupHardwareClipping(e,t){const n=e.length;return t.enableHardwareClipping(n),or(()=>{const i=Fd(e).setGroup(xa),a=jg(t.getClipDistance());kl(n,({i:o})=>{const u=i.element(o),c=Oc.dot(u.xyz).sub(u.w).negate();a.element(o).assign(c)})})()}}jA.ALPHA_TO_COVERAGE="alphaToCoverage",jA.DEFAULT="default",jA.HARDWARE="hardware";const AV=()=>new jA,pV=()=>new jA(jA.ALPHA_TO_COVERAGE),gV=()=>new jA(jA.HARDWARE),mV=.05,tR=or(([s])=>_p(no(1e4,sf(no(17,s.x).add(no(.1,s.y)))).mul($c(.1,Su(sf(no(13,s.y).add(s.x))))))),nR=or(([s])=>tR(Gi(tR(s.xy),s.z))),vV=or(([s])=>{const e=mc(og(V1(s.xyz)),og(z1(s.xyz))),t=qt(1).div(qt(mV).mul(e)).toVar("pixScale"),n=Gi(mv(ag(sg(t))),mv(Bb(sg(t)))),i=Gi(nR(ag(n.x.mul(s.xyz))),nR(ag(n.y.mul(s.xyz)))),a=_p(sg(t)),o=$c(no(a.oneMinus(),i.x),no(a,i.y)),u=Uf(a,a.oneMinus()),c=Kn(o.mul(o).div(no(2,u).mul(el(1,u))),o.sub(no(.5,u)).div(el(1,u)),el(1,el(1,o).mul(el(1,o)).div(no(2,u).mul(el(1,u))))),d=o.lessThan(u.oneMinus()).select(o.lessThan(u).select(c.x,c.y),c.z);return Sp(d,1e-6,1)}).setLayout({name:"getAlphaHashThreshold",type:"float",inputs:[{name:"position",type:"vec3"}]});class yV extends OB{static get type(){return"VertexColorNode"}constructor(e){super(null,"vec4"),this.isVertexColorNode=!0,this.index=e}getAttributeName(){const e=this.index;return"color"+(e>0?e:"")}generate(e){const t=this.getAttributeName(e),n=e.hasGeometryAttribute(t);let i;return n===!0?i=super.generate(e):i=e.generateConst(this.nodeType,new Ni(1,1,1,1)),i}serialize(e){super.serialize(e),e.index=this.index}deserialize(e){super.deserialize(e),this.index=e.index}}const rR=(s=0)=>new yV(s),iR=or(([s,e])=>Uf(1,s.oneMinus().div(e)).oneMinus()).setLayout({name:"blendBurn",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),sR=or(([s,e])=>Uf(s.div(e.oneMinus()),1)).setLayout({name:"blendDodge",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),aR=or(([s,e])=>s.oneMinus().mul(e.oneMinus()).oneMinus()).setLayout({name:"blendScreen",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),oR=or(([s,e])=>zo(s.mul(2).mul(e),s.oneMinus().mul(2).mul(e.oneMinus()).oneMinus(),Ib(.5,s))).setLayout({name:"blendOverlay",type:"vec3",inputs:[{name:"base",type:"vec3"},{name:"blend",type:"vec3"}]}),xV=or(([s,e])=>{const t=e.a.add(s.a.mul(e.a.oneMinus()));return Ks(e.rgb.mul(e.a).add(s.rgb.mul(s.a).mul(e.a.oneMinus())).div(t),t)}).setLayout({name:"blendColor",type:"vec4",inputs:[{name:"base",type:"vec4"},{name:"blend",type:"vec4"}]}),lR=or(([s])=>Ks(s.rgb.mul(s.a),s.a),{color:"vec4",return:"vec4"}),bV=or(([s])=>(ra(s.a.equal(0),()=>Ks(0)),Ks(s.rgb.div(s.a),s.a)),{color:"vec4",return:"vec4"}),_V=(...s)=>(Lr('TSL: "burn" has been renamed. Use "blendBurn" instead.'),iR(s)),wV=(...s)=>(Lr('TSL: "dodge" has been renamed. Use "blendDodge" instead.'),sR(s)),SV=(...s)=>(Lr('TSL: "screen" has been renamed. Use "blendScreen" instead.'),aR(s)),MV=(...s)=>(Lr('TSL: "overlay" has been renamed. Use "blendOverlay" instead.'),oR(s));class yc extends Hl{static get type(){return"NodeMaterial"}get type(){return this.constructor.type}set type(e){}constructor(){super(),this.isNodeMaterial=!0,this.fog=!0,this.lights=!1,this.hardwareClipping=!1,this.lightsNode=null,this.envNode=null,this.aoNode=null,this.colorNode=null,this.normalNode=null,this.opacityNode=null,this.backdropNode=null,this.backdropAlphaNode=null,this.alphaTestNode=null,this.maskNode=null,this.positionNode=null,this.geometryNode=null,this.depthNode=null,this.receivedShadowPositionNode=null,this.castShadowPositionNode=null,this.receivedShadowNode=null,this.castShadowNode=null,this.outputNode=null,this.mrtNode=null,this.fragmentNode=null,this.vertexNode=null,this.contextNode=null,Object.defineProperty(this,"shadowPositionNode",{get:()=>this.receivedShadowPositionNode,set:e=>{Lr('NodeMaterial: ".shadowPositionNode" was renamed to ".receivedShadowPositionNode".'),this.receivedShadowPositionNode=e}})}_getNodeChildren(){const e=[];for(const t of Object.getOwnPropertyNames(this)){if(t.startsWith("_")===!0)continue;const n=this[t];n&&n.isNode===!0&&e.push({property:t,childNode:n})}return e}customProgramCacheKey(){const e=[];for(const{property:t,childNode:n}of this._getNodeChildren())e.push(dv(t.slice(0,-4)),n.getCacheKey());return this.type+o0(e)}build(e){this.setup(e)}setupObserver(e){return new X3(e)}setup(e){e.context.setupNormal=()=>vv(this.setupNormal(e),"NORMAL","vec3"),e.context.setupPositionView=()=>this.setupPositionView(e),e.context.setupModelViewProjection=()=>this.setupModelViewProjection(e);const t=e.renderer,n=t.getRenderTarget();t.contextNode.isContextNode===!0?e.context=rl(rl({},e.context),t.contextNode.getFlowContextData()):Gr('NodeMaterial: "renderer.contextNode" must be an instance of `context()`.'),this.contextNode!==null&&(this.contextNode.isContextNode===!0?e.context=rl(rl({},e.context),this.contextNode.getFlowContextData()):Gr('NodeMaterial: "material.contextNode" must be an instance of `context()`.')),e.addStack();const i=vv(this.setupVertex(e),"VERTEX"),a=this.vertexNode||i;e.stack.outputNode=a,this.setupHardwareClipping(e),this.geometryNode!==null&&(e.stack.outputNode=e.stack.outputNode.bypass(this.geometryNode)),e.addFlow("vertex",e.removeStack()),e.addStack();let o;const u=this.setupClipping(e);if((this.depthWrite===!0||this.depthTest===!0)&&(n!==null?n.depthBuffer===!0&&this.setupDepth(e):t.depth===!0&&this.setupDepth(e)),this.fragmentNode===null){this.setupDiffuseColor(e),this.setupVariants(e);const c=this.setupLighting(e);u!==null&&e.stack.addToStack(u);const d=Ks(c,Wl.a).max(0);o=this.setupOutput(e,d),gv.assign(o);const g=this.outputNode!==null;if(g&&(o=this.outputNode),e.context.getOutput&&(o=e.context.getOutput(o,e)),n!==null){const v=t.getMRT(),M=this.mrtNode;v!==null?(g&&gv.assign(o),o=v,M!==null&&(o=v.merge(M))):M!==null&&(o=M)}}else{let c=this.fragmentNode;c.isOutputStructNode!==!0&&(c=Ks(c)),o=this.setupOutput(e,c)}e.stack.outputNode=o,e.addFlow("fragment",e.removeStack()),e.observer=this.setupObserver(e)}setupClipping(e){if(e.clippingContext===null)return null;const{unionPlanes:t,intersectionPlanes:n}=e.clippingContext;let i=null;if(t.length>0||n.length>0){const a=e.renderer.currentSamples;this.alphaToCoverage&&a>1?i=pV():e.stack.addToStack(AV())}return i}setupHardwareClipping(e){if(this.hardwareClipping=!1,e.clippingContext===null)return;const t=e.clippingContext.unionPlanes.length;t>0&&t<=8&&e.isAvailable("clipDistance")&&(e.stack.addToStack(gV()),this.hardwareClipping=!0)}setupDepth(e){const{renderer:t,camera:n}=e;let i=this.depthNode;if(i===null){const a=t.getMRT();a&&a.has("depth")?i=a.get("depth"):t.logarithmicDepthBuffer===!0&&(n.isPerspectiveCamera?i=FS(Oc.z,qg,Jg):i=Ev(Oc.z,qg,Jg))}i!==null&&PS.assign(i).toStack()}setupPositionView(){return cg.mul(vc).xyz}setupModelViewProjection(){return of.mul(Oc)}setupVertex(e){return e.addStack(),this.setupPosition(e),e.context.vertex=e.removeStack(),z2}setupPosition(e){const{object:t,geometry:n}=e;if((n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color)&&q2(t).toStack(),t.isSkinnedMesh===!0&&X2(t).toStack(),this.displacementMap){const i=em("displacementMap","texture"),a=em("displacementScale","float"),o=em("displacementBias","float");vc.addAssign(Of.normalize().mul(i.x.mul(a).add(o)))}return t.isBatchedMesh&&Z2(t).toStack(),t.isInstancedMesh&&t.instanceMatrix&&t.instanceMatrix.isInstancedBufferAttribute===!0&&W2(t).toStack(),this.positionNode!==null&&vc.assign(vv(this.positionNode,"POSITION","vec3")),vc}setupDiffuseColor(e){const{object:t,geometry:n}=e;this.maskNode!==null&&WA(this.maskNode).not().discard();let i=this.colorNode?Ks(this.colorNode):Wb;this.vertexColors===!0&&n.hasAttribute("color")&&(i=i.mul(rR())),t.instanceColor&&(i=cA("vec3","vInstanceColor").mul(i)),t.isBatchedMesh&&t._colorsTexture&&(i=cA("vec3","vBatchColor").mul(i)),Wl.assign(i);const a=this.opacityNode?qt(this.opacityNode):Zb;Wl.a.assign(Wl.a.mul(a));let o=null;(this.alphaTestNode!==null||this.alphaTest>0)&&(o=this.alphaTestNode!==null?qt(this.alphaTestNode):p2,this.alphaToCoverage===!0?(Wl.a=fA(o,o.add(H1(Wl.a)),Wl.a),Wl.a.lessThanEqual(0).discard()):Wl.a.lessThanEqual(o).discard()),this.alphaHash===!0&&Wl.a.lessThan(vV(vc)).discard(),e.isOpaque()&&Wl.a.assign(1)}setupVariants(){}setupOutgoingLight(){return this.lights===!0?Kn(0):Wl.rgb}setupNormal(){return this.normalNode?Kn(this.normalNode):_2}setupEnvironment(){let e=null;return this.envNode?e=this.envNode:this.envMap&&(e=this.envMap.isCubeTexture?em("envMap","cubeTexture"):em("envMap","texture")),e}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new lV(CS)),t}setupLights(e){const t=[],n=this.setupEnvironment(e);n&&n.isLightingNode&&t.push(n);const i=this.setupLightMap(e);i&&i.isLightingNode&&t.push(i);let a=this.aoNode;a===null&&e.material.aoMap&&(a=V2),e.context.getAO&&(a=e.context.getAO(a,e)),a&&t.push(new aV(a));let o=this.lightsNode||e.lightsNode;return t.length>0&&(o=e.renderer.lighting.createNode([...o.getLights(),...t])),o}setupLightingModel(){}setupLighting(e){const{material:t}=e,{backdropNode:n,backdropAlphaNode:i,emissiveNode:a}=this,u=this.lights===!0||this.lightsNode!==null?this.setupLights(e):null;let c=this.setupOutgoingLight(e);if(u&&u.getScope().hasLights){const d=this.setupLightingModel(e)||null;c=J2(u,d,n,i)}else n!==null&&(c=Kn(i!==null?zo(c,n,i):n));return(a&&a.isNode===!0||t.emissive&&t.emissive.isColor===!0)&&(E1.assign(Kn(a||m2)),c=c.add(E1)),c}setupFog(e,t){const n=e.fogNode;return n&&(gv.assign(t),t=Ks(n.toVar())),t}setupPremultipliedAlpha(e,t){return lR(t)}setupOutput(e,t){return this.fog===!0&&(t=this.setupFog(e,t)),this.premultipliedAlpha===!0&&(t=this.setupPremultipliedAlpha(e,t)),t}setDefaultValues(e){for(const n in e){const i=e[n];this[n]===void 0&&(this[n]=i,i&&i.clone&&(this[n]=i.clone()))}const t=Object.getOwnPropertyDescriptors(e.constructor.prototype);for(const n in t)Object.getOwnPropertyDescriptor(this.constructor.prototype,n)===void 0&&t[n].get!==void 0&&Object.defineProperty(this.constructor.prototype,n,t[n])}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{},nodes:{}});const n=Hl.prototype.toJSON.call(this,e);n.inputNodes={};for(const{property:a,childNode:o}of this._getNodeChildren())n.inputNodes[a]=o.toJSON(e).uuid;function i(a){const o=[];for(const u in a){const c=a[u];delete c.metadata,o.push(c)}return o}if(t){const a=i(e.textures),o=i(e.images),u=i(e.nodes);a.length>0&&(n.textures=a),o.length>0&&(n.images=o),u.length>0&&(n.nodes=u)}return n}copy(e){return this.lightsNode=e.lightsNode,this.envNode=e.envNode,this.aoNode=e.aoNode,this.colorNode=e.colorNode,this.normalNode=e.normalNode,this.opacityNode=e.opacityNode,this.backdropNode=e.backdropNode,this.backdropAlphaNode=e.backdropAlphaNode,this.alphaTestNode=e.alphaTestNode,this.maskNode=e.maskNode,this.positionNode=e.positionNode,this.geometryNode=e.geometryNode,this.depthNode=e.depthNode,this.receivedShadowPositionNode=e.receivedShadowPositionNode,this.castShadowPositionNode=e.castShadowPositionNode,this.receivedShadowNode=e.receivedShadowNode,this.castShadowNode=e.castShadowNode,this.outputNode=e.outputNode,this.mrtNode=e.mrtNode,this.fragmentNode=e.fragmentNode,this.vertexNode=e.vertexNode,this.contextNode=e.contextNode,super.copy(e)}}const EV=new fl;class CV extends yc{static get type(){return"LineBasicNodeMaterial"}constructor(e){super(),this.isLineBasicNodeMaterial=!0,this.setDefaultValues(EV),this.setValues(e)}}const TV=new xm;class BV extends yc{static get type(){return"LineDashedNodeMaterial"}constructor(e){super(),this.isLineDashedNodeMaterial=!0,this.setDefaultValues(TV),this.dashOffset=0,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setupVariants(){const e=this.offsetNode?qt(this.offsetNode):ES,t=this.dashScaleNode?qt(this.dashScaleNode):wS,n=this.dashSizeNode?qt(this.dashSizeNode):SS,i=this.gapSizeNode?qt(this.gapSizeNode):MS;p0.assign(n),Py.assign(i);const a=lg(af("lineDistance").mul(t));(e?a.add(e):a).mod(p0.add(Py)).greaterThan(p0).discard()}}let Yb=null;class RV extends Xb{static get type(){return"ViewportSharedTextureNode"}constructor(e=Yg,t=null){Yb===null&&(Yb=new OA),super(e,t,Yb)}getTextureForReference(){return Yb}updateReference(){return this}}const uR=to(RV).setParameterLength(0,2),IV=new xm;class kX extends null{static get type(){return"Line2NodeMaterial"}constructor(e={}){super(),this.isLine2NodeMaterial=!0,this.setDefaultValues(IV),this.useColor=e.vertexColors,this.dashOffset=0,this.lineColorNode=null,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.blending=NoBlending,this._useDash=e.dashed,this._useAlphaToCoverage=!0,this._useWorldUnits=!1,this.setValues(e)}setup(e){const{renderer:t}=e,n=this._useAlphaToCoverage,i=this.useColor,a=this._useDash,o=this._useWorldUnits,u=or(({start:d,end:g})=>{const v=of.element(2).element(2),I=of.element(3).element(2).mul(-.5).div(v).sub(d.z).div(g.z.sub(d.z));return Ks(zo(d.xyz,g.xyz,I),g.w)}).setLayout({name:"trimSegment",type:"vec4",inputs:[{name:"start",type:"vec4"},{name:"end",type:"vec4"}]});this.vertexNode=or(()=>{const d=af("instanceStart"),g=af("instanceEnd"),v=Ks(cg.mul(Ks(d,1))).toVar("start"),M=Ks(cg.mul(Ks(g,1))).toVar("end");if(a){const nt=this.dashScaleNode?qt(this.dashScaleNode):wS,Ye=this.offsetNode?qt(this.offsetNode):ES,ht=af("instanceDistanceStart"),Rt=af("instanceDistanceEnd");let qe=cd.y.lessThan(.5).select(nt.mul(ht),nt.mul(Rt));qe=qe.add(Ye),cA("float","lineDistance").assign(qe)}o&&(cA("vec3","worldStart").assign(v.xyz),cA("vec3","worldEnd").assign(M.xyz));const B=xv.z.div(xv.w),I=of.element(2).element(3).equal(-1);ra(I,()=>{ra(v.z.lessThan(0).and(M.z.greaterThan(0)),()=>{M.assign(u({start:v,end:M}))}).ElseIf(M.z.lessThan(0).and(v.z.greaterThanEqual(0)),()=>{v.assign(u({start:M,end:v}))})});const ne=of.mul(v),ee=of.mul(M),q=ne.xyz.div(ne.w),ye=ee.xyz.div(ee.w),Ce=ye.xy.sub(q.xy).toVar();Ce.x.assign(Ce.x.mul(B)),Ce.assign(Ce.normalize());const ke=Ks().toVar();if(o){const nt=M.xyz.sub(v.xyz).normalize(),Ye=zo(v.xyz,M.xyz,.5).normalize(),ht=nt.cross(Ye).normalize(),Rt=nt.cross(ht),qe=cA("vec4","worldPos");qe.assign(cd.y.lessThan(.5).select(v,M));const pt=$b.mul(.5);qe.addAssign(Ks(cd.x.lessThan(0).select(ht.mul(pt),ht.mul(pt).negate()),0)),a||(qe.addAssign(Ks(cd.y.lessThan(.5).select(nt.mul(pt).negate(),nt.mul(pt)),0)),qe.addAssign(Ks(Rt.mul(pt),0)),ra(cd.y.greaterThan(1).or(cd.y.lessThan(0)),()=>{qe.subAssign(Ks(Rt.mul(2).mul(pt),0))})),ke.assign(of.mul(qe));const xn=Kn().toVar();xn.assign(cd.y.lessThan(.5).select(q,ye)),ke.z.assign(xn.z.mul(ke.w))}else{const nt=Gi(Ce.y,Ce.x.negate()).toVar("offset");Ce.x.assign(Ce.x.div(B)),nt.x.assign(nt.x.div(B)),nt.assign(cd.x.lessThan(0).select(nt.negate(),nt)),ra(cd.y.lessThan(0),()=>{nt.assign(nt.sub(Ce))}).ElseIf(cd.y.greaterThan(1),()=>{nt.assign(nt.add(Ce))}),nt.assign(nt.mul($b)),nt.assign(nt.div(xv.w.div(aS))),ke.assign(cd.y.lessThan(.5).select(ne,ee)),nt.assign(nt.mul(ke.w)),ke.assign(ke.add(Ks(nt,0,0)))}return ke})();const c=or(({p1:d,p2:g,p3:v,p4:M})=>{const B=d.sub(v),I=M.sub(v),ne=g.sub(d),ee=B.dot(I),q=I.dot(ne),ye=B.dot(ne),Ce=I.dot(I),nt=ne.dot(ne).mul(Ce).sub(q.mul(q)),ht=ee.mul(q).sub(ye.mul(Ce)).div(nt).clamp(),Rt=ee.add(q.mul(ht)).div(Ce).clamp();return Gi(ht,Rt)});if(this.colorNode=or(()=>{const d=Zl();if(a){const M=this.dashSizeNode?qt(this.dashSizeNode):SS,B=this.gapSizeNode?qt(this.gapSizeNode):MS;p0.assign(M),Py.assign(B);const I=cA("float","lineDistance");d.y.lessThan(-1).or(d.y.greaterThan(1)).discard(),I.mod(p0.add(Py)).greaterThan(p0).discard()}const g=qt(1).toVar("alpha");if(o){const M=cA("vec3","worldStart"),B=cA("vec3","worldEnd"),I=cA("vec4","worldPos").xyz.normalize().mul(1e5),ne=B.sub(M),ee=c({p1:M,p2:B,p3:Kn(0,0,0),p4:I}),q=M.add(ne.mul(ee.x)),ye=I.mul(ee.y),nt=q.sub(ye).length().div($b);if(!a)if(n&&t.currentSamples>0){const Ye=nt.fwidth();g.assign(fA(Ye.negate().add(.5),Ye.add(.5),nt).oneMinus())}else nt.greaterThan(.5).discard()}else if(n&&t.currentSamples>0){const M=d.x,B=d.y.greaterThan(0).select(d.y.sub(1),d.y.add(1)),I=M.mul(M).add(B.mul(B)),ne=qt(I.fwidth()).toVar("dlen");ra(d.y.abs().greaterThan(1),()=>{g.assign(fA(ne.oneMinus(),ne.add(1),I).oneMinus())})}else ra(d.y.abs().greaterThan(1),()=>{const M=d.x,B=d.y.greaterThan(0).select(d.y.sub(1),d.y.add(1));M.mul(M).add(B.mul(B)).greaterThan(1).discard()});let v;if(this.lineColorNode)v=this.lineColorNode;else if(i){const M=af("instanceColorStart"),B=af("instanceColorEnd");v=cd.y.lessThan(.5).select(M,B).mul(Wb)}else v=Wb;return Ks(v,g)})(),this.transparent){const d=this.opacityNode?qt(this.opacityNode):Zb;this.outputNode=Ks(this.colorNode.rgb.mul(d).add(uR().rgb.mul(d.oneMinus())),this.colorNode.a)}super.setup(e)}get worldUnits(){return this._useWorldUnits}set worldUnits(e){this._useWorldUnits!==e&&(this._useWorldUnits=e,this.needsUpdate=!0)}get dashed(){return this._useDash}set dashed(e){this._useDash!==e&&(this._useDash=e,this.needsUpdate=!0)}get alphaToCoverage(){return this._useAlphaToCoverage}set alphaToCoverage(e){this._useAlphaToCoverage!==e&&(this._useAlphaToCoverage=e,this.needsUpdate=!0)}}const NV=new V0;class FV extends yc{static get type(){return"MeshNormalNodeMaterial"}constructor(e){super(),this.isMeshNormalNodeMaterial=!0,this.setDefaultValues(NV),this.setValues(e)}setupDiffuseColor(){const e=this.opacityNode?qt(this.opacityNode):Zb;Wl.assign(Pb(Ks(f2(cl),e),sl))}}const LS=or(([s=cS])=>{const e=s.z.atan(s.x).mul(1/(Math.PI*2)).add(.5),t=s.y.clamp(-1,1).asin().mul(1/Math.PI).add(.5);return Gi(e,t)});class cR extends Mc{constructor(e=1,t={}){super(e,t),this.isCubeRenderTarget=!0}fromEquirectangularTexture(e,t){const n=t.minFilter,i=t.generateMipmaps;t.generateMipmaps=!0,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;const a=new bd(5,5,5),o=LS(cS),u=new yc;u.colorNode=xl(t,o,0),u.side=de,u.blending=we;const c=new Il(a,u),d=new _d;d.add(c),t.minFilter===yi&&(t.minFilter=vr);const g=new Np(1,10,this),v=e.getMRT();return e.setMRT(null),g.update(e,d),e.setMRT(v),t.minFilter=n,t.currentGenerateMipmaps=i,c.geometry.dispose(),c.material.dispose(),this}}const Qy=new WeakMap;class PV extends pc{static get type(){return"CubeMapNode"}constructor(e){super("vec3"),this.envNode=e,this._cubeTexture=null,this._cubeTextureNode=lf(null);const t=new rh;t.isRenderTargetTexture=!0,this._defaultTexture=t,this.updateBeforeType=Ao.RENDER}updateBefore(e){const{renderer:t,material:n}=e,i=this.envNode;if(i.isTextureNode||i.isMaterialReferenceNode){const a=i.isTextureNode?i.value:n[i.property];if(a&&a.isTexture){const o=a.mapping;if(o===ot||o===ut){if(Qy.has(a)){const u=Qy.get(a);dR(u,a.mapping),this._cubeTexture=u}else{const u=a.image;if(LV(u)){const c=new cR(u.height);c.fromEquirectangularTexture(t,a),dR(c.texture,a.mapping),this._cubeTexture=c.texture,Qy.set(a,c.texture),a.addEventListener("dispose",hR)}else this._cubeTexture=this._defaultTexture}this._cubeTextureNode.value=this._cubeTexture}else this._cubeTextureNode=this.envNode}}}setup(e){return this.updateBefore(e),this._cubeTextureNode}}function LV(s){return s==null?!1:s.height>0}function hR(s){const e=s.target;e.removeEventListener("dispose",hR);const t=Qy.get(e);t!==void 0&&(Qy.delete(e),t.dispose())}function dR(s,e){e===ot?s.mapping=it:e===ut&&(s.mapping=wt)}const fR=to(PV).setParameterLength(1);class US extends Sv{static get type(){return"BasicEnvironmentNode"}constructor(e=null){super(),this.envNode=e}setup(e){e.context.environment=fR(this.envNode)}}class UV extends Sv{static get type(){return"BasicLightMapNode"}constructor(e=null){super(),this.lightMapNode=e}setup(e){const t=qt(1/Math.PI);e.context.irradianceLightMap=this.lightMapNode.mul(t)}}class qb{start(e){e.lightsNode.setupLights(e,e.lightsNode.getLightNodes(e)),this.indirect(e)}finish(){}direct(){}directRectArea(){}indirect(){}ambientOcclusion(){}}class AR extends qb{constructor(){super()}indirect({context:e}){const t=e.ambientOcclusion,n=e.reflectedLight,i=e.irradianceLightMap;n.indirectDiffuse.assign(Ks(0)),i?n.indirectDiffuse.addAssign(i):n.indirectDiffuse.addAssign(Ks(1,1,1,0)),n.indirectDiffuse.mulAssign(t),n.indirectDiffuse.mulAssign(Wl.rgb)}finish(e){const{material:t,context:n}=e,i=n.outgoingLight,a=e.context.environment;if(a)switch(t.combine){case on:i.rgb.assign(zo(i.rgb,i.rgb.mul(a.rgb),Hy.mul(Kb)));break;case hn:i.rgb.assign(zo(i.rgb,a.rgb,Hy.mul(Kb)));break;case lt:i.rgb.addAssign(a.rgb.mul(Hy.mul(Kb)));break;default:Lr("BasicLightingModel: Unsupported .combine value:",t.combine);break}}}const OV=new Yl;class DV extends yc{static get type(){return"MeshBasicNodeMaterial"}constructor(e){super(),this.isMeshBasicNodeMaterial=!0,this.lights=!0,this.setDefaultValues(OV),this.setValues(e)}setupNormal(){return bv(_v)}setupEnvironment(e){const t=super.setupEnvironment(e);return t?new US(t):null}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new UV(CS)),t}setupOutgoingLight(){return Wl.rgb}setupLightingModel(){return new AR}}const Tv=or(({f0:s,f90:e,dotVH:t})=>{const n=t.mul(-5.55473).sub(6.98316).mul(t).exp2();return s.mul(n.oneMinus()).add(e.mul(n))}),x0=or(s=>s.diffuseColor.mul(1/Math.PI)),kV=()=>qt(.25),VV=or(({dotNH:s})=>Sb.mul(qt(.5)).add(1).mul(qt(1/Math.PI)).mul(s.pow(Sb))),zV=or(({lightDirection:s})=>{const e=s.add(iu).normalize(),t=cl.dot(e).clamp(),n=iu.dot(e).clamp(),i=Tv({f0:Pm,f90:1,dotVH:n}),a=kV(),o=VV({dotNH:t});return i.mul(a).mul(o)});class pR extends AR{constructor(e=!0){super(),this.specular=e}direct({lightDirection:e,lightColor:t,reflectedLight:n}){const a=cl.dot(e).clamp().mul(t);n.directDiffuse.addAssign(a.mul(x0({diffuseColor:Wl.rgb}))),this.specular===!0&&n.directSpecular.addAssign(a.mul(zV({lightDirection:e})).mul(Hy))}indirect(e){const{ambientOcclusion:t,irradiance:n,reflectedLight:i}=e.context;i.indirectDiffuse.addAssign(n.mul(x0({diffuseColor:Wl}))),i.indirectDiffuse.mulAssign(t)}}const GV=new qm;class HV extends yc{static get type(){return"MeshLambertNodeMaterial"}constructor(e){super(),this.isMeshLambertNodeMaterial=!0,this.lights=!0,this.setDefaultValues(GV),this.setValues(e)}setupEnvironment(e){const t=super.setupEnvironment(e);return t?new US(t):null}setupLightingModel(){return new pR(!1)}}const QV=new Xv;class WV extends yc{static get type(){return"MeshPhongNodeMaterial"}constructor(e){super(),this.isMeshPhongNodeMaterial=!0,this.lights=!0,this.shininessNode=null,this.specularNode=null,this.setDefaultValues(QV),this.setValues(e)}setupEnvironment(e){const t=super.setupEnvironment(e);return t?new US(t):null}setupLightingModel(){return new pR}setupVariants(){const e=(this.shininessNode?qt(this.shininessNode):g2).max(1e-4);Sb.assign(e);const t=this.specularNode||v2;Pm.assign(t)}copy(e){return this.shininessNode=e.shininessNode,this.specularNode=e.specularNode,super.copy(e)}}const gR=or(s=>{if(s.geometry.hasAttribute("normal")===!1)return qt(0);const e=_v.dFdx().abs().max(_v.dFdy().abs());return e.x.max(e.y).max(e.z)}),OS=or(s=>{const{roughness:e}=s,t=gR();let n=e.max(.0525);return n=n.add(t),n=n.min(1),n}),mR=or(({alpha:s,dotNL:e,dotNV:t})=>{const n=s.pow2(),i=e.mul(n.add(n.oneMinus().mul(t.pow2())).sqrt()),a=t.mul(n.add(n.oneMinus().mul(e.pow2())).sqrt());return dA(.5,i.add(a).max(P1))}).setLayout({name:"V_GGX_SmithCorrelated",type:"float",inputs:[{name:"alpha",type:"float"},{name:"dotNL",type:"float"},{name:"dotNV",type:"float"}]}),ZV=or(({alphaT:s,alphaB:e,dotTV:t,dotBV:n,dotTL:i,dotBL:a,dotNV:o,dotNL:u})=>{const c=u.mul(Kn(s.mul(t),e.mul(n),o).length()),d=o.mul(Kn(s.mul(i),e.mul(a),u).length());return dA(.5,c.add(d))}).setLayout({name:"V_GGX_SmithCorrelated_Anisotropic",type:"float",inputs:[{name:"alphaT",type:"float",qualifier:"in"},{name:"alphaB",type:"float",qualifier:"in"},{name:"dotTV",type:"float",qualifier:"in"},{name:"dotBV",type:"float",qualifier:"in"},{name:"dotTL",type:"float",qualifier:"in"},{name:"dotBL",type:"float",qualifier:"in"},{name:"dotNV",type:"float",qualifier:"in"},{name:"dotNL",type:"float",qualifier:"in"}]}),vR=or(({alpha:s,dotNH:e})=>{const t=s.pow2(),n=e.pow2().mul(t.oneMinus()).oneMinus();return t.div(n.pow2()).mul(1/Math.PI)}).setLayout({name:"D_GGX",type:"float",inputs:[{name:"alpha",type:"float"},{name:"dotNH",type:"float"}]}),KV=qt(1/Math.PI),$V=or(({alphaT:s,alphaB:e,dotNH:t,dotTH:n,dotBH:i})=>{const a=s.mul(e),o=Kn(e.mul(n),s.mul(i),a.mul(t)),u=o.dot(o),c=a.div(u);return KV.mul(a.mul(c.pow2()))}).setLayout({name:"D_GGX_Anisotropic",type:"float",inputs:[{name:"alphaT",type:"float",qualifier:"in"},{name:"alphaB",type:"float",qualifier:"in"},{name:"dotNH",type:"float",qualifier:"in"},{name:"dotTH",type:"float",qualifier:"in"},{name:"dotBH",type:"float",qualifier:"in"}]}),DS=or(({lightDirection:s,f0:e,f90:t,roughness:n,f:i,normalView:a=cl,USE_IRIDESCENCE:o,USE_ANISOTROPY:u})=>{const c=n.pow2(),d=s.add(iu).normalize(),g=a.dot(s).clamp(),v=a.dot(iu).clamp(),M=a.dot(d).clamp(),B=iu.dot(d).clamp();let I=Tv({f0:e,f90:t,dotVH:B}),ne,ee;if(By(o)&&(I=xb.mix(I,i)),By(u)){const q=Fy.dot(s),ye=Fy.dot(iu),Ce=Fy.dot(d),ke=f0.dot(s),nt=f0.dot(iu),Ye=f0.dot(d);ne=ZV({alphaT:wb,alphaB:c,dotTV:ye,dotBV:nt,dotTL:q,dotBL:ke,dotNV:v,dotNL:g}),ee=$V({alphaT:wb,alphaB:c,dotNH:M,dotTH:Ce,dotBH:Ye})}else ne=mR({alpha:c,dotNL:g,dotNV:v}),ee=vR({alpha:c,dotNH:M});return I.mul(ne).mul(ee)}),XV=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]);let dg=null;const Wy=or(({roughness:s,dotNV:e})=>{dg===null&&(dg=new ah(XV,16,16,ze,Wt),dg.name="DFG_LUT",dg.minFilter=vr,dg.magFilter=vr,dg.wrapS=Vt,dg.wrapT=Vt,dg.generateMipmaps=!1,dg.needsUpdate=!0);const t=Gi(s,e);return xl(dg,t).rg}),jV=or(({lightDirection:s,f0:e,f90:t,roughness:n,f:i,USE_IRIDESCENCE:a,USE_ANISOTROPY:o})=>{const u=DS({lightDirection:s,f0:e,f90:t,roughness:n,f:i,USE_IRIDESCENCE:a,USE_ANISOTROPY:o}),c=cl.dot(s).clamp(),d=cl.dot(iu).clamp(),g=Wy({roughness:n,dotNV:d}),v=Wy({roughness:n,dotNV:c}),M=e.mul(g.x).add(t.mul(g.y)),B=e.mul(v.x).add(t.mul(v.y)),I=g.x.add(g.y),ne=v.x.add(v.y),ee=qt(1).sub(I),q=qt(1).sub(ne),ye=e.add(e.oneMinus().mul(.047619)),Ce=M.mul(B).mul(ye).div(qt(1).sub(ee.mul(q).mul(ye).mul(ye)).add(P1)),ke=ee.mul(q),nt=Ce.mul(ke);return u.add(nt)}),yR=or(s=>{const{dotNV:e,specularColor:t,specularF90:n,roughness:i}=s,a=Wy({dotNV:e,roughness:i});return t.mul(a.x).add(n.mul(a.y))}),kS=or(({f:s,f90:e,dotVH:t})=>{const n=t.oneMinus().saturate(),i=n.mul(n),a=n.mul(i,i).clamp(0,.9999);return s.sub(Kn(e).mul(a)).div(a.oneMinus())}).setLayout({name:"Schlick_to_F0",type:"vec3",inputs:[{name:"f",type:"vec3"},{name:"f90",type:"float"},{name:"dotVH",type:"float"}]}),YV=or(({roughness:s,dotNH:e})=>{const t=s.pow2(),n=qt(1).div(t),a=e.pow2().oneMinus().max(.0078125);return qt(2).add(n).mul(a.pow(n.mul(.5))).div(2*Math.PI)}).setLayout({name:"D_Charlie",type:"float",inputs:[{name:"roughness",type:"float"},{name:"dotNH",type:"float"}]}),qV=or(({dotNV:s,dotNL:e})=>qt(1).div(qt(4).mul(e.add(s).sub(e.mul(s))))).setLayout({name:"V_Neubelt",type:"float",inputs:[{name:"dotNV",type:"float"},{name:"dotNL",type:"float"}]}),JV=or(({lightDirection:s})=>{const e=s.add(iu).normalize(),t=cl.dot(s).clamp(),n=cl.dot(iu).clamp(),i=cl.dot(e).clamp(),a=YV({roughness:Nm,dotNH:i}),o=qV({dotNV:n,dotNL:t});return hA.mul(a).mul(o)}),ez=or(({N:s,V:e,roughness:t})=>{const a=.0078125,o=s.dot(e).saturate(),u=Gi(t,o.oneMinus().sqrt());return u.assign(u.mul(.984375).add(a)),u}).setLayout({name:"LTC_Uv",type:"vec2",inputs:[{name:"N",type:"vec3"},{name:"V",type:"vec3"},{name:"roughness",type:"float"}]}),xR=or(({f:s})=>{const e=s.length();return mc(e.mul(e).add(s.z).div(e.add(1)),0)}).setLayout({name:"LTC_ClippedSphereFormFactor",type:"float",inputs:[{name:"f",type:"vec3"}]}),Dm=or(({v1:s,v2:e})=>{const t=s.dot(e),n=t.abs().toVar(),i=n.mul(.0145206).add(.4965155).mul(n).add(.8543985).toVar(),a=n.add(4.1616724).mul(n).add(3.417594).toVar(),o=i.div(a),u=t.greaterThan(0).select(o,mc(t.mul(t).oneMinus(),1e-7).inverseSqrt().mul(.5).sub(o));return s.cross(e).mul(u)}).setLayout({name:"LTC_EdgeVectorFormFactor",type:"vec3",inputs:[{name:"v1",type:"vec3"},{name:"v2",type:"vec3"}]}),bR=or(({N:s,V:e,P:t,mInv:n,p0:i,p1:a,p2:o,p3:u})=>{const c=a.sub(i).toVar(),d=u.sub(i).toVar(),g=c.cross(d),v=Kn().toVar();return ra(g.dot(t.sub(i)).greaterThanEqual(0),()=>{const M=e.sub(s.mul(e.dot(s))).normalize(),B=s.cross(M).negate(),I=n.mul(ld(M,B,s).transpose()).toVar(),ne=I.mul(i.sub(t)).normalize().toVar(),ee=I.mul(a.sub(t)).normalize().toVar(),q=I.mul(o.sub(t)).normalize().toVar(),ye=I.mul(u.sub(t)).normalize().toVar(),Ce=Kn(0).toVar();Ce.addAssign(Dm({v1:ne,v2:ee})),Ce.addAssign(Dm({v1:ee,v2:q})),Ce.addAssign(Dm({v1:q,v2:ye})),Ce.addAssign(Dm({v1:ye,v2:ne})),v.assign(Kn(xR({f:Ce})))}),v}).setLayout({name:"LTC_Evaluate",type:"vec3",inputs:[{name:"N",type:"vec3"},{name:"V",type:"vec3"},{name:"P",type:"vec3"},{name:"mInv",type:"mat3"},{name:"p0",type:"vec3"},{name:"p1",type:"vec3"},{name:"p2",type:"vec3"},{name:"p3",type:"vec3"}]}),tz=or(({P:s,p0:e,p1:t,p2:n,p3:i})=>{const a=t.sub(e).toVar(),o=i.sub(e).toVar(),u=a.cross(o),c=Kn().toVar();return ra(u.dot(s.sub(e)).greaterThanEqual(0),()=>{const d=e.sub(s).normalize().toVar(),g=t.sub(s).normalize().toVar(),v=n.sub(s).normalize().toVar(),M=i.sub(s).normalize().toVar(),B=Kn(0).toVar();B.addAssign(Dm({v1:d,v2:g})),B.addAssign(Dm({v1:g,v2:v})),B.addAssign(Dm({v1:v,v2:M})),B.addAssign(Dm({v1:M,v2:d})),c.assign(Kn(xR({f:B.abs()})))}),c}).setLayout({name:"LTC_Evaluate",type:"vec3",inputs:[{name:"P",type:"vec3"},{name:"p0",type:"vec3"},{name:"p1",type:"vec3"},{name:"p2",type:"vec3"},{name:"p3",type:"vec3"}]}),Jb=1/6,_R=s=>no(Jb,no(s,no(s,s.negate().add(3)).sub(3)).add(1)),VS=s=>no(Jb,no(s,no(s,no(3,s).sub(6))).add(4)),wR=s=>no(Jb,no(s,no(s,no(-3,s).add(3)).add(3)).add(1)),zS=s=>no(Jb,KA(s,3)),SR=s=>_R(s).add(VS(s)),MR=s=>wR(s).add(zS(s)),ER=s=>$c(-1,VS(s).div(_R(s).add(VS(s)))),CR=s=>$c(1,zS(s).div(wR(s).add(zS(s)))),TR=(s,e,t)=>{const n=s.uvNode,i=no(n,e.zw).add(.5),a=ag(i),o=_p(i),u=SR(o.x),c=MR(o.x),d=ER(o.x),g=CR(o.x),v=ER(o.y),M=CR(o.y),B=Gi(a.x.add(d),a.y.add(v)).sub(.5).mul(e.xy),I=Gi(a.x.add(g),a.y.add(v)).sub(.5).mul(e.xy),ne=Gi(a.x.add(d),a.y.add(M)).sub(.5).mul(e.xy),ee=Gi(a.x.add(g),a.y.add(M)).sub(.5).mul(e.xy),q=SR(o.y).mul($c(u.mul(s.sample(B).level(t)),c.mul(s.sample(I).level(t)))),ye=MR(o.y).mul($c(u.mul(s.sample(ne).level(t)),c.mul(s.sample(ee).level(t))));return q.add(ye)},GS=or(([s,e])=>{const t=Gi(s.size(Qn(e))),n=Gi(s.size(Qn(e.add(1)))),i=dA(1,t),a=dA(1,n),o=TR(s,Ks(i,t),ag(e)),u=TR(s,Ks(a,n),Bb(e));return _p(e).mix(o,u)}),nz=or(([s,e])=>{const t=e.mul(rS(s));return GS(s,t)}),BR=or(([s,e,t,n,i])=>{const a=Kn(K1(e.negate(),rf(s),dA(1,n))),o=Kn(og(i[0].xyz),og(i[1].xyz),og(i[2].xyz));return rf(a).mul(t.mul(o))}).setLayout({name:"getVolumeTransmissionRay",type:"vec3",inputs:[{name:"n",type:"vec3"},{name:"v",type:"vec3"},{name:"thickness",type:"float"},{name:"ior",type:"float"},{name:"modelMatrix",type:"mat4"}]}),rz=or(([s,e])=>s.mul(Sp(e.mul(2).sub(2),0,1))).setLayout({name:"applyIorToRoughness",type:"float",inputs:[{name:"roughness",type:"float"},{name:"ior",type:"float"}]}),iz=BS(),sz=BS(),RR=or(([s,e,t],{material:n})=>{const a=(n.side===de?iz:sz).sample(s),o=sg(g0.x).mul(rz(e,t));return GS(a,o)}),IR=or(([s,e,t])=>(ra(t.notEqual(0),()=>{const n=Tb(e).negate().div(t);return L1(n.negate().mul(s))}),Kn(1))).setLayout({name:"volumeAttenuation",type:"vec3",inputs:[{name:"transmissionDistance",type:"float"},{name:"attenuationColor",type:"vec3"},{name:"attenuationDistance",type:"float"}]}),az=or(([s,e,t,n,i,a,o,u,c,d,g,v,M,B,I])=>{let ne,ee;if(I){ne=Ks().toVar(),ee=Kn().toVar();const nt=g.sub(1).mul(I.mul(.025)),Ye=Kn(g.sub(nt),g,g.add(nt));kl({start:0,end:3},({i:ht})=>{const Rt=Ye.element(ht),qe=BR(s,e,v,Rt,u),pt=o.add(qe),xn=d.mul(c.mul(Ks(pt,1))),cr=Gi(xn.xy.div(xn.w)).toVar();cr.addAssign(1),cr.divAssign(2),cr.assign(Gi(cr.x,cr.y.oneMinus()));const pr=RR(cr,t,Rt);ne.element(ht).assign(pr.element(ht)),ne.a.addAssign(pr.a),ee.element(ht).assign(n.element(ht).mul(IR(og(qe),M,B).element(ht)))}),ne.a.divAssign(3)}else{const nt=BR(s,e,v,g,u),Ye=o.add(nt),ht=d.mul(c.mul(Ks(Ye,1))),Rt=Gi(ht.xy.div(ht.w)).toVar();Rt.addAssign(1),Rt.divAssign(2),Rt.assign(Gi(Rt.x,Rt.y.oneMinus())),ne=RR(Rt,t,g),ee=n.mul(IR(og(nt),M,B))}const q=ee.rgb.mul(ne.rgb),ye=s.dot(e).clamp(),Ce=Kn(yR({dotNV:ye,specularColor:i,specularF90:a,roughness:t})),ke=ee.r.add(ee.g,ee.b).div(3);return Ks(Ce.oneMinus().mul(q),ne.a.oneMinus().mul(ke).oneMinus())}),oz=ld(3.2404542,-.969266,.0556434,-1.5371385,1.8760108,-.2040259,-.4985314,.041556,1.0572252),lz=s=>{const e=s.sqrt();return Kn(1).add(e).div(Kn(1).sub(e))},NR=(s,e)=>s.sub(e).div(s.add(e)).pow2(),uz=(s,e)=>{const t=s.mul(2*Math.PI*1e-9),n=Kn(54856e-17,44201e-17,52481e-17),i=Kn(1681e3,1795300,2208400),a=Kn(43278e5,93046e5,66121e5),o=qt(9747e-17*Math.sqrt(2*Math.PI*45282e5)).mul(t.mul(2239900).add(e.x).cos()).mul(t.pow2().mul(-45282e5).exp());let u=n.mul(a.mul(2*Math.PI).sqrt()).mul(i.mul(t).add(e).cos()).mul(t.pow2().negate().mul(a).exp());return u=Kn(u.x.add(o),u.y,u.z).div(10685e-11),oz.mul(u)},FR=or(({outsideIOR:s,eta2:e,cosTheta1:t,thinFilmThickness:n,baseF0:i})=>{const a=zo(s,e,fA(0,.03,n)),u=s.div(a).pow2().mul(t.pow2().oneMinus()).oneMinus();ra(u.lessThan(0),()=>Kn(1));const c=u.sqrt(),d=NR(a,s),g=Tv({f0:d,f90:1,dotVH:t}),v=g.oneMinus(),M=a.lessThan(s).select(Math.PI,0),B=qt(Math.PI).sub(M),I=lz(i.clamp(0,.9999)),ne=NR(I,a.toVec3()),ee=Tv({f0:ne,f90:1,dotVH:c}),q=Kn(I.x.lessThan(a).select(Math.PI,0),I.y.lessThan(a).select(Math.PI,0),I.z.lessThan(a).select(Math.PI,0)),ye=a.mul(n,c,2),Ce=Kn(B).add(q),ke=g.mul(ee).clamp(1e-5,.9999),nt=ke.sqrt(),Ye=v.pow2().mul(ee).div(Kn(1).sub(ke)),Rt=g.add(Ye).toVar(),qe=Ye.sub(v).toVar();return kl({start:1,end:2,condition:"<=",name:"m"},({m:pt})=>{qe.mulAssign(nt);const xn=uz(qt(pt).mul(ye),qt(pt).mul(Ce)).mul(2);Rt.addAssign(qe.mul(xn))}),Rt.max(Kn(0))}).setLayout({name:"evalIridescence",type:"vec3",inputs:[{name:"outsideIOR",type:"float"},{name:"eta2",type:"float"},{name:"cosTheta1",type:"float"},{name:"thinFilmThickness",type:"float"},{name:"baseF0",type:"vec3"}]}),Zy=or(({normal:s,viewDir:e,roughness:t})=>{const n=s.dot(e).saturate(),i=t.mul(t),a=t.add(.1).reciprocal(),o=qt(-1.9362).add(t.mul(1.0678)).add(i.mul(.4573)).sub(a.mul(.8469)),u=qt(-.6014).add(t.mul(.5538)).sub(i.mul(.467)).sub(a.mul(.1255));return o.mul(n).add(u).exp().saturate()}),HS=Kn(.04),QS=qt(1);class PR extends qb{constructor(e=!1,t=!1,n=!1,i=!1,a=!1,o=!1){super(),this.clearcoat=e,this.sheen=t,this.iridescence=n,this.anisotropy=i,this.transmission=a,this.dispersion=o,this.clearcoatRadiance=null,this.clearcoatSpecularDirect=null,this.clearcoatSpecularIndirect=null,this.sheenSpecularDirect=null,this.sheenSpecularIndirect=null,this.iridescenceFresnel=null,this.iridescenceF0=null,this.iridescenceF0Dielectric=null,this.iridescenceF0Metallic=null}start(e){if(this.clearcoat===!0&&(this.clearcoatRadiance=Kn().toVar("clearcoatRadiance"),this.clearcoatSpecularDirect=Kn().toVar("clearcoatSpecularDirect"),this.clearcoatSpecularIndirect=Kn().toVar("clearcoatSpecularIndirect")),this.sheen===!0&&(this.sheenSpecularDirect=Kn().toVar("sheenSpecularDirect"),this.sheenSpecularIndirect=Kn().toVar("sheenSpecularIndirect")),this.iridescence===!0){const t=cl.dot(iu).clamp(),n=FR({outsideIOR:qt(1),eta2:bb,cosTheta1:t,thinFilmThickness:_b,baseF0:Pm}),i=FR({outsideIOR:qt(1),eta2:bb,cosTheta1:t,thinFilmThickness:_b,baseF0:Wl.rgb});this.iridescenceFresnel=zo(n,i,Wg),this.iridescenceF0Dielectric=kS({f:n,f90:1,dotVH:t}),this.iridescenceF0Metallic=kS({f:i,f90:1,dotVH:t}),this.iridescenceF0=zo(this.iridescenceF0Dielectric,this.iridescenceF0Metallic,Wg)}if(this.transmission===!0){const t=pA,n=zy.sub(pA).normalize(),i=Om,a=e.context;a.backdrop=az(i,n,ig,d0,A0,pv,t,XA,AA,of,Ly,C1,B1,T1,this.dispersion?R1:null),a.backdropAlpha=Mb,Wl.a.mulAssign(zo(1,a.backdrop.a,Mb))}super.start(e)}computeMultiscattering(e,t,n,i,a=null){const o=cl.dot(iu).clamp(),u=Wy({roughness:ig,dotNV:o}),c=a?xb.mix(i,a):i,d=c.mul(u.x).add(n.mul(u.y)),v=u.x.add(u.y).oneMinus(),M=c.add(c.oneMinus().mul(.047619)),B=d.mul(M).div(v.mul(M).oneMinus());e.addAssign(d),t.addAssign(B.mul(v))}direct({lightDirection:e,lightColor:t,reflectedLight:n}){const a=cl.dot(e).clamp().mul(t).toVar();if(this.sheen===!0){this.sheenSpecularDirect.addAssign(a.mul(JV({lightDirection:e})));const o=Zy({normal:cl,viewDir:iu,roughness:Nm}),u=Zy({normal:cl,viewDir:e,roughness:Nm}),c=hA.r.max(hA.g).max(hA.b).mul(o.max(u)).oneMinus();a.mulAssign(c)}if(this.clearcoat===!0){const u=v0.dot(e).clamp().mul(t);this.clearcoatSpecularDirect.addAssign(u.mul(DS({lightDirection:e,f0:HS,f90:QS,roughness:Ny,normalView:v0})))}n.directDiffuse.addAssign(a.mul(x0({diffuseColor:d0}))),n.directSpecular.addAssign(a.mul(jV({lightDirection:e,f0:A0,f90:1,roughness:ig,f:this.iridescenceFresnel,USE_IRIDESCENCE:this.iridescence,USE_ANISOTROPY:this.anisotropy})))}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:i,reflectedLight:a,ltc_1:o,ltc_2:u}){const c=t.add(n).sub(i),d=t.sub(n).sub(i),g=t.sub(n).add(i),v=t.add(n).add(i),M=cl,B=iu,I=Oc.toVar(),ne=ez({N:M,V:B,roughness:ig}),ee=o.sample(ne).toVar(),q=u.sample(ne).toVar(),ye=ld(Kn(ee.x,0,ee.y),Kn(0,1,0),Kn(ee.z,0,ee.w)).toVar(),Ce=A0.mul(q.x).add(A0.oneMinus().mul(q.y)).toVar();a.directSpecular.addAssign(e.mul(Ce).mul(bR({N:M,V:B,P:I,mInv:ye,p0:c,p1:d,p2:g,p3:v}))),a.directDiffuse.addAssign(e.mul(d0).mul(bR({N:M,V:B,P:I,mInv:ld(1,0,0,0,1,0,0,0,1),p0:c,p1:d,p2:g,p3:v})))}indirect(e){this.indirectDiffuse(e),this.indirectSpecular(e),this.ambientOcclusion(e)}indirectDiffuse(e){const{irradiance:t,reflectedLight:n}=e.context,i=t.mul(x0({diffuseColor:d0})).toVar();if(this.sheen===!0){const a=Zy({normal:cl,viewDir:iu,roughness:Nm}),o=hA.r.max(hA.g).max(hA.b).mul(a).oneMinus();i.mulAssign(o)}n.indirectDiffuse.addAssign(i)}indirectSpecular(e){const{radiance:t,iblIrradiance:n,reflectedLight:i}=e.context;if(this.sheen===!0&&this.sheenSpecularIndirect.addAssign(n.mul(hA,Zy({normal:cl,viewDir:iu,roughness:Nm}))),this.clearcoat===!0){const ee=v0.dot(iu).clamp(),q=yR({dotNV:ee,specularColor:HS,specularF90:QS,roughness:Ny});this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(q))}const a=Kn().toVar("singleScatteringDielectric"),o=Kn().toVar("multiScatteringDielectric"),u=Kn().toVar("singleScatteringMetallic"),c=Kn().toVar("multiScatteringMetallic");this.computeMultiscattering(a,o,pv,Pm,this.iridescenceF0Dielectric),this.computeMultiscattering(u,c,pv,Wl.rgb,this.iridescenceF0Metallic);const d=zo(a,u,Wg),g=zo(o,c,Wg),v=a.add(o),M=d0.mul(v.oneMinus()),B=n.mul(1/Math.PI),I=t.mul(d).add(g.mul(B)).toVar(),ne=M.mul(B).toVar();if(this.sheen===!0){const ee=Zy({normal:cl,viewDir:iu,roughness:Nm}),q=hA.r.max(hA.g).max(hA.b).mul(ee).oneMinus();I.mulAssign(q),ne.mulAssign(q)}i.indirectSpecular.addAssign(I),i.indirectDiffuse.addAssign(ne)}ambientOcclusion(e){const{ambientOcclusion:t,reflectedLight:n}=e.context,a=cl.dot(iu).clamp().add(t),o=ig.mul(-16).oneMinus().negate().exp2(),u=t.sub(a.pow(o).oneMinus()).clamp();this.clearcoat===!0&&this.clearcoatSpecularIndirect.mulAssign(t),this.sheen===!0&&this.sheenSpecularIndirect.mulAssign(t),n.indirectDiffuse.mulAssign(t),n.indirectSpecular.mulAssign(u)}finish({context:e}){const{outgoingLight:t}=e;if(this.clearcoat===!0){const n=v0.dot(iu).clamp(),i=Tv({dotVH:n,f0:HS,f90:QS}),a=t.mul(yb.mul(i).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(yb));t.assign(a)}if(this.sheen===!0){const n=t.add(this.sheenSpecularDirect,this.sheenSpecularIndirect.mul(1/Math.PI));t.assign(n)}}}const LR=qt(1),WS=qt(-2),e_=qt(.8),ZS=qt(-1),t_=qt(.4),KS=qt(2),n_=qt(.305),$S=qt(3),UR=qt(.21),cz=qt(4),OR=qt(4),hz=qt(16),dz=or(([s])=>{const e=Kn(Su(s)).toVar(),t=qt(-1).toVar();return ra(e.x.greaterThan(e.z),()=>{ra(e.x.greaterThan(e.y),()=>{t.assign(ud(s.x.greaterThan(0),0,3))}).Else(()=>{t.assign(ud(s.y.greaterThan(0),1,4))})}).Else(()=>{ra(e.z.greaterThan(e.y),()=>{t.assign(ud(s.z.greaterThan(0),2,5))}).Else(()=>{t.assign(ud(s.y.greaterThan(0),1,4))})}),t}).setLayout({name:"getFace",type:"float",inputs:[{name:"direction",type:"vec3"}]}),fz=or(([s,e])=>{const t=Gi().toVar();return ra(e.equal(0),()=>{t.assign(Gi(s.z,s.y).div(Su(s.x)))}).ElseIf(e.equal(1),()=>{t.assign(Gi(s.x.negate(),s.z.negate()).div(Su(s.y)))}).ElseIf(e.equal(2),()=>{t.assign(Gi(s.x.negate(),s.y).div(Su(s.z)))}).ElseIf(e.equal(3),()=>{t.assign(Gi(s.z.negate(),s.y).div(Su(s.x)))}).ElseIf(e.equal(4),()=>{t.assign(Gi(s.x.negate(),s.z).div(Su(s.y)))}).Else(()=>{t.assign(Gi(s.x,s.y).div(Su(s.z)))}),no(.5,t.add(1))}).setLayout({name:"getUV",type:"vec2",inputs:[{name:"direction",type:"vec3"},{name:"face",type:"float"}]}),Az=or(([s])=>{const e=qt(0).toVar();return ra(s.greaterThanEqual(e_),()=>{e.assign(LR.sub(s).mul(ZS.sub(WS)).div(LR.sub(e_)).add(WS))}).ElseIf(s.greaterThanEqual(t_),()=>{e.assign(e_.sub(s).mul(KS.sub(ZS)).div(e_.sub(t_)).add(ZS))}).ElseIf(s.greaterThanEqual(n_),()=>{e.assign(t_.sub(s).mul($S.sub(KS)).div(t_.sub(n_)).add(KS))}).ElseIf(s.greaterThanEqual(UR),()=>{e.assign(n_.sub(s).mul(cz.sub($S)).div(n_.sub(UR)).add($S))}).Else(()=>{e.assign(qt(-2).mul(sg(no(1.16,s))))}),e}).setLayout({name:"roughnessToMip",type:"float",inputs:[{name:"roughness",type:"float"}]}),DR=or(([s,e])=>{const t=s.toVar();t.assign(no(2,t).sub(1));const n=Kn(t,1).toVar();return ra(e.equal(0),()=>{n.assign(n.zyx)}).ElseIf(e.equal(1),()=>{n.assign(n.xzy),n.xz.mulAssign(-1)}).ElseIf(e.equal(2),()=>{n.x.mulAssign(-1)}).ElseIf(e.equal(3),()=>{n.assign(n.zyx),n.xz.mulAssign(-1)}).ElseIf(e.equal(4),()=>{n.assign(n.xzy),n.xy.mulAssign(-1)}).ElseIf(e.equal(5),()=>{n.z.mulAssign(-1)}),n}).setLayout({name:"getDirection",type:"vec3",inputs:[{name:"uv",type:"vec2"},{name:"face",type:"float"}]}),kR=or(([s,e,t,n,i,a])=>{const o=qt(t),u=Kn(e),c=Sp(Az(o),WS,a),d=_p(c),g=ag(c),v=Kn(Ky(s,u,g,n,i,a)).toVar();return ra(d.notEqual(0),()=>{const M=Kn(Ky(s,u,g.add(1),n,i,a)).toVar();v.assign(zo(v,M,d))}),v}),Ky=or(([s,e,t,n,i,a])=>{const o=qt(t).toVar(),u=Kn(e),c=qt(dz(u)).toVar(),d=qt(mc(OR.sub(o),0)).toVar();o.assign(mc(o,OR));const g=qt(mv(o)).toVar(),v=Gi(fz(u,c).mul(g.sub(2)).add(1)).toVar();return ra(c.greaterThan(2),()=>{v.y.addAssign(g),c.subAssign(3)}),v.x.addAssign(c.mul(g)),v.x.addAssign(d.mul(no(3,hz))),v.y.addAssign(no(4,mv(a).sub(g))),v.x.mulAssign(n),v.y.mulAssign(i),s.sample(v).grad(Gi(),Gi())}),XS=or(({envMap:s,mipInt:e,outputDirection:t,theta:n,axis:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:u})=>{const c=wp(n),d=t.mul(c).add(i.cross(t).mul(sf(n))).add(i.mul(i.dot(t).mul(c.oneMinus())));return Ky(s,d,e,a,o,u)}),VR=or(({n:s,latitudinal:e,poleAxis:t,outputDirection:n,weights:i,samples:a,dTheta:o,mipInt:u,envMap:c,CUBEUV_TEXEL_WIDTH:d,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v})=>{const M=Kn(ud(e,t,Zg(t,n))).toVar();ra(M.equal(Kn(0)),()=>{M.assign(Kn(n.z,0,n.x.negate()))}),M.assign(rf(M));const B=Kn().toVar();return B.addAssign(i.element(0).mul(XS({theta:0,axis:M,outputDirection:n,mipInt:u,envMap:c,CUBEUV_TEXEL_WIDTH:d,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v}))),kl({start:Qn(1),end:s},({i:I})=>{ra(I.greaterThanEqual(a),()=>{j2()});const ne=qt(o.mul(qt(I))).toVar();B.addAssign(i.element(I).mul(XS({theta:ne.mul(-1),axis:M,outputDirection:n,mipInt:u,envMap:c,CUBEUV_TEXEL_WIDTH:d,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v}))),B.addAssign(i.element(I).mul(XS({theta:ne,axis:M,outputDirection:n,mipInt:u,envMap:c,CUBEUV_TEXEL_WIDTH:d,CUBEUV_TEXEL_HEIGHT:g,CUBEUV_MAX_MIP:v})))}),Ks(B,1)}),pz=or(([s])=>{const e=Fi(s).toVar();return e.assign(e.shiftLeft(Fi(16)).bitOr(e.shiftRight(Fi(16)))),e.assign(e.bitAnd(Fi(1431655765)).shiftLeft(Fi(1)).bitOr(e.bitAnd(Fi(2863311530)).shiftRight(Fi(1)))),e.assign(e.bitAnd(Fi(858993459)).shiftLeft(Fi(2)).bitOr(e.bitAnd(Fi(3435973836)).shiftRight(Fi(2)))),e.assign(e.bitAnd(Fi(252645135)).shiftLeft(Fi(4)).bitOr(e.bitAnd(Fi(4042322160)).shiftRight(Fi(4)))),e.assign(e.bitAnd(Fi(16711935)).shiftLeft(Fi(8)).bitOr(e.bitAnd(Fi(4278255360)).shiftRight(Fi(8)))),qt(e).mul(23283064365386963e-26)}),gz=or(([s,e])=>Gi(qt(s).div(qt(e)),pz(s))),mz=or(([s,e,t])=>{const n=Kn(e).toVar(),i=qt(t),a=i.mul(i).toVar(),o=rf(Kn(a.mul(n.x),a.mul(n.y),n.z)).toVar(),u=o.x.mul(o.x).add(o.y.mul(o.y)),c=ud(u.greaterThan(0),Kn(o.y.negate(),o.x,0).div(Nd(u)),Kn(1,0,0)).toVar(),d=Zg(o,c).toVar(),g=Nd(s.x),v=no(2,3.14159265359).mul(s.y),M=g.mul(wp(v)).toVar(),B=g.mul(sf(v)).toVar(),I=no(.5,o.z.add(1));B.assign(I.oneMinus().mul(Nd(M.mul(M).oneMinus())).add(I.mul(B)));const ne=c.mul(M).add(d.mul(B)).add(o.mul(Nd(mc(0,M.mul(M).add(B.mul(B)).oneMinus()))));return rf(Kn(a.mul(ne.x),a.mul(ne.y),mc(0,ne.z)))}),zR=or(({roughness:s,mipInt:e,envMap:t,N_immutable:n,GGX_SAMPLES:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:u})=>{const c=Kn(n).toVar(),d=Kn(0).toVar(),g=qt(0).toVar();return ra(s.lessThan(.001),()=>{d.assign(Ky(t,c,e,a,o,u))}).Else(()=>{const v=ud(Su(c.z).lessThan(.999),Kn(0,0,1),Kn(1,0,0)),M=rf(Zg(v,c)).toVar(),B=Zg(c,M).toVar();kl({start:Fi(0),end:i},({i:I})=>{const ne=gz(I,i),ee=mz(ne,Kn(0,0,1),s),q=rf(M.mul(ee.x).add(B.mul(ee.y)).add(c.mul(ee.z))),ye=rf(q.mul(ZA(c,q).mul(2)).sub(c)),Ce=mc(ZA(c,ye),0);ra(Ce.greaterThan(0),()=>{const ke=Ky(t,ye,e,a,o,u);d.addAssign(ke.mul(Ce)),g.addAssign(Ce)})}),ra(g.greaterThan(0),()=>{d.assign(d.div(g))})}),Ks(d,1)}),km=4,GR=[.125,.215,.35,.446,.526,.582],b0=20,vz=512,$y=new Pg(-1,1,1,-1,0,1),yz=new vo(90,1),HR=new Wr;let jS=null,YS=0,qS=0;const xz=new le,r_=new WeakMap,bz=[3,1,5,0,4,2],JS=DR(Zl(),af("faceIndex")).normalize(),i_=Kn(JS.x,JS.y,JS.z);class _z{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._blurMaterial=null,this._ggxMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._backgroundBox=null}get _hasInitialized(){return this._renderer.hasInitialized()}fromScene(e,t=0,n=.1,i=100,a={}){const{size:o=256,position:u=xz,renderTarget:c=null}=a;if(this._setSize(o),this._hasInitialized===!1){Lr('PMREMGenerator: ".fromScene()" called before the backend is initialized. Try using "await renderer.init()" instead.');const g=c||this._allocateTarget();return a.renderTarget=g,this.fromSceneAsync(e,t,n,i,a),g}jS=this._renderer.getRenderTarget(),YS=this._renderer.getActiveCubeFace(),qS=this._renderer.getActiveMipmapLevel();const d=c||this._allocateTarget();return d.depthBuffer=!0,this._init(d),this._sceneToCubeUV(e,n,i,d,u),t>0&&this._blur(d,0,0,t),this._applyPMREM(d),this._cleanup(d),d}fromSceneAsync(o){return Pa(this,arguments,function*(e,t=0,n=.1,i=100,a={}){return ki('PMREMGenerator: ".fromSceneAsync()" is deprecated. Use "await renderer.init()" instead.'),yield this._renderer.init(),this.fromScene(e,t,n,i,a)})}fromEquirectangular(e,t=null){if(this._hasInitialized===!1){Lr('PMREMGenerator: .fromEquirectangular() called before the backend is initialized. Try using "await renderer.init()" instead.'),this._setSizeFromTexture(e);const n=t||this._allocateTarget();return this.fromEquirectangularAsync(e,n),n}return this._fromTexture(e,t)}fromEquirectangularAsync(e,t=null){return Pa(this,null,function*(){return ki('PMREMGenerator: ".fromEquirectangularAsync()" is deprecated. Use "await renderer.init()" instead.'),yield this._renderer.init(),this._fromTexture(e,t)})}fromCubemap(e,t=null){if(this._hasInitialized===!1){Lr("PMREMGenerator: .fromCubemap() called before the backend is initialized. Try using .fromCubemapAsync() instead."),this._setSizeFromTexture(e);const n=t||this._allocateTarget();return this.fromCubemapAsync(e,t),n}return this._fromTexture(e,t)}fromCubemapAsync(e,t=null){return Pa(this,null,function*(){return ki('PMREMGenerator: ".fromCubemapAsync()" is deprecated. Use "await renderer.init()" instead.'),yield this._renderer.init(),this._fromTexture(e,t)})}compileCubemapShader(){return Pa(this,null,function*(){this._cubemapMaterial===null&&(this._cubemapMaterial=WR(),yield this._compileMaterial(this._cubemapMaterial))})}compileEquirectangularShader(){return Pa(this,null,function*(){this._equirectMaterial===null&&(this._equirectMaterial=ZR(),yield this._compileMaterial(this._equirectMaterial))})}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSizeFromTexture(e){e.mapping===it||e.mapping===wt?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4)}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?q:0,q,q),d.render(e,o)}d.autoClear=g,e.background=I}_textureToCubeUV(e,t){const n=this._renderer,i=e.mapping===it||e.mapping===wt;i?this._cubemapMaterial===null&&(this._cubemapMaterial=WR(e)):this._equirectMaterial===null&&(this._equirectMaterial=ZR(e));const a=i?this._cubemapMaterial:this._equirectMaterial;a.fragmentNode.value=e;const o=this._lodMeshes[0];o.material=a;const u=this._cubeSize;Bv(t,0,0,3*u,2*u),n.setRenderTarget(t),n.render(o,$y)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const i=this._lodMeshes.length;for(let a=1;aI-km?n-I+km:0),q=4*(this._cubeSize-ne);e.texture.frame=(e.texture.frame||0)+1,c.envMap.value=e.texture,c.roughness.value=B,c.mipInt.value=I-t,Bv(a,ee,q,3*ne,2*ne),i.setRenderTarget(a),i.render(u,$y),a.texture.frame=(a.texture.frame||0)+1,c.envMap.value=a.texture,c.roughness.value=0,c.mipInt.value=I-n,Bv(e,ee,q,3*ne,2*ne),i.setRenderTarget(e),i.render(u,$y)}_blur(e,t,n,i,a){const o=this._pingPongRenderTarget;this._halfBlur(e,o,t,n,i,"latitudinal",a),this._halfBlur(o,e,n,n,i,"longitudinal",a)}_halfBlur(e,t,n,i,a,o,u){const c=this._renderer,d=this._blurMaterial;o!=="latitudinal"&&o!=="longitudinal"&&Gr("blur direction must be either latitudinal or longitudinal!");const g=3,v=this._lodMeshes[i];v.material=d;const M=r_.get(d),B=this._sizeLods[n]-1,I=isFinite(a)?Math.PI/(2*B):2*Math.PI/(2*b0-1),ne=a/I,ee=isFinite(a)?1+Math.floor(g*ne):b0;ee>b0&&Lr(`sigmaRadians, ${a}, is too large and will clip, as it requested ${ee} samples when the maximum is set to ${b0}`);const q=[];let ye=0;for(let ht=0;htCe-km?i-Ce+km:0),Ye=4*(this._cubeSize-ke);Bv(t,nt,Ye,3*ke,2*ke),c.setRenderTarget(t),c.render(v,$y)}}function wz(s){const e=[],t=[],n=[];let i=s;const a=s-km+1+GR.length;for(let o=0;os-km?c=GR[o-s+km-1]:o===0&&(c=0),t.push(c);const d=1/(u-2),g=-d,v=1+d,M=[g,g,v,g,v,v,g,g,v,v,g,v],B=6,I=6,ne=3,ee=2,q=1,ye=new Float32Array(ne*I*B),Ce=new Float32Array(ee*I*B),ke=new Float32Array(q*I*B);for(let Ye=0;Ye2?0:-1,qe=[ht,Rt,0,ht+2/3,Rt,0,ht+2/3,Rt+1,0,ht,Rt,0,ht+2/3,Rt+1,0,ht,Rt+1,0],pt=bz[Ye];ye.set(qe,ne*I*pt),Ce.set(M,ee*I*pt);const xn=[pt,pt,pt,pt,pt,pt];ke.set(xn,q*I*pt)}const nt=new ka;nt.setAttribute("position",new wl(ye,ne)),nt.setAttribute("uv",new wl(Ce,ee)),nt.setAttribute("faceIndex",new wl(ke,q)),n.push(new Il(nt,null)),i>km&&i--}return{lodMeshes:n,sizeLods:e,sigmas:t}}function QR(s,e){const t={magFilter:vr,minFilter:vr,generateMipmaps:!1,type:Wt,format:L,colorSpace:No},n=new Ns(s,e,t);return n.texture.mapping=_t,n.texture.name="PMREM.cubeUv",n.texture.isPMREMTexture=!0,n.scissorTest=!0,n}function Bv(s,e,t,n,i){s.viewport.set(e,t,n,i),s.scissor.set(e,t,n,i)}function s_(s){const e=new yc;return e.depthTest=!1,e.depthWrite=!1,e.blending=we,e.name=`PMREM_${s}`,e}function Sz(s,e,t){const n=Fd(new Array(b0).fill(0)),i=va(new le(0,1,0)),a=va(0),o=qt(b0),u=va(0),c=va(1),d=xl(),g=va(0),v=qt(1/e),M=qt(1/t),B=qt(s),I={n:o,latitudinal:u,weights:n,poleAxis:i,outputDirection:i_,dTheta:a,samples:c,envMap:d,mipInt:g,CUBEUV_TEXEL_WIDTH:v,CUBEUV_TEXEL_HEIGHT:M,CUBEUV_MAX_MIP:B},ne=s_("blur");return ne.fragmentNode=VR(fd(rl({},I),{latitudinal:u.equal(1)})),r_.set(ne,I),ne}function Mz(s,e,t){const n=xl(),i=va(0),a=va(0),o=qt(1/e),u=qt(1/t),c=qt(s),d={envMap:n,roughness:i,mipInt:a,CUBEUV_TEXEL_WIDTH:o,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:c},g=s_("ggx");return g.fragmentNode=zR(fd(rl({},d),{N_immutable:i_,GGX_SAMPLES:Fi(vz)})),r_.set(g,d),g}function WR(s){const e=s_("cubemap");return e.fragmentNode=lf(s,i_),e}function ZR(s){const e=s_("equirect");return e.fragmentNode=xl(s,LS(i_),0),e}const KR=new WeakMap;function Ez(s){const e=Math.log2(s)-2,t=1/s;return{texelWidth:1/(3*Math.max(Math.pow(2,e),7*16)),texelHeight:t,maxMip:e}}function Cz(s,e,t){const n=Tz(e);let i=n.get(s);if((i!==void 0?i.pmremVersion:-1)!==s.pmremVersion){const o=s.image;if(s.isCubeTexture)if(Rz(o))i=t.fromCubemap(s,i);else return null;else if(Iz(o))i=t.fromEquirectangular(s,i);else return null;i.pmremVersion=s.pmremVersion,n.set(s,i)}return i.texture}function Tz(s){let e=KR.get(s);return e===void 0&&(e=new WeakMap,KR.set(s,e)),e}class Bz extends pc{static get type(){return"PMREMNode"}constructor(e,t=null,n=null){super("vec3"),this._value=e,this._pmrem=null,this.uvNode=t,this.levelNode=n,this._generator=null;const i=new zi;i.isRenderTargetTexture=!0,this._texture=xl(i),this._width=va(0),this._height=va(0),this._maxMip=va(0),this.updateBeforeType=Ao.RENDER}set value(e){this._value=e,this._pmrem=null}get value(){return this._value}updateFromTexture(e){const t=Ez(e.image.height);this._texture.value=e,this._width.value=t.texelWidth,this._height.value=t.texelHeight,this._maxMip.value=t.maxMip}updateBefore(e){let t=this._pmrem;const n=t?t.pmremVersion:-1,i=this._value;n!==i.pmremVersion&&(i.isPMREMTexture===!0?t=i:t=Cz(i,e.renderer,this._generator),t!==null&&(this._pmrem=t,this.updateFromTexture(t)))}setup(e){this._generator===null&&(this._generator=new _z(e.renderer)),this.updateBefore(e);let t=this.uvNode;t===null&&e.context.getUV&&(t=e.context.getUV(this,e)),t=AS.mul(Kn(t.x,t.y.negate(),t.z));let n=this.levelNode;return n===null&&e.context.getTextureLevel&&(n=e.context.getTextureLevel(this)),kR(this._texture,t,n,this._width,this._height,this._maxMip)}dispose(){super.dispose(),this._generator!==null&&this._generator.dispose()}}function Rz(s){if(s==null)return!1;let e=0;const t=6;for(let n=0;n0}const eM=to(Bz).setParameterLength(1,3),$R=new WeakMap;class Nz extends Sv{static get type(){return"EnvironmentNode"}constructor(e=null){super(),this.envNode=e}setup(e){const{material:t}=e;let n=this.envNode;if(n.isTextureNode||n.isMaterialReferenceNode){const v=n.isTextureNode?n.value:t[n.property];let M=$R.get(v);M===void 0&&(M=eM(v),$R.set(v,M)),n=M}const a=t.useAnisotropy===!0||t.anisotropy>0?d2:cl,o=n.context(XR(ig,a)).mul(Vb),u=n.context(Fz(Om)).mul(Math.PI).mul(Vb),c=yv(o),d=yv(u);e.context.radiance.addAssign(c),e.context.iblIrradiance.addAssign(d);const g=e.context.lightingModel.clearcoatRadiance;if(g){const v=n.context(XR(Ny,v0)).mul(Vb),M=yv(v);g.addAssign(M)}}}const XR=(s,e)=>{let t=null;return{getUV:()=>(t===null&&(t=iu.negate().reflect(e),t=W1(s).mix(t,e).normalize(),t=t.transformDirection(AA)),t),getTextureLevel:()=>s}},Fz=s=>({getUV:()=>s,getTextureLevel:()=>qt(1)}),Pz=new $v;class jR extends yc{static get type(){return"MeshStandardNodeMaterial"}constructor(e){super(),this.isMeshStandardNodeMaterial=!0,this.lights=!0,this.emissiveNode=null,this.metalnessNode=null,this.roughnessNode=null,this.setDefaultValues(Pz),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t===null&&e.environmentNode&&(t=e.environmentNode),t?new Nz(t):null}setupLightingModel(){return new PR}setupSpecular(){const e=zo(Kn(.04),Wl.rgb,Wg);Pm.assign(Kn(.04)),A0.assign(e),pv.assign(1)}setupVariants(){const e=this.metalnessNode?qt(this.metalnessNode):b2;Wg.assign(e);let t=this.roughnessNode?qt(this.roughnessNode):x2;t=OS({roughness:t}),ig.assign(t),this.setupSpecular(),d0.assign(Wl.rgb.mul(e.oneMinus()))}copy(e){return this.emissiveNode=e.emissiveNode,this.metalnessNode=e.metalnessNode,this.roughnessNode=e.roughnessNode,super.copy(e)}}const Lz=new Qp;class Uz extends jR{static get type(){return"MeshPhysicalNodeMaterial"}constructor(e){super(),this.isMeshPhysicalNodeMaterial=!0,this.clearcoatNode=null,this.clearcoatRoughnessNode=null,this.clearcoatNormalNode=null,this.sheenNode=null,this.sheenRoughnessNode=null,this.iridescenceNode=null,this.iridescenceIORNode=null,this.iridescenceThicknessNode=null,this.specularIntensityNode=null,this.specularColorNode=null,this.iorNode=null,this.transmissionNode=null,this.thicknessNode=null,this.attenuationDistanceNode=null,this.attenuationColorNode=null,this.dispersionNode=null,this.anisotropyNode=null,this.setDefaultValues(Lz),this.setValues(e)}get useClearcoat(){return this.clearcoat>0||this.clearcoatNode!==null}get useIridescence(){return this.iridescence>0||this.iridescenceNode!==null}get useSheen(){return this.sheen>0||this.sheenNode!==null}get useAnisotropy(){return this.anisotropy>0||this.anisotropyNode!==null}get useTransmission(){return this.transmission>0||this.transmissionNode!==null}get useDispersion(){return this.dispersion>0||this.dispersionNode!==null}setupSpecular(){const e=this.iorNode?qt(this.iorNode):L2;Ly.assign(e),Pm.assign(Uf(Q1(Ly.sub(1).div(Ly.add(1))).mul(y2),Kn(1)).mul(_S)),A0.assign(zo(Pm,Wl.rgb,Wg)),pv.assign(zo(_S,1,Wg))}setupLightingModel(){return new PR(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion)}setupVariants(e){if(super.setupVariants(e),this.useClearcoat){const t=this.clearcoatNode?qt(this.clearcoatNode):w2,n=this.clearcoatRoughnessNode?qt(this.clearcoatRoughnessNode):S2;yb.assign(t),Ny.assign(OS({roughness:n}))}if(this.useSheen){const t=this.sheenNode?Kn(this.sheenNode):C2,n=this.sheenRoughnessNode?qt(this.sheenRoughnessNode):T2;hA.assign(t),Nm.assign(n)}if(this.useIridescence){const t=this.iridescenceNode?qt(this.iridescenceNode):R2,n=this.iridescenceIORNode?qt(this.iridescenceIORNode):I2,i=this.iridescenceThicknessNode?qt(this.iridescenceThicknessNode):N2;xb.assign(t),bb.assign(n),_b.assign(i)}if(this.useAnisotropy){const t=(this.anisotropyNode?Gi(this.anisotropyNode):B2).toVar();Fm.assign(t.length()),ra(Fm.equal(0),()=>{t.assign(Gi(1,0))}).Else(()=>{t.divAssign(Gi(Fm)),Fm.assign(Fm.saturate())}),wb.assign(Fm.pow2().mix(ig.pow2(),1)),Fy.assign(y0[0].mul(t.x).add(y0[1].mul(t.y))),f0.assign(y0[1].mul(t.x).sub(y0[0].mul(t.y)))}if(this.useTransmission){const t=this.transmissionNode?qt(this.transmissionNode):F2,n=this.thicknessNode?qt(this.thicknessNode):P2,i=this.attenuationDistanceNode?qt(this.attenuationDistanceNode):U2,a=this.attenuationColorNode?Kn(this.attenuationColorNode):O2;if(Mb.assign(t),C1.assign(n),T1.assign(i),B1.assign(a),this.useDispersion){const o=this.dispersionNode?qt(this.dispersionNode):k2;R1.assign(o)}}}setupClearcoatNormal(){return this.clearcoatNormalNode?Kn(this.clearcoatNormalNode):M2}setup(e){e.context.setupClearcoatNormal=()=>vv(this.setupClearcoatNormal(e),"NORMAL","vec3"),super.setup(e)}copy(e){return this.clearcoatNode=e.clearcoatNode,this.clearcoatRoughnessNode=e.clearcoatRoughnessNode,this.clearcoatNormalNode=e.clearcoatNormalNode,this.sheenNode=e.sheenNode,this.sheenRoughnessNode=e.sheenRoughnessNode,this.iridescenceNode=e.iridescenceNode,this.iridescenceIORNode=e.iridescenceIORNode,this.iridescenceThicknessNode=e.iridescenceThicknessNode,this.specularIntensityNode=e.specularIntensityNode,this.specularColorNode=e.specularColorNode,this.transmissionNode=e.transmissionNode,this.thicknessNode=e.thicknessNode,this.attenuationDistanceNode=e.attenuationDistanceNode,this.attenuationColorNode=e.attenuationColorNode,this.dispersionNode=e.dispersionNode,this.anisotropyNode=e.anisotropyNode,super.copy(e)}}class Oz extends null{constructor(e=!1,t=!1,n=!1,i=!1,a=!1,o=!1,u=!1){super(e,t,n,i,a,o),this.useSSS=u}direct({lightDirection:e,lightColor:t,reflectedLight:n},i){if(this.useSSS===!0){const a=i.material,{thicknessColorNode:o,thicknessDistortionNode:u,thicknessAmbientNode:c,thicknessAttenuationNode:d,thicknessPowerNode:g,thicknessScaleNode:v}=a,M=e.add(cl.mul(u)).normalize(),B=qt(iu.dot(M.negate()).saturate().pow(g).mul(v)),I=Kn(B.add(c).mul(o));n.directDiffuse.addAssign(I.mul(d.mul(t)))}super.direct({lightDirection:e,lightColor:t,reflectedLight:n},i)}}class VX extends null{static get type(){return"MeshSSSNodeMaterial"}constructor(e){super(e),this.thicknessColorNode=null,this.thicknessDistortionNode=qt(.1),this.thicknessAmbientNode=qt(0),this.thicknessAttenuationNode=qt(.1),this.thicknessPowerNode=qt(2),this.thicknessScaleNode=qt(10)}get useSSS(){return this.thicknessColorNode!==null}setupLightingModel(){return new Oz(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion,this.useSSS)}copy(e){return this.thicknessColorNode=e.thicknessColorNode,this.thicknessDistortionNode=e.thicknessDistortionNode,this.thicknessAmbientNode=e.thicknessAmbientNode,this.thicknessAttenuationNode=e.thicknessAttenuationNode,this.thicknessPowerNode=e.thicknessPowerNode,this.thicknessScaleNode=e.thicknessScaleNode,super.copy(e)}}const Dz=or(({normal:s,lightDirection:e,builder:t})=>{const n=s.dot(e),i=Gi(n.mul(.5).add(.5),0);if(t.material.gradientMap){const a=em("gradientMap","texture").context({getUV:()=>i});return Kn(a.r)}else{const a=i.fwidth().mul(.5);return zo(Kn(.7),Kn(1),fA(qt(.7).sub(a.x),qt(.7).add(a.x),i.x))}});class kz extends qb{direct({lightDirection:e,lightColor:t,reflectedLight:n},i){const a=Dz({normal:kb,lightDirection:e,builder:i}).mul(t);n.directDiffuse.addAssign(a.mul(x0({diffuseColor:Wl.rgb})))}indirect(e){const{ambientOcclusion:t,irradiance:n,reflectedLight:i}=e.context;i.indirectDiffuse.addAssign(n.mul(x0({diffuseColor:Wl}))),i.indirectDiffuse.mulAssign(t)}}const Vz=new jv;class zz extends yc{static get type(){return"MeshToonNodeMaterial"}constructor(e){super(),this.isMeshToonNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Vz),this.setValues(e)}setupLightingModel(){return new kz}}const YR=or(()=>{const s=Kn(iu.z,0,iu.x.negate()).normalize(),e=iu.cross(s);return Gi(s.dot(cl),e.dot(cl)).mul(.495).add(.5)}).once(["NORMAL","VERTEX"])().toVar("matcapUV"),Gz=new nw;class Hz extends yc{static get type(){return"MeshMatcapNodeMaterial"}constructor(e){super(),this.isMeshMatcapNodeMaterial=!0,this.setDefaultValues(Gz),this.setValues(e)}setupVariants(e){const t=YR;let n;e.material.matcap?n=em("matcap","texture").context({getUV:()=>t}):n=Kn(zo(.2,.8,t.y)),Wl.rgb.mulAssign(n.rgb)}}class Qz extends pc{static get type(){return"RotateNode"}constructor(e,t){super(),this.positionNode=e,this.rotationNode=t}getNodeType(e){return this.positionNode.getNodeType(e)}setup(e){const{rotationNode:t,positionNode:n}=this;if(this.getNodeType(e)==="vec2"){const a=t.cos(),o=t.sin();return vb(a,o,o.negate(),a).mul(n)}else{const a=t,o=Im(Ks(1,0,0,0),Ks(0,wp(a.x),sf(a.x).negate(),0),Ks(0,sf(a.x),wp(a.x),0),Ks(0,0,0,1)),u=Im(Ks(wp(a.y),0,sf(a.y),0),Ks(0,1,0,0),Ks(sf(a.y).negate(),0,wp(a.y),0),Ks(0,0,0,1)),c=Im(Ks(wp(a.z),sf(a.z).negate(),0,0),Ks(sf(a.z),wp(a.z),0,0),Ks(0,0,1,0),Ks(0,0,0,1));return o.mul(u).mul(c).mul(Ks(n,1)).xyz}}}const Xy=to(Qz).setParameterLength(2),Wz=new BA;class qR extends yc{static get type(){return"SpriteNodeMaterial"}constructor(e){super(),this.isSpriteNodeMaterial=!0,this._useSizeAttenuation=!0,this.positionNode=null,this.rotationNode=null,this.scaleNode=null,this.transparent=!0,this.setDefaultValues(Wz),this.setValues(e)}setupPositionView(e){const{object:t,camera:n}=e,{positionNode:i,rotationNode:a,scaleNode:o,sizeAttenuation:u}=this,c=cg.mul(Kn(i||0));let d=Gi(XA[0].xyz.length(),XA[1].xyz.length());o!==null&&(d=d.mul(Gi(o))),n.isPerspectiveCamera&&u===!1&&(d=d.mul(c.z.negate()));let g=cd.xy;if(t.center&&t.center.isVector2===!0){const B=Vk("center","vec2",t);g=g.sub(B.sub(.5))}g=g.mul(d);const v=qt(a||E2),M=Xy(g,v);return Ks(c.xy.add(M),c.zw)}copy(e){return this.positionNode=e.positionNode,this.rotationNode=e.rotationNode,this.scaleNode=e.scaleNode,super.copy(e)}get sizeAttenuation(){return this._useSizeAttenuation}set sizeAttenuation(e){this._useSizeAttenuation!==e&&(this._useSizeAttenuation=e,this.needsUpdate=!0)}}const Zz=new jm,Kz=new ce;class $z extends qR{static get type(){return"PointsNodeMaterial"}constructor(e){super(),this.sizeNode=null,this.isPointsNodeMaterial=!0,this.setDefaultValues(Zz),this.setValues(e)}setupPositionView(){const{positionNode:e}=this;return cg.mul(Kn(e||vc)).xyz}setupVertexSprite(e){const{material:t,camera:n}=e,{rotationNode:i,scaleNode:a,sizeNode:o,sizeAttenuation:u}=this;let c=super.setupVertex(e);if(t.isNodeMaterial!==!0)return c;let d=o!==null?Gi(o):D2;d=d.mul(aS),n.isPerspectiveCamera&&u===!0&&(d=d.mul(Xz.div(Oc.z.negate()))),a&&a.isNode&&(d=d.mul(Gi(a)));let g=cd.xy;if(i&&i.isNode){const v=qt(i);g=Xy(g,v)}return g=g.mul(d),g=g.div(oS.div(2)),g=g.mul(c.w),c=c.add(Ks(g,0,0)),c}setupVertex(e){return e.object.isPoints?super.setupVertex(e):this.setupVertexSprite(e)}get alphaToCoverage(){return this._useAlphaToCoverage}set alphaToCoverage(e){this._useAlphaToCoverage!==e&&(this._useAlphaToCoverage=e,this.needsUpdate=!0)}}const Xz=va(1).onFrameUpdate(function({renderer:s}){const e=s.getSize(Kz);this.value=.5*e.y});class jz extends qb{constructor(){super(),this.shadowNode=qt(1).toVar("shadowMask")}direct({lightNode:e}){e.shadowNode!==null&&this.shadowNode.mulAssign(e.shadowNode)}finish({context:e}){Wl.a.mulAssign(this.shadowNode.oneMinus()),e.outgoingLight.rgb.assign(Wl.rgb)}}const Yz=new Cx;class qz extends yc{static get type(){return"ShadowNodeMaterial"}constructor(e){super(),this.isShadowNodeMaterial=!0,this.lights=!0,this.transparent=!0,this.setDefaultValues(Yz),this.setValues(e)}setupLightingModel(){return new jz}}const jy=bp("vec3"),JR=bp("vec3"),eI=bp("vec3");class Jz extends null{constructor(){super()}start(e){const{material:t}=e,n=bp("vec3"),i=bp("vec3");ra(zy.sub(pA).length().greaterThan(zB.mul(2)),()=>{n.assign(zy),i.assign(pA)}).Else(()=>{n.assign(pA),i.assign(zy)});const a=i.sub(n),o=va("int").onRenderUpdate(({material:v})=>v.steps),u=a.length().div(o).toVar(),c=a.normalize().toVar(),d=qt(0).toVar(),g=Kn(1).toVar();t.offsetNode&&d.addAssign(t.offsetNode.mul(u)),kl(o,()=>{const v=n.add(c.mul(d)),M=AA.mul(Ks(v,1)).xyz;t.depthNode!==null&&(JR.assign(Cv(IS(M.z,qg,Jg))),e.context.sceneDepthNode=Cv(t.depthNode).toVar()),e.context.positionWorld=v,e.context.shadowPositionWorld=v,e.context.positionView=M,jy.assign(0);let B;t.scatteringNode&&(B=t.scatteringNode({positionRay:v})),super.start(e),B&&jy.mulAssign(B);const I=jy.mul(.01).negate().mul(u).exp();g.mulAssign(I),d.addAssign(u)}),eI.addAssign(g.saturate().oneMinus())}scatteringLight(e,t){const n=t.context.sceneDepthNode;n?ra(n.greaterThanEqual(JR),()=>{jy.addAssign(e)}):jy.addAssign(e)}direct({lightNode:e,lightColor:t},n){if(e.light.distance===void 0)return;const i=t.xyz.toVar();i.mulAssign(e.shadowNode),this.scatteringLight(i,n)}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:i},a){const o=t.add(n).sub(i),u=t.sub(n).sub(i),c=t.sub(n).add(i),d=t.add(n).add(i),g=a.context.positionView,v=e.xyz.mul(tz({P:g,p0:o,p1:u,p2:c,p3:d})).pow(1.5);this.scatteringLight(v,a)}finish(e){e.context.outgoingLight.assign(eI)}}class zX extends null{static get type(){return"VolumeNodeMaterial"}constructor(e){super(),this.isVolumeNodeMaterial=!0,this.steps=25,this.offsetNode=null,this.scatteringNode=null,this.lights=!0,this.transparent=!0,this.side=BackSide,this.depthTest=!1,this.depthWrite=!1,this.setValues(e)}setupLightingModel(){return new Jz}}class e5{constructor(e,t,n){this.renderer=e,this.nodes=t,this.info=n,this._context=typeof self!="undefined"?self:null,this._animationLoop=null,this._requestId=null}start(){const e=(t,n)=>{this._requestId=this._context.requestAnimationFrame(e),this.info.autoReset===!0&&this.info.reset(),this.nodes.nodeFrame.update(),this.info.frame=this.nodes.nodeFrame.frameId,this.renderer._inspector.begin(),this._animationLoop!==null&&this._animationLoop(t,n),this.renderer._inspector.finish()};e()}stop(){this._context.cancelAnimationFrame(this._requestId),this._requestId=null}getAnimationLoop(){return this._animationLoop}setAnimationLoop(e){this._animationLoop=e}getContext(){return this._context}setContext(e){this._context=e}dispose(){this.stop()}}class Mp{constructor(){this.weakMaps={}}_getWeakMap(e){const t=e.length;let n=this.weakMaps[t];return n===void 0&&(n=new WeakMap,this.weakMaps[t]=n),n}get(e){let t=this._getWeakMap(e);for(let n=0;n{this.dispose()},this.onGeometryDispose=()=>{this.attributes=null,this.attributesId=null},this.material.addEventListener("dispose",this.onMaterialDispose),this.geometry.addEventListener("dispose",this.onGeometryDispose)}updateClipping(e){this.clippingContext=e}get clippingNeedsUpdate(){return this.clippingContext===null||this.clippingContext.cacheKey===this.clippingContextCacheKey?!1:(this.clippingContextCacheKey=this.clippingContext.cacheKey,!0)}get hardwareClippingPlanes(){return this.material.hardwareClipping===!0?this.clippingContext.unionClippingCount:0}getNodeBuilderState(){return this._nodeBuilderState||(this._nodeBuilderState=this._nodes.getForRender(this))}getMonitor(){return this._monitor||(this._monitor=this.getNodeBuilderState().observer)}getBindings(){return this._bindings||(this._bindings=this.getNodeBuilderState().createBindings())}getBindingGroup(e){for(const t of this.getBindings())if(t.name===e)return t}getIndex(){return this._geometries.getIndex(this)}getIndirect(){return this._geometries.getIndirect(this)}getIndirectOffset(){return this._geometries.getIndirectOffset(this)}getChainArray(){return[this.object,this.material,this.context,this.lightsNode]}setGeometry(e){this.geometry=e,this.attributes=null,this.attributesId=null}getAttributes(){if(this.attributes!==null)return this.attributes;const e=this.getNodeBuilderState().nodeAttributes,t=this.geometry,n=[],i=new Set,a={};for(const o of e){let u;if(o.node&&o.node.attribute?u=o.node.attribute:(u=t.getAttribute(o.name),a[o.name]=u.version),u===void 0)continue;n.push(u);const c=u.isInterleavedBufferAttribute?u.data:u;i.add(c)}return this.attributes=n,this.attributesId=a,this.vertexBuffers=Array.from(i.values()),n}getVertexBuffers(){return this.vertexBuffers===null&&this.getAttributes(),this.vertexBuffers}getDrawParameters(){const{object:e,material:t,geometry:n,group:i,drawRange:a}=this,o=this.drawParams||(this.drawParams={vertexCount:0,firstVertex:0,instanceCount:0,firstInstance:0}),u=this.getIndex(),c=u!==null;let d=1;if(n.isInstancedBufferGeometry===!0?d=n.instanceCount:e.count!==void 0&&(d=Math.max(0,e.count)),d===0)return null;if(o.instanceCount=d,e.isBatchedMesh===!0)return o;let g=1;t.wireframe===!0&&!e.isPoints&&!e.isLineSegments&&!e.isLine&&!e.isLineLoop&&(g=2);let v=a.start*g,M=(a.start+a.count)*g;i!==null&&(v=Math.max(v,i.start*g),M=Math.min(M,(i.start+i.count)*g));const B=n.attributes.position;let I=1/0;c?I=u.count:B!=null&&(I=B.count),v=Math.max(v,0),M=Math.min(M,I);const ne=M-v;return ne<0||ne===1/0?null:(o.vertexCount=ne,o.firstVertex=v,o)}getGeometryCacheKey(){const{geometry:e}=this;let t="";for(const n of Object.keys(e.attributes).sort()){const i=e.attributes[n];t+=n+",",i.data&&(t+=i.data.stride+","),i.offset&&(t+=i.offset+","),i.itemSize&&(t+=i.itemSize+","),i.normalized&&(t+="n,")}for(const n of Object.keys(e.morphAttributes).sort()){const i=e.morphAttributes[n];t+="morph-"+n+",";for(let a=0,o=i.length;a1||Array.isArray(e.morphTargetInfluences))&&(i+=e.uuid+","),i+=this.context.id+",",i+=e.receiveShadow+",",dv(i)}get needsGeometryUpdate(){if(this.geometry.id!==this.object.geometry.id)return!0;if(this.attributes!==null){const e=this.attributesId;for(const t in e){const n=this.geometry.getAttribute(t);if(n===void 0||e[t]!==n.id)return!0}}return!1}get needsUpdate(){return this.initialNodesCacheKey!==this.getDynamicCacheKey()||this.clippingNeedsUpdate}getDynamicCacheKey(){let e=0;return this.material.isShadowPassMaterial!==!0&&(e=this._nodes.getCacheKey(this.scene,this.lightsNode)),this.camera.isArrayCamera&&(e=fv(e,this.camera.cameras.length)),this.object.receiveShadow&&(e=fv(e,1)),e=fv(e,this.camera.id,this.renderer.contextNode.id,this.renderer.contextNode.version),e}getCacheKey(){return this.getMaterialCacheKey()+this.getDynamicCacheKey()}dispose(){this.material.removeEventListener("dispose",this.onMaterialDispose),this.geometry.removeEventListener("dispose",this.onGeometryDispose),this.onDispose()}}const _0=[];class i5{constructor(e,t,n,i,a,o){this.renderer=e,this.nodes=t,this.geometries=n,this.pipelines=i,this.bindings=a,this.info=o,this.chainMaps={}}get(e,t,n,i,a,o,u,c){const d=this.getChainMap(c);_0[0]=e,_0[1]=t,_0[2]=o,_0[3]=a;let g=d.get(_0);return g===void 0?(g=this.createRenderObject(this.nodes,this.geometries,this.renderer,e,t,n,i,a,o,u,c),d.set(_0,g)):(g.updateClipping(u),g.needsGeometryUpdate&&g.setGeometry(e.geometry),(g.version!==t.version||g.needsUpdate)&&(g.initialCacheKey!==g.getCacheKey()?(g.dispose(),g=this.get(e,t,n,i,a,o,u,c)):g.version=t.version)),_0.length=0,g}getChainMap(e="default"){return this.chainMaps[e]||(this.chainMaps[e]=new Mp)}dispose(){this.chainMaps={}}createRenderObject(e,t,n,i,a,o,u,c,d,g,v){const M=this.getChainMap(v),B=new r5(e,t,n,i,a,o,u,c,d,g);return B.onDispose=()=>{this.pipelines.delete(B),this.bindings.deleteForRender(B),this.nodes.delete(B),M.delete(B.getChainArray())},B}}class Vm{constructor(){this.data=new WeakMap}get(e){let t=this.data.get(e);return t===void 0&&(t={},this.data.set(e,t)),t}delete(e){let t=null;return this.data.has(e)&&(t=this.data.get(e),this.data.delete(e)),t}has(e){return this.data.has(e)}dispose(){this.data=new WeakMap}}const YA={VERTEX:1,INDEX:2,STORAGE:3,INDIRECT:4},zm=16,s5=211,a5=212;class o5 extends Vm{constructor(e){super(),this.backend=e}delete(e){const t=super.delete(e);return t!==null&&this.backend.destroyAttribute(e),t}update(e,t){const n=this.get(e);if(n.version===void 0)t===YA.VERTEX?this.backend.createAttribute(e):t===YA.INDEX?this.backend.createIndexAttribute(e):t===YA.STORAGE?this.backend.createStorageAttribute(e):t===YA.INDIRECT&&this.backend.createIndirectStorageAttribute(e),n.version=this._getBufferAttribute(e).version;else{const i=this._getBufferAttribute(e);(n.version{this.info.memory.geometries--;const a=t.index,o=e.getAttributes();a!==null&&this.attributes.delete(a);for(const c of o)this.attributes.delete(c);const u=this.wireframes.get(t);u!==void 0&&this.attributes.delete(u),t.removeEventListener("dispose",i),this._geometryDisposeListeners.delete(t)};t.addEventListener("dispose",i),this._geometryDisposeListeners.set(t,i)}updateAttributes(e){const t=e.getAttributes();for(const a of t)a.isStorageBufferAttribute||a.isStorageInstancedBufferAttribute?this.updateAttribute(a,YA.STORAGE):this.updateAttribute(a,YA.VERTEX);const n=this.getIndex(e);n!==null&&this.updateAttribute(n,YA.INDEX);const i=e.geometry.indirect;i!==null&&this.updateAttribute(i,YA.INDIRECT)}updateAttribute(e,t){const n=this.info.render.calls;e.isInterleavedBufferAttribute?this.attributeCall.get(e)===void 0?(this.attributes.update(e,t),this.attributeCall.set(e,n)):this.attributeCall.get(e.data)!==n&&(this.attributes.update(e,t),this.attributeCall.set(e.data,n),this.attributeCall.set(e,n)):this.attributeCall.get(e)!==n&&(this.attributes.update(e,t),this.attributeCall.set(e,n))}getIndirect(e){return e.geometry.indirect}getIndirectOffset(e){return e.geometry.indirectOffset}getIndex(e){const{geometry:t,material:n}=e;let i=t.index;if(n.wireframe===!0){const a=this.wireframes;let o=a.get(t);o===void 0?(o=nI(t),a.set(t,o)):o.version!==tI(t)&&(this.attributes.delete(o),o=nI(t),a.set(t,o)),i=o}return i}dispose(){for(const[e,t]of this._geometryDisposeListeners.entries())e.removeEventListener("dispose",t);this._geometryDisposeListeners.clear()}}class u5{constructor(){this.autoReset=!0,this.frame=0,this.calls=0,this.render={calls:0,frameCalls:0,drawCalls:0,triangles:0,points:0,lines:0,timestamp:0},this.compute={calls:0,frameCalls:0,timestamp:0},this.memory={geometries:0,textures:0}}update(e,t,n){this.render.drawCalls++,e.isMesh||e.isSprite?this.render.triangles+=n*(t/3):e.isPoints?this.render.points+=n*t:e.isLineSegments?this.render.lines+=n*(t/2):e.isLine?this.render.lines+=n*(t-1):Gr("WebGPUInfo: Unknown object type.")}reset(){this.render.drawCalls=0,this.render.frameCalls=0,this.compute.frameCalls=0,this.render.triangles=0,this.render.points=0,this.render.lines=0}dispose(){this.reset(),this.calls=0,this.render.calls=0,this.compute.calls=0,this.render.timestamp=0,this.compute.timestamp=0,this.memory.geometries=0,this.memory.textures=0}}class rI{constructor(e){this.cacheKey=e,this.usedTimes=0}}class c5 extends rI{constructor(e,t,n){super(e),this.vertexProgram=t,this.fragmentProgram=n}}class h5 extends rI{constructor(e,t){super(e),this.computeProgram=t,this.isComputePipeline=!0}}let d5=0;class tM{constructor(e,t,n,i=null,a=null){this.id=d5++,this.code=e,this.stage=t,this.name=n,this.transforms=i,this.attributes=a,this.usedTimes=0}}class f5 extends Vm{constructor(e,t){super(),this.backend=e,this.nodes=t,this.bindings=null,this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}getForCompute(e,t){const{backend:n}=this,i=this.get(e);if(this._needsComputeUpdate(e)){const a=i.pipeline;a&&(a.usedTimes--,a.computeProgram.usedTimes--);const o=this.nodes.getForCompute(e);let u=this.programs.compute.get(o.computeShader);u===void 0&&(a&&a.computeProgram.usedTimes===0&&this._releaseProgram(a.computeProgram),u=new tM(o.computeShader,"compute",e.name,o.transforms,o.nodeAttributes),this.programs.compute.set(o.computeShader,u),n.createProgram(u));const c=this._getComputeCacheKey(e,u);let d=this.caches.get(c);d===void 0&&(a&&a.usedTimes===0&&this._releasePipeline(a),d=this._getComputePipeline(e,u,c,t)),d.usedTimes++,u.usedTimes++,i.version=e.version,i.pipeline=d}return i.pipeline}getForRender(e,t=null){const{backend:n}=this,i=this.get(e);if(this._needsRenderUpdate(e)){const a=i.pipeline;a&&(a.usedTimes--,a.vertexProgram.usedTimes--,a.fragmentProgram.usedTimes--);const o=e.getNodeBuilderState(),u=e.material?e.material.name:"";let c=this.programs.vertex.get(o.vertexShader);c===void 0&&(a&&a.vertexProgram.usedTimes===0&&this._releaseProgram(a.vertexProgram),c=new tM(o.vertexShader,"vertex",u),this.programs.vertex.set(o.vertexShader,c),n.createProgram(c));let d=this.programs.fragment.get(o.fragmentShader);d===void 0&&(a&&a.fragmentProgram.usedTimes===0&&this._releaseProgram(a.fragmentProgram),d=new tM(o.fragmentShader,"fragment",u),this.programs.fragment.set(o.fragmentShader,d),n.createProgram(d));const g=this._getRenderCacheKey(e,c,d);let v=this.caches.get(g);v===void 0?(a&&a.usedTimes===0&&this._releasePipeline(a),v=this._getRenderPipeline(e,c,d,g,t)):e.pipeline=v,v.usedTimes++,c.usedTimes++,d.usedTimes++,i.pipeline=v}return i.pipeline}delete(e){const t=this.get(e).pipeline;return t&&(t.usedTimes--,t.usedTimes===0&&this._releasePipeline(t),t.isComputePipeline?(t.computeProgram.usedTimes--,t.computeProgram.usedTimes===0&&this._releaseProgram(t.computeProgram)):(t.fragmentProgram.usedTimes--,t.vertexProgram.usedTimes--,t.vertexProgram.usedTimes===0&&this._releaseProgram(t.vertexProgram),t.fragmentProgram.usedTimes===0&&this._releaseProgram(t.fragmentProgram))),super.delete(e)}dispose(){super.dispose(),this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}updateForRender(e){this.getForRender(e)}_getComputePipeline(e,t,n,i){n=n||this._getComputeCacheKey(e,t);let a=this.caches.get(n);return a===void 0&&(a=new h5(n,t),this.caches.set(n,a),this.backend.createComputePipeline(a,i)),a}_getRenderPipeline(e,t,n,i,a){i=i||this._getRenderCacheKey(e,t,n);let o=this.caches.get(i);return o===void 0&&(o=new c5(i,t,n),this.caches.set(i,o),e.pipeline=o,this.backend.createRenderPipeline(e,a)),o}_getComputeCacheKey(e,t){return e.id+","+t.id}_getRenderCacheKey(e,t,n){return t.id+","+n.id+","+this.backend.getRenderCacheKey(e)}_releasePipeline(e){this.caches.delete(e.cacheKey)}_releaseProgram(e){const t=e.code,n=e.stage;this.programs[n].delete(t)}_needsComputeUpdate(e){const t=this.get(e);return t.pipeline===void 0||t.version!==e.version}_needsRenderUpdate(e){return this.get(e).pipeline===void 0||this.backend.needsRenderUpdate(e)}}class A5 extends Vm{constructor(e,t,n,i,a,o){super(),this.backend=e,this.textures=n,this.pipelines=a,this.attributes=i,this.nodes=t,this.info=o,this.pipelines.bindings=this}getForRender(e){const t=e.getBindings();for(const n of t){const i=this.get(n);i.bindGroup===void 0&&(this._init(n),this.backend.createBindings(n,t,0),i.bindGroup=n)}return t}getForCompute(e){const t=this.nodes.getForCompute(e).bindings;for(const n of t){const i=this.get(n);i.bindGroup===void 0&&(this._init(n),this.backend.createBindings(n,t,0),i.bindGroup=n)}return t}updateForCompute(e){this._updateBindings(this.getForCompute(e))}updateForRender(e){this._updateBindings(this.getForRender(e))}deleteForCompute(e){const t=this.nodes.getForCompute(e).bindings;for(const n of t)this.backend.deleteBindGroupData(n),this.delete(n)}deleteForRender(e){const t=e.getBindings();for(const n of t)this.backend.deleteBindGroupData(n),this.delete(n)}_updateBindings(e){for(const t of e)this._update(t,e)}_init(e){for(const t of e.bindings)if(t.isSampledTexture)this.textures.updateTexture(t.texture);else if(t.isSampler)this.textures.updateSampler(t.texture);else if(t.isStorageBuffer){const n=t.attribute,i=n.isIndirectStorageBufferAttribute?YA.INDIRECT:YA.STORAGE;this.attributes.update(n,i)}}_update(e,t){const{backend:n}=this;let i=!1,a=!0,o=0,u=0;for(const c of e.bindings)if(this.nodes.updateGroup(c)!==!1){if(c.isStorageBuffer){const g=c.attribute,v=g.isIndirectStorageBufferAttribute?YA.INDIRECT:YA.STORAGE;this.attributes.update(g,v)}if(c.isUniformBuffer)c.update()&&n.updateBinding(c);else if(c.isSampledTexture){const g=c.update(),v=c.texture,M=this.textures.get(v);if(g&&(this.textures.updateTexture(v),c.generation!==M.generation&&(c.generation=M.generation,i=!0,a=!1)),n.get(v).externalTexture!==void 0||M.isDefaultTexture?a=!1:(o=o*10+v.id,u+=v.version),v.isStorageTexture===!0&&v.mipmapsAutoUpdate===!0){const I=this.get(v);c.store===!0?I.needsMipmap=!0:this.textures.needsMipmaps(v)&&I.needsMipmap===!0&&(this.backend.generateMipmaps(v),I.needsMipmap=!1)}}else if(c.isSampler&&c.update()){const v=this.textures.updateSampler(c.texture);c.samplerKey!==v&&(c.samplerKey=v,i=!0,a=!1)}}i===!0&&this.backend.updateBindings(e,t,a?o:0,u)}}function p5(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.z!==e.z?s.z-e.z:s.id-e.id}function iI(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.z!==e.z?e.z-s.z:s.id-e.id}function sI(s){return(s.transmission>0||s.transmissionNode&&s.transmissionNode.isNode)&&s.side===he&&s.forceSinglePass===!1}class g5{constructor(e,t,n){this.renderItems=[],this.renderItemsIndex=0,this.opaque=[],this.transparentDoublePass=[],this.transparent=[],this.bundles=[],this.lightsNode=e.getNode(t,n),this.lightsArray=[],this.scene=t,this.camera=n,this.occlusionQueryCount=0}begin(){return this.renderItemsIndex=0,this.opaque.length=0,this.transparentDoublePass.length=0,this.transparent.length=0,this.bundles.length=0,this.lightsArray.length=0,this.occlusionQueryCount=0,this}getNextRenderItem(e,t,n,i,a,o,u){let c=this.renderItems[this.renderItemsIndex];return c===void 0?(c={id:e.id,object:e,geometry:t,material:n,groupOrder:i,renderOrder:e.renderOrder,z:a,group:o,clippingContext:u},this.renderItems[this.renderItemsIndex]=c):(c.id=e.id,c.object=e,c.geometry=t,c.material=n,c.groupOrder=i,c.renderOrder=e.renderOrder,c.z=a,c.group=o,c.clippingContext=u),this.renderItemsIndex++,c}push(e,t,n,i,a,o,u){const c=this.getNextRenderItem(e,t,n,i,a,o,u);e.occlusionTest===!0&&this.occlusionQueryCount++,n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(sI(n)&&this.transparentDoublePass.push(c),this.transparent.push(c)):this.opaque.push(c)}unshift(e,t,n,i,a,o,u){const c=this.getNextRenderItem(e,t,n,i,a,o,u);n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(sI(n)&&this.transparentDoublePass.unshift(c),this.transparent.unshift(c)):this.opaque.unshift(c)}pushBundle(e){this.bundles.push(e)}pushLight(e){this.lightsArray.push(e)}sort(e,t){this.opaque.length>1&&this.opaque.sort(e||p5),this.transparentDoublePass.length>1&&this.transparentDoublePass.sort(t||iI),this.transparent.length>1&&this.transparent.sort(t||iI)}finish(){this.lightsNode.setLights(this.lightsArray);for(let e=this.renderItemsIndex,t=this.renderItems.length;e>t,d=u.height>>t;let g=e.depthTexture||a[t];const v=e.depthBuffer===!0||e.stencilBuffer===!0;let M=!1;g===void 0&&v&&(g=new Al,g.format=e.stencilBuffer?w:Q,g.type=e.stencilBuffer?ar:st,g.image.width=c,g.image.height=d,g.image.depth=u.depth,g.renderTarget=e,g.isArrayTexture=e.multiview===!0&&u.depth>1,a[t]=g),(n.width!==u.width||u.height!==n.height)&&(M=!0,g&&(g.needsUpdate=!0,g.image.width=c,g.image.height=d,g.image.depth=g.isArrayTexture?g.image.depth:1)),n.width=u.width,n.height=u.height,n.textures=o,n.depthTexture=g||null,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,n.renderTarget=e,n.sampleCount!==i&&(M=!0,g&&(g.needsUpdate=!0),n.sampleCount=i);const B={sampleCount:i};if(e.isXRRenderTarget!==!0){for(let I=0;I{this._destroyRenderTarget(e)},e.addEventListener("dispose",n.onDispose))}updateTexture(e,t={}){const n=this.get(e);if(n.initialized===!0&&n.version===e.version)return;const i=e.isRenderTargetTexture||e.isDepthTexture||e.isFramebufferTexture,a=this.backend;if(i&&n.initialized===!0&&a.destroyTexture(e),e.isFramebufferTexture){const d=this.renderer.getRenderTarget();d?e.type=d.texture.type:e.type=es}const{width:o,height:u,depth:c}=this.getSize(e);if(t.width=o,t.height=u,t.depth=c,t.needsMipmaps=this.needsMipmaps(e),t.levels=t.needsMipmaps?this.getMipLevels(e,o,u):1,e.isCubeTexture&&e.mipmaps.length>0&&t.levels++,i||e.isStorageTexture===!0||e.isExternalTexture===!0)a.createTexture(e,t),n.generation=e.version;else if(e.version>0){const d=e.image;if(d===void 0)Lr("Renderer: Texture marked for update but image is undefined.");else if(d.complete===!1)Lr("Renderer: Texture marked for update but image is incomplete.");else{if(e.images){const v=[];for(const M of e.images)v.push(M);t.images=v}else t.image=d;(n.isDefaultTexture===void 0||n.isDefaultTexture===!0)&&(a.createTexture(e,t),n.isDefaultTexture=!1,n.generation=e.version),e.source.dataReady===!0&&a.updateTexture(e,t);const g=e.isStorageTexture===!0&&e.mipmapsAutoUpdate===!1;t.needsMipmaps&&e.mipmaps.length===0&&!g&&a.generateMipmaps(e),e.onUpdate&&e.onUpdate(e)}}else a.createDefaultTexture(e),n.isDefaultTexture=!0,n.generation=e.version;n.initialized!==!0&&(n.initialized=!0,n.generation=e.version,this.info.memory.textures++,e.isVideoTexture&&xr.enabled===!0&&xr.getTransfer(e.colorSpace)!==ws&&Lr("WebGPURenderer: Video textures must use a color space with a sRGB transfer function, e.g. SRGBColorSpace."),n.onDispose=()=>{this._destroyTexture(e)},e.addEventListener("dispose",n.onDispose)),n.version=e.version}updateSampler(e){return this.backend.updateSampler(e)}getSize(e,t=w5){let n=e.images?e.images[0]:e.image;return n?(n.image!==void 0&&(n=n.image),typeof HTMLVideoElement!="undefined"&&n instanceof HTMLVideoElement?(t.width=n.videoWidth||1,t.height=n.videoHeight||1,t.depth=1):typeof VideoFrame!="undefined"&&n instanceof VideoFrame?(t.width=n.displayWidth||1,t.height=n.displayHeight||1,t.depth=1):(t.width=n.width||1,t.height=n.height||1,t.depth=e.isCubeTexture?6:n.depth||1)):t.width=t.height=t.depth=1,t}getMipLevels(e,t,n){let i;return e.mipmaps.length>0?i=e.mipmaps.length:e.isCompressedTexture===!0?i=1:i=Math.floor(Math.log2(Math.max(t,n)))+1,i}needsMipmaps(e){return e.generateMipmaps===!0||e.mipmaps.length>0}_destroyRenderTarget(e){if(this.has(e)===!0){const t=this.get(e),n=t.textures,i=t.depthTexture;e.removeEventListener("dispose",t.onDispose);for(let a=0;anew oI(s,e);class E5 extends ta{static get type(){return"StackNode"}constructor(e=null){super(),this.nodes=[],this.outputNode=null,this.parent=e,this._currentCond=null,this._expressionNode=null,this._currentNode=null,this.isStackNode=!0}getElementType(e){return this.hasOutput?this.outputNode.getElementType(e):"void"}getNodeType(e){return this.hasOutput?this.outputNode.getNodeType(e):"void"}getMemberType(e,t){return this.hasOutput?this.outputNode.getMemberType(e,t):"void"}addToStack(e,t=this.nodes.length){return e.isNode!==!0?(Gr("TSL: Invalid node added to stack."),this):(this.nodes.splice(t,0,e),this)}addToStackBefore(e){const t=this._currentNode?this.nodes.indexOf(this._currentNode):0;return this.addToStack(e,t)}If(e,t){const n=new Av(t);return this._currentCond=ud(e,n),this.addToStack(this._currentCond)}ElseIf(e,t){const n=new Av(t),i=ud(e,n);return this._currentCond.elseNode=i,this._currentCond=i,this}Else(e){return this._currentCond.elseNode=new Av(e),this}Switch(e){return this._expressionNode=Ss(e),this}Case(...e){const t=[];if(e.length>=2)for(let u=0;u{if(this._currentNode=d,!(d.isVarNode&&d.isIntent(e)&&d.isAssign(e)!==!0)){if(i==="setup")d.build(e);else if(i==="analyze")d.build(e,this);else if(i==="generate"){const g=e.getDataFromNode(d,"any").stages,v=g&&g[e.shaderStage];if(d.isVarNode&&v&&v.length===1&&v[0]&&v[0].isStackNode)return;d.build(e,"void")}}},o=[...this.nodes];for(const d of o)a(d);this._currentNode=null;const u=this.nodes.filter(d=>o.indexOf(d)===-1);for(const d of u)a(d);let c;return this.hasOutput?c=this.outputNode.build(e,...t):c=super.build(e,...t),Iy(n),e.removeActiveStack(this),c}}const a_=to(E5).setParameterLength(0,1);function C5(s){return Object.entries(s).map(([e,t])=>typeof t=="string"?{name:e,type:t,atomic:!1}:{name:e,type:t.type,atomic:t.atomic||!1})}class T5 extends ta{static get type(){return"StructTypeNode"}constructor(e,t=null){super("struct"),this.membersLayout=C5(e),this.name=t,this.isStructLayoutNode=!0}getLength(){const e=Float32Array.BYTES_PER_ELEMENT;let t=1,n=0;for(const i of this.membersLayout){const a=i.type,o=jC(a),u=YC(a)/e;t=Math.max(t,u);const d=n%t%u;d!==0&&(n+=u-d),n+=o}return Math.ceil(n/t)*t}getMemberType(e,t){const n=this.membersLayout.find(i=>i.name===t);return n?n.type:"void"}getNodeType(e){return e.getStructTypeFromNode(this,this.membersLayout,this.name).name}setup(e){e.getStructTypeFromNode(this,this.membersLayout,this.name),e.addInclude(this)}generate(e){return this.getNodeType(e)}}class B5 extends ta{static get type(){return"StructNode"}constructor(e,t){super("vec3"),this.structTypeNode=e,this.values=t,this.isStructNode=!0}getNodeType(e){return this.structTypeNode.getNodeType(e)}getMemberType(e,t){return this.structTypeNode.getMemberType(e,t)}generate(e){const t=e.getVarFromNode(this),n=t.type,i=e.getPropertyName(t);return e.addLineFlowCode(`${i} = ${e.generateStruct(n,this.structTypeNode.membersLayout,this.values)}`,this),t.name}}const R5=(s,e=null)=>{const t=new T5(s,e),n=(...i)=>{let a=null;if(i.length>0)if(i[0].isNode){a={};const o=Object.keys(s);for(let u=0;unew qy(s,"int","float"),dI=s=>new qy(s,"uint","float"),P5=s=>new qy(s,"float","int"),L5=s=>new qy(s,"float","uint"),o_={};class mA extends Or{static get type(){return"BitcountNode"}constructor(e,t){super(e,t),this.isBitcountNode=!0}_resolveElementType(e,t,n){n==="int"?t.assign(hI(e,"uint")):t.assign(e)}_returnDataNode(e){switch(e){case"uint":return Fi;case"int":return Qn;case"uvec2":return b1;case"uvec3":return h0;case"uvec4":return M1;case"ivec2":return ch;case"ivec3":return _1;case"ivec4":return S1}}_createTrailingZerosBaseLayout(e,t){const n=this._returnDataNode(t);return or(([a])=>{const o=Fi(0);this._resolveElementType(a,o,t);const u=qt(o.bitAnd(k1(o))),d=dI(u).shiftRight(23).sub(127);return n(d)}).setLayout({name:e,type:t,inputs:[{name:"value",type:t}]})}_createLeadingZerosBaseLayout(e,t){const n=this._returnDataNode(t);return or(([a])=>{ra(a.equal(Fi(0)),()=>Fi(32));const o=Fi(0),u=Fi(0);return this._resolveElementType(a,o,t),ra(o.shiftRight(16).equal(0),()=>{u.addAssign(16),o.shiftLeftAssign(16)}),ra(o.shiftRight(24).equal(0),()=>{u.addAssign(8),o.shiftLeftAssign(8)}),ra(o.shiftRight(28).equal(0),()=>{u.addAssign(4),o.shiftLeftAssign(4)}),ra(o.shiftRight(30).equal(0),()=>{u.addAssign(2),o.shiftLeftAssign(2)}),ra(o.shiftRight(31).equal(0),()=>{u.addAssign(1)}),n(u)}).setLayout({name:e,type:t,inputs:[{name:"value",type:t}]})}_createOneBitsBaseLayout(e,t){const n=this._returnDataNode(t);return or(([a])=>{const o=Fi(0);this._resolveElementType(a,o,t),o.assign(o.sub(o.shiftRight(Fi(1)).bitAnd(Fi(1431655765)))),o.assign(o.bitAnd(Fi(858993459)).add(o.shiftRight(Fi(2)).bitAnd(Fi(858993459))));const u=o.add(o.shiftRight(Fi(4))).bitAnd(Fi(252645135)).mul(Fi(16843009)).shiftRight(Fi(24));return n(u)}).setLayout({name:e,type:t,inputs:[{name:"value",type:t}]})}_createMainLayout(e,t,n,i){const a=this._returnDataNode(t);return or(([u])=>{if(n===1)return a(i(u));{const c=a(0),d=["x","y","z","w"];for(let g=0;gv(n))()}}mA.COUNT_TRAILING_ZEROS="countTrailingZeros",mA.COUNT_LEADING_ZEROS="countLeadingZeros",mA.COUNT_ONE_BITS="countOneBits";const U5=ji(mA,mA.COUNT_TRAILING_ZEROS).setParameterLength(1),O5=ji(mA,mA.COUNT_LEADING_ZEROS).setParameterLength(1),D5=ji(mA,mA.COUNT_ONE_BITS).setParameterLength(1),k5=or(([s])=>{const e=s.toUint().mul(747796405).add(2891336453),t=e.shiftRight(e.shiftRight(28).add(4)).bitXor(e).mul(277803737);return t.shiftRight(22).bitXor(t).toFloat().mul(1/Bp(2,32))}),rM=(s,e)=>KA(no(4,s.mul(el(1,s))),e),V5=(s,e)=>s.lessThan(.5)?rM(s.mul(2),e).div(2):el(1,rM(no(el(1,s),2),e).div(2)),z5=(s,e,t)=>KA(dA(KA(s,e),$c(KA(s,e),KA(el(1,s),t))),1/e),G5=(s,e)=>sf(Cb.mul(e.mul(s).sub(1))).div(Cb.mul(e.mul(s).sub(1)));class iM extends pc{static get type(){return"PackFloatNode"}constructor(e,t){super(),this.vectorNode=t,this.encoding=e,this.isPackFloatNode=!0}getNodeType(){return"uint"}generate(e){const t=this.vectorNode.getNodeType(e);return`${e.getFloatPackingMethod(this.encoding)}(${this.vectorNode.build(e,t)})`}}const H5=ji(iM,"snorm").setParameterLength(1),Q5=ji(iM,"unorm").setParameterLength(1),W5=ji(iM,"float16").setParameterLength(1);class sM extends pc{static get type(){return"UnpackFloatNode"}constructor(e,t){super(),this.uintNode=t,this.encoding=e,this.isUnpackFloatNode=!0}getNodeType(){return"vec2"}generate(e){const t=this.uintNode.getNodeType(e);return`${e.getFloatUnpackingMethod(this.encoding)}(${this.uintNode.build(e,t)})`}}const Z5=ji(sM,"snorm").setParameterLength(1),K5=ji(sM,"unorm").setParameterLength(1),$5=ji(sM,"float16").setParameterLength(1),nm=or(([s])=>s.fract().sub(.5).abs()).setLayout({name:"tri",type:"float",inputs:[{name:"x",type:"float"}]}),X5=or(([s])=>Kn(nm(s.z.add(nm(s.y.mul(1)))),nm(s.z.add(nm(s.x.mul(1)))),nm(s.y.add(nm(s.x.mul(1)))))).setLayout({name:"tri3",type:"vec3",inputs:[{name:"p",type:"vec3"}]}),j5=or(([s,e,t])=>{const n=Kn(s).toVar(),i=qt(1.4).toVar(),a=qt(0).toVar(),o=Kn(n).toVar();return kl({start:qt(0),end:qt(3),type:"float",condition:"<="},()=>{const u=Kn(X5(o.mul(2))).toVar();n.addAssign(u.add(t.mul(qt(.1).mul(e)))),o.mulAssign(1.8),i.mulAssign(1.5),n.mulAssign(1.2);const c=qt(nm(n.z.add(nm(n.x.add(nm(n.y)))))).toVar();a.addAssign(c.div(i)),o.addAssign(.14)}),a}).setLayout({name:"triNoise3D",type:"float",inputs:[{name:"position",type:"vec3"},{name:"speed",type:"float"},{name:"time",type:"float"}]});class Y5 extends ta{static get type(){return"FunctionOverloadingNode"}constructor(e=[],...t){super(),this.functionNodes=e,this.parametersNodes=t,this._candidateFn=null,this.global=!0}getNodeType(e){return this.getCandidateFn(e).shaderNode.layout.type}getCandidateFn(e){const t=this.parametersNodes;let n=this._candidateFn;if(n===null){let i=null,a=-1;for(const o of this.functionNodes){const c=o.shaderNode.layout;if(c===null)throw new Error("FunctionOverloadingNode: FunctionNode must be a layout.");const d=c.inputs;if(t.length===d.length){let g=0;for(let v=0;va&&(i=o,a=g)}}this._candidateFn=n=i}return n}setup(e){return this.getCandidateFn(e)(...this.parametersNodes)}}const q5=to(Y5),hd=s=>(...e)=>q5(s,...e),Iv=va(0).setGroup(xa).onRenderUpdate(s=>s.time),J5=va(0).setGroup(xa).onRenderUpdate(s=>s.deltaTime),fI=va(0,"uint").setGroup(xa).onRenderUpdate(s=>s.frameId),eG=(s=Iv)=>s.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5),tG=(s=Iv)=>s.fract().round(),nG=(s=Iv)=>s.add(.5).fract().mul(2).sub(1).abs(),rG=(s=Iv)=>s.fract();function iG(s,e=null){return Kg(e,{getUV:s})}const sG=or(([s,e,t=Gi(.5)])=>Xy(s.sub(t),e).add(t)),aG=or(([s,e,t=Gi(.5)])=>{const n=s.sub(t),i=n.dot(n),o=i.mul(i).mul(e);return s.add(n.mul(o))}),oG=or(({position:s=null,horizontal:e=!0,vertical:t=!1})=>{let n;s!==null?(n=XA.toVar(),n[3][0]=s.x,n[3][1]=s.y,n[3][2]=s.z):n=XA;const i=AA.mul(n);return By(e)&&(i[0][0]=XA[0].length(),i[0][1]=0,i[0][2]=0),By(t)&&(i[1][0]=0,i[1][1]=XA[1].length(),i[1][2]=0),i[2][0]=0,i[2][1]=0,i[2][2]=1,of.mul(i).mul(vc)}),lG=or(([s=null])=>{const e=Cv();return Cv(RS(s)).sub(e).lessThan(0).select(Yg,s)});class uG extends ta{static get type(){return"SpriteSheetUVNode"}constructor(e,t=Zl(),n=qt(0)){super("vec2"),this.countNode=e,this.uvNode=t,this.frameNode=n}setup(){const{frameNode:e,uvNode:t,countNode:n}=this,{width:i,height:a}=n,o=e.mod(i.mul(a)).floor(),u=o.mod(i),c=a.sub(o.add(1).div(i).ceil()),d=n.reciprocal(),g=Gi(u,c);return t.add(g).mul(d)}}const cG=to(uG).setParameterLength(3),AI=or(([s,e=null,t=null,n=qt(1),i=vc,a=Of])=>{let o=a.abs().normalize();o=o.div(o.dot(Kn(1)));const u=i.yz.mul(n),c=i.zx.mul(n),d=i.xy.mul(n),g=s.value,v=e!==null?e.value:g,M=t!==null?t.value:g,B=xl(g,u).mul(o.x),I=xl(v,c).mul(o.y),ne=xl(M,d).mul(o.z);return $c(B,I,ne)}),hG=(...s)=>AI(...s),Nv=new Ec,w0=new le,Fv=new le,aM=new le,Jy=new di,l_=new le(0,0,-1),fg=new Ni,ex=new le,u_=new le,tx=new Ni,c_=new ce,h_=new Ns,dG=Yg.flipX();h_.depthTexture=new Al(1,1);let d_=!1;class oM extends ug{static get type(){return"ReflectorNode"}constructor(e={}){super(e.defaultTexture||h_.texture,dG),this._reflectorBaseNode=e.reflector||new fG(this,e),this._depthNode=null,this.setUpdateMatrix(!1)}get reflector(){return this._reflectorBaseNode}get target(){return this._reflectorBaseNode.target}getDepthNode(){if(this._depthNode===null){if(this._reflectorBaseNode.depth!==!0)throw new Error("THREE.ReflectorNode: Depth node can only be requested when the reflector is created with { depth: true }. ");this._depthNode=Ss(new oM({defaultTexture:h_.depthTexture,reflector:this._reflectorBaseNode}))}return this._depthNode}setup(e){return e.object.isQuadMesh||this._reflectorBaseNode.build(e),super.setup(e)}clone(){const e=new this.constructor(this.reflectorNode);return e.uvNode=this.uvNode,e.levelNode=this.levelNode,e.biasNode=this.biasNode,e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.offsetNode=this.offsetNode,e._reflectorBaseNode=this._reflectorBaseNode,e}dispose(){super.dispose(),this._reflectorBaseNode.dispose()}}class fG extends ta{static get type(){return"ReflectorBaseNode"}constructor(e,t={}){super();const{target:n=new yl,resolutionScale:i=1,generateMipmaps:a=!1,bounces:o=!0,depth:u=!1,samples:c=0}=t;this.textureNode=e,this.target=n,this.resolutionScale=i,t.resolution!==void 0&&(ki('ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".'),this.resolutionScale=t.resolution),this.generateMipmaps=a,this.bounces=o,this.depth=u,this.samples=c,this.updateBeforeType=o?Ao.RENDER:Ao.FRAME,this.virtualCameras=new WeakMap,this.renderTargets=new Map,this.forceUpdate=!1,this.hasOutput=!1}_updateResolution(e,t){const n=this.resolutionScale;t.getDrawingBufferSize(c_),e.setSize(Math.round(c_.width*n),Math.round(c_.height*n))}setup(e){return this._updateResolution(h_,e.renderer),super.setup(e)}dispose(){super.dispose();for(const e of this.renderTargets.values())e.dispose()}getVirtualCamera(e){let t=this.virtualCameras.get(e);return t===void 0&&(t=e.clone(),this.virtualCameras.set(e,t)),t}getRenderTarget(e){let t=this.renderTargets.get(e);return t===void 0&&(t=new Ns(0,0,{type:Wt,samples:this.samples}),this.generateMipmaps===!0&&(t.texture.minFilter=qr,t.texture.generateMipmaps=!0),this.depth===!0&&(t.depthTexture=new Al),this.renderTargets.set(e,t)),t}updateBefore(e){if(this.bounces===!1&&d_)return!1;d_=!0;const{scene:t,camera:n,renderer:i,material:a}=e,{target:o}=this,u=this.getVirtualCamera(n),c=this.getRenderTarget(u);i.getDrawingBufferSize(c_),this._updateResolution(c,i),Fv.setFromMatrixPosition(o.matrixWorld),aM.setFromMatrixPosition(n.matrixWorld),Jy.extractRotation(o.matrixWorld),w0.set(0,0,1),w0.applyMatrix4(Jy),ex.subVectors(Fv,aM);const d=ex.dot(w0)>0;let g=!1;if(d===!0&&this.forceUpdate===!1){if(this.hasOutput===!1){d_=!1;return}g=!0}ex.reflect(w0).negate(),ex.add(Fv),Jy.extractRotation(n.matrixWorld),l_.set(0,0,-1),l_.applyMatrix4(Jy),l_.add(aM),u_.subVectors(Fv,l_),u_.reflect(w0).negate(),u_.add(Fv),u.coordinateSystem=n.coordinateSystem,u.position.copy(ex),u.up.set(0,1,0),u.up.applyMatrix4(Jy),u.up.reflect(w0),u.lookAt(u_),u.near=n.near,u.far=n.far,u.updateMatrixWorld(),u.projectionMatrix.copy(n.projectionMatrix),Nv.setFromNormalAndCoplanarPoint(w0,Fv),Nv.applyMatrix4(u.matrixWorldInverse),fg.set(Nv.normal.x,Nv.normal.y,Nv.normal.z,Nv.constant);const v=u.projectionMatrix;tx.x=(Math.sign(fg.x)+v.elements[8])/v.elements[0],tx.y=(Math.sign(fg.y)+v.elements[9])/v.elements[5],tx.z=-1,tx.w=(1+v.elements[10])/v.elements[14],fg.multiplyScalar(1/fg.dot(tx));const M=0;v.elements[2]=fg.x,v.elements[6]=fg.y,v.elements[10]=i.coordinateSystem===To?fg.z-M:fg.z+1-M,v.elements[14]=fg.w,this.textureNode.value=c.texture,this.depth===!0&&(this.textureNode.getDepthNode().value=c.depthTexture),a.visible=!1;const B=i.getRenderTarget(),I=i.getMRT(),ne=i.autoClear;i.setMRT(null),i.setRenderTarget(c),i.autoClear=!0;const ee=t.name;t.name=(t.name||"Scene")+" [ Reflector ]",g?(i.clear(),this.hasOutput=!1):(i.render(t,u),this.hasOutput=!0),t.name=ee,i.setMRT(I),i.setRenderTarget(B),i.autoClear=ne,a.visible=!0,d_=!1,this.forceUpdate=!1}get resolution(){return ki('ReflectorNode: The "resolution" property has been renamed to "resolutionScale".'),this.resolutionScale}set resolution(e){ki('ReflectorNode: The "resolution" property has been renamed to "resolutionScale".'),this.resolutionScale=e}}const AG=s=>new oM(s),lM=new Pg(-1,1,1,-1,0,1);class pG extends ka{constructor(e=!1){super();const t=e===!1?[0,-1,0,1,2,1]:[0,2,0,0,2,0];this.setAttribute("position",new Ui([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Ui(t,2))}}const gG=new pG;class nx extends Il{constructor(e=null){super(gG,e),this.camera=lM,this.isQuadMesh=!0}renderAsync(e){return Pa(this,null,function*(){ki('QuadMesh: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.'),yield e.init(),e.render(this,lM)})}render(e){e.render(this,lM)}}const mG=new ce;class vG extends ug{static get type(){return"RTTNode"}constructor(e,t=null,n=null,i={type:Wt}){const a=new Ns(t,n,i);super(a.texture,Zl()),this.isRTTNode=!0,this.node=e,this.width=t,this.height=n,this.pixelRatio=1,this.renderTarget=a,this.textureNeedsUpdate=!0,this.autoUpdate=!0,this._rttNode=null,this._quadMesh=new nx(new yc),this.updateBeforeType=Ao.RENDER}get autoResize(){return this.width===null}setup(e){return this._rttNode=this.node.context(e.getSharedContext()),this._quadMesh.material.name="RTT",this._quadMesh.material.needsUpdate=!0,super.setup(e)}setSize(e,t){this.width=e,this.height=t;const n=e*this.pixelRatio,i=t*this.pixelRatio;this.renderTarget.setSize(n,i),this.textureNeedsUpdate=!0}setPixelRatio(e){this.pixelRatio=e,this.setSize(this.width,this.height)}updateBefore({renderer:e}){if(this.textureNeedsUpdate===!1&&this.autoUpdate===!1)return;if(this.textureNeedsUpdate=!1,this.autoResize===!0){const i=e.getPixelRatio(),a=e.getSize(mG),o=Math.floor(a.width*i),u=Math.floor(a.height*i);(o!==this.renderTarget.width||u!==this.renderTarget.height)&&(this.renderTarget.setSize(o,u),this.textureNeedsUpdate=!0)}let t="RTT";this.node.name&&(t=this.node.name+" [ "+t+" ]"),this._quadMesh.material.fragmentNode=this._rttNode,this._quadMesh.name=t;const n=e.getRenderTarget();e.setRenderTarget(this.renderTarget),this._quadMesh.render(e),e.setRenderTarget(n)}clone(){const e=new ug(this.value,this.uvNode,this.levelNode);return e.sampler=this.sampler,e.referenceNode=this,e}}const pI=(s,...e)=>Ss(new vG(Ss(s),...e)),yG=(s,...e)=>s.isSampleNode||s.isTextureNode?s:s.isPassNode?s.getTextureNode():pI(s,...e),Pv=or(([s,e,t],n)=>{let i;n.renderer.coordinateSystem===To?(s=Gi(s.x,s.y.oneMinus()).mul(2).sub(1),i=Ks(Kn(s,e),1)):i=Ks(Kn(s.x,s.y.oneMinus(),e).mul(2).sub(1),1);const a=Ks(t.mul(i));return a.xyz.div(a.w)}),xG=or(([s,e])=>{const t=e.mul(Ks(s,1)),n=t.xy.div(t.w).mul(.5).add(.5).toVar();return Gi(n.x,n.y.oneMinus())}),bG=or(([s,e,t])=>{const n=Xg(Rc(e)),i=ch(s.mul(n)).toVar(),a=Rc(e,i).toVar(),o=Rc(e,i.sub(ch(2,0))).toVar(),u=Rc(e,i.sub(ch(1,0))).toVar(),c=Rc(e,i.add(ch(1,0))).toVar(),d=Rc(e,i.add(ch(2,0))).toVar(),g=Rc(e,i.add(ch(0,2))).toVar(),v=Rc(e,i.add(ch(0,1))).toVar(),M=Rc(e,i.sub(ch(0,1))).toVar(),B=Rc(e,i.sub(ch(0,2))).toVar(),I=Su(el(qt(2).mul(u).sub(o),a)).toVar(),ne=Su(el(qt(2).mul(c).sub(d),a)).toVar(),ee=Su(el(qt(2).mul(v).sub(g),a)).toVar(),q=Su(el(qt(2).mul(M).sub(B),a)).toVar(),ye=Pv(s,a,t).toVar(),Ce=I.lessThan(ne).select(ye.sub(Pv(s.sub(Gi(qt(1).div(n.x),0)),u,t)),ye.negate().add(Pv(s.add(Gi(qt(1).div(n.x),0)),c,t))),ke=ee.lessThan(q).select(ye.sub(Pv(s.add(Gi(0,qt(1).div(n.y))),v,t)),ye.negate().add(Pv(s.sub(Gi(0,qt(1).div(n.y))),M,t)));return rf(Zg(Ce,ke))}),uM=or(([s])=>_p(qt(52.9829189).mul(_p(ZA(s,Gi(.06711056,.00583715)))))).setLayout({name:"interleavedGradientNoise",type:"float",inputs:[{name:"position",type:"vec2"}]}),Ep=or(([s,e,t])=>{const n=qt(2.399963229728653),i=Nd(qt(s).add(.5).div(qt(e))),a=qt(s).mul(n).add(t);return Gi(wp(a),sf(a)).mul(i)}).setLayout({name:"vogelDiskSample",type:"vec2",inputs:[{name:"sampleIndex",type:"int"},{name:"samplesCount",type:"int"},{name:"phi",type:"float"}]});class _G extends ta{static get type(){return"SampleNode"}constructor(e,t=null){super(),this.callback=e,this.uvNode=t,this.isSampleNode=!0}setup(){return this.sample(Zl())}sample(e){return this.callback(e)}}const wG=(s,e=null)=>new _G(s,Ss(e));class kf extends ta{static get type(){return"EventNode"}constructor(e,t){super("void"),this.eventType=e,this.callback=t,e===kf.OBJECT?this.updateType=Ao.OBJECT:e===kf.MATERIAL?this.updateType=Ao.RENDER:e===kf.BEFORE_OBJECT?this.updateBeforeType=Ao.OBJECT:e===kf.BEFORE_MATERIAL&&(this.updateBeforeType=Ao.RENDER)}update(e){this.callback(e)}updateBefore(e){this.callback(e)}}kf.OBJECT="object",kf.MATERIAL="material",kf.BEFORE_OBJECT="beforeObject",kf.BEFORE_MATERIAL="beforeMaterial";const f_=(s,e)=>new kf(s,e).toStack(),SG=s=>f_(kf.OBJECT,s),MG=s=>f_(kf.MATERIAL,s),EG=s=>f_(kf.BEFORE_OBJECT,s),CG=s=>f_(kf.BEFORE_MATERIAL,s);class TG extends Mh{constructor(e,t,n=Float32Array){const i=ArrayBuffer.isView(e)?e:new n(e*t);super(i,t),this.isStorageInstancedBufferAttribute=!0}}class BG extends wl{constructor(e,t,n=Float32Array){const i=ArrayBuffer.isView(e)?e:new n(e*t);super(i,t),this.isStorageBufferAttribute=!0}}const RG=(s,e="float")=>{let t,n;e.isStruct===!0?(t=e.layout.getLength(),n=Ey("float")):(t=l1(e),n=Ey(e));const i=new BG(s,t,n);return tm(i,e,s)},IG=(s,e="float")=>{let t,n;e.isStruct===!0?(t=e.layout.getLength(),n=Ey("float")):(t=l1(e),n=Ey(e));const i=new TG(s,t,n);return tm(i,e,s)};class NG extends ta{static get type(){return"PointUVNode"}constructor(){super("vec2"),this.isPointUVNode=!0}generate(){return"vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )"}}const FG=xs(NG),rx=new Ua,cM=new di;class Vf extends ta{static get type(){return"SceneNode"}constructor(e=Vf.BACKGROUND_BLURRINESS,t=null){super(),this.scope=e,this.scene=t}setup(e){const t=this.scope,n=this.scene!==null?this.scene:e.scene;let i;return t===Vf.BACKGROUND_BLURRINESS?i=su("backgroundBlurriness","float",n):t===Vf.BACKGROUND_INTENSITY?i=su("backgroundIntensity","float",n):t===Vf.BACKGROUND_ROTATION?i=va("mat4").setName("backgroundRotation").setGroup(xa).onRenderUpdate(()=>{const a=n.background;return a!==null&&a.isTexture&&a.mapping!==be?(rx.copy(n.backgroundRotation),rx.x*=-1,rx.y*=-1,rx.z*=-1,cM.makeRotationFromEuler(rx)):cM.identity(),cM}):Gr("SceneNode: Unknown scope:",t),i}}Vf.BACKGROUND_BLURRINESS="backgroundBlurriness",Vf.BACKGROUND_INTENSITY="backgroundIntensity",Vf.BACKGROUND_ROTATION="backgroundRotation";const gI=xs(Vf,Vf.BACKGROUND_BLURRINESS),hM=xs(Vf,Vf.BACKGROUND_INTENSITY),mI=xs(Vf,Vf.BACKGROUND_ROTATION);class PG extends ug{static get type(){return"StorageTextureNode"}constructor(e,t,n=null){super(e,t),this.storeNode=n,this.mipLevel=0,this.isStorageTextureNode=!0,this.access=od.WRITE_ONLY}getInputType(){return"storageTexture"}setup(e){super.setup(e);const t=e.getNodeProperties(this);return t.storeNode=this.storeNode,t}setAccess(e){return this.access=e,this}setMipLevel(e){return this.mipLevel=e,this}generate(e,t){let n;return this.storeNode!==null?n=this.generateStore(e):n=super.generate(e,t),n}toReadWrite(){return this.setAccess(od.READ_WRITE)}toReadOnly(){return this.setAccess(od.READ_ONLY)}toWriteOnly(){return this.setAccess(od.WRITE_ONLY)}generateStore(e){const t=e.getNodeProperties(this),{uvNode:n,storeNode:i,depthNode:a}=t,o=super.generate(e,"property"),u=n.build(e,this.value.is3DTexture===!0?"uvec3":"uvec2"),c=i.build(e,"vec4"),d=a?a.build(e,"int"):null,g=e.generateTextureStore(e,o,u,d,c);e.addLineFlowCode(g,this)}clone(){const e=super.clone();return e.storeNode=this.storeNode,e.mipLevel=this.mipLevel,e}}const vI=to(PG).setParameterLength(1,3),LG=(s,e,t)=>{const n=vI(s,e,t);return t!==null&&n.toStack(),n},UG=or(({texture:s,uv:e})=>{const n=Kn().toVar();return ra(e.x.lessThan(1e-4),()=>{n.assign(Kn(1,0,0))}).ElseIf(e.y.lessThan(1e-4),()=>{n.assign(Kn(0,1,0))}).ElseIf(e.z.lessThan(1e-4),()=>{n.assign(Kn(0,0,1))}).ElseIf(e.x.greaterThan(1-1e-4),()=>{n.assign(Kn(-1,0,0))}).ElseIf(e.y.greaterThan(1-1e-4),()=>{n.assign(Kn(0,-1,0))}).ElseIf(e.z.greaterThan(1-1e-4),()=>{n.assign(Kn(0,0,-1))}).Else(()=>{const a=s.sample(e.add(Kn(-.01,0,0))).r.sub(s.sample(e.add(Kn(.01,0,0))).r),o=s.sample(e.add(Kn(0,-.01,0))).r.sub(s.sample(e.add(Kn(0,.01,0))).r),u=s.sample(e.add(Kn(0,0,-.01))).r.sub(s.sample(e.add(Kn(0,0,.01))).r);n.assign(Kn(a,o,u))}),n.normalize()});class OG extends ug{static get type(){return"Texture3DNode"}constructor(e,t=null,n=null){super(e,t,n),this.isTexture3DNode=!0}getInputType(){return"texture3D"}getDefaultUV(){return Kn(.5,.5,.5)}setUpdateMatrix(){}setupUV(e,t){const n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0)&&(this.sampler?t=t.flipY():t=t.setY(Qn(Xg(this,this.levelNode).y).sub(t.y).sub(1))),t}generateUV(e,t){return t.build(e,this.sampler===!0?"vec3":"ivec3")}generateOffset(e,t){return t.build(e,"ivec3")}normal(e){return UG({texture:this,uv:e})}}const A_=to(OG).setParameterLength(1,3),DG=(...s)=>A_(...s).setSampler(!1),kG=(s,e,t)=>A_(s,e).level(t);class VG extends zb{static get type(){return"UserDataNode"}constructor(e,t,n=null){super(e,t,n),this.userData=n}updateReference(e){return this.reference=this.userData!==null?this.userData:e.object.userData,this.reference}}const zG=(s,e,t)=>new VG(s,e,t),yI=new WeakMap;class GG extends pc{static get type(){return"VelocityNode"}constructor(){super("vec2"),this.projectionMatrix=null,this.updateType=Ao.OBJECT,this.updateAfterType=Ao.OBJECT,this.previousModelWorldMatrix=va(new di),this.previousProjectionMatrix=va(new di).setGroup(xa),this.previousCameraViewMatrix=va(new di)}setProjectionMatrix(e){this.projectionMatrix=e}update({frameId:e,camera:t,object:n}){const i=bI(n);this.previousModelWorldMatrix.value.copy(i);const a=xI(t);a.frameId!==e&&(a.frameId=e,a.previousProjectionMatrix===void 0?(a.previousProjectionMatrix=new di,a.previousCameraViewMatrix=new di,a.currentProjectionMatrix=new di,a.currentCameraViewMatrix=new di,a.previousProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),a.previousCameraViewMatrix.copy(t.matrixWorldInverse)):(a.previousProjectionMatrix.copy(a.currentProjectionMatrix),a.previousCameraViewMatrix.copy(a.currentCameraViewMatrix)),a.currentProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),a.currentCameraViewMatrix.copy(t.matrixWorldInverse),this.previousProjectionMatrix.value.copy(a.previousProjectionMatrix),this.previousCameraViewMatrix.value.copy(a.previousCameraViewMatrix))}updateAfter({object:e}){bI(e).copy(e.matrixWorld)}setup(){const e=this.projectionMatrix===null?of:va(this.projectionMatrix),t=this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix),n=e.mul(cg).mul(vc),i=this.previousProjectionMatrix.mul(t).mul(Db),a=n.xy.div(n.w),o=i.xy.div(i.w);return el(a,o)}}function xI(s){let e=yI.get(s);return e===void 0&&(e={},yI.set(s,e)),e}function bI(s,e=0){const t=xI(s);let n=t[e];return n===void 0&&(t[e]=n=new di,t[e].copy(s.matrixWorld)),n}const HG=xs(GG),QG=or(([s])=>dM(s.rgb)),WG=or(([s,e=qt(1)])=>e.mix(dM(s.rgb),s.rgb)),ZG=or(([s,e=qt(1)])=>{const t=$c(s.r,s.g,s.b).div(3),n=s.r.max(s.g.max(s.b)),i=n.sub(t).mul(e).mul(-3);return zo(s.rgb,n,i)}),KG=or(([s,e=qt(1)])=>{const t=Kn(.57735,.57735,.57735),n=e.cos();return Kn(s.rgb.mul(n).add(t.cross(s.rgb).mul(e.sin()).add(t.mul(ZA(t,s.rgb).mul(n.oneMinus())))))}),dM=(s,e=Kn(xr.getLuminanceCoefficients(new le)))=>ZA(s,e),$G=or(([s,e=Kn(1),t=Kn(0),n=Kn(1),i=qt(1),a=Kn(xr.getLuminanceCoefficients(new le,No))])=>{const o=s.rgb.dot(Kn(a)),u=mc(s.rgb.mul(e).add(t),0).toVar(),c=u.pow(n).toVar();return ra(u.r.greaterThan(0),()=>{u.r.assign(c.r)}),ra(u.g.greaterThan(0),()=>{u.g.assign(c.g)}),ra(u.b.greaterThan(0),()=>{u.b.assign(c.b)}),u.assign(o.add(u.sub(o).mul(i))),Ks(u.rgb,s.a)});class XG extends pc{static get type(){return"PosterizeNode"}constructor(e,t){super(),this.sourceNode=e,this.stepsNode=t}setup(){const{sourceNode:e,stepsNode:t}=this;return e.mul(t).floor().div(t)}}const jG=to(XG).setParameterLength(2),p_=new ce;class _I extends ug{static get type(){return"PassTextureNode"}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}}class wI extends _I{static get type(){return"PassMultipleTextureNode"}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){const e=new this.constructor(this.passNode,this.textureName,this.previousTexture);return e.uvNode=this.uvNode,e.levelNode=this.levelNode,e.biasNode=this.biasNode,e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.offsetNode=this.offsetNode,e}}class Ag extends pc{static get type(){return"PassNode"}constructor(e,t,n,i={}){super("vec4"),this.scope=e,this.scene=t,this.camera=n,this.options=i,this._pixelRatio=1,this._width=1,this._height=1;const a=new Al;a.isRenderTargetTexture=!0,a.name="depth";const o=new Ns(this._width*this._pixelRatio,this._height*this._pixelRatio,rl({type:Wt},i));o.texture.name="output",o.depthTexture=a,this.renderTarget=o,this.overrideMaterial=null,this.transparent=!0,this.opaque=!0,this.contextNode=null,this._contextNodeCache=null,this._textures={output:o.texture,depth:a},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=va(0),this._cameraFar=va(0),this._mrt=null,this._layers=null,this._resolutionScale=1,this._viewport=null,this._scissor=null,this.isPassNode=!0,this.updateBeforeType=Ao.FRAME,this.global=!0}setResolutionScale(e){return this._resolutionScale=e,this}getResolutionScale(){return this._resolutionScale}setResolution(e){return Lr("PassNode: .setResolution() is deprecated. Use .setResolutionScale() instead."),this.setResolutionScale(e)}getResolution(){return Lr("PassNode: .getResolution() is deprecated. Use .getResolutionScale() instead."),this.getResolutionScale()}setLayers(e){return this._layers=e,this}getLayers(){return this._layers}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.name=e,this._textures[e]=t,this.renderTarget.textures.push(t)),t}getPreviousTexture(e){let t=this._previousTextures[e];return t===void 0&&(t=this.getTexture(e).clone(),this._previousTextures[e]=t),t}toggleTexture(e){const t=this._previousTextures[e];if(t!==void 0){const n=this._textures[e],i=this.renderTarget.textures.indexOf(n);this.renderTarget.textures[i]=t,this._textures[e]=t,this._previousTextures[e]=n,this._textureNodes[e].updateTexture(),this._previousTextureNodes[e].updateTexture()}}getTextureNode(e="output"){let t=this._textureNodes[e];return t===void 0&&(t=new wI(this,e),t.updateTexture(),this._textureNodes[e]=t),t}getPreviousTextureNode(e="output"){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),t=new wI(this,e,!0),t.updateTexture(),this._previousTextureNodes[e]=t),t}getViewZNode(e="depth"){let t=this._viewZNodes[e];if(t===void 0){const n=this._cameraNear,i=this._cameraFar;this._viewZNodes[e]=t=NS(this.getTextureNode(e),n,i)}return t}getLinearDepthNode(e="depth"){let t=this._linearDepthNodes[e];if(t===void 0){const n=this._cameraNear,i=this._cameraFar,a=this.getViewZNode(e);this._linearDepthNodes[e]=t=Ev(a,n,i)}return t}compileAsync(e){return Pa(this,null,function*(){const t=e.getRenderTarget(),n=e.getMRT();e.setRenderTarget(this.renderTarget),e.setMRT(this._mrt),yield e.compileAsync(this.scene,this.camera),e.setRenderTarget(t),e.setMRT(n)})}setup({renderer:e}){return this.renderTarget.samples=this.options.samples===void 0?e.samples:this.options.samples,this.renderTarget.texture.type=e.getOutputBufferType(),this.scope===Ag.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){const{renderer:t}=e,{scene:n}=this;let i,a;const o=t.getOutputRenderTarget();o&&o.isXRRenderTarget===!0?(a=1,i=t.xr.getCamera(),t.xr.updateCamera(i),p_.set(o.width,o.height)):(i=this.camera,a=t.getPixelRatio(),t.getSize(p_)),this._pixelRatio=a,this.setSize(p_.width,p_.height);const u=t.getRenderTarget(),c=t.getMRT(),d=t.autoClear,g=t.transparent,v=t.opaque,M=i.layers.mask,B=t.contextNode,I=n.overrideMaterial;this._cameraNear.value=i.near,this._cameraFar.value=i.far,this._layers!==null&&(i.layers.mask=this._layers.mask);for(const ee in this._previousTextures)this.toggleTexture(ee);this.overrideMaterial!==null&&(n.overrideMaterial=this.overrideMaterial),t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.autoClear=!0,t.transparent=this.transparent,t.opaque=this.opaque,this.contextNode!==null&&((this._contextNodeCache===null||this._contextNodeCache.version!==this.version)&&(this._contextNodeCache={version:this.version,context:Kg(rl(rl({},t.contextNode.getFlowContextData()),this.contextNode.getFlowContextData()))}),t.contextNode=this._contextNodeCache.context);const ne=n.name;n.name=this.name?this.name:n.name,t.render(n,i),n.name=ne,n.overrideMaterial=I,t.setRenderTarget(u),t.setMRT(c),t.autoClear=d,t.transparent=g,t.opaque=v,t.contextNode=B,i.layers.mask=M}setSize(e,t){this._width=e,this._height=t;const n=Math.floor(this._width*this._pixelRatio*this._resolutionScale),i=Math.floor(this._height*this._pixelRatio*this._resolutionScale);this.renderTarget.setSize(n,i),this._scissor!==null&&this.renderTarget.scissor.copy(this._scissor),this._viewport!==null&&this.renderTarget.viewport.copy(this._viewport)}setScissor(e,t,n,i){e===null?this._scissor=null:(this._scissor===null&&(this._scissor=new Ni),e.isVector4?this._scissor.copy(e):this._scissor.set(e,t,n,i),this._scissor.multiplyScalar(this._pixelRatio*this._resolutionScale).floor())}setViewport(e,t,n,i){e===null?this._viewport=null:(this._viewport===null&&(this._viewport=new Ni),e.isVector4?this._viewport.copy(e):this._viewport.set(e,t,n,i),this._viewport.multiplyScalar(this._pixelRatio*this._resolutionScale).floor())}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}}Ag.COLOR="color",Ag.DEPTH="depth";const YG=(s,e,t)=>new Ag(Ag.COLOR,s,e,t),qG=(s,e)=>new _I(s,e),JG=(s,e,t)=>new Ag(Ag.DEPTH,s,e,t);class eH extends Ag{static get type(){return"ToonOutlinePassNode"}constructor(e,t,n,i,a){super(Ag.COLOR,e,t),this.colorNode=n,this.thicknessNode=i,this.alphaNode=a,this._materialCache=new WeakMap,this.name="Outline Pass"}updateBefore(e){const{renderer:t}=e,n=t.getRenderObjectFunction();t.setRenderObjectFunction((i,a,o,u,c,d,g,v)=>{if((c.isMeshToonMaterial||c.isMeshToonNodeMaterial)&&c.wireframe===!1){const M=this._getOutlineMaterial(c);t.renderObject(i,a,o,u,M,d,g,v)}t.renderObject(i,a,o,u,c,d,g,v)}),super.updateBefore(e),t.setRenderObjectFunction(n)}_createMaterial(){const e=new yc;e.isMeshToonOutlineMaterial=!0,e.name="Toon_Outline",e.side=de;const t=Of.negate(),n=of.mul(cg),i=qt(1),a=n.mul(Ks(vc,1)),o=n.mul(Ks(vc.add(t),1)),u=rf(a.sub(o));return e.vertexNode=a.add(u.mul(this.thicknessNode).mul(a.w).mul(i)),e.colorNode=Ks(this.colorNode,this.alphaNode),e}_getOutlineMaterial(e){let t=this._materialCache.get(e);return t===void 0&&(t=this._createMaterial(),this._materialCache.set(e,t)),t}}const tH=(s,e,t=new Wr(0,0,0),n=.003,i=1)=>Ss(new eH(s,e,Ss(t),Ss(n),Ss(i))),SI=or(([s,e])=>s.mul(e).clamp()).setLayout({name:"linearToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),MI=or(([s,e])=>(s=s.mul(e),s.div(s.add(1)).clamp())).setLayout({name:"reinhardToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),EI=or(([s,e])=>{s=s.mul(e),s=s.sub(.004).max(0);const t=s.mul(s.mul(6.2).add(.5)),n=s.mul(s.mul(6.2).add(1.7)).add(.06);return t.div(n).pow(2.2)}).setLayout({name:"cineonToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),nH=or(([s])=>{const e=s.mul(s.add(.0245786)).sub(90537e-9),t=s.mul(s.add(.432951).mul(.983729)).add(.238081);return e.div(t)}),CI=or(([s,e])=>{const t=ld(.59719,.35458,.04823,.076,.90834,.01566,.0284,.13383,.83777),n=ld(1.60475,-.53108,-.07367,-.10208,1.10813,-.00605,-.00327,-.07276,1.07602);return s=s.mul(e).div(.6),s=t.mul(s),s=nH(s),s=n.mul(s),s.clamp()}).setLayout({name:"acesFilmicToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),rH=ld(Kn(1.6605,-.1246,-.0182),Kn(-.5876,1.1329,-.1006),Kn(-.0728,-.0083,1.1187)),iH=ld(Kn(.6274,.0691,.0164),Kn(.3293,.9195,.088),Kn(.0433,.0113,.8956)),sH=or(([s])=>{const e=Kn(s).toVar(),t=Kn(e.mul(e)).toVar(),n=Kn(t.mul(t)).toVar();return qt(15.5).mul(n.mul(t)).sub(no(40.14,n.mul(e))).add(no(31.96,n).sub(no(6.868,t.mul(e))).add(no(.4298,t).add(no(.1191,e).sub(.00232))))}),TI=or(([s,e])=>{const t=Kn(s).toVar(),n=ld(Kn(.856627153315983,.137318972929847,.11189821299995),Kn(.0951212405381588,.761241990602591,.0767994186031903),Kn(.0482516061458583,.101439036467562,.811302368396859)),i=ld(Kn(1.1271005818144368,-.1413297634984383,-.14132976349843826),Kn(-.11060664309660323,1.157823702216272,-.11060664309660294),Kn(-.016493938717834573,-.016493938717834257,1.2519364065950405)),a=qt(-12.47393),o=qt(4.026069);return t.mulAssign(e),t.assign(iH.mul(t)),t.assign(n.mul(t)),t.assign(mc(t,1e-10)),t.assign(sg(t)),t.assign(t.sub(a).div(o.sub(a))),t.assign(Sp(t,0,1)),t.assign(sH(t)),t.assign(i.mul(t)),t.assign(KA(mc(Kn(0),t),Kn(2.2))),t.assign(rH.mul(t)),t.assign(Sp(t,0,1)),t}).setLayout({name:"agxToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]}),BI=or(([s,e])=>{const t=qt(.76),n=qt(.15);s=s.mul(e);const i=Uf(s.r,Uf(s.g,s.b)),a=ud(i.lessThan(.08),i.sub(no(6.25,i.mul(i))),.04);s.subAssign(a);const o=mc(s.r,mc(s.g,s.b));ra(o.lessThan(t),()=>s);const u=el(1,t),c=el(1,u.mul(u).div(o.add(u.sub(t))));s.mulAssign(c.div(o));const d=el(1,dA(1,n.mul(o.sub(c)).add(1)));return zo(s,Kn(c),d)}).setLayout({name:"neutralToneMapping",type:"vec3",inputs:[{name:"color",type:"vec3"},{name:"exposure",type:"float"}]});class Wh extends ta{static get type(){return"CodeNode"}constructor(e="",t=[],n=""){super("code"),this.isCodeNode=!0,this.global=!0,this.code=e,this.includes=t,this.language=n}setIncludes(e){return this.includes=e,this}getIncludes(){return this.includes}generate(e){const t=this.getIncludes(e);for(const i of t)i.build(e);const n=e.getCodeFromNode(this,this.getNodeType(e));return n.code=this.code,n.code}serialize(e){super.serialize(e),e.code=this.code,e.language=this.language}deserialize(e){super.deserialize(e),this.code=e.code,this.language=e.language}}const g_=to(Wh).setParameterLength(1,3),aH=(s,e)=>g_(s,e,"js"),oH=(s,e)=>g_(s,e,"wgsl"),lH=(s,e)=>g_(s,e,"glsl");class RI extends Wh{static get type(){return"FunctionNode"}constructor(e="",t=[],n=""){super(e,t,n)}getNodeType(e){return this.getNodeFunction(e).type}getMemberType(e,t){const n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}getInputs(e){return this.getNodeFunction(e).inputs}getNodeFunction(e){const t=e.getDataFromNode(this);let n=t.nodeFunction;return n===void 0&&(n=e.parser.parseFunction(this.code),t.nodeFunction=n),n}generate(e,t){super.generate(e);const n=this.getNodeFunction(e),i=n.name,a=n.type,o=e.getCodeFromNode(this,a);i!==""&&(o.name=i);const u=e.getPropertyName(o),c=this.getNodeFunction(e).getCode(u);return o.code=c+` -`,t==="property"?u:e.format(`${u}()`,a,t)}}const II=(s,e=[],t="")=>{for(let a=0;an.call(...a);return i.functionNode=n,i},uH=(s,e)=>II(s,e,"glsl"),cH=(s,e)=>II(s,e,"wgsl");class hH extends ta{static get type(){return"ScriptableValueNode"}constructor(e=null){super(),this._value=e,this._cache=null,this.inputType=null,this.outputType=null,this.events=new bl,this.isScriptableValueNode=!0}get isScriptableOutputNode(){return this.outputType!==null}set value(e){this._value!==e&&(this._cache&&this.inputType==="URL"&&this.value.value instanceof ArrayBuffer&&(URL.revokeObjectURL(this._cache),this._cache=null),this._value=e,this.events.dispatchEvent({type:"change"}),this.refresh())}get value(){return this._value}refresh(){this.events.dispatchEvent({type:"refresh"})}getValue(){const e=this.value;if(e&&this._cache===null&&this.inputType==="URL"&&e.value instanceof ArrayBuffer)this._cache=URL.createObjectURL(new Blob([e.value]));else if(e&&e.value!==null&&e.value!==void 0&&((this.inputType==="URL"||this.inputType==="String")&&typeof e.value=="string"||this.inputType==="Number"&&typeof e.value=="number"||this.inputType==="Vector2"&&e.value.isVector2||this.inputType==="Vector3"&&e.value.isVector3||this.inputType==="Vector4"&&e.value.isVector4||this.inputType==="Color"&&e.value.isColor||this.inputType==="Matrix3"&&e.value.isMatrix3||this.inputType==="Matrix4"&&e.value.isMatrix4))return e.value;return this._cache||e}getNodeType(e){return this.value&&this.value.isNode?this.value.getNodeType(e):"float"}setup(){return this.value&&this.value.isNode?this.value:qt()}serialize(e){super.serialize(e),this.value!==null?this.inputType==="ArrayBuffer"?e.value=c1(this.value):e.value=this.value?this.value.toJSON(e.meta).uuid:null:e.value=null,e.inputType=this.inputType,e.outputType=this.outputType}deserialize(e){super.deserialize(e);let t=null;e.value!==null&&(e.inputType==="ArrayBuffer"?t=h1(e.value):e.inputType==="Texture"?t=e.meta.textures[e.value]:t=e.meta.nodes[e.value]||null),this.value=t,this.inputType=e.inputType,this.outputType=e.outputType}}const m_=to(hH).setParameterLength(1);class NI extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){const i=t(...n);return this.set(e,i),i}}}class dH{constructor(e){this.scriptableNode=e}get parameters(){return this.scriptableNode.parameters}get layout(){return this.scriptableNode.getLayout()}getInputLayout(e){return this.scriptableNode.getInputLayout(e)}get(e){const t=this.parameters[e];return t?t.getValue():null}}const v_=new NI;class fH extends ta{static get type(){return"ScriptableNode"}constructor(e=null,t={}){super(),this.codeNode=e,this.parameters=t,this._local=new NI,this._output=m_(null),this._outputs={},this._source=this.source,this._method=null,this._object=null,this._value=null,this._needsOutputUpdate=!0,this.onRefresh=this.onRefresh.bind(this),this.isScriptableNode=!0}get source(){return this.codeNode?this.codeNode.code:""}setLocal(e,t){return this._local.set(e,t)}getLocal(e){return this._local.get(e)}onRefresh(){this._refresh()}getInputLayout(e){for(const t of this.getLayout())if(t.inputType&&(t.id===e||t.name===e))return t}getOutputLayout(e){for(const t of this.getLayout())if(t.outputType&&(t.id===e||t.name===e))return t}setOutput(e,t){const n=this._outputs;return n[e]===void 0?n[e]=m_(t):n[e].value=t,this}getOutput(e){return this._outputs[e]}getParameter(e){return this.parameters[e]}setParameter(e,t){const n=this.parameters;return t&&t.isScriptableNode?(this.deleteParameter(e),n[e]=t,n[e].getDefaultOutput().events.addEventListener("refresh",this.onRefresh)):t&&t.isScriptableValueNode?(this.deleteParameter(e),n[e]=t,n[e].events.addEventListener("refresh",this.onRefresh)):n[e]===void 0?(n[e]=m_(t),n[e].events.addEventListener("refresh",this.onRefresh)):n[e].value=t,this}getValue(){return this.getDefaultOutput().getValue()}deleteParameter(e){let t=this.parameters[e];return t&&(t.isScriptableNode&&(t=t.getDefaultOutput()),t.events.removeEventListener("refresh",this.onRefresh)),this}clearParameters(){for(const e of Object.keys(this.parameters))this.deleteParameter(e);return this.needsUpdate=!0,this}call(e,...t){const i=this.getObject()[e];if(typeof i=="function")return i(...t)}callAsync(e,...t){return Pa(this,null,function*(){const i=this.getObject()[e];if(typeof i=="function")return i.constructor.name==="AsyncFunction"?yield i(...t):i(...t)})}getNodeType(e){return this.getDefaultOutputNode().getNodeType(e)}refresh(e=null){e!==null?this.getOutput(e).refresh():this._refresh()}getObject(){if(this.needsUpdate&&this.dispose(),this._object!==null)return this._object;const e=()=>this.refresh(),t=(d,g)=>this.setOutput(d,g),n=new dH(this),i=v_.get("THREE"),a=v_.get("TSL"),o=this.getMethod(),u=[n,this._local,v_,e,t,i,a];this._object=o(...u);const c=this._object.layout;if(c&&(c.cache===!1&&this._local.clear(),this._output.outputType=c.outputType||null,Array.isArray(c.elements)))for(const d of c.elements){const g=d.id||d.name;d.inputType&&(this.getParameter(g)===void 0&&this.setParameter(g,null),this.getParameter(g).inputType=d.inputType),d.outputType&&(this.getOutput(g)===void 0&&this.setOutput(g,null),this.getOutput(g).outputType=d.outputType)}return this._object}deserialize(e){super.deserialize(e);for(const t in this.parameters){let n=this.parameters[t];n.isScriptableNode&&(n=n.getDefaultOutput()),n.events.addEventListener("refresh",this.onRefresh)}}getLayout(){return this.getObject().layout}getDefaultOutputNode(){const e=this.getDefaultOutput().value;return e&&e.isNode?e:qt()}getDefaultOutput(){return this._exec()._output}getMethod(){if(this.needsUpdate&&this.dispose(),this._method!==null)return this._method;const e=["parameters","local","global","refresh","setOutput","THREE","TSL"],n=["layout","init","main","dispose"].join(", "),i="var "+n+`; var output = {}; -`,a=` -return { ...output, `+n+" };",o=i+this.codeNode.code+a;return this._method=new Function(...e,o),this._method}dispose(){this._method!==null&&(this._object&&typeof this._object.dispose=="function"&&this._object.dispose(),this._method=null,this._object=null,this._source=null,this._value=null,this._needsOutputUpdate=!0,this._output.value=null,this._outputs={})}setup(){return this.getDefaultOutputNode()}getCacheKey(e){const t=[dv(this.source),this.getDefaultOutputNode().getCacheKey(e)];for(const n in this.parameters)t.push(this.parameters[n].getCacheKey(e));return o0(t)}set needsUpdate(e){e===!0&&this.dispose()}get needsUpdate(){return this.source!==this._source}_exec(){return this.codeNode===null?this:(this._needsOutputUpdate===!0&&(this._value=this.call("main"),this._needsOutputUpdate=!1),this._output.value=this._value,this)}_refresh(){this.needsUpdate=!0,this._exec(),this._output.refresh()}}const AH=to(fH).setParameterLength(1,2);function FI(s){let e;const t=s.context.getViewZ;return t!==void 0&&(e=t(this)),(e||Oc.z).negate()}const fM=or(([s,e],t)=>{const n=FI(t);return fA(s,e,n)}),AM=or(([s],e)=>{const t=FI(e);return s.mul(s,t,t).negate().exp().oneMinus()}),ix=or(([s,e])=>Ks(e.toFloat().mix(gv.rgb,s.toVec3()),gv.a));function pH(s,e,t){return Lr('TSL: "rangeFog( color, near, far )" is deprecated. Use "fog( color, rangeFogFactor( near, far ) )" instead.'),ix(s,fM(e,t))}function gH(s,e){return Lr('TSL: "densityFog( color, density )" is deprecated. Use "fog( color, densityFogFactor( density ) )" instead.'),ix(s,AM(e))}let S0=null,M0=null;class mH extends ta{static get type(){return"RangeNode"}constructor(e=qt(),t=qt()){super(),this.minNode=e,this.maxNode=t}getVectorLength(e){const t=this.getConstNode(this.minNode),n=this.getConstNode(this.maxNode),i=e.getTypeLength(Qg(t.value)),a=e.getTypeLength(Qg(n.value));return i>a?i:a}getNodeType(e){return e.object.count>1?e.getTypeFromLength(this.getVectorLength(e)):"float"}getConstNode(e){let t=null;if(e.traverse(n=>{n.isConstNode===!0&&(t=n)}),t===null)throw new Error('THREE.TSL: No "ConstNode" found in node graph.');return t}setup(e){const t=e.object;let n=null;if(t.count>1){const i=this.getConstNode(this.minNode),a=this.getConstNode(this.maxNode),o=i.value,u=a.value,c=e.getTypeLength(Qg(o)),d=e.getTypeLength(Qg(u));S0=S0||new Ni,M0=M0||new Ni,S0.setScalar(0),M0.setScalar(0),c===1?S0.setScalar(o):o.isColor?S0.set(o.r,o.g,o.b,1):S0.set(o.x,o.y,o.z||0,o.w||0),d===1?M0.setScalar(u):u.isColor?M0.set(u.r,u.g,u.b,1):M0.set(u.x,u.y,u.z||0,u.w||0);const g=4,v=g*t.count,M=new Float32Array(v);for(let I=0;Inew yH(s,e),xH=sx("numWorkgroups","uvec3"),bH=sx("workgroupId","uvec3"),_H=sx("globalId","uvec3"),wH=sx("localId","uvec3"),SH=sx("subgroupSize","uint");class MH extends ta{constructor(e){super(),this.scope=e}generate(e){const{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(` // ${t}Barrier -`):e.addLineFlowCode(`${t}Barrier()`,this)}}const pM=to(MH),EH=()=>pM("workgroup").toStack(),CH=()=>pM("storage").toStack(),TH=()=>pM("texture").toStack();class BH extends u0{constructor(e,t){super(e,t),this.isWorkgroupInfoElementNode=!0}generate(e,t){let n;const i=e.context.assign;if(n=super.generate(e),i!==!0){const a=this.getNodeType(e);n=e.format(n,a,t)}return n}}class RH extends ta{constructor(e,t,n=0){super(t),this.bufferType=t,this.bufferCount=n,this.isWorkgroupInfoNode=!0,this.elementType=t,this.scope=e,this.name=""}setName(e){return this.name=e,this}label(e){return Lr('TSL: "label()" has been deprecated. Use "setName()" instead.'),this.setName(e)}setScope(e){return this.scope=e,this}getElementType(){return this.elementType}getInputType(){return`${this.scope}Array`}element(e){return new BH(this,e)}generate(e){const t=this.name!==""?this.name:`${this.scope}Array_${this.id}`;return e.getScopedArray(t,this.scope.toLowerCase(),this.bufferType,this.bufferCount)}}const IH=(s,e)=>new RH("Workgroup",s,e);class Ph extends ta{static get type(){return"AtomicFunctionNode"}constructor(e,t,n){super("uint"),this.method=e,this.pointerNode=t,this.valueNode=n,this.parents=!0}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){const t=e.getNodeProperties(this),n=t.parents,i=this.method,a=this.getNodeType(e),o=this.getInputType(e),u=this.pointerNode,c=this.valueNode,d=[];d.push(`&${u.build(e,o)}`),c!==null&&d.push(c.build(e,o));const g=`${e.getMethod(i,a)}( ${d.join(", ")} )`;if(n?n.length===1&&n[0].isStackNode===!0:!1)e.addLineFlowCode(g,this);else return t.constNode===void 0&&(t.constNode=$g(g,a).toConst()),t.constNode.build(e)}}Ph.ATOMIC_LOAD="atomicLoad",Ph.ATOMIC_STORE="atomicStore",Ph.ATOMIC_ADD="atomicAdd",Ph.ATOMIC_SUB="atomicSub",Ph.ATOMIC_MAX="atomicMax",Ph.ATOMIC_MIN="atomicMin",Ph.ATOMIC_AND="atomicAnd",Ph.ATOMIC_OR="atomicOr",Ph.ATOMIC_XOR="atomicXor";const NH=to(Ph),pg=(s,e,t)=>NH(s,e,t).toStack(),FH=s=>pg(Ph.ATOMIC_LOAD,s,null),PH=(s,e)=>pg(Ph.ATOMIC_STORE,s,e),LH=(s,e)=>pg(Ph.ATOMIC_ADD,s,e),UH=(s,e)=>pg(Ph.ATOMIC_SUB,s,e),OH=(s,e)=>pg(Ph.ATOMIC_MAX,s,e),DH=(s,e)=>pg(Ph.ATOMIC_MIN,s,e),kH=(s,e)=>pg(Ph.ATOMIC_AND,s,e),VH=(s,e)=>pg(Ph.ATOMIC_OR,s,e),zH=(s,e)=>pg(Ph.ATOMIC_XOR,s,e);class Is extends pc{static get type(){return"SubgroupFunctionNode"}constructor(e,t=null,n=null){super(),this.method=e,this.aNode=t,this.bNode=n}getInputType(e){const t=this.aNode?this.aNode.getNodeType(e):null,n=this.bNode?this.bNode.getNodeType(e):null,i=e.isMatrix(t)?0:e.getTypeLength(t),a=e.isMatrix(n)?0:e.getTypeLength(n);return i>a?t:n}getNodeType(e){const t=this.method;return t===Is.SUBGROUP_ELECT?"bool":t===Is.SUBGROUP_BALLOT?"uvec4":this.getInputType(e)}generate(e,t){const n=this.method,i=this.getNodeType(e),a=this.getInputType(e),o=this.aNode,u=this.bNode,c=[];if(n===Is.SUBGROUP_BROADCAST||n===Is.SUBGROUP_SHUFFLE||n===Is.QUAD_BROADCAST){const g=u.getNodeType(e);c.push(o.build(e,i),u.build(e,g==="float"?"int":i))}else n===Is.SUBGROUP_SHUFFLE_XOR||n===Is.SUBGROUP_SHUFFLE_DOWN||n===Is.SUBGROUP_SHUFFLE_UP?c.push(o.build(e,i),u.build(e,"uint")):(o!==null&&c.push(o.build(e,a)),u!==null&&c.push(u.build(e,a)));const d=c.length===0?"()":`( ${c.join(", ")} )`;return e.format(`${e.getMethod(n,i)}${d}`,i,t)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}}Is.SUBGROUP_ELECT="subgroupElect",Is.SUBGROUP_BALLOT="subgroupBallot",Is.SUBGROUP_ADD="subgroupAdd",Is.SUBGROUP_INCLUSIVE_ADD="subgroupInclusiveAdd",Is.SUBGROUP_EXCLUSIVE_AND="subgroupExclusiveAdd",Is.SUBGROUP_MUL="subgroupMul",Is.SUBGROUP_INCLUSIVE_MUL="subgroupInclusiveMul",Is.SUBGROUP_EXCLUSIVE_MUL="subgroupExclusiveMul",Is.SUBGROUP_AND="subgroupAnd",Is.SUBGROUP_OR="subgroupOr",Is.SUBGROUP_XOR="subgroupXor",Is.SUBGROUP_MIN="subgroupMin",Is.SUBGROUP_MAX="subgroupMax",Is.SUBGROUP_ALL="subgroupAll",Is.SUBGROUP_ANY="subgroupAny",Is.SUBGROUP_BROADCAST_FIRST="subgroupBroadcastFirst",Is.QUAD_SWAP_X="quadSwapX",Is.QUAD_SWAP_Y="quadSwapY",Is.QUAD_SWAP_DIAGONAL="quadSwapDiagonal",Is.SUBGROUP_BROADCAST="subgroupBroadcast",Is.SUBGROUP_SHUFFLE="subgroupShuffle",Is.SUBGROUP_SHUFFLE_XOR="subgroupShuffleXor",Is.SUBGROUP_SHUFFLE_UP="subgroupShuffleUp",Is.SUBGROUP_SHUFFLE_DOWN="subgroupShuffleDown",Is.QUAD_BROADCAST="quadBroadcast";const GH=ji(Is,Is.SUBGROUP_ELECT).setParameterLength(0),HH=ji(Is,Is.SUBGROUP_BALLOT).setParameterLength(1),QH=ji(Is,Is.SUBGROUP_ADD).setParameterLength(1),WH=ji(Is,Is.SUBGROUP_INCLUSIVE_ADD).setParameterLength(1),ZH=ji(Is,Is.SUBGROUP_EXCLUSIVE_AND).setParameterLength(1),KH=ji(Is,Is.SUBGROUP_MUL).setParameterLength(1),$H=ji(Is,Is.SUBGROUP_INCLUSIVE_MUL).setParameterLength(1),XH=ji(Is,Is.SUBGROUP_EXCLUSIVE_MUL).setParameterLength(1),jH=ji(Is,Is.SUBGROUP_AND).setParameterLength(1),YH=ji(Is,Is.SUBGROUP_OR).setParameterLength(1),qH=ji(Is,Is.SUBGROUP_XOR).setParameterLength(1),JH=ji(Is,Is.SUBGROUP_MIN).setParameterLength(1),eQ=ji(Is,Is.SUBGROUP_MAX).setParameterLength(1),tQ=ji(Is,Is.SUBGROUP_ALL).setParameterLength(0),nQ=ji(Is,Is.SUBGROUP_ANY).setParameterLength(0),rQ=ji(Is,Is.SUBGROUP_BROADCAST_FIRST).setParameterLength(2),iQ=ji(Is,Is.QUAD_SWAP_X).setParameterLength(1),sQ=ji(Is,Is.QUAD_SWAP_Y).setParameterLength(1),aQ=ji(Is,Is.QUAD_SWAP_DIAGONAL).setParameterLength(1),oQ=ji(Is,Is.SUBGROUP_BROADCAST).setParameterLength(2),lQ=ji(Is,Is.SUBGROUP_SHUFFLE).setParameterLength(2),uQ=ji(Is,Is.SUBGROUP_SHUFFLE_XOR).setParameterLength(2),cQ=ji(Is,Is.SUBGROUP_SHUFFLE_UP).setParameterLength(2),hQ=ji(Is,Is.SUBGROUP_SHUFFLE_DOWN).setParameterLength(2),dQ=ji(Is,Is.QUAD_BROADCAST).setParameterLength(1);let y_;function x_(s){y_=y_||new WeakMap;let e=y_.get(s);return e===void 0&&y_.set(s,e={}),e}function b_(s){const e=x_(s);return e.shadowMatrix||(e.shadowMatrix=va("mat4").setGroup(xa).onRenderUpdate(t=>((s.castShadow!==!0||t.renderer.shadowMap.enabled===!1)&&(s.shadow.camera.coordinateSystem!==t.camera.coordinateSystem&&(s.shadow.camera.coordinateSystem=t.camera.coordinateSystem,s.shadow.camera.updateProjectionMatrix()),s.shadow.updateMatrices(s)),s.shadow.matrix)))}function PI(s,e=pA){const t=b_(s).mul(e);return t.xyz.div(t.w)}function gM(s){const e=x_(s);return e.position||(e.position=va(new le).setGroup(xa).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(s.matrixWorld)))}function LI(s){const e=x_(s);return e.targetPosition||(e.targetPosition=va(new le).setGroup(xa).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(s.target.matrixWorld)))}function mM(s){const e=x_(s);return e.viewPosition||(e.viewPosition=va(new le).setGroup(xa).onRenderUpdate(({camera:t},n)=>{n.value=n.value||new le,n.value.setFromMatrixPosition(s.matrixWorld),n.value.applyMatrix4(t.matrixWorldInverse)}))}const vM=s=>AA.transformDirection(gM(s).sub(LI(s))),fQ=s=>s.sort((e,t)=>e.id-t.id),AQ=(s,e)=>{for(const t of e)if(t.isAnalyticLightNode&&t.light.id===s)return t;return null},yM=new WeakMap,ax=[];class xM extends ta{static get type(){return"LightsNode"}constructor(){super("vec3"),this.totalDiffuseNode=bp("vec3","totalDiffuse"),this.totalSpecularNode=bp("vec3","totalSpecular"),this.outgoingLightNode=bp("vec3","outgoingLight"),this._lights=[],this._lightNodes=null,this._lightNodesHash=null,this.global=!0}customCacheKey(){const e=this._lights;for(let n=0;n0}}const pQ=(s=[])=>new xM().setLights(s);class gQ extends ta{static get type(){return"ShadowBaseNode"}constructor(e){super(),this.light=e,this.updateBeforeType=Ao.RENDER,this.isShadowBaseNode=!0}setupShadowPosition({context:e,material:t}){bM.assign(t.receivedShadowPositionNode||e.shadowPositionWorld||pA)}}const bM=bp("vec3","shadowPositionWorld");function _M(s,e={}){return e.toneMapping=s.toneMapping,e.toneMappingExposure=s.toneMappingExposure,e.outputColorSpace=s.outputColorSpace,e.renderTarget=s.getRenderTarget(),e.activeCubeFace=s.getActiveCubeFace(),e.activeMipmapLevel=s.getActiveMipmapLevel(),e.renderObjectFunction=s.getRenderObjectFunction(),e.pixelRatio=s.getPixelRatio(),e.mrt=s.getMRT(),e.clearColor=s.getClearColor(e.clearColor||new Wr),e.clearAlpha=s.getClearAlpha(),e.autoClear=s.autoClear,e.scissorTest=s.getScissorTest(),e}function UI(s,e){return e=_M(s,e),s.setMRT(null),s.setRenderObjectFunction(null),s.setClearColor(0,1),s.autoClear=!0,e}function OI(s,e){s.toneMapping=e.toneMapping,s.toneMappingExposure=e.toneMappingExposure,s.outputColorSpace=e.outputColorSpace,s.setRenderTarget(e.renderTarget,e.activeCubeFace,e.activeMipmapLevel),s.setRenderObjectFunction(e.renderObjectFunction),s.setPixelRatio(e.pixelRatio),s.setMRT(e.mrt),s.setClearColor(e.clearColor,e.clearAlpha),s.autoClear=e.autoClear,s.setScissorTest(e.scissorTest)}function wM(s,e={}){return e.background=s.background,e.backgroundNode=s.backgroundNode,e.overrideMaterial=s.overrideMaterial,e}function DI(s,e){return e=wM(s,e),s.background=null,s.backgroundNode=null,s.overrideMaterial=null,e}function kI(s,e){s.background=e.background,s.backgroundNode=e.backgroundNode,s.overrideMaterial=e.overrideMaterial}function mQ(s,e,t={}){return t=_M(s,t),t=wM(e,t),t}function VI(s,e,t){return t=UI(s,t),t=DI(e,t),t}function zI(s,e,t){OI(s,t),kI(e,t)}var GX=Object.freeze({__proto__:null,resetRendererAndSceneState:VI,resetRendererState:UI,resetSceneState:DI,restoreRendererAndSceneState:zI,restoreRendererState:OI,restoreSceneState:kI,saveRendererAndSceneState:mQ,saveRendererState:_M,saveSceneState:wM});const __=new WeakMap,GI=or(({depthTexture:s,shadowCoord:e,depthLayer:t})=>{let n=xl(s,e.xy).setName("t_basic");return s.isArrayTexture&&(n=n.depth(t)),n.compare(e.z)}),HI=or(({depthTexture:s,shadowCoord:e,shadow:t,depthLayer:n})=>{const i=(g,v)=>{let M=xl(s,g);return s.isArrayTexture&&(M=M.depth(n)),M.compare(v)},a=su("mapSize","vec2",t).setGroup(xa),o=su("radius","float",t).setGroup(xa),u=Gi(1).div(a),c=o.mul(u.x),d=uM(m0.xy).mul(6.28318530718);return $c(i(e.xy.add(Ep(0,5,d).mul(c)),e.z),i(e.xy.add(Ep(1,5,d).mul(c)),e.z),i(e.xy.add(Ep(2,5,d).mul(c)),e.z),i(e.xy.add(Ep(3,5,d).mul(c)),e.z),i(e.xy.add(Ep(4,5,d).mul(c)),e.z)).mul(1/5)}),QI=or(({depthTexture:s,shadowCoord:e,shadow:t,depthLayer:n})=>{const i=(v,M)=>{let B=xl(s,v);return s.isArrayTexture&&(B=B.depth(n)),B.compare(M)},a=su("mapSize","vec2",t).setGroup(xa),o=Gi(1).div(a),u=o.x,c=o.y,d=e.xy,g=_p(d.mul(a).add(.5));return d.subAssign(g.mul(o)),$c(i(d,e.z),i(d.add(Gi(u,0)),e.z),i(d.add(Gi(0,c)),e.z),i(d.add(o),e.z),zo(i(d.add(Gi(u.negate(),0)),e.z),i(d.add(Gi(u.mul(2),0)),e.z),g.x),zo(i(d.add(Gi(u.negate(),c)),e.z),i(d.add(Gi(u.mul(2),c)),e.z),g.x),zo(i(d.add(Gi(0,c.negate())),e.z),i(d.add(Gi(0,c.mul(2))),e.z),g.y),zo(i(d.add(Gi(u,c.negate())),e.z),i(d.add(Gi(u,c.mul(2))),e.z),g.y),zo(zo(i(d.add(Gi(u.negate(),c.negate())),e.z),i(d.add(Gi(u.mul(2),c.negate())),e.z),g.x),zo(i(d.add(Gi(u.negate(),c.mul(2))),e.z),i(d.add(Gi(u.mul(2),c.mul(2))),e.z),g.x),g.y)).mul(1/9)}),WI=or(({depthTexture:s,shadowCoord:e,depthLayer:t})=>{let n=xl(s).sample(e.xy);s.isArrayTexture&&(n=n.depth(t)),n=n.rg;const i=n.x,a=mc(1e-7,n.y.mul(n.y)),o=Ib(e.z,i);ra(o.equal(1),()=>qt(1));const u=e.z.sub(i);let c=a.div(a.add(u.mul(u)));return c=Sp(el(c,.3).div(.65)),mc(o,c)}),vQ=or(([s,e,t])=>{let n=pA.sub(s).length();return n=n.sub(e).div(t.sub(e)),n=n.saturate(),n}),yQ=s=>{const e=s.shadow.camera,t=su("near","float",e).setGroup(xa),n=su("far","float",e).setGroup(xa),i=VB(s);return vQ(i,t,n)},ZI=s=>{let e=__.get(s);if(e===void 0){const t=s.isPointLight?yQ(s):null;e=new yc,e.colorNode=Ks(0,0,0,1),e.depthNode=t,e.isShadowPassMaterial=!0,e.name="ShadowMaterial",e.fog=!1,__.set(s,e)}return e},KI=s=>{const e=__.get(s);e!==void 0&&(e.dispose(),__.delete(s))},$I=new Mp,Lv=[],XI=(s,e,t,n)=>{Lv[0]=s,Lv[1]=e;let i=$I.get(Lv);return(i===void 0||i.shadowType!==t||i.useVelocity!==n)&&(i=(a,o,u,c,d,g,...v)=>{(a.castShadow===!0||a.receiveShadow&&t===X)&&(n&&(u1(a).useVelocity=!0),a.onBeforeShadow(s,a,u,e.camera,c,o.overrideMaterial,g),s.renderObject(a,o,u,c,d,g,...v),a.onAfterShadow(s,a,u,e.camera,c,o.overrideMaterial,g))},i.shadowType=t,i.useVelocity=n,$I.set(Lv,i)),Lv[0]=null,Lv[1]=null,i},xQ=or(({samples:s,radius:e,size:t,shadowPass:n,depthLayer:i})=>{const a=qt(0).toVar("meanVertical"),o=qt(0).toVar("squareMeanVertical"),u=s.lessThanEqual(qt(1)).select(qt(0),qt(2).div(s.sub(1))),c=s.lessThanEqual(qt(1)).select(qt(0),qt(-1));kl({start:Qn(0),end:Qn(s),type:"int",condition:"<"},({i:g})=>{const v=c.add(qt(g).mul(u));let M=n.sample($c(m0.xy,Gi(0,v).mul(e)).div(t));n.value.isArrayTexture&&(M=M.depth(i)),M=M.x,a.addAssign(M),o.addAssign(M.mul(M))}),a.divAssign(s),o.divAssign(s);const d=Nd(o.sub(a.mul(a)).max(0));return Gi(a,d)}),bQ=or(({samples:s,radius:e,size:t,shadowPass:n,depthLayer:i})=>{const a=qt(0).toVar("meanHorizontal"),o=qt(0).toVar("squareMeanHorizontal"),u=s.lessThanEqual(qt(1)).select(qt(0),qt(2).div(s.sub(1))),c=s.lessThanEqual(qt(1)).select(qt(0),qt(-1));kl({start:Qn(0),end:Qn(s),type:"int",condition:"<"},({i:g})=>{const v=c.add(qt(g).mul(u));let M=n.sample($c(m0.xy,Gi(v,0).mul(e)).div(t));n.value.isArrayTexture&&(M=M.depth(i)),a.addAssign(M.x),o.addAssign($c(M.y.mul(M.y),M.x.mul(M.x)))}),a.divAssign(s),o.divAssign(s);const d=Nd(o.sub(a.mul(a)).max(0));return Gi(a,d)}),_Q=[GI,HI,QI,WI];let SM;const w_=new nx;class jI extends gQ{static get type(){return"ShadowNode"}constructor(e,t=null){super(e),this.shadow=t||e.shadow,this.shadowMap=null,this.vsmShadowMapVertical=null,this.vsmShadowMapHorizontal=null,this.vsmMaterialVertical=null,this.vsmMaterialHorizontal=null,this._node=null,this._currentShadowType=null,this._cameraFrameId=new WeakMap,this.isShadowNode=!0,this.depthLayer=0}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:i,shadow:a,depthLayer:o}){const u=i.x.greaterThanEqual(0).and(i.x.lessThanEqual(1)).and(i.y.greaterThanEqual(0)).and(i.y.lessThanEqual(1)).and(i.z.lessThanEqual(1)),c=t({depthTexture:n,shadowCoord:i,shadow:a,depthLayer:o});return u.select(c,qt(1))}setupShadowCoord(e,t){const{shadow:n}=this,{renderer:i}=e,a=su("bias","float",n).setGroup(xa);let o=t,u;if(n.camera.isOrthographicCamera||i.logarithmicDepthBuffer!==!0)o=o.xyz.div(o.w),u=o.z,i.coordinateSystem===To&&(u=u.mul(2).sub(1));else{const c=o.w;o=o.xy.div(c);const d=su("near","float",n.camera).setGroup(xa),g=su("far","float",n.camera).setGroup(xa);u=FS(c.negate(),d,g)}return o=Kn(o.x,o.y.oneMinus(),u.add(a)),o}getShadowFilterFn(e){return _Q[e]}setupRenderTarget(e,t){const n=new Al(e.mapSize.width,e.mapSize.height);n.name="ShadowDepthTexture",n.compareFunction=oo;const i=t.createRenderTarget(e.mapSize.width,e.mapSize.height);return i.texture.name="ShadowMap",i.texture.type=e.mapType,i.depthTexture=n,{shadowMap:i,depthTexture:n}}setupShadow(e){const{renderer:t,camera:n}=e,{light:i,shadow:a}=this,o=t.shadowMap.type,{depthTexture:u,shadowMap:c}=this.setupRenderTarget(a,e);if(a.camera.coordinateSystem=n.coordinateSystem,a.camera.updateProjectionMatrix(),o===X&&a.isPointLightShadow!==!0){u.compareFunction=null,c.depth>1?(c._vsmShadowMapVertical||(c._vsmShadowMapVertical=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:ze,type:Wt,depth:c.depth,depthBuffer:!1}),c._vsmShadowMapVertical.texture.name="VSMVertical"),this.vsmShadowMapVertical=c._vsmShadowMapVertical,c._vsmShadowMapHorizontal||(c._vsmShadowMapHorizontal=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:ze,type:Wt,depth:c.depth,depthBuffer:!1}),c._vsmShadowMapHorizontal.texture.name="VSMHorizontal"),this.vsmShadowMapHorizontal=c._vsmShadowMapHorizontal):(this.vsmShadowMapVertical=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:ze,type:Wt,depthBuffer:!1}),this.vsmShadowMapHorizontal=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:ze,type:Wt,depthBuffer:!1}));let Ce=xl(u);u.isArrayTexture&&(Ce=Ce.depth(this.depthLayer));let ke=xl(this.vsmShadowMapVertical.texture);u.isArrayTexture&&(ke=ke.depth(this.depthLayer));const nt=su("blurSamples","float",a).setGroup(xa),Ye=su("radius","float",a).setGroup(xa),ht=su("mapSize","vec2",a).setGroup(xa);let Rt=this.vsmMaterialVertical||(this.vsmMaterialVertical=new yc);Rt.fragmentNode=xQ({samples:nt,radius:Ye,size:ht,shadowPass:Ce,depthLayer:this.depthLayer}).context(e.getSharedContext()),Rt.name="VSMVertical",Rt=this.vsmMaterialHorizontal||(this.vsmMaterialHorizontal=new yc),Rt.fragmentNode=bQ({samples:nt,radius:Ye,size:ht,shadowPass:ke,depthLayer:this.depthLayer}).context(e.getSharedContext()),Rt.name="VSMHorizontal"}const d=su("intensity","float",a).setGroup(xa),g=su("normalBias","float",a).setGroup(xa),v=b_(i).mul(bM.add(Om.mul(g))),M=this.setupShadowCoord(e,v),B=a.filterNode||this.getShadowFilterFn(t.shadowMap.type)||null;if(B===null)throw new Error("THREE.WebGPURenderer: Shadow map type not supported yet.");const I=o===X&&a.isPointLightShadow!==!0?this.vsmShadowMapHorizontal.texture:u,ne=this.setupShadowFilter(e,{filterFn:B,shadowTexture:c.texture,depthTexture:I,shadowCoord:M,shadow:a,depthLayer:this.depthLayer});let ee;c.texture.isCubeTexture?ee=lf(c.texture,M.xyz):(ee=xl(c.texture,M),u.isArrayTexture&&(ee=ee.depth(this.depthLayer)));const q=zo(1,ne.rgb.mix(ee,1),d.mul(ee.a)).toVar();this.shadowMap=c,this.shadow.map=c;const ye=`${this.light.type} Shadow [ ${this.light.name||"ID: "+this.light.id} ]`;return q.toInspector(`${ye} / Color`,()=>this.shadowMap.texture.isCubeTexture?lf(this.shadowMap.texture):xl(this.shadowMap.texture)).toInspector(`${ye} / Depth`,()=>this.shadowMap.texture.isCubeTexture?lf(this.shadowMap.texture).r.oneMinus():Rc(this.shadowMap.depthTexture,Zl().mul(Xg(xl(this.shadowMap.depthTexture)))).r.oneMinus())}setup(e){if(e.renderer.shadowMap.enabled!==!1)return or(()=>{const t=e.renderer.shadowMap.type;this._currentShadowType!==t&&(this._reset(),this._node=null);let n=this._node;return this.setupShadowPosition(e),n===null&&(this._node=n=this.setupShadow(e),this._currentShadowType=t),e.material.shadowNode&&Lr('NodeMaterial: ".shadowNode" is deprecated. Use ".castShadowNode" instead.'),e.material.receivedShadowNode&&(n=e.material.receivedShadowNode(n)),n})()}renderShadow(e){const{shadow:t,shadowMap:n,light:i}=this,{renderer:a,scene:o}=e;t.updateMatrices(i),n.setSize(t.mapSize.width,t.mapSize.height,n.depth);const u=o.name;o.name=`Shadow Map [ ${i.name||"ID: "+i.id} ]`,a.render(o,t.camera),o.name=u}updateShadow(e){const{shadowMap:t,light:n,shadow:i}=this,{renderer:a,scene:o,camera:u}=e,c=a.shadowMap.type,d=t.depthTexture.version;this._depthVersionCached=d;const g=i.camera.layers.mask;i.camera.layers.mask&4294967294||(i.camera.layers.mask=u.layers.mask);const v=a.getRenderObjectFunction(),M=a.getMRT(),B=M?M.has("velocity"):!1;SM=VI(a,o,SM),o.overrideMaterial=ZI(n),a.setRenderObjectFunction(XI(a,i,c,B)),a.setClearColor(0,0),a.setRenderTarget(t),this.renderShadow(e),a.setRenderObjectFunction(v),c===X&&i.isPointLightShadow!==!0&&this.vsmPass(a),i.camera.layers.mask=g,zI(a,o,SM)}vsmPass(e){const{shadow:t}=this,n=this.shadowMap.depth;this.vsmShadowMapVertical.setSize(t.mapSize.width,t.mapSize.height,n),this.vsmShadowMapHorizontal.setSize(t.mapSize.width,t.mapSize.height,n),e.setRenderTarget(this.vsmShadowMapVertical),w_.material=this.vsmMaterialVertical,w_.render(e),e.setRenderTarget(this.vsmShadowMapHorizontal),w_.material=this.vsmMaterialHorizontal,w_.render(e)}dispose(){this._reset(),super.dispose()}_reset(){this._currentShadowType=null,KI(this.light),this.shadowMap&&(this.shadowMap.dispose(),this.shadowMap=null),this.vsmShadowMapVertical!==null&&(this.vsmShadowMapVertical.dispose(),this.vsmShadowMapVertical=null,this.vsmMaterialVertical.dispose(),this.vsmMaterialVertical=null),this.vsmShadowMapHorizontal!==null&&(this.vsmShadowMapHorizontal.dispose(),this.vsmShadowMapHorizontal=null,this.vsmMaterialHorizontal.dispose(),this.vsmMaterialHorizontal=null)}updateBefore(e){const{shadow:t}=this;let n=t.needsUpdate||t.autoUpdate;n&&(this._cameraFrameId[e.camera]===e.frameId&&(n=!1),this._cameraFrameId[e.camera]=e.frameId),n&&(this.updateShadow(e),this.shadowMap.depthTexture.version===this._depthVersionCached&&(t.needsUpdate=!1))}}const YI=(s,e)=>new jI(s,e),wQ=new Wr,qI=new di,ox=new le,MM=new le,SQ=[new le(1,0,0),new le(-1,0,0),new le(0,-1,0),new le(0,1,0),new le(0,0,1),new le(0,0,-1)],MQ=[new le(0,-1,0),new le(0,-1,0),new le(0,0,-1),new le(0,0,1),new le(0,-1,0),new le(0,-1,0)],EQ=[new le(1,0,0),new le(-1,0,0),new le(0,1,0),new le(0,-1,0),new le(0,0,1),new le(0,0,-1)],CQ=[new le(0,-1,0),new le(0,-1,0),new le(0,0,1),new le(0,0,-1),new le(0,-1,0),new le(0,-1,0)],JI=or(({depthTexture:s,bd3D:e,dp:t})=>lf(s,e).compare(t)),eN=or(({depthTexture:s,bd3D:e,dp:t,shadow:n})=>{const i=su("radius","float",n).setGroup(xa),a=su("mapSize","vec2",n).setGroup(xa),o=i.div(a.x),u=Su(e),c=rf(Zg(e,u.x.greaterThan(u.z).select(Kn(0,1,0),Kn(1,0,0)))),d=Zg(e,c),g=uM(m0.xy).mul(6.28318530718),v=Ep(0,5,g),M=Ep(1,5,g),B=Ep(2,5,g),I=Ep(3,5,g),ne=Ep(4,5,g);return lf(s,e.add(c.mul(v.x).add(d.mul(v.y)).mul(o))).compare(t).add(lf(s,e.add(c.mul(M.x).add(d.mul(M.y)).mul(o))).compare(t)).add(lf(s,e.add(c.mul(B.x).add(d.mul(B.y)).mul(o))).compare(t)).add(lf(s,e.add(c.mul(I.x).add(d.mul(I.y)).mul(o))).compare(t)).add(lf(s,e.add(c.mul(ne.x).add(d.mul(ne.y)).mul(o))).compare(t)).mul(1/5)}),TQ=or(({filterFn:s,depthTexture:e,shadowCoord:t,shadow:n})=>{const i=t.xyz.toVar(),a=i.length(),o=va("float").setGroup(xa).onRenderUpdate(()=>n.camera.near),u=va("float").setGroup(xa).onRenderUpdate(()=>n.camera.far),c=su("bias","float",n).setGroup(xa),d=qt(1).toVar();return ra(a.sub(u).lessThanEqual(0).and(a.sub(o).greaterThanEqual(0)),()=>{const g=a.sub(o).div(u.sub(o)).toVar();g.addAssign(c);const v=i.normalize();d.assign(s({depthTexture:e,bd3D:v,dp:g,shadow:n}))}),d});class BQ extends jI{static get type(){return"PointShadowNode"}constructor(e,t=null){super(e,t)}getShadowFilterFn(e){return e===P?JI:eN}setupShadowCoord(e,t){return t}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:i,shadow:a}){return TQ({filterFn:t,depthTexture:n,shadowCoord:i,shadow:a})}setupRenderTarget(e,t){const n=new sA(e.mapSize.width);n.name="PointShadowDepthTexture",n.compareFunction=oo;const i=t.createCubeRenderTarget(e.mapSize.width);return i.texture.name="PointShadowMap",i.depthTexture=n,{shadowMap:i,depthTexture:n}}renderShadow(e){const{shadow:t,shadowMap:n,light:i}=this,{renderer:a,scene:o}=e,u=t.camera,c=t.matrix,d=a.coordinateSystem===To,g=d?SQ:EQ,v=d?MQ:CQ;n.setSize(t.mapSize.width,t.mapSize.width);const M=a.autoClear,B=a.getClearColor(wQ),I=a.getClearAlpha();a.autoClear=!1,a.setClearColor(t.clearColor,t.clearAlpha);for(let ne=0;ne<6;ne++){a.setRenderTarget(n,ne),a.clear();const ee=i.distance||u.far;ee!==u.far&&(u.far=ee,u.updateProjectionMatrix()),ox.setFromMatrixPosition(i.matrixWorld),u.position.copy(ox),MM.copy(u.position),MM.add(g[ne]),u.up.copy(v[ne]),u.lookAt(MM),u.updateMatrixWorld(),c.makeTranslation(-ox.x,-ox.y,-ox.z),qI.multiplyMatrices(u.projectionMatrix,u.matrixWorldInverse),t._frustum.setFromProjectionMatrix(qI,u.coordinateSystem,u.reversedDepth);const q=o.name;o.name=`Point Light Shadow [ ${i.name||"ID: "+i.id} ] - Face ${ne+1}`,a.render(o,u),o.name=q}a.autoClear=M,a.setClearColor(B,I)}}const tN=(s,e)=>new BQ(s,e);class E0 extends Sv{static get type(){return"AnalyticLightNode"}constructor(e=null){super(),this.light=e,this.color=new Wr,this.colorNode=e&&e.colorNode||va(this.color).setGroup(xa),this.baseColorNode=null,this.shadowNode=null,this.shadowColorNode=null,this.isAnalyticLightNode=!0,this.updateType=Ao.FRAME,e&&e.shadow&&(this._shadowDisposeListener=()=>{this.disposeShadow()},e.addEventListener("dispose",this._shadowDisposeListener))}dispose(){this._shadowDisposeListener&&this.light.removeEventListener("dispose",this._shadowDisposeListener),super.dispose()}disposeShadow(){this.shadowNode!==null&&(this.shadowNode.dispose(),this.shadowNode=null),this.shadowColorNode=null,this.baseColorNode!==null&&(this.colorNode=this.baseColorNode,this.baseColorNode=null)}getHash(){return this.light.uuid}getLightVector(e){return mM(this.light).sub(e.context.positionView||Oc)}setupDirect(){}setupDirectRectArea(){}setupShadowNode(){return YI(this.light)}setupShadow(e){const{renderer:t}=e;if(t.shadowMap.enabled===!1)return;let n=this.shadowColorNode;if(n===null){const i=this.light.shadow.shadowNode;let a;i!==void 0?a=Ss(i):a=this.setupShadowNode(),this.shadowNode=a,this.shadowColorNode=n=this.colorNode.mul(a),this.baseColorNode=this.colorNode}e.context.getShadow&&(n=e.context.getShadow(this,e)),this.colorNode=n}setup(e){this.colorNode=this.baseColorNode||this.colorNode,this.light.castShadow?e.object.receiveShadow&&this.setupShadow(e):this.shadowNode!==null&&(this.shadowNode.dispose(),this.shadowNode=null,this.shadowColorNode=null);const t=this.setupDirect(e),n=this.setupDirectRectArea(e);t&&e.lightsNode.setupDirectLight(e,this,t),n&&e.lightsNode.setupDirectRectAreaLight(e,this,n)}update(){const{light:e}=this;this.color.copy(e.color).multiplyScalar(e.intensity)}}const EM=or(({lightDistance:s,cutoffDistance:e,decayExponent:t})=>{const n=s.pow(t).max(.01).reciprocal();return e.greaterThan(0).select(n.mul(s.div(e).pow4().oneMinus().clamp().pow2()),n)}),nN=({color:s,lightVector:e,cutoffDistance:t,decayExponent:n})=>{const i=e.normalize(),a=e.length(),o=EM({lightDistance:a,cutoffDistance:t,decayExponent:n}),u=s.mul(o);return{lightDirection:i,lightColor:u}};class RQ extends E0{static get type(){return"PointLightNode"}constructor(e=null){super(e),this.cutoffDistanceNode=va(0).setGroup(xa),this.decayExponentNode=va(2).setGroup(xa)}update(e){const{light:t}=this;super.update(e),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}setupShadowNode(){return tN(this.light)}setupDirect(e){return nN({color:this.colorNode,lightVector:this.getLightVector(e),cutoffDistance:this.cutoffDistanceNode,decayExponent:this.decayExponentNode})}}const IQ=or(([s=Zl()])=>{const e=s.mul(2),t=e.x.floor(),n=e.y.floor();return t.add(n).mod(2).sign()}),NQ=or(([s=Zl()],{renderer:e,material:t})=>{const n=Z1(s.mul(2).sub(1));let i;if(t.alphaToCoverage&&e.currentSamples>0){const a=qt(n.fwidth()).toVar();i=fA(a.oneMinus(),a.add(1),n).oneMinus()}else i=ud(n.greaterThan(1),0,1);return i}),lx=or(([s,e,t])=>{const n=qt(t).toVar(),i=qt(e).toVar(),a=WA(s).toVar();return ud(a,i,n)}).setLayout({name:"mx_select",type:"float",inputs:[{name:"b",type:"bool"},{name:"t",type:"float"},{name:"f",type:"float"}]}),S_=or(([s,e])=>{const t=WA(e).toVar(),n=qt(s).toVar();return ud(t,n.negate(),n)}).setLayout({name:"mx_negate_if",type:"float",inputs:[{name:"val",type:"float"},{name:"b",type:"bool"}]}),Xc=or(([s])=>{const e=qt(s).toVar();return Qn(ag(e))}).setLayout({name:"mx_floor",type:"int",inputs:[{name:"x",type:"float"}]}),ic=or(([s,e])=>{const t=qt(s).toVar();return e.assign(Xc(t)),t.sub(qt(e))}),rN=hd([or(([s,e,t,n,i,a])=>{const o=qt(a).toVar(),u=qt(i).toVar(),c=qt(n).toVar(),d=qt(t).toVar(),g=qt(e).toVar(),v=qt(s).toVar(),M=qt(el(1,u)).toVar();return el(1,o).mul(v.mul(M).add(g.mul(u))).add(o.mul(d.mul(M).add(c.mul(u))))}).setLayout({name:"mx_bilerp_0",type:"float",inputs:[{name:"v0",type:"float"},{name:"v1",type:"float"},{name:"v2",type:"float"},{name:"v3",type:"float"},{name:"s",type:"float"},{name:"t",type:"float"}]}),or(([s,e,t,n,i,a])=>{const o=qt(a).toVar(),u=qt(i).toVar(),c=Kn(n).toVar(),d=Kn(t).toVar(),g=Kn(e).toVar(),v=Kn(s).toVar(),M=qt(el(1,u)).toVar();return el(1,o).mul(v.mul(M).add(g.mul(u))).add(o.mul(d.mul(M).add(c.mul(u))))}).setLayout({name:"mx_bilerp_1",type:"vec3",inputs:[{name:"v0",type:"vec3"},{name:"v1",type:"vec3"},{name:"v2",type:"vec3"},{name:"v3",type:"vec3"},{name:"s",type:"float"},{name:"t",type:"float"}]})]),iN=hd([or(([s,e,t,n,i,a,o,u,c,d,g])=>{const v=qt(g).toVar(),M=qt(d).toVar(),B=qt(c).toVar(),I=qt(u).toVar(),ne=qt(o).toVar(),ee=qt(a).toVar(),q=qt(i).toVar(),ye=qt(n).toVar(),Ce=qt(t).toVar(),ke=qt(e).toVar(),nt=qt(s).toVar(),Ye=qt(el(1,B)).toVar(),ht=qt(el(1,M)).toVar();return qt(el(1,v)).toVar().mul(ht.mul(nt.mul(Ye).add(ke.mul(B))).add(M.mul(Ce.mul(Ye).add(ye.mul(B))))).add(v.mul(ht.mul(q.mul(Ye).add(ee.mul(B))).add(M.mul(ne.mul(Ye).add(I.mul(B))))))}).setLayout({name:"mx_trilerp_0",type:"float",inputs:[{name:"v0",type:"float"},{name:"v1",type:"float"},{name:"v2",type:"float"},{name:"v3",type:"float"},{name:"v4",type:"float"},{name:"v5",type:"float"},{name:"v6",type:"float"},{name:"v7",type:"float"},{name:"s",type:"float"},{name:"t",type:"float"},{name:"r",type:"float"}]}),or(([s,e,t,n,i,a,o,u,c,d,g])=>{const v=qt(g).toVar(),M=qt(d).toVar(),B=qt(c).toVar(),I=Kn(u).toVar(),ne=Kn(o).toVar(),ee=Kn(a).toVar(),q=Kn(i).toVar(),ye=Kn(n).toVar(),Ce=Kn(t).toVar(),ke=Kn(e).toVar(),nt=Kn(s).toVar(),Ye=qt(el(1,B)).toVar(),ht=qt(el(1,M)).toVar();return qt(el(1,v)).toVar().mul(ht.mul(nt.mul(Ye).add(ke.mul(B))).add(M.mul(Ce.mul(Ye).add(ye.mul(B))))).add(v.mul(ht.mul(q.mul(Ye).add(ee.mul(B))).add(M.mul(ne.mul(Ye).add(I.mul(B))))))}).setLayout({name:"mx_trilerp_1",type:"vec3",inputs:[{name:"v0",type:"vec3"},{name:"v1",type:"vec3"},{name:"v2",type:"vec3"},{name:"v3",type:"vec3"},{name:"v4",type:"vec3"},{name:"v5",type:"vec3"},{name:"v6",type:"vec3"},{name:"v7",type:"vec3"},{name:"s",type:"float"},{name:"t",type:"float"},{name:"r",type:"float"}]})]),Zh=hd([or(([s,e,t])=>{const n=qt(t).toVar(),i=qt(e).toVar(),a=Fi(s).toVar(),o=Fi(a.bitAnd(Fi(7))).toVar(),u=qt(lx(o.lessThan(Fi(4)),i,n)).toVar(),c=qt(no(2,lx(o.lessThan(Fi(4)),n,i))).toVar();return S_(u,WA(o.bitAnd(Fi(1)))).add(S_(c,WA(o.bitAnd(Fi(2)))))}).setLayout({name:"mx_gradient_float_0",type:"float",inputs:[{name:"hash",type:"uint"},{name:"x",type:"float"},{name:"y",type:"float"}]}),or(([s,e,t,n])=>{const i=qt(n).toVar(),a=qt(t).toVar(),o=qt(e).toVar(),u=Fi(s).toVar(),c=Fi(u.bitAnd(Fi(15))).toVar(),d=qt(lx(c.lessThan(Fi(8)),o,a)).toVar(),g=qt(lx(c.lessThan(Fi(4)),a,lx(c.equal(Fi(12)).or(c.equal(Fi(14))),o,i))).toVar();return S_(d,WA(c.bitAnd(Fi(1)))).add(S_(g,WA(c.bitAnd(Fi(2)))))}).setLayout({name:"mx_gradient_float_1",type:"float",inputs:[{name:"hash",type:"uint"},{name:"x",type:"float"},{name:"y",type:"float"},{name:"z",type:"float"}]})]),qA=hd([or(([s,e,t])=>{const n=qt(t).toVar(),i=qt(e).toVar(),a=h0(s).toVar();return Kn(Zh(a.x,i,n),Zh(a.y,i,n),Zh(a.z,i,n))}).setLayout({name:"mx_gradient_vec3_0",type:"vec3",inputs:[{name:"hash",type:"uvec3"},{name:"x",type:"float"},{name:"y",type:"float"}]}),or(([s,e,t,n])=>{const i=qt(n).toVar(),a=qt(t).toVar(),o=qt(e).toVar(),u=h0(s).toVar();return Kn(Zh(u.x,o,a,i),Zh(u.y,o,a,i),Zh(u.z,o,a,i))}).setLayout({name:"mx_gradient_vec3_1",type:"vec3",inputs:[{name:"hash",type:"uvec3"},{name:"x",type:"float"},{name:"y",type:"float"},{name:"z",type:"float"}]})]),FQ=or(([s])=>{const e=qt(s).toVar();return no(.6616,e)}).setLayout({name:"mx_gradient_scale2d_0",type:"float",inputs:[{name:"v",type:"float"}]}),PQ=or(([s])=>{const e=qt(s).toVar();return no(.982,e)}).setLayout({name:"mx_gradient_scale3d_0",type:"float",inputs:[{name:"v",type:"float"}]}),sN=hd([FQ,or(([s])=>{const e=Kn(s).toVar();return no(.6616,e)}).setLayout({name:"mx_gradient_scale2d_1",type:"vec3",inputs:[{name:"v",type:"vec3"}]})]),aN=hd([PQ,or(([s])=>{const e=Kn(s).toVar();return no(.982,e)}).setLayout({name:"mx_gradient_scale3d_1",type:"vec3",inputs:[{name:"v",type:"vec3"}]})]),vA=or(([s,e])=>{const t=Qn(e).toVar(),n=Fi(s).toVar();return n.shiftLeft(t).bitOr(n.shiftRight(Qn(32).sub(t)))}).setLayout({name:"mx_rotl32",type:"uint",inputs:[{name:"x",type:"uint"},{name:"k",type:"int"}]}),oN=or(([s,e,t])=>{s.subAssign(t),s.bitXorAssign(vA(t,Qn(4))),t.addAssign(e),e.subAssign(s),e.bitXorAssign(vA(s,Qn(6))),s.addAssign(t),t.subAssign(e),t.bitXorAssign(vA(e,Qn(8))),e.addAssign(s),s.subAssign(t),s.bitXorAssign(vA(t,Qn(16))),t.addAssign(e),e.subAssign(s),e.bitXorAssign(vA(s,Qn(19))),s.addAssign(t),t.subAssign(e),t.bitXorAssign(vA(e,Qn(4))),e.addAssign(s)}),ux=or(([s,e,t])=>{const n=Fi(t).toVar(),i=Fi(e).toVar(),a=Fi(s).toVar();return n.bitXorAssign(i),n.subAssign(vA(i,Qn(14))),a.bitXorAssign(n),a.subAssign(vA(n,Qn(11))),i.bitXorAssign(a),i.subAssign(vA(a,Qn(25))),n.bitXorAssign(i),n.subAssign(vA(i,Qn(16))),a.bitXorAssign(n),a.subAssign(vA(n,Qn(4))),i.bitXorAssign(a),i.subAssign(vA(a,Qn(14))),n.bitXorAssign(i),n.subAssign(vA(i,Qn(24))),n}).setLayout({name:"mx_bjfinal",type:"uint",inputs:[{name:"a",type:"uint"},{name:"b",type:"uint"},{name:"c",type:"uint"}]}),Pd=or(([s])=>{const e=Fi(s).toVar();return qt(e).div(qt(Fi(Qn(4294967295))))}).setLayout({name:"mx_bits_to_01",type:"float",inputs:[{name:"bits",type:"uint"}]}),gg=or(([s])=>{const e=qt(s).toVar();return e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10))}).setLayout({name:"mx_fade",type:"float",inputs:[{name:"t",type:"float"}]}),au=hd([or(([s])=>{const e=Qn(s).toVar(),t=Fi(Fi(1)).toVar(),n=Fi(Fi(Qn(3735928559)).add(t.shiftLeft(Fi(2))).add(Fi(13))).toVar();return ux(n.add(Fi(e)),n,n)}).setLayout({name:"mx_hash_int_0",type:"uint",inputs:[{name:"x",type:"int"}]}),or(([s,e])=>{const t=Qn(e).toVar(),n=Qn(s).toVar(),i=Fi(Fi(2)).toVar(),a=Fi().toVar(),o=Fi().toVar(),u=Fi().toVar();return a.assign(o.assign(u.assign(Fi(Qn(3735928559)).add(i.shiftLeft(Fi(2))).add(Fi(13))))),a.addAssign(Fi(n)),o.addAssign(Fi(t)),ux(a,o,u)}).setLayout({name:"mx_hash_int_1",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"}]}),or(([s,e,t])=>{const n=Qn(t).toVar(),i=Qn(e).toVar(),a=Qn(s).toVar(),o=Fi(Fi(3)).toVar(),u=Fi().toVar(),c=Fi().toVar(),d=Fi().toVar();return u.assign(c.assign(d.assign(Fi(Qn(3735928559)).add(o.shiftLeft(Fi(2))).add(Fi(13))))),u.addAssign(Fi(a)),c.addAssign(Fi(i)),d.addAssign(Fi(n)),ux(u,c,d)}).setLayout({name:"mx_hash_int_2",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"}]}),or(([s,e,t,n])=>{const i=Qn(n).toVar(),a=Qn(t).toVar(),o=Qn(e).toVar(),u=Qn(s).toVar(),c=Fi(Fi(4)).toVar(),d=Fi().toVar(),g=Fi().toVar(),v=Fi().toVar();return d.assign(g.assign(v.assign(Fi(Qn(3735928559)).add(c.shiftLeft(Fi(2))).add(Fi(13))))),d.addAssign(Fi(u)),g.addAssign(Fi(o)),v.addAssign(Fi(a)),oN(d,g,v),d.addAssign(Fi(i)),ux(d,g,v)}).setLayout({name:"mx_hash_int_3",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"},{name:"xx",type:"int"}]}),or(([s,e,t,n,i])=>{const a=Qn(i).toVar(),o=Qn(n).toVar(),u=Qn(t).toVar(),c=Qn(e).toVar(),d=Qn(s).toVar(),g=Fi(Fi(5)).toVar(),v=Fi().toVar(),M=Fi().toVar(),B=Fi().toVar();return v.assign(M.assign(B.assign(Fi(Qn(3735928559)).add(g.shiftLeft(Fi(2))).add(Fi(13))))),v.addAssign(Fi(d)),M.addAssign(Fi(c)),B.addAssign(Fi(u)),oN(v,M,B),v.addAssign(Fi(o)),M.addAssign(Fi(a)),ux(v,M,B)}).setLayout({name:"mx_hash_int_4",type:"uint",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"},{name:"xx",type:"int"},{name:"yy",type:"int"}]})]),JA=hd([or(([s,e])=>{const t=Qn(e).toVar(),n=Qn(s).toVar(),i=Fi(au(n,t)).toVar(),a=h0().toVar();return a.x.assign(i.bitAnd(Qn(255))),a.y.assign(i.shiftRight(Qn(8)).bitAnd(Qn(255))),a.z.assign(i.shiftRight(Qn(16)).bitAnd(Qn(255))),a}).setLayout({name:"mx_hash_vec3_0",type:"uvec3",inputs:[{name:"x",type:"int"},{name:"y",type:"int"}]}),or(([s,e,t])=>{const n=Qn(t).toVar(),i=Qn(e).toVar(),a=Qn(s).toVar(),o=Fi(au(a,i,n)).toVar(),u=h0().toVar();return u.x.assign(o.bitAnd(Qn(255))),u.y.assign(o.shiftRight(Qn(8)).bitAnd(Qn(255))),u.z.assign(o.shiftRight(Qn(16)).bitAnd(Qn(255))),u}).setLayout({name:"mx_hash_vec3_1",type:"uvec3",inputs:[{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"}]})]),CM=hd([or(([s])=>{const e=Gi(s).toVar(),t=Qn().toVar(),n=Qn().toVar(),i=qt(ic(e.x,t)).toVar(),a=qt(ic(e.y,n)).toVar(),o=qt(gg(i)).toVar(),u=qt(gg(a)).toVar(),c=qt(rN(Zh(au(t,n),i,a),Zh(au(t.add(Qn(1)),n),i.sub(1),a),Zh(au(t,n.add(Qn(1))),i,a.sub(1)),Zh(au(t.add(Qn(1)),n.add(Qn(1))),i.sub(1),a.sub(1)),o,u)).toVar();return sN(c)}).setLayout({name:"mx_perlin_noise_float_0",type:"float",inputs:[{name:"p",type:"vec2"}]}),or(([s])=>{const e=Kn(s).toVar(),t=Qn().toVar(),n=Qn().toVar(),i=Qn().toVar(),a=qt(ic(e.x,t)).toVar(),o=qt(ic(e.y,n)).toVar(),u=qt(ic(e.z,i)).toVar(),c=qt(gg(a)).toVar(),d=qt(gg(o)).toVar(),g=qt(gg(u)).toVar(),v=qt(iN(Zh(au(t,n,i),a,o,u),Zh(au(t.add(Qn(1)),n,i),a.sub(1),o,u),Zh(au(t,n.add(Qn(1)),i),a,o.sub(1),u),Zh(au(t.add(Qn(1)),n.add(Qn(1)),i),a.sub(1),o.sub(1),u),Zh(au(t,n,i.add(Qn(1))),a,o,u.sub(1)),Zh(au(t.add(Qn(1)),n,i.add(Qn(1))),a.sub(1),o,u.sub(1)),Zh(au(t,n.add(Qn(1)),i.add(Qn(1))),a,o.sub(1),u.sub(1)),Zh(au(t.add(Qn(1)),n.add(Qn(1)),i.add(Qn(1))),a.sub(1),o.sub(1),u.sub(1)),c,d,g)).toVar();return aN(v)}).setLayout({name:"mx_perlin_noise_float_1",type:"float",inputs:[{name:"p",type:"vec3"}]})]),cx=hd([or(([s])=>{const e=Gi(s).toVar(),t=Qn().toVar(),n=Qn().toVar(),i=qt(ic(e.x,t)).toVar(),a=qt(ic(e.y,n)).toVar(),o=qt(gg(i)).toVar(),u=qt(gg(a)).toVar(),c=Kn(rN(qA(JA(t,n),i,a),qA(JA(t.add(Qn(1)),n),i.sub(1),a),qA(JA(t,n.add(Qn(1))),i,a.sub(1)),qA(JA(t.add(Qn(1)),n.add(Qn(1))),i.sub(1),a.sub(1)),o,u)).toVar();return sN(c)}).setLayout({name:"mx_perlin_noise_vec3_0",type:"vec3",inputs:[{name:"p",type:"vec2"}]}),or(([s])=>{const e=Kn(s).toVar(),t=Qn().toVar(),n=Qn().toVar(),i=Qn().toVar(),a=qt(ic(e.x,t)).toVar(),o=qt(ic(e.y,n)).toVar(),u=qt(ic(e.z,i)).toVar(),c=qt(gg(a)).toVar(),d=qt(gg(o)).toVar(),g=qt(gg(u)).toVar(),v=Kn(iN(qA(JA(t,n,i),a,o,u),qA(JA(t.add(Qn(1)),n,i),a.sub(1),o,u),qA(JA(t,n.add(Qn(1)),i),a,o.sub(1),u),qA(JA(t.add(Qn(1)),n.add(Qn(1)),i),a.sub(1),o.sub(1),u),qA(JA(t,n,i.add(Qn(1))),a,o,u.sub(1)),qA(JA(t.add(Qn(1)),n,i.add(Qn(1))),a.sub(1),o,u.sub(1)),qA(JA(t,n.add(Qn(1)),i.add(Qn(1))),a,o.sub(1),u.sub(1)),qA(JA(t.add(Qn(1)),n.add(Qn(1)),i.add(Qn(1))),a.sub(1),o.sub(1),u.sub(1)),c,d,g)).toVar();return aN(v)}).setLayout({name:"mx_perlin_noise_vec3_1",type:"vec3",inputs:[{name:"p",type:"vec3"}]})]),LQ=hd([or(([s])=>{const e=qt(s).toVar(),t=Qn(Xc(e)).toVar();return Pd(au(t))}).setLayout({name:"mx_cell_noise_float_0",type:"float",inputs:[{name:"p",type:"float"}]}),or(([s])=>{const e=Gi(s).toVar(),t=Qn(Xc(e.x)).toVar(),n=Qn(Xc(e.y)).toVar();return Pd(au(t,n))}).setLayout({name:"mx_cell_noise_float_1",type:"float",inputs:[{name:"p",type:"vec2"}]}),or(([s])=>{const e=Kn(s).toVar(),t=Qn(Xc(e.x)).toVar(),n=Qn(Xc(e.y)).toVar(),i=Qn(Xc(e.z)).toVar();return Pd(au(t,n,i))}).setLayout({name:"mx_cell_noise_float_2",type:"float",inputs:[{name:"p",type:"vec3"}]}),or(([s])=>{const e=Ks(s).toVar(),t=Qn(Xc(e.x)).toVar(),n=Qn(Xc(e.y)).toVar(),i=Qn(Xc(e.z)).toVar(),a=Qn(Xc(e.w)).toVar();return Pd(au(t,n,i,a))}).setLayout({name:"mx_cell_noise_float_3",type:"float",inputs:[{name:"p",type:"vec4"}]})]),M_=hd([or(([s])=>{const e=qt(s).toVar(),t=Qn(Xc(e)).toVar();return Kn(Pd(au(t,Qn(0))),Pd(au(t,Qn(1))),Pd(au(t,Qn(2))))}).setLayout({name:"mx_cell_noise_vec3_0",type:"vec3",inputs:[{name:"p",type:"float"}]}),or(([s])=>{const e=Gi(s).toVar(),t=Qn(Xc(e.x)).toVar(),n=Qn(Xc(e.y)).toVar();return Kn(Pd(au(t,n,Qn(0))),Pd(au(t,n,Qn(1))),Pd(au(t,n,Qn(2))))}).setLayout({name:"mx_cell_noise_vec3_1",type:"vec3",inputs:[{name:"p",type:"vec2"}]}),or(([s])=>{const e=Kn(s).toVar(),t=Qn(Xc(e.x)).toVar(),n=Qn(Xc(e.y)).toVar(),i=Qn(Xc(e.z)).toVar();return Kn(Pd(au(t,n,i,Qn(0))),Pd(au(t,n,i,Qn(1))),Pd(au(t,n,i,Qn(2))))}).setLayout({name:"mx_cell_noise_vec3_2",type:"vec3",inputs:[{name:"p",type:"vec3"}]}),or(([s])=>{const e=Ks(s).toVar(),t=Qn(Xc(e.x)).toVar(),n=Qn(Xc(e.y)).toVar(),i=Qn(Xc(e.z)).toVar(),a=Qn(Xc(e.w)).toVar();return Kn(Pd(au(t,n,i,a,Qn(0))),Pd(au(t,n,i,a,Qn(1))),Pd(au(t,n,i,a,Qn(2))))}).setLayout({name:"mx_cell_noise_vec3_3",type:"vec3",inputs:[{name:"p",type:"vec4"}]})]),E_=or(([s,e,t,n])=>{const i=qt(n).toVar(),a=qt(t).toVar(),o=Qn(e).toVar(),u=Kn(s).toVar(),c=qt(0).toVar(),d=qt(1).toVar();return kl(o,()=>{c.addAssign(d.mul(CM(u))),d.mulAssign(i),u.mulAssign(a)}),c}).setLayout({name:"mx_fractal_noise_float",type:"float",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),C_=or(([s,e,t,n])=>{const i=qt(n).toVar(),a=qt(t).toVar(),o=Qn(e).toVar(),u=Kn(s).toVar(),c=Kn(0).toVar(),d=qt(1).toVar();return kl(o,()=>{c.addAssign(d.mul(cx(u))),d.mulAssign(i),u.mulAssign(a)}),c}).setLayout({name:"mx_fractal_noise_vec3",type:"vec3",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),UQ=or(([s,e,t,n])=>{const i=qt(n).toVar(),a=qt(t).toVar(),o=Qn(e).toVar(),u=Kn(s).toVar();return Gi(E_(u,o,a,i),E_(u.add(Kn(Qn(19),Qn(193),Qn(17))),o,a,i))}).setLayout({name:"mx_fractal_noise_vec2",type:"vec2",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),OQ=or(([s,e,t,n])=>{const i=qt(n).toVar(),a=qt(t).toVar(),o=Qn(e).toVar(),u=Kn(s).toVar(),c=Kn(C_(u,o,a,i)).toVar(),d=qt(E_(u.add(Kn(Qn(19),Qn(193),Qn(17))),o,a,i)).toVar();return Ks(c,d)}).setLayout({name:"mx_fractal_noise_vec4",type:"vec4",inputs:[{name:"p",type:"vec3"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),Uv=hd([or(([s,e,t,n,i,a,o])=>{const u=Qn(o).toVar(),c=qt(a).toVar(),d=Qn(i).toVar(),g=Qn(n).toVar(),v=Qn(t).toVar(),M=Qn(e).toVar(),B=Gi(s).toVar(),I=Kn(M_(Gi(M.add(g),v.add(d)))).toVar(),ne=Gi(I.x,I.y).toVar();ne.subAssign(.5),ne.mulAssign(c),ne.addAssign(.5);const ee=Gi(Gi(qt(M),qt(v)).add(ne)).toVar(),q=Gi(ee.sub(B)).toVar();return ra(u.equal(Qn(2)),()=>Su(q.x).add(Su(q.y))),ra(u.equal(Qn(3)),()=>mc(Su(q.x),Su(q.y))),ZA(q,q)}).setLayout({name:"mx_worley_distance_0",type:"float",inputs:[{name:"p",type:"vec2"},{name:"x",type:"int"},{name:"y",type:"int"},{name:"xoff",type:"int"},{name:"yoff",type:"int"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),or(([s,e,t,n,i,a,o,u,c])=>{const d=Qn(c).toVar(),g=qt(u).toVar(),v=Qn(o).toVar(),M=Qn(a).toVar(),B=Qn(i).toVar(),I=Qn(n).toVar(),ne=Qn(t).toVar(),ee=Qn(e).toVar(),q=Kn(s).toVar(),ye=Kn(M_(Kn(ee.add(B),ne.add(M),I.add(v)))).toVar();ye.subAssign(.5),ye.mulAssign(g),ye.addAssign(.5);const Ce=Kn(Kn(qt(ee),qt(ne),qt(I)).add(ye)).toVar(),ke=Kn(Ce.sub(q)).toVar();return ra(d.equal(Qn(2)),()=>Su(ke.x).add(Su(ke.y)).add(Su(ke.z))),ra(d.equal(Qn(3)),()=>mc(Su(ke.x),Su(ke.y),Su(ke.z))),ZA(ke,ke)}).setLayout({name:"mx_worley_distance_1",type:"float",inputs:[{name:"p",type:"vec3"},{name:"x",type:"int"},{name:"y",type:"int"},{name:"z",type:"int"},{name:"xoff",type:"int"},{name:"yoff",type:"int"},{name:"zoff",type:"int"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),DQ=or(([s,e,t])=>{const n=Qn(t).toVar(),i=qt(e).toVar(),a=Gi(s).toVar(),o=Qn().toVar(),u=Qn().toVar(),c=Gi(ic(a.x,o),ic(a.y,u)).toVar(),d=qt(1e6).toVar();return kl({start:-1,end:Qn(1),name:"x",condition:"<="},({x:g})=>{kl({start:-1,end:Qn(1),name:"y",condition:"<="},({y:v})=>{const M=qt(Uv(c,g,v,o,u,i,n)).toVar();d.assign(Uf(d,M))})}),ra(n.equal(Qn(0)),()=>{d.assign(Nd(d))}),d}).setLayout({name:"mx_worley_noise_float_0",type:"float",inputs:[{name:"p",type:"vec2"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),kQ=or(([s,e,t])=>{const n=Qn(t).toVar(),i=qt(e).toVar(),a=Gi(s).toVar(),o=Qn().toVar(),u=Qn().toVar(),c=Gi(ic(a.x,o),ic(a.y,u)).toVar(),d=Gi(1e6,1e6).toVar();return kl({start:-1,end:Qn(1),name:"x",condition:"<="},({x:g})=>{kl({start:-1,end:Qn(1),name:"y",condition:"<="},({y:v})=>{const M=qt(Uv(c,g,v,o,u,i,n)).toVar();ra(M.lessThan(d.x),()=>{d.y.assign(d.x),d.x.assign(M)}).ElseIf(M.lessThan(d.y),()=>{d.y.assign(M)})})}),ra(n.equal(Qn(0)),()=>{d.assign(Nd(d))}),d}).setLayout({name:"mx_worley_noise_vec2_0",type:"vec2",inputs:[{name:"p",type:"vec2"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),VQ=or(([s,e,t])=>{const n=Qn(t).toVar(),i=qt(e).toVar(),a=Gi(s).toVar(),o=Qn().toVar(),u=Qn().toVar(),c=Gi(ic(a.x,o),ic(a.y,u)).toVar(),d=Kn(1e6,1e6,1e6).toVar();return kl({start:-1,end:Qn(1),name:"x",condition:"<="},({x:g})=>{kl({start:-1,end:Qn(1),name:"y",condition:"<="},({y:v})=>{const M=qt(Uv(c,g,v,o,u,i,n)).toVar();ra(M.lessThan(d.x),()=>{d.z.assign(d.y),d.y.assign(d.x),d.x.assign(M)}).ElseIf(M.lessThan(d.y),()=>{d.z.assign(d.y),d.y.assign(M)}).ElseIf(M.lessThan(d.z),()=>{d.z.assign(M)})})}),ra(n.equal(Qn(0)),()=>{d.assign(Nd(d))}),d}).setLayout({name:"mx_worley_noise_vec3_0",type:"vec3",inputs:[{name:"p",type:"vec2"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]}),zQ=hd([DQ,or(([s,e,t])=>{const n=Qn(t).toVar(),i=qt(e).toVar(),a=Kn(s).toVar(),o=Qn().toVar(),u=Qn().toVar(),c=Qn().toVar(),d=Kn(ic(a.x,o),ic(a.y,u),ic(a.z,c)).toVar(),g=qt(1e6).toVar();return kl({start:-1,end:Qn(1),name:"x",condition:"<="},({x:v})=>{kl({start:-1,end:Qn(1),name:"y",condition:"<="},({y:M})=>{kl({start:-1,end:Qn(1),name:"z",condition:"<="},({z:B})=>{const I=qt(Uv(d,v,M,B,o,u,c,i,n)).toVar();g.assign(Uf(g,I))})})}),ra(n.equal(Qn(0)),()=>{g.assign(Nd(g))}),g}).setLayout({name:"mx_worley_noise_float_1",type:"float",inputs:[{name:"p",type:"vec3"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),GQ=hd([kQ,or(([s,e,t])=>{const n=Qn(t).toVar(),i=qt(e).toVar(),a=Kn(s).toVar(),o=Qn().toVar(),u=Qn().toVar(),c=Qn().toVar(),d=Kn(ic(a.x,o),ic(a.y,u),ic(a.z,c)).toVar(),g=Gi(1e6,1e6).toVar();return kl({start:-1,end:Qn(1),name:"x",condition:"<="},({x:v})=>{kl({start:-1,end:Qn(1),name:"y",condition:"<="},({y:M})=>{kl({start:-1,end:Qn(1),name:"z",condition:"<="},({z:B})=>{const I=qt(Uv(d,v,M,B,o,u,c,i,n)).toVar();ra(I.lessThan(g.x),()=>{g.y.assign(g.x),g.x.assign(I)}).ElseIf(I.lessThan(g.y),()=>{g.y.assign(I)})})})}),ra(n.equal(Qn(0)),()=>{g.assign(Nd(g))}),g}).setLayout({name:"mx_worley_noise_vec2_1",type:"vec2",inputs:[{name:"p",type:"vec3"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),TM=hd([VQ,or(([s,e,t])=>{const n=Qn(t).toVar(),i=qt(e).toVar(),a=Kn(s).toVar(),o=Qn().toVar(),u=Qn().toVar(),c=Qn().toVar(),d=Kn(ic(a.x,o),ic(a.y,u),ic(a.z,c)).toVar(),g=Kn(1e6,1e6,1e6).toVar();return kl({start:-1,end:Qn(1),name:"x",condition:"<="},({x:v})=>{kl({start:-1,end:Qn(1),name:"y",condition:"<="},({y:M})=>{kl({start:-1,end:Qn(1),name:"z",condition:"<="},({z:B})=>{const I=qt(Uv(d,v,M,B,o,u,c,i,n)).toVar();ra(I.lessThan(g.x),()=>{g.z.assign(g.y),g.y.assign(g.x),g.x.assign(I)}).ElseIf(I.lessThan(g.y),()=>{g.z.assign(g.y),g.y.assign(I)}).ElseIf(I.lessThan(g.z),()=>{g.z.assign(I)})})})}),ra(n.equal(Qn(0)),()=>{g.assign(Nd(g))}),g}).setLayout({name:"mx_worley_noise_vec3_1",type:"vec3",inputs:[{name:"p",type:"vec3"},{name:"jitter",type:"float"},{name:"metric",type:"int"}]})]),HQ=or(([s,e,t,n,i,a,o,u,c,d,g])=>{const v=Qn(s).toVar(),M=Gi(e).toVar(),B=Gi(t).toVar(),I=Gi(n).toVar(),ne=qt(i).toVar(),ee=qt(a).toVar(),q=qt(o).toVar(),ye=WA(u).toVar(),Ce=Qn(c).toVar(),ke=qt(d).toVar(),nt=qt(g).toVar(),Ye=M.mul(B).add(I),ht=qt(0).toVar();return ra(v.equal(Qn(0)),()=>{ht.assign(cx(Ye))}),ra(v.equal(Qn(1)),()=>{ht.assign(M_(Ye))}),ra(v.equal(Qn(2)),()=>{ht.assign(TM(Ye,ne,Qn(0)))}),ra(v.equal(Qn(3)),()=>{ht.assign(C_(Kn(Ye,0),Ce,ke,nt))}),ht.assign(ht.mul(q.sub(ee)).add(ee)),ra(ye,()=>{ht.assign(Sp(ht,ee,q))}),ht}).setLayout({name:"mx_unifiednoise2d",type:"float",inputs:[{name:"noiseType",type:"int"},{name:"texcoord",type:"vec2"},{name:"freq",type:"vec2"},{name:"offset",type:"vec2"},{name:"jitter",type:"float"},{name:"outmin",type:"float"},{name:"outmax",type:"float"},{name:"clampoutput",type:"bool"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),QQ=or(([s,e,t,n,i,a,o,u,c,d,g])=>{const v=Qn(s).toVar(),M=Kn(e).toVar(),B=Kn(t).toVar(),I=Kn(n).toVar(),ne=qt(i).toVar(),ee=qt(a).toVar(),q=qt(o).toVar(),ye=WA(u).toVar(),Ce=Qn(c).toVar(),ke=qt(d).toVar(),nt=qt(g).toVar(),Ye=M.mul(B).add(I),ht=qt(0).toVar();return ra(v.equal(Qn(0)),()=>{ht.assign(cx(Ye))}),ra(v.equal(Qn(1)),()=>{ht.assign(M_(Ye))}),ra(v.equal(Qn(2)),()=>{ht.assign(TM(Ye,ne,Qn(0)))}),ra(v.equal(Qn(3)),()=>{ht.assign(C_(Ye,Ce,ke,nt))}),ht.assign(ht.mul(q.sub(ee)).add(ee)),ra(ye,()=>{ht.assign(Sp(ht,ee,q))}),ht}).setLayout({name:"mx_unifiednoise3d",type:"float",inputs:[{name:"noiseType",type:"int"},{name:"position",type:"vec3"},{name:"freq",type:"vec3"},{name:"offset",type:"vec3"},{name:"jitter",type:"float"},{name:"outmin",type:"float"},{name:"outmax",type:"float"},{name:"clampoutput",type:"bool"},{name:"octaves",type:"int"},{name:"lacunarity",type:"float"},{name:"diminish",type:"float"}]}),WQ=or(([s])=>{const e=s.y,t=s.z,n=Kn().toVar();return ra(e.lessThan(1e-4),()=>{n.assign(Kn(t,t,t))}).Else(()=>{let i=s.x;i=i.sub(ag(i)).mul(6).toVar();const a=Qn(G1(i)),o=i.sub(qt(a)),u=t.mul(e.oneMinus()),c=t.mul(e.mul(o).oneMinus()),d=t.mul(e.mul(o.oneMinus()).oneMinus());ra(a.equal(Qn(0)),()=>{n.assign(Kn(t,d,u))}).ElseIf(a.equal(Qn(1)),()=>{n.assign(Kn(c,t,u))}).ElseIf(a.equal(Qn(2)),()=>{n.assign(Kn(u,t,d))}).ElseIf(a.equal(Qn(3)),()=>{n.assign(Kn(u,c,t))}).ElseIf(a.equal(Qn(4)),()=>{n.assign(Kn(d,u,t))}).Else(()=>{n.assign(Kn(t,u,c))})}),n}).setLayout({name:"mx_hsvtorgb",type:"vec3",inputs:[{name:"hsv",type:"vec3"}]}),ZQ=or(([s])=>{const e=Kn(s).toVar(),t=qt(e.x).toVar(),n=qt(e.y).toVar(),i=qt(e.z).toVar(),a=qt(Uf(t,Uf(n,i))).toVar(),o=qt(mc(t,mc(n,i))).toVar(),u=qt(o.sub(a)).toVar(),c=qt().toVar(),d=qt().toVar(),g=qt().toVar();return g.assign(o),ra(o.greaterThan(0),()=>{d.assign(u.div(o))}).Else(()=>{d.assign(0)}),ra(d.lessThanEqual(0),()=>{c.assign(0)}).Else(()=>{ra(t.greaterThanEqual(o),()=>{c.assign(n.sub(i).div(u))}).ElseIf(n.greaterThanEqual(o),()=>{c.assign($c(2,i.sub(t).div(u)))}).Else(()=>{c.assign($c(4,t.sub(n).div(u)))}),c.mulAssign(1/6),ra(c.lessThan(0),()=>{c.addAssign(1)})}),Kn(c,d,g)}).setLayout({name:"mx_rgbtohsv",type:"vec3",inputs:[{name:"c",type:"vec3"}]}),KQ=or(([s])=>{const e=Kn(s).toVar(),t=w1(F1(e,Kn(.04045))).toVar(),n=Kn(e.div(12.92)).toVar(),i=Kn(KA(mc(e.add(Kn(.055)),Kn(0)).div(1.055),Kn(2.4))).toVar();return zo(n,i,t)}).setLayout({name:"mx_srgb_texture_to_lin_rec709",type:"vec3",inputs:[{name:"color",type:"vec3"}]}),lN=(s,e)=>{s=qt(s),e=qt(e);const t=Gi(e.dFdx(),e.dFdy()).length().mul(.7071067811865476);return fA(s.sub(t),s.add(t),e)},uN=(s,e,t,n)=>zo(s,e,t[n].clamp()),$Q=(s,e,t=Zl())=>uN(s,e,t,"x"),XQ=(s,e,t=Zl())=>uN(s,e,t,"y"),jQ=(s,e,t,n,i=Zl())=>{const a=i.x.clamp(),o=i.y.clamp(),u=zo(s,e,a),c=zo(t,n,a);return zo(u,c,o)},cN=(s,e,t,n,i)=>zo(s,e,lN(t,n[i])),YQ=(s,e,t,n=Zl())=>cN(s,e,t,n,"x"),qQ=(s,e,t,n=Zl())=>cN(s,e,t,n,"y"),JQ=(s=1,e=0,t=Zl())=>t.mul(s).add(e),e6=(s,e=1)=>(s=qt(s),s.abs().pow(e).mul(s.sign())),t6=(s,e=1,t=.5)=>qt(s).sub(t).mul(e).add(t),n6=(s=Zl(),e=1,t=0)=>CM(s.convert("vec2|vec3")).mul(e).add(t),r6=(s=Zl(),e=1,t=0)=>cx(s.convert("vec2|vec3")).mul(e).add(t),i6=(s=Zl(),e=1,t=0)=>(s=s.convert("vec2|vec3"),Ks(cx(s),CM(s.add(Gi(19,73)))).mul(e).add(t)),s6=(s,e=Zl(),t=Gi(1,1),n=Gi(0,0),i=1,a=0,o=1,u=!1,c=1,d=2,g=.5)=>HQ(s,e.convert("vec2|vec3"),t,n,i,a,o,u,c,d,g),a6=(s,e=Zl(),t=Gi(1,1),n=Gi(0,0),i=1,a=0,o=1,u=!1,c=1,d=2,g=.5)=>QQ(s,e.convert("vec2|vec3"),t,n,i,a,o,u,c,d,g),o6=(s=Zl(),e=1)=>zQ(s.convert("vec2|vec3"),e,Qn(1)),l6=(s=Zl(),e=1)=>GQ(s.convert("vec2|vec3"),e,Qn(1)),u6=(s=Zl(),e=1)=>TM(s.convert("vec2|vec3"),e,Qn(1)),c6=(s=Zl())=>LQ(s.convert("vec2|vec3")),h6=(s=Zl(),e=3,t=2,n=.5,i=1)=>E_(s,Qn(e),t,n).mul(i),d6=(s=Zl(),e=3,t=2,n=.5,i=1)=>UQ(s,Qn(e),t,n).mul(i),f6=(s=Zl(),e=3,t=2,n=.5,i=1)=>C_(s,Qn(e),t,n).mul(i),A6=(s=Zl(),e=3,t=2,n=.5,i=1)=>OQ(s,Qn(e),t,n).mul(i),p6=(s,e=qt(0))=>$c(s,e),g6=(s,e=qt(0))=>el(s,e),m6=(s,e=qt(1))=>no(s,e),v6=(s,e=qt(1))=>dA(s,e),y6=(s,e=qt(1))=>Oy(s,e),x6=(s,e=qt(1))=>KA(s,e),b6=(s=qt(0),e=qt(1))=>Rb(s,e),_6=()=>Iv,w6=()=>fI,S6=(s,e=qt(1))=>el(e,s),M6=(s,e,t,n)=>s.greaterThan(e).mix(t,n),E6=(s,e,t,n)=>s.greaterThanEqual(e).mix(t,n),C6=(s,e,t,n)=>s.equal(e).mix(t,n),T6=(s,e=null)=>{if(typeof e=="string"){const t={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3},n=e.replace(/^out/,"").toLowerCase();if(t[n]!==void 0)return s.element(t[n])}if(typeof e=="number")return s.element(e);if(typeof e=="string"&&e.length===1){const t={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3};if(t[e]!==void 0)return s.element(t[e])}return s},B6=(s,e=Gi(.5,.5),t=Gi(1,1),n=qt(0),i=Gi(0,0))=>{let a=s;if(e&&(a=a.sub(e)),t&&(a=a.mul(t)),n){const o=n.mul(Math.PI/180),u=o.cos(),c=o.sin();a=Gi(a.x.mul(u).sub(a.y.mul(c)),a.x.mul(c).add(a.y.mul(u)))}return e&&(a=a.add(e)),i&&(a=a.add(i)),a},R6=(s,e)=>{s=Gi(s),e=qt(e);const t=e.mul(Math.PI/180);return Xy(s,t)},I6=(s,e,t)=>{s=Kn(s),e=qt(e),t=Kn(t);const n=e.mul(Math.PI/180),i=t.normalize(),a=n.cos(),o=n.sin(),u=qt(1).sub(a);return s.mul(a).add(i.cross(s).mul(o)).add(i.mul(i.dot(s)).mul(u))},N6=(s,e)=>(s=Kn(s),e=qt(e),bS(s,e)),F6=or(([s,e,t])=>{const n=rf(s).toVar(),i=el(qt(.5).mul(e.sub(t)),pA).div(n).toVar(),a=el(qt(-.5).mul(e.sub(t)),pA).div(n).toVar(),o=Kn().toVar();o.x=n.x.greaterThan(qt(0)).select(i.x,a.x),o.y=n.y.greaterThan(qt(0)).select(i.y,a.y),o.z=n.z.greaterThan(qt(0)).select(i.z,a.z);const u=Uf(o.x,o.y,o.z).toVar();return pA.add(n.mul(u)).toVar().sub(t)}),hN=or(([s,e])=>{const t=s.x,n=s.y,i=s.z;let a=e.element(0).mul(.886227);return a=a.add(e.element(1).mul(2*.511664).mul(n)),a=a.add(e.element(2).mul(2*.511664).mul(i)),a=a.add(e.element(3).mul(2*.511664).mul(t)),a=a.add(e.element(4).mul(2*.429043).mul(t).mul(n)),a=a.add(e.element(5).mul(2*.429043).mul(n).mul(i)),a=a.add(e.element(6).mul(i.mul(i).mul(.743125).sub(.247708))),a=a.add(e.element(7).mul(2*.429043).mul(t).mul(i)),a=a.add(e.element(8).mul(.429043).mul(no(t,t).sub(no(n,n)))),a});var wj=Object.freeze({__proto__:null,BRDF_GGX:DS,BRDF_Lambert:x0,BasicPointShadowFilter:JI,BasicShadowFilter:GI,Break:j2,Const:pB,Continue:rV,DFGLUT:Wy,D_GGX:vR,Discard:FB,EPSILON:P1,F_Schlick:Tv,Fn:or,HALF_PI:Ik,INFINITY:Tk,If:ra,Loop:kl,NodeAccess:od,NodeShaderStage:Cy,NodeType:Y3,NodeUpdateType:Ao,OnBeforeMaterialUpdate:CG,OnBeforeObjectUpdate:EG,OnMaterialUpdate:MG,OnObjectUpdate:SG,PCFShadowFilter:HI,PCFSoftShadowFilter:QI,PI:Cb,PI2:Bk,PointShadowFilter:eN,Return:Kk,Schlick_to_F0:kS,ScriptableNodeResources:v_,ShaderNode:Av,Stack:mb,Switch:yk,TBNViewMatrix:y0,TWO_PI:Rk,VSMShadowFilter:WI,V_GGX_SmithCorrelated:mR,Var:AB,VarIntent:gB,abs:Su,acesFilmicToneMapping:CI,acos:O1,add:$c,addMethodChaining:ci,addNodeElement:Yk,agxToneMapping:TI,all:kT,alphaT:wb,and:ST,anisotropy:Fm,anisotropyB:f0,anisotropyT:Fy,any:VT,append:wk,array:mT,arrayBuffer:bk,asin:QT,assign:vT,atan:Rb,atan2:lB,atomicAdd:LH,atomicAnd:kH,atomicFunc:pg,atomicLoad:FH,atomicMax:OH,atomicMin:DH,atomicOr:VH,atomicStore:PH,atomicSub:UH,atomicXor:zH,attenuationColor:B1,attenuationDistance:T1,attribute:af,attributeArray:RG,backgroundBlurriness:gI,backgroundIntensity:hM,backgroundRotation:mI,batch:Z2,bentNormalView:d2,billboarding:oG,bitAnd:TT,bitNot:BT,bitOr:RT,bitXor:IT,bitangentGeometry:U4,bitangentLocal:O4,bitangentView:c2,bitangentWorld:D4,bitcast:hI,blendBurn:iR,blendColor:xV,blendDodge:sR,blendOverlay:oR,blendScreen:aR,blur:VR,bool:WA,buffer:Dy,bufferAttribute:J1,builtin:jg,builtinAOContext:dB,builtinShadowContext:hB,bumpMap:bS,burn:_V,bvec2:uT,bvec3:w1,bvec4:cT,bypass:BB,cache:TB,call:yT,cameraFar:Jg,cameraIndex:Um,cameraNear:qg,cameraNormalMatrix:d4,cameraPosition:zy,cameraProjectionMatrix:of,cameraProjectionMatrixInverse:c4,cameraViewMatrix:AA,cameraViewport:f4,cameraWorldMatrix:h4,cbrt:rB,cdl:$G,ceil:Bb,checker:IQ,cineonToneMapping:EI,clamp:Sp,clearcoat:yb,clearcoatNormalView:v0,clearcoatRoughness:Ny,code:g_,color:lT,colorSpaceToWorking:Pb,colorToDirection:V4,compute:CB,computeKernel:tS,computeSkinning:tV,context:Kg,convert:dT,convertColorSpace:Dk,convertToTexture:yG,cos:wp,countLeadingZeros:O5,countOneBits:D5,countTrailingZeros:U5,cross:Zg,cubeTexture:lf,cubeTextureBase:pS,dFdx:V1,dFdy:z1,dashSize:p0,debug:PB,decrement:OT,decrementBefore:LT,defaultBuildStages:d1,defaultShaderStages:qC,defined:By,degrees:GT,deltaTime:J5,densityFog:gH,densityFogFactor:AM,depth:PS,depthPass:JG,determinant:XT,difference:eB,diffuseColor:Wl,diffuseContribution:d0,directPointLight:nN,directionToColor:f2,directionToFaceDirection:bv,dispersion:R1,disposeShadowMaterial:KI,distance:JT,div:dA,dodge:wV,dot:ZA,drawIndex:H2,dynamicBufferAttribute:Hk,element:hT,emissive:E1,equal:N1,equals:YT,equirectUV:LS,exp:L1,exp2:mv,expression:$g,faceDirection:hS,faceForward:$1,faceforward:Nk,float:qt,floatBitsToInt:F5,floatBitsToUint:dI,floor:ag,fog:ix,fract:_p,frameGroup:pT,frameId:fI,frontFacing:QB,fwidth:H1,gain:V5,gapSize:Py,getConstNodeType:oT,getCurrentStack:x1,getDirection:DR,getDistanceAttenuation:EM,getGeometryRoughness:gR,getNormalFromDepth:bG,getParallaxCorrectNormal:F6,getRoughness:OS,getScreenPosition:xG,getShIrradianceAt:hN,getShadowMaterial:ZI,getShadowRenderObjectFunction:XI,getTextureIndex:uI,getViewPosition:Pv,ggxConvolution:zR,globalId:_H,glsl:lH,glslFn:uH,grayscale:QG,greaterThan:F1,greaterThanEqual:wT,hash:k5,highpModelNormalViewMatrix:uS,highpModelViewMatrix:lS,hue:KG,increment:UT,incrementBefore:PT,inspector:UB,instance:q4,instanceIndex:hg,instancedArray:IG,instancedBufferAttribute:Ub,instancedDynamicBufferAttribute:eS,instancedMesh:W2,int:Qn,intBitsToFloat:P5,interleavedGradientNoise:uM,inverse:jT,inverseSqrt:U1,inversesqrt:Fk,invocationLocalIndex:Y4,invocationSubgroupIndex:j4,ior:Ly,iridescence:xb,iridescenceIOR:bb,iridescenceThickness:_b,isolate:yv,ivec2:ch,ivec3:_1,ivec4:S1,js:aH,label:fB,length:og,lengthSq:Z1,lessThan:bT,lessThanEqual:_T,lightPosition:gM,lightProjectionUV:PI,lightShadowMatrix:b_,lightTargetDirection:vM,lightTargetPosition:LI,lightViewPosition:mM,lightingContext:J2,lights:pQ,linearDepth:Cv,linearToneMapping:SI,localId:wH,log:Tb,log2:sg,logarithmicDepthToViewZ:dV,luminance:dM,mat2:vb,mat3:ld,mat4:Im,matcapUV:YR,materialAO:V2,materialAlphaTest:p2,materialAnisotropy:B2,materialAnisotropyVector:wv,materialAttenuationColor:O2,materialAttenuationDistance:U2,materialClearcoat:w2,materialClearcoatNormal:M2,materialClearcoatRoughness:S2,materialColor:Wb,materialDispersion:k2,materialEmissive:m2,materialEnvIntensity:Vb,materialEnvRotation:AS,materialIOR:L2,materialIridescence:R2,materialIridescenceIOR:I2,materialIridescenceThickness:N2,materialLightMap:CS,materialLineDashOffset:ES,materialLineDashSize:SS,materialLineGapSize:MS,materialLineScale:wS,materialLineWidth:$b,materialMetalness:b2,materialNormal:_2,materialOpacity:Zb,materialPointSize:D2,materialReference:em,materialReflectivity:Kb,materialRefractionRatio:XB,materialRotation:E2,materialRoughness:x2,materialSheen:C2,materialSheenRoughness:T2,materialShininess:g2,materialSpecular:v2,materialSpecularColor:y2,materialSpecularIntensity:_S,materialSpecularStrength:Hy,materialThickness:P2,materialTransmission:F2,max:mc,maxMipLevel:rS,mediumpModelViewMatrix:HB,metalness:Wg,min:Uf,mix:zo,mixElement:sB,mod:Oy,modInt:DT,modelDirection:y4,modelNormalMatrix:GB,modelPosition:x4,modelRadius:zB,modelScale:b4,modelViewMatrix:cg,modelViewPosition:_4,modelViewProjection:z2,modelWorldMatrix:XA,modelWorldMatrixInverse:w4,morphReference:q2,mrt:cI,mul:no,mx_aastep:lN,mx_add:p6,mx_atan2:b6,mx_cell_noise_float:c6,mx_contrast:t6,mx_divide:v6,mx_fractal_noise_float:h6,mx_fractal_noise_vec2:d6,mx_fractal_noise_vec3:f6,mx_fractal_noise_vec4:A6,mx_frame:w6,mx_heighttonormal:N6,mx_hsvtorgb:WQ,mx_ifequal:C6,mx_ifgreater:M6,mx_ifgreatereq:E6,mx_invert:S6,mx_modulo:y6,mx_multiply:m6,mx_noise_float:n6,mx_noise_vec3:r6,mx_noise_vec4:i6,mx_place2d:B6,mx_power:x6,mx_ramp4:jQ,mx_ramplr:$Q,mx_ramptb:XQ,mx_rgbtohsv:ZQ,mx_rotate2d:R6,mx_rotate3d:I6,mx_safepower:e6,mx_separate:T6,mx_splitlr:YQ,mx_splittb:qQ,mx_srgb_texture_to_lin_rec709:KQ,mx_subtract:g6,mx_timer:_6,mx_transform_uv:JQ,mx_unifiednoise2d:s6,mx_unifiednoise3d:a6,mx_worley_noise_float:o6,mx_worley_noise_vec2:l6,mx_worley_noise_vec3:u6,negate:k1,neutralToneMapping:BI,nodeArray:c0,nodeImmutable:xs,nodeObject:Ss,nodeObjectIntent:Ry,nodeObjects:gb,nodeProxy:to,nodeProxyIntent:ji,normalFlat:WB,normalGeometry:kb,normalLocal:Of,normalMap:xS,normalView:cl,normalViewGeometry:_v,normalWorld:Om,normalWorldGeometry:ZB,normalize:rf,not:ET,notEqual:xT,numWorkgroups:xH,objectDirection:A4,objectGroup:I1,objectPosition:VB,objectRadius:v4,objectScale:g4,objectViewPosition:m4,objectWorldMatrix:p4,oneMinus:WT,or:MT,orthographicDepthToViewZ:hV,oscSawtooth:rG,oscSine:eG,oscSquare:tG,oscTriangle:nG,output:gv,outputStruct:I5,overlay:MV,overloadingFn:hd,packHalf2x16:W5,packSnorm2x16:H5,packUnorm2x16:Q5,parabola:rM,parallaxDirection:h2,parallaxUV:k4,parameter:M5,pass:YG,passTexture:qG,pcurve:z5,perspectiveDepthToViewZ:NS,pmremTexture:eM,pointShadow:tN,pointUV:FG,pointWidth:Sk,positionGeometry:cd,positionLocal:vc,positionPrevious:Db,positionView:Oc,positionViewDirection:iu,positionWorld:pA,positionWorldDirection:cS,posterize:jG,pow:KA,pow2:Q1,pow3:tB,pow4:W1,premultiplyAlpha:lR,property:bp,quadBroadcast:dQ,quadSwapDiagonal:aQ,quadSwapX:iQ,quadSwapY:sQ,radians:zT,rand:iB,range:vH,rangeFog:pH,rangeFogFactor:fM,reciprocal:KT,reference:su,referenceBuffer:gS,reflect:qT,reflectVector:qB,reflectView:jB,reflector:AG,refract:K1,refractVector:JB,refractView:YB,reinhardToneMapping:MI,remap:IB,remapClamp:NB,renderGroup:xa,renderOutput:nS,rendererReference:_B,replaceDefaultUV:iG,rotate:Xy,rotateUV:sG,roughness:ig,round:ZT,rtt:pI,sRGBTransferEOTF:vB,sRGBTransferOETF:yB,sample:wG,sampler:r4,samplerComparison:i4,saturate:Nb,saturation:WG,screen:SV,screenCoordinate:m0,screenDPR:aS,screenSize:g0,screenUV:Yg,scriptable:AH,scriptableValue:m_,select:ud,setCurrentStack:Iy,setName:X1,shaderStages:f1,shadow:YI,shadowPositionWorld:bM,shapeCircle:NQ,sharedUniformGroup:Eb,sheen:hA,sheenRoughness:Nm,shiftLeft:NT,shiftRight:FT,shininess:Sb,sign:D1,sin:sf,sinc:G5,skinning:X2,smoothstep:fA,smoothstepElement:aB,specularColor:Pm,specularColorBlended:A0,specularF90:pv,spherizeUV:aG,split:_k,spritesheetUV:cG,sqrt:Nd,stack:a_,step:Ib,stepElement:oB,storage:tm,storageBarrier:CH,storageObject:$4,storageTexture:vI,string:xk,struct:R5,sub:el,subBuild:vv,subgroupAdd:QH,subgroupAll:tQ,subgroupAnd:jH,subgroupAny:nQ,subgroupBallot:HH,subgroupBroadcast:oQ,subgroupBroadcastFirst:rQ,subgroupElect:GH,subgroupExclusiveAdd:ZH,subgroupExclusiveMul:XH,subgroupInclusiveAdd:WH,subgroupInclusiveMul:$H,subgroupIndex:X4,subgroupMax:eQ,subgroupMin:JH,subgroupMul:KH,subgroupOr:YH,subgroupShuffle:lQ,subgroupShuffleDown:hQ,subgroupShuffleUp:cQ,subgroupShuffleXor:uQ,subgroupSize:SH,subgroupXor:qH,tan:HT,tangentGeometry:Gb,tangentLocal:Gy,tangentView:Hb,tangentWorld:u2,texture:xl,texture3D:A_,texture3DLevel:kG,texture3DLoad:DG,textureBarrier:TH,textureBicubic:nz,textureBicubicLevel:GS,textureCubeUV:kR,textureLevel:n4,textureLoad:Rc,textureSize:Xg,textureStore:LG,thickness:C1,time:Iv,toneMapping:wB,toneMappingExposure:SB,toonOutlinePass:tH,transformDirection:nB,transformNormal:KB,transformNormalToView:dS,transformedClearcoatNormalView:C4,transformedNormalView:M4,transformedNormalWorld:E4,transmission:Mb,transpose:$T,triNoise3D:j5,triplanarTexture:hG,triplanarTextures:AI,trunc:G1,uint:Fi,uintBitsToFloat:L5,uniform:va,uniformArray:Fd,uniformCubeTexture:B4,uniformFlow:cB,uniformGroup:AT,uniformTexture:t4,unpackHalf2x16:$5,unpackNormal:yS,unpackSnorm2x16:Z5,unpackUnorm2x16:K5,unpremultiplyAlpha:bV,userData:zG,uv:Zl,uvec2:b1,uvec3:h0,uvec4:M1,varying:lg,varyingProperty:cA,vec2:Gi,vec3:Kn,vec4:Ks,vectorComponents:l0,velocity:HG,vertexColor:rR,vertexIndex:G2,vertexStage:mB,vibrance:ZG,viewZToLogarithmicDepth:FS,viewZToOrthographicDepth:Ev,viewZToPerspectiveDepth:IS,viewport:xv,viewportCoordinate:DB,viewportDepthTexture:RS,viewportLinearDepth:fV,viewportMipTexture:BS,viewportResolution:u4,viewportSafeUV:lG,viewportSharedTexture:uR,viewportSize:oS,viewportTexture:uV,viewportUV:l4,vogelDiskSample:Ep,wgsl:oH,wgslFn:cH,workgroupArray:IH,workgroupBarrier:EH,workgroupId:bH,workingToColorSpace:xB,xor:CT});const Cp=new nM;class P6 extends Vm{constructor(e,t){super(),this.renderer=e,this.nodes=t}update(e,t,n){const i=this.renderer,a=this.nodes.getBackgroundNode(e)||e.background;let o=!1;if(a===null)i._clearColor.getRGB(Cp),Cp.a=i._clearColor.a;else if(a.isColor===!0)a.getRGB(Cp),Cp.a=1,o=!0;else if(a.isNode===!0){const c=this.get(e),d=a;Cp.copy(i._clearColor);let g=c.backgroundMesh;if(g===void 0){let ye=function(){a.removeEventListener("dispose",ye),g.material.dispose(),g.geometry.dispose()};const M=Ks(d).mul(hM).context({getUV:()=>mI.mul(ZB),getTextureLevel:()=>gI}),B=of.element(3).element(3).equal(1),I=dA(1,of.element(1).element(1)).mul(3),ne=B.select(vc.mul(I),vc);let ee=of.mul(cg.mul(Ks(ne,0)));ee=ee.setZ(ee.w);const q=new yc;q.name="Background.material",q.side=de,q.depthTest=!1,q.depthWrite=!1,q.allowOverride=!1,q.fog=!1,q.lights=!1,q.vertexNode=ee,q.colorNode=M,c.backgroundMeshNode=M,c.backgroundMesh=g=new Il(new sd(1,32,32),q),g.frustumCulled=!1,g.name="Background.mesh",a.addEventListener("dispose",ye)}const v=d.getCacheKey();c.backgroundCacheKey!==v&&(c.backgroundMeshNode.node=Ks(d).mul(hM),c.backgroundMeshNode.needsUpdate=!0,g.material.needsUpdate=!0,c.backgroundCacheKey=v),t.unshift(g,g.geometry,g.material,0,0,null,null)}else Gr("Renderer: Unsupported background configuration.",a);const u=i.xr.getEnvironmentBlendMode();if(u==="additive"?Cp.set(0,0,0,1):u==="alpha-blend"&&Cp.set(0,0,0,0),i.autoClear===!0||o===!0){const c=n.clearColorValue;c.r=Cp.r,c.g=Cp.g,c.b=Cp.b,c.a=Cp.a,(i.backend.isWebGLBackend===!0||i.alpha===!0)&&(c.r*=c.a,c.g*=c.a,c.b*=c.a),n.depthClearValue=i._clearDepth,n.stencilClearValue=i._clearStencil,n.clearColor=i.autoClearColor===!0,n.clearDepth=i.autoClearDepth===!0,n.clearStencil=i.autoClearStencil===!0}else n.clearColor=!1,n.clearDepth=!1,n.clearStencil=!1}}let L6=0;class BM{constructor(e="",t=[],n=0,i=[]){this.name=e,this.bindings=t,this.index=n,this.bindingsReference=i,this.id=L6++}}class U6{constructor(e,t,n,i,a,o,u,c,d,g=[]){this.vertexShader=e,this.fragmentShader=t,this.computeShader=n,this.transforms=g,this.nodeAttributes=i,this.bindings=a,this.updateNodes=o,this.updateBeforeNodes=u,this.updateAfterNodes=c,this.observer=d,this.usedTimes=0}createBindings(){const e=[];for(const t of this.bindings)if(t.bindings[0].groupNode.shared!==!0){const i=new BM(t.name,[],t.index,t.bindingsReference);e.push(i);for(const a of t.bindings)i.bindings.push(a.clone())}else e.push(t);return e}}class dN{constructor(e,t,n=null){this.isNodeAttribute=!0,this.name=e,this.type=t,this.node=n}}class O6{constructor(e,t,n){this.isNodeUniform=!0,this.name=e,this.type=t,this.node=n}get value(){return this.node.value}set value(e){this.node.value=e}get id(){return this.node.id}get groupNode(){return this.node.groupNode}}class fN{constructor(e,t,n=!1,i=null){this.isNodeVar=!0,this.name=e,this.type=t,this.readOnly=n,this.count=i}}class D6 extends fN{constructor(e,t,n=null,i=null){super(e,t),this.needsInterpolation=!1,this.isNodeVarying=!0,this.interpolationType=n,this.interpolationSampling=i}}class k6{constructor(e,t,n=""){this.name=e,this.type=t,this.code=n,Object.defineProperty(this,"isNodeCode",{value:!0})}}let V6=0;class RM{constructor(e=null){this.id=V6++,this.nodesData=new WeakMap,this.parent=e}getData(e){let t=this.nodesData.get(e);return t===void 0&&this.parent!==null&&(t=this.parent.getData(e)),t}setData(e,t){this.nodesData.set(e,t)}}class z6{constructor(e,t){this.name=e,this.members=t,this.output=!1}}class Gm{constructor(e,t){this.name=e,this.value=t,this.boundary=0,this.itemSize=0,this.offset=0}setValue(e){this.value=e}getValue(){return this.value}}class G6 extends Gm{constructor(e,t=0){super(e,t),this.isNumberUniform=!0,this.boundary=4,this.itemSize=1}}class H6 extends Gm{constructor(e,t=new ce){super(e,t),this.isVector2Uniform=!0,this.boundary=8,this.itemSize=2}}class Q6 extends Gm{constructor(e,t=new le){super(e,t),this.isVector3Uniform=!0,this.boundary=16,this.itemSize=3}}class W6 extends Gm{constructor(e,t=new Ni){super(e,t),this.isVector4Uniform=!0,this.boundary=16,this.itemSize=4}}class Z6 extends Gm{constructor(e,t=new Wr){super(e,t),this.isColorUniform=!0,this.boundary=16,this.itemSize=3}}class K6 extends Gm{constructor(e,t=new gp){super(e,t),this.isMatrix2Uniform=!0,this.boundary=8,this.itemSize=4}}class $6 extends Gm{constructor(e,t=new pn){super(e,t),this.isMatrix3Uniform=!0,this.boundary=48,this.itemSize=12}}class X6 extends Gm{constructor(e,t=new di){super(e,t),this.isMatrix4Uniform=!0,this.boundary=64,this.itemSize=16}}class j6 extends G6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class Y6 extends H6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class q6 extends Q6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class J6 extends W6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class e8 extends Z6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class t8 extends K6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class n8 extends $6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}class r8 extends X6{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}}let i8=0;const s8=new WeakMap,AN=new WeakMap,a8=new Map([[Int8Array,"int"],[Int16Array,"int"],[Int32Array,"int"],[Uint8Array,"uint"],[Uint16Array,"uint"],[Uint32Array,"uint"],[Float32Array,"float"]]),T_=s=>/e/g.test(s)?String(s).replace(/\+/g,""):(s=Number(s),s+(s%1?"":".0"));class pN{constructor(e,t,n){this.object=e,this.material=e&&e.material||null,this.geometry=e&&e.geometry||null,this.renderer=t,this.parser=n,this.scene=null,this.camera=null,this.nodes=[],this.sequentialNodes=[],this.updateNodes=[],this.updateBeforeNodes=[],this.updateAfterNodes=[],this.hashNodes={},this.observer=null,this.lightsNode=null,this.environmentNode=null,this.fogNode=null,this.clippingContext=null,this.vertexShader=null,this.fragmentShader=null,this.computeShader=null,this.flowNodes={vertex:[],fragment:[],compute:[]},this.flowCode={vertex:"",fragment:"",compute:""},this.uniforms={vertex:[],fragment:[],compute:[],index:0},this.structs={vertex:[],fragment:[],compute:[],index:0},this.types={vertex:[],fragment:[],compute:[],index:0},this.bindings={vertex:{},fragment:{},compute:{}},this.bindingsIndexes={},this.bindGroups=null,this.attributes=[],this.bufferAttributes=[],this.varyings=[],this.codes={},this.vars={},this.declarations={},this.flow={code:""},this.chaining=[],this.stack=a_(),this.stacks=[],this.tab=" ",this.currentFunctionNode=null,this.context={material:this.material},this.cache=new RM,this.globalCache=this.cache,this.flowsData=new WeakMap,this.shaderStage=null,this.buildStage=null,this.subBuildLayers=[],this.activeStacks=[],this.subBuildFn=null,this.fnCall=null,Object.defineProperty(this,"id",{value:i8++})}isOpaque(){const e=this.material;return e.transparent===!1&&e.blending===ve&&e.alphaToCoverage===!1}getBindGroupsCache(){let e=AN.get(this.renderer);return e===void 0&&(e=new Mp,AN.set(this.renderer,e)),e}createRenderTarget(e,t,n){return new Ns(e,t,n)}createCubeRenderTarget(e,t){return new cR(e,t)}includes(e){return this.nodes.includes(e)}getOutputStructName(){}_getBindGroup(e,t){const n=this.getBindGroupsCache(),i=[];let a=!0;for(const u of t)i.push(u),a=a&&u.groupNode.shared!==!0;let o;return a?(o=n.get(i),o===void 0&&(o=new BM(e,i,this.bindingsIndexes[e].group,i),n.set(i,o))):o=new BM(e,i,this.bindingsIndexes[e].group,i),o}getBindGroupArray(e,t){const n=this.bindings[t];let i=n[e];return i===void 0&&(this.bindingsIndexes[e]===void 0&&(this.bindingsIndexes[e]={binding:0,group:Object.keys(this.bindingsIndexes).length}),n[e]=i=[]),i}getBindings(){let e=this.bindGroups;if(e===null){const t={},n=this.bindings;for(const i of f1)for(const a in n[i]){const o=n[i][a];(t[a]||(t[a]=[])).push(...o)}e=[];for(const i in t){const a=t[i],o=this._getBindGroup(i,a);e.push(o)}this.bindGroups=e}return e}sortBindingGroups(){const e=this.getBindings();e.sort((t,n)=>t.bindings[0].groupNode.order-n.bindings[0].groupNode.order);for(let t=0;t=0?`${Math.round(t)}u`:"0u";if(e==="bool")return t?"true":"false";if(e==="color")return`${this.getType("vec3")}( ${T_(t.r)}, ${T_(t.g)}, ${T_(t.b)} )`;const n=this.getTypeLength(e),i=this.getComponentType(e),a=o=>this.generateConst(i,o);if(n===2)return`${this.getType(e)}( ${a(t.x)}, ${a(t.y)} )`;if(n===3)return`${this.getType(e)}( ${a(t.x)}, ${a(t.y)}, ${a(t.z)} )`;if(n===4&&e!=="mat2")return`${this.getType(e)}( ${a(t.x)}, ${a(t.y)}, ${a(t.z)}, ${a(t.w)} )`;if(n>=4&&t&&(t.isMatrix2||t.isMatrix3||t.isMatrix4))return`${this.getType(e)}( ${t.elements.map(a).join(", ")} )`;if(n>4)return`${this.getType(e)}()`;throw new Error(`NodeBuilder: Type '${e}' not found in generate constant attempt.`)}getType(e){return e==="color"?"vec3":e}hasGeometryAttribute(e){return this.geometry&&this.geometry.getAttribute(e)!==void 0}getAttribute(e,t){const n=this.attributes;for(const a of n)if(a.name===e)return a;const i=new dN(e,t);return this.registerDeclaration(i),n.push(i),i}getPropertyName(e){return e.name}isVector(e){return/vec\d/.test(e)}isMatrix(e){return/mat\d/.test(e)}isReference(e){return e==="void"||e==="property"||e==="sampler"||e==="samplerComparison"||e==="texture"||e==="cubeTexture"||e==="storageTexture"||e==="depthTexture"||e==="texture3D"}needsToWorkingColorSpace(){return!1}getComponentTypeFromTexture(e){const t=e.type;if(e.isDataTexture){if(t===Xt)return"int";if(t===st)return"uint"}return"float"}getElementType(e){return e==="mat2"?"vec2":e==="mat3"?"vec3":e==="mat4"?"vec4":this.getComponentType(e)}getComponentType(e){if(e=this.getVectorType(e),e==="float"||e==="bool"||e==="int"||e==="uint")return e;const t=/(b|i|u|)(vec|mat)([2-4])/.exec(e);return t===null?null:t[1]==="b"?"bool":t[1]==="i"?"int":t[1]==="u"?"uint":"float"}getVectorType(e){return e==="color"?"vec3":e==="texture"||e==="cubeTexture"||e==="storageTexture"||e==="texture3D"?"vec4":e}getTypeFromLength(e,t="float"){if(e===1)return t;let n=o1(e);const i=t==="float"?"":t[0];return/mat2/.test(t)===!0&&(n=n.replace("vec","mat")),i+n}getTypeFromArray(e){return a8.get(e.constructor)}isInteger(e){return/int|uint|(i|u)vec/.test(e)}getTypeFromAttribute(e){let t=e;e.isInterleavedBufferAttribute&&(t=e.data);const n=t.array,i=e.itemSize,a=e.normalized;let o;return!(e instanceof Yu)&&a!==!0&&(o=this.getTypeFromArray(n)),this.getTypeFromLength(i,o)}getTypeLength(e){const t=this.getVectorType(e),n=/vec([2-4])/.exec(t);return n!==null?Number(n[1]):t==="float"||t==="bool"||t==="int"||t==="uint"?1:/mat2/.test(e)===!0?4:/mat3/.test(e)===!0?9:/mat4/.test(e)===!0?16:0}getVectorFromMatrix(e){return e.replace("mat","vec")}changeComponentType(e,t){return this.getTypeFromLength(this.getTypeLength(e),t)}getIntegerType(e){const t=this.getComponentType(e);return t==="int"||t==="uint"?e:this.changeComponentType(e,"int")}setActiveStack(e){this.activeStacks.push(e)}removeActiveStack(e){if(this.activeStacks[this.activeStacks.length-1]===e)this.activeStacks.pop();else throw new Error("NodeBuilder: Invalid active stack removal.")}getActiveStack(){return this.activeStacks[this.activeStacks.length-1]}getBaseStack(){return this.activeStacks[0]}addStack(){this.stack=a_(this.stack);const e=x1();return this.stacks.push(e),Iy(this.stack),this.stack}removeStack(){const e=this.stack;for(const t of e.nodes){const n=this.getDataFromNode(t);n.stack=e}return this.stack=e.parent,Iy(this.stacks.pop()),e}getDataFromNode(e,t=this.shaderStage,n=null){n=n===null?e.isGlobal(this)?this.globalCache:this.cache:n;let i=n.getData(e);i===void 0&&(i={},n.setData(e,i)),i[t]===void 0&&(i[t]={});let a=i[t];const o=i.any?i.any.subBuilds:null,u=this.getClosestSubBuild(o);return u&&(a.subBuildsCache===void 0&&(a.subBuildsCache={}),a=a.subBuildsCache[u]||(a.subBuildsCache[u]={}),a.subBuilds=o),a}getNodeProperties(e,t="any"){const n=this.getDataFromNode(e,t);return n.properties||(n.properties={outputNode:null})}getBufferAttributeFromNode(e,t){const n=this.getDataFromNode(e,"vertex");let i=n.bufferAttribute;if(i===void 0){const a=this.uniforms.index++;i=new dN("nodeAttribute"+a,t,e),this.bufferAttributes.push(i),n.bufferAttribute=i}return i}getStructTypeNode(e,t=this.shaderStage){return this.types[t][e]||null}getStructTypeFromNode(e,t,n=null,i=this.shaderStage){const a=this.getDataFromNode(e,i,this.globalCache);let o=a.structType;if(o===void 0){const u=this.structs.index++;n===null&&(n="StructType"+u),o=new z6(n,t),this.structs[i].push(o),this.types[i][n]=e,a.structType=o}return o}getOutputStructTypeFromNode(e,t){const n=this.getStructTypeFromNode(e,t,"OutputType","fragment");return n.output=!0,n}getUniformFromNode(e,t,n=this.shaderStage,i=null){const a=this.getDataFromNode(e,n,this.globalCache);let o=a.uniform;if(o===void 0){const u=this.uniforms.index++;o=new O6(i||"nodeUniform"+u,t,e),this.uniforms[n].push(o),this.registerDeclaration(o),a.uniform=o}return o}getVarFromNode(e,t=null,n=e.getNodeType(this),i=this.shaderStage,a=!1){const o=this.getDataFromNode(e,i),u=this.getSubBuildProperty("variable",o.subBuilds);let c=o[u];if(c===void 0){const d=a?"_const":"_var",g=this.vars[i]||(this.vars[i]=[]),v=this.vars[d]||(this.vars[d]=0);t===null&&(t=(a?"nodeConst":"nodeVar")+v,this.vars[d]++),u!=="variable"&&(t=this.getSubBuildProperty(t,o.subBuilds));const M=e.getArrayCount(this);c=new fN(t,n,a,M),a||g.push(c),this.registerDeclaration(c),o[u]=c}return c}isDeterministic(e){if(e.isMathNode)return this.isDeterministic(e.aNode)&&(e.bNode?this.isDeterministic(e.bNode):!0)&&(e.cNode?this.isDeterministic(e.cNode):!0);if(e.isOperatorNode)return this.isDeterministic(e.aNode)&&(e.bNode?this.isDeterministic(e.bNode):!0);if(e.isArrayNode){if(e.values!==null){for(const t of e.values)if(!this.isDeterministic(t))return!1}return!0}else if(e.isConstNode)return!0;return!1}getVaryingFromNode(e,t=null,n=e.getNodeType(this),i=null,a=null){const o=this.getDataFromNode(e,"any"),u=this.getSubBuildProperty("varying",o.subBuilds);let c=o[u];if(c===void 0){const d=this.varyings,g=d.length;t===null&&(t="nodeVarying"+g),u!=="varying"&&(t=this.getSubBuildProperty(t,o.subBuilds)),c=new D6(t,n,i,a),d.push(c),this.registerDeclaration(c),o[u]=c}return c}registerDeclaration(e){const t=this.shaderStage,n=this.declarations[t]||(this.declarations[t]={}),i=this.getPropertyName(e);let a=1,o=i;for(;n[o]!==void 0;)o=i+"_"+a++;a>1&&(e.name=o,Lr(`TSL: Declaration name '${i}' of '${e.type}' already in use. Renamed to '${o}'.`)),n[o]=e}getCodeFromNode(e,t,n=this.shaderStage){const i=this.getDataFromNode(e);let a=i.code;if(a===void 0){const o=this.codes[n]||(this.codes[n]=[]),u=o.length;a=new k6("nodeCode"+u,t),o.push(a),i.code=a}return a}addFlowCodeHierarchy(e,t){const{flowCodes:n,flowCodeBlock:i}=this.getDataFromNode(e);let a=!0,o=t;for(;o;){if(i.get(o)===!0){a=!1;break}o=this.getDataFromNode(o).parentNodeBlock}if(a)for(const u of n)this.addLineFlowCode(u)}addLineFlowCodeBlock(e,t,n){const i=this.getDataFromNode(e),a=i.flowCodes||(i.flowCodes=[]),o=i.flowCodeBlock||(i.flowCodeBlock=new WeakMap);a.push(t),o.set(n,!0)}addLineFlowCode(e,t=null){return e===""?this:(t!==null&&this.context.nodeBlock&&this.addLineFlowCodeBlock(t,e,this.context.nodeBlock),e=this.tab+e,/;\s*$/.test(e)||(e=e+`; -`),this.flow.code+=e,this)}addFlowCode(e){return this.flow.code+=e,this}addFlowTab(){return this.tab+=" ",this}removeFlowTab(){return this.tab=this.tab.slice(0,-1),this}getFlowData(e){return this.flowsData.get(e)}flowNode(e){const t=e.getNodeType(this),n=this.flowChildNode(e,t);return this.flowsData.set(e,n),n}addInclude(e){this.currentFunctionNode!==null&&this.currentFunctionNode.includes.push(e)}buildFunctionNode(e){const t=new RI,n=this.currentFunctionNode;return this.currentFunctionNode=t,t.code=this.buildFunctionCode(e),this.currentFunctionNode=n,t}flowShaderNode(e){const t=e.layout,n={[Symbol.iterator](){let o=0;const u=Object.values(this);return{next:()=>({value:u[o],done:o++>=u.length})}}};for(const o of t.inputs)n[o.name]=new oI(o.type,o.name);e.layout=null;const i=e.call(n),a=this.flowStagesNode(i,t.type);return e.layout=t,a}flowBuildStage(e,t,n=null){const i=this.getBuildStage();this.setBuildStage(t);const a=e.build(this,n);return this.setBuildStage(i),a}flowStagesNode(e,t=null){const n=this.flow,i=this.vars,a=this.declarations,o=this.cache,u=this.buildStage,c=this.stack,d={code:""};this.flow=d,this.vars={},this.declarations={},this.cache=new RM,this.stack=a_();for(const g of d1)this.setBuildStage(g),d.result=e.build(this,t);return d.vars=this.getVars(this.shaderStage),this.flow=n,this.vars=i,this.declarations=a,this.cache=o,this.stack=c,this.setBuildStage(u),d}getFunctionOperator(){return null}buildFunctionCode(){Lr("Abstract function.")}flowChildNode(e,t=null){const n=this.flow,i={code:""};return this.flow=i,i.result=e.build(this,t),this.flow=n,i}flowNodeFromShaderStage(e,t,n=null,i=null){const a=this.tab,o=this.cache,u=this.shaderStage,c=this.context;this.setShaderStage(e);const d=rl({},this.context);delete d.nodeBlock,this.cache=this.globalCache,this.tab=" ",this.context=d;let g=null;if(this.buildStage==="generate"){const v=this.flowChildNode(t,n);i!==null&&(v.code+=`${this.tab+i} = ${v.result}; -`),this.flowCode[e]=this.flowCode[e]+v.code,g=v}else g=t.build(this);return this.setShaderStage(u),this.cache=o,this.tab=a,this.context=c,g}getAttributesArray(){return this.attributes.concat(this.bufferAttributes)}getAttributes(){Lr("Abstract function.")}getVaryings(){Lr("Abstract function.")}getVar(e,t,n=null){return`${n!==null?this.generateArrayDeclaration(e,n):this.getType(e)} ${t}`}getVars(e){let t="";const n=this.vars[e];if(n!==void 0)for(const i of n)t+=`${this.getVar(i.type,i.name)}; `;return t}getUniforms(){Lr("Abstract function.")}getCodes(e){const t=this.codes[e];let n="";if(t!==void 0)for(const i of t)n+=i.code+` -`;return n}getHash(){return this.vertexShader+this.fragmentShader+this.computeShader}setShaderStage(e){this.shaderStage=e}getShaderStage(){return this.shaderStage}setBuildStage(e){this.buildStage=e}getBuildStage(){return this.buildStage}buildCode(){Lr("Abstract function.")}get subBuild(){return this.subBuildLayers[this.subBuildLayers.length-1]||null}addSubBuild(e){this.subBuildLayers.push(e)}removeSubBuild(){return this.subBuildLayers.pop()}getClosestSubBuild(e){let t;if(e&&e.isNode?e.isShaderCallNodeInternal?t=e.shaderNode.subBuilds:e.isStackNode?t=[e.subBuild]:t=this.getDataFromNode(e,"any").subBuilds:e instanceof Set?t=[...e]:t=e,!t)return null;const n=this.subBuildLayers;for(let i=t.length-1;i>=0;i--){const a=t[i];if(n.includes(a))return a}return null}getSubBuildOutput(e){return this.getSubBuildProperty("outputNode",e)}getSubBuildProperty(e="",t=null){let n;t!==null?n=this.getClosestSubBuild(t):n=this.subBuildFn;let i;return n?i=e?n+"_"+e:n:i=e,i}build(){const{object:e,material:t,renderer:n}=this;if(t!==null){let i=n.library.fromMaterial(t);i===null&&(Gr(`NodeMaterial: Material "${t.type}" is not compatible.`),i=new yc),i.build(this)}else this.addFlow("compute",e);for(const i of d1){this.setBuildStage(i),this.context.vertex&&this.context.vertex.isNode&&this.flowNodeFromShaderStage("vertex",this.context.vertex);for(const a of f1){this.setShaderStage(a);const o=this.flowNodes[a];for(const u of o)i==="generate"?this.flowNode(u):u.build(this)}}return this.setBuildStage(null),this.setShaderStage(null),this.buildCode(),this.buildUpdateNodes(),this}getSharedDataFromNode(e){let t=s8.get(e);return t===void 0&&(t={}),t}getNodeUniform(e,t){const n=this.getSharedDataFromNode(e);let i=n.cache;if(i===void 0){if(t==="float"||t==="int"||t==="uint")i=new j6(e);else if(t==="vec2"||t==="ivec2"||t==="uvec2")i=new Y6(e);else if(t==="vec3"||t==="ivec3"||t==="uvec3")i=new q6(e);else if(t==="vec4"||t==="ivec4"||t==="uvec4")i=new J6(e);else if(t==="color")i=new e8(e);else if(t==="mat2")i=new t8(e);else if(t==="mat3")i=new n8(e);else if(t==="mat4")i=new r8(e);else throw new Error(`Uniform "${t}" not implemented.`);n.cache=i}return i}format(e,t,n){if(t=this.getVectorType(t),n=this.getVectorType(n),t===n||n===null||this.isReference(n))return e;const i=this.getTypeLength(t),a=this.getTypeLength(n);return i===16&&a===9?`${this.getType(n)}( ${e}[ 0 ].xyz, ${e}[ 1 ].xyz, ${e}[ 2 ].xyz )`:i===9&&a===4?`${this.getType(n)}( ${e}[ 0 ].xy, ${e}[ 1 ].xy )`:i>4||a>4||a===0?e:i===a?`${this.getType(n)}( ${e} )`:i>a?(e=n==="bool"?`all( ${e} )`:`${e}.${"xyz".slice(0,a)}`,this.format(e,this.getTypeFromLength(a,this.getComponentType(t)),n)):a===4&&i>1?`${this.getType(n)}( ${this.format(e,t,"vec3")}, 1.0 )`:i===2?`${this.getType(n)}( ${this.format(e,t,"vec2")}, 0.0 )`:(i===1&&a>1&&t!==this.getComponentType(n)&&(e=`${this.getType(this.getComponentType(n))}( ${e} )`),`${this.getType(n)}( ${e} )`)}getSignature(){return`// Three.js r${m} - Node System -`}}class gN{constructor(){this.time=0,this.deltaTime=0,this.frameId=0,this.renderId=0,this.updateMap=new WeakMap,this.updateBeforeMap=new WeakMap,this.updateAfterMap=new WeakMap,this.renderer=null,this.material=null,this.camera=null,this.object=null,this.scene=null}_getMaps(e,t){let n=e.get(t);return n===void 0&&(n={renderId:0,frameId:0},e.set(t,n)),n}updateBeforeNode(e){const t=e.getUpdateBeforeType(),n=e.updateReference(this);if(t===Ao.FRAME){const i=this._getMaps(this.updateBeforeMap,n);if(i.frameId!==this.frameId){const a=i.frameId;i.frameId=this.frameId,e.updateBefore(this)===!1&&(i.frameId=a)}}else if(t===Ao.RENDER){const i=this._getMaps(this.updateBeforeMap,n);if(i.renderId!==this.renderId){const a=i.renderId;i.renderId=this.renderId,e.updateBefore(this)===!1&&(i.renderId=a)}}else t===Ao.OBJECT&&e.updateBefore(this)}updateAfterNode(e){const t=e.getUpdateAfterType(),n=e.updateReference(this);if(t===Ao.FRAME){const i=this._getMaps(this.updateAfterMap,n);i.frameId!==this.frameId&&e.updateAfter(this)!==!1&&(i.frameId=this.frameId)}else if(t===Ao.RENDER){const i=this._getMaps(this.updateAfterMap,n);i.renderId!==this.renderId&&e.updateAfter(this)!==!1&&(i.renderId=this.renderId)}else t===Ao.OBJECT&&e.updateAfter(this)}updateNode(e){const t=e.getUpdateType(),n=e.updateReference(this);if(t===Ao.FRAME){const i=this._getMaps(this.updateMap,n);i.frameId!==this.frameId&&e.update(this)!==!1&&(i.frameId=this.frameId)}else if(t===Ao.RENDER){const i=this._getMaps(this.updateMap,n);i.renderId!==this.renderId&&e.update(this)!==!1&&(i.renderId=this.renderId)}else t===Ao.OBJECT&&e.update(this)}update(){this.frameId++,this.lastTime===void 0&&(this.lastTime=performance.now()),this.deltaTime=(performance.now()-this.lastTime)/1e3,this.lastTime=performance.now(),this.time+=this.deltaTime}}class IM{constructor(e,t,n=null,i="",a=!1){this.type=e,this.name=t,this.count=n,this.qualifier=i,this.isConst=a}}IM.isNodeFunctionInput=!0;class o8 extends E0{static get type(){return"DirectionalLightNode"}constructor(e=null){super(e)}setupDirect(){const e=this.colorNode;return{lightDirection:vM(this.light),lightColor:e}}}const NM=new di,B_=new di;let hx=null;class l8 extends E0{static get type(){return"RectAreaLightNode"}constructor(e=null){super(e),this.halfHeight=va(new le).setGroup(xa),this.halfWidth=va(new le).setGroup(xa),this.updateType=Ao.RENDER}update(e){super.update(e);const{light:t}=this,n=e.camera.matrixWorldInverse;B_.identity(),NM.copy(t.matrixWorld),NM.premultiply(n),B_.extractRotation(NM),this.halfWidth.value.set(t.width*.5,0,0),this.halfHeight.value.set(0,t.height*.5,0),this.halfWidth.value.applyMatrix4(B_),this.halfHeight.value.applyMatrix4(B_)}setupDirectRectArea(e){let t,n;e.isAvailable("float32Filterable")?(t=xl(hx.LTC_FLOAT_1),n=xl(hx.LTC_FLOAT_2)):(t=xl(hx.LTC_HALF_1),n=xl(hx.LTC_HALF_2));const{colorNode:i,light:a}=this,o=mM(a);return{lightColor:i,lightPosition:o,halfWidth:this.halfWidth,halfHeight:this.halfHeight,ltc_1:t,ltc_2:n}}static setLTC(e){hx=e}}class FM extends E0{static get type(){return"SpotLightNode"}constructor(e=null){super(e),this.coneCosNode=va(0).setGroup(xa),this.penumbraCosNode=va(0).setGroup(xa),this.cutoffDistanceNode=va(0).setGroup(xa),this.decayExponentNode=va(0).setGroup(xa),this.colorNode=va(this.color).setGroup(xa)}update(e){super.update(e);const{light:t}=this;this.coneCosNode.value=Math.cos(t.angle),this.penumbraCosNode.value=Math.cos(t.angle*(1-t.penumbra)),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}getSpotAttenuation(e,t){const{coneCosNode:n,penumbraCosNode:i}=this;return fA(n,i,t)}getLightCoord(e){const t=e.getNodeProperties(this);let n=t.projectionUV;return n===void 0&&(n=PI(this.light,e.context.positionWorld),t.projectionUV=n),n}setupDirect(e){const{colorNode:t,cutoffDistanceNode:n,decayExponentNode:i,light:a}=this,o=this.getLightVector(e),u=o.normalize(),c=u.dot(vM(a)),d=this.getSpotAttenuation(e,c),g=o.length(),v=EM({lightDistance:g,cutoffDistance:n,decayExponent:i});let M=t.mul(d).mul(v),B,I;return a.colorNode?(I=this.getLightCoord(e),B=a.colorNode(I)):a.map&&(I=this.getLightCoord(e),B=xl(a.map,I.xy).onRenderUpdate(()=>a.map)),B&&(M=I.mul(2).sub(1).abs().lessThan(1).all().select(M.mul(B),M)),{lightColor:M,lightDirection:u}}}class u8 extends FM{static get type(){return"IESSpotLightNode"}getSpotAttenuation(e,t){const n=this.light.iesMap;let i=null;if(n&&n.isTexture===!0){const a=t.acos().mul(1/Math.PI);i=xl(n,Gi(a,0),0).r}else i=super.getSpotAttenuation(t);return i}}const c8=or(([s,e])=>{const t=s.abs().sub(e);return og(mc(t,0)).add(Uf(mc(t.x,t.y),0))});class h8 extends FM{static get type(){return"ProjectorLightNode"}update(e){super.update(e);const t=this.light;if(this.penumbraCosNode.value=Math.min(Math.cos(t.angle*(1-t.penumbra)),.99999),t.aspect===null){let n=1;t.map!==null&&(n=t.map.width/t.map.height),t.shadow.aspect=n}else t.shadow.aspect=t.aspect}getSpotAttenuation(e){const t=qt(0),n=this.penumbraCosNode,i=b_(this.light).mul(e.context.positionWorld||pA);return ra(i.w.greaterThan(0),()=>{const a=i.xyz.div(i.w),o=c8(a.xy.sub(Gi(.5)),Gi(.5)),u=dA(-1,el(1,O1(n)).sub(1));t.assign(Nb(o.mul(-2).mul(u)))}),t}}class d8 extends E0{static get type(){return"AmbientLightNode"}constructor(e=null){super(e)}setup({context:e}){e.irradiance.addAssign(this.colorNode)}}class f8 extends E0{static get type(){return"HemisphereLightNode"}constructor(e=null){super(e),this.lightPositionNode=gM(e),this.lightDirectionNode=this.lightPositionNode.normalize(),this.groundColorNode=va(new Wr).setGroup(xa)}update(e){const{light:t}=this;super.update(e),this.lightPositionNode.object3d=t,this.groundColorNode.value.copy(t.groundColor).multiplyScalar(t.intensity)}setup(e){const{colorNode:t,groundColorNode:n,lightDirectionNode:i}=this,o=Om.dot(i).mul(.5).add(.5),u=zo(n,t,o);e.context.irradiance.addAssign(u)}}class A8 extends E0{static get type(){return"LightProbeNode"}constructor(e=null){super(e);const t=[];for(let n=0;n<9;n++)t.push(new le);this.lightProbe=Fd(t)}update(e){const{light:t}=this;super.update(e);for(let n=0;n<9;n++)this.lightProbe.array[n].copy(t.sh.coefficients[n]).multiplyScalar(t.intensity)}setup(e){const t=hN(Om,this.lightProbe);e.context.irradiance.addAssign(t)}}class mN{parseFunction(){Lr("Abstract function.")}}class PM{constructor(e,t,n="",i=""){this.type=e,this.inputs=t,this.name=n,this.precision=i}getCode(){Lr("Abstract function.")}}PM.isNodeFunction=!0;const p8=/^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i,g8=/[a-z_0-9]+/ig,vN="#pragma main",m8=s=>{s=s.trim();const e=s.indexOf(vN),t=e!==-1?s.slice(e+vN.length):s,n=t.match(p8);if(n!==null&&n.length===5){const i=n[4],a=[];let o=null;for(;(o=g8.exec(i))!==null;)a.push(o);const u=[];let c=0;for(;c{const d=this.backend.createNodeBuilder(e.object,this.renderer);return d.scene=e.scene,d.material=c,d.camera=e.camera,d.context.material=c,d.lightsNode=e.lightsNode,d.environmentNode=this.getEnvironmentNode(e.scene),d.fogNode=this.getFogNode(e.scene),d.clippingContext=e.clippingContext,this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview&&d.enableMultiview(),d};let u=o(e.material);try{u.build()}catch(c){u=o(new yc),u.build(),Gr("TSL: "+c)}n=this._createNodeBuilderState(u),i.set(a,n)}n.usedTimes++,t.nodeBuilderState=n}return n}delete(e){if(e.isRenderObject){const t=this.get(e).nodeBuilderState;t.usedTimes--,t.usedTimes===0&&this.nodeBuilderCache.delete(this.getForRenderCacheKey(e))}return super.delete(e)}getForCompute(e){const t=this.get(e);let n=t.nodeBuilderState;if(n===void 0){const i=this.backend.createNodeBuilder(e,this.renderer);i.build(),n=this._createNodeBuilderState(i),t.nodeBuilderState=n}return n}_createNodeBuilderState(e){return new U6(e.vertexShader,e.fragmentShader,e.computeShader,e.getAttributesArray(),e.getBindings(),e.updateNodes,e.updateBeforeNodes,e.updateAfterNodes,e.observer,e.transforms)}getEnvironmentNode(e){this.updateEnvironment(e);let t=null;if(e.environmentNode&&e.environmentNode.isNode)t=e.environmentNode;else{const n=this.get(e);n.environmentNode&&(t=n.environmentNode)}return t}getBackgroundNode(e){this.updateBackground(e);let t=null;if(e.backgroundNode&&e.backgroundNode.isNode)t=e.backgroundNode;else{const n=this.get(e);n.backgroundNode&&(t=n.backgroundNode)}return t}getFogNode(e){return this.updateFog(e),e.fogNode||this.get(e).fogNode||null}getCacheKey(e,t){mg[0]=e,mg[1]=t;const n=this.renderer.info.calls,i=this.callHashCache.get(mg)||{};if(i.callId!==n){const a=this.getEnvironmentNode(e),o=this.getFogNode(e);t&&Hm.push(t.getCacheKey(!0)),a&&Hm.push(a.getCacheKey()),o&&Hm.push(o.getCacheKey()),Hm.push(this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview?1:0),Hm.push(this.renderer.shadowMap.enabled?1:0),Hm.push(this.renderer.shadowMap.type),i.callId=n,i.cacheKey=o0(Hm),this.callHashCache.set(mg,i),Hm.length=0}return mg.length=0,i.cacheKey}get isToneMappingState(){return!this.renderer.getRenderTarget()}updateBackground(e){const t=this.get(e),n=e.background;if(n){const i=e.backgroundBlurriness===0&&t.backgroundBlurriness>0||e.backgroundBlurriness>0&&t.backgroundBlurriness===0;if(t.background!==n||i){const a=this.getCacheNode("background",n,()=>{if(n.isCubeTexture===!0||n.mapping===ot||n.mapping===ut||n.mapping===_t){if(e.backgroundBlurriness>0||n.mapping===_t)return eM(n);{let o;return n.isCubeTexture===!0?o=lf(n):o=xl(n),fR(o)}}else{if(n.isTexture===!0)return xl(n,Yg.flipY()).setUpdateMatrix(!0);n.isColor!==!0&&Gr("WebGPUNodes: Unsupported background configuration.",n)}},i);t.backgroundNode=a,t.background=n,t.backgroundBlurriness=e.backgroundBlurriness}}else t.backgroundNode&&(delete t.backgroundNode,delete t.background)}getCacheNode(e,t,n,i=!1){const a=this.cacheLib[e]||(this.cacheLib[e]=new WeakMap);let o=a.get(t);return(o===void 0||i)&&(o=n(),a.set(t,o)),o}updateFog(e){const t=this.get(e),n=e.fog;if(n){if(t.fog!==n){const i=this.getCacheNode("fog",n,()=>{if(n.isFogExp2){const a=su("color","color",n).setGroup(xa),o=su("density","float",n).setGroup(xa);return ix(a,AM(o))}else if(n.isFog){const a=su("color","color",n).setGroup(xa),o=su("near","float",n).setGroup(xa),u=su("far","float",n).setGroup(xa);return ix(a,fM(o,u))}else Gr("Renderer: Unsupported fog configuration.",n)});t.fogNode=i,t.fog=n}}else delete t.fogNode,delete t.fog}updateEnvironment(e){const t=this.get(e),n=e.environment;if(n){if(t.environment!==n){const i=this.getCacheNode("environment",n,()=>{if(n.isCubeTexture===!0)return lf(n);if(n.isTexture===!0)return xl(n);Gr("Nodes: Unsupported environment configuration.",n)});t.environmentNode=i,t.environment=n}}else t.environmentNode&&(delete t.environmentNode,delete t.environment)}getNodeFrame(e=this.renderer,t=null,n=null,i=null,a=null){const o=this.nodeFrame;return o.renderer=e,o.scene=t,o.object=n,o.camera=i,o.material=a,o}getNodeFrameForRender(e){return this.getNodeFrame(e.renderer,e.scene,e.object,e.camera,e.material)}getOutputCacheKey(){const e=this.renderer;return e.toneMapping+","+e.currentColorSpace+","+e.xr.isPresenting}hasOutputChange(e){return yN.get(e)!==this.getOutputCacheKey()}getOutputNode(e){const t=this.renderer,n=this.getOutputCacheKey(),i=e.isArrayTexture?A_(e,Kn(Yg,jg("gl_ViewID_OVR"))).renderOutput(t.toneMapping,t.currentColorSpace):xl(e,Yg).renderOutput(t.toneMapping,t.currentColorSpace);return yN.set(e,n),i}updateBefore(e){const t=e.getNodeBuilderState();for(const n of t.updateBeforeNodes)this.getNodeFrameForRender(e).updateBeforeNode(n)}updateAfter(e){const t=e.getNodeBuilderState();for(const n of t.updateAfterNodes)this.getNodeFrameForRender(e).updateAfterNode(n)}updateForCompute(e){const t=this.getNodeFrame(),n=this.getForCompute(e);for(const i of n.updateNodes)t.updateNode(i)}updateForRender(e){const t=this.getNodeFrameForRender(e),n=e.getNodeBuilderState();for(const i of n.updateNodes)t.updateNode(i)}needsRefresh(e){const t=this.getNodeFrameForRender(e);return e.getMonitor().needsRefresh(e,t)}dispose(){super.dispose(),this.nodeFrame=new gN,this.nodeBuilderCache=new Map,this.cacheLib={}}}const LM=new Ec;class R_{constructor(e=null){this.version=0,this.clipIntersection=null,this.cacheKey="",this.shadowPass=!1,this.viewNormalMatrix=new pn,this.clippingGroupContexts=new WeakMap,this.intersectionPlanes=[],this.unionPlanes=[],this.parentVersion=null,e!==null&&(this.viewNormalMatrix=e.viewNormalMatrix,this.clippingGroupContexts=e.clippingGroupContexts,this.shadowPass=e.shadowPass,this.viewMatrix=e.viewMatrix)}projectPlanes(e,t,n){const i=e.length;for(let a=0;a0,alpha:!0,depth:t.depth,stencil:t.stencil,framebufferScaleFactor:this.getFramebufferScaleFactor()},u=new XRWebGLLayer(e,i,o);this._glBaseLayer=u,e.updateRenderState({baseLayer:u}),t.setPixelRatio(1),t._setXRLayerSize(u.framebufferWidth,u.framebufferHeight),this._xrRenderTarget=new Ax(u.framebufferWidth,u.framebufferHeight,{format:L,type:es,colorSpace:t.outputColorSpace,stencilBuffer:t.stencil,resolveDepthBuffer:u.ignoreDepthValues===!1,resolveStencilBuffer:u.ignoreDepthValues===!1}),this._xrRenderTarget._isOpaqueFramebuffer=!0,this._referenceSpace=yield e.requestReferenceSpace(this.getReferenceSpaceType())}this.setFoveation(this.getFoveation()),t._animation.setAnimationLoop(this._onAnimationFrame),t._animation.setContext(e),t._animation.start(),this.isPresenting=!0,this.dispatchEvent({type:"sessionstart"})}})}updateCamera(e){const t=this._session;if(t===null)return;const n=e.near,i=e.far,a=this._cameraXR,o=this._cameraL,u=this._cameraR;a.near=u.near=o.near=n,a.far=u.far=o.far=i,a.isMultiViewCamera=this._useMultiview,(this._currentDepthNear!==a.near||this._currentDepthFar!==a.far)&&(t.updateRenderState({depthNear:a.near,depthFar:a.far}),this._currentDepthNear=a.near,this._currentDepthFar=a.far),a.layers.mask=e.layers.mask|6,o.layers.mask=a.layers.mask&3,u.layers.mask=a.layers.mask&5;const c=e.parent,d=a.cameras;wN(a,c);for(let g=0;g=0&&(t[a]=null,e[a].disconnect(i))}for(let n=0;n=t.length){t.push(i),a=u;break}else if(t[u]===null){t[u]=i,a=u;break}if(a===-1)break}const o=e[a];o&&o.connect(i)}}function I8(s){return s.type==="quad"?this._glBinding.createQuadLayer({transform:new XRRigidTransform(s.translation,s.quaternion),width:s.width/2,height:s.height/2,space:this._referenceSpace,viewPixelWidth:s.pixelwidth,viewPixelHeight:s.pixelheight,clearOnAccess:!1}):this._glBinding.createCylinderLayer({transform:new XRRigidTransform(s.translation,s.quaternion),radius:s.radius,centralAngle:s.centralAngle,aspectRatio:s.aspectRatio,space:this._referenceSpace,viewPixelWidth:s.pixelwidth,viewPixelHeight:s.pixelheight,clearOnAccess:!1})}function N8(s,e){if(e===void 0)return;const t=this._cameraXR,n=this._renderer,i=n.backend,a=this._glBaseLayer,o=this.getReferenceSpace(),u=e.getViewerPose(o);if(this._xrFrame=e,u!==null){const c=u.views;this._glBaseLayer!==null&&i.setXRTarget(a.framebuffer);let d=!1;c.length!==t.cameras.length&&(t.cameras.length=0,d=!0);for(let g=0;gPa(this,null,function*(){yield this.compileAsync(B,I);const ee=this._renderLists.get(B,I),q=this._renderContexts.get(B,I,this._renderTarget,this._mrt),ye=B.overrideMaterial||ne.material,Ce=this._objects.get(ne,ye,B,I,ee.lightsNode,q,q.clippingContext),{fragmentShader:ke,vertexShader:nt}=Ce.getNodeBuilderState();return{fragmentShader:ke,vertexShader:nt}})}}init(){return Pa(this,null,function*(){return this._initPromise!==null?this._initPromise:(this._initPromise=new Promise((e,t)=>Pa(this,null,function*(){let n=this.backend;try{yield n.init(this)}catch(i){if(this._getFallback!==null)try{this.backend=n=this._getFallback(i),yield n.init(this)}catch(a){t(a);return}else{t(i);return}}this._nodes=new x8(this,n),this._animation=new e5(this,this._nodes,this.info),this._attributes=new o5(n),this._background=new P6(this,this._nodes),this._geometries=new l5(this._attributes,this.info),this._textures=new S5(this,n,this.info),this._pipelines=new f5(n,this._nodes),this._bindings=new A5(n,this._nodes,this._textures,this._attributes,this._pipelines,this.info),this._objects=new i5(this,this._nodes,this._geometries,this._pipelines,this._bindings,this.info),this._renderLists=new m5(this.lighting),this._bundles=new _8,this._renderContexts=new _5,this._animation.start(),this._initialized=!0,this._inspector.init(),e(this)})),this._initPromise)})}get domElement(){return this._canvasTarget.domElement}get coordinateSystem(){return this.backend.coordinateSystem}compileAsync(e,t,n=null){return Pa(this,null,function*(){if(this._isDeviceLost===!0)return;this._initialized===!1&&(yield this.init());const i=this._nodes.nodeFrame,a=i.renderId,o=this._currentRenderContext,u=this._currentRenderObjectFunction,c=this._compilationPromises,d=e.isScene===!0?e:SN;n===null&&(n=e);const g=this._renderTarget,v=this._renderContexts.get(n,t,g,this._mrt),M=this._activeMipmapLevel,B=[];this._currentRenderContext=v,this._currentRenderObjectFunction=this.renderObject,this._handleObjectFunction=this._createObjectPipeline,this._compilationPromises=B,i.renderId++,i.update(),v.depth=this.depth,v.stencil=this.stencil,v.clippingContext||(v.clippingContext=new R_),v.clippingContext.updateGlobal(d,t),d.onBeforeRender(this,e,t,g);const I=this._renderLists.get(e,t);if(I.begin(),this._projectObject(e,t,0,I,v.clippingContext),n!==e&&n.traverseVisible(function(Ce){Ce.isLight&&Ce.layers.test(t.layers)&&I.pushLight(Ce)}),I.finish(),g!==null){this._textures.updateRenderTarget(g,M);const Ce=this._textures.get(g);v.textures=Ce.textures,v.depthTexture=Ce.depthTexture}else v.textures=null,v.depthTexture=null;this._background.update(d,I,v);const ne=I.opaque,ee=I.transparent,q=I.transparentDoublePass,ye=I.lightsNode;this.opaque===!0&&ne.length>0&&this._renderObjects(ne,t,d,ye),this.transparent===!0&&ee.length>0&&this._renderTransparents(ee,q,t,d,ye),i.renderId=a,this._currentRenderContext=o,this._currentRenderObjectFunction=u,this._compilationPromises=c,this._handleObjectFunction=this._renderObjectDirect,yield Promise.all(B)})}renderAsync(e,t){return Pa(this,null,function*(){ki('Renderer: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.render(e,t)})}waitForGPU(){return Pa(this,null,function*(){Gr("Renderer: waitForGPU() has been removed. Read https://github.com/mrdoob/three.js/issues/32012 for more information.")})}set inspector(e){this._inspector!==null&&this._inspector.setRenderer(null),this._inspector=e,this._inspector.setRenderer(this)}get inspector(){return this._inspector}set highPrecision(e){const t=this.contextNode.value;e===!0?(t.modelViewMatrix=lS,t.modelNormalViewMatrix=uS):this.highPrecision&&(delete t.modelViewMatrix,delete t.modelNormalViewMatrix)}get highPrecision(){const e=this.contextNode.value;return e.modelViewMatrix===lS&&e.modelNormalViewMatrix===uS}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getOutputBufferType(){return this._outputBufferType}getColorBufferType(){return ki('Renderer: ".getColorBufferType()" has been renamed to ".getOutputBufferType()".'),this.getOutputBufferType()}_onDeviceLost(e){let t=`THREE.WebGPURenderer: ${e.api} Device Lost: - -Message: ${e.message}`;e.reason&&(t+=` -Reason: ${e.reason}`),Gr(t),this._isDeviceLost=!0}_renderBundle(e,t,n){const{bundleGroup:i,camera:a,renderList:o}=e,u=this._currentRenderContext,c=this._bundles.get(i,a),d=this.backend.get(c);d.renderContexts===void 0&&(d.renderContexts=new Set);const g=i.version!==d.version,v=d.renderContexts.has(u)===!1||g;if(d.renderContexts.add(u),v){this.backend.beginBundle(u),(d.renderObjects===void 0||g)&&(d.renderObjects=[]),this._currentRenderBundle=c;const{transparentDoublePass:M,transparent:B,opaque:I}=o;this.opaque===!0&&I.length>0&&this._renderObjects(I,a,t,n),this.transparent===!0&&B.length>0&&this._renderTransparents(B,M,a,t,n),this._currentRenderBundle=null,this.backend.finishBundle(u,c),d.version=i.version}else{const{renderObjects:M}=d;for(let B=0,I=M.length;B>=M,I.viewportValue.height>>=M,I.viewportValue.minDepth=nt,I.viewportValue.maxDepth=Ye,I.viewport=I.viewportValue.equals(UM)===!1,I.scissorValue.copy(Ce).multiplyScalar(ke).floor(),I.scissor=q._scissorTest&&I.scissorValue.equals(UM)===!1,I.scissorValue.width>>=M,I.scissorValue.height>>=M,I.clippingContext||(I.clippingContext=new R_),I.clippingContext.updateGlobal(d,t),d.onBeforeRender(this,e,t,B);const ht=t.isArrayCamera?DM:OM;t.isArrayCamera||(I_.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),ht.setFromProjectionMatrix(I_,t.coordinateSystem,t.reversedDepth));const Rt=this._renderLists.get(e,t);if(Rt.begin(),this._projectObject(e,t,0,Rt,I.clippingContext),Rt.finish(),this.sortObjects===!0&&Rt.sort(this._opaqueSort,this._transparentSort),B!==null){this._textures.updateRenderTarget(B,M);const Br=this._textures.get(B);I.textures=Br.textures,I.depthTexture=Br.depthTexture,I.width=Br.width,I.height=Br.height,I.renderTarget=B,I.depth=B.depthBuffer,I.stencil=B.stencilBuffer}else I.textures=null,I.depthTexture=null,I.width=Ov.width,I.height=Ov.height,I.depth=this.depth,I.stencil=this.stencil;I.width>>=M,I.height>>=M,I.activeCubeFace=v,I.activeMipmapLevel=M,I.occlusionQueryCount=Rt.occlusionQueryCount,I.scissorValue.max(rm.set(0,0,0,0)),I.scissorValue.x+I.scissorValue.width>I.width&&(I.scissorValue.width=Math.max(I.width-I.scissorValue.x,0)),I.scissorValue.y+I.scissorValue.height>I.height&&(I.scissorValue.height=Math.max(I.height-I.scissorValue.y,0)),this._background.update(d,Rt,I),I.camera=t,this.backend.beginRender(I);const{bundles:qe,lightsNode:pt,transparentDoublePass:xn,transparent:cr,opaque:pr}=Rt;return qe.length>0&&this._renderBundles(qe,d,pt),this.opaque===!0&&pr.length>0&&this._renderObjects(pr,t,d,pt),this.transparent===!0&&cr.length>0&&this._renderTransparents(cr,xn,t,d,pt),this.backend.finishRender(I),a.renderId=o,this._currentRenderContext=u,this._currentRenderObjectFunction=c,i!==null&&(this.setRenderTarget(g,v,M),this._renderOutput(B)),d.onAfterRender(this,e,t,B),this.inspector.finishRender(this.backend.getTimestampUID(I)),I}_setXRLayerSize(e,t){this._canvasTarget._width=e,this._canvasTarget._height=t,this.setViewport(0,0,e,t)}_renderOutput(e){const t=this._quad;this._nodes.hasOutputChange(e.texture)&&(t.material.fragmentNode=this._nodes.getOutputNode(e.texture),t.material.needsUpdate=!0);const n=this.autoClear,i=this.xr.enabled;this.autoClear=!1,this.xr.enabled=!1,this._renderScene(t,t.camera,!1),this.autoClear=n,this.xr.enabled=i}getMaxAnisotropy(){return this.backend.getMaxAnisotropy()}getActiveCubeFace(){return this._activeCubeFace}getActiveMipmapLevel(){return this._activeMipmapLevel}setAnimationLoop(e){return Pa(this,null,function*(){this._initialized===!1&&(yield this.init()),this._animation.setAnimationLoop(e)})}getAnimationLoop(){return this._animation.getAnimationLoop()}getArrayBufferAsync(e){return Pa(this,null,function*(){return yield this.backend.getArrayBufferAsync(e)})}getContext(){return this.backend.getContext()}getPixelRatio(){return this._canvasTarget.getPixelRatio()}getDrawingBufferSize(e){return this._canvasTarget.getDrawingBufferSize(e)}getSize(e){return this._canvasTarget.getSize(e)}setPixelRatio(e=1){this._canvasTarget.setPixelRatio(e)}setDrawingBufferSize(e,t,n){this.xr&&this.xr.isPresenting||this._canvasTarget.setDrawingBufferSize(e,t,n)}setSize(e,t,n=!0){this.xr&&this.xr.isPresenting||this._canvasTarget.setSize(e,t,n)}setOpaqueSort(e){this._opaqueSort=e}setTransparentSort(e){this._transparentSort=e}getScissor(e){return this._canvasTarget.getScissor(e)}setScissor(e,t,n,i){this._canvasTarget.setScissor(e,t,n,i)}getScissorTest(){return this._canvasTarget.getScissorTest()}setScissorTest(e){this._canvasTarget.setScissorTest(e),this.backend.setScissorTest(e)}getViewport(e){return this._canvasTarget.getViewport(e)}setViewport(e,t,n,i,a=0,o=1){this._canvasTarget.setViewport(e,t,n,i,a,o)}getClearColor(e){return e.copy(this._clearColor)}setClearColor(e,t=1){this._clearColor.set(e),this._clearColor.a=t}getClearAlpha(){return this._clearColor.a}setClearAlpha(e){this._clearColor.a=e}getClearDepth(){return this._clearDepth}setClearDepth(e){this._clearDepth=e}getClearStencil(){return this._clearStencil}setClearStencil(e){this._clearStencil=e}isOccluded(e){const t=this._currentRenderContext;return t&&this.backend.isOccluded(t,e)}clear(e=!0,t=!0,n=!0){if(this._initialized===!1)throw new Error('Renderer: .clear() called before the backend is initialized. Use "await renderer.init();" before before using this method.');const i=this._renderTarget||this._getFrameBufferTarget();let a=null;if(i!==null){this._textures.updateRenderTarget(i);const o=this._textures.get(i);a=this._renderContexts.getForClear(i),a.textures=o.textures,a.depthTexture=o.depthTexture,a.width=o.width,a.height=o.height,a.renderTarget=i,a.depth=i.depthBuffer,a.stencil=i.stencilBuffer,a.clearColorValue=this.backend.getClearColor(),a.activeCubeFace=this.getActiveCubeFace(),a.activeMipmapLevel=this.getActiveMipmapLevel()}this.backend.clear(e,t,n,a),i!==null&&this._renderTarget===null&&this._renderOutput(i)}clearColor(){this.clear(!0,!1,!1)}clearDepth(){this.clear(!1,!0,!1)}clearStencil(){this.clear(!1,!1,!0)}clearAsync(e=!0,t=!0,n=!0){return Pa(this,null,function*(){ki('Renderer: "clearAsync()" has been deprecated. Use "clear()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.clear(e,t,n)})}clearColorAsync(){return Pa(this,null,function*(){ki('Renderer: "clearColorAsync()" has been deprecated. Use "clearColor()" and "await renderer.init();" when creating the renderer.'),this.clear(!0,!1,!1)})}clearDepthAsync(){return Pa(this,null,function*(){ki('Renderer: "clearDepthAsync()" has been deprecated. Use "clearDepth()" and "await renderer.init();" when creating the renderer.'),this.clear(!1,!0,!1)})}clearStencilAsync(){return Pa(this,null,function*(){ki('Renderer: "clearStencilAsync()" has been deprecated. Use "clearStencil()" and "await renderer.init();" when creating the renderer.'),this.clear(!1,!1,!0)})}get needsFrameBufferTarget(){const e=this.currentToneMapping!==Ct,t=this.currentColorSpace!==xr.workingColorSpace;return e||t}get samples(){return this._samples}get currentSamples(){let e=this._samples;return this._renderTarget!==null?e=this._renderTarget.samples:this.needsFrameBufferTarget&&(e=0),e}get currentToneMapping(){return this.isOutputTarget?this.toneMapping:Ct}get currentColorSpace(){return this.isOutputTarget?this.outputColorSpace:xr.workingColorSpace}get isOutputTarget(){return this._renderTarget===this._outputRenderTarget||this._renderTarget===null}dispose(){this._initialized===!0&&(this.info.dispose(),this.backend.dispose(),this._animation.dispose(),this._objects.dispose(),this._geometries.dispose(),this._pipelines.dispose(),this._nodes.dispose(),this._bindings.dispose(),this._renderLists.dispose(),this._renderContexts.dispose(),this._textures.dispose(),this._frameBufferTarget!==null&&this._frameBufferTarget.dispose(),Object.values(this.backend.timestampQueryPool).forEach(e=>{e!==null&&e.dispose()})),this.setRenderTarget(null),this.setAnimationLoop(null)}setRenderTarget(e,t=0,n=0){this._renderTarget=e,this._activeCubeFace=t,this._activeMipmapLevel=n}getRenderTarget(){return this._renderTarget}setOutputRenderTarget(e){this._outputRenderTarget=e}getOutputRenderTarget(){return this._outputRenderTarget}setCanvasTarget(e){this._canvasTarget.removeEventListener("resize",this._onCanvasTargetResize),this._canvasTarget=e,this._canvasTarget.addEventListener("resize",this._onCanvasTargetResize)}getCanvasTarget(){return this._canvasTarget}_resetXRState(){this.backend.setXRTarget(null),this.setOutputRenderTarget(null),this.setRenderTarget(null),this._frameBufferTarget.dispose(),this._frameBufferTarget=null}setRenderObjectFunction(e){this._renderObjectFunction=e}getRenderObjectFunction(){return this._renderObjectFunction}compute(e,t=null){if(this._isDeviceLost===!0)return;if(this._initialized===!1)return Lr("Renderer: .compute() called before the backend is initialized. Try using .computeAsync() instead."),this.computeAsync(e,t);const n=this._nodes.nodeFrame,i=n.renderId;this.info.calls++,this.info.compute.calls++,this.info.compute.frameCalls++,n.renderId=this.info.calls,this.backend.updateTimeStampUID(e),this.inspector.beginCompute(this.backend.getTimestampUID(e),e);const a=this.backend,o=this._pipelines,u=this._bindings,c=this._nodes,d=Array.isArray(e)?e:[e];if(d[0]===void 0||d[0].isComputeNode!==!0)throw new Error("THREE.Renderer: .compute() expects a ComputeNode.");a.beginCompute(e);for(const g of d){if(o.has(g)===!1){const B=()=>{g.removeEventListener("dispose",B),o.delete(g),u.deleteForCompute(g),c.delete(g)};g.addEventListener("dispose",B);const I=g.onInitFunction;I!==null&&I.call(g,{renderer:this})}c.updateForCompute(g),u.updateForCompute(g);const v=u.getForCompute(g),M=o.getForCompute(g,v);a.compute(e,g,v,M,t)}a.finishCompute(e),n.renderId=i,this.inspector.finishCompute(this.backend.getTimestampUID(e))}computeAsync(e,t=null){return Pa(this,null,function*(){this._initialized===!1&&(yield this.init()),this.compute(e,t)})}hasFeatureAsync(e){return Pa(this,null,function*(){return ki('Renderer: "hasFeatureAsync()" has been deprecated. Use "hasFeature()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.hasFeature(e)})}resolveTimestampsAsync(e="render"){return Pa(this,null,function*(){return this._initialized===!1&&(yield this.init()),this.backend.resolveTimestampsAsync(e)})}hasFeature(e){if(this._initialized===!1)throw new Error('Renderer: .hasFeature() called before the backend is initialized. Use "await renderer.init();" before before using this method.');return this.backend.hasFeature(e)}hasInitialized(){return this._initialized}initTextureAsync(e){return Pa(this,null,function*(){ki('Renderer: "initTextureAsync()" has been deprecated. Use "initTexture()" and "await renderer.init();" when creating the renderer.'),yield this.init(),this.initTexture(e)})}initTexture(e){if(this._initialized===!1)throw new Error('Renderer: .initTexture() called before the backend is initialized. Use "await renderer.init();" before before using this method.');this._textures.updateTexture(e)}copyFramebufferToTexture(e,t=null){if(t!==null)if(t.isVector2)t=rm.set(t.x,t.y,e.image.width,e.image.height).floor();else if(t.isVector4)t=rm.copy(t).floor();else{Gr("Renderer.copyFramebufferToTexture: Invalid rectangle.");return}else t=rm.set(0,0,e.image.width,e.image.height);let n=this._currentRenderContext,i;n!==null?i=n.renderTarget:(i=this._renderTarget||this._getFrameBufferTarget(),i!==null&&(this._textures.updateRenderTarget(i),n=this._textures.get(i))),this._textures.updateTexture(e,{renderTarget:i}),this.backend.copyFramebufferToTexture(e,n,t),this._inspector.copyFramebufferToTexture(e)}copyTextureToTexture(e,t,n=null,i=null,a=0,o=0){this._textures.updateTexture(e),this._textures.updateTexture(t),this.backend.copyTextureToTexture(e,t,n,i,a,o),this._inspector.copyTextureToTexture(e,t)}readRenderTargetPixelsAsync(e,t,n,i,a,o=0,u=0){return Pa(this,null,function*(){return this.backend.copyTextureToBuffer(e.textures[o],t,n,i,a,u)})}_projectObject(e,t,n,i,a){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder,e.isClippingGroup&&e.enabled&&(a=a.getGroupContext(e));else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLight)i.pushLight(e);else if(e.isSprite){const c=t.isArrayCamera?DM:OM;if(!e.frustumCulled||c.intersectsSprite(e,t)){this.sortObjects===!0&&rm.setFromMatrixPosition(e.matrixWorld).applyMatrix4(I_);const{geometry:d,material:g}=e;g.visible&&i.push(e,d,g,n,rm.z,null,a)}}else if(e.isLineLoop)Gr("Renderer: Objects of type THREE.LineLoop are not supported. Please use THREE.Line or THREE.LineSegments.");else if(e.isMesh||e.isLine||e.isPoints){const c=t.isArrayCamera?DM:OM;if(!e.frustumCulled||c.intersectsObject(e,t)){const{geometry:d,material:g}=e;if(this.sortObjects===!0&&(d.boundingSphere===null&&d.computeBoundingSphere(),rm.copy(d.boundingSphere.center).applyMatrix4(e.matrixWorld).applyMatrix4(I_)),Array.isArray(g)){const v=d.groups;for(let M=0,B=v.length;M0){for(const{material:o}of t)o.side=de;this._renderObjects(t,n,i,a,"backSide");for(const{material:o}of t)o.side=j;this._renderObjects(e,n,i,a);for(const{material:o}of t)o.side=he}else this._renderObjects(e,n,i,a)}_renderObjects(e,t,n,i,a=null){for(let o=0,u=e.length;o0||a.transmissionNode&&a.transmissionNode.isNode||a.backdropNode&&a.backdropNode.isNode,ne.isShadowPassMaterial){const{colorNode:ee,depthNode:q,positionNode:ye}=this._getShadowNodes(a);ne.side=a.shadowSide===null?a.side:a.shadowSide,ee!==null&&(ne.colorNode=ee),q!==null&&(ne.depthNode=q),ye!==null&&(ne.positionNode=ye)}a=ne}a.transparent===!0&&a.side===he&&a.forceSinglePass===!1?(a.side=de,this._handleObjectFunction(e,a,t,n,u,o,c,"backSide"),a.side=j,this._handleObjectFunction(e,a,t,n,u,o,c,d),a.side=he):this._handleObjectFunction(e,a,t,n,u,o,c,d),g&&(t.overrideMaterial.colorNode=v,t.overrideMaterial.depthNode=M,t.overrideMaterial.positionNode=B,t.overrideMaterial.side=I),e.onAfterRender(this,t,n,i,a,o)}_renderObjectDirect(e,t,n,i,a,o,u,c){const d=this._objects.get(e,t,n,i,a,this._currentRenderContext,u,c);d.drawRange=e.geometry.drawRange,d.group=o;const g=this._nodes.needsRefresh(d);g&&(this._nodes.updateBefore(d),this._geometries.updateForRender(d),this._nodes.updateForRender(d),this._bindings.updateForRender(d)),this._pipelines.updateForRender(d),this._currentRenderBundle!==null&&(this.backend.get(this._currentRenderBundle).renderObjects.push(d),d.bundle=this._currentRenderBundle.bundleGroup),this.backend.draw(d,this.info),g&&this._nodes.updateAfter(d)}_createObjectPipeline(e,t,n,i,a,o,u,c){const d=this._objects.get(e,t,n,i,a,this._currentRenderContext,u,c);d.drawRange=e.geometry.drawRange,d.group=o,this._nodes.updateBefore(d),this._geometries.updateForRender(d),this._nodes.updateForRender(d),this._bindings.updateForRender(d),this._pipelines.getForRender(d,this._compilationPromises),this._nodes.updateAfter(d)}_onCanvasTargetResize(){this._initialized&&this.backend.updateSize()}get compile(){return this.compileAsync}}class MN{constructor(e=""){this.name=e,this.visibility=0}setVisibility(e){this.visibility|=e}getVisibility(){return this.visibility}clone(){return Object.assign(new this.constructor,this)}}function L8(s){return s+(zm-s%zm)%zm}class EN extends MN{constructor(e,t=null){super(e),this.isBuffer=!0,this.bytesPerElement=Float32Array.BYTES_PER_ELEMENT,this._buffer=t,this._updateRanges=[]}get updateRanges(){return this._updateRanges}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}get byteLength(){return L8(this._buffer.byteLength)}get buffer(){return this._buffer}update(){return!0}}class CN extends EN{constructor(e,t=null){super(e,t),this.isUniformBuffer=!0}}let U8=0;class TN extends CN{constructor(e,t){super("UniformBuffer_"+U8++,e?e.value:null),this.nodeUniform=e,this.groupNode=t,this.isNodeUniformBuffer=!0}set updateRanges(e){this.nodeUniform.updateRanges=e}get updateRanges(){return this.nodeUniform.updateRanges}addUpdateRange(e,t){this.nodeUniform.addUpdateRange(e,t)}clearUpdateRanges(){this.nodeUniform.clearUpdateRanges()}get buffer(){return this.nodeUniform.value}}class O8 extends CN{constructor(e){super(e),this.isUniformsGroup=!0,this._values=null,this.uniforms=[]}addUniform(e){return this.uniforms.push(e),this}removeUniform(e){const t=this.uniforms.indexOf(e);return t!==-1&&this.uniforms.splice(t,1),this}get values(){return this._values===null&&(this._values=Array.from(this.buffer)),this._values}get buffer(){let e=this._buffer;if(e===null){const t=this.byteLength;e=new Float32Array(new ArrayBuffer(t)),this._buffer=e}return e}get byteLength(){const e=this.bytesPerElement;let t=0;for(let n=0,i=this.uniforms.length;n{this.generation=null,this.version=0},this.texture=t,this.version=t?t.version:0,this.generation=null,this.samplerKey="",this.isSampler=!0}set texture(e){this._texture!==e&&(this._texture&&this._texture.removeEventListener("dispose",this._onTextureDispose),this._texture=e,this.generation=null,this.version=0,this._texture&&this._texture.addEventListener("dispose",this._onTextureDispose))}get texture(){return this._texture}update(){const{texture:e,version:t}=this;return t!==e.version?(this.version=e.version,!0):!1}clone(){const e=super.clone();return e._texture=null,e._onTextureDispose=()=>{e.generation=null,e.version=0},e.texture=this.texture,e}}let z8=0;class G8 extends RN{constructor(e,t){super(e,t),this.id=z8++,this.store=!1,this.mipLevel=0,this.isSampledTexture=!0}}class N_ extends G8{constructor(e,t,n,i=null){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n,this.access=i}update(){const{textureNode:e}=this;return this.texture!==e.value?(this.texture=e.value,!0):super.update()}}class IN extends N_{constructor(e,t,n,i=null){super(e,t,n,i),this.isSampledCubeTexture=!0}}class kM extends N_{constructor(e,t,n,i=null){super(e,t,n,i),this.isSampledTexture3D=!0}}const NN={bitcast_int_uint:new Wh("uint tsl_bitcast_int_to_uint ( int x ) { return floatBitsToUint( intBitsToFloat ( x ) ); }"),bitcast_uint_int:new Wh("uint tsl_bitcast_uint_to_int ( uint x ) { return floatBitsToInt( uintBitsToFloat ( x ) ); }")},H8={textureDimensions:"textureSize",equals:"equal",bitcast_float_int:"floatBitsToInt",bitcast_int_float:"intBitsToFloat",bitcast_uint_float:"uintBitsToFloat",bitcast_float_uint:"floatBitsToUint",bitcast_uint_int:"tsl_bitcast_uint_to_int",bitcast_int_uint:"tsl_bitcast_int_to_uint",floatpack_snorm_2x16:"packSnorm2x16",floatpack_unorm_2x16:"packUnorm2x16",floatpack_float16_2x16:"packHalf2x16",floatunpack_snorm_2x16:"unpackSnorm2x16",floatunpack_unorm_2x16:"unpackUnorm2x16",floatunpack_float16_2x16:"unpackHalf2x16"},Q8={low:"lowp",medium:"mediump",high:"highp"},FN={swizzleAssign:!0,storageBuffer:!1},PN={perspective:"smooth",linear:"noperspective"},LN={centroid:"centroid"},UN=` -precision highp float; -precision highp int; -precision highp sampler2D; -precision highp sampler3D; -precision highp samplerCube; -precision highp sampler2DArray; - -precision highp usampler2D; -precision highp usampler3D; -precision highp usamplerCube; -precision highp usampler2DArray; - -precision highp isampler2D; -precision highp isampler3D; -precision highp isamplerCube; -precision highp isampler2DArray; - -precision lowp sampler2DShadow; -precision lowp sampler2DArrayShadow; -precision lowp samplerCubeShadow; -`;class W8 extends pN{constructor(e,t){super(e,t,new y8),this.uniformGroups={},this.transforms=[],this.extensions={},this.builtins={vertex:[],fragment:[],compute:[]}}needsToWorkingColorSpace(e){return e.isVideoTexture===!0&&e.colorSpace!==ao}_include(e){const t=NN[e];return t.build(this),this.addInclude(t),t}getMethod(e){return NN[e]!==void 0&&this._include(e),H8[e]||e}getBitcastMethod(e,t){return this.getMethod(`bitcast_${t}_${e}`)}getFloatPackingMethod(e){return this.getMethod(`floatpack_${e}_2x16`)}getFloatUnpackingMethod(e){return this.getMethod(`floatunpack_${e}_2x16`)}getTernary(e,t,n){return`${e} ? ${t} : ${n}`}getOutputStructName(){return""}buildFunctionCode(e){const t=e.layout,n=this.flowShaderNode(e),i=[];for(const o of t.inputs)i.push(this.getType(o.type)+" "+o.name);return`${this.getType(t.type)} ${t.name}( ${i.join(", ")} ) { - - ${n.vars} - -${n.code} - return ${n.result}; - -}`}setupPBO(e){const t=e.value;if(t.pbo===void 0){const n=t.array,i=t.count*t.itemSize,{itemSize:a}=t,o=t.array.constructor.name.toLowerCase().includes("int");let u=o?ie:z;a===2?u=o?Je:ze:a===3?u=o?At:Ie:a===4&&(u=o?xt:L);const c={Float32Array:dt,Uint8Array:es,Uint16Array:rn,Uint32Array:st,Int8Array:Ci,Int16Array:En,Int32Array:Xt,Uint8ClampedArray:es},d=Math.pow(2,Math.ceil(Math.log2(Math.sqrt(i/a))));let g=Math.ceil(i/a/d);d*g*a0?M:"";u=`${g.name} { - ${v} ${o.name}[${B}]; -}; -`}else u=`${this.getVectorType(o.type)} ${this.getPropertyName(o,e)};`,c=!0;const d=o.node.precision;if(d!==null&&(u=Q8[d]+" "+u),c){u=" "+u;const g=o.groupNode.name;(i[g]||(i[g]=[])).push(u)}else u="uniform "+u,n.push(u)}let a="";for(const o in i){const u=i[o];a+=this._getGLSLUniformStruct(e+"_"+o,u.join(` -`))+` -`}return a+=n.join(` -`),a}getTypeFromAttribute(e){let t=super.getTypeFromAttribute(e);if(/^[iu]/.test(t)&&e.gpuType!==Xt){let n=e;e.isInterleavedBufferAttribute&&(n=e.data);const i=n.array;i instanceof Uint32Array||i instanceof Int32Array||(t=t.slice(1))}return t}getAttributes(e){let t="";if(e==="vertex"||e==="compute"){const n=this.getAttributesArray();let i=0;for(const a of n)t+=`layout( location = ${i++} ) in ${a.type} ${a.name}; -`}return t}getStructMembers(e){const t=[];for(const n of e.members)t.push(` ${n.type} ${n.name};`);return t.join(` -`)}getStructs(e){const t=[],n=this.structs[e],i=[];for(const a of n)if(a.output)for(const o of a.members)i.push(`layout( location = ${o.index} ) out ${o.type} ${o.name};`);else{let o="struct "+a.name+` { -`;o+=this.getStructMembers(a),o+=` -}; -`,t.push(o)}return i.length===0&&i.push("layout( location = 0 ) out vec4 fragColor;"),` -`+i.join(` -`)+` - -`+t.join(` -`)}getVaryings(e){let t="";const n=this.varyings;if(e==="vertex"||e==="compute")for(const i of n){e==="compute"&&(i.needsInterpolation=!0);const a=this.getType(i.type);if(i.needsInterpolation)if(i.interpolationType){const o=PN[i.interpolationType]||i.interpolationType,u=LN[i.interpolationSampling]||"";t+=`${o} ${u} out ${a} ${i.name}; -`}else{const o=a.includes("int")||a.includes("uv")||a.includes("iv")?"flat ":"";t+=`${o}out ${a} ${i.name}; -`}else t+=`${a} ${i.name}; -`}else if(e==="fragment"){for(const i of n)if(i.needsInterpolation){const a=this.getType(i.type);if(i.interpolationType){const o=PN[i.interpolationType]||i.interpolationType,u=LN[i.interpolationSampling]||"";t+=`${o} ${u} in ${a} ${i.name}; -`}else{const o=a.includes("int")||a.includes("uv")||a.includes("iv")?"flat ":"";t+=`${o}in ${a} ${i.name}; -`}}}for(const i of this.builtins[e])t+=`${i}; -`;return t}getVertexIndex(){return"uint( gl_VertexID )"}getInstanceIndex(){return"uint( gl_InstanceID )"}getInvocationLocalIndex(){return`uint( gl_InstanceID ) % ${this.object.workgroupSize.reduce((n,i)=>n*i,1)}u`}getSubgroupSize(){Gr("GLSLNodeBuilder: WebGLBackend does not support the subgroupSize node")}getInvocationSubgroupIndex(){Gr("GLSLNodeBuilder: WebGLBackend does not support the invocationSubgroupIndex node")}getSubgroupIndex(){Gr("GLSLNodeBuilder: WebGLBackend does not support the subgroupIndex node")}getDrawIndex(){return this.renderer.backend.extensions.has("WEBGL_multi_draw")?"uint( gl_DrawID )":null}getFrontFacing(){return"gl_FrontFacing"}getFragCoord(){return"gl_FragCoord.xy"}getFragDepth(){return"gl_FragDepth"}enableExtension(e,t,n=this.shaderStage){const i=this.extensions[n]||(this.extensions[n]=new Map);i.has(e)===!1&&i.set(e,{name:e,behavior:t})}getExtensions(e){const t=[];if(e==="vertex"){const i=this.renderer.backend.extensions;this.object.isBatchedMesh&&i.has("WEBGL_multi_draw")&&this.enableExtension("GL_ANGLE_multi_draw","require",e)}const n=this.extensions[e];if(n!==void 0)for(const{name:i,behavior:a}of n.values())t.push(`#extension ${i} : ${a}`);return t.join(` -`)}getClipDistance(){return"gl_ClipDistance"}isAvailable(e){let t=FN[e];if(t===void 0){let n;switch(t=!1,e){case"float32Filterable":n="OES_texture_float_linear";break;case"clipDistance":n="WEBGL_clip_cull_distance";break}if(n!==void 0){const i=this.renderer.backend.extensions;i.has(n)&&(i.get(n),t=!0)}FN[e]=t}return t}isFlipY(){return!0}enableHardwareClipping(e){this.enableExtension("GL_ANGLE_clip_cull_distance","require"),this.builtins.vertex.push(`out float gl_ClipDistance[ ${e} ]`)}enableMultiview(){this.enableExtension("GL_OVR_multiview2","require","fragment"),this.enableExtension("GL_OVR_multiview2","require","vertex"),this.builtins.vertex.push("layout(num_views = 2) in")}registerTransform(e,t){this.transforms.push({varyingName:e,attributeNode:t})}getTransforms(){const e=this.transforms;let t="";for(let n=0;n0&&(n+=` -`),n+=` // flow -> ${d} - `),n+=`${c.code} - `,u===a&&t!=="compute"&&(n+=`// result - `,t==="vertex"?(n+="gl_Position = ",n+=`${c.result};`):t==="fragment"&&(u.outputNode.isOutputStructNode||(n+="fragColor = ",n+=`${c.result};`)))}const o=e[t];o.extensions=this.getExtensions(t),o.uniforms=this.getUniforms(t),o.attributes=this.getAttributes(t),o.varyings=this.getVaryings(t),o.vars=this.getVars(t),o.structs=this.getStructs(t),o.codes=this.getCodes(t),o.transforms=this.getTransforms(t),o.flow=n}this.material!==null?(this.vertexShader=this._getGLSLVertexCode(e.vertex),this.fragmentShader=this._getGLSLFragmentCode(e.fragment)):this.computeShader=this._getGLSLVertexCode(e.compute)}getUniformFromNode(e,t,n,i=null){const a=super.getUniformFromNode(e,t,n,i),o=this.getDataFromNode(e,n,this.globalCache);let u=o.uniformGPU;if(u===void 0){const c=e.groupNode,d=c.name,g=this.getBindGroupArray(d,n);if(t==="texture")u=new N_(a.name,a.node,c),g.push(u);else if(t==="cubeTexture"||t==="cubeDepthTexture")u=new IN(a.name,a.node,c),g.push(u);else if(t==="texture3D")u=new kM(a.name,a.node,c),g.push(u);else if(t==="buffer"){a.name=`buffer${e.id}`;const v=this.getSharedDataFromNode(e);let M=v.buffer;M===void 0&&(e.name=`NodeBuffer_${e.id}`,M=new TN(e,c),M.name=e.name,v.buffer=M),g.push(M),u=M}else{const v=this.uniformGroups[n]||(this.uniformGroups[n]={});let M=v[d];M===void 0&&(M=new BN(n+"_"+d,c),v[d]=M,g.push(M)),u=this.getNodeUniform(a,t),M.addUniform(u)}o.uniformGPU=u}return a}}let VM=null,Dv=null;class ON{constructor(e={}){this.parameters=Object.assign({},e),this.data=new WeakMap,this.renderer=null,this.domElement=null,this.timestampQueryPool={[ml.RENDER]:null,[ml.COMPUTE]:null},this.trackTimestamp=e.trackTimestamp===!0}init(e){return Pa(this,null,function*(){this.renderer=e})}get coordinateSystem(){}beginRender(){}finishRender(){}beginCompute(){}finishCompute(){}draw(){}compute(){}createProgram(){}destroyProgram(){}createBindings(){}updateBindings(){}updateBinding(){}createRenderPipeline(){}createComputePipeline(){}needsRenderUpdate(){}getRenderCacheKey(){}createNodeBuilder(){}updateSampler(){}createDefaultTexture(){}createTexture(){}updateTexture(){}generateMipmaps(){}destroyTexture(){}copyTextureToBuffer(){return Pa(this,null,function*(){})}copyTextureToTexture(){}copyFramebufferToTexture(){}createAttribute(){}createIndexAttribute(){}createStorageAttribute(){}updateAttribute(){}destroyAttribute(){}getContext(){}updateSize(){}updateViewport(){}updateTimeStampUID(e){const t=this.get(e),n=this.renderer.info.frame;let i;e.isComputeNode===!0?i="c:"+this.renderer.info.compute.frameCalls:i="r:"+this.renderer.info.render.frameCalls,t.timestampUID=i+":"+e.id+":f"+n}getTimestampUID(e){return this.get(e).timestampUID}getTimestampFrames(e){const t=this.timestampQueryPool[e];return t?t.getTimestampFrames():[]}_getQueryPool(e){const t=e.startsWith("c:")?ml.COMPUTE:ml.RENDER;return this.timestampQueryPool[t]}getTimestamp(e){return this._getQueryPool(e).getTimestamp(e)}hasTimestamp(e){return this._getQueryPool(e).hasTimestamp(e)}isOccluded(){}resolveTimestampsAsync(e="render"){return Pa(this,null,function*(){if(!this.trackTimestamp){ki("WebGPURenderer: Timestamp tracking is disabled.");return}const t=this.timestampQueryPool[e];if(!t)return;const n=yield t.resolveQueriesAsync();return this.renderer.info[e].timestamp=n,n})}getArrayBufferAsync(){return Pa(this,null,function*(){})}hasFeatureAsync(){return Pa(this,null,function*(){})}hasFeature(){}getMaxAnisotropy(){}getDrawingBufferSize(){return VM=VM||new ce,this.renderer.getDrawingBufferSize(VM)}setScissorTest(){}getClearColor(){const e=this.renderer;return Dv=Dv||new nM,e.getClearColor(Dv),Dv.getRGB(Dv),Dv}getDomElement(){let e=this.domElement;return e===null&&(e=this.parameters.canvas!==void 0?this.parameters.canvas:yh(),"setAttribute"in e&&e.setAttribute("data-engine",`three.js r${m} webgpu`),this.domElement=e),e}set(e,t){this.data.set(e,t)}get(e){let t=this.data.get(e);return t===void 0&&(t={},this.data.set(e,t)),t}has(e){return this.data.has(e)}delete(e){this.data.delete(e)}deleteBindGroupData(){}dispose(){}}let Z8=0;class K8{constructor(e,t){this.buffers=[e.bufferGPU,t],this.type=e.type,this.bufferType=e.bufferType,this.pbo=e.pbo,this.byteLength=e.byteLength,this.bytesPerElement=e.BYTES_PER_ELEMENT,this.version=e.version,this.isInteger=e.isInteger,this.activeBufferIndex=0,this.baseId=e.id}get id(){return`${this.baseId}|${this.activeBufferIndex}`}get bufferGPU(){return this.buffers[this.activeBufferIndex]}get transformBuffer(){return this.buffers[this.activeBufferIndex^1]}switchBuffers(){this.activeBufferIndex^=1}}class $8{constructor(e){this.backend=e}createAttribute(e,t){const n=this.backend,{gl:i}=n,a=e.array,o=e.usage||i.STATIC_DRAW,u=e.isInterleavedBufferAttribute?e.data:e,c=n.get(u);let d=c.bufferGPU;d===void 0&&(d=this._createBuffer(i,t,a,o),c.bufferGPU=d,c.bufferType=t,c.version=u.version);let g;if(a instanceof Float32Array)g=i.FLOAT;else if(typeof Float16Array!="undefined"&&a instanceof Float16Array)g=i.HALF_FLOAT;else if(a instanceof Uint16Array)e.isFloat16BufferAttribute?g=i.HALF_FLOAT:g=i.UNSIGNED_SHORT;else if(a instanceof Int16Array)g=i.SHORT;else if(a instanceof Uint32Array)g=i.UNSIGNED_INT;else if(a instanceof Int32Array)g=i.INT;else if(a instanceof Int8Array)g=i.BYTE;else if(a instanceof Uint8Array)g=i.UNSIGNED_BYTE;else if(a instanceof Uint8ClampedArray)g=i.UNSIGNED_BYTE;else throw new Error("THREE.WebGLBackend: Unsupported buffer data format: "+a);let v={bufferGPU:d,bufferType:t,type:g,byteLength:a.byteLength,bytesPerElement:a.BYTES_PER_ELEMENT,version:e.version,pbo:e.pbo,isInteger:g===i.INT||g===i.UNSIGNED_INT||e.gpuType===Xt,id:Z8++};if(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute){const M=this._createBuffer(i,t,a,o);v=new K8(v,M)}n.set(e,v)}updateAttribute(e){const t=this.backend,{gl:n}=t,i=e.array,a=e.isInterleavedBufferAttribute?e.data:e,o=t.get(a),u=o.bufferType,c=e.isInterleavedBufferAttribute?e.data.updateRanges:e.updateRanges;if(n.bindBuffer(u,o.bufferGPU),c.length===0)n.bufferSubData(u,0,i);else{for(let d=0,g=c.length;d0?this.enable(i.SAMPLE_ALPHA_TO_COVERAGE):this.disable(i.SAMPLE_ALPHA_TO_COVERAGE),n>0&&this.currentClippingPlanes!==n)for(let c=0;c<8;c++)c{function a(){const o=e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0);if(o===e.WAIT_FAILED){e.deleteSync(t),i();return}if(o===e.TIMEOUT_EXPIRED){requestAnimationFrame(a);return}e.deleteSync(t),n()}a()})}}let DN=!1,F_,GM,kN;class Y8{constructor(e){this.backend=e,this.gl=e.gl,this.extensions=e.extensions,this.defaultTextures={},this._srcFramebuffer=null,this._dstFramebuffer=null,DN===!1&&(this._init(),DN=!0)}_init(){const e=this.gl;F_={[$t]:e.REPEAT,[Vt]:e.CLAMP_TO_EDGE,[Qt]:e.MIRRORED_REPEAT},GM={[cn]:e.NEAREST,[Yn]:e.NEAREST_MIPMAP_NEAREST,[Sr]:e.NEAREST_MIPMAP_LINEAR,[vr]:e.LINEAR,[Ki]:e.LINEAR_MIPMAP_NEAREST,[yi]:e.LINEAR_MIPMAP_LINEAR},kN={[gu]:e.NEVER,[$u]:e.ALWAYS,[oo]:e.LESS,[jc]:e.LEQUAL,[Ic]:e.EQUAL,[Ji]:e.GEQUAL,[ph]:e.GREATER,[Lo]:e.NOTEQUAL}}getGLTextureType(e){const{gl:t}=this;let n;return e.isCubeTexture===!0?n=t.TEXTURE_CUBE_MAP:e.isArrayTexture===!0||e.isDataArrayTexture===!0||e.isCompressedArrayTexture===!0?n=t.TEXTURE_2D_ARRAY:e.isData3DTexture===!0?n=t.TEXTURE_3D:n=t.TEXTURE_2D,n}getInternalFormat(e,t,n,i,a=!1){const{gl:o,extensions:u}=this;if(e!==null){if(o[e]!==void 0)return o[e];Lr("WebGLBackend: Attempt to use non-existing WebGL internal format '"+e+"'")}let c=t;if(t===o.RED&&(n===o.FLOAT&&(c=o.R32F),n===o.HALF_FLOAT&&(c=o.R16F),n===o.UNSIGNED_BYTE&&(c=o.R8),n===o.UNSIGNED_SHORT&&(c=o.R16),n===o.UNSIGNED_INT&&(c=o.R32UI),n===o.BYTE&&(c=o.R8I),n===o.SHORT&&(c=o.R16I),n===o.INT&&(c=o.R32I)),t===o.RED_INTEGER&&(n===o.UNSIGNED_BYTE&&(c=o.R8UI),n===o.UNSIGNED_SHORT&&(c=o.R16UI),n===o.UNSIGNED_INT&&(c=o.R32UI),n===o.BYTE&&(c=o.R8I),n===o.SHORT&&(c=o.R16I),n===o.INT&&(c=o.R32I)),t===o.RG&&(n===o.FLOAT&&(c=o.RG32F),n===o.HALF_FLOAT&&(c=o.RG16F),n===o.UNSIGNED_BYTE&&(c=o.RG8),n===o.UNSIGNED_SHORT&&(c=o.RG16),n===o.UNSIGNED_INT&&(c=o.RG32UI),n===o.BYTE&&(c=o.RG8I),n===o.SHORT&&(c=o.RG16I),n===o.INT&&(c=o.RG32I)),t===o.RG_INTEGER&&(n===o.UNSIGNED_BYTE&&(c=o.RG8UI),n===o.UNSIGNED_SHORT&&(c=o.RG16UI),n===o.UNSIGNED_INT&&(c=o.RG32UI),n===o.BYTE&&(c=o.RG8I),n===o.SHORT&&(c=o.RG16I),n===o.INT&&(c=o.RG32I)),t===o.RGB){const d=a?Uu:xr.getTransfer(i);n===o.FLOAT&&(c=o.RGB32F),n===o.HALF_FLOAT&&(c=o.RGB16F),n===o.UNSIGNED_BYTE&&(c=o.RGB8),n===o.UNSIGNED_SHORT&&(c=o.RGB16),n===o.UNSIGNED_INT&&(c=o.RGB32UI),n===o.BYTE&&(c=o.RGB8I),n===o.SHORT&&(c=o.RGB16I),n===o.INT&&(c=o.RGB32I),n===o.UNSIGNED_BYTE&&(c=d===ws?o.SRGB8:o.RGB8),n===o.UNSIGNED_SHORT_5_6_5&&(c=o.RGB565),n===o.UNSIGNED_SHORT_5_5_5_1&&(c=o.RGB5_A1),n===o.UNSIGNED_SHORT_4_4_4_4&&(c=o.RGB4),n===o.UNSIGNED_INT_5_9_9_9_REV&&(c=o.RGB9_E5),n===o.UNSIGNED_INT_10F_11F_11F_REV&&(c=o.R11F_G11F_B10F)}if(t===o.RGB_INTEGER&&(n===o.UNSIGNED_BYTE&&(c=o.RGB8UI),n===o.UNSIGNED_SHORT&&(c=o.RGB16UI),n===o.UNSIGNED_INT&&(c=o.RGB32UI),n===o.BYTE&&(c=o.RGB8I),n===o.SHORT&&(c=o.RGB16I),n===o.INT&&(c=o.RGB32I)),t===o.RGBA){const d=a?Uu:xr.getTransfer(i);n===o.FLOAT&&(c=o.RGBA32F),n===o.HALF_FLOAT&&(c=o.RGBA16F),n===o.UNSIGNED_BYTE&&(c=o.RGBA8),n===o.UNSIGNED_SHORT&&(c=o.RGBA16),n===o.UNSIGNED_INT&&(c=o.RGBA32UI),n===o.BYTE&&(c=o.RGBA8I),n===o.SHORT&&(c=o.RGBA16I),n===o.INT&&(c=o.RGBA32I),n===o.UNSIGNED_BYTE&&(c=d===ws?o.SRGB8_ALPHA8:o.RGBA8),n===o.UNSIGNED_SHORT_4_4_4_4&&(c=o.RGBA4),n===o.UNSIGNED_SHORT_5_5_5_1&&(c=o.RGB5_A1)}return t===o.RGBA_INTEGER&&(n===o.UNSIGNED_BYTE&&(c=o.RGBA8UI),n===o.UNSIGNED_SHORT&&(c=o.RGBA16UI),n===o.UNSIGNED_INT&&(c=o.RGBA32UI),n===o.BYTE&&(c=o.RGBA8I),n===o.SHORT&&(c=o.RGBA16I),n===o.INT&&(c=o.RGBA32I)),t===o.DEPTH_COMPONENT&&(n===o.UNSIGNED_SHORT&&(c=o.DEPTH_COMPONENT16),n===o.UNSIGNED_INT&&(c=o.DEPTH_COMPONENT24),n===o.FLOAT&&(c=o.DEPTH_COMPONENT32F)),t===o.DEPTH_STENCIL&&n===o.UNSIGNED_INT_24_8&&(c=o.DEPTH24_STENCIL8),(c===o.R16F||c===o.R32F||c===o.RG16F||c===o.RG32F||c===o.RGBA16F||c===o.RGBA32F)&&u.get("EXT_color_buffer_float"),c}setTextureParameters(e,t){const{gl:n,extensions:i,backend:a}=this,o=xr.getPrimaries(xr.workingColorSpace),u=t.colorSpace===ao?null:xr.getPrimaries(t.colorSpace),c=t.colorSpace===ao||o===u?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,t.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,t.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,c),n.texParameteri(e,n.TEXTURE_WRAP_S,F_[t.wrapS]),n.texParameteri(e,n.TEXTURE_WRAP_T,F_[t.wrapT]),(e===n.TEXTURE_3D||e===n.TEXTURE_2D_ARRAY)&&(t.isArrayTexture||n.texParameteri(e,n.TEXTURE_WRAP_R,F_[t.wrapR])),n.texParameteri(e,n.TEXTURE_MAG_FILTER,GM[t.magFilter]);const d=t.mipmaps!==void 0&&t.mipmaps.length>0,g=t.minFilter===vr&&d?yi:t.minFilter;if(n.texParameteri(e,n.TEXTURE_MIN_FILTER,GM[g]),t.compareFunction&&(n.texParameteri(e,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(e,n.TEXTURE_COMPARE_FUNC,kN[t.compareFunction])),i.has("EXT_texture_filter_anisotropic")===!0){if(t.magFilter===cn||t.minFilter!==Sr&&t.minFilter!==yi||t.type===dt&&i.has("OES_texture_float_linear")===!1)return;if(t.anisotropy>1){const v=i.get("EXT_texture_filter_anisotropic");n.texParameterf(e,v.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,a.getMaxAnisotropy()))}}}createDefaultTexture(e){const{gl:t,backend:n,defaultTextures:i}=this,a=this.getGLTextureType(e);let o=i[a];o===void 0&&(o=t.createTexture(),n.state.bindTexture(a,o),t.texParameteri(a,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(a,t.TEXTURE_MAG_FILTER,t.NEAREST),i[a]=o),n.set(e,{textureGPU:o,glTextureType:a})}createTexture(e,t){const{gl:n,backend:i}=this,{levels:a,width:o,height:u,depth:c}=t,d=i.utils.convert(e.format,e.colorSpace),g=i.utils.convert(e.type),v=this.getInternalFormat(e.internalFormat,d,g,e.colorSpace,e.isVideoTexture),M=n.createTexture(),B=this.getGLTextureType(e);i.state.bindTexture(B,M),this.setTextureParameters(B,e),e.isArrayTexture||e.isDataArrayTexture||e.isCompressedArrayTexture?n.texStorage3D(n.TEXTURE_2D_ARRAY,a,v,o,u,c):e.isData3DTexture?n.texStorage3D(n.TEXTURE_3D,a,v,o,u,c):e.isVideoTexture||n.texStorage2D(B,a,v,o,u),i.set(e,{textureGPU:M,glTextureType:B,glFormat:d,glType:g,glInternalFormat:v})}copyBufferToTexture(e,t){const{gl:n,backend:i}=this,{textureGPU:a,glTextureType:o,glFormat:u,glType:c}=i.get(t),{width:d,height:g}=t.source.data;n.bindBuffer(n.PIXEL_UNPACK_BUFFER,e),i.state.bindTexture(o,a),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,!1),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),n.texSubImage2D(o,0,0,0,d,g,u,c,0),n.bindBuffer(n.PIXEL_UNPACK_BUFFER,null),i.state.unbindTexture()}updateTexture(e,t){const{gl:n}=this,{width:i,height:a}=t,{textureGPU:o,glTextureType:u,glFormat:c,glType:d,glInternalFormat:g}=this.backend.get(e);if(!(e.isRenderTargetTexture||o===void 0))if(this.backend.state.bindTexture(u,o),this.setTextureParameters(u,e),e.isCompressedTexture){const v=e.mipmaps,M=t.image;for(let B=0;B0){const M=l(v.width,v.height,e.format,e.type);for(const B of e.layerUpdates){const I=v.data.subarray(B*M/v.data.BYTES_PER_ELEMENT,(B+1)*M/v.data.BYTES_PER_ELEMENT);n.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,B,v.width,v.height,1,c,d,I)}e.clearLayerUpdates()}else n.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,v.width,v.height,v.depth,c,d,v.data)}else if(e.isData3DTexture){const v=t.image;n.texSubImage3D(n.TEXTURE_3D,0,0,0,0,v.width,v.height,v.depth,c,d,v.data)}else if(e.isVideoTexture)e.update(),n.texImage2D(u,0,g,c,d,t.image);else{const v=e.mipmaps;if(v.length>0)for(let M=0,B=v.length;M0,M=t.renderTarget?t.renderTarget.height:this.backend.getDrawingBufferSize().y;if(v){const B=u!==0||c!==0;let I,ne;if(e.isDepthTexture===!0?(I=i.DEPTH_BUFFER_BIT,ne=i.DEPTH_ATTACHMENT,t.stencil&&(I|=i.STENCIL_BUFFER_BIT)):(I=i.COLOR_BUFFER_BIT,ne=i.COLOR_ATTACHMENT0),B){const ee=this.backend.get(t.renderTarget),q=ee.framebuffers[t.getCacheKey()],ye=ee.msaaFrameBuffer;a.bindFramebuffer(i.DRAW_FRAMEBUFFER,q),a.bindFramebuffer(i.READ_FRAMEBUFFER,ye);const Ce=M-c-g;i.blitFramebuffer(u,Ce,u+d,Ce+g,u,Ce,u+d,Ce+g,I,i.NEAREST),a.bindFramebuffer(i.READ_FRAMEBUFFER,q),a.bindTexture(i.TEXTURE_2D,o),i.copyTexSubImage2D(i.TEXTURE_2D,0,0,0,u,Ce,d,g),a.unbindTexture()}else{const ee=i.createFramebuffer();a.bindFramebuffer(i.DRAW_FRAMEBUFFER,ee),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,ne,i.TEXTURE_2D,o,0),i.blitFramebuffer(0,0,d,g,0,0,d,g,I,i.NEAREST),i.deleteFramebuffer(ee)}}else a.bindTexture(i.TEXTURE_2D,o),i.copyTexSubImage2D(i.TEXTURE_2D,0,0,0,u,M-g-c,d,g),a.unbindTexture();e.generateMipmaps&&this.generateMipmaps(e),this.backend._setFramebuffer(t)}setupRenderBufferStorage(e,t,n,i=!1){const{gl:a}=this,o=t.renderTarget,{depthTexture:u,depthBuffer:c,stencilBuffer:d,width:g,height:v}=o;if(a.bindRenderbuffer(a.RENDERBUFFER,e),c&&!d){let M=a.DEPTH_COMPONENT24;i===!0?this.extensions.get("WEBGL_multisampled_render_to_texture").renderbufferStorageMultisampleEXT(a.RENDERBUFFER,o.samples,M,g,v):n>0?(u&&u.isDepthTexture&&u.type===a.FLOAT&&(M=a.DEPTH_COMPONENT32F),a.renderbufferStorageMultisample(a.RENDERBUFFER,n,M,g,v)):a.renderbufferStorage(a.RENDERBUFFER,M,g,v),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.RENDERBUFFER,e)}else c&&d&&(n>0?a.renderbufferStorageMultisample(a.RENDERBUFFER,n,a.DEPTH24_STENCIL8,g,v):a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_STENCIL,g,v),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.RENDERBUFFER,e));a.bindRenderbuffer(a.RENDERBUFFER,null)}copyTextureToBuffer(e,t,n,i,a,o){return Pa(this,null,function*(){const{backend:u,gl:c}=this,{textureGPU:d,glFormat:g,glType:v}=this.backend.get(e),M=c.createFramebuffer();u.state.bindFramebuffer(c.READ_FRAMEBUFFER,M);const B=e.isCubeTexture?c.TEXTURE_CUBE_MAP_POSITIVE_X+o:c.TEXTURE_2D;c.framebufferTexture2D(c.READ_FRAMEBUFFER,c.COLOR_ATTACHMENT0,B,d,0);const I=this._getTypedArrayType(v),ne=this._getBytesPerTexel(v,g),q=i*a*ne,ye=c.createBuffer();c.bindBuffer(c.PIXEL_PACK_BUFFER,ye),c.bufferData(c.PIXEL_PACK_BUFFER,q,c.STREAM_READ),c.readPixels(t,n,i,a,g,v,0),c.bindBuffer(c.PIXEL_PACK_BUFFER,null),yield u.utils._clientWaitAsync();const Ce=new I(q/I.BYTES_PER_ELEMENT);return c.bindBuffer(c.PIXEL_PACK_BUFFER,ye),c.getBufferSubData(c.PIXEL_PACK_BUFFER,0,Ce),c.bindBuffer(c.PIXEL_PACK_BUFFER,null),u.state.bindFramebuffer(c.READ_FRAMEBUFFER,null),c.deleteFramebuffer(M),Ce})}_getTypedArrayType(e){const{gl:t}=this;if(e===t.UNSIGNED_BYTE)return Uint8Array;if(e===t.UNSIGNED_SHORT_4_4_4_4||e===t.UNSIGNED_SHORT_5_5_5_1||e===t.UNSIGNED_SHORT_5_6_5||e===t.UNSIGNED_SHORT)return Uint16Array;if(e===t.UNSIGNED_INT)return Uint32Array;if(e===t.HALF_FLOAT)return Uint16Array;if(e===t.FLOAT)return Float32Array;throw new Error(`Unsupported WebGL type: ${e}`)}_getBytesPerTexel(e,t){const{gl:n}=this;let i=0;if(e===n.UNSIGNED_BYTE&&(i=1),(e===n.UNSIGNED_SHORT_4_4_4_4||e===n.UNSIGNED_SHORT_5_5_5_1||e===n.UNSIGNED_SHORT_5_6_5||e===n.UNSIGNED_SHORT||e===n.HALF_FLOAT)&&(i=2),(e===n.UNSIGNED_INT||e===n.FLOAT)&&(i=4),t===n.RGBA)return i*4;if(t===n.RGB)return i*3;if(t===n.ALPHA)return i}dispose(){const{gl:e}=this;this._srcFramebuffer!==null&&e.deleteFramebuffer(this._srcFramebuffer),this._dstFramebuffer!==null&&e.deleteFramebuffer(this._dstFramebuffer)}}function P_(s){return s.isDataTexture?s.image.data:typeof HTMLImageElement!="undefined"&&s instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&s instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&s instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&s instanceof OffscreenCanvas?s:s.data}class q8{constructor(e){this.backend=e,this.gl=this.backend.gl,this.availableExtensions=this.gl.getSupportedExtensions(),this.extensions={}}get(e){let t=this.extensions[e];return t===void 0&&(t=this.gl.getExtension(e),this.extensions[e]=t),t}has(e){return this.availableExtensions.includes(e)}}class J8{constructor(e){this.backend=e,this.maxAnisotropy=null}getMaxAnisotropy(){if(this.maxAnisotropy!==null)return this.maxAnisotropy;const e=this.backend.gl,t=this.backend.extensions;if(t.has("EXT_texture_filter_anisotropic")===!0){const n=t.get("EXT_texture_filter_anisotropic");this.maxAnisotropy=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else this.maxAnisotropy=0;return this.maxAnisotropy}}const VN={WEBGL_multi_draw:"WEBGL_multi_draw",WEBGL_compressed_texture_astc:"texture-compression-astc",WEBGL_compressed_texture_etc:"texture-compression-etc2",WEBGL_compressed_texture_etc1:"texture-compression-etc1",WEBGL_compressed_texture_pvrtc:"texture-compression-pvrtc",WEBGL_compressed_texture_s3tc:"texture-compression-s3tc",EXT_texture_compression_bptc:"texture-compression-bc",EXT_disjoint_timer_query_webgl2:"timestamp-query",OVR_multiview2:"OVR_multiview2"};class eW{constructor(e){this.gl=e.gl,this.extensions=e.extensions,this.info=e.renderer.info,this.mode=null,this.index=0,this.type=null,this.object=null}render(e,t){const{gl:n,mode:i,object:a,type:o,info:u,index:c}=this;c!==0?n.drawElements(i,t,o,e):n.drawArrays(i,e,t),u.update(a,t,1)}renderInstances(e,t,n){const{gl:i,mode:a,type:o,index:u,object:c,info:d}=this;n!==0&&(u!==0?i.drawElementsInstanced(a,t,o,e,n):i.drawArraysInstanced(a,e,t,n),d.update(c,t,n))}renderMultiDraw(e,t,n){const{extensions:i,mode:a,object:o,info:u}=this;if(n===0)return;const c=i.get("WEBGL_multi_draw");if(c===null)for(let d=0;dthis.maxQueries)return ki(`WebGPUTimestampQueryPool [${this.type}]: Maximum number of queries exceeded, when using trackTimestamp it is necessary to resolves the queries via renderer.resolveTimestampsAsync( THREE.TimestampQuery.${this.type.toUpperCase()} ).`),null;const t=this.currentQueryIndex;return this.currentQueryIndex+=2,this.queryStates.set(t,"inactive"),this.queryOffsets.set(e,t),t}beginQuery(e){if(!this.trackTimestamp||this.isDisposed)return;const t=this.queryOffsets.get(e);if(t==null||this.activeQuery!==null)return;const n=this.queries[t];if(n)try{this.queryStates.get(t)==="inactive"&&(this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT,n),this.activeQuery=t,this.queryStates.set(t,"started"))}catch(i){Gr("Error in beginQuery:",i),this.activeQuery=null,this.queryStates.set(t,"inactive")}}endQuery(e){if(!this.trackTimestamp||this.isDisposed)return;const t=this.queryOffsets.get(e);if(t!=null&&this.activeQuery===t)try{this.gl.endQuery(this.ext.TIME_ELAPSED_EXT),this.queryStates.set(t,"ended"),this.activeQuery=null}catch(n){Gr("Error in endQuery:",n),this.queryStates.set(t,"inactive"),this.activeQuery=null}}resolveQueriesAsync(){return Pa(this,null,function*(){if(!this.trackTimestamp||this.pendingResolve)return this.lastValue;this.pendingResolve=!0;try{const e=new Map;for(const[a,o]of this.queryOffsets)if(this.queryStates.get(o)==="ended"){const c=this.queries[o];e.set(a,this.resolveQuery(c))}if(e.size===0)return this.lastValue;const t={},n=[];for(const[a,o]of e){const u=a.match(/^(.*):f(\d+)$/),c=parseInt(u[2]);n.includes(c)===!1&&n.push(c),t[c]===void 0&&(t[c]=0);const d=yield o;this.timestamps.set(a,d),t[c]+=d}const i=t[n[n.length-1]];return this.lastValue=i,this.frames=n,this.currentQueryIndex=0,this.queryOffsets.clear(),this.queryStates.clear(),this.activeQuery=null,i}catch(e){return Gr("Error resolving queries:",e),this.lastValue}finally{this.pendingResolve=!1}})}resolveQuery(e){return Pa(this,null,function*(){return new Promise(t=>{if(this.isDisposed){t(this.lastValue);return}let n,i=!1;const a=()=>{n&&(clearTimeout(n),n=null)},o=c=>{i||(i=!0,a(),t(c))},u=()=>{if(this.isDisposed){o(this.lastValue);return}try{if(this.gl.getParameter(this.ext.GPU_DISJOINT_EXT)){o(this.lastValue);return}if(!this.gl.getQueryParameter(e,this.gl.QUERY_RESULT_AVAILABLE)){n=setTimeout(u,1);return}const g=this.gl.getQueryParameter(e,this.gl.QUERY_RESULT);t(Number(g)/1e6)}catch(c){Gr("Error checking query:",c),t(this.lastValue)}};u()})})}dispose(){if(!this.isDisposed&&(this.isDisposed=!0,!!this.trackTimestamp)){for(const e of this.queries)this.gl.deleteQuery(e);this.queries=[],this.queryStates.clear(),this.queryOffsets.clear(),this.lastValue=0,this.activeQuery=null}}}class GN extends ON{constructor(e={}){super(e),this.isWebGLBackend=!0,this.attributeUtils=null,this.extensions=null,this.capabilities=null,this.textureUtils=null,this.bufferRenderer=null,this.gl=null,this.state=null,this.utils=null,this.vaoCache={},this.transformFeedbackCache={},this.discard=!1,this.disjoint=null,this.parallel=null,this._currentContext=null,this._knownBindings=new WeakSet,this._supportsInvalidateFramebuffer=typeof navigator=="undefined"?!1:/OculusBrowser/g.test(navigator.userAgent),this._xrFramebuffer=null}init(e){super.init(e);const t=this.parameters,n={antialias:e.currentSamples>0,alpha:!0,depth:e.depth,stencil:e.stencil},i=t.context!==void 0?t.context:e.domElement.getContext("webgl2",n);function a(o){o.preventDefault();const u={api:"WebGL",message:o.statusMessage||"Unknown reason",reason:null,originalEvent:o};e.onDeviceLost(u)}this._onContextLost=a,e.domElement.addEventListener("webglcontextlost",a,!1),this.gl=i,this.extensions=new q8(this),this.capabilities=new J8(this),this.attributeUtils=new $8(this),this.textureUtils=new Y8(this),this.bufferRenderer=new eW(this),this.state=new X8(this),this.utils=new j8(this),this.extensions.get("EXT_color_buffer_float"),this.extensions.get("WEBGL_clip_cull_distance"),this.extensions.get("OES_texture_float_linear"),this.extensions.get("EXT_color_buffer_half_float"),this.extensions.get("WEBGL_multisampled_render_to_texture"),this.extensions.get("WEBGL_render_shared_exponent"),this.extensions.get("WEBGL_multi_draw"),this.extensions.get("OVR_multiview2"),this.disjoint=this.extensions.get("EXT_disjoint_timer_query_webgl2"),this.parallel=this.extensions.get("KHR_parallel_shader_compile"),this.drawBuffersIndexedExt=this.extensions.get("OES_draw_buffers_indexed")}get coordinateSystem(){return gl}getArrayBufferAsync(e){return Pa(this,null,function*(){return yield this.attributeUtils.getArrayBufferAsync(e)})}makeXRCompatible(){return Pa(this,null,function*(){this.gl.getContextAttributes().xrCompatible!==!0&&(yield this.gl.makeXRCompatible())})}setXRTarget(e){this._xrFramebuffer=e}setXRRenderTargetTextures(e,t,n=null){const i=this.gl;if(this.set(e.texture,{textureGPU:t,glInternalFormat:i.RGBA8}),n!==null){const a=e.stencilBuffer?i.DEPTH24_STENCIL8:i.DEPTH_COMPONENT24;this.set(e.depthTexture,{textureGPU:n,glInternalFormat:a}),this.extensions.has("WEBGL_multisampled_render_to_texture")===!0&&e._autoAllocateDepthBuffer===!0&&e.multiview===!1&&Lr("WebGLBackend: Render-to-texture extension was disabled because an external texture was provided"),e._autoAllocateDepthBuffer=!1}}initTimestampQuery(e,t){if(!this.disjoint||!this.trackTimestamp)return;this.timestampQueryPool[e]||(this.timestampQueryPool[e]=new tW(this.gl,e,2048));const n=this.timestampQueryPool[e];n.allocateQueriesForContext(t)!==null&&n.beginQuery(t)}prepareTimestampBuffer(e,t){if(!this.disjoint||!this.trackTimestamp)return;this.timestampQueryPool[e].endQuery(t)}getContext(){return this.gl}beginRender(e){const{state:t}=this,n=this.get(e);if(e.viewport)this.updateViewport(e);else{const{width:a,height:o}=this.getDrawingBufferSize();t.viewport(0,0,a,o)}if(e.scissor){const{x:a,y:o,width:u,height:c}=e.scissorValue;t.scissor(a,e.height-c-o,u,c)}this.initTimestampQuery(ml.RENDER,this.getTimestampUID(e)),n.previousContext=this._currentContext,this._currentContext=e,this._setFramebuffer(e),this.clear(e.clearColor,e.clearDepth,e.clearStencil,e,!1);const i=e.occlusionQueryCount;i>0&&(n.currentOcclusionQueries=n.occlusionQueries,n.currentOcclusionQueryObjects=n.occlusionQueryObjects,n.lastOcclusionObject=null,n.occlusionQueries=new Array(i),n.occlusionQueryObjects=new Array(i),n.occlusionQueryIndex=0)}finishRender(e){const{gl:t,state:n}=this,i=this.get(e),a=i.previousContext;n.resetVertexState();const o=e.occlusionQueryCount;o>0&&(o>i.occlusionQueryIndex&&t.endQuery(t.ANY_SAMPLES_PASSED),this.resolveOccludedAsync(e));const u=e.textures;if(u!==null)for(let c=0;c{let c=0;for(let d=0;d1&&d.setMRTBlending(a.textures),d.useProgram(u);const B=e.getAttributes(),I=this.get(B);let ne=I.vaoGPU;if(ne===void 0){const Rt=this._getVaoKey(B);ne=this.vaoCache[Rt],ne===void 0&&(ne=this._createVao(B),this.vaoCache[Rt]=ne,I.vaoGPU=ne)}const ee=e.getIndex(),q=ee!==null?this.get(ee).bufferGPU:null;d.setVertexState(ne,q);const ye=g.lastOcclusionObject;if(ye!==t&&ye!==void 0){if(ye!==null&&ye.occlusionTest===!0&&(c.endQuery(c.ANY_SAMPLES_PASSED),g.occlusionQueryIndex++),t.occlusionTest===!0){const Rt=c.createQuery();c.beginQuery(c.ANY_SAMPLES_PASSED,Rt),g.occlusionQueries[g.occlusionQueryIndex]=Rt,g.occlusionQueryObjects[g.occlusionQueryIndex]=t}g.lastOcclusionObject=t}const Ce=this.bufferRenderer;t.isPoints?Ce.mode=c.POINTS:t.isLineSegments?Ce.mode=c.LINES:t.isLine?Ce.mode=c.LINE_STRIP:t.isLineLoop?Ce.mode=c.LINE_LOOP:i.wireframe===!0?(d.setLineWidth(i.wireframeLinewidth*this.renderer.getPixelRatio()),Ce.mode=c.LINES):Ce.mode=c.TRIANGLES;const{vertexCount:ke,instanceCount:nt}=v;let{firstVertex:Ye}=v;if(Ce.object=t,ee!==null){Ye*=ee.array.BYTES_PER_ELEMENT;const Rt=this.get(ee);Ce.index=ee.count,Ce.type=Rt.type}else Ce.index=0;const ht=()=>{t.isBatchedMesh?t._multiDrawInstances!==null?(ki("WebGLBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Ce.renderMultiDrawInstances(t._multiDrawStarts,t._multiDrawCounts,t._multiDrawCount,t._multiDrawInstances)):this.hasFeature("WEBGL_multi_draw")?Ce.renderMultiDraw(t._multiDrawStarts,t._multiDrawCounts,t._multiDrawCount):ki("WebGLBackend: WEBGL_multi_draw not supported."):nt>1?Ce.renderInstances(Ye,ke,nt):Ce.render(Ye,ke)};if(e.camera.isArrayCamera===!0&&e.camera.cameras.length>0&&e.camera.isMultiViewCamera===!1){const Rt=this.get(e.camera),qe=e.camera.cameras,pt=e.getBindingGroup("cameraIndex").bindings[0];if(Rt.indexesGPU===void 0||Rt.indexesGPU.length!==qe.length){const Dr=new Uint32Array([0,0,0,0]),Zr=[];for(let Ti=0,ds=qe.length;Ti{const M=this.parallel,B=()=>{n.getProgramParameter(u,M.COMPLETION_STATUS_KHR)?(this._completeCompile(e,i),v()):requestAnimationFrame(B)};B()});t.push(g);return}this._completeCompile(e,i)}_handleSource(e,t){const n=e.split(` -`),i=[],a=Math.max(t-6,0),o=Math.min(t+6,n.length);for(let u=a;u":" "} ${c}: ${n[u]}`)}return i.join(` -`)}_getShaderErrors(e,t,n){const i=e.getShaderParameter(t,e.COMPILE_STATUS),o=(e.getShaderInfoLog(t)||"").trim();if(i&&o==="")return"";const u=/ERROR: 0:(\d+)/.exec(o);if(u){const c=parseInt(u[1]);return n.toUpperCase()+` - -`+o+` - -`+this._handleSource(e.getShaderSource(t),c)}else return o}_logProgramError(e,t,n){if(this.renderer.debug.checkShaderErrors){const i=this.gl,o=(i.getProgramInfoLog(e)||"").trim();if(i.getProgramParameter(e,i.LINK_STATUS)===!1)if(typeof this.renderer.debug.onShaderError=="function")this.renderer.debug.onShaderError(i,e,n,t);else{const u=this._getShaderErrors(i,n,"vertex"),c=this._getShaderErrors(i,t,"fragment");Gr("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(e,i.VALIDATE_STATUS)+` - -Program Info Log: `+o+` -`+u+` -`+c)}else o!==""&&Lr("WebGLProgram: Program Info Log:",o)}}_completeCompile(e,t){const{state:n,gl:i}=this,a=this.get(t),{programGPU:o,fragmentShader:u,vertexShader:c}=a;i.getProgramParameter(o,i.LINK_STATUS)===!1&&this._logProgramError(o,u,c),n.useProgram(o);const d=e.getBindings();this._setupBindings(d,o),this.set(t,{programGPU:o})}createComputePipeline(e,t){const{state:n,gl:i}=this,a={stage:"fragment",code:`#version 300 es -precision highp float; -void main() {}`};this.createProgram(a);const{computeProgram:o}=e,u=i.createProgram(),c=this.get(a).shaderGPU,d=this.get(o).shaderGPU,g=o.transforms,v=[],M=[];for(let ee=0;eeVN[i]===e),n=this.extensions;for(let i=0;i1,B=a.isXRRenderTarget===!0,I=B===!0&&a._hasExternalTextures===!0;let ne=o.msaaFrameBuffer,ee=o.depthRenderbuffer;const q=this.extensions.get("WEBGL_multisampled_render_to_texture"),ye=this.extensions.get("OVR_multiview2"),Ce=this._useMultisampledExtension(a),ke=aI(e);let nt;if(g?(o.cubeFramebuffers||(o.cubeFramebuffers={}),nt=o.cubeFramebuffers[ke]):B&&I===!1?nt=this._xrFramebuffer:(o.framebuffers||(o.framebuffers={}),nt=o.framebuffers[ke]),nt===void 0){nt=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,nt);const Ye=e.textures,ht=[];if(g){o.cubeFramebuffers[ke]=nt;const{textureGPU:qe}=this.get(Ye[0]),pt=this.renderer._activeCubeFace,xn=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+pt,qe,xn)}else{o.framebuffers[ke]=nt;for(let qe=0;qe0&&Ce===!1&&!a.multiview){if(ne===void 0){const Ye=[];ne=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,ne);const ht=[],Rt=e.textures;for(let qe=0;qe0&&this._useMultisampledExtension(i)===!1){const o=a.framebuffers[e.getCacheKey()];let u=t.COLOR_BUFFER_BIT;i.resolveDepthBuffer&&(i.depthBuffer&&(u|=t.DEPTH_BUFFER_BIT),i.stencilBuffer&&i.resolveStencilBuffer&&(u|=t.STENCIL_BUFFER_BIT));const c=a.msaaFrameBuffer,d=a.msaaRenderbuffers,g=e.textures,v=g.length>1;if(n.bindFramebuffer(t.READ_FRAMEBUFFER,c),n.bindFramebuffer(t.DRAW_FRAMEBUFFER,o),v)for(let M=0;M0&&this.extensions.has("WEBGL_multisampled_render_to_texture")===!0&&e._autoAllocateDepthBuffer!==!1}dispose(){this.textureUtils!==null&&this.textureUtils.dispose();const e=this.extensions.get("WEBGL_lose_context");e&&e.loseContext(),this.renderer.domElement.removeEventListener("webglcontextlost",this._onContextLost)}}const kv={PointList:"point-list",LineList:"line-list",LineStrip:"line-strip",TriangleList:"triangle-list",TriangleStrip:"triangle-strip"},C0=typeof self!="undefined"?self.GPUShaderStage:{VERTEX:1,FRAGMENT:2,COMPUTE:4},dd={Never:"never",Less:"less",Equal:"equal",LessEqual:"less-equal",Greater:"greater",NotEqual:"not-equal",GreaterEqual:"greater-equal",Always:"always"},uf={Store:"store"},Kl={Load:"load",Clear:"clear"},HN={CCW:"ccw",CW:"cw"},QN={None:"none",Back:"back"},Vv={Uint16:"uint16",Uint32:"uint32"},sr={R8Unorm:"r8unorm",R8Snorm:"r8snorm",R8Uint:"r8uint",R8Sint:"r8sint",R16Uint:"r16uint",R16Sint:"r16sint",R16Float:"r16float",RG8Unorm:"rg8unorm",RG8Snorm:"rg8snorm",RG8Uint:"rg8uint",RG8Sint:"rg8sint",R32Uint:"r32uint",R32Sint:"r32sint",R32Float:"r32float",RG16Uint:"rg16uint",RG16Sint:"rg16sint",RG16Float:"rg16float",RGBA8Unorm:"rgba8unorm",RGBA8UnormSRGB:"rgba8unorm-srgb",RGBA8Snorm:"rgba8snorm",RGBA8Uint:"rgba8uint",RGBA8Sint:"rgba8sint",BGRA8Unorm:"bgra8unorm",BGRA8UnormSRGB:"bgra8unorm-srgb",RGB9E5UFloat:"rgb9e5ufloat",RGB10A2Unorm:"rgb10a2unorm",RG11B10UFloat:"rg11b10ufloat",RG32Uint:"rg32uint",RG32Sint:"rg32sint",RG32Float:"rg32float",RGBA16Uint:"rgba16uint",RGBA16Sint:"rgba16sint",RGBA16Float:"rgba16float",RGBA32Uint:"rgba32uint",RGBA32Sint:"rgba32sint",RGBA32Float:"rgba32float",Depth16Unorm:"depth16unorm",Depth24Plus:"depth24plus",Depth24PlusStencil8:"depth24plus-stencil8",Depth32Float:"depth32float",Depth32FloatStencil8:"depth32float-stencil8",BC1RGBAUnorm:"bc1-rgba-unorm",BC1RGBAUnormSRGB:"bc1-rgba-unorm-srgb",BC2RGBAUnorm:"bc2-rgba-unorm",BC2RGBAUnormSRGB:"bc2-rgba-unorm-srgb",BC3RGBAUnorm:"bc3-rgba-unorm",BC3RGBAUnormSRGB:"bc3-rgba-unorm-srgb",BC4RUnorm:"bc4-r-unorm",BC4RSnorm:"bc4-r-snorm",BC5RGUnorm:"bc5-rg-unorm",BC5RGSnorm:"bc5-rg-snorm",BC6HRGBUFloat:"bc6h-rgb-ufloat",BC6HRGBFloat:"bc6h-rgb-float",BC7RGBAUnorm:"bc7-rgba-unorm",BC7RGBAUnormSRGB:"bc7-rgba-unorm-srgb",ETC2RGB8Unorm:"etc2-rgb8unorm",ETC2RGB8UnormSRGB:"etc2-rgb8unorm-srgb",ETC2RGB8A1Unorm:"etc2-rgb8a1unorm",ETC2RGB8A1UnormSRGB:"etc2-rgb8a1unorm-srgb",ETC2RGBA8Unorm:"etc2-rgba8unorm",ETC2RGBA8UnormSRGB:"etc2-rgba8unorm-srgb",EACR11Unorm:"eac-r11unorm",EACR11Snorm:"eac-r11snorm",EACRG11Unorm:"eac-rg11unorm",EACRG11Snorm:"eac-rg11snorm",ASTC4x4Unorm:"astc-4x4-unorm",ASTC4x4UnormSRGB:"astc-4x4-unorm-srgb",ASTC5x4Unorm:"astc-5x4-unorm",ASTC5x4UnormSRGB:"astc-5x4-unorm-srgb",ASTC5x5Unorm:"astc-5x5-unorm",ASTC5x5UnormSRGB:"astc-5x5-unorm-srgb",ASTC6x5Unorm:"astc-6x5-unorm",ASTC6x5UnormSRGB:"astc-6x5-unorm-srgb",ASTC6x6Unorm:"astc-6x6-unorm",ASTC6x6UnormSRGB:"astc-6x6-unorm-srgb",ASTC8x5Unorm:"astc-8x5-unorm",ASTC8x5UnormSRGB:"astc-8x5-unorm-srgb",ASTC8x6Unorm:"astc-8x6-unorm",ASTC8x6UnormSRGB:"astc-8x6-unorm-srgb",ASTC8x8Unorm:"astc-8x8-unorm",ASTC8x8UnormSRGB:"astc-8x8-unorm-srgb",ASTC10x5Unorm:"astc-10x5-unorm",ASTC10x5UnormSRGB:"astc-10x5-unorm-srgb",ASTC10x6Unorm:"astc-10x6-unorm",ASTC10x6UnormSRGB:"astc-10x6-unorm-srgb",ASTC10x8Unorm:"astc-10x8-unorm",ASTC10x8UnormSRGB:"astc-10x8-unorm-srgb",ASTC10x10Unorm:"astc-10x10-unorm",ASTC10x10UnormSRGB:"astc-10x10-unorm-srgb",ASTC12x10Unorm:"astc-12x10-unorm",ASTC12x10UnormSRGB:"astc-12x10-unorm-srgb",ASTC12x12Unorm:"astc-12x12-unorm",ASTC12x12UnormSRGB:"astc-12x12-unorm-srgb"},HM={ClampToEdge:"clamp-to-edge",Repeat:"repeat",MirrorRepeat:"mirror-repeat"},T0={Linear:"linear",Nearest:"nearest"},hl={Zero:"zero",One:"one",Src:"src",OneMinusSrc:"one-minus-src",SrcAlpha:"src-alpha",OneMinusSrcAlpha:"one-minus-src-alpha",Dst:"dst",OneMinusDst:"one-minus-dst",DstAlpha:"dst-alpha",OneMinusDstAlpha:"one-minus-dst-alpha",SrcAlphaSaturated:"src-alpha-saturated",Constant:"constant",OneMinusConstant:"one-minus-constant"},B0={Add:"add",Subtract:"subtract",ReverseSubtract:"reverse-subtract",Min:"min",Max:"max"},WN={None:0,All:15},Qm={Keep:"keep",Zero:"zero",Replace:"replace",Invert:"invert",IncrementClamp:"increment-clamp",DecrementClamp:"decrement-clamp",IncrementWrap:"increment-wrap",DecrementWrap:"decrement-wrap"},QM={Storage:"storage",ReadOnlyStorage:"read-only-storage"},WM={WriteOnly:"write-only",ReadOnly:"read-only",ReadWrite:"read-write"},ZN={NonFiltering:"non-filtering",Comparison:"comparison"},R0={Float:"float",UnfilterableFloat:"unfilterable-float",Depth:"depth",SInt:"sint",UInt:"uint"},KN={TwoD:"2d",ThreeD:"3d"},hh={TwoD:"2d",TwoDArray:"2d-array",Cube:"cube",ThreeD:"3d"},nW={All:"all"},L_={Vertex:"vertex",Instance:"instance"},ZM={CoreFeaturesAndLimits:"core-features-and-limits",DepthClipControl:"depth-clip-control",Depth32FloatStencil8:"depth32float-stencil8",TextureCompressionBC:"texture-compression-bc",TextureCompressionBCSliced3D:"texture-compression-bc-sliced-3d",TextureCompressionETC2:"texture-compression-etc2",TextureCompressionASTC:"texture-compression-astc",TextureCompressionASTCSliced3D:"texture-compression-astc-sliced-3d",TimestampQuery:"timestamp-query",IndirectFirstInstance:"indirect-first-instance",ShaderF16:"shader-f16",RG11B10UFloat:"rg11b10ufloat-renderable",BGRA8UNormStorage:"bgra8unorm-storage",Float32Filterable:"float32-filterable",Float32Blendable:"float32-blendable",ClipDistances:"clip-distances",DualSourceBlending:"dual-source-blending",Subgroups:"subgroups",TextureFormatsTier1:"texture-formats-tier1",TextureFormatsTier2:"texture-formats-tier2"},$N={"texture-compression-s3tc":"texture-compression-bc","texture-compression-etc1":"texture-compression-etc2"};class rW extends RN{constructor(e,t,n){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n}update(){const{textureNode:e}=this;return this.texture!==e.value?(this.texture=e.value,!0):super.update()}}class iW extends EN{constructor(e,t){super(e,t?t.array:null),this.attribute=t,this.isStorageBuffer=!0}}let sW=0;class aW extends iW{constructor(e,t){super("StorageBuffer_"+sW++,e?e.value:null),this.nodeUniform=e,this.access=e?e.access:od.READ_WRITE,this.groupNode=t}get buffer(){return this.nodeUniform.value}}class oW extends Vm{constructor(e){super(),this.device=e;const t=` -struct VarysStruct { - @builtin( position ) Position: vec4, - @location( 0 ) vTex : vec2 -}; - -@vertex -fn main( @builtin( vertex_index ) vertexIndex : u32 ) -> VarysStruct { - - var Varys : VarysStruct; - - var pos = array< vec2, 4 >( - vec2( -1.0, 1.0 ), - vec2( 1.0, 1.0 ), - vec2( -1.0, -1.0 ), - vec2( 1.0, -1.0 ) - ); - - var tex = array< vec2, 4 >( - vec2( 0.0, 0.0 ), - vec2( 1.0, 0.0 ), - vec2( 0.0, 1.0 ), - vec2( 1.0, 1.0 ) - ); - - Varys.vTex = tex[ vertexIndex ]; - Varys.Position = vec4( pos[ vertexIndex ], 0.0, 1.0 ); - - return Varys; - -} -`,n=` -@group( 0 ) @binding( 0 ) -var imgSampler : sampler; - -@group( 0 ) @binding( 1 ) -var img : texture_2d; - -@fragment -fn main( @location( 0 ) vTex : vec2 ) -> @location( 0 ) vec4 { - - return textureSample( img, imgSampler, vTex ); - -} -`,i=` -@group( 0 ) @binding( 0 ) -var imgSampler : sampler; - -@group( 0 ) @binding( 1 ) -var img : texture_2d; - -@fragment -fn main( @location( 0 ) vTex : vec2 ) -> @location( 0 ) vec4 { - - return textureSample( img, imgSampler, vec2( vTex.x, 1.0 - vTex.y ) ); - -} -`;this.mipmapSampler=e.createSampler({minFilter:T0.Linear}),this.flipYSampler=e.createSampler({minFilter:T0.Nearest}),this.transferPipelines={},this.flipYPipelines={},this.mipmapVertexShaderModule=e.createShaderModule({label:"mipmapVertex",code:t}),this.mipmapFragmentShaderModule=e.createShaderModule({label:"mipmapFragment",code:n}),this.flipYFragmentShaderModule=e.createShaderModule({label:"flipYFragment",code:i})}getTransferPipeline(e){let t=this.transferPipelines[e];return t===void 0&&(t=this.device.createRenderPipeline({label:`mipmap-${e}`,vertex:{module:this.mipmapVertexShaderModule,entryPoint:"main"},fragment:{module:this.mipmapFragmentShaderModule,entryPoint:"main",targets:[{format:e}]},primitive:{topology:kv.TriangleStrip,stripIndexFormat:Vv.Uint32},layout:"auto"}),this.transferPipelines[e]=t),t}getFlipYPipeline(e){let t=this.flipYPipelines[e];return t===void 0&&(t=this.device.createRenderPipeline({label:`flipY-${e}`,vertex:{module:this.mipmapVertexShaderModule,entryPoint:"main"},fragment:{module:this.flipYFragmentShaderModule,entryPoint:"main",targets:[{format:e}]},primitive:{topology:kv.TriangleStrip,stripIndexFormat:Vv.Uint32},layout:"auto"}),this.flipYPipelines[e]=t),t}flipY(e,t,n=0){const i=t.format,{width:a,height:o}=t.size,u=this.getTransferPipeline(i),c=this.getFlipYPipeline(i),d=this.device.createTexture({size:{width:a,height:o,depthOrArrayLayers:1},format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),g=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:hh.TwoD,baseArrayLayer:n}),v=d.createView({baseMipLevel:0,mipLevelCount:1,dimension:hh.TwoD,baseArrayLayer:0}),M=this.device.createCommandEncoder({}),B=(I,ne,ee)=>{const q=I.getBindGroupLayout(0),ye=this.device.createBindGroup({layout:q,entries:[{binding:0,resource:this.flipYSampler},{binding:1,resource:ne}]}),Ce=M.beginRenderPass({colorAttachments:[{view:ee,loadOp:Kl.Clear,storeOp:uf.Store,clearValue:[0,0,0,0]}]});Ce.setPipeline(I),Ce.setBindGroup(0,ye),Ce.draw(4,1,0,0),Ce.end()};B(u,g,v),B(c,v,g),this.device.queue.submit([M.finish()]),d.destroy()}generateMipmaps(e,t,n=0,i=null){const a=this.get(e);a.layers===void 0&&(a.layers=[]);const o=a.layers[n]||this._mipmapCreateBundles(e,t,n),u=i||this.device.createCommandEncoder({label:"mipmapEncoder"});this._mipmapRunBundles(u,o),i===null&&this.device.queue.submit([u.finish()]),a.layers[n]=o}_mipmapCreateBundles(e,t,n){const i=this.getTransferPipeline(t.format),a=i.getBindGroupLayout(0);let o=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:hh.TwoD,baseArrayLayer:n});const u=[];for(let c=1;c0)for(let o=0,u=i.length;o0)for(let o=0,u=i.length;o0?e.width:n.size.width,g=u>0?e.height:n.size.height;try{c.queue.copyExternalImageToTexture({source:e,flipY:a},{texture:t,mipLevel:u,origin:{x:0,y:0,z:i},premultipliedAlpha:o},{width:d,height:g,depthOrArrayLayers:1})}catch(v){}}_getPassUtils(){let e=this._passUtils;return e===null&&(this._passUtils=e=new oW(this.backend.device)),e}_generateMipmaps(e,t,n=0,i=null){this._getPassUtils().generateMipmaps(e,t,n,i)}_flipY(e,t,n=0){this._getPassUtils().flipY(e,t,n)}_copyBufferToTexture(e,t,n,i,a,o=0,u=0){const c=this.backend.device,d=e.data,g=this._getBytesPerTexel(n.format),v=e.width*g;c.queue.writeTexture({texture:t,mipLevel:u,origin:{x:0,y:0,z:i}},d,{offset:e.width*e.height*g*o,bytesPerRow:v},{width:e.width,height:e.height,depthOrArrayLayers:1}),a===!0&&this._flipY(t,n,i)}_copyCompressedBufferToTexture(e,t,n){const i=this.backend.device,a=this._getBlockData(n.format),o=n.size.depthOrArrayLayers>1;for(let u=0;u]*\s*([a-z_0-9]+(?:<[\s\S]+?>)?)/i,dW=/([a-z_0-9]+)\s*:\s*([a-z_0-9]+(?:<[\s\S]+?>)?)/ig,XN={f32:"float",i32:"int",u32:"uint",bool:"bool","vec2":"vec2","vec2":"ivec2","vec2":"uvec2","vec2":"bvec2",vec2f:"vec2",vec2i:"ivec2",vec2u:"uvec2",vec2b:"bvec2","vec3":"vec3","vec3":"ivec3","vec3":"uvec3","vec3":"bvec3",vec3f:"vec3",vec3i:"ivec3",vec3u:"uvec3",vec3b:"bvec3","vec4":"vec4","vec4":"ivec4","vec4":"uvec4","vec4":"bvec4",vec4f:"vec4",vec4i:"ivec4",vec4u:"uvec4",vec4b:"bvec4","mat2x2":"mat2",mat2x2f:"mat2","mat3x3":"mat3",mat3x3f:"mat3","mat4x4":"mat4",mat4x4f:"mat4",sampler:"sampler",texture_1d:"texture",texture_2d:"texture",texture_2d_array:"texture",texture_multisampled_2d:"cubeTexture",texture_depth_2d:"depthTexture",texture_depth_2d_array:"depthTexture",texture_depth_multisampled_2d:"depthTexture",texture_depth_cube:"depthTexture",texture_depth_cube_array:"depthTexture",texture_3d:"texture3D",texture_cube:"cubeTexture",texture_cube_array:"cubeTexture",texture_storage_1d:"storageTexture",texture_storage_2d:"storageTexture",texture_storage_2d_array:"storageTexture",texture_storage_3d:"storageTexture"},fW=s=>{s=s.trim();const e=s.match(hW);if(e!==null&&e.length===4){const t=e[2],n=[];let i=null;for(;(i=dW.exec(t))!==null;)n.push({name:i[1],type:i[2]});const a=[];for(let g=0;g "+this.outputType:"";return`fn ${e} ( ${this.inputsCode.trim()} ) ${t}`+this.blockCode}}class pW extends mN{parseFunction(e){return new AW(e)}}const gW={[od.READ_ONLY]:"read",[od.WRITE_ONLY]:"write",[od.READ_WRITE]:"read_write"},jN={[$t]:"repeat",[Vt]:"clamp",[Qt]:"mirror"},U_={vertex:C0.VERTEX,fragment:C0.FRAGMENT,compute:C0.COMPUTE},YN={instance:!0,swizzleAssign:!1,storageBuffer:!0},mW={"^^":"tsl_xor"},vW={float:"f32",int:"i32",uint:"u32",bool:"bool",color:"vec3",vec2:"vec2",ivec2:"vec2",uvec2:"vec2",bvec2:"vec2",vec3:"vec3",ivec3:"vec3",uvec3:"vec3",bvec3:"vec3",vec4:"vec4",ivec4:"vec4",uvec4:"vec4",bvec4:"vec4",mat2:"mat2x2",mat3:"mat3x3",mat4:"mat4x4"},qN={},gx={tsl_xor:new Wh("fn tsl_xor( a : bool, b : bool ) -> bool { return ( a || b ) && !( a && b ); }"),mod_float:new Wh("fn tsl_mod_float( x : f32, y : f32 ) -> f32 { return x - y * floor( x / y ); }"),mod_vec2:new Wh("fn tsl_mod_vec2( x : vec2f, y : vec2f ) -> vec2f { return x - y * floor( x / y ); }"),mod_vec3:new Wh("fn tsl_mod_vec3( x : vec3f, y : vec3f ) -> vec3f { return x - y * floor( x / y ); }"),mod_vec4:new Wh("fn tsl_mod_vec4( x : vec4f, y : vec4f ) -> vec4f { return x - y * floor( x / y ); }"),equals_bool:new Wh("fn tsl_equals_bool( a : bool, b : bool ) -> bool { return a == b; }"),equals_bvec2:new Wh("fn tsl_equals_bvec2( a : vec2f, b : vec2f ) -> vec2 { return vec2( a.x == b.x, a.y == b.y ); }"),equals_bvec3:new Wh("fn tsl_equals_bvec3( a : vec3f, b : vec3f ) -> vec3 { return vec3( a.x == b.x, a.y == b.y, a.z == b.z ); }"),equals_bvec4:new Wh("fn tsl_equals_bvec4( a : vec4f, b : vec4f ) -> vec4 { return vec4( a.x == b.x, a.y == b.y, a.z == b.z, a.w == b.w ); }"),repeatWrapping_float:new Wh("fn tsl_repeatWrapping_float( coord: f32 ) -> f32 { return fract( coord ); }"),mirrorWrapping_float:new Wh("fn tsl_mirrorWrapping_float( coord: f32 ) -> f32 { let mirrored = fract( coord * 0.5 ) * 2.0; return 1.0 - abs( 1.0 - mirrored ); }"),clampWrapping_float:new Wh("fn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }"),biquadraticTexture:new Wh(` -fn tsl_biquadraticTexture( map : texture_2d, coord : vec2f, iRes : vec2u, level : u32 ) -> vec4f { - - let res = vec2f( iRes ); - - let uvScaled = coord * res; - let uvWrapping = ( ( uvScaled % res ) + res ) % res; - - // https://www.shadertoy.com/view/WtyXRy - - let uv = uvWrapping - 0.5; - let iuv = floor( uv ); - let f = fract( uv ); - - let rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, level ); - let rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, level ); - let rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, level ); - let rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, level ); - - return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y ); - -} -`)},yW={dFdx:"dpdx",dFdy:"- dpdy",mod_float:"tsl_mod_float",mod_vec2:"tsl_mod_vec2",mod_vec3:"tsl_mod_vec3",mod_vec4:"tsl_mod_vec4",equals_bool:"tsl_equals_bool",equals_bvec2:"tsl_equals_bvec2",equals_bvec3:"tsl_equals_bvec3",equals_bvec4:"tsl_equals_bvec4",inversesqrt:"inverseSqrt",bitcast:"bitcast",floatpack_snorm_2x16:"pack2x16snorm",floatpack_unorm_2x16:"pack2x16unorm",floatpack_float16_2x16:"pack2x16float",floatunpack_snorm_2x16:"unpack2x16snorm",floatunpack_unorm_2x16:"unpack2x16unorm",floatunpack_float16_2x16:"unpack2x16float"};let JN="";(typeof navigator!="undefined"&&/Firefox|Deno/g.test(navigator.userAgent))!==!0&&(JN+=`diagnostic( off, derivative_uniformity ); -`);class xW extends pN{constructor(e,t){super(e,t,new pW),this.uniformGroups={},this.builtins={},this.directives={},this.scopedArrays=new Map}_generateTextureSample(e,t,n,i,a,o=this.shaderStage){return o==="fragment"?i?a?`textureSample( ${t}, ${t}_sampler, ${n}, ${i}, ${a} )`:`textureSample( ${t}, ${t}_sampler, ${n}, ${i} )`:a?`textureSample( ${t}, ${t}_sampler, ${n}, ${a} )`:`textureSample( ${t}, ${t}_sampler, ${n} )`:this.generateTextureSampleLevel(e,t,n,"0",i)}generateTextureSampleLevel(e,t,n,i,a,o){return this.isUnfilterable(e)===!1?o?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i}, ${o} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i} )`:this.isFilteredTexture(e)?this.generateFilteredTexture(e,t,n,o,i):this.generateTextureLod(e,t,n,a,o,i)}generateWrapFunction(e){const t=`tsl_coord_${jN[e.wrapS]}S_${jN[e.wrapT]}_${e.is3DTexture||e.isData3DTexture?"3d":"2d"}T`;let n=qN[t];if(n===void 0){const i=[],a=e.is3DTexture||e.isData3DTexture?"vec3f":"vec2f";let o=`fn ${t}( coord : ${a} ) -> ${a} { - - return ${a}( -`;const u=(c,d)=>{c===$t?(i.push(gx.repeatWrapping_float),o+=` tsl_repeatWrapping_float( coord.${d} )`):c===Vt?(i.push(gx.clampWrapping_float),o+=` tsl_clampWrapping_float( coord.${d} )`):c===Qt?(i.push(gx.mirrorWrapping_float),o+=` tsl_mirrorWrapping_float( coord.${d} )`):(o+=` coord.${d}`,Lr(`WebGPURenderer: Unsupported texture wrap type "${c}" for vertex shader.`))};u(e.wrapS,"x"),o+=`, -`,u(e.wrapT,"y"),(e.is3DTexture||e.isData3DTexture)&&(o+=`, -`,u(e.wrapR,"z")),o+=` - ); - -} -`,qN[t]=n=new Wh(o,i)}return n.build(this),t}generateArrayDeclaration(e,t){return`array< ${this.getType(e)}, ${t} >`}generateTextureDimension(e,t,n){const i=this.getDataFromNode(e,this.shaderStage,this.globalCache);i.dimensionsSnippet===void 0&&(i.dimensionsSnippet={});let a=i.dimensionsSnippet[n];if(i.dimensionsSnippet[n]===void 0){let o,u;const{primarySamples:c}=this.renderer.backend.utils.getTextureSampleData(e),d=c>1;e.is3DTexture||e.isData3DTexture?u="vec3":u="vec2",d||e.isStorageTexture?o=t:o=`${t}${n?`, u32( ${n} )`:""}`,a=new Fb(new Ob(`textureDimensions( ${o} )`,u)),i.dimensionsSnippet[n]=a,(e.isArrayTexture||e.isDataArrayTexture||e.is3DTexture||e.isData3DTexture)&&(i.arrayLayerCount=new Fb(new Ob(`textureNumLayers(${t})`,"u32"))),e.isTextureCube&&(i.cubeFaceCount=new Fb(new Ob("6u","u32")))}return a.build(this)}generateFilteredTexture(e,t,n,i,a="0u"){this._include("biquadraticTexture");const o=this.generateWrapFunction(e),u=this.generateTextureDimension(e,t,a);return i&&(n=`${n} + vec2(${i}) / ${u}`),`tsl_biquadraticTexture( ${t}, ${o}( ${n} ), ${u}, u32( ${a} ) )`}generateTextureLod(e,t,n,i,a,o="0u"){const u=this.generateWrapFunction(e),c=this.generateTextureDimension(e,t,o),d=e.is3DTexture||e.isData3DTexture?"vec3":"vec2";a&&(n=`${n} + ${d}(${a}) / ${d}( ${c} )`);const g=`${d}( ${u}( ${n} ) * ${d}( ${c} ) )`;return this.generateTextureLoad(e,t,g,o,i,null)}generateTextureLoad(e,t,n,i,a,o){i===null&&(i="0u"),o&&(n=`${n} + ${o}`);let u;return a?u=`textureLoad( ${t}, ${n}, ${a}, u32( ${i} ) )`:(u=`textureLoad( ${t}, ${n}, u32( ${i} ) )`,this.renderer.backend.compatibilityMode&&e.isDepthTexture&&(u+=".x")),u}generateTextureStore(e,t,n,i,a){let o;return i?o=`textureStore( ${t}, ${n}, ${i}, ${a} )`:o=`textureStore( ${t}, ${n}, ${a} )`,o}isSampleCompare(e){return e.isDepthTexture===!0&&e.compareFunction!==null}isUnfilterable(e){return this.getComponentTypeFromTexture(e)!=="float"||!this.isAvailable("float32Filterable")&&e.isDataTexture===!0&&e.type===dt||this.isSampleCompare(e)===!1&&e.minFilter===cn&&e.magFilter===cn||this.renderer.backend.utils.getTextureSampleData(e).primarySamples>1}generateTexture(e,t,n,i,a,o=this.shaderStage){let u=null;return this.isUnfilterable(e)?u=this.generateTextureLod(e,t,n,i,a,"0",o):u=this._generateTextureSample(e,t,n,i,a,o),u}generateTextureGrad(e,t,n,i,a,o,u=this.shaderStage){if(u==="fragment")return o?`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${i[0]}, ${i[1]}, ${o} )`:`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${i[0]}, ${i[1]} )`;Gr(`WebGPURenderer: THREE.TextureNode.gradient() does not support ${u} shader.`)}generateTextureCompare(e,t,n,i,a,o,u=this.shaderStage){if(u==="fragment")return e.isDepthTexture===!0&&e.isArrayTexture===!0?o?`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${a}, ${i}, ${o} )`:`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${a}, ${i} )`:o?`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${i}, ${o} )`:`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${i} )`;Gr(`WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${u} shader.`)}generateTextureLevel(e,t,n,i,a,o){return this.isUnfilterable(e)===!1?o?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i}, ${o} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i} )`:this.isFilteredTexture(e)?this.generateFilteredTexture(e,t,n,o,i):this.generateTextureLod(e,t,n,a,o,i)}generateTextureBias(e,t,n,i,a,o,u=this.shaderStage){if(u==="fragment")return o?`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${i}, ${o} )`:`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${i} )`;Gr(`WebGPURenderer: THREE.TextureNode.biasNode does not support ${u} shader.`)}getPropertyName(e,t=this.shaderStage){if(e.isNodeVarying===!0&&e.needsInterpolation===!0){if(t==="vertex")return`varyings.${e.name}`}else if(e.isNodeUniform===!0){const n=e.name,i=e.type;return i==="texture"||i==="cubeTexture"||i==="cubeDepthTexture"||i==="storageTexture"||i==="texture3D"?n:i==="buffer"||i==="storageBuffer"||i==="indirectStorageBuffer"?this.isCustomStruct(e)?n:n+".value":e.groupNode.name+"."+n}return super.getPropertyName(e)}getOutputStructName(){return"output"}getFunctionOperator(e){const t=mW[e];return t!==void 0?(this._include(t),t):null}getNodeAccess(e,t){return t!=="compute"?e.isAtomic===!0?(Lr("WebGPURenderer: Atomic operations are only supported in compute shaders."),od.READ_WRITE):od.READ_ONLY:e.access}getStorageAccess(e,t){return gW[this.getNodeAccess(e,t)]}getUniformFromNode(e,t,n,i=null){const a=super.getUniformFromNode(e,t,n,i),o=this.getDataFromNode(e,n,this.globalCache);if(o.uniformGPU===void 0){let u;const c=e.groupNode,d=c.name,g=this.getBindGroupArray(d,n);if(t==="texture"||t==="cubeTexture"||t==="cubeDepthTexture"||t==="storageTexture"||t==="texture3D"){let v=null;const M=this.getNodeAccess(e,n);if(t==="texture"||t==="storageTexture"?e.value.is3DTexture===!0?v=new kM(a.name,a.node,c,M):v=new N_(a.name,a.node,c,M):t==="cubeTexture"||t==="cubeDepthTexture"?v=new IN(a.name,a.node,c,M):t==="texture3D"&&(v=new kM(a.name,a.node,c,M)),v.store=e.isStorageTextureNode===!0,v.mipLevel=v.store?e.mipLevel:0,v.setVisibility(U_[n]),this.isUnfilterable(e.value)===!1&&v.store===!1){const B=new rW(`${a.name}_sampler`,a.node,c);B.setVisibility(U_[n]),g.push(B,v),u=[B,v]}else g.push(v),u=[v]}else if(t==="buffer"||t==="storageBuffer"||t==="indirectStorageBuffer"){const v=this.getSharedDataFromNode(e);let M=v.buffer;if(M===void 0){const B=t==="buffer"?TN:aW;M=new B(e,c),v.buffer=M}M.setVisibility(M.getVisibility()|U_[n]),g.push(M),u=M,a.name=i||"NodeBuffer_"+a.id}else{const v=this.uniformGroups[n]||(this.uniformGroups[n]={});let M=v[d];M===void 0&&(M=new BN(d,c),M.setVisibility(U_[n]),v[d]=M,g.push(M)),u=this.getNodeUniform(a,t),M.addUniform(u)}o.uniformGPU=u}return a}getBuiltin(e,t,n,i=this.shaderStage){const a=this.builtins[i]||(this.builtins[i]=new Map);return a.has(e)===!1&&a.set(e,{name:e,property:t,type:n}),t}hasBuiltin(e,t=this.shaderStage){return this.builtins[t]!==void 0&&this.builtins[t].has(e)}getVertexIndex(){return this.shaderStage==="vertex"?this.getBuiltin("vertex_index","vertexIndex","u32","attribute"):"vertexIndex"}buildFunctionCode(e){const t=e.layout,n=this.flowShaderNode(e),i=[];for(const o of t.inputs)i.push(o.name+" : "+this.getType(o.type));let a=`fn ${t.name}( ${i.join(", ")} ) -> ${this.getType(t.type)} { -${n.vars} -${n.code} -`;return n.result&&(a+=` return ${n.result}; -`),a+=` -} -`,a}getInstanceIndex(){return this.shaderStage==="vertex"?this.getBuiltin("instance_index","instanceIndex","u32","attribute"):"instanceIndex"}getInvocationLocalIndex(){return this.getBuiltin("local_invocation_index","invocationLocalIndex","u32","attribute")}getSubgroupSize(){return this.enableSubGroups(),this.getBuiltin("subgroup_size","subgroupSize","u32","attribute")}getInvocationSubgroupIndex(){return this.enableSubGroups(),this.getBuiltin("subgroup_invocation_id","invocationSubgroupIndex","u32","attribute")}getSubgroupIndex(){return this.enableSubGroups(),this.getBuiltin("subgroup_id","subgroupIndex","u32","attribute")}getDrawIndex(){return null}getFrontFacing(){return this.getBuiltin("front_facing","isFront","bool")}getFragCoord(){return this.getBuiltin("position","fragCoord","vec4")+".xy"}getFragDepth(){return"output."+this.getBuiltin("frag_depth","depth","f32","output")}getClipDistance(){return"varyings.hw_clip_distances"}isFlipY(){return!1}enableDirective(e,t=this.shaderStage){(this.directives[t]||(this.directives[t]=new Set)).add(e)}getDirectives(e){const t=[],n=this.directives[e];if(n!==void 0)for(const i of n)t.push(`enable ${i};`);return t.join(` -`)}enableSubGroups(){this.enableDirective("subgroups")}enableSubgroupsF16(){this.enableDirective("subgroups-f16")}enableClipDistances(){this.enableDirective("clip_distances")}enableShaderF16(){this.enableDirective("f16")}enableDualSourceBlending(){this.enableDirective("dual_source_blending")}enableHardwareClipping(e){this.enableClipDistances(),this.getBuiltin("clip_distances","hw_clip_distances",`array`,"vertex")}getBuiltins(e){const t=[],n=this.builtins[e];if(n!==void 0)for(const{name:i,property:a,type:o}of n.values())t.push(`@builtin( ${i} ) ${a} : ${o}`);return t.join(`, - `)}getScopedArray(e,t,n,i){return this.scopedArrays.has(e)===!1&&this.scopedArrays.set(e,{name:e,scope:t,bufferType:n,bufferCount:i}),e}getScopedArrays(e){if(e!=="compute")return;const t=[];for(const{name:n,scope:i,bufferType:a,bufferCount:o}of this.scopedArrays.values()){const u=this.getType(a);t.push(`var<${i}> ${n}: array< ${u}, ${o} >;`)}return t.join(` -`)}getAttributes(e){const t=[];if(e==="compute"&&(this.getBuiltin("global_invocation_id","globalId","vec3","attribute"),this.getBuiltin("workgroup_id","workgroupId","vec3","attribute"),this.getBuiltin("local_invocation_id","localId","vec3","attribute"),this.getBuiltin("num_workgroups","numWorkgroups","vec3","attribute"),this.renderer.hasFeature("subgroups")&&(this.enableDirective("subgroups",e),this.getBuiltin("subgroup_size","subgroupSize","u32","attribute"))),e==="vertex"||e==="compute"){const n=this.getBuiltins("attribute");n&&t.push(n);const i=this.getAttributesArray();for(let a=0,o=i.length;a"),t.push(` ${i+n.name} : ${a}`)}return e.output&&t.push(` ${this.getBuiltins("output")}`),t.join(`, -`)}getStructs(e){let t="";const n=this.structs[e];if(n.length>0){const i=[];for(const a of n){let o=`struct ${a.name} { -`;o+=this.getStructMembers(a),o+=` -};`,i.push(o)}t=` -`+i.join(` - -`)+` -`}return t}getVar(e,t,n=null){let i=`var ${t} : `;return n!==null?i+=this.generateArrayDeclaration(e,n):i+=this.getType(e),i}getVars(e){const t=[],n=this.vars[e];if(n!==void 0)for(const i of n)t.push(` ${this.getVar(i.type,i.name,i.count)};`);return` -${t.join(` -`)} -`}getVaryings(e){const t=[];if(e==="vertex"&&this.getBuiltin("position","Vertex","vec4","vertex"),e==="vertex"||e==="fragment"){const a=this.varyings,o=this.vars[e];for(let u=0;un.value.itemSize;return i&&!a}getUniforms(e){const t=this.uniforms[e],n=[],i=[],a=[],o={};for(const c of t){const d=c.groupNode.name,g=this.bindingsIndexes[d];if(c.type==="texture"||c.type==="cubeTexture"||c.type==="cubeDepthTexture"||c.type==="storageTexture"||c.type==="texture3D"){const v=c.node.value;this.isUnfilterable(v)===!1&&c.node.isStorageTextureNode!==!0&&(this.isSampleCompare(v)?n.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var ${c.name}_sampler : sampler_comparison;`):n.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var ${c.name}_sampler : sampler;`));let M,B="";const{primarySamples:I}=this.renderer.backend.utils.getTextureSampleData(v);if(I>1&&(B="_multisampled"),v.isCubeTexture===!0&&v.isDepthTexture===!0)M="texture_depth_cube";else if(v.isCubeTexture===!0)M="texture_cube";else if(v.isDepthTexture===!0)this.renderer.backend.compatibilityMode&&v.compareFunction===null?M=`texture${B}_2d`:M=`texture_depth${B}_2d${v.isArrayTexture===!0?"_array":""}`;else if(c.node.isStorageTextureNode===!0){const ne=KM(v),ee=this.getStorageAccess(c.node,e),q=c.node.value.is3DTexture,ye=c.node.value.isArrayTexture;M=`texture_storage_${q?"3d":`2d${ye?"_array":""}`}<${ne}, ${ee}>`}else if(v.isArrayTexture===!0||v.isDataArrayTexture===!0||v.isCompressedArrayTexture===!0)M="texture_2d_array";else if(v.is3DTexture===!0||v.isData3DTexture===!0)M="texture_3d";else{const ne=this.getComponentTypeFromTexture(v).charAt(0);M=`texture${B}_2d<${ne}32>`}n.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var ${c.name} : ${M};`)}else if(c.type==="buffer"||c.type==="storageBuffer"||c.type==="indirectStorageBuffer"){const v=c.node,M=this.getType(v.getNodeType(this)),B=v.bufferCount,I=B>0&&c.type==="buffer"?", "+B:"",ne=v.isStorageBufferNode?`storage, ${this.getStorageAccess(v,e)}`:"uniform";if(this.isCustomStruct(c))i.push(`@binding( ${g.binding++} ) @group( ${g.group} ) var<${ne}> ${c.name} : ${M};`);else{const q=` value : array< ${v.isAtomic?`atomic<${M}>`:`${M}`}${I} >`;i.push(this._getWGSLStructBinding(c.name,q,ne,g.binding++,g.group))}}else{const v=this.getType(this.getVectorType(c.type)),M=c.groupNode.name;(o[M]||(o[M]={index:g.binding++,id:g.group,snippets:[]})).snippets.push(` ${c.name} : ${v}`)}}for(const c in o){const d=o[c];a.push(this._getWGSLStructBinding(c,d.snippets.join(`, -`),"uniform",d.index,d.id))}return[...n,...i,...a].join(` -`)}buildCode(){const e=this.material!==null?{fragment:{},vertex:{}}:{compute:{}};this.sortBindingGroups();for(const t in e){this.shaderStage=t;const n=e[t];n.uniforms=this.getUniforms(t),n.attributes=this.getAttributes(t),n.varyings=this.getVaryings(t),n.structs=this.getStructs(t),n.vars=this.getVars(t),n.codes=this.getCodes(t),n.directives=this.getDirectives(t),n.scopedArrays=this.getScopedArrays(t);let i=`// code - -`;i+=this.flowCode[t];const a=this.flowNodes[t],o=a[a.length-1],u=o.outputNode,c=u!==void 0&&u.isOutputStructNode===!0;for(const d of a){const g=this.getFlowData(d),v=d.name;if(v&&(i.length>0&&(i+=` -`),i+=` // flow -> ${v} -`),i+=`${g.code} - `,d===o&&t!=="compute"){if(i+=`// result - - `,t==="vertex")i+=`varyings.Vertex = ${g.result};`;else if(t==="fragment")if(c)n.returnType=u.getNodeType(this),n.structs+="var output : "+n.returnType+";",i+=`return ${g.result};`;else{let M=" @location(0) color: vec4";const B=this.getBuiltins("output");B&&(M+=`, - `+B),n.returnType="OutputStruct",n.structs+=this._getWGSLStruct("OutputStruct",M),n.structs+=` -var output : OutputStruct;`,i+=`output.color = ${g.result}; - - return output;`}}}n.flow=i}if(this.shaderStage=null,this.material!==null)this.vertexShader=this._getWGSLVertexCode(e.vertex),this.fragmentShader=this._getWGSLFragmentCode(e.fragment);else{const t=this.object.workgroupSize;this.computeShader=this._getWGSLComputeCode(e.compute,t)}}getMethod(e,t=null){let n;return t!==null&&(n=this._getWGSLMethod(e+"_"+t)),n===void 0&&(n=this._getWGSLMethod(e)),n||e}getBitcastMethod(e){return`bitcast<${this.getType(e)}>`}getFloatPackingMethod(e){return this.getMethod(`floatpack_${e}_2x16`)}getFloatUnpackingMethod(e){return this.getMethod(`floatunpack_${e}_2x16`)}getTernary(e,t,n){return`select( ${n}, ${t}, ${e} )`}getType(e){return vW[e]||e}isAvailable(e){let t=YN[e];return t===void 0&&(e==="float32Filterable"?t=this.renderer.hasFeature("float32-filterable"):e==="clipDistance"&&(t=this.renderer.hasFeature("clip-distances")),YN[e]=t),t}_getWGSLMethod(e){return gx[e]!==void 0&&this._include(e),yW[e]}_include(e){const t=gx[e];return t.build(this),this.addInclude(t),t}_getWGSLVertexCode(e){return`${this.getSignature()} -// directives -${e.directives} - -// structs -${e.structs} - -// uniforms -${e.uniforms} - -// varyings -${e.varyings} -var varyings : VaryingsStruct; - -// codes -${e.codes} - -@vertex -fn main( ${e.attributes} ) -> VaryingsStruct { - - // vars - ${e.vars} - - // flow - ${e.flow} - - return varyings; - -} -`}_getWGSLFragmentCode(e){return`${this.getSignature()} -// global -${JN} - -// structs -${e.structs} - -// uniforms -${e.uniforms} - -// codes -${e.codes} - -@fragment -fn main( ${e.varyings} ) -> ${e.returnType} { - - // vars - ${e.vars} - - // flow - ${e.flow} - -} -`}_getWGSLComputeCode(e,t){const[n,i,a]=t;return`${this.getSignature()} -// directives -${e.directives} - -// system -var instanceIndex : u32; - -// locals -${e.scopedArrays} - -// structs -${e.structs} - -// uniforms -${e.uniforms} - -// codes -${e.codes} - -@compute @workgroup_size( ${n}, ${i}, ${a} ) -fn main( ${e.attributes} ) { - - // system - instanceIndex = globalId.x - + globalId.y * ( ${n} * numWorkgroups.x ) - + globalId.z * ( ${n} * numWorkgroups.x ) * ( ${i} * numWorkgroups.y ); - - // vars - ${e.vars} - - // flow - ${e.flow} - -} -`}_getWGSLStruct(e,t){return` -struct ${e} { -${t} -};`}_getWGSLStructBinding(e,t,n,i=0,a=0){const o=e+"Struct";return`${this._getWGSLStruct(o,t)} -@binding( ${i} ) @group( ${a} ) -var<${n}> ${e} : ${o};`}}class bW{constructor(e){this.backend=e}getCurrentDepthStencilFormat(e){let t;return e.depthTexture!==null?t=this.getTextureFormatGPU(e.depthTexture):e.depth&&e.stencil?t=sr.Depth24PlusStencil8:e.depth&&(t=sr.Depth24Plus),t}getTextureFormatGPU(e){return this.backend.get(e).format}getTextureSampleData(e){let t;if(e.isFramebufferTexture)t=1;else if(e.isDepthTexture&&!e.renderTarget){const a=this.backend.renderer,o=a.getRenderTarget();t=o?o.samples:a.currentSamples}else e.renderTarget&&(t=e.renderTarget.samples);t=t||1;const n=t>1&&e.renderTarget!==null&&e.isDepthTexture!==!0&&e.isFramebufferTexture!==!0;return{samples:t,primarySamples:n?1:t,isMSAA:n}}getCurrentColorFormat(e){let t;return e.textures!==null?t=this.getTextureFormatGPU(e.textures[0]):t=this.getPreferredCanvasFormat(),t}getCurrentColorFormats(e){return e.textures!==null?e.textures.map(t=>this.getTextureFormatGPU(t)):[this.getPreferredCanvasFormat()]}getCurrentColorSpace(e){return e.textures!==null?e.textures[0].colorSpace:this.backend.renderer.outputColorSpace}getPrimitiveTopology(e,t){if(e.isPoints)return kv.PointList;if(e.isLineSegments||e.isMesh&&t.wireframe===!0)return kv.LineList;if(e.isLine)return kv.LineStrip;if(e.isMesh)return kv.TriangleList}getSampleCount(e){return e>=4?4:1}getSampleCountRenderContext(e){return e.textures!==null?this.getSampleCount(e.sampleCount):this.getSampleCount(this.backend.renderer.currentSamples)}getPreferredCanvasFormat(){const t=this.backend.parameters.outputType;if(t===void 0)return navigator.gpu.getPreferredCanvasFormat();if(t===es)return sr.BGRA8Unorm;if(t===Wt)return sr.RGBA16Float;throw new Error("Unsupported output buffer type.")}}const eF=new Map([[Int8Array,["sint8","snorm8"]],[Uint8Array,["uint8","unorm8"]],[Int16Array,["sint16","snorm16"]],[Uint16Array,["uint16","unorm16"]],[Int32Array,["sint32","snorm32"]],[Uint32Array,["uint32","unorm32"]],[Float32Array,["float32"]]]);typeof Float16Array!="undefined"&&eF.set(Float16Array,["float16"]);const _W=new Map([[Yu,["float16"]]]),wW=new Map([[Int32Array,"sint32"],[Int16Array,"sint32"],[Uint32Array,"uint32"],[Uint16Array,"uint32"],[Float32Array,"float32"]]);class SW{constructor(e){this.backend=e}createAttribute(e,t){const n=this._getBufferAttribute(e),i=this.backend,a=i.get(n);let o=a.buffer;if(o===void 0){const u=i.device;let c=n.array;if(e.normalized===!1){if(c.constructor===Int16Array||c.constructor===Int8Array)c=new Int32Array(c);else if((c.constructor===Uint16Array||c.constructor===Uint8Array)&&(c=new Uint32Array(c),t&GPUBufferUsage.INDEX))for(let v=0;v0&&(o.groups===void 0&&(o.groups=[],o.versions=[]),o.versions[n]===i&&(c=o.groups[n])),c===void 0&&(c=this.createBindGroup(e,u),n>0&&(o.groups[n]=c,o.versions[n]=i)),o.group=c}updateBinding(e){const t=this.backend,n=t.device,i=e.buffer,a=t.get(e).buffer,o=e.updateRanges;if(o.length===0)n.queue.writeBuffer(a,0,i,0);else{const u=na(i),c=u?1:i.BYTES_PER_ELEMENT;for(let d=0,g=o.length;d1&&(M+=`-${c.texture.depthOrArrayLayers}`),M+=`-${g}-${v}`,d=c[M],d===void 0){const B=nW.All;let I;u.isSampledCubeTexture?I=hh.Cube:u.isSampledTexture3D?I=hh.ThreeD:u.texture.isArrayTexture||u.texture.isDataArrayTexture||u.texture.isCompressedArrayTexture?I=hh.TwoDArray:I=hh.TwoD,d=c[M]=c.texture.createView({aspect:B,dimension:I,mipLevelCount:g,baseMipLevel:v})}}o.push({binding:a,resource:d})}else if(u.isSampler){const c=n.get(u.texture);o.push({binding:a,resource:c.sampler})}a++}return i.createBindGroup({label:"bindGroup_"+e.name,layout:t,entries:o})}_createLayoutEntries(e){const t=[];let n=0;for(const i of e.bindings){const a=this.backend,o={binding:n,visibility:i.visibility};if(i.isUniformBuffer||i.isStorageBuffer){const u={};i.isStorageBuffer&&(i.visibility&C0.COMPUTE&&(i.access===od.READ_WRITE||i.access===od.WRITE_ONLY)?u.type=QM.Storage:u.type=QM.ReadOnlyStorage),o.buffer=u}else if(i.isSampledTexture&&i.store){const u={};u.format=this.backend.get(i.texture).texture.format;const c=i.access;c===od.READ_WRITE?u.access=WM.ReadWrite:c===od.WRITE_ONLY?u.access=WM.WriteOnly:u.access=WM.ReadOnly,i.texture.isArrayTexture?u.viewDimension=hh.TwoDArray:i.texture.is3DTexture&&(u.viewDimension=hh.ThreeD),o.storageTexture=u}else if(i.isSampledTexture){const u={},{primarySamples:c}=a.utils.getTextureSampleData(i.texture);if(c>1&&(u.multisampled=!0,i.texture.isDepthTexture||(u.sampleType=R0.UnfilterableFloat)),i.texture.isDepthTexture)a.compatibilityMode&&i.texture.compareFunction===null?u.sampleType=R0.UnfilterableFloat:u.sampleType=R0.Depth;else if(i.texture.isDataTexture||i.texture.isDataArrayTexture||i.texture.isData3DTexture){const d=i.texture.type;d===Xt?u.sampleType=R0.SInt:d===st?u.sampleType=R0.UInt:d===dt&&(this.backend.hasFeature("float32-filterable")?u.sampleType=R0.Float:u.sampleType=R0.UnfilterableFloat)}i.isSampledCubeTexture?u.viewDimension=hh.Cube:i.texture.isArrayTexture||i.texture.isDataArrayTexture||i.texture.isCompressedArrayTexture?u.viewDimension=hh.TwoDArray:i.isSampledTexture3D&&(u.viewDimension=hh.ThreeD),o.texture=u}else if(i.isSampler){const u={};i.texture.isDepthTexture&&(i.texture.compareFunction!==null?u.type=ZN.Comparison:a.compatibilityMode&&(u.type=ZN.NonFiltering)),o.sampler=u}else Gr(`WebGPUBindingUtils: Unsupported binding "${i}".`);t.push(o),n++}return t}deleteBindGroupData(e){const{backend:t}=this,n=t.get(e);n.layout&&(n.layout.usedTimes--,n.layout.usedTimes===0&&this._bindGroupLayoutCache.delete(n.layoutKey),n.layout=void 0,n.layoutKey=void 0)}dispose(){this._bindGroupLayoutCache.clear()}}class CW{constructor(e){this.backend=e,this._activePipelines=new WeakMap}setPipeline(e,t){this._activePipelines.get(e)!==t&&(e.setPipeline(t),this._activePipelines.set(e,t))}_getSampleCount(e){return this.backend.utils.getSampleCountRenderContext(e)}createRenderPipeline(e,t){const{object:n,material:i,geometry:a,pipeline:o}=e,{vertexProgram:u,fragmentProgram:c}=o,d=this.backend,g=d.device,v=d.utils,M=d.get(o),B=[];for(const pr of e.getBindings()){const Br=d.get(pr),{layoutGPU:zr}=Br.layout;B.push(zr)}const I=d.attributeUtils.createShaderVertexBuffers(e);let ne;i.blending!==we&&(i.blending!==ve||i.transparent!==!1)&&(ne=this._getBlending(i));let ee={};i.stencilWrite===!0&&(ee={compare:this._getStencilCompare(i),failOp:this._getStencilOperation(i.stencilFail),depthFailOp:this._getStencilOperation(i.stencilZFail),passOp:this._getStencilOperation(i.stencilZPass)});const q=this._getColorWriteMask(i),ye=[];if(e.context.textures!==null){const pr=e.context.textures;for(let Br=0;Br1},layout:g.createPipelineLayout({bindGroupLayouts:B})},pt={},xn=e.context.depth,cr=e.context.stencil;if((xn===!0||cr===!0)&&(xn===!0&&(pt.format=ht,pt.depthWriteEnabled=i.depthWrite,pt.depthCompare=Ye),cr===!0&&(pt.stencilFront=ee,pt.stencilBack={},pt.stencilReadMask=i.stencilFuncMask,pt.stencilWriteMask=i.stencilWriteMask),i.polygonOffset===!0&&(pt.depthBias=i.polygonOffsetUnits,pt.depthBiasSlopeScale=i.polygonOffsetFactor,pt.depthBiasClamp=0),qe.depthStencil=pt),g.pushErrorScope("validation"),t===null)M.pipeline=g.createRenderPipeline(qe),g.popErrorScope().then(pr=>{pr!==null&&(M.error=!0,Gr(pr.message))});else{const pr=new Promise(Br=>Pa(this,null,function*(){try{M.pipeline=yield g.createRenderPipelineAsync(qe)}catch(Dr){}const zr=yield g.popErrorScope();zr!==null&&(M.error=!0,Gr(zr.message)),Br()}));t.push(pr)}}createBundleEncoder(e,t="renderBundleEncoder"){const n=this.backend,{utils:i,device:a}=n,o=i.getCurrentDepthStencilFormat(e),u=i.getCurrentColorFormats(e),c=this._getSampleCount(e),d={label:t,colorFormats:u,depthStencilFormat:o,sampleCount:c};return a.createRenderBundleEncoder(d)}createComputePipeline(e,t){const n=this.backend,i=n.device,a=n.get(e.computeProgram).module,o=n.get(e),u=[];for(const c of t){const d=n.get(c),{layoutGPU:g}=d.layout;u.push(g)}o.pipeline=i.createComputePipeline({compute:a,layout:i.createPipelineLayout({bindGroupLayouts:u})})}_getBlending(e){let t,n;const i=e.blending,a=e.blendSrc,o=e.blendDst,u=e.blendEquation;if(i===ct){const c=e.blendSrcAlpha!==null?e.blendSrcAlpha:a,d=e.blendDstAlpha!==null?e.blendDstAlpha:o,g=e.blendEquationAlpha!==null?e.blendEquationAlpha:u;t={srcFactor:this._getBlendFactor(a),dstFactor:this._getBlendFactor(o),operation:this._getBlendOperation(u)},n={srcFactor:this._getBlendFactor(c),dstFactor:this._getBlendFactor(d),operation:this._getBlendOperation(g)}}else{const c=e.premultipliedAlpha,d=(g,v,M,B)=>{t={srcFactor:g,dstFactor:v,operation:B0.Add},n={srcFactor:M,dstFactor:B,operation:B0.Add}};if(c)switch(i){case ve:d(hl.One,hl.OneMinusSrcAlpha,hl.One,hl.OneMinusSrcAlpha);break;case Ee:d(hl.One,hl.One,hl.One,hl.One);break;case $e:d(hl.Zero,hl.OneMinusSrc,hl.Zero,hl.One);break;case Fe:d(hl.Dst,hl.OneMinusSrcAlpha,hl.Zero,hl.One);break}else switch(i){case ve:d(hl.SrcAlpha,hl.OneMinusSrcAlpha,hl.One,hl.OneMinusSrcAlpha);break;case Ee:d(hl.SrcAlpha,hl.One,hl.One,hl.One);break;case $e:Gr("WebGPURenderer: SubtractiveBlending requires material.premultipliedAlpha = true");break;case Fe:Gr("WebGPURenderer: MultiplyBlending requires material.premultipliedAlpha = true");break}}if(t!==void 0&&n!==void 0)return{color:t,alpha:n};Gr("WebGPURenderer: Invalid blending: ",i)}_getBlendFactor(e){let t;switch(e){case Lt:t=hl.Zero;break;case Wn:t=hl.One;break;case Xn:t=hl.Src;break;case In:t=hl.OneMinusSrc;break;case zn:t=hl.SrcAlpha;break;case dr:t=hl.OneMinusSrcAlpha;break;case Ge:t=hl.Dst;break;case Tt:t=hl.OneMinusDst;break;case vn:t=hl.DstAlpha;break;case _r:t=hl.OneMinusDstAlpha;break;case On:t=hl.SrcAlphaSaturated;break;case s5:t=hl.Constant;break;case a5:t=hl.OneMinusConstant;break;default:Gr("WebGPURenderer: Blend factor not supported.",e)}return t}_getStencilCompare(e){let t;const n=e.stencilFunc;switch(n){case fh:t=dd.Never;break;case lu:t=dd.Always;break;case Qf:t=dd.Less;break;case Ah:t=dd.LessEqual;break;case pd:t=dd.Equal;break;case gd:t=dd.GreaterEqual;break;case Vc:t=dd.Greater;break;case jo:t=dd.NotEqual;break;default:Gr("WebGPURenderer: Invalid stencil function.",n)}return t}_getStencilOperation(e){let t;switch(e){case Ku:t=Qm.Keep;break;case Uh:t=Qm.Zero;break;case sc:t=Qm.Replace;break;case Xo:t=Qm.Invert;break;case pu:t=Qm.IncrementClamp;break;case ou:t=Qm.DecrementClamp;break;case Ad:t=Qm.IncrementWrap;break;case hf:t=Qm.DecrementWrap;break;default:Gr("WebGPURenderer: Invalid stencil operation.",t)}return t}_getBlendOperation(e){let t;switch(e){case vt:t=B0.Add;break;case at:t=B0.Subtract;break;case kt:t=B0.ReverseSubtract;break;case It:t=B0.Min;break;case Bn:t=B0.Max;break;default:Gr("WebGPUPipelineUtils: Blend equation not supported.",e)}return t}_getPrimitiveState(e,t,n){const i={},a=this.backend.utils;i.topology=a.getPrimitiveTopology(e,n),t.index!==null&&e.isLine===!0&&e.isLineSegments!==!0&&(i.stripIndexFormat=t.index.array instanceof Uint16Array?Vv.Uint16:Vv.Uint32);let o=n.side===de;return e.isMesh&&e.matrixWorld.determinant()<0&&(o=!o),i.frontFace=o===!0?HN.CW:HN.CCW,i.cullMode=n.side===he?QN.None:QN.Back,i}_getColorWriteMask(e){return e.colorWrite===!0?WN.All:WN.None}_getDepthCompare(e){let t;if(e.depthTest===!1)t=dd.Always;else{const n=e.depthFunc;switch(n){case Mt:t=dd.Never;break;case Et:t=dd.Always;break;case pe:t=dd.Less;break;case Ae:t=dd.LessEqual;break;case Pe:t=dd.Equal;break;case Ut:t=dd.GreaterEqual;break;case jt:t=dd.Greater;break;case ft:t=dd.NotEqual;break;default:Gr("WebGPUPipelineUtils: Invalid depth function.",n)}}return t}}class TW extends zN{constructor(e,t,n=2048){super(n),this.device=e,this.type=t,this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxQueries,label:`queryset_global_timestamp_${t}`});const i=this.maxQueries*8;this.resolveBuffer=this.device.createBuffer({label:`buffer_timestamp_resolve_${t}`,size:i,usage:GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC}),this.resultBuffer=this.device.createBuffer({label:`buffer_timestamp_result_${t}`,size:i,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ})}allocateQueriesForContext(e){if(!this.trackTimestamp||this.isDisposed)return null;if(this.currentQueryIndex+2>this.maxQueries)return ki(`WebGPUTimestampQueryPool [${this.type}]: Maximum number of queries exceeded, when using trackTimestamp it is necessary to resolves the queries via renderer.resolveTimestampsAsync( THREE.TimestampQuery.${this.type.toUpperCase()} ).`),null;const t=this.currentQueryIndex;return this.currentQueryIndex+=2,this.queryOffsets.set(e,t),t}resolveQueriesAsync(){return Pa(this,null,function*(){if(!this.trackTimestamp||this.currentQueryIndex===0||this.isDisposed)return this.lastValue;if(this.pendingResolve)return this.pendingResolve;this.pendingResolve=this._resolveQueries();try{return yield this.pendingResolve}finally{this.pendingResolve=null}})}_resolveQueries(){return Pa(this,null,function*(){if(this.isDisposed)return this.lastValue;try{if(this.resultBuffer.mapState!=="unmapped")return this.lastValue;const e=new Map(this.queryOffsets),t=this.currentQueryIndex,n=t*8;this.currentQueryIndex=0,this.queryOffsets.clear();const i=this.device.createCommandEncoder();i.resolveQuerySet(this.querySet,0,t,this.resolveBuffer,0),i.copyBufferToBuffer(this.resolveBuffer,0,this.resultBuffer,0,n);const a=i.finish();if(this.device.queue.submit([a]),this.resultBuffer.mapState!=="unmapped")return this.lastValue;if(yield this.resultBuffer.mapAsync(GPUMapMode.READ,0,n),this.isDisposed)return this.resultBuffer.mapState==="mapped"&&this.resultBuffer.unmap(),this.lastValue;const o=new BigUint64Array(this.resultBuffer.getMappedRange(0,n)),u={},c=[];for(const[g,v]of e){const M=g.match(/^(.*):f(\d+)$/),B=parseInt(M[2]);c.includes(B)===!1&&c.push(B),u[B]===void 0&&(u[B]=0);const I=o[v],ne=o[v+1],ee=Number(ne-I)/1e6;this.timestamps.set(g,ee),u[B]+=ee}const d=u[c[c.length-1]];return this.resultBuffer.unmap(),this.lastValue=d,this.frames=c,d}catch(e){return Gr("Error resolving queries:",e),this.resultBuffer.mapState==="mapped"&&this.resultBuffer.unmap(),this.lastValue}})}dispose(){return Pa(this,null,function*(){if(!this.isDisposed){if(this.isDisposed=!0,this.pendingResolve)try{yield this.pendingResolve}catch(e){Gr("Error waiting for pending resolve:",e)}if(this.resultBuffer&&this.resultBuffer.mapState==="mapped")try{this.resultBuffer.unmap()}catch(e){Gr("Error unmapping buffer:",e)}this.querySet&&(this.querySet.destroy(),this.querySet=null),this.resolveBuffer&&(this.resolveBuffer.destroy(),this.resolveBuffer=null),this.resultBuffer&&(this.resultBuffer.destroy(),this.resultBuffer=null),this.queryOffsets.clear(),this.pendingResolve=null}})}}class $M extends ON{constructor(e={}){super(e),this.isWebGPUBackend=!0,this.parameters.alpha=e.alpha===void 0?!0:e.alpha,this.parameters.compatibilityMode=e.compatibilityMode===void 0?!1:e.compatibilityMode,this.parameters.requiredLimits=e.requiredLimits===void 0?{}:e.requiredLimits,this.compatibilityMode=this.parameters.compatibilityMode,this.device=null,this.defaultRenderPassdescriptor=null,this.utils=new bW(this),this.attributeUtils=new SW(this),this.bindingUtils=new EW(this),this.pipelineUtils=new CW(this),this.textureUtils=new cW(this),this.occludedResolveCache=new Map}init(e){return Pa(this,null,function*(){yield TP($M.prototype,this,"init").call(this,e);const t=this.parameters;let n;if(t.device===void 0){const i={powerPreference:t.powerPreference,featureLevel:t.compatibilityMode?"compatibility":void 0},a=typeof navigator!="undefined"?yield navigator.gpu.requestAdapter(i):null;if(a===null)throw new Error("WebGPUBackend: Unable to create WebGPU adapter.");const o=Object.values(ZM),u=[];for(const d of o)a.features.has(d)&&u.push(d);const c={requiredFeatures:u,requiredLimits:t.requiredLimits};n=yield a.requestDevice(c)}else n=t.device;n.lost.then(i=>{if(i.reason==="destroyed")return;const a={api:"WebGPU",message:i.message||"Unknown reason",reason:i.reason||null,originalEvent:i};e.onDeviceLost(a)}),this.device=n,this.trackTimestamp=this.trackTimestamp&&this.hasFeature(ZM.TimestampQuery),this.updateSize()})}get context(){const e=this.renderer.getCanvasTarget(),t=this.get(e);let n=t.context;if(n===void 0){const i=this.parameters;e.isDefaultCanvasTarget===!0&&i.context!==void 0?n=i.context:n=e.domElement.getContext("webgpu"),"setAttribute"in e.domElement&&e.domElement.setAttribute("data-engine",`three.js r${m} webgpu`);const a=i.alpha?"premultiplied":"opaque",o=i.outputType===Wt?"extended":"standard";n.configure({device:this.device,format:this.utils.getPreferredCanvasFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,alphaMode:a,toneMapping:{mode:o}}),t.context=n}return n}get coordinateSystem(){return To}getArrayBufferAsync(e){return Pa(this,null,function*(){return yield this.attributeUtils.getArrayBufferAsync(e)})}getContext(){return this.context}_getDefaultRenderPassDescriptor(){const e=this.renderer,t=e.getCanvasTarget(),n=this.get(t),i=e.currentSamples;let a=n.descriptor;if(a===void 0||n.samples!==i){a={colorAttachments:[{view:null}]},(e.depth===!0||e.stencil===!0)&&(a.depthStencilAttachment={view:this.textureUtils.getDepthBuffer(e.depth,e.stencil).createView()});const u=a.colorAttachments[0];i>0?u.view=this.textureUtils.getColorBuffer().createView():u.resolveTarget=void 0,n.descriptor=a,n.samples=i}const o=a.colorAttachments[0];return i>0?o.resolveTarget=this.context.getCurrentTexture().createView():o.view=this.context.getCurrentTexture().createView(),a}_isRenderCameraDepthArray(e){return e.depthTexture&&e.depthTexture.image.depth>1&&e.camera.isArrayCamera}_getRenderPassDescriptor(e,t={}){const n=e.renderTarget,i=this.get(n);let a=i.descriptors;(a===void 0||i.width!==n.width||i.height!==n.height||i.samples!==n.samples)&&(a={},i.descriptors=a);const o=e.getCacheKey();let u=a[o];if(u===void 0){const d=e.textures,g=[];let v;const M=this._isRenderCameraDepthArray(e);for(let B=0;B1)if(M===!0){const ee=e.camera.cameras;for(let q=0;q0&&(t.currentOcclusionQuerySet&&t.currentOcclusionQuerySet.destroy(),t.currentOcclusionQueryBuffer&&t.currentOcclusionQueryBuffer.destroy(),t.currentOcclusionQuerySet=t.occlusionQuerySet,t.currentOcclusionQueryBuffer=t.occlusionQueryBuffer,t.currentOcclusionQueryObjects=t.occlusionQueryObjects,a=n.createQuerySet({type:"occlusion",count:i,label:`occlusionQuerySet_${e.id}`}),t.occlusionQuerySet=a,t.occlusionQueryIndex=0,t.occlusionQueryObjects=new Array(i),t.lastOcclusionObject=null);let o;e.textures===null?o=this._getDefaultRenderPassDescriptor():o=this._getRenderPassDescriptor(e,{loadOp:Kl.Load}),this.initTimestampQuery(ml.RENDER,this.getTimestampUID(e),o),o.occlusionQuerySet=a;const u=o.depthStencilAttachment;if(e.textures!==null){const d=o.colorAttachments;for(let g=0;g0&&t.currentPass.executeBundles(t.renderBundles),n>t.occlusionQueryIndex&&t.currentPass.endOcclusionQuery();const i=t.encoder;if(this._isRenderCameraDepthArray(e)===!0){const a=[];for(let o=0;o0){const a=n*8;let o=this.occludedResolveCache.get(a);o===void 0&&(o=this.device.createBuffer({size:a,usage:GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC}),this.occludedResolveCache.set(a,o));const u=this.device.createBuffer({size:a,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});t.encoder.resolveQuerySet(t.occlusionQuerySet,0,n,o,0),t.encoder.copyBufferToBuffer(o,0,u,0,a),t.occlusionQueryBuffer=u,this.resolveOccludedAsync(e)}if(this.device.queue.submit([t.encoder.finish()]),e.textures!==null){const a=e.textures;for(let o=0;oB&&(a[0]=Math.min(M,B),a[1]=Math.ceil(M/B)),o.dispatchSize=a}a=o.dispatchSize}u.dispatchWorkgroups(a[0],a[1]||1,a[2]||1)}finishCompute(e){const t=this.get(e);t.passEncoderGPU.end(),this.device.queue.submit([t.cmdEncoderGPU.finish()])}draw(e,t){const{object:n,material:i,context:a,pipeline:o}=e,u=e.getBindings(),c=this.get(a),d=this.get(o),g=d.pipeline;if(d.error===!0)return;const v=e.getIndex(),M=v!==null,B=e.getDrawParameters();if(B===null)return;const I=(ee,q)=>{this.pipelineUtils.setPipeline(ee,g),q.pipeline=g;const ye=q.bindingGroups;for(let ke=0,nt=u.length;ke{if(I(ee,q),n.isBatchedMesh===!0){const ye=n._multiDrawStarts,Ce=n._multiDrawCounts,ke=n._multiDrawCount,nt=n._multiDrawInstances;nt!==null&&ki("WebGPUBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.");for(let Ye=0;Ye1?0:Ye;M===!0?ee.drawIndexed(Ce[Ye],ht,ye[Ye]/v.array.BYTES_PER_ELEMENT,0,Rt):ee.draw(Ce[Ye],ht,ye[Ye],Rt),t.update(n,Ce[Ye],ht)}}else if(M===!0){const{vertexCount:ye,instanceCount:Ce,firstVertex:ke}=B,nt=e.getIndirect();if(nt!==null){const Ye=this.get(nt).buffer,ht=e.getIndirectOffset(),Rt=Array.isArray(ht)?ht:[ht];for(let qe=0;qe0){const ee=this.get(e.camera),q=e.camera.cameras,ye=e.getBindingGroup("cameraIndex");if(ee.indexesGPU===void 0||ee.indexesGPU.length!==q.length){const ke=this.get(ye),nt=[],Ye=new Uint32Array([0,0,0,0]);for(let ht=0,Rt=q.length;ht(Lr("WebGPURenderer: WebGPU is not available, running under WebGL2 backend."),new GN(e)));const n=new t(e);super(n,e),this.library=new IW,this.isWebGPURenderer=!0,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}}class Sj extends null{constructor(){super(),this.isBundleGroup=!0,this.type="BundleGroup",this.static=!0,this.version=0}set needsUpdate(e){e===!0&&this.version++}}class Mj{constructor(e,t=Ks(0,0,1,1)){this.renderer=e,this.outputNode=t,this.outputColorTransform=!0,this.needsUpdate=!0;const n=new yc;n.name="PostProcessing",this._quadMesh=new nx(n),this._quadMesh.name="Post-Processing",this._context=null}render(){const e=this.renderer;this._update(),this._context.onBeforePostProcessing!==null&&this._context.onBeforePostProcessing();const t=e.toneMapping,n=e.outputColorSpace;e.toneMapping=NoToneMapping,e.outputColorSpace=ColorManagement.workingColorSpace;const i=e.xr.enabled;e.xr.enabled=!1,this._quadMesh.render(e),e.xr.enabled=i,e.toneMapping=t,e.outputColorSpace=n,this._context.onAfterPostProcessing!==null&&this._context.onAfterPostProcessing()}get context(){return this._context}dispose(){this._quadMesh.material.dispose()}_update(){if(this.needsUpdate===!0){const e=this.renderer,t=e.toneMapping,n=e.outputColorSpace,i={postProcessing:this,onBeforePostProcessing:null,onAfterPostProcessing:null};let a=this.outputNode;this.outputColorTransform===!0?(a=a.context(i),a=nS(a,t,n)):(i.toneMapping=t,i.outputColorSpace=n,a=a.context(i)),this._context=i,this._quadMesh.material.fragmentNode=a,this._quadMesh.material.needsUpdate=!0,this.needsUpdate=!1}}renderAsync(){return Pa(this,null,function*(){warnOnce('PostProcessing: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.'),yield this.renderer.init(),this.render()})}}class Ej extends null{constructor(e=1,t=1){super(),this.image={width:e,height:t},this.magFilter=LinearFilter,this.minFilter=LinearFilter,this.isStorageTexture=!0,this.mipmapsAutoUpdate=!0}setSize(e,t){(this.image.width!==e||this.image.height!==t)&&(this.image.width=e,this.image.height=t,this.dispose())}}class Cj extends null{constructor(e=1,t=1,n=1){super(),this.isArrayTexture=!1,this.image={width:e,height:t,depth:n},this.magFilter=LinearFilter,this.minFilter=LinearFilter,this.wrapR=ClampToEdgeWrapping,this.isStorageTexture=!0,this.is3DTexture=!0}setSize(e,t,n){(this.image.width!==e||this.image.height!==t||this.image.depth!==n)&&(this.image.width=e,this.image.height=t,this.image.depth=n,this.dispose())}}class Tj extends null{constructor(e=1,t=1,n=1){super(),this.isArrayTexture=!0,this.image={width:e,height:t,depth:n},this.magFilter=LinearFilter,this.minFilter=LinearFilter,this.isStorageTexture=!0}setSize(e,t,n){(this.image.width!==e||this.image.height!==t||this.image.depth!==n)&&(this.image.width=e,this.image.height=t,this.image.depth=n,this.dispose())}}class Bj extends null{constructor(e,t){super(e,t,Uint32Array),this.isIndirectStorageBufferAttribute=!0}}class FW extends null{constructor(e){super(e),this.textures={},this.nodes={}}load(e,t,n,i){const a=new FileLoader(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,o=>{try{t(this.parse(JSON.parse(o)))}catch(u){i?i(u):error(u),this.manager.itemError(e)}},n,i)}parseNodes(e){const t={};if(e!==void 0){for(const i of e){const{uuid:a,type:o}=i;t[a]=this.createNodeFromType(o),t[a].uuid=a}const n={nodes:t,textures:this.textures};for(const i of e)i.meta=n,t[i.uuid].deserialize(i),delete i.meta}return t}parse(e){const t=this.createNodeFromType(e.type);t.uuid=e.uuid;const i={nodes:this.parseNodes(e.nodes),textures:this.textures};return e.meta=i,t.deserialize(e),delete e.meta,t}setTextures(e){return this.textures=e,this}setNodes(e){return this.nodes=e,this}createNodeFromType(e){return this.nodes[e]===void 0?(error("NodeLoader: Node type not found:",e),qt()):new this.nodes[e]}}class PW extends null{constructor(e){super(e),this.nodes={},this.nodeMaterials={}}parse(e){const t=super.parse(e),n=this.nodes,i=e.inputNodes;for(const a in i){const o=i[a];t[a]=n[o]}return t}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}createMaterialFromType(e){const t=this.nodeMaterials[e];return t!==void 0?new t:super.createMaterialFromType(e)}}class Rj extends null{constructor(e){super(e),this.nodes={},this.nodeMaterials={},this._nodesJSON=null}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}parse(e,t){this._nodesJSON=e.nodes;const n=super.parse(e,t);return this._nodesJSON=null,n}parseNodes(e,t){if(e!==void 0){const n=new FW;return n.setNodes(this.nodes),n.setTextures(t),n.parseNodes(e)}return{}}parseMaterials(e,t){const n={};if(e!==void 0){const i=this.parseNodes(this._nodesJSON,t),a=new PW;a.setTextures(t),a.setNodes(i),a.setNodeMaterials(this.nodeMaterials);for(let o=0,u=e.length;otF&&(this.dispatchEvent(XM),this._lastPosition.copy(this.object.position))):this.object.isOrthographicCamera?(this.object.lookAt(this.target),(this._lastPosition.distanceToSquared(this.object.position)>tF||this._lastZoom!==this.object.zoom)&&(this.dispatchEvent(XM),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type.")}reset(){this.state=$l.NONE,this.keyState=$l.NONE,this.target.copy(this._target0),this.object.position.copy(this._position0),this.object.up.copy(this._up0),this.object.zoom=this._zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(XM),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom}_panCamera(){if(Wm.copy(this._panEnd).sub(this._panStart),Wm.lengthSq()){if(this.object.isOrthographicCamera){const e=(this.object.right-this.object.left)/this.object.zoom/this.domElement.clientWidth,t=(this.object.top-this.object.bottom)/this.object.zoom/this.domElement.clientWidth;Wm.x*=e,Wm.y*=t}Wm.multiplyScalar(this._eye.length()*this.panSpeed),D_.copy(this._eye).cross(this.object.up).setLength(Wm.x),D_.add(LW.copy(this.object.up).setLength(Wm.y)),this.object.position.add(D_),this.target.add(D_),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(Wm.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}}_rotateCamera(){V_.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0);let e=V_.length();e?(this._eye.copy(this.object.position).sub(this.target),nF.copy(this._eye).normalize(),k_.copy(this.object.up).normalize(),JM.crossVectors(k_,nF).normalize(),k_.setLength(this._moveCurr.y-this._movePrev.y),JM.setLength(this._moveCurr.x-this._movePrev.x),V_.copy(k_.add(JM)),qM.crossVectors(V_,this._eye).normalize(),e*=this.rotateSpeed,zv.setFromAxisAngle(qM,e),this._eye.applyQuaternion(zv),this.object.up.applyQuaternion(zv),this._lastAxis.copy(qM),this._lastAngle=e):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),zv.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(zv),this.object.up.applyQuaternion(zv)),this._movePrev.copy(this._moveCurr)}_zoomCamera(){let e;this.state===$l.TOUCH_ZOOM_PAN?(e=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(e):this.object.isOrthographicCamera?(this.object.zoom=me.clamp(this.object.zoom/e,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")):(e=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,e!==1&&e>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(e):this.object.isOrthographicCamera?(this.object.zoom=me.clamp(this.object.zoom/e,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor)}_getMouseOnScreen(e,t){return O_.set((e-this.screen.left)/this.screen.width,(t-this.screen.top)/this.screen.height),O_}_getMouseOnCircle(e,t){return O_.set((e-this.screen.width*.5-this.screen.left)/(this.screen.width*.5),(this.screen.height+2*(this.screen.top-t))/this.screen.width),O_}_addPointer(e){this._pointers.push(e)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;tthis.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()Math.PI&&(n-=zf),i<-Math.PI?i+=zf:i>Math.PI&&(i-=zf),n<=i?this._spherical.theta=Math.max(n,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+i)/2?Math.max(n,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const o=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),a=o!=this._spherical.radius}if(Lh.setFromSpherical(this._spherical),Lh.applyQuaternion(this._quatInverse),t.copy(this.target).add(Lh),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let o=null;if(this.object.isPerspectiveCamera){const u=Lh.length();o=this._clampDistance(u*this._scale);const c=u-o;this.object.position.addScaledVector(this._dollyDirection,c),this.object.updateMatrixWorld(),a=!!c}else if(this.object.isOrthographicCamera){const u=new le(this._mouse.x,this._mouse.y,0);u.unproject(this.object);const c=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),a=c!==this.object.zoom;const d=new le(this._mouse.x,this._mouse.y,0);d.unproject(this.object),this.object.position.sub(d).add(u),this.object.updateMatrixWorld(),o=Lh.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;o!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(o).add(this.object.position):(z_.origin.copy(this.object.position),z_.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(z_.direction))tE||8*(1-this._lastQuaternion.dot(this.object.quaternion))>tE||this._lastTargetPosition.distanceToSquared(this.target)>tE?(this.dispatchEvent(rF),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?zf/60*this.autoRotateSpeed*e:zf/60/60*this.autoRotateSpeed}_getZoomScale(e){const t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){Lh.setFromMatrixColumn(t,0),Lh.multiplyScalar(-e),this._panOffset.add(Lh)}_panUp(e,t){this.screenSpacePanning===!0?Lh.setFromMatrixColumn(t,1):(Lh.setFromMatrixColumn(t,0),Lh.crossVectors(this.object.up,Lh)),Lh.multiplyScalar(e),this._panOffset.add(Lh)}_pan(e,t){const n=this.domElement;if(this.object.isPerspectiveCamera){const i=this.object.position;Lh.copy(i).sub(this.target);let a=Lh.length();a*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*a/n.clientHeight,this.object.matrix),this._panUp(2*t*a/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const n=this.domElement.getBoundingClientRect(),i=e-n.left,a=t-n.top,o=n.width,u=n.height;this._mouse.x=i/o*2-1,this._mouse.y=-(a/u)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(zf*this._rotateDelta.x/t.clientHeight),this._rotateUp(zf*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(zf*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-zf*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(zf*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-zf*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._rotateStart.set(n,i)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panStart.set(n,i)}}_handleTouchStartDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,i=e.pageY-t.y,a=Math.sqrt(n*n+i*i);this._dollyStart.set(0,a)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{const n=this._getSecondPointerPosition(e),i=.5*(e.pageX+n.x),a=.5*(e.pageY+n.y);this._rotateEnd.set(i,a)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(zf*this._rotateDelta.x/t.clientHeight),this._rotateUp(zf*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panEnd.set(n,i)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,i=e.pageY-t.y,a=Math.sqrt(n*n+i*i);this._dollyEnd.set(0,a),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const o=(e.pageX+t.x)*.5,u=(e.pageY+t.y)*.5;this._updateZoomParameters(o,u)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;taF||8*(1-this._lastQuaternion.dot(t.quaternion))>aF)&&(this.dispatchEvent(h9),this._lastQuaternion.copy(t.quaternion),this._lastPosition.copy(t.position))}_updateMovementVector(){const e=this._moveState.forward||this.autoForward&&!this._moveState.back?1:0;this._moveVector.x=-this._moveState.left+this._moveState.right,this._moveVector.y=-this._moveState.down+this._moveState.up,this._moveVector.z=-e+this._moveState.back}_updateRotationVector(){this._rotationVector.x=-this._moveState.pitchDown+this._moveState.pitchUp,this._rotationVector.y=-this._moveState.yawRight+this._moveState.yawLeft,this._rotationVector.z=-this._moveState.rollRight+this._moveState.rollLeft}_getContainerDimensions(){return this.domElement!=document?{size:[this.domElement.offsetWidth,this.domElement.offsetHeight],offset:[this.domElement.offsetLeft,this.domElement.offsetTop]}:{size:[window.innerWidth,window.innerHeight],offset:[0,0]}}}function f9(s){if(!(s.altKey||this.enabled===!1)){switch(s.code){case"ShiftLeft":case"ShiftRight":this.movementSpeedMultiplier=.1;break;case"KeyW":this._moveState.forward=1;break;case"KeyS":this._moveState.back=1;break;case"KeyA":this._moveState.left=1;break;case"KeyD":this._moveState.right=1;break;case"KeyR":this._moveState.up=1;break;case"KeyF":this._moveState.down=1;break;case"ArrowUp":this._moveState.pitchUp=1;break;case"ArrowDown":this._moveState.pitchDown=1;break;case"ArrowLeft":this._moveState.yawLeft=1;break;case"ArrowRight":this._moveState.yawRight=1;break;case"KeyQ":this._moveState.rollLeft=1;break;case"KeyE":this._moveState.rollRight=1;break}this._updateMovementVector(),this._updateRotationVector()}}function A9(s){if(this.enabled!==!1){switch(s.code){case"ShiftLeft":case"ShiftRight":this.movementSpeedMultiplier=1;break;case"KeyW":this._moveState.forward=0;break;case"KeyS":this._moveState.back=0;break;case"KeyA":this._moveState.left=0;break;case"KeyD":this._moveState.right=0;break;case"KeyR":this._moveState.up=0;break;case"KeyF":this._moveState.down=0;break;case"ArrowUp":this._moveState.pitchUp=0;break;case"ArrowDown":this._moveState.pitchDown=0;break;case"ArrowLeft":this._moveState.yawLeft=0;break;case"ArrowRight":this._moveState.yawRight=0;break;case"KeyQ":this._moveState.rollLeft=0;break;case"KeyE":this._moveState.rollRight=0;break}this._updateMovementVector(),this._updateRotationVector()}}function p9(s){if(this.enabled!==!1)if(this.dragToLook)this._status++;else{switch(s.button){case 0:this._moveState.forward=1;break;case 2:this._moveState.back=1;break}this._updateMovementVector()}}function g9(s){if(this.enabled!==!1&&(!this.dragToLook||this._status>0)){const e=this._getContainerDimensions(),t=e.size[0]/2,n=e.size[1]/2;this._moveState.yawLeft=-(s.pageX-e.offset[0]-t)/t,this._moveState.pitchDown=(s.pageY-e.offset[1]-n)/n,this._updateRotationVector()}}function m9(s){if(this.enabled!==!1){if(this.dragToLook)this._status--,this._moveState.yawLeft=this._moveState.pitchDown=0;else{switch(s.button){case 0:this._moveState.forward=0;break;case 2:this._moveState.back=0;break}this._updateMovementVector()}this._updateRotationVector()}}function v9(){this.enabled!==!1&&(this.dragToLook?(this._status=0,this._moveState.yawLeft=this._moveState.pitchDown=0):(this._moveState.forward=0,this._moveState.back=0,this._updateMovementVector()),this._updateRotationVector())}function y9(s){this.enabled!==!1&&s.preventDefault()}const x9={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:` - - varying vec2 vUv; - - void main() { - - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }`,fragmentShader:` - - uniform float opacity; - - uniform sampler2D tDiffuse; - - varying vec2 vUv; - - void main() { - - vec4 texel = texture2D( tDiffuse, vUv ); - gl_FragColor = opacity * texel; - - - }`};class G_{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const b9=new Pg(-1,1,1,-1,0,1);class _9 extends ka{constructor(){super(),this.setAttribute("position",new Ui([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Ui([0,2,0,0,2,0],2))}}const w9=new _9;class S9{constructor(e){this._mesh=new Il(w9,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,b9)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}class M9 extends G_{constructor(e,t="tDiffuse"){super(),this.textureID=t,this.uniforms=null,this.material=null,e instanceof nh?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=Vh.clone(e.uniforms),this.material=new nh({name:e.name!==void 0?e.name:"unspecified",defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this._fsQuad=new S9(this.material)}render(e,t,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=n.texture),this._fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this._fsQuad.render(e))}dispose(){this.material.dispose(),this._fsQuad.dispose()}}class lF extends G_{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,n){const i=e.getContext(),a=e.state;a.buffers.color.setMask(!1),a.buffers.depth.setMask(!1),a.buffers.color.setLocked(!0),a.buffers.depth.setLocked(!0);let o,u;this.inverse?(o=0,u=1):(o=1,u=0),a.buffers.stencil.setTest(!0),a.buffers.stencil.setOp(i.REPLACE,i.REPLACE,i.REPLACE),a.buffers.stencil.setFunc(i.ALWAYS,o,4294967295),a.buffers.stencil.setClear(u),a.buffers.stencil.setLocked(!0),e.setRenderTarget(n),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),a.buffers.color.setLocked(!1),a.buffers.depth.setLocked(!1),a.buffers.color.setMask(!0),a.buffers.depth.setMask(!0),a.buffers.stencil.setLocked(!1),a.buffers.stencil.setFunc(i.EQUAL,1,4294967295),a.buffers.stencil.setOp(i.KEEP,i.KEEP,i.KEEP),a.buffers.stencil.setLocked(!0)}}class E9 extends G_{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}class C9{constructor(e,t){if(this.renderer=e,this._pixelRatio=e.getPixelRatio(),t===void 0){const n=e.getSize(new ce);this._width=n.width,this._height=n.height,t=new Os(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:Wt}),t.texture.name="EffectComposer.rt1"}else this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new M9(x9),this.copyPass.material.blending=we,this.clock=new pp}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t0)break}while(fF(i,a));u=I.notation==="postfix",I.symbol!==")"&&(i.push(I),u&&fF(i,a))}else if(v){if(i.push(v.prefix||v.func),v.func&&(n=o.exec(s),!n||n[0]!=="("))throw new ro(38,n?n.index:s.length,s)}else a.push(+d),u=!0}while(n&&i.length);if(i.length)throw new ro(39,n?n.index:s.length,s);if(n)throw new ro(40,n?n.index:s.length,s);return a.pop()}function rE(s){return s.split("").reverse().join("")}function Lj(s,e){var t=rE(s),n=t.match(dF);if(n&&!n.every(function(a){return a===n[0]}))throw new ro(41);var i=rE(t.replace(dF,""));return""+Q9(i,e)+(n?rE(n[0]):"")}var W9=/--[\S]*/g;function Uj(s,e){if(!s||!s.match(W9))throw new ro(73);var t;if(typeof document!="undefined"&&document.documentElement!==null&&(t=getComputedStyle(document.documentElement).getPropertyValue(s)),t)return t.trim();if(e)return e;throw new ro(74)}function mx(s){return s.charAt(0).toUpperCase()+s.slice(1)}var Z9=null;function K9(s,e){if(!s)return e.toLowerCase();var t=s.split("-");if(t.length>1)return t.splice(1,0,e),t.reduce(function(i,a){return""+i+mx(a)});var n=s.replace(/([a-z])([A-Z])/g,"$1"+e+"$2");return s===n?""+s+e:n}function $9(s,e){for(var t={},n=0;n1?e-1:0),n=1;n=0)?t[n]=s[n]+" !important":t[n]=s[n]}),t}var mF={minorSecond:1.067,majorSecond:1.125,minorThird:1.2,majorThird:1.25,perfectFourth:1.333,augFourth:1.414,perfectFifth:1.5,minorSixth:1.6,goldenSection:1.618,majorSixth:1.667,minorSeventh:1.778,majorSeventh:1.875,octave:2,majorTenth:2.5,majorEleventh:2.667,majorTwelfth:3,doubleOctave:4};function J9(s){return mF[s]}function kj(s,e,t){if(e===void 0&&(e="1em"),t===void 0&&(t=1.333),typeof s!="number")throw new ro(42);if(typeof t=="string"&&!mF[t])throw new ro(43);var n=typeof e=="string"?im(e):[e,""],i=n[0],a=n[1],o=typeof t=="string"?J9(t):t;if(typeof i=="string")throw new ro(44,e);return""+i*Math.pow(o,s)+(a||"")}var Vj=gF("rem"),zj=null,iE=16;function vF(s){var e=im(s);if(e[1]==="px")return parseFloat(s);if(e[1]==="%")return parseFloat(s)/100*iE;throw new ro(78,e[1])}function e7(){if(typeof document!="undefined"&&document.documentElement!==null){var s=getComputedStyle(document.documentElement).fontSize;return s?vF(s):iE}return iE}function Gj(s,e){var t=im(s);if(t[1]!=="rem"&&t[1]!=="")throw new ro(77,t[1]);var n=e?vF(e):e7();return t[0]*n+"px"}var t7={back:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",circ:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",cubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",expo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",quad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",quart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",quint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",sine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)"};function Hj(s){return t7[s.toLowerCase().trim()]}var n7={back:"cubic-bezier(0.680, -0.550, 0.265, 1.550)",circ:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",cubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",expo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",quad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",quart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",quint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",sine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};function Qj(s){return n7[s.toLowerCase().trim()]}var r7={back:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",cubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",circ:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",expo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",quad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",quart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",quint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",sine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)"};function Wj(s){return r7[s.toLowerCase().trim()]}function yF(s,e,t,n){t===void 0&&(t="320px"),n===void 0&&(n="1200px");var i=im(s),a=i[0],o=i[1],u=im(e),c=u[0],d=u[1],g=im(t),v=g[0],M=g[1],B=im(n),I=B[0],ne=B[1];if(typeof v!="number"||typeof I!="number"||!M||!ne||M!==ne)throw new ro(47);if(typeof a!="number"||typeof c!="number"||o!==d)throw new ro(48);if(o!==M||d!==ne)throw new ro(76);var ee=(a-c)/(v-I),q=c-ee*I;return"calc("+q.toFixed(2)+(o||"")+" + "+(100*ee).toFixed(2)+"vw)"}function Zj(s){var e;s===void 0&&(s="&");var t=s+"::after";return e={},e[t]={clear:"both",content:'""',display:"table"},e}function Kj(s){return s===void 0&&(s=0),{position:"absolute",top:s,right:s,bottom:s,left:s}}function $j(s,e){e===void 0&&(e=1);var t={display:"inline-block",maxWidth:s||"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",wordWrap:"normal"};return e>1?_extends({},t,{WebkitBoxOrient:"vertical",WebkitLineClamp:e,display:"-webkit-box",whiteSpace:"normal"}):t}function i7(s,e){var t=typeof Symbol!="undefined"&&s[Symbol.iterator]||s["@@iterator"];if(t)return(t=t.call(s)).next.bind(t);if(Array.isArray(s)||(t=s7(s))||e&&s&&typeof s.length=="number"){t&&(s=t);var n=0;return function(){return n>=s.length?{done:!0}:{done:!1,value:s[n++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function s7(s,e){if(s){if(typeof s=="string")return xF(s,e);var t=Object.prototype.toString.call(s).slice(8,-1);if(t==="Object"&&s.constructor&&(t=s.constructor.name),t==="Map"||t==="Set")return Array.from(s);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return xF(s,e)}}function xF(s,e){(e==null||e>s.length)&&(e=s.length);for(var t=0,n=new Array(e);t1?t-1:0),i=1;i1?(e=e.slice(0,-1),e+=", "+n[a]):o.length===1&&(e+=""+n[a])}else n[a]&&(e+=n[a]+" ");return e.trim()}var wF;function Jj(s){var e=s.colorStops,t=s.fallback,n=s.toDirection,i=n===void 0?"":n;if(!e||e.length<2)throw new ro(56);return{backgroundColor:t||e[0].replace(/,\s+/g,",").split(" ")[0].replace(/,(?=\S)/g,", "),backgroundImage:_F(wF||(wF=_taggedTemplateLiteralLoose(["linear-gradient(","",")"])),i,e.join(", ").replace(/,(?=\S)/g,", "))}}function eY(){var s;return[(s={html:{lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:"0"},main:{display:"block"},h1:{fontSize:"2em",margin:"0.67em 0"},hr:{boxSizing:"content-box",height:"0",overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{backgroundColor:"transparent"},"abbr[title]":{borderBottom:"none",textDecoration:"underline"}},s[`b, - strong`]={fontWeight:"bolder"},s[`code, - kbd, - samp`]={fontFamily:"monospace, monospace",fontSize:"1em"},s.small={fontSize:"80%"},s[`sub, - sup`]={fontSize:"75%",lineHeight:"0",position:"relative",verticalAlign:"baseline"},s.sub={bottom:"-0.25em"},s.sup={top:"-0.5em"},s.img={borderStyle:"none"},s[`button, - input, - optgroup, - select, - textarea`]={fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15",margin:"0"},s[`button, - input`]={overflow:"visible"},s[`button, - select`]={textTransform:"none"},s[`button, - html [type="button"], - [type="reset"], - [type="submit"]`]={WebkitAppearance:"button"},s[`button::-moz-focus-inner, - [type="button"]::-moz-focus-inner, - [type="reset"]::-moz-focus-inner, - [type="submit"]::-moz-focus-inner`]={borderStyle:"none",padding:"0"},s[`button:-moz-focusring, - [type="button"]:-moz-focusring, - [type="reset"]:-moz-focusring, - [type="submit"]:-moz-focusring`]={outline:"1px dotted ButtonText"},s.fieldset={padding:"0.35em 0.625em 0.75em"},s.legend={boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:"0",whiteSpace:"normal"},s.progress={verticalAlign:"baseline"},s.textarea={overflow:"auto"},s[`[type="checkbox"], - [type="radio"]`]={boxSizing:"border-box",padding:"0"},s[`[type="number"]::-webkit-inner-spin-button, - [type="number"]::-webkit-outer-spin-button`]={height:"auto"},s['[type="search"]']={WebkitAppearance:"textfield",outlineOffset:"-2px"},s['[type="search"]::-webkit-search-decoration']={WebkitAppearance:"none"},s["::-webkit-file-upload-button"]={WebkitAppearance:"button",font:"inherit"},s.details={display:"block"},s.summary={display:"list-item"},s.template={display:"none"},s["[hidden]"]={display:"none"},s),{"abbr[title]":{textDecoration:"underline dotted"}}]}var SF;function tY(s){var e=s.colorStops,t=s.extent,n=t===void 0?"":t,i=s.fallback,a=s.position,o=a===void 0?"":a,u=s.shape,c=u===void 0?"":u;if(!e||e.length<2)throw new ro(57);return{backgroundColor:i||e[0].split(" ")[0],backgroundImage:_F(SF||(SF=_taggedTemplateLiteralLoose(["radial-gradient(","","","",")"])),o,c,n,e.join(", "))}}function nY(s,e,t,n,i){var a;if(t===void 0&&(t="png"),i===void 0&&(i="_2x"),!s)throw new ro(58);var o=t.replace(/^\./,""),u=n?n+"."+o:""+s+i+"."+o;return a={backgroundImage:"url("+s+"."+o+")"},a[d7()]=_extends({backgroundImage:"url("+u+")"},e?{backgroundSize:e}:{}),a}var f7={easeInBack:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",easeInCirc:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",easeInCubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",easeInExpo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",easeInQuad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",easeInQuart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",easeInQuint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",easeInSine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)",easeOutBack:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",easeOutCubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",easeOutCirc:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",easeOutExpo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",easeOutQuad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",easeOutQuart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",easeOutQuint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",easeOutSine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)",easeInOutBack:"cubic-bezier(0.680, -0.550, 0.265, 1.550)",easeInOutCirc:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",easeInOutCubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",easeInOutExpo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",easeInOutQuad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",easeInOutQuart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",easeInOutQuint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",easeInOutSine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};function A7(s){return f7[s]}function rY(s){return A7(s)}var p7=function(e,t,n){var i=""+n[0]+(n[1]||""),a=""+n[0]/2+(n[1]||""),o=""+t[0]+(t[1]||""),u=""+t[0]/2+(t[1]||"");switch(e){case"top":return"0 "+a+" "+o+" "+a;case"topLeft":return i+" "+o+" 0 0";case"left":return u+" "+i+" "+u+" 0";case"bottomLeft":return i+" 0 0 "+o;case"bottom":return o+" "+a+" 0 "+a;case"bottomRight":return"0 0 "+i+" "+o;case"right":return u+" 0 "+u+" "+i;case"topRight":default:return"0 "+i+" "+o+" 0"}},g7=function(e,t){switch(e){case"top":case"bottomRight":return{borderBottomColor:t};case"right":case"bottomLeft":return{borderLeftColor:t};case"bottom":case"topLeft":return{borderTopColor:t};case"left":case"topRight":return{borderRightColor:t};default:throw new ro(59)}};function iY(s){var e=s.pointingDirection,t=s.height,n=s.width,i=s.foregroundColor,a=s.backgroundColor,o=a===void 0?"transparent":a,u=im(n),c=im(t);if(isNaN(c[0])||isNaN(u[0]))throw new ro(60);return _extends({width:"0",height:"0",borderColor:o},g7(e,i),{borderStyle:"solid",borderWidth:p7(e,c,u)})}function sY(s){s===void 0&&(s="break-word");var e=s==="break-word"?"break-all":s;return{overflowWrap:s,wordWrap:s,wordBreak:e}}function sE(s){return Math.round(s*255)}function m7(s,e,t){return sE(s)+","+sE(e)+","+sE(t)}function vx(s,e,t,n){if(n===void 0&&(n=m7),e===0)return n(t,t,t);var i=(s%360+360)%360/60,a=(1-Math.abs(2*t-1))*e,o=a*(1-Math.abs(i%2-1)),u=0,c=0,d=0;i>=0&&i<1?(u=a,c=o):i>=1&&i<2?(u=o,c=a):i>=2&&i<3?(c=a,d=o):i>=3&&i<4?(c=o,d=a):i>=4&&i<5?(u=o,d=a):i>=5&&i<6&&(u=a,d=o);var g=t-a/2,v=u+g,M=c+g,B=d+g;return n(v,M,B)}var MF={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"};function v7(s){if(typeof s!="string")return s;var e=s.toLowerCase();return MF[e]?"#"+MF[e]:s}var y7=/^#[a-fA-F0-9]{6}$/,x7=/^#[a-fA-F0-9]{8}$/,b7=/^#[a-fA-F0-9]{3}$/,_7=/^#[a-fA-F0-9]{4}$/,aE=/^rgb\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*\)$/i,w7=/^rgb(?:a)?\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i,S7=/^hsl\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i,M7=/^hsl(?:a)?\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i;function sm(s){if(typeof s!="string")throw new ro(3);var e=v7(s);if(e.match(y7))return{red:parseInt(""+e[1]+e[2],16),green:parseInt(""+e[3]+e[4],16),blue:parseInt(""+e[5]+e[6],16)};if(e.match(x7)){var t=parseFloat((parseInt(""+e[7]+e[8],16)/255).toFixed(2));return{red:parseInt(""+e[1]+e[2],16),green:parseInt(""+e[3]+e[4],16),blue:parseInt(""+e[5]+e[6],16),alpha:t}}if(e.match(b7))return{red:parseInt(""+e[1]+e[1],16),green:parseInt(""+e[2]+e[2],16),blue:parseInt(""+e[3]+e[3],16)};if(e.match(_7)){var n=parseFloat((parseInt(""+e[4]+e[4],16)/255).toFixed(2));return{red:parseInt(""+e[1]+e[1],16),green:parseInt(""+e[2]+e[2],16),blue:parseInt(""+e[3]+e[3],16),alpha:n}}var i=aE.exec(e);if(i)return{red:parseInt(""+i[1],10),green:parseInt(""+i[2],10),blue:parseInt(""+i[3],10)};var a=w7.exec(e.substring(0,50));if(a)return{red:parseInt(""+a[1],10),green:parseInt(""+a[2],10),blue:parseInt(""+a[3],10),alpha:parseFloat(""+a[4])>1?parseFloat(""+a[4])/100:parseFloat(""+a[4])};var o=S7.exec(e);if(o){var u=parseInt(""+o[1],10),c=parseInt(""+o[2],10)/100,d=parseInt(""+o[3],10)/100,g="rgb("+vx(u,c,d)+")",v=aE.exec(g);if(!v)throw new ro(4,e,g);return{red:parseInt(""+v[1],10),green:parseInt(""+v[2],10),blue:parseInt(""+v[3],10)}}var M=M7.exec(e.substring(0,50));if(M){var B=parseInt(""+M[1],10),I=parseInt(""+M[2],10)/100,ne=parseInt(""+M[3],10)/100,ee="rgb("+vx(B,I,ne)+")",q=aE.exec(ee);if(!q)throw new ro(4,e,ee);return{red:parseInt(""+q[1],10),green:parseInt(""+q[2],10),blue:parseInt(""+q[3],10),alpha:parseFloat(""+M[4])>1?parseFloat(""+M[4])/100:parseFloat(""+M[4])}}throw new ro(5)}function E7(s){var e=s.red/255,t=s.green/255,n=s.blue/255,i=Math.max(e,t,n),a=Math.min(e,t,n),o=(i+a)/2;if(i===a)return s.alpha!==void 0?{hue:0,saturation:0,lightness:o,alpha:s.alpha}:{hue:0,saturation:0,lightness:o};var u,c=i-a,d=o>.5?c/(2-i-a):c/(i+a);switch(i){case e:u=(t-n)/c+(t=1?H_(s,e,t):"rgba("+vx(s,e,t)+","+n+")";if(typeof s=="object"&&e===void 0&&t===void 0&&n===void 0)return s.alpha>=1?H_(s.hue,s.saturation,s.lightness):"rgba("+vx(s.hue,s.saturation,s.lightness)+","+s.alpha+")";throw new ro(2)}function Q_(s,e,t){if(typeof s=="number"&&typeof e=="number"&&typeof t=="number")return oE("#"+N0(s)+N0(e)+N0(t));if(typeof s=="object"&&e===void 0&&t===void 0)return oE("#"+N0(s.red)+N0(s.green)+N0(s.blue));throw new ro(6)}function yx(s,e,t,n){if(typeof s=="string"&&typeof e=="number"){var i=sm(s);return"rgba("+i.red+","+i.green+","+i.blue+","+e+")"}else{if(typeof s=="number"&&typeof e=="number"&&typeof t=="number"&&typeof n=="number")return n>=1?Q_(s,e,t):"rgba("+s+","+e+","+t+","+n+")";if(typeof s=="object"&&e===void 0&&t===void 0&&n===void 0)return s.alpha>=1?Q_(s.red,s.green,s.blue):"rgba("+s.red+","+s.green+","+s.blue+","+s.alpha+")"}throw new ro(7)}var B7=function(e){return typeof e.red=="number"&&typeof e.green=="number"&&typeof e.blue=="number"&&(typeof e.alpha!="number"||typeof e.alpha=="undefined")},R7=function(e){return typeof e.red=="number"&&typeof e.green=="number"&&typeof e.blue=="number"&&typeof e.alpha=="number"},I7=function(e){return typeof e.hue=="number"&&typeof e.saturation=="number"&&typeof e.lightness=="number"&&(typeof e.alpha!="number"||typeof e.alpha=="undefined")},N7=function(e){return typeof e.hue=="number"&&typeof e.saturation=="number"&&typeof e.lightness=="number"&&typeof e.alpha=="number"};function Tp(s){if(typeof s!="object")throw new ro(8);if(R7(s))return yx(s);if(B7(s))return Q_(s);if(N7(s))return CF(s);if(I7(s))return EF(s);throw new ro(8)}function TF(s,e,t){return function(){var i=t.concat(Array.prototype.slice.call(arguments));return i.length>=e?s.apply(this,i):TF(s,e,i)}}function yA(s){return TF(s,s.length,[])}function F7(s,e){if(e==="transparent")return e;var t=vg(e);return Tp((0,ep.Z)({},t,{hue:t.hue+parseFloat(s)}))}var aY=yA(F7),oY=null;function lY(s){if(s==="transparent")return s;var e=vg(s);return Tp(_extends({},e,{hue:(e.hue+180)%360}))}function Gv(s,e,t){return Math.max(s,Math.min(e,t))}function P7(s,e){if(e==="transparent")return e;var t=vg(e);return Tp((0,ep.Z)({},t,{lightness:Gv(0,1,t.lightness-parseFloat(s))}))}var uY=yA(P7),cY=null;function L7(s,e){if(e==="transparent")return e;var t=vg(e);return Tp((0,ep.Z)({},t,{saturation:Gv(0,1,t.saturation-parseFloat(s))}))}var hY=yA(L7),dY=null;function uE(s){if(s==="transparent")return 0;var e=sm(s),t=Object.keys(e).map(function(o){var u=e[o]/255;return u<=.03928?u/12.92:Math.pow((u+.055)/1.055,2.4)}),n=t[0],i=t[1],a=t[2];return parseFloat((.2126*n+.7152*i+.0722*a).toFixed(3))}function BF(s,e){var t=uE(s),n=uE(e);return parseFloat((t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)).toFixed(2))}function fY(s){return s==="transparent"?s:Tp(_extends({},vg(s),{saturation:0}))}function AY(s){if(typeof s=="object"&&typeof s.hue=="number"&&typeof s.saturation=="number"&&typeof s.lightness=="number")return s.alpha&&typeof s.alpha=="number"?CF({hue:s.hue,saturation:s.saturation,lightness:s.lightness,alpha:s.alpha}):EF({hue:s.hue,saturation:s.saturation,lightness:s.lightness});throw new ro(45)}function pY(s){if(s==="transparent")return s;var e=sm(s);return Tp(_extends({},e,{red:255-e.red,green:255-e.green,blue:255-e.blue}))}function U7(s,e){if(e==="transparent")return e;var t=vg(e);return Tp((0,ep.Z)({},t,{lightness:Gv(0,1,t.lightness+parseFloat(s))}))}var gY=yA(U7),mY=null;function vY(s,e){var t=BF(s,e);return{AA:t>=4.5,AALarge:t>=3,AAA:t>=7,AAALarge:t>=4.5}}function O7(s,e,t){if(e==="transparent")return t;if(t==="transparent")return e;if(s===0)return t;var n=sm(e),i=(0,ep.Z)({},n,{alpha:typeof n.alpha=="number"?n.alpha:1}),a=sm(t),o=(0,ep.Z)({},a,{alpha:typeof a.alpha=="number"?a.alpha:1}),u=i.alpha-o.alpha,c=parseFloat(s)*2-1,d=c*u===-1?c:c+u,g=1+c*u,v=(d/g+1)/2,M=1-v,B={red:Math.floor(i.red*v+o.red*M),green:Math.floor(i.green*v+o.green*M),blue:Math.floor(i.blue*v+o.blue*M),alpha:i.alpha*parseFloat(s)+o.alpha*(1-parseFloat(s))};return yx(B)}var D7=yA(O7),RF=D7;function k7(s,e){if(e==="transparent")return e;var t=sm(e),n=typeof t.alpha=="number"?t.alpha:1,i=(0,ep.Z)({},t,{alpha:Gv(0,1,(n*100+parseFloat(s)*100)/100)});return yx(i)}var V7=yA(k7),z7=V7,IF="#000",NF="#fff";function yY(s,e,t,n){e===void 0&&(e=IF),t===void 0&&(t=NF),n===void 0&&(n=!0);var i=uE(s)>.179,a=i?e:t;return!n||BF(s,a)>=4.5?a:i?IF:NF}function xY(s){if(typeof s=="object"&&typeof s.red=="number"&&typeof s.green=="number"&&typeof s.blue=="number")return typeof s.alpha=="number"?yx({red:s.red,green:s.green,blue:s.blue,alpha:s.alpha}):Q_({red:s.red,green:s.green,blue:s.blue});throw new ro(46)}function G7(s,e){if(e==="transparent")return e;var t=vg(e);return Tp((0,ep.Z)({},t,{saturation:Gv(0,1,t.saturation+parseFloat(s))}))}var bY=yA(G7),_Y=null;function H7(s,e){return e==="transparent"?e:Tp((0,ep.Z)({},vg(e),{hue:parseFloat(s)}))}var wY=yA(H7),SY=null;function Q7(s,e){return e==="transparent"?e:Tp((0,ep.Z)({},vg(e),{lightness:parseFloat(s)}))}var MY=yA(Q7),EY=null;function W7(s,e){return e==="transparent"?e:Tp((0,ep.Z)({},vg(e),{saturation:parseFloat(s)}))}var CY=yA(W7),TY=null;function Z7(s,e){return e==="transparent"?e:RF(parseFloat(s),"rgb(0, 0, 0)",e)}var BY=yA(Z7),RY=null;function K7(s,e){return e==="transparent"?e:RF(parseFloat(s),"rgb(255, 255, 255)",e)}var IY=yA(K7),NY=null;function $7(s,e){if(e==="transparent")return e;var t=sm(e),n=typeof t.alpha=="number"?t.alpha:1,i=(0,ep.Z)({},t,{alpha:Gv(0,1,+(n*100-parseFloat(s)*100).toFixed(2)/100)});return yx(i)}var FY=yA($7),PY=null;function LY(){for(var s=arguments.length,e=new Array(s),t=0;t8)throw new ro(64);var i=e.map(function(a){if(n&&!Array.isArray(a)||!n&&Array.isArray(a))throw new ro(65);if(Array.isArray(a)&&a.length>8)throw new ro(66);return Array.isArray(a)?a.join(" "):a}).join(", ");return{animation:i}}function UY(){for(var s=arguments.length,e=new Array(s),t=0;t1?e-1:0),n=1;n=0){var i;return i={},i["border"+mx(s)+"Width"]=t[0],i["border"+mx(s)+"Style"]=t[1],i["border"+mx(s)+"Color"]=t[2],i}else return t.unshift(s),{borderWidth:t[0],borderStyle:t[1],borderColor:t[2]}}function kY(){for(var s=arguments.length,e=new Array(s),t=0;t1?e-1:0),n=1;n=0&&s?_extends({},I0.apply(void 0,[""].concat(t)),{position:s}):I0.apply(void 0,["",s].concat(t))}function KY(s,e){return e===void 0&&(e=s),{height:s,width:e}}var J7=null;function eZ(s){return'input[type="color"]'+s+`, - input[type="date"]`+s+`, - input[type="datetime"]`+s+`, - input[type="datetime-local"]`+s+`, - input[type="email"]`+s+`, - input[type="month"]`+s+`, - input[type="number"]`+s+`, - input[type="password"]`+s+`, - input[type="search"]`+s+`, - input[type="tel"]`+s+`, - input[type="text"]`+s+`, - input[type="time"]`+s+`, - input[type="url"]`+s+`, - input[type="week"]`+s+`, - input:not([type])`+s+`, - textarea`+s}function $Y(){for(var s=arguments.length,e=new Array(s),t=0;t1e4?1e4:s,{In:function(e){return Math.pow(e,s)},Out:function(e){return 1-Math.pow(1-e,s)},InOut:function(e){return e<.5?Math.pow(e*2,s)/2:(1-Math.pow(2-e*2,s))/2+.5}}}}),Hv=function(){return performance.now()},cE=function(){function s(){for(var e=[],t=0;t0;){this._tweensAddedDuringUpdate={};for(var i=0;i1?a(s[t],s[t-1],t-n):a(s[i],s[i+1>t?t:i+1],n-i)},Bezier:function(s,e){for(var t=0,n=s.length-1,i=Math.pow,a=F0.Utils.Bernstein,o=0;o<=n;o++)t+=i(1-e,n-o)*i(e,o)*s[o]*a(n,o);return t},CatmullRom:function(s,e){var t=s.length-1,n=t*e,i=Math.floor(n),a=F0.Utils.CatmullRom;return s[0]===s[t]?(e<0&&(i=Math.floor(n=t*(1+e))),a(s[(i-1+t)%t],s[i],s[(i+1)%t],s[(i+2)%t],n-i)):e<0?s[0]-(a(s[0],s[0],s[1],s[1],-n)-s[0]):e>1?s[t]-(a(s[t],s[t],s[t-1],s[t-1],n-t)-s[t]):a(s[i?i-1:0],s[i],s[t1;n--)t*=n;return s[e]=t,t}}(),CatmullRom:function(s,e,t,n,i){var a=(t-s)*.5,o=(n-e)*.5,u=i*i,c=i*u;return(2*e-2*t+a+o)*c+(-3*e+3*t-2*a-o)*u+a*i+e}}},hE=function(){function s(){}return s.nextId=function(){return s._nextId++},s._nextId=0,s}(),dE=new cE,fE=function(){function s(e,t){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Zm.Linear.None,this._interpolationFunction=F0.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=hE.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=e,typeof t=="object"?(this._group=t,t.add(this)):t===!0&&(this._group=dE,dE.add(this))}return s.prototype.getId=function(){return this._id},s.prototype.isPlaying=function(){return this._isPlaying},s.prototype.isPaused=function(){return this._isPaused},s.prototype.getDuration=function(){return this._duration},s.prototype.to=function(e,t){if(t===void 0&&(t=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=e,this._propertiesAreSetUp=!1,this._duration=t<0?0:t,this},s.prototype.duration=function(e){return e===void 0&&(e=1e3),this._duration=e<0?0:e,this},s.prototype.dynamic=function(e){return e===void 0&&(e=!1),this._isDynamic=e,this},s.prototype.start=function(e,t){if(e===void 0&&(e=Hv()),t===void 0&&(t=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var n in this._valuesStartRepeat)this._swapEndStartRepeatValues(n),this._valuesStart[n]=this._valuesStartRepeat[n]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=e,this._startTime+=this._delayTime,!this._propertiesAreSetUp||t){if(this._propertiesAreSetUp=!0,!this._isDynamic){var i={};for(var a in this._valuesEnd)i[a]=this._valuesEnd[a];this._valuesEnd=i}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,t)}return this},s.prototype.startFromCurrentValues=function(e){return this.start(e,!0)},s.prototype._setupProperties=function(e,t,n,i,a){for(var o in n){var u=e[o],c=Array.isArray(u),d=c?"array":typeof u,g=!c&&Array.isArray(n[o]);if(!(d==="undefined"||d==="function")){if(g){var v=n[o];if(v.length===0)continue;for(var M=[u],B=0,I=v.length;Bc)return 1;var ne=Math.trunc(o/u),ee=o-ne*u,q=Math.min(ee/n._duration,1);return q===0&&o===n._duration?1:q},g=d(),v=this._easingFunction(g);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,v),this._onUpdateCallback&&this._onUpdateCallback(this._object,g),this._duration===0||o>=this._duration)if(this._repeat>0){var M=Math.min(Math.trunc((o-this._duration)/u)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=M);for(a in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[a]=="string"&&(this._valuesStartRepeat[a]=this._valuesStartRepeat[a]+parseFloat(this._valuesEnd[a])),this._yoyo&&this._swapEndStartRepeatValues(a),this._valuesStart[a]=this._valuesStartRepeat[a];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=u*M,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var B=0,I=this._chainedTweens.length;B=Ce&&(Ce=ye+1);!(nt=ee[Ce])&&++Ce=0;)(o=n[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function UZ(s){s||(s=OZ);function e(v,M){return v&&M?s(v.__data__,M.__data__):!v-!M}for(var t=this._groups,n=t.length,i=new Array(n),a=0;ae?1:s>=e?0:NaN}function DZ(){var s=arguments[0];return arguments[0]=this,s.apply(null,arguments),this}function kZ(){return Array.from(this)}function VZ(){for(var s=this._groups,e=0,t=s.length;e=0&&(e=s.slice(0,t))!=="xmlns"&&(s=s.slice(t+1)),DF.hasOwnProperty(e)?{space:DF[e],local:s}:s}function QZ(s){return function(){this.removeAttribute(s)}}function WZ(s){return function(){this.removeAttributeNS(s.space,s.local)}}function ZZ(s,e){return function(){this.setAttribute(s,e)}}function KZ(s,e){return function(){this.setAttributeNS(s.space,s.local,e)}}function $Z(s,e){return function(){var t=e.apply(this,arguments);t==null?this.removeAttribute(s):this.setAttribute(s,t)}}function XZ(s,e){return function(){var t=e.apply(this,arguments);t==null?this.removeAttributeNS(s.space,s.local):this.setAttributeNS(s.space,s.local,t)}}function jZ(s,e){var t=kF(s);if(arguments.length<2){var n=this.node();return t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}return this.each((e==null?t.local?WZ:QZ:typeof e=="function"?t.local?XZ:$Z:t.local?KZ:ZZ)(t,e))}function VF(s){return s.ownerDocument&&s.ownerDocument.defaultView||s.document&&s||s.defaultView}function YZ(s){return function(){this.style.removeProperty(s)}}function qZ(s,e,t){return function(){this.style.setProperty(s,e,t)}}function JZ(s,e,t){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(s):this.style.setProperty(s,n,t)}}function eK(s,e,t){return arguments.length>1?this.each((e==null?YZ:typeof e=="function"?JZ:qZ)(s,e,t==null?"":t)):tK(this.node(),s)}function tK(s,e){return s.style.getPropertyValue(e)||VF(s).getComputedStyle(s,null).getPropertyValue(e)}function nK(s){return function(){delete this[s]}}function rK(s,e){return function(){this[s]=e}}function iK(s,e){return function(){var t=e.apply(this,arguments);t==null?delete this[s]:this[s]=t}}function sK(s,e){return arguments.length>1?this.each((e==null?nK:typeof e=="function"?iK:rK)(s,e)):this.node()[s]}function zF(s){return s.trim().split(/^|\s+/)}function pE(s){return s.classList||new GF(s)}function GF(s){this._node=s,this._names=zF(s.getAttribute("class")||"")}GF.prototype={add:function(s){var e=this._names.indexOf(s);e<0&&(this._names.push(s),this._node.setAttribute("class",this._names.join(" ")))},remove:function(s){var e=this._names.indexOf(s);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(s){return this._names.indexOf(s)>=0}};function HF(s,e){for(var t=pE(s),n=-1,i=e.length;++n=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function LK(s){return function(){var e=this.__on;if(e){for(var t=0,n=-1,i=e.length,a;t2&&(o.children=arguments.length>3?xx.call(arguments,2):t),typeof s=="function"&&s.defaultProps!=null)for(a in s.defaultProps)o[a]===void 0&&(o[a]=s.defaultProps[a]);return wx(s,o,n,i,null)}function wx(s,e,t,n,i){var a={type:s,props:e,key:t,ref:n,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i==null?++$F:i,__i:-1,__u:0};return i==null&&xc.vnode!=null&&xc.vnode(a),a}function qY(){return{current:null}}function Z_(s){return s.children}function K_(s,e){this.props=s,this.context=e}function Qv(s,e){if(e==null)return s.__?Qv(s.__,s.__i+1):null;for(var t;eu&&P0.sort(qF),s=P0.shift(),u=P0.length,s.__d&&(t=void 0,n=void 0,i=(n=(e=s).__v).__e,a=[],o=[],e.__P&&((t=xg({},n)).__v=n.__v+1,xc.vnode&&xc.vnode(t),bE(e.__P,t,n,e.__n,e.__P.namespaceURI,32&n.__u?[i]:null,a,i==null?Qv(n):i,!!(32&n.__u),o),t.__v=n.__v,t.__.__k[t.__i]=t,oP(a,t,o),n.__e=n.__=null,t.__e!=i&&nP(t)));$_.__r=0}function rP(s,e,t,n,i,a,o,u,c,d,g){var v,M,B,I,ne,ee,q,ye=n&&n.__k||tP,Ce=e.length;for(c=XK(t,e,ye,c,Ce),v=0;v0?o=s.__k[a]=wx(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):s.__k[a]=o,c=a+M,o.__=s,o.__b=s.__b+1,u=null,(d=o.__i=YK(o,t,c,v))!=-1&&(v--,(u=t[d])&&(u.__u|=2)),u==null||u.__v==null?(d==-1&&(i>g?M--:ic?M--:M++,o.__u|=4))):s.__k[a]=null;if(v)for(a=0;a(g?1:0)){for(i=t-1,a=t+1;i>=0||a=0?i--:a++])!=null&&!(2&d.__u)&&u==d.key&&c==d.type)return o}return-1}function sP(s,e,t){e[0]=="-"?s.setProperty(e,t==null?"":t):s[e]=t==null?"":typeof t!="number"||KK.test(e)?t:t+"px"}function X_(s,e,t,n,i){var a,o;e:if(e=="style")if(typeof t=="string")s.style.cssText=t;else{if(typeof n=="string"&&(s.style.cssText=n=""),n)for(e in n)t&&e in t||sP(s.style,e,"");if(t)for(e in t)n&&t[e]==n[e]||sP(s.style,e,t[e])}else if(e[0]=="o"&&e[1]=="n")a=e!=(e=e.replace(JF,"$1")),o=e.toLowerCase(),e=o in s||e=="onFocusOut"||e=="onFocusIn"?o.slice(2):e.slice(2),s.l||(s.l={}),s.l[e+a]=t,t?n?t.u=n.u:(t.u=gE,s.addEventListener(e,a?vE:mE,a)):s.removeEventListener(e,a?vE:mE,a);else{if(i=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in s)try{s[e]=t==null?"":t;break e}catch(u){}typeof t=="function"||(t==null||t===!1&&e[4]!="-"?s.removeAttribute(e):s.setAttribute(e,e=="popover"&&t==1?"":t))}}function aP(s){return function(e){if(this.l){var t=this.l[e.type+s];if(e.t==null)e.t=gE++;else if(e.t0?s:_x(s)?s.map(lP):xg({},s)}function qK(s,e,t,n,i,a,o,u,c){var d,g,v,M,B,I,ne,ee=t.props||bx,q=e.props,ye=e.type;if(ye=="svg"?i="http://www.w3.org/2000/svg":ye=="math"?i="http://www.w3.org/1998/Math/MathML":i||(i="http://www.w3.org/1999/xhtml"),a!=null){for(d=0;d2&&(u.children=arguments.length>3?xx.call(arguments,2):t),wx(s.type,u,n||s.key,i||s.ref,null)}function JY(s){function e(t){var n,i;return this.getChildContext||(n=new Set,(i={})[e.__c]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(a){this.props.value!=a.value&&n.forEach(function(o){o.__e=!0,xE(o)})},this.sub=function(a){n.add(a);var o=a.componentWillUnmount;a.componentWillUnmount=function(){n&&n.delete(a),o&&o.call(a)}}),t.children}return e.__c="__cC"+eP++,e.__=s,e.Provider=e.__l=(e.Consumer=function(t,n){return t.children(n)}).contextType=e,e}xx=tP.slice,xc={__e:function(s,e,t,n){for(var i,a,o;e=e.__;)if((i=e.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(s)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(s,n||{}),o=i.__d),o)return i.__E=i}catch(u){s=u}throw s}},$F=0,XF=function(s){return s!=null&&s.constructor===void 0},K_.prototype.setState=function(s,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=xg({},this.state),typeof s=="function"&&(s=s(xg({},t),this.props)),s&&xg(t,s),s!=null&&this.__v&&(e&&this._sb.push(e),xE(this))},K_.prototype.forceUpdate=function(s){this.__v&&(this.__e=!0,s&&this.__h.push(s),xE(this))},K_.prototype.render=Z_,P0=[],YF=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,qF=function(s,e){return s.__v.__b-e.__v.__b},$_.__r=0,JF=/(PointerCapture)$|Capture$/i,gE=0,mE=aP(!1),vE=aP(!0),eP=0;function dP(s,e){(e==null||e>s.length)&&(e=s.length);for(var t=0,n=Array(e);t2&&arguments[2]!==void 0?arguments[2]:{},i=n.style,a=i===void 0?{}:i,o=!!e&&j_(e)==="object"&&!!e.node&&typeof e.node=="function",u=QK(o?e.node():e);u.style("position")==="static"&&u.style("position","relative"),t.tooltipEl=u.append("div").attr("class","float-tooltip-kap"),Object.entries(a).forEach(function(d){var g=a$(d,2),v=g[0],M=g[1];return t.tooltipEl.style(v,M)}),t.tooltipEl.style("left","-10000px").style("display","none");var c="tooltip-".concat(Math.round(Math.random()*1e12));t.mouseInside=!1,u.on("mousemove.".concat(c),function(d){t.mouseInside=!0;var g=ZK(d),v=u.node(),M=v.offsetWidth,B=v.offsetHeight,I=[t.offsetX===null||t.offsetX===void 0?"-".concat(g[0]/M*100,"%"):typeof t.offsetX=="number"?"calc(-50% + ".concat(t.offsetX,"px)"):t.offsetX,t.offsetY===null||t.offsetY===void 0?B>130&&B-g[1]<100?"calc(-100% - 6px)":"21px":typeof t.offsetY=="number"?t.offsetY<0?"calc(-100% - ".concat(Math.abs(t.offsetY),"px)"):"".concat(t.offsetY,"px"):t.offsetY];t.tooltipEl.style("left",g[0]+"px").style("top",g[1]+"px").style("transform","translate(".concat(I.join(","),")")),t.content&&t.tooltipEl.style("display","inline")}),u.on("mouseover.".concat(c),function(){t.mouseInside=!0,t.content&&t.tooltipEl.style("display","inline")}),u.on("mouseout.".concat(c),function(){t.mouseInside=!1,t.tooltipEl.style("display","none")})},update:function(e){e.tooltipEl.style("display",e.content&&e.mouseInside?"inline":"none"),e.content?e.content instanceof HTMLElement?(e.tooltipEl.text(""),e.tooltipEl.append(function(){return e.content})):typeof e.content=="string"?e.tooltipEl.html(e.content):c$(e.content)?(e.tooltipEl.text(""),h$(e.content,e.tooltipEl.node())):(e.tooltipEl.style("display","none"),console.warn("Tooltip content is invalid, skipping.",e.content,e.content.toString())):e.tooltipEl.text("")}});function p$(s,e){e===void 0&&(e={});var t=e.insertAt;if(typeof document!="undefined"){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css",t==="top"&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=s:i.appendChild(document.createTextNode(s))}}var g$=`.scene-nav-info { - position: absolute; - bottom: 5px; - width: 100%; - text-align: center; - color: slategrey; - opacity: 0.7; - font-size: 10px; - font-family: sans-serif; - pointer-events: none; - user-select: none; -} - -.scene-container canvas:focus { - outline: none; -}`;p$(g$);function ME(s,e){(e==null||e>s.length)&&(e=s.length);for(var t=0,n=Array(e);t=e.pointerRaycasterThrottleMs){e.lastRaycasterCheck=t;var n=null;if(e.hoverDuringDrag||!e.isPointerDragging){var i=this.intersectingObjects(e.pointerPos.x,e.pointerPos.y);e.hoverOrderComparator&&i.sort(function(o,u){return e.hoverOrderComparator(o.object,u.object)});var a=i.find(function(o){return e.hoverFilter(o.object)})||null;n=a?a.object:null,e.intersection=a||null}n!==e.hoverObj&&(e.onHover(n,e.hoverObj,e.intersection),e.tooltip.content(n&&ul(e.tooltipContent)(n,e.intersection)||null),e.hoverObj=n)}e.tweenGroup.update()}return this},getPointerPos:function(e){var t=e.pointerPos,n=t.x,i=t.y;return{x:n,y:i}},cameraPosition:function(e,t,n,i){var a=e.camera;if(t&&e.initialised){var o=t,u=n||{x:0,y:0,z:0};if(!i)g(o),v(u);else{var c=Object.assign({},a.position),d=M();e.tweenGroup.add(new fE(c).to(o,i).easing(Zm.Quadratic.Out).onUpdate(g).start()),e.tweenGroup.add(new fE(d).to(u,i/3).easing(Zm.Quadratic.Out).onUpdate(v).start())}return this}return Object.assign({},a.position,{lookAt:M()});function g(B){var I=B.x,ne=B.y,ee=B.z;I!==void 0&&(a.position.x=I),ne!==void 0&&(a.position.y=ne),ee!==void 0&&(a.position.z=ee)}function v(B){var I=new bc.Vector3(B.x,B.y,B.z);e.controls.enabled&&e.controls.target?e.controls.target=I:a.lookAt(I)}function M(){return Object.assign(new bc.Vector3(0,0,-1e3).applyQuaternion(a.quaternion).add(a.position))}},zoomToFit:function(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,i=arguments.length,a=new Array(i>3?i-3:0),o=3;o2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:10,a=e.camera;if(t){var o=new bc.Vector3(0,0,0),u=Math.max.apply(Math,L0(Object.entries(t).map(function(B){var I=S$(B,2),ne=I[0],ee=I[1];return Math.max.apply(Math,L0(ee.map(function(q){return Math.abs(o[ne]-q)})))})))*2,c=(1-i*2/e.height)*a.fov,d=u/Math.atan(c*Math.PI/180),g=d/a.aspect,v=Math.max(d,g);if(v>0){var M=o.clone().sub(a.position).normalize().multiplyScalar(-v);this.cameraPosition(M,o,n)}}return this},getBbox:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){return!0},n=new bc.Box3(new bc.Vector3(0,0,0),new bc.Vector3(0,0,0)),i=e.objects.filter(t);return i.length?(i.forEach(function(a){return n.expandByObject(a)}),Object.assign.apply(Object,L0(["x","y","z"].map(function(a){return y$({},a,[n.min[a],n.max[a]])})))):null},getScreenCoords:function(e,t,n,i){var a=new bc.Vector3(t,n,i);return a.project(this.camera()),{x:(a.x+1)*e.width/2,y:-(a.y-1)*e.height/2}},getSceneCoords:function(e,t,n){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=new bc.Vector2(t/e.width*2-1,-(n/e.height)*2+1),o=new bc.Raycaster;return o.setFromCamera(a,e.camera),Object.assign({},o.ray.at(i,new bc.Vector3))},intersectingObjects:function(e,t,n){var i=new bc.Vector2(t/e.width*2-1,-(n/e.height)*2+1),a=new bc.Raycaster;return a.params.Line.threshold=e.lineHoverPrecision,a.params.Points.threshold=e.pointsHoverPrecision,a.setFromCamera(i,e.camera),a.intersectObjects(e.objects,!0)},renderer:function(e){return e.renderer},scene:function(e){return e.scene},camera:function(e){return e.camera},postProcessingComposer:function(e){return e.postProcessingComposer},controls:function(e){return e.controls},tbControls:function(e){return e.controls}},stateInit:function(){return{scene:new bc.Scene,camera:new bc.PerspectiveCamera,clock:new bc.Clock,tweenGroup:new cE,lastRaycasterCheck:0}},init:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=n.controlType,a=i===void 0?"trackball":i,o=n.useWebGPU,u=o===void 0?!1:o,c=n.rendererConfig,d=c===void 0?{}:c,g=n.extraRenderers,v=g===void 0?[]:g,M=n.waitForLoadComplete,B=M===void 0?!0:M;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.className="scene-container",t.container.style.position="relative",t.container.appendChild(t.navInfo=document.createElement("div")),t.navInfo.className="scene-nav-info",t.navInfo.textContent={orbit:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",trackball:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",fly:"WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw"}[a]||"",t.navInfo.style.display=t.showNavInfo?null:"none",t.tooltip=new A$(t.container),t.pointerPos=new bc.Vector2,t.pointerPos.x=-2,t.pointerPos.y=-2,["pointermove","pointerdown"].forEach(function(I){return t.container.addEventListener(I,function(ne){if(I==="pointerdown"&&(t.isPointerPressed=!0),!t.isPointerDragging&&ne.type==="pointermove"&&(ne.pressure>0||t.isPointerPressed)&&(ne.pointerType==="mouse"||ne.movementX===void 0||[ne.movementX,ne.movementY].some(function(ye){return Math.abs(ye)>1}))&&(t.isPointerDragging=!0),t.enablePointerInteraction){var ee=q(t.container);t.pointerPos.x=ne.pageX-ee.left,t.pointerPos.y=ne.pageY-ee.top}function q(ye){var Ce=ye.getBoundingClientRect(),ke=window.pageXOffset||document.documentElement.scrollLeft,nt=window.pageYOffset||document.documentElement.scrollTop;return{top:Ce.top+nt,left:Ce.left+ke}}},{passive:!0})}),t.container.addEventListener("pointerup",function(I){t.isPointerPressed&&(t.isPointerPressed=!1,!(t.isPointerDragging&&(t.isPointerDragging=!1,!t.clickAfterDrag))&&requestAnimationFrame(function(){I.button===0&&t.onClick(t.hoverObj||null,I,t.intersection),I.button===2&&t.onRightClick&&t.onRightClick(t.hoverObj||null,I,t.intersection)}))},{passive:!0,capture:!0}),t.container.addEventListener("contextmenu",function(I){t.onRightClick&&I.preventDefault()}),t.renderer=new(u?NW:bc.WebGLRenderer)(Object.assign({antialias:!0,alpha:!0},d)),t.renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),t.container.appendChild(t.renderer.domElement),t.extraRenderers=v,t.extraRenderers.forEach(function(I){I.domElement.style.position="absolute",I.domElement.style.top="0px",I.domElement.style.pointerEvents="none",t.container.appendChild(I.domElement)}),t.postProcessingComposer=new C9(t.renderer),t.postProcessingComposer.addPass(new T9(t.scene,t.camera)),t.controls=new{trackball:UW,orbit:qW,fly:d9}[a](t.camera,t.renderer.domElement),a==="fly"&&(t.controls.movementSpeed=300,t.controls.rollSpeed=Math.PI/6,t.controls.dragToLook=!0),(a==="trackball"||a==="orbit")&&(t.controls.minDistance=.1,t.controls.maxDistance=t.skyRadius,t.controls.addEventListener("start",function(){t.controlsEngaged=!0}),t.controls.addEventListener("change",function(){t.controlsEngaged&&(t.controlsDragging=!0)}),t.controls.addEventListener("end",function(){t.controlsEngaged=!1,t.controlsDragging=!1})),[t.renderer,t.postProcessingComposer].concat(L0(t.extraRenderers)).forEach(function(I){return I.setSize(t.width,t.height)}),t.camera.aspect=t.width/t.height,t.camera.updateProjectionMatrix(),t.camera.position.z=1e3,t.scene.add(t.skysphere=new bc.Mesh),t.skysphere.visible=!1,t.loadComplete=t.scene.visible=!B,window.scene=t.scene},update:function(e,t){if(e.width&&e.height&&(t.hasOwnProperty("width")||t.hasOwnProperty("height"))){var n,i=e.width,a=e.height;e.container.style.width="".concat(i,"px"),e.container.style.height="".concat(a,"px"),[e.renderer,e.postProcessingComposer].concat(L0(e.extraRenderers)).forEach(function(B){return B.setSize(i,a)}),e.camera.aspect=i/a;var o=e.viewOffset.slice(0,2);o.some(function(B){return B})&&(n=e.camera).setViewOffset.apply(n,[i,a].concat(L0(o),[i,a])),e.camera.updateProjectionMatrix()}if(t.hasOwnProperty("viewOffset")){var u,c=e.width,d=e.height,g=e.viewOffset.slice(0,2);g.some(function(B){return B})?(u=e.camera).setViewOffset.apply(u,[c,d].concat(L0(g),[c,d])):e.camera.clearViewOffset()}if(t.hasOwnProperty("skyRadius")&&e.skyRadius&&(e.controls.hasOwnProperty("maxDistance")&&t.skyRadius&&(e.controls.maxDistance=Math.min(e.controls.maxDistance,e.skyRadius)),e.camera.far=e.skyRadius*2.5,e.camera.updateProjectionMatrix(),e.skysphere.geometry=new bc.SphereGeometry(e.skyRadius)),t.hasOwnProperty("backgroundColor")){var v=sm(e.backgroundColor).alpha;v===void 0&&(v=1),e.renderer.setClearColor(new bc.Color(z7(1,e.backgroundColor)),v)}t.hasOwnProperty("backgroundImageUrl")&&(e.backgroundImageUrl?new bc.TextureLoader().load(e.backgroundImageUrl,function(B){B.colorSpace=bc.SRGBColorSpace,e.skysphere.material=new bc.MeshBasicMaterial({map:B,side:bc.BackSide}),e.skysphere.visible=!0,e.onBackgroundImageLoaded&&setTimeout(e.onBackgroundImageLoaded),!e.loadComplete&&M()}):(e.skysphere.visible=!1,e.skysphere.material.map=null,!e.loadComplete&&M())),t.hasOwnProperty("showNavInfo")&&(e.navInfo.style.display=e.showNavInfo?null:"none"),t.hasOwnProperty("lights")&&((t.lights||[]).forEach(function(B){return e.scene.remove(B)}),e.lights.forEach(function(B){return e.scene.add(B)})),t.hasOwnProperty("objects")&&((t.objects||[]).forEach(function(B){return e.scene.remove(B)}),e.objects.forEach(function(B){return e.scene.add(B)}));function M(){e.loadComplete=e.scene.visible=!0}}});function C$(s,e){e===void 0&&(e={});var t=e.insertAt;if(typeof document!="undefined"){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css",t==="top"&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=s:i.appendChild(document.createTextNode(s))}}var T$=`.graph-info-msg { - top: 50%; - width: 100%; - text-align: center; - color: lavender; - opacity: 0.7; - font-size: 22px; - position: absolute; - font-family: Sans-serif; -} - -.scene-container .clickable { - cursor: pointer; -} - -.scene-container .grabbable { - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; -} - -.scene-container .grabbable:active { - cursor: grabbing; - cursor: -moz-grabbing; - cursor: -webkit-grabbing; -}`;C$(T$);function EE(s,e){(e==null||e>s.length)&&(e=s.length);for(var t=0,n=Array(e);t1?u-1:0),d=1;d3?a-3:0),u=3;u=V.length?{done:!0}:{done:!1,value:V[F++]}},e:function(j){throw j},f:C}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var P,H=!0,D=!1;return{s:function(){E=E.call(V)},n:function(){var j=E.next();return H=j.done,j},e:function(j){D=!0,P=j},f:function(){try{H||E.return==null||E.return()}finally{if(D)throw P}}}}},69168:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return Z}});var m=b(18773);function Z(V,N){V.prototype=Object.create(N.prototype),V.prototype.constructor=V,(0,m.Z)(V,N)}},34907:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return N}});var m=b(58289);function Z(E,F){for(;!{}.hasOwnProperty.call(E,F)&&(E=(0,m.Z)(E))!==null;);return E}function V(){return V=typeof Reflect!="undefined"&&Reflect.get?Reflect.get.bind():function(E,F,C){var P=Z(E,F);if(P){var H=Object.getOwnPropertyDescriptor(P,F);return H.get?H.get.call(arguments.length<3?E:C):H.value}},V.apply(null,arguments)}function N(E,F,C,P){var H=V((0,m.Z)(1&P?E.prototype:E),F,C);return 2&P&&typeof H=="function"?function(D){return H.apply(C,D)}:H}},22497:function(Be,Me){"use strict";var b={value:()=>{}};function m(){for(var F=0,C=arguments.length,P={},H;F=0&&(H=P.slice(D+1),P=P.slice(0,D)),P&&!C.hasOwnProperty(P))throw new Error("unknown type: "+P);return{type:P,name:H}})}Z.prototype=m.prototype={constructor:Z,on:function(F,C){var P=this._,H=V(F+"",P),D,X=-1,j=H.length;if(arguments.length<2){for(;++X0)for(var P=new Array(D),H=0,D,X;Htypeof vn=="object"&&vn!==null||typeof vn=="function",C={canHandle:vn=>F(vn)&&vn[m],serialize(vn){const{port1:_r,port2:Ge}=new MessageChannel;return X(vn,_r),[Ge,[Ge]]},deserialize(vn){return vn.start(),he(vn)}},P={canHandle:vn=>F(vn)&&E in vn,serialize({value:vn}){let _r;return vn instanceof Error?_r={isError:!0,value:{message:vn.message,name:vn.name,stack:vn.stack}}:_r={isError:!1,value:vn},[_r,[]]},deserialize(vn){throw vn.isError?Object.assign(new Error(vn.value.message),vn.value):vn.value}},H=new Map([["proxy",C],["throw",P]]);function D(vn,_r){for(const Ge of vn)if(_r===Ge||Ge==="*"||Ge instanceof RegExp&&Ge.test(_r))return!0;return!1}function X(vn,_r=globalThis,Ge=["*"]){_r.addEventListener("message",function Tt(On){if(!On||!On.data)return;if(!D(Ge,On.origin)){console.warn(`Invalid origin '${On.origin}' for comlink proxy`);return}const{id:Vr,type:en,path:ln}=Object.assign({path:[]},On.data),Cn=(On.data.argumentList||[]).map(In);let Mt;try{const Et=ln.slice(0,-1).reduce((Ae,Pe)=>Ae[Pe],vn),pe=ln.reduce((Ae,Pe)=>Ae[Pe],vn);switch(en){case"GET":Mt=pe;break;case"SET":Et[ln.slice(-1)[0]]=In(On.data.value),Mt=!0;break;case"APPLY":Mt=pe.apply(Et,Cn);break;case"CONSTRUCT":{const Ae=new pe(...Cn);Mt=Lt(Ae)}break;case"ENDPOINT":{const{port1:Ae,port2:Pe}=new MessageChannel;X(vn,Pe),Mt=Bn(Ae,[Ae])}break;case"RELEASE":Mt=void 0;break;default:return}}catch(Et){Mt={value:Et,[E]:0}}Promise.resolve(Mt).catch(Et=>({value:Et,[E]:0})).then(Et=>{const[pe,Ae]=Xn(Et);_r.postMessage(Object.assign(Object.assign({},pe),{id:Vr}),Ae),en==="RELEASE"&&(_r.removeEventListener("message",Tt),de(_r),N in vn&&typeof vn[N]=="function"&&vn[N]())}).catch(Et=>{const[pe,Ae]=Xn({value:new TypeError("Unserializable return value"),[E]:0});_r.postMessage(Object.assign(Object.assign({},pe),{id:Vr}),Ae)})}),_r.start&&_r.start()}function j(vn){return vn.constructor.name==="MessagePort"}function de(vn){j(vn)&&vn.close()}function he(vn,_r){const Ge=new Map;return vn.addEventListener("message",function(On){const{data:Vr}=On;if(!Vr||!Vr.id)return;const en=Ge.get(Vr.id);if(en)try{en(Vr)}finally{Ge.delete(Vr.id)}}),vt(vn,Ge,[],_r)}function we(vn){if(vn)throw new Error("Proxy has been released and is not useable")}function ve(vn){return zn(vn,new Map,{type:"RELEASE"}).then(()=>{de(vn)})}const Ee=new WeakMap,$e="FinalizationRegistry"in globalThis&&new FinalizationRegistry(vn=>{const _r=(Ee.get(vn)||0)-1;Ee.set(vn,_r),_r===0&&ve(vn)});function Fe(vn,_r){const Ge=(Ee.get(_r)||0)+1;Ee.set(_r,Ge),$e&&$e.register(vn,_r,vn)}function ct(vn){$e&&$e.unregister(vn)}function vt(vn,_r,Ge=[],Tt=function(){}){let On=!1;const Vr=new Proxy(Tt,{get(en,ln){if(we(On),ln===V)return()=>{ct(Vr),ve(vn),_r.clear(),On=!0};if(ln==="then"){if(Ge.length===0)return{then:()=>Vr};const Cn=zn(vn,_r,{type:"GET",path:Ge.map(Mt=>Mt.toString())}).then(In);return Cn.then.bind(Cn)}return vt(vn,_r,[...Ge,ln])},set(en,ln,Cn){we(On);const[Mt,Et]=Xn(Cn);return zn(vn,_r,{type:"SET",path:[...Ge,ln].map(pe=>pe.toString()),value:Mt},Et).then(In)},apply(en,ln,Cn){we(On);const Mt=Ge[Ge.length-1];if(Mt===Z)return zn(vn,_r,{type:"ENDPOINT"}).then(In);if(Mt==="bind")return vt(vn,_r,Ge.slice(0,-1));const[Et,pe]=kt(Cn);return zn(vn,_r,{type:"APPLY",path:Ge.map(Ae=>Ae.toString()),argumentList:Et},pe).then(In)},construct(en,ln){we(On);const[Cn,Mt]=kt(ln);return zn(vn,_r,{type:"CONSTRUCT",path:Ge.map(Et=>Et.toString()),argumentList:Cn},Mt).then(In)}});return Fe(Vr,vn),Vr}function at(vn){return Array.prototype.concat.apply([],vn)}function kt(vn){const _r=vn.map(Xn);return[_r.map(Ge=>Ge[0]),at(_r.map(Ge=>Ge[1]))]}const It=new WeakMap;function Bn(vn,_r){return It.set(vn,_r),vn}function Lt(vn){return Object.assign(vn,{[m]:!0})}function Wn(vn,_r=globalThis,Ge="*"){return{postMessage:(Tt,On)=>vn.postMessage(Tt,Ge,On),addEventListener:_r.addEventListener.bind(_r),removeEventListener:_r.removeEventListener.bind(_r)}}function Xn(vn){for(const[_r,Ge]of H)if(Ge.canHandle(vn)){const[Tt,On]=Ge.serialize(vn);return[{type:"HANDLER",name:_r,value:Tt},On]}return[{type:"RAW",value:vn},It.get(vn)||[]]}function In(vn){switch(vn.type){case"HANDLER":return H.get(vn.name).deserialize(vn.value);case"RAW":return vn.value}}function zn(vn,_r,Ge,Tt){return new Promise(On=>{const Vr=dr();_r.set(Vr,On),vn.start&&vn.start(),vn.postMessage(Object.assign({id:Vr},Ge),Tt)})}function dr(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}},14310:function(Be,Me,b){"use strict";b.d(Me,{H:function(){return V},Z:function(){return m}});function m(N){const E=+this._x.call(null,N);return Z(this.cover(E),E,N)}function Z(N,E,F){if(isNaN(E))return N;var C,P=N._root,H={data:F},D=N._x0,X=N._x1,j,de,he,we,ve;if(!P)return N._root=H,N;for(;P.length;)if((he=E>=(j=(D+X)/2))?D=j:X=j,C=P,!(P=P[we=+he]))return C[we]=H,N;if(de=+N._x.call(null,P.data),E===de)return H.next=P,C?C[we]=H:N._root=H,N;do C=C?C[we]=new Array(2):N._root=new Array(2),(he=E>=(j=(D+X)/2))?D=j:X=j;while((we=+he)==(ve=+(de>=j)));return C[ve]=P,C[we]=H,N}function V(N){Array.isArray(N)||(N=Array.from(N));const E=N.length,F=new Float64Array(E);let C=1/0,P=-1/0;for(let H=0,D;HP&&(P=D));if(C>P)return this;this.cover(C).cover(P);for(let H=0;HZ||Z>=N;)switch(P=+(ZH||(P=j.x1)=he))&&(j=D[D.length-1],D[D.length-1]=D[D.length-1-de],D[D.length-1-de]=j)}else{var we=Math.abs(V-+this._x.call(null,X.data));we=(j=(H+D)/2))?H=j:D=j,N=E,!(E=E[he=+de]))return this;if(!E.length)break;N[he+1&1]&&(F=N,we=he)}for(;E.data!==V;)if(C=E,!(E=E.next))return this;return(P=E.next)&&delete E.next,C?(P?C.next=P:delete C.next,this):N?(P?N[he]=P:delete N[he],(E=N[0]||N[1])&&E===(N[1]||N[0])&&!E.length&&(F?F[we]=E:this._root=E),this):(this._root=P,this)}function Z(V){for(var N=0,E=V.length;N(E=(m*E+Z)%V)/V}},76633:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return E}});var m=b(85320),Z=b(50277);function V(F){return F.index}function N(F,C){var P=F.get(C);if(!P)throw new Error("node not found: "+C);return P}function E(F){var C=V,P=$e,H,D=(0,m.Z)(30),X,j,de,he,we,ve,Ee=1;F==null&&(F=[]);function $e(kt){return 1/Math.min(he[kt.source.index],he[kt.target.index])}function Fe(kt){for(var It=0,Bn=F.length;It1&&(dr=In.y+In.vy-Xn.y-Xn.vy||(0,Z.Z)(ve)),de>2&&(vn=In.z+In.vz-Xn.z-Xn.vz||(0,Z.Z)(ve)),_r=Math.sqrt(zn*zn+dr*dr+vn*vn),_r=(_r-X[Lt])/_r*kt*H[Lt],zn*=_r,dr*=_r,vn*=_r,In.vx-=zn*(Ge=we[Lt]),de>1&&(In.vy-=dr*Ge),de>2&&(In.vz-=vn*Ge),Xn.vx+=zn*(Ge=1-Ge),de>1&&(Xn.vy+=dr*Ge),de>2&&(Xn.vz+=vn*Ge)}function ct(){if(j){var kt,It=j.length,Bn=F.length,Lt=new Map(j.map((Xn,In)=>[C(Xn,In,j),Xn])),Wn;for(kt=0,he=new Array(It);kttypeof Bn=="function")||Math.random,de=It.find(Bn=>[1,2,3].includes(Bn))||2,ct()},Fe.links=function(kt){return arguments.length?(F=kt,ct(),Fe):F},Fe.id=function(kt){return arguments.length?(C=kt,Fe):C},Fe.iterations=function(kt){return arguments.length?(Ee=+kt,Fe):Ee},Fe.strength=function(kt){return arguments.length?(P=typeof kt=="function"?kt:(0,m.Z)(+kt),vt(),Fe):P},Fe.distance=function(kt){return arguments.length?(D=typeof kt=="function"?kt:(0,m.Z)(+kt),at(),Fe):D},Fe}},61147:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return C}});var m=b(33662),Z=b(14301),V=b(7695),N=b(85320),E=b(50277),F=b(21668);function C(){var P,H,D,X,j,de=(0,N.Z)(-30),he,we=1,ve=1/0,Ee=.81;function $e(at){var kt,It=P.length,Bn=(H===1?(0,m.Z)(P,F.x):H===2?(0,Z.Z)(P,F.x,F.y):H===3?(0,V.Z)(P,F.x,F.y,F.z):null).visitAfter(ct);for(j=at,kt=0;kt1&&(at.y=Xn/Lt),H>2&&(at.z=In/Lt)}else{It=at,It.x=It.data.x,H>1&&(It.y=It.data.y),H>2&&(It.z=It.data.z);do kt+=he[It.data.index];while(It=It.next)}at.value=kt}function vt(at,kt,It,Bn,Lt){if(!at.value)return!0;var Wn=[It,Bn,Lt][H-1],Xn=at.x-D.x,In=H>1?at.y-D.y:0,zn=H>2?at.z-D.z:0,dr=Wn-kt,vn=Xn*Xn+In*In+zn*zn;if(dr*dr/Ee1&&In===0&&(In=(0,E.Z)(X),vn+=In*In),H>2&&zn===0&&(zn=(0,E.Z)(X),vn+=zn*zn),vn1&&(D.vy+=In*at.value*j/vn),H>2&&(D.vz+=zn*at.value*j/vn)),!0;if(at.length||vn>=ve)return;(at.data!==D||at.next)&&(Xn===0&&(Xn=(0,E.Z)(X),vn+=Xn*Xn),H>1&&In===0&&(In=(0,E.Z)(X),vn+=In*In),H>2&&zn===0&&(zn=(0,E.Z)(X),vn+=zn*zn),vn1&&(D.vy+=In*dr),H>2&&(D.vz+=zn*dr));while(at=at.next)}return $e.initialize=function(at,...kt){P=at,X=kt.find(It=>typeof It=="function")||Math.random,H=kt.find(It=>[1,2,3].includes(It))||2,Fe()},$e.strength=function(at){return arguments.length?(de=typeof at=="function"?at:(0,N.Z)(+at),Fe(),$e):de},$e.distanceMin=function(at){return arguments.length?(we=at*at,$e):Math.sqrt(we)},$e.distanceMax=function(at){return arguments.length?(ve=at*at,$e):Math.sqrt(ve)},$e.theta=function(at){return arguments.length?(Ee=at*at,$e):Math.sqrt(Ee)},$e}},21668:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return X},x:function(){return E},y:function(){return F},z:function(){return C}});var m=b(22497),Z=b(83833),V=b(1076),N=3;function E(j){return j.x}function F(j){return j.y}function C(j){return j.z}var P=10,H=Math.PI*(3-Math.sqrt(5)),D=Math.PI*20/(9+Math.sqrt(221));function X(j,de){de=de||2;var he=Math.min(N,Math.max(1,Math.round(de))),we,ve=1,Ee=.001,$e=1-Math.pow(Ee,1/300),Fe=0,ct=.6,vt=new Map,at=(0,Z.HT)(Bn),kt=(0,m.Z)("tick","end"),It=(0,V.Z)();j==null&&(j=[]);function Bn(){Lt(),kt.call("tick",we),ve1&&(vn.fy==null?vn.y+=vn.vy*=ct:(vn.y=vn.fy,vn.vy=0)),he>2&&(vn.fz==null?vn.z+=vn.vz*=ct:(vn.z=vn.fz,vn.vz=0));return we}function Wn(){for(var In=0,zn=j.length,dr;In1&&isNaN(dr.y)||he>2&&isNaN(dr.z)){var vn=P*(he>2?Math.cbrt(.5+In):he>1?Math.sqrt(.5+In):In),_r=In*H,Ge=In*D;he===1?dr.x=vn:he===2?(dr.x=vn*Math.cos(_r),dr.y=vn*Math.sin(_r)):(dr.x=vn*Math.sin(_r)*Math.cos(Ge),dr.y=vn*Math.cos(_r),dr.z=vn*Math.sin(_r)*Math.sin(Ge))}(isNaN(dr.vx)||he>1&&isNaN(dr.vy)||he>2&&isNaN(dr.vz))&&(dr.vx=0,he>1&&(dr.vy=0),he>2&&(dr.vz=0))}}function Xn(In){return In.initialize&&In.initialize(j,It,he),In}return Wn(),we={tick:Lt,restart:function(){return at.restart(Bn),we},stop:function(){return at.stop(),we},numDimensions:function(In){return arguments.length?(he=Math.min(N,Math.max(1,Math.round(In))),vt.forEach(Xn),we):he},nodes:function(In){return arguments.length?(j=In,Wn(),vt.forEach(Xn),we):j},alpha:function(In){return arguments.length?(ve=+In,we):ve},alphaMin:function(In){return arguments.length?(Ee=+In,we):Ee},alphaDecay:function(In){return arguments.length?($e=+In,we):+$e},alphaTarget:function(In){return arguments.length?(Fe=+In,we):Fe},velocityDecay:function(In){return arguments.length?(ct=1-In,we):1-ct},randomSource:function(In){return arguments.length?(It=In,vt.forEach(Xn),we):It},force:function(In,zn){return arguments.length>1?(zn==null?vt.delete(In):vt.set(In,Xn(zn)),we):vt.get(In)},find:function(){var In=Array.prototype.slice.call(arguments),zn=In.shift()||0,dr=(he>1?In.shift():null)||0,vn=(he>2?In.shift():null)||0,_r=In.shift()||1/0,Ge=0,Tt=j.length,On,Vr,en,ln,Cn,Mt;for(_r*=_r,Ge=0;Ge1?(kt.on(In,zn),we):kt.on(In)}}}},32575:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return m}});function m(Z,V){var N,E=1;Z==null&&(Z=0),V==null&&(V=0);function F(){var C,P=N.length,H,D=0,X=0;for(C=0;CFe.index){var Ge=ct-dr.x-dr.vx,Tt=vt-dr.y-dr.vy,On=Ge*Ge+Tt*Tt;On<_r*_r&&(Ge===0&&(Ge=(0,V.Z)(D),On+=Ge*Ge),Tt===0&&(Tt=(0,V.Z)(D),On+=Tt*Tt),On=(_r-(On=Math.sqrt(On)))/On*X,Fe.vx+=(Ge*=On)*(_r=(vn*=vn)/(kt+vn)),Fe.vy+=(Tt*=On)*_r,dr.vx-=Ge*(_r=1-_r),dr.vy-=Tt*_r)}return}return Wn>ct+_r||Invt+_r||znve.r&&(ve.r=ve[Ee].r)}function we(){if(P){var ve,Ee=P.length,$e;for(H=new Array(Ee),ve=0;ve(E=(m*E+Z)%V)/V}},31136:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return E}});var m=b(91592),Z=b(12068);function V(F){return F.index}function N(F,C){var P=F.get(C);if(!P)throw new Error("node not found: "+C);return P}function E(F){var C=V,P=Ee,H,D=(0,m.Z)(30),X,j,de,he,we,ve=1;F==null&&(F=[]);function Ee(at){return 1/Math.min(de[at.source.index],de[at.target.index])}function $e(at){for(var kt=0,It=F.length;kt[C(Wn,Xn,j),Wn])),Lt;for(at=0,de=new Array(kt);at=de)return;(Fe.data!==C||Fe.next)&&(kt===0&&(kt=(0,V.Z)(P),Lt+=kt*kt),It===0&&(It=(0,V.Z)(P),Lt+=It*It),Lt1?(Bn==null?ve.delete(It):ve.set(It,kt(Bn)),D):ve.get(It)},find:function(It,Bn,Lt){var Wn=0,Xn=H.length,In,zn,dr,vn,_r;for(Lt==null?Lt=1/0:Lt*=Lt,Wn=0;Wn1?($e.on(It,Bn),D):$e.on(It)}}}},34123:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return Z}});var m=b(91592);function Z(V){var N=(0,m.Z)(.1),E,F,C;typeof V!="function"&&(V=(0,m.Z)(V==null?0:+V));function P(D){for(var X=0,j=E.length,de;X=($e=(j+we)/2))?j=$e:we=$e,(Bn=F>=(Fe=(de+ve)/2))?de=Fe:ve=Fe,(Lt=C>=(ct=(he+Ee)/2))?he=ct:Ee=ct,H=D,!(D=D[Wn=Lt<<2|Bn<<1|It]))return H[Wn]=X,N;if(vt=+N._x.call(null,D.data),at=+N._y.call(null,D.data),kt=+N._z.call(null,D.data),E===vt&&F===at&&C===kt)return X.next=D,H?H[Wn]=X:N._root=X,N;do H=H?H[Wn]=new Array(8):N._root=new Array(8),(It=E>=($e=(j+we)/2))?j=$e:we=$e,(Bn=F>=(Fe=(de+ve)/2))?de=Fe:ve=Fe,(Lt=C>=(ct=(he+Ee)/2))?he=ct:Ee=ct;while((Wn=Lt<<2|Bn<<1|It)===(Xn=(kt>=ct)<<2|(at>=Fe)<<1|vt>=$e));return H[Xn]=D,H[Wn]=X,N}function V(N){Array.isArray(N)||(N=Array.from(N));const E=N.length,F=new Float64Array(E),C=new Float64Array(E),P=new Float64Array(E);let H=1/0,D=1/0,X=1/0,j=-1/0,de=-1/0,he=-1/0;for(let we=0,ve,Ee,$e,Fe;wej&&(j=Ee),$ede&&(de=$e),Fehe&&(he=Fe));if(H>j||D>de||X>he)return this;this.cover(H,D,X).cover(j,de,he);for(let we=0;weZ||Z>=P||F>V||V>=H||C>N||N>=D;)switch(he=(NEe||(j=at.y0)>$e||(de=at.z0)>Fe||(he=at.x1)=Lt)<<2|(N>=Bn)<<1|V>=It)&&(at=ct[ct.length-1],ct[ct.length-1]=ct[ct.length-1-kt],ct[ct.length-1-kt]=at)}else{var Wn=V-+this._x.call(null,vt.data),Xn=N-+this._y.call(null,vt.data),In=E-+this._z.call(null,vt.data),zn=Wn*Wn+Xn*Xn+In*In;if(znMath.sqrt(Bp(V-F,2)+Bp(N-C,2)+Bp(E-P,2));function Z(V,N,E,F){const C=[],P=V-F,H=N-F,D=E-F,X=V+F,j=N+F,de=E+F;return this.visit((he,we,ve,Ee,$e,Fe,ct)=>{if(!he.length)do{const vt=he.data;m(V,N,E,this._x(vt),this._y(vt),this._z(vt))<=F&&C.push(vt)}while(he=he.next);return we>X||ve>j||Ee>de||$e=($e=(H+j)/2))?H=$e:j=$e,(at=ve>=(Fe=(D+de)/2))?D=Fe:de=Fe,(kt=Ee>=(ct=(X+he)/2))?X=ct:he=ct,N=E,!(E=E[It=kt<<2|at<<1|vt]))return this;if(!E.length)break;(N[It+1&7]||N[It+2&7]||N[It+3&7]||N[It+4&7]||N[It+5&7]||N[It+6&7]||N[It+7&7])&&(F=N,Bn=It)}for(;E.data!==V;)if(C=E,!(E=E.next))return this;return(P=E.next)&&delete E.next,C?(P?C.next=P:delete C.next,this):N?(P?N[It]=P:delete N[It],(E=N[0]||N[1]||N[2]||N[3]||N[4]||N[5]||N[6]||N[7])&&E===(N[7]||N[6]||N[5]||N[4]||N[3]||N[2]||N[1]||N[0])&&!E.length&&(F?F[Bn]=E:this._root=E),this):(this._root=P,this)}function Z(V){for(var N=0,E=V.length;N=(we=(X+de)/2))?X=we:de=we,(ct=F>=(ve=(j+he)/2))?j=ve:he=ve,P=H,!(H=H[vt=ct<<1|Fe]))return P[vt]=D,N;if(Ee=+N._x.call(null,H.data),$e=+N._y.call(null,H.data),E===Ee&&F===$e)return D.next=H,P?P[vt]=D:N._root=D,N;do P=P?P[vt]=new Array(4):N._root=new Array(4),(Fe=E>=(we=(X+de)/2))?X=we:de=we,(ct=F>=(ve=(j+he)/2))?j=ve:he=ve;while((vt=ct<<1|Fe)===(at=($e>=ve)<<1|Ee>=we));return P[at]=H,P[vt]=D,N}function V(N){var E,F,C=N.length,P,H,D=new Array(C),X=new Array(C),j=1/0,de=1/0,he=-1/0,we=-1/0;for(F=0;Fhe&&(he=P),Hwe&&(we=H));if(j>he||de>we)return this;for(this.cover(j,de).cover(he,we),F=0;FZ||Z>=F||E>V||V>=C;)switch(X=(Vde||(D=Ee.y0)>he||(X=Ee.x1)=ct)<<1|V>=Fe)&&(Ee=we[we.length-1],we[we.length-1]=we[we.length-1-$e],we[we.length-1-$e]=Ee)}else{var vt=V-+this._x.call(null,ve.data),at=N-+this._y.call(null,ve.data),kt=vt*vt+at*at;if(kt=(we=(H+X)/2))?H=we:X=we,($e=he>=(ve=(D+j)/2))?D=ve:j=ve,N=E,!(E=E[Fe=$e<<1|Ee]))return this;if(!E.length)break;(N[Fe+1&3]||N[Fe+2&3]||N[Fe+3&3])&&(F=N,ct=Fe)}for(;E.data!==V;)if(C=E,!(E=E.next))return this;return(P=E.next)&&delete E.next,C?(P?C.next=P:delete C.next,this):N?(P?N[Fe]=P:delete N[Fe],(E=N[0]||N[1]||N[2]||N[3])&&E===(N[3]||N[2]||N[1]||N[0])&&!E.length&&(F?F[ct]=E:this._root=E),this):(this._root=P,this)}function Z(V){for(var N=0,E=V.length;N=0&&vt._call.call(void 0,at),vt=vt._next;--m}function Ee(){P=(C=D.now())+H,m=Z=0;try{ve()}finally{m=0,Fe(),P=0}}function $e(){var vt=D.now(),at=vt-C;at>N&&(H-=at,C=vt)}function Fe(){for(var vt,at=E,kt,It=1/0;at;)at._call?(It>at._time&&(It=at._time),vt=at,at=at._next):(kt=at._next,at._next=null,at=vt?vt._next=kt:E=kt);F=vt,ct(It)}function ct(vt){if(!m){Z&&(Z=clearTimeout(Z));var at=vt-P;at>24?(vt<1/0&&(Z=setTimeout(Ee,vt-D.now()-H)),V&&(V=clearInterval(V))):(V||(C=D.now(),V=setInterval($e,N)),m=1,X(Ee))}}},90681:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return $e}});var m=b(12778),Z=m.Z.Symbol,V=Z,N=Object.prototype,E=N.hasOwnProperty,F=N.toString,C=V?V.toStringTag:void 0;function P(Fe){var ct=E.call(Fe,C),vt=Fe[C];try{Fe[C]=void 0;var at=!0}catch(It){}var kt=F.call(Fe);return at&&(ct?Fe[C]=vt:delete Fe[C]),kt}var H=P,D=Object.prototype,X=D.toString;function j(Fe){return X.call(Fe)}var de=j,he="[object Null]",we="[object Undefined]",ve=V?V.toStringTag:void 0;function Ee(Fe){return Fe==null?Fe===void 0?we:he:ve&&ve in Object(Fe)?H(Fe):de(Fe)}var $e=Ee},61644:function(Be,Me){"use strict";var b=typeof global=="object"&&global&&global.Object===Object&&global;Me.Z=b},12778:function(Be,Me,b){"use strict";var m=b(61644),Z=typeof self=="object"&&self&&self.Object===Object&&self,V=m.Z||Z||Function("return this")();Me.Z=V},91519:function(Be,Me){"use strict";function b(m){var Z=typeof m;return m!=null&&(Z=="object"||Z=="function")}Me.Z=b},64162:function(Be,Me){"use strict";function b(m){return m!=null&&typeof m=="object"}Me.Z=b},51910:function(Be,Me,b){"use strict";b.d(Me,{KI_:function(){return go},Kj0:function(){return zd},ROQ:function(){return D0},TlE:function(){return Ql},ZAu:function(){return xu},ehD:function(){return he},jyi:function(){return RA},u9r:function(){return Ui},vBJ:function(){return Dh},xeV:function(){return Fp},xo$:function(){return hu},xoR:function(){return Nf}});const m="181",Z={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},V={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},N=0,E=1,F=2,C=3,P=0,H=1,D=2,X=3,j=0,de=1,he=2,we=0,ve=1,Ee=2,$e=3,Fe=4,ct=5,vt=100,at=101,kt=102,It=103,Bn=104,Lt=200,Wn=201,Xn=202,In=203,zn=204,dr=205,vn=206,_r=207,Ge=208,Tt=209,On=210,Vr=211,en=212,ln=213,Cn=214,Mt=0,Et=1,pe=2,Ae=3,Pe=4,Ut=5,jt=6,ft=7,on=0,hn=1,lt=2,Ct=0,sn=1,W=2,Se=3,Ht=4,zt=5,Fn=6,Tn=7,lr="attached",je="detached",be=300,it=301,wt=302,ot=303,ut=304,_t=306,$t=1e3,Vt=1001,Qt=1002,cn=1003,Yn=1004,qn=1004,Sr=1005,Jr=1005,vr=1006,Ki=1007,Mi=1007,yi=1008,qr=1008,es=1009,Ci=1010,En=1011,rn=1012,Xt=1013,st=1014,dt=1015,Wt=1016,bn=1017,Jt=1018,ar=1020,rr=35902,Kr=35899,si=1021,Ie=1022,L=1023,Q=1026,w=1027,z=1028,ie=1029,ze=1030,Je=1031,At=1032,xt=1033,Sn=33776,Oe=33777,Qe=33778,Re=33779,Ke=35840,gt=35841,tn=35842,yt=35843,Yt=36196,Rn=37492,er=37496,Jn=37808,kr=37809,fr=37810,wr=37811,ei=37812,_n=37813,jn=37814,Hr=37815,Pr=37816,$i=37817,Zi=37818,Xi=37819,Ei=37820,ms=37821,_i=36492,Es=36494,ua=36495,Hn=36283,Pt=36284,Gt=36285,Bt=36286,yn=2200,Ln=2201,gr=2202,Rr=2300,$r=2301,Ii=2302,Di=2400,ss=2401,vs=2402,Cs=2500,Aa=2501,sa=0,ca=1,Ai=2,$a=3200,Zo=3201,Ko=3202,$o=3203,bo=0,Pl=1,il="",go="srgb",Ll="srgb-linear",Lu="linear",ao="srgb",sl=0,No=7680,Uu=7681,ws=7682,Kh=7683,dh=34055,$h=34056,Uh=5386,Ku=512,sc=513,pu=514,ou=515,Ad=516,hf=517,Xo=518,fh=519,Qf=512,pd=513,Ah=514,Vc=515,jo=516,gd=517,lu=518,gu=519,oo=35044,Ic=35048,jc=35040,ph=35045,Lo=35049,Ji=35041,$u=35046,gh=35050,mh=35042,np="100",vh="300 es",Cu=2e3,zc=2001,Ul={COMPUTE:"compute",RENDER:"render"},Xl={PERSPECTIVE:"perspective",LINEAR:"linear",FLAT:"flat"},Uo={NORMAL:"normal",CENTROID:"centroid",SAMPLE:"sample",FIRST:"first",EITHER:"either"};function Ld(ue){for(let r=ue.length-1;r>=0;--r)if(ue[r]>=65535)return!0;return!1}const Yc={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function gl(ue,r){return new Yc[ue](r)}function To(ue){return document.createElementNS("http://www.w3.org/1999/xhtml",ue)}function ml(){const ue=To("canvas");return ue.style.display="block",ue}const Xu={};let mu=null;function Oo(ue){mu=ue}function Bo(){return mu}function _o(...ue){const r="THREE."+ue.shift();mu?mu("log",r,...ue):console.log(r,...ue)}function na(...ue){const r="THREE."+ue.shift();mu?mu("warn",r,...ue):console.warn(r,...ue)}function Wa(...ue){const r="THREE."+ue.shift();mu?mu("error",r,...ue):console.error(r,...ue)}function yh(...ue){const r=ue.join(" ");r in Xu||(Xu[r]=!0,na(...ue))}function Yo(ue,r,l){return new Promise(function(h,p){function y(){switch(ue.clientWaitSync(r,ue.SYNC_FLUSH_COMMANDS_BIT,0)){case ue.WAIT_FAILED:p();break;case ue.TIMEOUT_EXPIRED:setTimeout(y,l);break;default:h()}}setTimeout(y,l)})}class Tu{addEventListener(r,l){this._listeners===void 0&&(this._listeners={});const h=this._listeners;h[r]===void 0&&(h[r]=[]),h[r].indexOf(l)===-1&&h[r].push(l)}hasEventListener(r,l){const h=this._listeners;return h===void 0?!1:h[r]!==void 0&&h[r].indexOf(l)!==-1}removeEventListener(r,l){const h=this._listeners;if(h===void 0)return;const p=h[r];if(p!==void 0){const y=p.indexOf(l);y!==-1&&p.splice(y,1)}}dispatchEvent(r){const l=this._listeners;if(l===void 0)return;const h=l[r.type];if(h!==void 0){r.target=this;const p=h.slice(0);for(let y=0,T=p.length;y>8&255]+uu[ue>>16&255]+uu[ue>>24&255]+"-"+uu[r&255]+uu[r>>8&255]+"-"+uu[r>>16&15|64]+uu[r>>24&255]+"-"+uu[l&63|128]+uu[l>>8&255]+"-"+uu[l>>16&255]+uu[l>>24&255]+uu[h&255]+uu[h>>8&255]+uu[h>>16&255]+uu[h>>24&255]).toLowerCase()}function ki(ue,r,l){return Math.max(r,Math.min(l,ue))}function ju(ue,r){return(ue%r+r)%r}function bl(ue,r,l,h,p){return h+(ue-r)*(p-h)/(l-r)}function qo(ue,r,l){return ue!==r?(l-ue)/(r-ue):0}function Go(ue,r,l){return(1-l)*ue+l*r}function Ou(ue,r,l,h){return Go(ue,r,1-Math.exp(-l*h))}function Oh(ue,r=1){return r-Math.abs(ju(ue,r*2)-r)}function oc(ue,r,l){return ue<=r?0:ue>=l?1:(ue=(ue-r)/(l-r),ue*ue*(3-2*ue))}function Ca(ue,r,l){return ue<=r?0:ue>=l?1:(ue=(ue-r)/(l-r),ue*ue*ue*(ue*(ue*6-15)+10))}function Ud(ue,r){return ue+Math.floor(Math.random()*(r-ue+1))}function rp(ue,r){return ue+Math.random()*(r-ue)}function Xh(ue){return ue*(.5-Math.random())}function lc(ue){ue!==void 0&&(wc=ue);let r=wc+=1831565813;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}function wA(ue){return ue*ac}function Od(ue){return ue*Lr}function jh(ue){return(ue&ue-1)===0&&ue!==0}function SA(ue){return Math.pow(2,Math.ceil(Math.log(ue)/Math.LN2))}function md(ue){return Math.pow(2,Math.floor(Math.log(ue)/Math.LN2))}function vd(ue,r,l,h,p){const y=Math.cos,T=Math.sin,O=y(l/2),te=T(l/2),se=y((r+h)/2),xe=T((r+h)/2),Ne=y((r-h)/2),Ve=T((r-h)/2),We=y((h-r)/2),tt=T((h-r)/2);switch(p){case"XYX":ue.set(O*xe,te*Ne,te*Ve,O*se);break;case"YZY":ue.set(te*Ve,O*xe,te*Ne,O*se);break;case"ZXZ":ue.set(te*Ne,te*Ve,O*xe,O*se);break;case"XZX":ue.set(O*xe,te*tt,te*We,O*se);break;case"YXY":ue.set(te*We,O*xe,te*tt,O*se);break;case"ZYZ":ue.set(te*tt,te*We,O*xe,O*se);break;default:na("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+p)}}function mo(ue,r){switch(r.constructor){case Float32Array:return ue;case Uint32Array:return ue/4294967295;case Uint16Array:return ue/65535;case Uint8Array:return ue/255;case Int32Array:return Math.max(ue/2147483647,-1);case Int16Array:return Math.max(ue/32767,-1);case Int8Array:return Math.max(ue/127,-1);default:throw new Error("Invalid component type.")}}function wa(ue,r){switch(r.constructor){case Float32Array:return ue;case Uint32Array:return Math.round(ue*4294967295);case Uint16Array:return Math.round(ue*65535);case Uint8Array:return Math.round(ue*255);case Int32Array:return Math.round(ue*2147483647);case Int16Array:return Math.round(ue*32767);case Int8Array:return Math.round(ue*127);default:throw new Error("Invalid component type.")}}const Dd={DEG2RAD:ac,RAD2DEG:Lr,generateUUID:Gr,clamp:ki,euclideanModulo:ju,mapLinear:bl,inverseLerp:qo,lerp:Go,damp:Ou,pingpong:Oh,smoothstep:oc,smootherstep:Ca,randInt:Ud,randFloat:rp,randFloatSpread:Xh,seededRandom:lc,degToRad:wA,radToDeg:Od,isPowerOfTwo:jh,ceilPowerOfTwo:SA,floorPowerOfTwo:md,setQuaternionFromProperEuler:vd,normalize:wa,denormalize:mo};class qi{constructor(r=0,l=0){qi.prototype.isVector2=!0,this.x=r,this.y=l}get width(){return this.x}set width(r){this.x=r}get height(){return this.y}set height(r){this.y=r}set(r,l){return this.x=r,this.y=l,this}setScalar(r){return this.x=r,this.y=r,this}setX(r){return this.x=r,this}setY(r){return this.y=r,this}setComponent(r,l){switch(r){case 0:this.x=l;break;case 1:this.y=l;break;default:throw new Error("index is out of range: "+r)}return this}getComponent(r){switch(r){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+r)}}clone(){return new this.constructor(this.x,this.y)}copy(r){return this.x=r.x,this.y=r.y,this}add(r){return this.x+=r.x,this.y+=r.y,this}addScalar(r){return this.x+=r,this.y+=r,this}addVectors(r,l){return this.x=r.x+l.x,this.y=r.y+l.y,this}addScaledVector(r,l){return this.x+=r.x*l,this.y+=r.y*l,this}sub(r){return this.x-=r.x,this.y-=r.y,this}subScalar(r){return this.x-=r,this.y-=r,this}subVectors(r,l){return this.x=r.x-l.x,this.y=r.y-l.y,this}multiply(r){return this.x*=r.x,this.y*=r.y,this}multiplyScalar(r){return this.x*=r,this.y*=r,this}divide(r){return this.x/=r.x,this.y/=r.y,this}divideScalar(r){return this.multiplyScalar(1/r)}applyMatrix3(r){const l=this.x,h=this.y,p=r.elements;return this.x=p[0]*l+p[3]*h+p[6],this.y=p[1]*l+p[4]*h+p[7],this}min(r){return this.x=Math.min(this.x,r.x),this.y=Math.min(this.y,r.y),this}max(r){return this.x=Math.max(this.x,r.x),this.y=Math.max(this.y,r.y),this}clamp(r,l){return this.x=ki(this.x,r.x,l.x),this.y=ki(this.y,r.y,l.y),this}clampScalar(r,l){return this.x=ki(this.x,r,l),this.y=ki(this.y,r,l),this}clampLength(r,l){const h=this.length();return this.divideScalar(h||1).multiplyScalar(ki(h,r,l))}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(r){return this.x*r.x+this.y*r.y}cross(r){return this.x*r.y-this.y*r.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(r){const l=Math.sqrt(this.lengthSq()*r.lengthSq());if(l===0)return Math.PI/2;const h=this.dot(r)/l;return Math.acos(ki(h,-1,1))}distanceTo(r){return Math.sqrt(this.distanceToSquared(r))}distanceToSquared(r){const l=this.x-r.x,h=this.y-r.y;return l*l+h*h}manhattanDistanceTo(r){return Math.abs(this.x-r.x)+Math.abs(this.y-r.y)}setLength(r){return this.normalize().multiplyScalar(r)}lerp(r,l){return this.x+=(r.x-this.x)*l,this.y+=(r.y-this.y)*l,this}lerpVectors(r,l,h){return this.x=r.x+(l.x-r.x)*h,this.y=r.y+(l.y-r.y)*h,this}equals(r){return r.x===this.x&&r.y===this.y}fromArray(r,l=0){return this.x=r[l],this.y=r[l+1],this}toArray(r=[],l=0){return r[l]=this.x,r[l+1]=this.y,r}fromBufferAttribute(r,l){return this.x=r.getX(l),this.y=r.getY(l),this}rotateAround(r,l){const h=Math.cos(l),p=Math.sin(l),y=this.x-r.x,T=this.y-r.y;return this.x=y*h-T*p+r.x,this.y=y*p+T*h+r.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Du{constructor(r=0,l=0,h=0,p=1){this.isQuaternion=!0,this._x=r,this._y=l,this._z=h,this._w=p}static slerpFlat(r,l,h,p,y,T,O){let te=h[p+0],se=h[p+1],xe=h[p+2],Ne=h[p+3],Ve=y[T+0],We=y[T+1],tt=y[T+2],Ot=y[T+3];if(O<=0){r[l+0]=te,r[l+1]=se,r[l+2]=xe,r[l+3]=Ne;return}if(O>=1){r[l+0]=Ve,r[l+1]=We,r[l+2]=tt,r[l+3]=Ot;return}if(Ne!==Ot||te!==Ve||se!==We||xe!==tt){let An=te*Ve+se*We+xe*tt+Ne*Ot;An<0&&(Ve=-Ve,We=-We,tt=-tt,Ot=-Ot,An=-An);let un=1-O;if(An<.9995){const Un=Math.acos(An),Vn=Math.sin(Un);un=Math.sin(un*Un)/Vn,O=Math.sin(O*Un)/Vn,te=te*un+Ve*O,se=se*un+We*O,xe=xe*un+tt*O,Ne=Ne*un+Ot*O}else{te=te*un+Ve*O,se=se*un+We*O,xe=xe*un+tt*O,Ne=Ne*un+Ot*O;const Un=1/Math.sqrt(te*te+se*se+xe*xe+Ne*Ne);te*=Un,se*=Un,xe*=Un,Ne*=Un}}r[l]=te,r[l+1]=se,r[l+2]=xe,r[l+3]=Ne}static multiplyQuaternionsFlat(r,l,h,p,y,T){const O=h[p],te=h[p+1],se=h[p+2],xe=h[p+3],Ne=y[T],Ve=y[T+1],We=y[T+2],tt=y[T+3];return r[l]=O*tt+xe*Ne+te*We-se*Ve,r[l+1]=te*tt+xe*Ve+se*Ne-O*We,r[l+2]=se*tt+xe*We+O*Ve-te*Ne,r[l+3]=xe*tt-O*Ne-te*Ve-se*We,r}get x(){return this._x}set x(r){this._x=r,this._onChangeCallback()}get y(){return this._y}set y(r){this._y=r,this._onChangeCallback()}get z(){return this._z}set z(r){this._z=r,this._onChangeCallback()}get w(){return this._w}set w(r){this._w=r,this._onChangeCallback()}set(r,l,h,p){return this._x=r,this._y=l,this._z=h,this._w=p,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(r){return this._x=r.x,this._y=r.y,this._z=r.z,this._w=r.w,this._onChangeCallback(),this}setFromEuler(r,l=!0){const h=r._x,p=r._y,y=r._z,T=r._order,O=Math.cos,te=Math.sin,se=O(h/2),xe=O(p/2),Ne=O(y/2),Ve=te(h/2),We=te(p/2),tt=te(y/2);switch(T){case"XYZ":this._x=Ve*xe*Ne+se*We*tt,this._y=se*We*Ne-Ve*xe*tt,this._z=se*xe*tt+Ve*We*Ne,this._w=se*xe*Ne-Ve*We*tt;break;case"YXZ":this._x=Ve*xe*Ne+se*We*tt,this._y=se*We*Ne-Ve*xe*tt,this._z=se*xe*tt-Ve*We*Ne,this._w=se*xe*Ne+Ve*We*tt;break;case"ZXY":this._x=Ve*xe*Ne-se*We*tt,this._y=se*We*Ne+Ve*xe*tt,this._z=se*xe*tt+Ve*We*Ne,this._w=se*xe*Ne-Ve*We*tt;break;case"ZYX":this._x=Ve*xe*Ne-se*We*tt,this._y=se*We*Ne+Ve*xe*tt,this._z=se*xe*tt-Ve*We*Ne,this._w=se*xe*Ne+Ve*We*tt;break;case"YZX":this._x=Ve*xe*Ne+se*We*tt,this._y=se*We*Ne+Ve*xe*tt,this._z=se*xe*tt-Ve*We*Ne,this._w=se*xe*Ne-Ve*We*tt;break;case"XZY":this._x=Ve*xe*Ne-se*We*tt,this._y=se*We*Ne-Ve*xe*tt,this._z=se*xe*tt+Ve*We*Ne,this._w=se*xe*Ne+Ve*We*tt;break;default:na("Quaternion: .setFromEuler() encountered an unknown order: "+T)}return l===!0&&this._onChangeCallback(),this}setFromAxisAngle(r,l){const h=l/2,p=Math.sin(h);return this._x=r.x*p,this._y=r.y*p,this._z=r.z*p,this._w=Math.cos(h),this._onChangeCallback(),this}setFromRotationMatrix(r){const l=r.elements,h=l[0],p=l[4],y=l[8],T=l[1],O=l[5],te=l[9],se=l[2],xe=l[6],Ne=l[10],Ve=h+O+Ne;if(Ve>0){const We=.5/Math.sqrt(Ve+1);this._w=.25/We,this._x=(xe-te)*We,this._y=(y-se)*We,this._z=(T-p)*We}else if(h>O&&h>Ne){const We=2*Math.sqrt(1+h-O-Ne);this._w=(xe-te)/We,this._x=.25*We,this._y=(p+T)/We,this._z=(y+se)/We}else if(O>Ne){const We=2*Math.sqrt(1+O-h-Ne);this._w=(y-se)/We,this._x=(p+T)/We,this._y=.25*We,this._z=(te+xe)/We}else{const We=2*Math.sqrt(1+Ne-h-O);this._w=(T-p)/We,this._x=(y+se)/We,this._y=(te+xe)/We,this._z=.25*We}return this._onChangeCallback(),this}setFromUnitVectors(r,l){let h=r.dot(l)+1;return h<1e-8?(h=0,Math.abs(r.x)>Math.abs(r.z)?(this._x=-r.y,this._y=r.x,this._z=0,this._w=h):(this._x=0,this._y=-r.z,this._z=r.y,this._w=h)):(this._x=r.y*l.z-r.z*l.y,this._y=r.z*l.x-r.x*l.z,this._z=r.x*l.y-r.y*l.x,this._w=h),this.normalize()}angleTo(r){return 2*Math.acos(Math.abs(ki(this.dot(r),-1,1)))}rotateTowards(r,l){const h=this.angleTo(r);if(h===0)return this;const p=Math.min(1,l/h);return this.slerp(r,p),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(r){return this._x*r._x+this._y*r._y+this._z*r._z+this._w*r._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 r=this.length();return r===0?(this._x=0,this._y=0,this._z=0,this._w=1):(r=1/r,this._x=this._x*r,this._y=this._y*r,this._z=this._z*r,this._w=this._w*r),this._onChangeCallback(),this}multiply(r){return this.multiplyQuaternions(this,r)}premultiply(r){return this.multiplyQuaternions(r,this)}multiplyQuaternions(r,l){const h=r._x,p=r._y,y=r._z,T=r._w,O=l._x,te=l._y,se=l._z,xe=l._w;return this._x=h*xe+T*O+p*se-y*te,this._y=p*xe+T*te+y*O-h*se,this._z=y*xe+T*se+h*te-p*O,this._w=T*xe-h*O-p*te-y*se,this._onChangeCallback(),this}slerp(r,l){if(l<=0)return this;if(l>=1)return this.copy(r);let h=r._x,p=r._y,y=r._z,T=r._w,O=this.dot(r);O<0&&(h=-h,p=-p,y=-y,T=-T,O=-O);let te=1-l;if(O<.9995){const se=Math.acos(O),xe=Math.sin(se);te=Math.sin(te*se)/xe,l=Math.sin(l*se)/xe,this._x=this._x*te+h*l,this._y=this._y*te+p*l,this._z=this._z*te+y*l,this._w=this._w*te+T*l,this._onChangeCallback()}else this._x=this._x*te+h*l,this._y=this._y*te+p*l,this._z=this._z*te+y*l,this._w=this._w*te+T*l,this.normalize();return this}slerpQuaternions(r,l,h){return this.copy(r).slerp(l,h)}random(){const r=2*Math.PI*Math.random(),l=2*Math.PI*Math.random(),h=Math.random(),p=Math.sqrt(1-h),y=Math.sqrt(h);return this.set(p*Math.sin(r),p*Math.cos(r),y*Math.sin(l),y*Math.cos(l))}equals(r){return r._x===this._x&&r._y===this._y&&r._z===this._z&&r._w===this._w}fromArray(r,l=0){return this._x=r[l],this._y=r[l+1],this._z=r[l+2],this._w=r[l+3],this._onChangeCallback(),this}toArray(r=[],l=0){return r[l]=this._x,r[l+1]=this._y,r[l+2]=this._z,r[l+3]=this._w,r}fromBufferAttribute(r,l){return this._x=r.getX(l),this._y=r.getY(l),this._z=r.getZ(l),this._w=r.getW(l),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(r){return this._onChangeCallback=r,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class kn{constructor(r=0,l=0,h=0){kn.prototype.isVector3=!0,this.x=r,this.y=l,this.z=h}set(r,l,h){return h===void 0&&(h=this.z),this.x=r,this.y=l,this.z=h,this}setScalar(r){return this.x=r,this.y=r,this.z=r,this}setX(r){return this.x=r,this}setY(r){return this.y=r,this}setZ(r){return this.z=r,this}setComponent(r,l){switch(r){case 0:this.x=l;break;case 1:this.y=l;break;case 2:this.z=l;break;default:throw new Error("index is out of range: "+r)}return this}getComponent(r){switch(r){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+r)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(r){return this.x=r.x,this.y=r.y,this.z=r.z,this}add(r){return this.x+=r.x,this.y+=r.y,this.z+=r.z,this}addScalar(r){return this.x+=r,this.y+=r,this.z+=r,this}addVectors(r,l){return this.x=r.x+l.x,this.y=r.y+l.y,this.z=r.z+l.z,this}addScaledVector(r,l){return this.x+=r.x*l,this.y+=r.y*l,this.z+=r.z*l,this}sub(r){return this.x-=r.x,this.y-=r.y,this.z-=r.z,this}subScalar(r){return this.x-=r,this.y-=r,this.z-=r,this}subVectors(r,l){return this.x=r.x-l.x,this.y=r.y-l.y,this.z=r.z-l.z,this}multiply(r){return this.x*=r.x,this.y*=r.y,this.z*=r.z,this}multiplyScalar(r){return this.x*=r,this.y*=r,this.z*=r,this}multiplyVectors(r,l){return this.x=r.x*l.x,this.y=r.y*l.y,this.z=r.z*l.z,this}applyEuler(r){return this.applyQuaternion(Yh.setFromEuler(r))}applyAxisAngle(r,l){return this.applyQuaternion(Yh.setFromAxisAngle(r,l))}applyMatrix3(r){const l=this.x,h=this.y,p=this.z,y=r.elements;return this.x=y[0]*l+y[3]*h+y[6]*p,this.y=y[1]*l+y[4]*h+y[7]*p,this.z=y[2]*l+y[5]*h+y[8]*p,this}applyNormalMatrix(r){return this.applyMatrix3(r).normalize()}applyMatrix4(r){const l=this.x,h=this.y,p=this.z,y=r.elements,T=1/(y[3]*l+y[7]*h+y[11]*p+y[15]);return this.x=(y[0]*l+y[4]*h+y[8]*p+y[12])*T,this.y=(y[1]*l+y[5]*h+y[9]*p+y[13])*T,this.z=(y[2]*l+y[6]*h+y[10]*p+y[14])*T,this}applyQuaternion(r){const l=this.x,h=this.y,p=this.z,y=r.x,T=r.y,O=r.z,te=r.w,se=2*(T*p-O*h),xe=2*(O*l-y*p),Ne=2*(y*h-T*l);return this.x=l+te*se+T*Ne-O*xe,this.y=h+te*xe+O*se-y*Ne,this.z=p+te*Ne+y*xe-T*se,this}project(r){return this.applyMatrix4(r.matrixWorldInverse).applyMatrix4(r.projectionMatrix)}unproject(r){return this.applyMatrix4(r.projectionMatrixInverse).applyMatrix4(r.matrixWorld)}transformDirection(r){const l=this.x,h=this.y,p=this.z,y=r.elements;return this.x=y[0]*l+y[4]*h+y[8]*p,this.y=y[1]*l+y[5]*h+y[9]*p,this.z=y[2]*l+y[6]*h+y[10]*p,this.normalize()}divide(r){return this.x/=r.x,this.y/=r.y,this.z/=r.z,this}divideScalar(r){return this.multiplyScalar(1/r)}min(r){return this.x=Math.min(this.x,r.x),this.y=Math.min(this.y,r.y),this.z=Math.min(this.z,r.z),this}max(r){return this.x=Math.max(this.x,r.x),this.y=Math.max(this.y,r.y),this.z=Math.max(this.z,r.z),this}clamp(r,l){return this.x=ki(this.x,r.x,l.x),this.y=ki(this.y,r.y,l.y),this.z=ki(this.z,r.z,l.z),this}clampScalar(r,l){return this.x=ki(this.x,r,l),this.y=ki(this.y,r,l),this.z=ki(this.z,r,l),this}clampLength(r,l){const h=this.length();return this.divideScalar(h||1).multiplyScalar(ki(h,r,l))}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(r){return this.x*r.x+this.y*r.y+this.z*r.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(r){return this.normalize().multiplyScalar(r)}lerp(r,l){return this.x+=(r.x-this.x)*l,this.y+=(r.y-this.y)*l,this.z+=(r.z-this.z)*l,this}lerpVectors(r,l,h){return this.x=r.x+(l.x-r.x)*h,this.y=r.y+(l.y-r.y)*h,this.z=r.z+(l.z-r.z)*h,this}cross(r){return this.crossVectors(this,r)}crossVectors(r,l){const h=r.x,p=r.y,y=r.z,T=l.x,O=l.y,te=l.z;return this.x=p*te-y*O,this.y=y*T-h*te,this.z=h*O-p*T,this}projectOnVector(r){const l=r.lengthSq();if(l===0)return this.set(0,0,0);const h=r.dot(this)/l;return this.copy(r).multiplyScalar(h)}projectOnPlane(r){return kd.copy(this).projectOnVector(r),this.sub(kd)}reflect(r){return this.sub(kd.copy(r).multiplyScalar(2*this.dot(r)))}angleTo(r){const l=Math.sqrt(this.lengthSq()*r.lengthSq());if(l===0)return Math.PI/2;const h=this.dot(r)/l;return Math.acos(ki(h,-1,1))}distanceTo(r){return Math.sqrt(this.distanceToSquared(r))}distanceToSquared(r){const l=this.x-r.x,h=this.y-r.y,p=this.z-r.z;return l*l+h*h+p*p}manhattanDistanceTo(r){return Math.abs(this.x-r.x)+Math.abs(this.y-r.y)+Math.abs(this.z-r.z)}setFromSpherical(r){return this.setFromSphericalCoords(r.radius,r.phi,r.theta)}setFromSphericalCoords(r,l,h){const p=Math.sin(l)*r;return this.x=p*Math.sin(h),this.y=Math.cos(l)*r,this.z=p*Math.cos(h),this}setFromCylindrical(r){return this.setFromCylindricalCoords(r.radius,r.theta,r.y)}setFromCylindricalCoords(r,l,h){return this.x=r*Math.sin(l),this.y=h,this.z=r*Math.cos(l),this}setFromMatrixPosition(r){const l=r.elements;return this.x=l[12],this.y=l[13],this.z=l[14],this}setFromMatrixScale(r){const l=this.setFromMatrixColumn(r,0).length(),h=this.setFromMatrixColumn(r,1).length(),p=this.setFromMatrixColumn(r,2).length();return this.x=l,this.y=h,this.z=p,this}setFromMatrixColumn(r,l){return this.fromArray(r.elements,l*4)}setFromMatrix3Column(r,l){return this.fromArray(r.elements,l*3)}setFromEuler(r){return this.x=r._x,this.y=r._y,this.z=r._z,this}setFromColor(r){return this.x=r.r,this.y=r.g,this.z=r.b,this}equals(r){return r.x===this.x&&r.y===this.y&&r.z===this.z}fromArray(r,l=0){return this.x=r[l],this.y=r[l+1],this.z=r[l+2],this}toArray(r=[],l=0){return r[l]=this.x,r[l+1]=this.y,r[l+2]=this.z,r}fromBufferAttribute(r,l){return this.x=r.getX(l),this.y=r.getY(l),this.z=r.getZ(l),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const r=Math.random()*Math.PI*2,l=Math.random()*2-1,h=Math.sqrt(1-l*l);return this.x=h*Math.cos(r),this.y=l,this.z=h*Math.sin(r),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const kd=new kn,Yh=new Du;class vl{constructor(r,l,h,p,y,T,O,te,se){vl.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],r!==void 0&&this.set(r,l,h,p,y,T,O,te,se)}set(r,l,h,p,y,T,O,te,se){const xe=this.elements;return xe[0]=r,xe[1]=p,xe[2]=O,xe[3]=l,xe[4]=y,xe[5]=te,xe[6]=h,xe[7]=T,xe[8]=se,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(r){const l=this.elements,h=r.elements;return l[0]=h[0],l[1]=h[1],l[2]=h[2],l[3]=h[3],l[4]=h[4],l[5]=h[5],l[6]=h[6],l[7]=h[7],l[8]=h[8],this}extractBasis(r,l,h){return r.setFromMatrix3Column(this,0),l.setFromMatrix3Column(this,1),h.setFromMatrix3Column(this,2),this}setFromMatrix4(r){const l=r.elements;return this.set(l[0],l[4],l[8],l[1],l[5],l[9],l[2],l[6],l[10]),this}multiply(r){return this.multiplyMatrices(this,r)}premultiply(r){return this.multiplyMatrices(r,this)}multiplyMatrices(r,l){const h=r.elements,p=l.elements,y=this.elements,T=h[0],O=h[3],te=h[6],se=h[1],xe=h[4],Ne=h[7],Ve=h[2],We=h[5],tt=h[8],Ot=p[0],An=p[3],un=p[6],Un=p[1],Vn=p[4],nr=p[7],ii=p[2],pi=p[5],Bi=p[8];return y[0]=T*Ot+O*Un+te*ii,y[3]=T*An+O*Vn+te*pi,y[6]=T*un+O*nr+te*Bi,y[1]=se*Ot+xe*Un+Ne*ii,y[4]=se*An+xe*Vn+Ne*pi,y[7]=se*un+xe*nr+Ne*Bi,y[2]=Ve*Ot+We*Un+tt*ii,y[5]=Ve*An+We*Vn+tt*pi,y[8]=Ve*un+We*nr+tt*Bi,this}multiplyScalar(r){const l=this.elements;return l[0]*=r,l[3]*=r,l[6]*=r,l[1]*=r,l[4]*=r,l[7]*=r,l[2]*=r,l[5]*=r,l[8]*=r,this}determinant(){const r=this.elements,l=r[0],h=r[1],p=r[2],y=r[3],T=r[4],O=r[5],te=r[6],se=r[7],xe=r[8];return l*T*xe-l*O*se-h*y*xe+h*O*te+p*y*se-p*T*te}invert(){const r=this.elements,l=r[0],h=r[1],p=r[2],y=r[3],T=r[4],O=r[5],te=r[6],se=r[7],xe=r[8],Ne=xe*T-O*se,Ve=O*te-xe*y,We=se*y-T*te,tt=l*Ne+h*Ve+p*We;if(tt===0)return this.set(0,0,0,0,0,0,0,0,0);const Ot=1/tt;return r[0]=Ne*Ot,r[1]=(p*se-xe*h)*Ot,r[2]=(O*h-p*T)*Ot,r[3]=Ve*Ot,r[4]=(xe*l-p*te)*Ot,r[5]=(p*y-O*l)*Ot,r[6]=We*Ot,r[7]=(h*te-se*l)*Ot,r[8]=(T*l-h*y)*Ot,this}transpose(){let r;const l=this.elements;return r=l[1],l[1]=l[3],l[3]=r,r=l[2],l[2]=l[6],l[6]=r,r=l[5],l[5]=l[7],l[7]=r,this}getNormalMatrix(r){return this.setFromMatrix4(r).invert().transpose()}transposeIntoArray(r){const l=this.elements;return r[0]=l[0],r[1]=l[3],r[2]=l[6],r[3]=l[1],r[4]=l[4],r[5]=l[7],r[6]=l[2],r[7]=l[5],r[8]=l[8],this}setUvTransform(r,l,h,p,y,T,O){const te=Math.cos(y),se=Math.sin(y);return this.set(h*te,h*se,-h*(te*T+se*O)+T+r,-p*se,p*te,-p*(-se*T+te*O)+O+l,0,0,1),this}scale(r,l){return this.premultiply(He.makeScale(r,l)),this}rotate(r){return this.premultiply(He.makeRotation(-r)),this}translate(r,l){return this.premultiply(He.makeTranslation(r,l)),this}makeTranslation(r,l){return r.isVector2?this.set(1,0,r.x,0,1,r.y,0,0,1):this.set(1,0,r,0,1,l,0,0,1),this}makeRotation(r){const l=Math.cos(r),h=Math.sin(r);return this.set(l,-h,0,h,l,0,0,0,1),this}makeScale(r,l){return this.set(r,0,0,0,l,0,0,0,1),this}equals(r){const l=this.elements,h=r.elements;for(let p=0;p<9;p++)if(l[p]!==h[p])return!1;return!0}fromArray(r,l=0){for(let h=0;h<9;h++)this.elements[h]=r[h+l];return this}toArray(r=[],l=0){const h=this.elements;return r[l]=h[0],r[l+1]=h[1],r[l+2]=h[2],r[l+3]=h[3],r[l+4]=h[4],r[l+5]=h[5],r[l+6]=h[6],r[l+7]=h[7],r[l+8]=h[8],r}clone(){return new this.constructor().fromArray(this.elements)}}const He=new vl,me=new vl().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),ce=new vl().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Ze(){const ue={enabled:!0,workingColorSpace:Ll,spaces:{},convert:function(p,y,T){return this.enabled===!1||y===T||!y||!T||(this.spaces[y].transfer===ao&&(p.r=Nt(p.r),p.g=Nt(p.g),p.b=Nt(p.b)),this.spaces[y].primaries!==this.spaces[T].primaries&&(p.applyMatrix3(this.spaces[y].toXYZ),p.applyMatrix3(this.spaces[T].fromXYZ)),this.spaces[T].transfer===ao&&(p.r=Dt(p.r),p.g=Dt(p.g),p.b=Dt(p.b))),p},workingToColorSpace:function(p,y){return this.convert(p,this.workingColorSpace,y)},colorSpaceToWorking:function(p,y){return this.convert(p,y,this.workingColorSpace)},getPrimaries:function(p){return this.spaces[p].primaries},getTransfer:function(p){return p===il?Lu:this.spaces[p].transfer},getToneMappingMode:function(p){return this.spaces[p].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(p,y=this.workingColorSpace){return p.fromArray(this.spaces[y].luminanceCoefficients)},define:function(p){Object.assign(this.spaces,p)},_getMatrix:function(p,y,T){return p.copy(this.spaces[y].toXYZ).multiply(this.spaces[T].fromXYZ)},_getDrawingBufferColorSpace:function(p){return this.spaces[p].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(p=this.workingColorSpace){return this.spaces[p].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(p,y){return yh("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),ue.workingToColorSpace(p,y)},toWorkingColorSpace:function(p,y){return yh("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),ue.colorSpaceToWorking(p,y)}},r=[.64,.33,.3,.6,.15,.06],l=[.2126,.7152,.0722],h=[.3127,.329];return ue.define({[Ll]:{primaries:r,whitePoint:h,transfer:Lu,toXYZ:me,fromXYZ:ce,luminanceCoefficients:l,workingColorSpaceConfig:{unpackColorSpace:go},outputColorSpaceConfig:{drawingBufferColorSpace:go}},[go]:{primaries:r,whitePoint:h,transfer:ao,toXYZ:me,fromXYZ:ce,luminanceCoefficients:l,outputColorSpaceConfig:{drawingBufferColorSpace:go}}}),ue}const le=Ze();function Nt(ue){return ue<.04045?ue*.0773993808:Math.pow(ue*.9478672986+.0521327014,2.4)}function Dt(ue){return ue<.0031308?ue*12.92:1.055*Math.pow(ue,.41666)-.055}let pn;class Dn{static getDataURL(r,l="image/png"){if(/^data:/i.test(r.src)||typeof HTMLCanvasElement=="undefined")return r.src;let h;if(r instanceof HTMLCanvasElement)h=r;else{pn===void 0&&(pn=To("canvas")),pn.width=r.width,pn.height=r.height;const p=pn.getContext("2d");r instanceof ImageData?p.putImageData(r,0,0):p.drawImage(r,0,0,r.width,r.height),h=pn}return h.toDataURL(l)}static sRGBToLinear(r){if(typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&r instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&r instanceof ImageBitmap){const l=To("canvas");l.width=r.width,l.height=r.height;const h=l.getContext("2d");h.drawImage(r,0,0,r.width,r.height);const p=h.getImageData(0,0,r.width,r.height),y=p.data;for(let T=0;T1),this.pmremVersion=0}get width(){return this.source.getSize(Fr).x}get height(){return this.source.getSize(Fr).y}get depth(){return this.source.getSize(Fr).z}get image(){return this.source.data}set image(r=null){this.source.data=r}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(r,l){this.updateRanges.push({start:r,count:l})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(r){return this.name=r.name,this.source=r.source,this.mipmaps=r.mipmaps.slice(0),this.mapping=r.mapping,this.channel=r.channel,this.wrapS=r.wrapS,this.wrapT=r.wrapT,this.magFilter=r.magFilter,this.minFilter=r.minFilter,this.anisotropy=r.anisotropy,this.format=r.format,this.internalFormat=r.internalFormat,this.type=r.type,this.offset.copy(r.offset),this.repeat.copy(r.repeat),this.center.copy(r.center),this.rotation=r.rotation,this.matrixAutoUpdate=r.matrixAutoUpdate,this.matrix.copy(r.matrix),this.generateMipmaps=r.generateMipmaps,this.premultiplyAlpha=r.premultiplyAlpha,this.flipY=r.flipY,this.unpackAlignment=r.unpackAlignment,this.colorSpace=r.colorSpace,this.renderTarget=r.renderTarget,this.isRenderTargetTexture=r.isRenderTargetTexture,this.isArrayTexture=r.isArrayTexture,this.userData=JSON.parse(JSON.stringify(r.userData)),this.needsUpdate=!0,this}setValues(r){for(const l in r){const h=r[l];if(h===void 0){na(`Texture.setValues(): parameter '${l}' has value of undefined.`);continue}const p=this[l];if(p===void 0){na(`Texture.setValues(): property '${l}' does not exist.`);continue}p&&h&&p.isVector2&&h.isVector2||p&&h&&p.isVector3&&h.isVector3||p&&h&&p.isMatrix3&&h.isMatrix3?p.copy(h):this[l]=h}}toJSON(r){const l=r===void 0||typeof r=="string";if(!l&&r.textures[this.uuid]!==void 0)return r.textures[this.uuid];const h={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(r).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(h.userData=this.userData),l||(r.textures[this.uuid]=h),h}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(r){if(this.mapping!==be)return r;if(r.applyMatrix3(this.matrix),r.x<0||r.x>1)switch(this.wrapS){case $t:r.x=r.x-Math.floor(r.x);break;case Vt:r.x=r.x<0?0:1;break;case Qt:Math.abs(Math.floor(r.x)%2)===1?r.x=Math.ceil(r.x)-r.x:r.x=r.x-Math.floor(r.x);break}if(r.y<0||r.y>1)switch(this.wrapT){case $t:r.y=r.y-Math.floor(r.y);break;case Vt:r.y=r.y<0?0:1;break;case Qt:Math.abs(Math.floor(r.y)%2)===1?r.y=Math.ceil(r.y)-r.y:r.y=r.y-Math.floor(r.y);break}return this.flipY&&(r.y=1-r.y),r}set needsUpdate(r){r===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(r){r===!0&&this.pmremVersion++}}ri.DEFAULT_IMAGE=null,ri.DEFAULT_MAPPING=be,ri.DEFAULT_ANISOTROPY=1;class ai{constructor(r=0,l=0,h=0,p=1){ai.prototype.isVector4=!0,this.x=r,this.y=l,this.z=h,this.w=p}get width(){return this.z}set width(r){this.z=r}get height(){return this.w}set height(r){this.w=r}set(r,l,h,p){return this.x=r,this.y=l,this.z=h,this.w=p,this}setScalar(r){return this.x=r,this.y=r,this.z=r,this.w=r,this}setX(r){return this.x=r,this}setY(r){return this.y=r,this}setZ(r){return this.z=r,this}setW(r){return this.w=r,this}setComponent(r,l){switch(r){case 0:this.x=l;break;case 1:this.y=l;break;case 2:this.z=l;break;case 3:this.w=l;break;default:throw new Error("index is out of range: "+r)}return this}getComponent(r){switch(r){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: "+r)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(r){return this.x=r.x,this.y=r.y,this.z=r.z,this.w=r.w!==void 0?r.w:1,this}add(r){return this.x+=r.x,this.y+=r.y,this.z+=r.z,this.w+=r.w,this}addScalar(r){return this.x+=r,this.y+=r,this.z+=r,this.w+=r,this}addVectors(r,l){return this.x=r.x+l.x,this.y=r.y+l.y,this.z=r.z+l.z,this.w=r.w+l.w,this}addScaledVector(r,l){return this.x+=r.x*l,this.y+=r.y*l,this.z+=r.z*l,this.w+=r.w*l,this}sub(r){return this.x-=r.x,this.y-=r.y,this.z-=r.z,this.w-=r.w,this}subScalar(r){return this.x-=r,this.y-=r,this.z-=r,this.w-=r,this}subVectors(r,l){return this.x=r.x-l.x,this.y=r.y-l.y,this.z=r.z-l.z,this.w=r.w-l.w,this}multiply(r){return this.x*=r.x,this.y*=r.y,this.z*=r.z,this.w*=r.w,this}multiplyScalar(r){return this.x*=r,this.y*=r,this.z*=r,this.w*=r,this}applyMatrix4(r){const l=this.x,h=this.y,p=this.z,y=this.w,T=r.elements;return this.x=T[0]*l+T[4]*h+T[8]*p+T[12]*y,this.y=T[1]*l+T[5]*h+T[9]*p+T[13]*y,this.z=T[2]*l+T[6]*h+T[10]*p+T[14]*y,this.w=T[3]*l+T[7]*h+T[11]*p+T[15]*y,this}divide(r){return this.x/=r.x,this.y/=r.y,this.z/=r.z,this.w/=r.w,this}divideScalar(r){return this.multiplyScalar(1/r)}setAxisAngleFromQuaternion(r){this.w=2*Math.acos(r.w);const l=Math.sqrt(1-r.w*r.w);return l<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=r.x/l,this.y=r.y/l,this.z=r.z/l),this}setAxisAngleFromRotationMatrix(r){let l,h,p,y;const te=r.elements,se=te[0],xe=te[4],Ne=te[8],Ve=te[1],We=te[5],tt=te[9],Ot=te[2],An=te[6],un=te[10];if(Math.abs(xe-Ve)<.01&&Math.abs(Ne-Ot)<.01&&Math.abs(tt-An)<.01){if(Math.abs(xe+Ve)<.1&&Math.abs(Ne+Ot)<.1&&Math.abs(tt+An)<.1&&Math.abs(se+We+un-3)<.1)return this.set(1,0,0,0),this;l=Math.PI;const Vn=(se+1)/2,nr=(We+1)/2,ii=(un+1)/2,pi=(xe+Ve)/4,Bi=(Ne+Ot)/4,mi=(tt+An)/4;return Vn>nr&&Vn>ii?Vn<.01?(h=0,p=.707106781,y=.707106781):(h=Math.sqrt(Vn),p=pi/h,y=Bi/h):nr>ii?nr<.01?(h=.707106781,p=0,y=.707106781):(p=Math.sqrt(nr),h=pi/p,y=mi/p):ii<.01?(h=.707106781,p=.707106781,y=0):(y=Math.sqrt(ii),h=Bi/y,p=mi/y),this.set(h,p,y,l),this}let Un=Math.sqrt((An-tt)*(An-tt)+(Ne-Ot)*(Ne-Ot)+(Ve-xe)*(Ve-xe));return Math.abs(Un)<.001&&(Un=1),this.x=(An-tt)/Un,this.y=(Ne-Ot)/Un,this.z=(Ve-xe)/Un,this.w=Math.acos((se+We+un-1)/2),this}setFromMatrixPosition(r){const l=r.elements;return this.x=l[12],this.y=l[13],this.z=l[14],this.w=l[15],this}min(r){return this.x=Math.min(this.x,r.x),this.y=Math.min(this.y,r.y),this.z=Math.min(this.z,r.z),this.w=Math.min(this.w,r.w),this}max(r){return this.x=Math.max(this.x,r.x),this.y=Math.max(this.y,r.y),this.z=Math.max(this.z,r.z),this.w=Math.max(this.w,r.w),this}clamp(r,l){return this.x=ki(this.x,r.x,l.x),this.y=ki(this.y,r.y,l.y),this.z=ki(this.z,r.z,l.z),this.w=ki(this.w,r.w,l.w),this}clampScalar(r,l){return this.x=ki(this.x,r,l),this.y=ki(this.y,r,l),this.z=ki(this.z,r,l),this.w=ki(this.w,r,l),this}clampLength(r,l){const h=this.length();return this.divideScalar(h||1).multiplyScalar(ki(h,r,l))}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(r){return this.x*r.x+this.y*r.y+this.z*r.z+this.w*r.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(r){return this.normalize().multiplyScalar(r)}lerp(r,l){return this.x+=(r.x-this.x)*l,this.y+=(r.y-this.y)*l,this.z+=(r.z-this.z)*l,this.w+=(r.w-this.w)*l,this}lerpVectors(r,l,h){return this.x=r.x+(l.x-r.x)*h,this.y=r.y+(l.y-r.y)*h,this.z=r.z+(l.z-r.z)*h,this.w=r.w+(l.w-r.w)*h,this}equals(r){return r.x===this.x&&r.y===this.y&&r.z===this.z&&r.w===this.w}fromArray(r,l=0){return this.x=r[l],this.y=r[l+1],this.z=r[l+2],this.w=r[l+3],this}toArray(r=[],l=0){return r[l]=this.x,r[l+1]=this.y,r[l+2]=this.z,r[l+3]=this.w,r}fromBufferAttribute(r,l){return this.x=r.getX(l),this.y=r.getY(l),this.z=r.getZ(l),this.w=r.getW(l),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}}class wi extends null{constructor(r=1,l=1,h={}){super(),h=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:vr,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},h),this.isRenderTarget=!0,this.width=r,this.height=l,this.depth=h.depth,this.scissor=new ai(0,0,r,l),this.scissorTest=!1,this.viewport=new ai(0,0,r,l);const p={width:r,height:l,depth:h.depth},y=new ri(p);this.textures=[];const T=h.count;for(let O=0;O1);this.dispose()}this.viewport.set(0,0,r,l),this.scissor.set(0,0,r,l)}clone(){return new this.constructor().copy(this)}copy(r){this.width=r.width,this.height=r.height,this.depth=r.depth,this.scissor.copy(r.scissor),this.scissorTest=r.scissorTest,this.viewport.copy(r.viewport),this.textures.length=0;for(let l=0,h=r.textures.length;l=this.min.x&&r.x<=this.max.x&&r.y>=this.min.y&&r.y<=this.max.y&&r.z>=this.min.z&&r.z<=this.max.z}containsBox(r){return this.min.x<=r.min.x&&r.max.x<=this.max.x&&this.min.y<=r.min.y&&r.max.y<=this.max.y&&this.min.z<=r.min.z&&r.max.z<=this.max.z}getParameter(r,l){return l.set((r.x-this.min.x)/(this.max.x-this.min.x),(r.y-this.min.y)/(this.max.y-this.min.y),(r.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(r){return r.max.x>=this.min.x&&r.min.x<=this.max.x&&r.max.y>=this.min.y&&r.min.y<=this.max.y&&r.max.z>=this.min.z&&r.min.z<=this.max.z}intersectsSphere(r){return this.clampPoint(r.center,Ns),Ns.distanceToSquared(r.center)<=r.radius*r.radius}intersectsPlane(r){let l,h;return r.normal.x>0?(l=r.normal.x*this.min.x,h=r.normal.x*this.max.x):(l=r.normal.x*this.max.x,h=r.normal.x*this.min.x),r.normal.y>0?(l+=r.normal.y*this.min.y,h+=r.normal.y*this.max.y):(l+=r.normal.y*this.max.y,h+=r.normal.y*this.min.y),r.normal.z>0?(l+=r.normal.z*this.min.z,h+=r.normal.z*this.max.z):(l+=r.normal.z*this.max.z,h+=r.normal.z*this.min.z),l<=-r.constant&&h>=-r.constant}intersectsTriangle(r){if(this.isEmpty())return!1;this.getCenter(fe),Te.subVectors(this.max,fe),_a.subVectors(r.a,fe),Sa.subVectors(r.b,fe),oe.subVectors(r.c,fe),re.subVectors(Sa,_a),Y.subVectors(oe,Sa),J.subVectors(_a,oe);let l=[0,-re.z,re.y,0,-Y.z,Y.y,0,-J.z,J.y,re.z,0,-re.x,Y.z,0,-Y.x,J.z,0,-J.x,-re.y,re.x,0,-Y.y,Y.x,0,-J.y,J.x,0];return!Xe(l,_a,Sa,oe,Te)||(l=[1,0,0,0,1,0,0,0,1],!Xe(l,_a,Sa,oe,Te))?!1:(De.crossVectors(re,Y),l=[De.x,De.y,De.z],Xe(l,_a,Sa,oe,Te))}clampPoint(r,l){return l.copy(r).clamp(this.min,this.max)}distanceToPoint(r){return this.clampPoint(r,Ns).distanceTo(r)}getBoundingSphere(r){return this.isEmpty()?r.makeEmpty():(this.getCenter(r.center),r.radius=this.getSize(Ns).length()*.5),r}intersect(r){return this.min.max(r.min),this.max.min(r.max),this.isEmpty()&&this.makeEmpty(),this}union(r){return this.min.min(r.min),this.max.max(r.max),this}applyMatrix4(r){return this.isEmpty()?this:(Ni[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(r),Ni[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(r),Ni[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(r),Ni[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(r),Ni[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(r),Ni[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(r),Ni[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(r),Ni[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(r),this.setFromPoints(Ni),this)}translate(r){return this.min.add(r),this.max.add(r),this}equals(r){return r.min.equals(this.min)&&r.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(r){return this.min.fromArray(r.min),this.max.fromArray(r.max),this}}const Ni=[new kn,new kn,new kn,new kn,new kn,new kn,new kn,new kn],Ns=new kn,Os=new zi,_a=new kn,Sa=new kn,oe=new kn,re=new kn,Y=new kn,J=new kn,fe=new kn,Te=new kn,De=new kn,Le=new kn;function Xe(ue,r,l,h,p){for(let y=0,T=ue.length-3;y<=T;y+=3){Le.fromArray(ue,y);const O=p.x*Math.abs(Le.x)+p.y*Math.abs(Le.y)+p.z*Math.abs(Le.z),te=r.dot(Le),se=l.dot(Le),xe=h.dot(Le);if(Math.max(-Math.max(te,se,xe),Math.min(te,se,xe))>O)return!1}return!0}const mt=new zi,Kt=new kn,nn=new kn;class gn{constructor(r=new kn,l=-1){this.isSphere=!0,this.center=r,this.radius=l}set(r,l){return this.center.copy(r),this.radius=l,this}setFromPoints(r,l){const h=this.center;l!==void 0?h.copy(l):mt.setFromPoints(r).getCenter(h);let p=0;for(let y=0,T=r.length;ythis.radius*this.radius&&(l.sub(this.center).normalize(),l.multiplyScalar(this.radius).add(this.center)),l}getBoundingBox(r){return this.isEmpty()?(r.makeEmpty(),r):(r.set(this.center,this.center),r.expandByScalar(this.radius),r)}applyMatrix4(r){return this.center.applyMatrix4(r),this.radius=this.radius*r.getMaxScaleOnAxis(),this}translate(r){return this.center.add(r),this}expandByPoint(r){if(this.isEmpty())return this.center.copy(r),this.radius=0,this;Kt.subVectors(r,this.center);const l=Kt.lengthSq();if(l>this.radius*this.radius){const h=Math.sqrt(l),p=(h-this.radius)*.5;this.center.addScaledVector(Kt,p/h),this.radius+=p}return this}union(r){return r.isEmpty()?this:this.isEmpty()?(this.copy(r),this):(this.center.equals(r.center)===!0?this.radius=Math.max(this.radius,r.radius):(nn.subVectors(r.center,this.center).setLength(r.radius),this.expandByPoint(Kt.copy(r.center).add(nn)),this.expandByPoint(Kt.copy(r.center).sub(nn))),this)}equals(r){return r.center.equals(this.center)&&r.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(r){return this.radius=r.radius,this.center.fromArray(r.center),this}}const Nn=new kn,$n=new kn,Er=new kn,mr=new kn,ti=new kn,jr=new kn,ui=new kn;class gi{constructor(r=new kn,l=new kn(0,0,-1)){this.origin=r,this.direction=l}set(r,l){return this.origin.copy(r),this.direction.copy(l),this}copy(r){return this.origin.copy(r.origin),this.direction.copy(r.direction),this}at(r,l){return l.copy(this.origin).addScaledVector(this.direction,r)}lookAt(r){return this.direction.copy(r).sub(this.origin).normalize(),this}recast(r){return this.origin.copy(this.at(r,Nn)),this}closestPointToPoint(r,l){l.subVectors(r,this.origin);const h=l.dot(this.direction);return h<0?l.copy(this.origin):l.copy(this.origin).addScaledVector(this.direction,h)}distanceToPoint(r){return Math.sqrt(this.distanceSqToPoint(r))}distanceSqToPoint(r){const l=Nn.subVectors(r,this.origin).dot(this.direction);return l<0?this.origin.distanceToSquared(r):(Nn.copy(this.origin).addScaledVector(this.direction,l),Nn.distanceToSquared(r))}distanceSqToSegment(r,l,h,p){$n.copy(r).add(l).multiplyScalar(.5),Er.copy(l).sub(r).normalize(),mr.copy(this.origin).sub($n);const y=r.distanceTo(l)*.5,T=-this.direction.dot(Er),O=mr.dot(this.direction),te=-mr.dot(Er),se=mr.lengthSq(),xe=Math.abs(1-T*T);let Ne,Ve,We,tt;if(xe>0)if(Ne=T*te-O,Ve=T*O-te,tt=y*xe,Ne>=0)if(Ve>=-tt)if(Ve<=tt){const Ot=1/xe;Ne*=Ot,Ve*=Ot,We=Ne*(Ne+T*Ve+2*O)+Ve*(T*Ne+Ve+2*te)+se}else Ve=y,Ne=Math.max(0,-(T*Ve+O)),We=-Ne*Ne+Ve*(Ve+2*te)+se;else Ve=-y,Ne=Math.max(0,-(T*Ve+O)),We=-Ne*Ne+Ve*(Ve+2*te)+se;else Ve<=-tt?(Ne=Math.max(0,-(-T*y+O)),Ve=Ne>0?-y:Math.min(Math.max(-y,-te),y),We=-Ne*Ne+Ve*(Ve+2*te)+se):Ve<=tt?(Ne=0,Ve=Math.min(Math.max(-y,-te),y),We=Ve*(Ve+2*te)+se):(Ne=Math.max(0,-(T*y+O)),Ve=Ne>0?y:Math.min(Math.max(-y,-te),y),We=-Ne*Ne+Ve*(Ve+2*te)+se);else Ve=T>0?-y:y,Ne=Math.max(0,-(T*Ve+O)),We=-Ne*Ne+Ve*(Ve+2*te)+se;return h&&h.copy(this.origin).addScaledVector(this.direction,Ne),p&&p.copy($n).addScaledVector(Er,Ve),We}intersectSphere(r,l){Nn.subVectors(r.center,this.origin);const h=Nn.dot(this.direction),p=Nn.dot(Nn)-h*h,y=r.radius*r.radius;if(p>y)return null;const T=Math.sqrt(y-p),O=h-T,te=h+T;return te<0?null:O<0?this.at(te,l):this.at(O,l)}intersectsSphere(r){return r.radius<0?!1:this.distanceSqToPoint(r.center)<=r.radius*r.radius}distanceToPlane(r){const l=r.normal.dot(this.direction);if(l===0)return r.distanceToPoint(this.origin)===0?0:null;const h=-(this.origin.dot(r.normal)+r.constant)/l;return h>=0?h:null}intersectPlane(r,l){const h=this.distanceToPlane(r);return h===null?null:this.at(h,l)}intersectsPlane(r){const l=r.distanceToPoint(this.origin);return l===0||r.normal.dot(this.direction)*l<0}intersectBox(r,l){let h,p,y,T,O,te;const se=1/this.direction.x,xe=1/this.direction.y,Ne=1/this.direction.z,Ve=this.origin;return se>=0?(h=(r.min.x-Ve.x)*se,p=(r.max.x-Ve.x)*se):(h=(r.max.x-Ve.x)*se,p=(r.min.x-Ve.x)*se),xe>=0?(y=(r.min.y-Ve.y)*xe,T=(r.max.y-Ve.y)*xe):(y=(r.max.y-Ve.y)*xe,T=(r.min.y-Ve.y)*xe),h>T||y>p||((y>h||isNaN(h))&&(h=y),(T=0?(O=(r.min.z-Ve.z)*Ne,te=(r.max.z-Ve.z)*Ne):(O=(r.max.z-Ve.z)*Ne,te=(r.min.z-Ve.z)*Ne),h>te||O>p)||((O>h||h!==h)&&(h=O),(te=0?h:p,l)}intersectsBox(r){return this.intersectBox(r,Nn)!==null}intersectTriangle(r,l,h,p,y){ti.subVectors(l,r),jr.subVectors(h,r),ui.crossVectors(ti,jr);let T=this.direction.dot(ui),O;if(T>0){if(p)return null;O=1}else if(T<0)O=-1,T=-T;else return null;mr.subVectors(this.origin,r);const te=O*this.direction.dot(jr.crossVectors(mr,jr));if(te<0)return null;const se=O*this.direction.dot(ti.cross(mr));if(se<0||te+se>T)return null;const xe=-O*mr.dot(ui);return xe<0?null:this.at(xe/T,y)}applyMatrix4(r){return this.origin.applyMatrix4(r),this.direction.transformDirection(r),this}equals(r){return r.origin.equals(this.origin)&&r.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class oi{constructor(r,l,h,p,y,T,O,te,se,xe,Ne,Ve,We,tt,Ot,An){oi.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],r!==void 0&&this.set(r,l,h,p,y,T,O,te,se,xe,Ne,Ve,We,tt,Ot,An)}set(r,l,h,p,y,T,O,te,se,xe,Ne,Ve,We,tt,Ot,An){const un=this.elements;return un[0]=r,un[4]=l,un[8]=h,un[12]=p,un[1]=y,un[5]=T,un[9]=O,un[13]=te,un[2]=se,un[6]=xe,un[10]=Ne,un[14]=Ve,un[3]=We,un[7]=tt,un[11]=Ot,un[15]=An,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 oi().fromArray(this.elements)}copy(r){const l=this.elements,h=r.elements;return l[0]=h[0],l[1]=h[1],l[2]=h[2],l[3]=h[3],l[4]=h[4],l[5]=h[5],l[6]=h[6],l[7]=h[7],l[8]=h[8],l[9]=h[9],l[10]=h[10],l[11]=h[11],l[12]=h[12],l[13]=h[13],l[14]=h[14],l[15]=h[15],this}copyPosition(r){const l=this.elements,h=r.elements;return l[12]=h[12],l[13]=h[13],l[14]=h[14],this}setFromMatrix3(r){const l=r.elements;return this.set(l[0],l[3],l[6],0,l[1],l[4],l[7],0,l[2],l[5],l[8],0,0,0,0,1),this}extractBasis(r,l,h){return r.setFromMatrixColumn(this,0),l.setFromMatrixColumn(this,1),h.setFromMatrixColumn(this,2),this}makeBasis(r,l,h){return this.set(r.x,l.x,h.x,0,r.y,l.y,h.y,0,r.z,l.z,h.z,0,0,0,0,1),this}extractRotation(r){const l=this.elements,h=r.elements,p=1/ts.setFromMatrixColumn(r,0).length(),y=1/ts.setFromMatrixColumn(r,1).length(),T=1/ts.setFromMatrixColumn(r,2).length();return l[0]=h[0]*p,l[1]=h[1]*p,l[2]=h[2]*p,l[3]=0,l[4]=h[4]*y,l[5]=h[5]*y,l[6]=h[6]*y,l[7]=0,l[8]=h[8]*T,l[9]=h[9]*T,l[10]=h[10]*T,l[11]=0,l[12]=0,l[13]=0,l[14]=0,l[15]=1,this}makeRotationFromEuler(r){const l=this.elements,h=r.x,p=r.y,y=r.z,T=Math.cos(h),O=Math.sin(h),te=Math.cos(p),se=Math.sin(p),xe=Math.cos(y),Ne=Math.sin(y);if(r.order==="XYZ"){const Ve=T*xe,We=T*Ne,tt=O*xe,Ot=O*Ne;l[0]=te*xe,l[4]=-te*Ne,l[8]=se,l[1]=We+tt*se,l[5]=Ve-Ot*se,l[9]=-O*te,l[2]=Ot-Ve*se,l[6]=tt+We*se,l[10]=T*te}else if(r.order==="YXZ"){const Ve=te*xe,We=te*Ne,tt=se*xe,Ot=se*Ne;l[0]=Ve+Ot*O,l[4]=tt*O-We,l[8]=T*se,l[1]=T*Ne,l[5]=T*xe,l[9]=-O,l[2]=We*O-tt,l[6]=Ot+Ve*O,l[10]=T*te}else if(r.order==="ZXY"){const Ve=te*xe,We=te*Ne,tt=se*xe,Ot=se*Ne;l[0]=Ve-Ot*O,l[4]=-T*Ne,l[8]=tt+We*O,l[1]=We+tt*O,l[5]=T*xe,l[9]=Ot-Ve*O,l[2]=-T*se,l[6]=O,l[10]=T*te}else if(r.order==="ZYX"){const Ve=T*xe,We=T*Ne,tt=O*xe,Ot=O*Ne;l[0]=te*xe,l[4]=tt*se-We,l[8]=Ve*se+Ot,l[1]=te*Ne,l[5]=Ot*se+Ve,l[9]=We*se-tt,l[2]=-se,l[6]=O*te,l[10]=T*te}else if(r.order==="YZX"){const Ve=T*te,We=T*se,tt=O*te,Ot=O*se;l[0]=te*xe,l[4]=Ot-Ve*Ne,l[8]=tt*Ne+We,l[1]=Ne,l[5]=T*xe,l[9]=-O*xe,l[2]=-se*xe,l[6]=We*Ne+tt,l[10]=Ve-Ot*Ne}else if(r.order==="XZY"){const Ve=T*te,We=T*se,tt=O*te,Ot=O*se;l[0]=te*xe,l[4]=-Ne,l[8]=se*xe,l[1]=Ve*Ne+Ot,l[5]=T*xe,l[9]=We*Ne-tt,l[2]=tt*Ne-We,l[6]=O*xe,l[10]=Ot*Ne+Ve}return l[3]=0,l[7]=0,l[11]=0,l[12]=0,l[13]=0,l[14]=0,l[15]=1,this}makeRotationFromQuaternion(r){return this.compose(Ds,r,Ba)}lookAt(r,l,h){const p=this.elements;return aa.subVectors(r,l),aa.lengthSq()===0&&(aa.z=1),aa.normalize(),Ka.crossVectors(h,aa),Ka.lengthSq()===0&&(Math.abs(h.z)===1?aa.x+=1e-4:aa.z+=1e-4,aa.normalize(),Ka.crossVectors(h,aa)),Ka.normalize(),xo.crossVectors(aa,Ka),p[0]=Ka.x,p[4]=xo.x,p[8]=aa.x,p[1]=Ka.y,p[5]=xo.y,p[9]=aa.y,p[2]=Ka.z,p[6]=xo.z,p[10]=aa.z,this}multiply(r){return this.multiplyMatrices(this,r)}premultiply(r){return this.multiplyMatrices(r,this)}multiplyMatrices(r,l){const h=r.elements,p=l.elements,y=this.elements,T=h[0],O=h[4],te=h[8],se=h[12],xe=h[1],Ne=h[5],Ve=h[9],We=h[13],tt=h[2],Ot=h[6],An=h[10],un=h[14],Un=h[3],Vn=h[7],nr=h[11],ii=h[15],pi=p[0],Bi=p[4],mi=p[8],ls=p[12],ys=p[1],Da=p[5],Mo=p[9],Ro=p[13],du=p[2],ru=p[6],Zc=p[10],Ih=p[14],uA=p[3],Ac=p[7],Uc=p[11],tc=p[15];return y[0]=T*pi+O*ys+te*du+se*uA,y[4]=T*Bi+O*Da+te*ru+se*Ac,y[8]=T*mi+O*Mo+te*Zc+se*Uc,y[12]=T*ls+O*Ro+te*Ih+se*tc,y[1]=xe*pi+Ne*ys+Ve*du+We*uA,y[5]=xe*Bi+Ne*Da+Ve*ru+We*Ac,y[9]=xe*mi+Ne*Mo+Ve*Zc+We*Uc,y[13]=xe*ls+Ne*Ro+Ve*Ih+We*tc,y[2]=tt*pi+Ot*ys+An*du+un*uA,y[6]=tt*Bi+Ot*Da+An*ru+un*Ac,y[10]=tt*mi+Ot*Mo+An*Zc+un*Uc,y[14]=tt*ls+Ot*Ro+An*Ih+un*tc,y[3]=Un*pi+Vn*ys+nr*du+ii*uA,y[7]=Un*Bi+Vn*Da+nr*ru+ii*Ac,y[11]=Un*mi+Vn*Mo+nr*Zc+ii*Uc,y[15]=Un*ls+Vn*Ro+nr*Ih+ii*tc,this}multiplyScalar(r){const l=this.elements;return l[0]*=r,l[4]*=r,l[8]*=r,l[12]*=r,l[1]*=r,l[5]*=r,l[9]*=r,l[13]*=r,l[2]*=r,l[6]*=r,l[10]*=r,l[14]*=r,l[3]*=r,l[7]*=r,l[11]*=r,l[15]*=r,this}determinant(){const r=this.elements,l=r[0],h=r[4],p=r[8],y=r[12],T=r[1],O=r[5],te=r[9],se=r[13],xe=r[2],Ne=r[6],Ve=r[10],We=r[14],tt=r[3],Ot=r[7],An=r[11],un=r[15];return tt*(+y*te*Ne-p*se*Ne-y*O*Ve+h*se*Ve+p*O*We-h*te*We)+Ot*(+l*te*We-l*se*Ve+y*T*Ve-p*T*We+p*se*xe-y*te*xe)+An*(+l*se*Ne-l*O*We-y*T*Ne+h*T*We+y*O*xe-h*se*xe)+un*(-p*O*xe-l*te*Ne+l*O*Ve+p*T*Ne-h*T*Ve+h*te*xe)}transpose(){const r=this.elements;let l;return l=r[1],r[1]=r[4],r[4]=l,l=r[2],r[2]=r[8],r[8]=l,l=r[6],r[6]=r[9],r[9]=l,l=r[3],r[3]=r[12],r[12]=l,l=r[7],r[7]=r[13],r[13]=l,l=r[11],r[11]=r[14],r[14]=l,this}setPosition(r,l,h){const p=this.elements;return r.isVector3?(p[12]=r.x,p[13]=r.y,p[14]=r.z):(p[12]=r,p[13]=l,p[14]=h),this}invert(){const r=this.elements,l=r[0],h=r[1],p=r[2],y=r[3],T=r[4],O=r[5],te=r[6],se=r[7],xe=r[8],Ne=r[9],Ve=r[10],We=r[11],tt=r[12],Ot=r[13],An=r[14],un=r[15],Un=Ne*An*se-Ot*Ve*se+Ot*te*We-O*An*We-Ne*te*un+O*Ve*un,Vn=tt*Ve*se-xe*An*se-tt*te*We+T*An*We+xe*te*un-T*Ve*un,nr=xe*Ot*se-tt*Ne*se+tt*O*We-T*Ot*We-xe*O*un+T*Ne*un,ii=tt*Ne*te-xe*Ot*te-tt*O*Ve+T*Ot*Ve+xe*O*An-T*Ne*An,pi=l*Un+h*Vn+p*nr+y*ii;if(pi===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const Bi=1/pi;return r[0]=Un*Bi,r[1]=(Ot*Ve*y-Ne*An*y-Ot*p*We+h*An*We+Ne*p*un-h*Ve*un)*Bi,r[2]=(O*An*y-Ot*te*y+Ot*p*se-h*An*se-O*p*un+h*te*un)*Bi,r[3]=(Ne*te*y-O*Ve*y-Ne*p*se+h*Ve*se+O*p*We-h*te*We)*Bi,r[4]=Vn*Bi,r[5]=(xe*An*y-tt*Ve*y+tt*p*We-l*An*We-xe*p*un+l*Ve*un)*Bi,r[6]=(tt*te*y-T*An*y-tt*p*se+l*An*se+T*p*un-l*te*un)*Bi,r[7]=(T*Ve*y-xe*te*y+xe*p*se-l*Ve*se-T*p*We+l*te*We)*Bi,r[8]=nr*Bi,r[9]=(tt*Ne*y-xe*Ot*y-tt*h*We+l*Ot*We+xe*h*un-l*Ne*un)*Bi,r[10]=(T*Ot*y-tt*O*y+tt*h*se-l*Ot*se-T*h*un+l*O*un)*Bi,r[11]=(xe*O*y-T*Ne*y-xe*h*se+l*Ne*se+T*h*We-l*O*We)*Bi,r[12]=ii*Bi,r[13]=(xe*Ot*p-tt*Ne*p+tt*h*Ve-l*Ot*Ve-xe*h*An+l*Ne*An)*Bi,r[14]=(tt*O*p-T*Ot*p-tt*h*te+l*Ot*te+T*h*An-l*O*An)*Bi,r[15]=(T*Ne*p-xe*O*p+xe*h*te-l*Ne*te-T*h*Ve+l*O*Ve)*Bi,this}scale(r){const l=this.elements,h=r.x,p=r.y,y=r.z;return l[0]*=h,l[4]*=p,l[8]*=y,l[1]*=h,l[5]*=p,l[9]*=y,l[2]*=h,l[6]*=p,l[10]*=y,l[3]*=h,l[7]*=p,l[11]*=y,this}getMaxScaleOnAxis(){const r=this.elements,l=r[0]*r[0]+r[1]*r[1]+r[2]*r[2],h=r[4]*r[4]+r[5]*r[5]+r[6]*r[6],p=r[8]*r[8]+r[9]*r[9]+r[10]*r[10];return Math.sqrt(Math.max(l,h,p))}makeTranslation(r,l,h){return r.isVector3?this.set(1,0,0,r.x,0,1,0,r.y,0,0,1,r.z,0,0,0,1):this.set(1,0,0,r,0,1,0,l,0,0,1,h,0,0,0,1),this}makeRotationX(r){const l=Math.cos(r),h=Math.sin(r);return this.set(1,0,0,0,0,l,-h,0,0,h,l,0,0,0,0,1),this}makeRotationY(r){const l=Math.cos(r),h=Math.sin(r);return this.set(l,0,h,0,0,1,0,0,-h,0,l,0,0,0,0,1),this}makeRotationZ(r){const l=Math.cos(r),h=Math.sin(r);return this.set(l,-h,0,0,h,l,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(r,l){const h=Math.cos(l),p=Math.sin(l),y=1-h,T=r.x,O=r.y,te=r.z,se=y*T,xe=y*O;return this.set(se*T+h,se*O-p*te,se*te+p*O,0,se*O+p*te,xe*O+h,xe*te-p*T,0,se*te-p*O,xe*te+p*T,y*te*te+h,0,0,0,0,1),this}makeScale(r,l,h){return this.set(r,0,0,0,0,l,0,0,0,0,h,0,0,0,0,1),this}makeShear(r,l,h,p,y,T){return this.set(1,h,y,0,r,1,T,0,l,p,1,0,0,0,0,1),this}compose(r,l,h){const p=this.elements,y=l._x,T=l._y,O=l._z,te=l._w,se=y+y,xe=T+T,Ne=O+O,Ve=y*se,We=y*xe,tt=y*Ne,Ot=T*xe,An=T*Ne,un=O*Ne,Un=te*se,Vn=te*xe,nr=te*Ne,ii=h.x,pi=h.y,Bi=h.z;return p[0]=(1-(Ot+un))*ii,p[1]=(We+nr)*ii,p[2]=(tt-Vn)*ii,p[3]=0,p[4]=(We-nr)*pi,p[5]=(1-(Ve+un))*pi,p[6]=(An+Un)*pi,p[7]=0,p[8]=(tt+Vn)*Bi,p[9]=(An-Un)*Bi,p[10]=(1-(Ve+Ot))*Bi,p[11]=0,p[12]=r.x,p[13]=r.y,p[14]=r.z,p[15]=1,this}decompose(r,l,h){const p=this.elements;let y=ts.set(p[0],p[1],p[2]).length();const T=ts.set(p[4],p[5],p[6]).length(),O=ts.set(p[8],p[9],p[10]).length();this.determinant()<0&&(y=-y),r.x=p[12],r.y=p[13],r.z=p[14],fs.copy(this);const se=1/y,xe=1/T,Ne=1/O;return fs.elements[0]*=se,fs.elements[1]*=se,fs.elements[2]*=se,fs.elements[4]*=xe,fs.elements[5]*=xe,fs.elements[6]*=xe,fs.elements[8]*=Ne,fs.elements[9]*=Ne,fs.elements[10]*=Ne,l.setFromRotationMatrix(fs),h.x=y,h.y=T,h.z=O,this}makePerspective(r,l,h,p,y,T,O=Cu,te=!1){const se=this.elements,xe=2*y/(l-r),Ne=2*y/(h-p),Ve=(l+r)/(l-r),We=(h+p)/(h-p);let tt,Ot;if(te)tt=y/(T-y),Ot=T*y/(T-y);else if(O===Cu)tt=-(T+y)/(T-y),Ot=-2*T*y/(T-y);else if(O===zc)tt=-T/(T-y),Ot=-T*y/(T-y);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+O);return se[0]=xe,se[4]=0,se[8]=Ve,se[12]=0,se[1]=0,se[5]=Ne,se[9]=We,se[13]=0,se[2]=0,se[6]=0,se[10]=tt,se[14]=Ot,se[3]=0,se[7]=0,se[11]=-1,se[15]=0,this}makeOrthographic(r,l,h,p,y,T,O=Cu,te=!1){const se=this.elements,xe=2/(l-r),Ne=2/(h-p),Ve=-(l+r)/(l-r),We=-(h+p)/(h-p);let tt,Ot;if(te)tt=1/(T-y),Ot=T/(T-y);else if(O===Cu)tt=-2/(T-y),Ot=-(T+y)/(T-y);else if(O===zc)tt=-1/(T-y),Ot=-y/(T-y);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+O);return se[0]=xe,se[4]=0,se[8]=0,se[12]=Ve,se[1]=0,se[5]=Ne,se[9]=0,se[13]=We,se[2]=0,se[6]=0,se[10]=tt,se[14]=Ot,se[3]=0,se[7]=0,se[11]=0,se[15]=1,this}equals(r){const l=this.elements,h=r.elements;for(let p=0;p<16;p++)if(l[p]!==h[p])return!1;return!0}fromArray(r,l=0){for(let h=0;h<16;h++)this.elements[h]=r[h+l];return this}toArray(r=[],l=0){const h=this.elements;return r[l]=h[0],r[l+1]=h[1],r[l+2]=h[2],r[l+3]=h[3],r[l+4]=h[4],r[l+5]=h[5],r[l+6]=h[6],r[l+7]=h[7],r[l+8]=h[8],r[l+9]=h[9],r[l+10]=h[10],r[l+11]=h[11],r[l+12]=h[12],r[l+13]=h[13],r[l+14]=h[14],r[l+15]=h[15],r}}const ts=new kn,fs=new oi,Ds=new kn(0,0,0),Ba=new kn(1,1,1),Ka=new kn,xo=new kn,aa=new kn,di=new oi,Ma=new Du;class Rs{constructor(r=0,l=0,h=0,p=Rs.DEFAULT_ORDER){this.isEuler=!0,this._x=r,this._y=l,this._z=h,this._order=p}get x(){return this._x}set x(r){this._x=r,this._onChangeCallback()}get y(){return this._y}set y(r){this._y=r,this._onChangeCallback()}get z(){return this._z}set z(r){this._z=r,this._onChangeCallback()}get order(){return this._order}set order(r){this._order=r,this._onChangeCallback()}set(r,l,h,p=this._order){return this._x=r,this._y=l,this._z=h,this._order=p,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(r){return this._x=r._x,this._y=r._y,this._z=r._z,this._order=r._order,this._onChangeCallback(),this}setFromRotationMatrix(r,l=this._order,h=!0){const p=r.elements,y=p[0],T=p[4],O=p[8],te=p[1],se=p[5],xe=p[9],Ne=p[2],Ve=p[6],We=p[10];switch(l){case"XYZ":this._y=Math.asin(ki(O,-1,1)),Math.abs(O)<.9999999?(this._x=Math.atan2(-xe,We),this._z=Math.atan2(-T,y)):(this._x=Math.atan2(Ve,se),this._z=0);break;case"YXZ":this._x=Math.asin(-ki(xe,-1,1)),Math.abs(xe)<.9999999?(this._y=Math.atan2(O,We),this._z=Math.atan2(te,se)):(this._y=Math.atan2(-Ne,y),this._z=0);break;case"ZXY":this._x=Math.asin(ki(Ve,-1,1)),Math.abs(Ve)<.9999999?(this._y=Math.atan2(-Ne,We),this._z=Math.atan2(-T,se)):(this._y=0,this._z=Math.atan2(te,y));break;case"ZYX":this._y=Math.asin(-ki(Ne,-1,1)),Math.abs(Ne)<.9999999?(this._x=Math.atan2(Ve,We),this._z=Math.atan2(te,y)):(this._x=0,this._z=Math.atan2(-T,se));break;case"YZX":this._z=Math.asin(ki(te,-1,1)),Math.abs(te)<.9999999?(this._x=Math.atan2(-xe,se),this._y=Math.atan2(-Ne,y)):(this._x=0,this._y=Math.atan2(O,We));break;case"XZY":this._z=Math.asin(-ki(T,-1,1)),Math.abs(T)<.9999999?(this._x=Math.atan2(Ve,se),this._y=Math.atan2(O,y)):(this._x=Math.atan2(-xe,We),this._y=0);break;default:na("Euler: .setFromRotationMatrix() encountered an unknown order: "+l)}return this._order=l,h===!0&&this._onChangeCallback(),this}setFromQuaternion(r,l,h){return di.makeRotationFromQuaternion(r),this.setFromRotationMatrix(di,l,h)}setFromVector3(r,l=this._order){return this.set(r.x,r.y,r.z,l)}reorder(r){return Ma.setFromEuler(this),this.setFromQuaternion(Ma,r)}equals(r){return r._x===this._x&&r._y===this._y&&r._z===this._z&&r._order===this._order}fromArray(r){return this._x=r[0],this._y=r[1],this._z=r[2],r[3]!==void 0&&(this._order=r[3]),this._onChangeCallback(),this}toArray(r=[],l=0){return r[l]=this._x,r[l+1]=this._y,r[l+2]=this._z,r[l+3]=this._order,r}_onChange(r){return this._onChangeCallback=r,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Rs.DEFAULT_ORDER="XYZ";class lo{constructor(){this.mask=1}set(r){this.mask=(1<>>0}enable(r){this.mask|=1<1){for(let l=0;l1){for(let h=0;h0&&(p.userData=this.userData),p.layers=this.layers.mask,p.matrix=this.matrix.toArray(),p.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(p.matrixAutoUpdate=!1),this.isInstancedMesh&&(p.type="InstancedMesh",p.count=this.count,p.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(p.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(p.type="BatchedMesh",p.perObjectFrustumCulled=this.perObjectFrustumCulled,p.sortObjects=this.sortObjects,p.drawRanges=this._drawRanges,p.reservedRanges=this._reservedRanges,p.geometryInfo=this._geometryInfo.map(O=>fd(rl({},O),{boundingBox:O.boundingBox?O.boundingBox.toJSON():void 0,boundingSphere:O.boundingSphere?O.boundingSphere.toJSON():void 0})),p.instanceInfo=this._instanceInfo.map(O=>rl({},O)),p.availableInstanceIds=this._availableInstanceIds.slice(),p.availableGeometryIds=this._availableGeometryIds.slice(),p.nextIndexStart=this._nextIndexStart,p.nextVertexStart=this._nextVertexStart,p.geometryCount=this._geometryCount,p.maxInstanceCount=this._maxInstanceCount,p.maxVertexCount=this._maxVertexCount,p.maxIndexCount=this._maxIndexCount,p.geometryInitialized=this._geometryInitialized,p.matricesTexture=this._matricesTexture.toJSON(r),p.indirectTexture=this._indirectTexture.toJSON(r),this._colorsTexture!==null&&(p.colorsTexture=this._colorsTexture.toJSON(r)),this.boundingSphere!==null&&(p.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(p.boundingBox=this.boundingBox.toJSON()));function y(O,te){return O[te.uuid]===void 0&&(O[te.uuid]=te.toJSON(r)),te.uuid}if(this.isScene)this.background&&(this.background.isColor?p.background=this.background.toJSON():this.background.isTexture&&(p.background=this.background.toJSON(r).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(p.environment=this.environment.toJSON(r).uuid);else if(this.isMesh||this.isLine||this.isPoints){p.geometry=y(r.geometries,this.geometry);const O=this.geometry.parameters;if(O!==void 0&&O.shapes!==void 0){const te=O.shapes;if(Array.isArray(te))for(let se=0,xe=te.length;se0){p.children=[];for(let O=0;O0){p.animations=[];for(let O=0;O0&&(h.geometries=O),te.length>0&&(h.materials=te),se.length>0&&(h.textures=se),xe.length>0&&(h.images=xe),Ne.length>0&&(h.shapes=Ne),Ve.length>0&&(h.skeletons=Ve),We.length>0&&(h.animations=We),tt.length>0&&(h.nodes=tt)}return h.object=p,h;function T(O){const te=[];for(const se in O){const xe=O[se];delete xe.metadata,te.push(xe)}return te}}clone(r){return new this.constructor().copy(this,r)}copy(r,l=!0){if(this.name=r.name,this.up.copy(r.up),this.position.copy(r.position),this.rotation.order=r.rotation.order,this.quaternion.copy(r.quaternion),this.scale.copy(r.scale),this.matrix.copy(r.matrix),this.matrixWorld.copy(r.matrixWorld),this.matrixAutoUpdate=r.matrixAutoUpdate,this.matrixWorldAutoUpdate=r.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=r.matrixWorldNeedsUpdate,this.layers.mask=r.layers.mask,this.visible=r.visible,this.castShadow=r.castShadow,this.receiveShadow=r.receiveShadow,this.frustumCulled=r.frustumCulled,this.renderOrder=r.renderOrder,this.animations=r.animations.slice(),this.userData=JSON.parse(JSON.stringify(r.userData)),l===!0)for(let h=0;h0?p.multiplyScalar(1/Math.sqrt(y)):p.set(0,0,0)}static getBarycoord(r,l,h,p,y){Ho.subVectors(p,l),jl.subVectors(h,l),Jc.subVectors(r,l);const T=Ho.dot(Ho),O=Ho.dot(jl),te=Ho.dot(Jc),se=jl.dot(jl),xe=jl.dot(Jc),Ne=T*se-O*O;if(Ne===0)return y.set(0,0,0),null;const Ve=1/Ne,We=(se*te-O*xe)*Ve,tt=(T*xe-O*te)*Ve;return y.set(1-We-tt,tt,We)}static containsPoint(r,l,h,p){return this.getBarycoord(r,l,h,p,eh)===null?!1:eh.x>=0&&eh.y>=0&&eh.x+eh.y<=1}static getInterpolation(r,l,h,p,y,T,O,te){return this.getBarycoord(r,l,h,p,eh)===null?(te.x=0,te.y=0,"z"in te&&(te.z=0),"w"in te&&(te.w=0),null):(te.setScalar(0),te.addScaledVector(y,eh.x),te.addScaledVector(T,eh.y),te.addScaledVector(O,eh.z),te)}static getInterpolatedAttribute(r,l,h,p,y,T){return Wf.setScalar(0),_h.setScalar(0),ol.setScalar(0),Wf.fromBufferAttribute(r,l),_h.fromBufferAttribute(r,h),ol.fromBufferAttribute(r,p),T.setScalar(0),T.addScaledVector(Wf,y.x),T.addScaledVector(_h,y.y),T.addScaledVector(ol,y.z),T}static isFrontFacing(r,l,h,p){return Ho.subVectors(h,l),jl.subVectors(r,l),Ho.cross(jl).dot(p)<0}set(r,l,h){return this.a.copy(r),this.b.copy(l),this.c.copy(h),this}setFromPointsAndIndices(r,l,h,p){return this.a.copy(r[l]),this.b.copy(r[h]),this.c.copy(r[p]),this}setFromAttributeAndIndices(r,l,h,p){return this.a.fromBufferAttribute(r,l),this.b.fromBufferAttribute(r,h),this.c.fromBufferAttribute(r,p),this}clone(){return new this.constructor().copy(this)}copy(r){return this.a.copy(r.a),this.b.copy(r.b),this.c.copy(r.c),this}getArea(){return Ho.subVectors(this.c,this.b),jl.subVectors(this.a,this.b),Ho.cross(jl).length()*.5}getMidpoint(r){return r.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(r){return Bl.getNormal(this.a,this.b,this.c,r)}getPlane(r){return r.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(r,l){return Bl.getBarycoord(r,this.a,this.b,this.c,l)}getInterpolation(r,l,h,p,y){return Bl.getInterpolation(r,this.a,this.b,this.c,l,h,p,y)}containsPoint(r){return Bl.containsPoint(r,this.a,this.b,this.c)}isFrontFacing(r){return Bl.isFrontFacing(this.a,this.b,this.c,r)}intersectsBox(r){return r.intersectsTriangle(this)}closestPointToPoint(r,l){const h=this.a,p=this.b,y=this.c;let T,O;df.subVectors(p,h),xh.subVectors(y,h),yl.subVectors(r,h);const te=df.dot(yl),se=xh.dot(yl);if(te<=0&&se<=0)return l.copy(h);Nc.subVectors(r,p);const xe=df.dot(Nc),Ne=xh.dot(Nc);if(xe>=0&&Ne<=xe)return l.copy(p);const Ve=te*Ne-xe*se;if(Ve<=0&&te>=0&&xe<=0)return T=te/(te-xe),l.copy(h).addScaledVector(df,T);bh.subVectors(r,y);const We=df.dot(bh),tt=xh.dot(bh);if(tt>=0&&We<=tt)return l.copy(y);const Ot=We*se-te*tt;if(Ot<=0&&se>=0&&tt<=0)return O=se/(se-tt),l.copy(h).addScaledVector(xh,O);const An=xe*tt-We*Ne;if(An<=0&&Ne-xe>=0&&We-tt>=0)return MA.subVectors(y,p),O=(Ne-xe)/(Ne-xe+(We-tt)),l.copy(p).addScaledVector(MA,O);const un=1/(An+Ot+Ve);return T=Ot*un,O=Ve*un,l.copy(h).addScaledVector(df,T).addScaledVector(xh,O)}equals(r){return r.a.equals(this.a)&&r.b.equals(this.b)&&r.c.equals(this.c)}}const yd={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},Co={h:0,s:0,l:0},vu={h:0,s:0,l:0};function Gl(ue,r,l){return l<0&&(l+=1),l>1&&(l-=1),l<1/6?ue+(r-ue)*6*l:l<1/2?r:l<2/3?ue+(r-ue)*6*(2/3-l):ue}class Ea{constructor(r,l,h){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(r,l,h)}set(r,l,h){if(l===void 0&&h===void 0){const p=r;p&&p.isColor?this.copy(p):typeof p=="number"?this.setHex(p):typeof p=="string"&&this.setStyle(p)}else this.setRGB(r,l,h);return this}setScalar(r){return this.r=r,this.g=r,this.b=r,this}setHex(r,l=go){return r=Math.floor(r),this.r=(r>>16&255)/255,this.g=(r>>8&255)/255,this.b=(r&255)/255,le.colorSpaceToWorking(this,l),this}setRGB(r,l,h,p=le.workingColorSpace){return this.r=r,this.g=l,this.b=h,le.colorSpaceToWorking(this,p),this}setHSL(r,l,h,p=le.workingColorSpace){if(r=ju(r,1),l=ki(l,0,1),h=ki(h,0,1),l===0)this.r=this.g=this.b=h;else{const y=h<=.5?h*(1+l):h+l-h*l,T=2*h-y;this.r=Gl(T,y,r+1/3),this.g=Gl(T,y,r),this.b=Gl(T,y,r-1/3)}return le.colorSpaceToWorking(this,p),this}setStyle(r,l=go){function h(y){y!==void 0&&parseFloat(y)<1&&na("Color: Alpha component of "+r+" will be ignored.")}let p;if(p=/^(\w+)\(([^\)]*)\)/.exec(r)){let y;const T=p[1],O=p[2];switch(T){case"rgb":case"rgba":if(y=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(O))return h(y[4]),this.setRGB(Math.min(255,parseInt(y[1],10))/255,Math.min(255,parseInt(y[2],10))/255,Math.min(255,parseInt(y[3],10))/255,l);if(y=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(O))return h(y[4]),this.setRGB(Math.min(100,parseInt(y[1],10))/100,Math.min(100,parseInt(y[2],10))/100,Math.min(100,parseInt(y[3],10))/100,l);break;case"hsl":case"hsla":if(y=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(O))return h(y[4]),this.setHSL(parseFloat(y[1])/360,parseFloat(y[2])/100,parseFloat(y[3])/100,l);break;default:na("Color: Unknown color model "+r)}}else if(p=/^\#([A-Fa-f\d]+)$/.exec(r)){const y=p[1],T=y.length;if(T===3)return this.setRGB(parseInt(y.charAt(0),16)/15,parseInt(y.charAt(1),16)/15,parseInt(y.charAt(2),16)/15,l);if(T===6)return this.setHex(parseInt(y,16),l);na("Color: Invalid hex color "+r)}else if(r&&r.length>0)return this.setColorName(r,l);return this}setColorName(r,l=go){const h=yd[r.toLowerCase()];return h!==void 0?this.setHex(h,l):na("Color: Unknown color "+r),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(r){return this.r=r.r,this.g=r.g,this.b=r.b,this}copySRGBToLinear(r){return this.r=Nt(r.r),this.g=Nt(r.g),this.b=Nt(r.b),this}copyLinearToSRGB(r){return this.r=Dt(r.r),this.g=Dt(r.g),this.b=Dt(r.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(r=go){return le.workingToColorSpace(Rl.copy(this),r),Math.round(ki(Rl.r*255,0,255))*65536+Math.round(ki(Rl.g*255,0,255))*256+Math.round(ki(Rl.b*255,0,255))}getHexString(r=go){return("000000"+this.getHex(r).toString(16)).slice(-6)}getHSL(r,l=le.workingColorSpace){le.workingToColorSpace(Rl.copy(this),l);const h=Rl.r,p=Rl.g,y=Rl.b,T=Math.max(h,p,y),O=Math.min(h,p,y);let te,se;const xe=(O+T)/2;if(O===T)te=0,se=0;else{const Ne=T-O;switch(se=xe<=.5?Ne/(T+O):Ne/(2-T-O),T){case h:te=(p-y)/Ne+(p0!=r>0&&this.version++,this._alphaTest=r}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(r){if(r!==void 0)for(const l in r){const h=r[l];if(h===void 0){na(`Material: parameter '${l}' has value of undefined.`);continue}const p=this[l];if(p===void 0){na(`Material: '${l}' is not a property of THREE.${this.type}.`);continue}p&&p.isColor?p.set(h):p&&p.isVector3&&h&&h.isVector3?p.copy(h):this[l]=h}}toJSON(r){const l=r===void 0||typeof r=="string";l&&(r={textures:{},images:{}});const h={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};h.uuid=this.uuid,h.type=this.type,this.name!==""&&(h.name=this.name),this.color&&this.color.isColor&&(h.color=this.color.getHex()),this.roughness!==void 0&&(h.roughness=this.roughness),this.metalness!==void 0&&(h.metalness=this.metalness),this.sheen!==void 0&&(h.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(h.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(h.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(h.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(h.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(h.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(h.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(h.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(h.shininess=this.shininess),this.clearcoat!==void 0&&(h.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(h.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(h.clearcoatMap=this.clearcoatMap.toJSON(r).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(h.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(r).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(h.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(r).uuid,h.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(h.sheenColorMap=this.sheenColorMap.toJSON(r).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(h.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(r).uuid),this.dispersion!==void 0&&(h.dispersion=this.dispersion),this.iridescence!==void 0&&(h.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(h.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(h.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(h.iridescenceMap=this.iridescenceMap.toJSON(r).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(h.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(r).uuid),this.anisotropy!==void 0&&(h.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(h.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(h.anisotropyMap=this.anisotropyMap.toJSON(r).uuid),this.map&&this.map.isTexture&&(h.map=this.map.toJSON(r).uuid),this.matcap&&this.matcap.isTexture&&(h.matcap=this.matcap.toJSON(r).uuid),this.alphaMap&&this.alphaMap.isTexture&&(h.alphaMap=this.alphaMap.toJSON(r).uuid),this.lightMap&&this.lightMap.isTexture&&(h.lightMap=this.lightMap.toJSON(r).uuid,h.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(h.aoMap=this.aoMap.toJSON(r).uuid,h.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(h.bumpMap=this.bumpMap.toJSON(r).uuid,h.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(h.normalMap=this.normalMap.toJSON(r).uuid,h.normalMapType=this.normalMapType,h.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(h.displacementMap=this.displacementMap.toJSON(r).uuid,h.displacementScale=this.displacementScale,h.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(h.roughnessMap=this.roughnessMap.toJSON(r).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(h.metalnessMap=this.metalnessMap.toJSON(r).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(h.emissiveMap=this.emissiveMap.toJSON(r).uuid),this.specularMap&&this.specularMap.isTexture&&(h.specularMap=this.specularMap.toJSON(r).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(h.specularIntensityMap=this.specularIntensityMap.toJSON(r).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(h.specularColorMap=this.specularColorMap.toJSON(r).uuid),this.envMap&&this.envMap.isTexture&&(h.envMap=this.envMap.toJSON(r).uuid,this.combine!==void 0&&(h.combine=this.combine)),this.envMapRotation!==void 0&&(h.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(h.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(h.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(h.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(h.gradientMap=this.gradientMap.toJSON(r).uuid),this.transmission!==void 0&&(h.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(h.transmissionMap=this.transmissionMap.toJSON(r).uuid),this.thickness!==void 0&&(h.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(h.thicknessMap=this.thicknessMap.toJSON(r).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(h.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(h.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(h.size=this.size),this.shadowSide!==null&&(h.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(h.sizeAttenuation=this.sizeAttenuation),this.blending!==ve&&(h.blending=this.blending),this.side!==j&&(h.side=this.side),this.vertexColors===!0&&(h.vertexColors=!0),this.opacity<1&&(h.opacity=this.opacity),this.transparent===!0&&(h.transparent=!0),this.blendSrc!==zn&&(h.blendSrc=this.blendSrc),this.blendDst!==dr&&(h.blendDst=this.blendDst),this.blendEquation!==vt&&(h.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(h.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(h.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(h.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(h.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(h.blendAlpha=this.blendAlpha),this.depthFunc!==Ae&&(h.depthFunc=this.depthFunc),this.depthTest===!1&&(h.depthTest=this.depthTest),this.depthWrite===!1&&(h.depthWrite=this.depthWrite),this.colorWrite===!1&&(h.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(h.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==fh&&(h.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(h.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(h.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==No&&(h.stencilFail=this.stencilFail),this.stencilZFail!==No&&(h.stencilZFail=this.stencilZFail),this.stencilZPass!==No&&(h.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(h.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(h.rotation=this.rotation),this.polygonOffset===!0&&(h.polygonOffset=!0),this.polygonOffsetFactor!==0&&(h.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(h.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(h.linewidth=this.linewidth),this.dashSize!==void 0&&(h.dashSize=this.dashSize),this.gapSize!==void 0&&(h.gapSize=this.gapSize),this.scale!==void 0&&(h.scale=this.scale),this.dithering===!0&&(h.dithering=!0),this.alphaTest>0&&(h.alphaTest=this.alphaTest),this.alphaHash===!0&&(h.alphaHash=!0),this.alphaToCoverage===!0&&(h.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(h.premultipliedAlpha=!0),this.forceSinglePass===!0&&(h.forceSinglePass=!0),this.wireframe===!0&&(h.wireframe=!0),this.wireframeLinewidth>1&&(h.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(h.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(h.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(h.flatShading=!0),this.visible===!1&&(h.visible=!1),this.toneMapped===!1&&(h.toneMapped=!1),this.fog===!1&&(h.fog=!1),Object.keys(this.userData).length>0&&(h.userData=this.userData);function p(y){const T=[];for(const O in y){const te=y[O];delete te.metadata,T.push(te)}return T}if(l){const y=p(r.textures),T=p(r.images);y.length>0&&(h.textures=y),T.length>0&&(h.images=T)}return h}clone(){return new this.constructor().copy(this)}copy(r){this.name=r.name,this.blending=r.blending,this.side=r.side,this.vertexColors=r.vertexColors,this.opacity=r.opacity,this.transparent=r.transparent,this.blendSrc=r.blendSrc,this.blendDst=r.blendDst,this.blendEquation=r.blendEquation,this.blendSrcAlpha=r.blendSrcAlpha,this.blendDstAlpha=r.blendDstAlpha,this.blendEquationAlpha=r.blendEquationAlpha,this.blendColor.copy(r.blendColor),this.blendAlpha=r.blendAlpha,this.depthFunc=r.depthFunc,this.depthTest=r.depthTest,this.depthWrite=r.depthWrite,this.stencilWriteMask=r.stencilWriteMask,this.stencilFunc=r.stencilFunc,this.stencilRef=r.stencilRef,this.stencilFuncMask=r.stencilFuncMask,this.stencilFail=r.stencilFail,this.stencilZFail=r.stencilZFail,this.stencilZPass=r.stencilZPass,this.stencilWrite=r.stencilWrite;const l=r.clippingPlanes;let h=null;if(l!==null){const p=l.length;h=new Array(p);for(let y=0;y!==p;++y)h[y]=l[y].clone()}return this.clippingPlanes=h,this.clipIntersection=r.clipIntersection,this.clipShadows=r.clipShadows,this.shadowSide=r.shadowSide,this.colorWrite=r.colorWrite,this.precision=r.precision,this.polygonOffset=r.polygonOffset,this.polygonOffsetFactor=r.polygonOffsetFactor,this.polygonOffsetUnits=r.polygonOffsetUnits,this.dithering=r.dithering,this.alphaTest=r.alphaTest,this.alphaHash=r.alphaHash,this.alphaToCoverage=r.alphaToCoverage,this.premultipliedAlpha=r.premultipliedAlpha,this.forceSinglePass=r.forceSinglePass,this.visible=r.visible,this.toneMapped=r.toneMapped,this.userData=JSON.parse(JSON.stringify(r.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(r){r===!0&&this.version++}}class Dh extends ku{constructor(r){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ea(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 Rs,this.combine=on,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.specularMap=r.specularMap,this.alphaMap=r.alphaMap,this.envMap=r.envMap,this.envMapRotation.copy(r.envMapRotation),this.combine=r.combine,this.reflectivity=r.reflectivity,this.refractionRatio=r.refractionRatio,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.fog=r.fog,this}}const Vu=null;function EA(){const ue=new ArrayBuffer(4),r=new Float32Array(ue),l=new Uint32Array(ue),h=new Uint32Array(512),p=new Uint32Array(512);for(let te=0;te<256;++te){const se=te-127;se<-27?(h[te]=0,h[te|256]=32768,p[te]=24,p[te|256]=24):se<-14?(h[te]=1024>>-se-14,h[te|256]=1024>>-se-14|32768,p[te]=-se-1,p[te|256]=-se-1):se<=15?(h[te]=se+15<<10,h[te|256]=se+15<<10|32768,p[te]=13,p[te|256]=13):se<128?(h[te]=31744,h[te|256]=64512,p[te]=24,p[te|256]=24):(h[te]=31744,h[te|256]=64512,p[te]=13,p[te|256]=13)}const y=new Uint32Array(2048),T=new Uint32Array(64),O=new Uint32Array(64);for(let te=1;te<1024;++te){let se=te<<13,xe=0;for(;!(se&8388608);)se<<=1,xe-=8388608;se&=-8388609,xe+=947912704,y[te]=se|xe}for(let te=1024;te<2048;++te)y[te]=939524096+(te-1024<<13);for(let te=1;te<31;++te)T[te]=te<<23;T[31]=1199570944,T[32]=2147483648;for(let te=33;te<63;++te)T[te]=2147483648+(te-32<<23);T[63]=3347054592;for(let te=1;te<64;++te)te!==32&&(O[te]=1024);return{floatView:r,uint32View:l,baseTable:h,shiftTable:p,mantissaTable:y,exponentTable:T,offsetTable:O}}function zu(ue){Math.abs(ue)>65504&&na("DataUtils.toHalfFloat(): Value out of range."),ue=ki(ue,-65504,65504),Vu.floatView[0]=ue;const r=Vu.uint32View[0],l=r>>23&511;return Vu.baseTable[l]+((r&8388607)>>Vu.shiftTable[l])}function Wr(ue){const r=ue>>10;return Vu.uint32View[0]=Vu.mantissaTable[Vu.offsetTable[r]+(ue&1023)]+Vu.exponentTable[r],Vu.floatView[0]}class Hc{static toHalfFloat(r){return zu(r)}static fromHalfFloat(r){return Wr(r)}}const yu=new kn,Hl=new qi;let Yl=0;class Ql{constructor(r,l,h=!1){if(Array.isArray(r))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Yl++}),this.name="",this.array=r,this.itemSize=l,this.count=r!==void 0?r.length/l:0,this.normalized=h,this.usage=oo,this.updateRanges=[],this.gpuType=dt,this.version=0}onUploadCallback(){}set needsUpdate(r){r===!0&&this.version++}setUsage(r){return this.usage=r,this}addUpdateRange(r,l){this.updateRanges.push({start:r,count:l})}clearUpdateRanges(){this.updateRanges.length=0}copy(r){return this.name=r.name,this.array=new r.array.constructor(r.array),this.itemSize=r.itemSize,this.count=r.count,this.normalized=r.normalized,this.usage=r.usage,this.gpuType=r.gpuType,this}copyAt(r,l,h){r*=this.itemSize,h*=l.itemSize;for(let p=0,y=this.itemSize;pl.count&&na("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),l.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new zi);const r=this.attributes.position,l=this.morphAttributes.position;if(r&&r.isGLBufferAttribute){Wa("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new kn(-1/0,-1/0,-1/0),new kn(1/0,1/0,1/0));return}if(r!==void 0){if(this.boundingBox.setFromBufferAttribute(r),l)for(let h=0,p=l.length;h0&&(r.userData=this.userData),this.parameters!==void 0){const te=this.parameters;for(const se in te)te[se]!==void 0&&(r[se]=te[se]);return r}r.data={attributes:{}};const l=this.index;l!==null&&(r.data.index={type:l.array.constructor.name,array:Array.prototype.slice.call(l.array)});const h=this.attributes;for(const te in h){const se=h[te];r.data.attributes[te]=se.toJSON(r.data)}const p={};let y=!1;for(const te in this.morphAttributes){const se=this.morphAttributes[te],xe=[];for(let Ne=0,Ve=se.length;Ne0&&(p[te]=xe,y=!0)}y&&(r.data.morphAttributes=p,r.data.morphTargetsRelative=this.morphTargetsRelative);const T=this.groups;T.length>0&&(r.data.groups=JSON.parse(JSON.stringify(T)));const O=this.boundingSphere;return O!==null&&(r.data.boundingSphere=O.toJSON()),r}clone(){return new this.constructor().copy(this)}copy(r){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const l={};this.name=r.name;const h=r.index;h!==null&&this.setIndex(h.clone());const p=r.attributes;for(const se in p){const xe=p[se];this.setAttribute(se,xe.clone(l))}const y=r.morphAttributes;for(const se in y){const xe=[],Ne=y[se];for(let Ve=0,We=Ne.length;Ve0){const p=l[h[0]];if(p!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let y=0,T=p.length;yBp(r.far-r.near,2)))&&(Fc.copy(y).invert(),Gu.copy(r.ray).applyMatrix4(Fc),!(h.boundingBox!==null&&Gu.intersectsBox(h.boundingBox)===!1)&&this._computeIntersections(r,l,Gu)))}_computeIntersections(r,l,h){let p;const y=this.geometry,T=this.material,O=y.index,te=y.attributes.position,se=y.attributes.uv,xe=y.attributes.uv1,Ne=y.attributes.normal,Ve=y.groups,We=y.drawRange;if(O!==null)if(Array.isArray(T))for(let tt=0,Ot=Ve.length;ttl.far?null:{distance:se,point:xd.clone(),object:ue}}function Gd(ue,r,l,h,p,y,T,O,te,se){ue.getVertexPosition(O,cc),ue.getVertexPosition(te,Vd),ue.getVertexPosition(se,Ru);const xe=TA(ue,r,l,h,cc,Vd,Ru,Sl);if(xe){const Ne=new kn;Bl.getBarycoord(Sl,cc,Vd,Ru,Ne),p&&(xe.uv=Bl.getInterpolatedAttribute(p,O,te,se,Ne,new qi)),y&&(xe.uv1=Bl.getInterpolatedAttribute(y,O,te,se,Ne,new qi)),T&&(xe.normal=Bl.getInterpolatedAttribute(T,O,te,se,Ne,new kn),xe.normal.dot(h.direction)>0&&xe.normal.multiplyScalar(-1));const Ve={a:O,b:te,c:se,normal:new kn,materialIndex:0};Bl.getNormal(cc,Vd,Ru,Ve.normal),xe.face=Ve,xe.barycoord=Ne}return xe}class Hd extends Ui{constructor(r=1,l=1,h=1,p=1,y=1,T=1){super(),this.type="BoxGeometry",this.parameters={width:r,height:l,depth:h,widthSegments:p,heightSegments:y,depthSegments:T};const O=this;p=Math.floor(p),y=Math.floor(y),T=Math.floor(T);const te=[],se=[],xe=[],Ne=[];let Ve=0,We=0;tt("z","y","x",-1,-1,h,l,r,T,y,0),tt("z","y","x",1,-1,h,l,-r,T,y,1),tt("x","z","y",1,1,r,h,l,p,T,2),tt("x","z","y",1,-1,r,h,-l,p,T,3),tt("x","y","z",1,-1,r,l,h,p,y,4),tt("x","y","z",-1,-1,r,l,-h,p,y,5),this.setIndex(te),this.setAttribute("position",new ha(se,3)),this.setAttribute("normal",new ha(xe,3)),this.setAttribute("uv",new ha(Ne,2));function tt(Ot,An,un,Un,Vn,nr,ii,pi,Bi,mi,ls){const ys=nr/Bi,Da=ii/mi,Mo=nr/2,Ro=ii/2,du=pi/2,ru=Bi+1,Zc=mi+1;let Ih=0,uA=0;const Ac=new kn;for(let Uc=0;Uc0?1:-1,xe.push(Ac.x,Ac.y,Ac.z),Ne.push(Lf/Bi),Ne.push(1-Uc/mi),Ih+=1}}for(let Uc=0;Uc0&&(l.defines=this.defines),l.vertexShader=this.vertexShader,l.fragmentShader=this.fragmentShader,l.lights=this.lights,l.clipping=this.clipping;const h={};for(const p in this.extensions)this.extensions[p]===!0&&(h[p]=!0);return Object.keys(h).length>0&&(l.extensions=h),l}}class jf extends _l{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new oi,this.projectionMatrix=new oi,this.projectionMatrixInverse=new oi,this.coordinateSystem=Cu,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(r,l){return super.copy(r,l),this.matrixWorldInverse.copy(r.matrixWorldInverse),this.projectionMatrix.copy(r.projectionMatrix),this.projectionMatrixInverse.copy(r.projectionMatrixInverse),this.coordinateSystem=r.coordinateSystem,this}getWorldDirection(r){return super.getWorldDirection(r).negate()}updateMatrixWorld(r){super.updateMatrixWorld(r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(r,l){super.updateWorldMatrix(r,l),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Jl=new kn,cm=new qi,wg=new qi;class Vh extends null{constructor(r=50,l=1,h=.1,p=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=r,this.zoom=1,this.near=h,this.far=p,this.focus=10,this.aspect=l,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(r,l){return super.copy(r,l),this.fov=r.fov,this.zoom=r.zoom,this.near=r.near,this.far=r.far,this.focus=r.focus,this.aspect=r.aspect,this.view=r.view===null?null:Object.assign({},r.view),this.filmGauge=r.filmGauge,this.filmOffset=r.filmOffset,this}setFocalLength(r){const l=.5*this.getFilmHeight()/r;this.fov=Lr*2*Math.atan(l),this.updateProjectionMatrix()}getFocalLength(){const r=Math.tan(ac*.5*this.fov);return .5*this.getFilmHeight()/r}getEffectiveFOV(){return Lr*2*Math.atan(Math.tan(ac*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(r,l,h){Jl.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),l.set(Jl.x,Jl.y).multiplyScalar(-r/Jl.z),Jl.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),h.set(Jl.x,Jl.y).multiplyScalar(-r/Jl.z)}getViewSize(r,l){return this.getViewBounds(r,cm,wg),l.subVectors(wg,cm)}setViewOffset(r,l,h,p,y,T){this.aspect=r/l,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=r,this.view.fullHeight=l,this.view.offsetX=h,this.view.offsetY=p,this.view.width=y,this.view.height=T,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const r=this.near;let l=r*Math.tan(ac*.5*this.fov)/this.zoom,h=2*l,p=this.aspect*h,y=-.5*p;const T=this.view;if(this.view!==null&&this.view.enabled){const te=T.fullWidth,se=T.fullHeight;y+=T.offsetX*p/te,l-=T.offsetY*h/se,p*=T.width/te,h*=T.height/se}const O=this.filmOffset;O!==0&&(y+=r*O/this.getFilmWidth()),this.projectionMatrix.makePerspective(y,y+p,l,l-h,r,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(r){const l=super.toJSON(r);return l.object.fov=this.fov,l.object.zoom=this.zoom,l.object.near=this.near,l.object.far=this.far,l.object.focus=this.focus,l.object.aspect=this.aspect,this.view!==null&&(l.object.view=Object.assign({},this.view)),l.object.filmGauge=this.filmGauge,l.object.filmOffset=this.filmOffset,l}}const Pc=null,Jh=1;class nh extends null{constructor(r,l,h){super(),this.type="CubeCamera",this.renderTarget=h,this.coordinateSystem=null,this.activeMipmapLevel=0;const p=new Vh(Pc,Jh,r,l);p.layers=this.layers,this.add(p);const y=new Vh(Pc,Jh,r,l);y.layers=this.layers,this.add(y);const T=new Vh(Pc,Jh,r,l);T.layers=this.layers,this.add(T);const O=new Vh(Pc,Jh,r,l);O.layers=this.layers,this.add(O);const te=new Vh(Pc,Jh,r,l);te.layers=this.layers,this.add(te);const se=new Vh(Pc,Jh,r,l);se.layers=this.layers,this.add(se)}updateCoordinateSystem(){const r=this.coordinateSystem,l=this.children.concat(),[h,p,y,T,O,te]=l;for(const se of l)this.remove(se);if(r===Cu)h.up.set(0,1,0),h.lookAt(1,0,0),p.up.set(0,1,0),p.lookAt(-1,0,0),y.up.set(0,0,-1),y.lookAt(0,1,0),T.up.set(0,0,1),T.lookAt(0,-1,0),O.up.set(0,1,0),O.lookAt(0,0,1),te.up.set(0,1,0),te.lookAt(0,0,-1);else if(r===zc)h.up.set(0,-1,0),h.lookAt(-1,0,0),p.up.set(0,-1,0),p.lookAt(1,0,0),y.up.set(0,0,1),y.lookAt(0,1,0),T.up.set(0,0,-1),T.lookAt(0,-1,0),O.up.set(0,-1,0),O.lookAt(0,0,1),te.up.set(0,-1,0),te.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+r);for(const se of l)this.add(se),se.updateMatrixWorld()}update(r,l){this.parent===null&&this.updateMatrixWorld();const{renderTarget:h,activeMipmapLevel:p}=this;this.coordinateSystem!==r.coordinateSystem&&(this.coordinateSystem=r.coordinateSystem,this.updateCoordinateSystem());const[y,T,O,te,se,xe]=this.children,Ne=r.getRenderTarget(),Ve=r.getActiveCubeFace(),We=r.getActiveMipmapLevel(),tt=r.xr.enabled;r.xr.enabled=!1;const Ot=h.texture.generateMipmaps;h.texture.generateMipmaps=!1,r.setRenderTarget(h,0,p),r.render(l,y),r.setRenderTarget(h,1,p),r.render(l,T),r.setRenderTarget(h,2,p),r.render(l,O),r.setRenderTarget(h,3,p),r.render(l,te),r.setRenderTarget(h,4,p),r.render(l,se),h.texture.generateMipmaps=Ot,r.setRenderTarget(h,5,p),r.render(l,xe),r.setRenderTarget(Ne,Ve,We),r.xr.enabled=tt,h.texture.needsPMREMUpdate=!0}}class Qd extends null{constructor(r=[],l=it,h,p,y,T,O,te,se,xe){super(r,l,h,p,y,T,O,te,se,xe),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(r){this.image=r}}class Wd extends null{constructor(r=1,l={}){super(r,r,l),this.isWebGLCubeRenderTarget=!0;const h={width:r,height:r,depth:1},p=[h,h,h,h,h,h];this.texture=new Qd(p),this._setTextureOptions(l),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(r,l){this.texture.type=l.type,this.texture.colorSpace=l.colorSpace,this.texture.generateMipmaps=l.generateMipmaps,this.texture.minFilter=l.minFilter,this.texture.magFilter=l.magFilter;const h={uniforms:{tEquirect:{value:null}},vertexShader:` - - varying vec3 vWorldDirection; - - vec3 transformDirection( in vec3 dir, in mat4 matrix ) { - - return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); - - } - - void main() { - - vWorldDirection = transformDirection( position, modelMatrix ); - - #include - #include - - } - `,fragmentShader:` - - uniform sampler2D tEquirect; - - varying vec3 vWorldDirection; - - #include - - void main() { - - vec3 direction = normalize( vWorldDirection ); - - vec2 sampleUV = equirectUv( direction ); - - gl_FragColor = texture2D( tEquirect, sampleUV ); - - } - `},p=new Hd(5,5,5),y=new bd({name:"CubemapFromEquirect",uniforms:pf(h.uniforms),vertexShader:h.vertexShader,fragmentShader:h.fragmentShader,side:de,blending:we});y.uniforms.tEquirect.value=l;const T=new zd(p,y),O=l.minFilter;return l.minFilter===yi&&(l.minFilter=vr),new nh(1,10,this).update(r,T),l.minFilter=O,T.geometry.dispose(),T.material.dispose(),this}clear(r,l=!0,h=!0,p=!0){const y=r.getRenderTarget();for(let T=0;T<6;T++)r.setRenderTarget(this,T),r.clear(l,h,p);r.setRenderTarget(y)}}class xu extends _l{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Sg={type:"move"};class vo{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new xu,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 xu,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new kn,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new kn),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new xu,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new kn,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new kn),this._grip}dispatchEvent(r){return this._targetRay!==null&&this._targetRay.dispatchEvent(r),this._grip!==null&&this._grip.dispatchEvent(r),this._hand!==null&&this._hand.dispatchEvent(r),this}connect(r){if(r&&r.hand){const l=this._hand;if(l)for(const h of r.hand.values())this._getHandJoint(l,h)}return this.dispatchEvent({type:"connected",data:r}),this}disconnect(r){return this.dispatchEvent({type:"disconnected",data:r}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(r,l,h){let p=null,y=null,T=null;const O=this._targetRay,te=this._grip,se=this._hand;if(r&&l.session.visibilityState!=="visible-blurred"){if(se&&r.hand){T=!0;for(const Ot of r.hand.values()){const An=l.getJointPose(Ot,h),un=this._getHandJoint(se,Ot);An!==null&&(un.matrix.fromArray(An.transform.matrix),un.matrix.decompose(un.position,un.rotation,un.scale),un.matrixWorldNeedsUpdate=!0,un.jointRadius=An.radius),un.visible=An!==null}const xe=se.joints["index-finger-tip"],Ne=se.joints["thumb-tip"],Ve=xe.position.distanceTo(Ne.position),We=.02,tt=.005;se.inputState.pinching&&Ve>We+tt?(se.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:r.handedness,target:this})):!se.inputState.pinching&&Ve<=We-tt&&(se.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:r.handedness,target:this}))}else te!==null&&r.gripSpace&&(y=l.getPose(r.gripSpace,h),y!==null&&(te.matrix.fromArray(y.transform.matrix),te.matrix.decompose(te.position,te.rotation,te.scale),te.matrixWorldNeedsUpdate=!0,y.linearVelocity?(te.hasLinearVelocity=!0,te.linearVelocity.copy(y.linearVelocity)):te.hasLinearVelocity=!1,y.angularVelocity?(te.hasAngularVelocity=!0,te.angularVelocity.copy(y.angularVelocity)):te.hasAngularVelocity=!1));O!==null&&(p=l.getPose(r.targetRaySpace,h),p===null&&y!==null&&(p=y),p!==null&&(O.matrix.fromArray(p.transform.matrix),O.matrix.decompose(O.position,O.rotation,O.scale),O.matrixWorldNeedsUpdate=!0,p.linearVelocity?(O.hasLinearVelocity=!0,O.linearVelocity.copy(p.linearVelocity)):O.hasLinearVelocity=!1,p.angularVelocity?(O.hasAngularVelocity=!0,O.angularVelocity.copy(p.angularVelocity)):O.hasAngularVelocity=!1,this.dispatchEvent(Sg)))}return O!==null&&(O.visible=p!==null),te!==null&&(te.visible=y!==null),se!==null&&(se.visible=T!==null),this}_getHandJoint(r,l){if(r.joints[l.jointName]===void 0){const h=new xu;h.matrixAutoUpdate=!1,h.visible=!1,r.joints[l.jointName]=h,r.add(h)}return r.joints[l.jointName]}}class gf{constructor(r,l=25e-5){this.isFogExp2=!0,this.name="",this.color=new Ea(r),this.density=l}clone(){return new gf(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class mf{constructor(r,l=1,h=1e3){this.isFog=!0,this.name="",this.color=new Ea(r),this.near=l,this.far=h}clone(){return new mf(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Np extends null{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 Rs,this.environmentIntensity=1,this.environmentRotation=new Rs,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(r,l){return super.copy(r,l),r.background!==null&&(this.background=r.background.clone()),r.environment!==null&&(this.environment=r.environment.clone()),r.fog!==null&&(this.fog=r.fog.clone()),this.backgroundBlurriness=r.backgroundBlurriness,this.backgroundIntensity=r.backgroundIntensity,this.backgroundRotation.copy(r.backgroundRotation),this.environmentIntensity=r.environmentIntensity,this.environmentRotation.copy(r.environmentRotation),r.overrideMaterial!==null&&(this.overrideMaterial=r.overrideMaterial.clone()),this.matrixAutoUpdate=r.matrixAutoUpdate,this}toJSON(r){const l=super.toJSON(r);return this.fog!==null&&(l.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(l.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(l.object.backgroundIntensity=this.backgroundIntensity),l.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(l.object.environmentIntensity=this.environmentIntensity),l.object.environmentRotation=this.environmentRotation.toArray(),l}}class rh{constructor(r,l){this.isInterleavedBuffer=!0,this.array=r,this.stride=l,this.count=r!==void 0?r.length/l:0,this.usage=oo,this.updateRanges=[],this.version=0,this.uuid=Gr()}onUploadCallback(){}set needsUpdate(r){r===!0&&this.version++}setUsage(r){return this.usage=r,this}addUpdateRange(r,l){this.updateRanges.push({start:r,count:l})}clearUpdateRanges(){this.updateRanges.length=0}copy(r){return this.array=new r.array.constructor(r.array),this.count=r.count,this.stride=r.stride,this.usage=r.usage,this}copyAt(r,l,h){r*=this.stride,h*=l.stride;for(let p=0,y=this.stride;pr.far||l.push({distance:te,point:Hu.clone(),uv:Bl.getInterpolation(Hu,BA,Lc,xf,Sh,bf,Yf,new qi),face:null,object:this})}copy(r,l){return super.copy(r,l),r.center!==void 0&&this.center.copy(r.center),this.material=r.material,this}}function wd(ue,r,l,h,p,y){wh.subVectors(ue,l).addScalar(.5).multiply(h),p!==void 0?(Iu.x=y*wh.x-p*wh.y,Iu.y=p*wh.x+y*wh.y):Iu.copy(wh),ue.copy(r),ue.x+=Iu.x,ue.y+=Iu.y,ue.applyMatrix4(yf)}const sh=new kn,Sd=new kn;class IA extends null{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(r){super.copy(r,!1);const l=r.levels;for(let h=0,p=l.length;h0){let h,p;for(h=1,p=l.length;h0){sh.setFromMatrixPosition(this.matrixWorld);const p=r.ray.origin.distanceTo(sh);this.getObjectForDistance(p).raycast(r,l)}}update(r){const l=this.levels;if(l.length>1){sh.setFromMatrixPosition(r.matrixWorld),Sd.setFromMatrixPosition(this.matrixWorld);const h=sh.distanceTo(Sd)/r.zoom;l[0].object.visible=!0;let p,y;for(p=1,y=l.length;p=T)l[p-1].object.visible=!1,l[p].object.visible=!0;else break}for(this._currentLevel=p-1;p1?null:l.copy(r.start).addScaledVector(h,y)}intersectsLine(r){const l=this.distanceToPoint(r.start),h=this.distanceToPoint(r.end);return l<0&&h>0||h<0&&l>0}intersectsBox(r){return r.intersectsPlane(this)}intersectsSphere(r){return r.intersectsPlane(this)}coplanarPoint(r){return r.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(r,l){const h=l||Dp.getNormalMatrix(r),p=this.coplanarPoint(Ed).applyMatrix4(r),y=this.normal.applyMatrix3(h).normalize();return this.constant=-p.dot(y),this}translate(r){return this.constant-=r.dot(this.normal),this}equals(r){return r.normal.equals(this.normal)&&r.constant===this.constant}clone(){return new this.constructor().copy(this)}}const $d=new gn,Qc=new qi(.5,.5),Eh=new kn;class lp{constructor(r=new Do,l=new Do,h=new Do,p=new Do,y=new Do,T=new Do){this.planes=[r,l,h,p,y,T]}set(r,l,h,p,y,T){const O=this.planes;return O[0].copy(r),O[1].copy(l),O[2].copy(h),O[3].copy(p),O[4].copy(y),O[5].copy(T),this}copy(r){const l=this.planes;for(let h=0;h<6;h++)l[h].copy(r.planes[h]);return this}setFromProjectionMatrix(r,l=Cu,h=!1){const p=this.planes,y=r.elements,T=y[0],O=y[1],te=y[2],se=y[3],xe=y[4],Ne=y[5],Ve=y[6],We=y[7],tt=y[8],Ot=y[9],An=y[10],un=y[11],Un=y[12],Vn=y[13],nr=y[14],ii=y[15];if(p[0].setComponents(se-T,We-xe,un-tt,ii-Un).normalize(),p[1].setComponents(se+T,We+xe,un+tt,ii+Un).normalize(),p[2].setComponents(se+O,We+Ne,un+Ot,ii+Vn).normalize(),p[3].setComponents(se-O,We-Ne,un-Ot,ii-Vn).normalize(),h)p[4].setComponents(te,Ve,An,nr).normalize(),p[5].setComponents(se-te,We-Ve,un-An,ii-nr).normalize();else if(p[4].setComponents(se-te,We-Ve,un-An,ii-nr).normalize(),l===Cu)p[5].setComponents(se+te,We+Ve,un+An,ii+nr).normalize();else if(l===zc)p[5].setComponents(te,Ve,An,nr).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+l);return this}intersectsObject(r){if(r.boundingSphere!==void 0)r.boundingSphere===null&&r.computeBoundingSphere(),$d.copy(r.boundingSphere).applyMatrix4(r.matrixWorld);else{const l=r.geometry;l.boundingSphere===null&&l.computeBoundingSphere(),$d.copy(l.boundingSphere).applyMatrix4(r.matrixWorld)}return this.intersectsSphere($d)}intersectsSprite(r){$d.center.set(0,0,0);const l=Qc.distanceTo(r.center);return $d.radius=.7071067811865476+l,$d.applyMatrix4(r.matrixWorld),this.intersectsSphere($d)}intersectsSphere(r){const l=this.planes,h=r.center,p=-r.radius;for(let y=0;y<6;y++)if(l[y].distanceToPoint(h)0?r.max.x:r.min.x,Eh.y=p.normal.y>0?r.max.y:r.min.y,Eh.z=p.normal.z>0?r.max.z:r.min.z,p.distanceToPoint(Eh)<0)return!1}return!0}containsPoint(r){const l=this.planes;for(let h=0;h<6;h++)if(l[h].distanceToPoint(r)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}const wo=new oi,Ch=new lp;class Cg{constructor(){this.coordinateSystem=Cu}intersectsObject(r,l){if(!l.isArrayCamera||l.cameras.length===0)return!1;for(let h=0;h=y.length&&y.push({start:-1,count:-1,z:-1,index:-1});const O=y[this.index];T.push(O),this.index++,O.start=r,O.count=l,O.z=h,O.index=p}reset(){this.list.length=0,this.index=0}}const qu=new oi,Th=new Ea(1,1,1),oh=new lp,kp=new Cg,Sf=new zi,Gh=new gn,Mf=new kn,bu=new kn,eu=new kn,Ef=new Xd,Dl=new zd,Bh=null;function Cf(ue,r,l=0){const h=r.itemSize;if(ue.isInterleavedBufferAttribute||ue.array.constructor!==r.array.constructor){const p=ue.count;for(let y=0;y65535?new Uint32Array(p):new Uint16Array(p);l.setIndex(new Ql(y,1))}this._geometryInitialized=!0}}_validateGeometry(r){const l=this.geometry;if(!!r.getIndex()!=!!l.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const h in l.attributes){if(!r.hasAttribute(h))throw new Error(`THREE.BatchedMesh: Added geometry missing "${h}". All geometries must have consistent attributes.`);const p=r.getAttribute(h),y=l.getAttribute(h);if(p.itemSize!==y.itemSize||p.normalized!==y.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(r){const l=this._instanceInfo;if(r<0||r>=l.length||l[r].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${r}. Instance is either out of range or has been deleted.`)}validateGeometryId(r){const l=this._geometryInfo;if(r<0||r>=l.length||l[r].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${r}. Geometry is either out of range or has been deleted.`)}setCustomSort(r){return this.customSort=r,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new zi);const r=this.boundingBox,l=this._instanceInfo;r.makeEmpty();for(let h=0,p=l.length;h=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const h={visible:!0,active:!0,geometryIndex:r};let p=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(Ec),p=this._availableInstanceIds.shift(),this._instanceInfo[p]=h):(p=this._instanceInfo.length,this._instanceInfo.push(h));const y=this._matricesTexture;qu.identity().toArray(y.image.data,p*16),y.needsUpdate=!0;const T=this._colorsTexture;return T&&(Th.toArray(T.image.data,p*4),T.needsUpdate=!0),this._visibilityChanged=!0,p}addGeometry(r,l=-1,h=-1){this._initializeGeometry(r),this._validateGeometry(r);const p={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},y=this._geometryInfo;p.vertexStart=this._nextVertexStart,p.reservedVertexCount=l===-1?r.getAttribute("position").count:l;const T=r.getIndex();if(T!==null&&(p.indexStart=this._nextIndexStart,p.reservedIndexCount=h===-1?T.count:h),p.indexStart!==-1&&p.indexStart+p.reservedIndexCount>this._maxIndexCount||p.vertexStart+p.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let te;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(Ec),te=this._availableGeometryIds.shift(),y[te]=p):(te=this._geometryCount,this._geometryCount++,y.push(p)),this.setGeometryAt(te,r),this._nextIndexStart=p.indexStart+p.reservedIndexCount,this._nextVertexStart=p.vertexStart+p.reservedVertexCount,te}setGeometryAt(r,l){if(r>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(l);const h=this.geometry,p=h.getIndex()!==null,y=h.getIndex(),T=l.getIndex(),O=this._geometryInfo[r];if(p&&T.count>O.reservedIndexCount||l.attributes.position.count>O.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const te=O.vertexStart,se=O.reservedVertexCount;O.vertexCount=l.getAttribute("position").count;for(const xe in h.attributes){const Ne=l.getAttribute(xe),Ve=h.getAttribute(xe);Cf(Ne,Ve,te);const We=Ne.itemSize;for(let tt=Ne.count,Ot=se;tt=l.length||l[r].active===!1)return this;const h=this._instanceInfo;for(let p=0,y=h.length;pO).sort((T,O)=>h[T].vertexStart-h[O].vertexStart),y=this.geometry;for(let T=0,O=h.length;T=this._geometryCount)return null;const h=this.geometry,p=this._geometryInfo[r];if(p.boundingBox===null){const y=new zi,T=h.index,O=h.attributes.position;for(let te=p.start,se=p.start+p.count;te=this._geometryCount)return null;const h=this.geometry,p=this._geometryInfo[r];if(p.boundingSphere===null){const y=new gn;this.getBoundingBoxAt(r,Sf),Sf.getCenter(y.center);const T=h.index,O=h.attributes.position;let te=0;for(let se=p.start,xe=p.start+p.count;seO.active);if(Math.max(...h.map(O=>O.vertexStart+O.reservedVertexCount))>r)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${l}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...h.map(te=>te.indexStart+te.reservedIndexCount))>l)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${l}. Cannot shrink further.`);const y=this.geometry;y.dispose(),this._maxVertexCount=r,this._maxIndexCount=l,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Ui,this._initializeGeometry(y));const T=this.geometry;y.index&&tu(y.index.array,T.index.array);for(const O in y.attributes)tu(y.attributes[O].array,T.attributes[O].array)}raycast(r,l){const h=this._instanceInfo,p=this._geometryInfo,y=this.matrixWorld,T=this.geometry;Dl.material=this.material,Dl.geometry.index=T.index,Dl.geometry.attributes=T.attributes,Dl.geometry.boundingBox===null&&(Dl.geometry.boundingBox=new zi),Dl.geometry.boundingSphere===null&&(Dl.geometry.boundingSphere=new gn);for(let O=0,te=h.length;Ofd(rl({},l),{boundingBox:l.boundingBox!==null?l.boundingBox.clone():null,boundingSphere:l.boundingSphere!==null?l.boundingSphere.clone():null})),this._instanceInfo=r._instanceInfo.map(l=>rl({},l)),this._availableInstanceIds=r._availableInstanceIds.slice(),this._availableGeometryIds=r._availableGeometryIds.slice(),this._nextIndexStart=r._nextIndexStart,this._nextVertexStart=r._nextVertexStart,this._geometryCount=r._geometryCount,this._maxInstanceCount=r._maxInstanceCount,this._maxVertexCount=r._maxVertexCount,this._maxIndexCount=r._maxIndexCount,this._geometryInitialized=r._geometryInitialized,this._multiDrawCounts=r._multiDrawCounts.slice(),this._multiDrawStarts=r._multiDrawStarts.slice(),this._indirectTexture=r._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=r._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=r._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(r,l,h,p,y){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const T=p.getIndex(),O=T===null?1:T.array.BYTES_PER_ELEMENT,te=this._instanceInfo,se=this._multiDrawStarts,xe=this._multiDrawCounts,Ne=this._geometryInfo,Ve=this.perObjectFrustumCulled,We=this._indirectTexture,tt=We.image.data,Ot=h.isArrayCamera?kp:oh;Ve&&!h.isArrayCamera&&(qu.multiplyMatrices(h.projectionMatrix,h.matrixWorldInverse).multiply(this.matrixWorld),oh.setFromProjectionMatrix(qu,h.coordinateSystem,h.reversedDepth));let An=0;if(this.sortObjects){qu.copy(this.matrixWorld).invert(),Mf.setFromMatrixPosition(h.matrixWorld).applyMatrix4(qu),bu.set(0,0,-1).transformDirection(h.matrixWorld).transformDirection(qu);for(let Vn=0,nr=te.length;Vn0){const p=l[h[0]];if(p!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let y=0,T=p.length;yh)return;lh.applyMatrix4(ue.matrixWorld);const se=r.ray.origin.distanceTo(lh);if(!(ser.far))return{distance:se,point:Xm.clone().applyMatrix4(ue.matrixWorld),index:T,face:null,faceIndex:null,barycoord:null,object:ue}}const cp=new kn,Tg=new kn;class nd extends null{constructor(r,l){super(r,l),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const r=this.geometry;if(r.index===null){const l=r.attributes.position,h=[];for(let p=0,y=l.count;p0){const p=l[h[0]];if(p!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let y=0,T=p.length;yp.far)return;y.push({distance:se,distanceToRay:Math.sqrt(O),point:te,index:r,face:null,faceIndex:null,barycoord:null,object:T})}}class Kv extends null{constructor(r,l,h,p,y=vr,T=vr,O,te,se){super(r,l,h,p,y,T,O,te,se),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const xe=this;function Ne(){xe.needsUpdate=!0,xe._requestVideoFrameCallbackId=r.requestVideoFrameCallback(Ne)}"requestVideoFrameCallback"in r&&(this._requestVideoFrameCallbackId=r.requestVideoFrameCallback(Ne))}clone(){return new this.constructor(this.image).copy(this)}update(){const r=this.image;"requestVideoFrameCallback"in r===!1&&r.readyState>=r.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class jm extends null{constructor(r,l,h,p,y,T,O,te){super({},r,l,h,p,y,T,O,te),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(r){this.image=r,this.needsUpdate=!0}}class fp extends null{constructor(r,l){super({width:r,height:l}),this.isFramebufferTexture=!0,this.magFilter=cn,this.minFilter=cn,this.generateMipmaps=!1,this.needsUpdate=!0}}class rd extends null{constructor(r,l,h,p,y,T,O,te,se,xe,Ne,Ve){super(null,T,O,te,se,xe,p,y,Ne,Ve),this.isCompressedTexture=!0,this.image={width:l,height:h},this.mipmaps=r,this.flipY=!1,this.generateMipmaps=!1}}class Am extends null{constructor(r,l,h,p,y,T){super(r,l,h,y,T),this.isCompressedArrayTexture=!0,this.image.depth=p,this.wrapR=Vt,this.layerUpdates=new Set}addLayerUpdate(r){this.layerUpdates.add(r)}clearLayerUpdates(){this.layerUpdates.clear()}}class pm extends null{constructor(r,l,h){super(void 0,r[0].width,r[0].height,l,h,it),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=r}}class D0 extends ri{constructor(r,l,h,p,y,T,O,te,se){super(r,l,h,p,y,T,O,te,se),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Ym extends null{constructor(r,l,h=st,p,y,T,O=cn,te=cn,se,xe=Q,Ne=1){if(xe!==Q&&xe!==w)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const Ve={width:r,height:l,depth:Ne};super(Ve,p,y,T,O,te,xe,h,se),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(r){return super.copy(r),this.source=new br(Object.assign({},r.image)),this.compareFunction=r.compareFunction,this}toJSON(r){const l=super.toJSON(r);return this.compareFunction!==null&&(l.compareFunction=this.compareFunction),l}}class k0 extends null{constructor(r=null){super(),this.sourceTexture=r,this.isExternalTexture=!0}copy(r){return super.copy(r),this.sourceTexture=r.sourceTexture,this}}class gm extends Ui{constructor(r=1,l=1,h=4,p=8,y=1){super(),this.type="CapsuleGeometry",this.parameters={radius:r,height:l,capSegments:h,radialSegments:p,heightSegments:y},l=Math.max(0,l),h=Math.max(1,Math.floor(h)),p=Math.max(3,Math.floor(p)),y=Math.max(1,Math.floor(y));const T=[],O=[],te=[],se=[],xe=l/2,Ne=Math.PI/2*r,Ve=l,We=2*Ne+Ve,tt=h*2+y,Ot=p+1,An=new kn,un=new kn;for(let Un=0;Un<=tt;Un++){let Vn=0,nr=0,ii=0,pi=0;if(Un<=h){const ls=Un/h,ys=ls*Math.PI/2;nr=-xe-r*Math.cos(ys),ii=r*Math.sin(ys),pi=-r*Math.cos(ys),Vn=ls*Ne}else if(Un<=h+y){const ls=(Un-h)/y;nr=-xe+ls*l,ii=r,pi=0,Vn=Ne+ls*Ve}else{const ls=(Un-h-y)/h,ys=ls*Math.PI/2;nr=xe+r*Math.sin(ys),ii=r*Math.cos(ys),pi=r*Math.sin(ys),Vn=Ne+Ve+ls*Ne}const Bi=Math.max(0,Math.min(1,Vn/We));let mi=0;Un===0?mi=.5/p:Un===tt&&(mi=-.5/p);for(let ls=0;ls<=p;ls++){const ys=ls/p,Da=ys*Math.PI*2,Mo=Math.sin(Da),Ro=Math.cos(Da);un.x=-ii*Ro,un.y=nr,un.z=ii*Mo,O.push(un.x,un.y,un.z),An.set(-ii*Ro,pi,ii*Mo),An.normalize(),te.push(An.x,An.y,An.z),se.push(ys+mi,Bi)}if(Un>0){const ls=(Un-1)*Ot;for(let ys=0;ys0&&Vn(!0),l>0&&Vn(!1)),this.setIndex(xe),this.setAttribute("position",new ha(Ne,3)),this.setAttribute("normal",new ha(Ve,3)),this.setAttribute("uv",new ha(We,2));function Un(){const nr=new kn,ii=new kn;let pi=0;const Bi=(l-r)/h;for(let mi=0;mi<=y;mi++){const ls=[],ys=mi/y,Da=ys*(l-r)+r;for(let Mo=0;Mo<=p;Mo++){const Ro=Mo/p,du=Ro*te+O,ru=Math.sin(du),Zc=Math.cos(du);ii.x=Da*ru,ii.y=-ys*h+An,ii.z=Da*Zc,Ne.push(ii.x,ii.y,ii.z),nr.set(ru,Bi,Zc).normalize(),Ve.push(nr.x,nr.y,nr.z),We.push(Ro,1-ys),ls.push(tt++)}Ot.push(ls)}for(let mi=0;mi0||ls!==0)&&(xe.push(ys,Da,Ro),pi+=3),(l>0||ls!==y-1)&&(xe.push(Da,Mo,Ro),pi+=3)}se.addGroup(un,pi,0),un+=pi}function Vn(nr){const ii=tt,pi=new qi,Bi=new kn;let mi=0;const ls=nr===!0?r:l,ys=nr===!0?1:-1;for(let Mo=1;Mo<=p;Mo++)Ne.push(0,An*ys,0),Ve.push(0,ys,0),We.push(.5,.5),tt++;const Da=tt;for(let Mo=0;Mo<=p;Mo++){const du=Mo/p*te+O,ru=Math.cos(du),Zc=Math.sin(du);Bi.x=ls*Zc,Bi.y=An*ys,Bi.z=ls*ru,Ne.push(Bi.x,Bi.y,Bi.z),Ve.push(0,ys,0),pi.x=ru*.5+.5,pi.y=Zc*.5*ys+.5,We.push(pi.x,pi.y),tt++}for(let Mo=0;Mo.9&&Bi<.1&&(Vn<.2&&(T[Un+0]+=1),nr<.2&&(T[Un+2]+=1),ii<.2&&(T[Un+4]+=1))}}function Ve(Un){y.push(Un.x,Un.y,Un.z)}function We(Un,Vn){const nr=Un*3;Vn.x=r[nr+0],Vn.y=r[nr+1],Vn.z=r[nr+2]}function tt(){const Un=new kn,Vn=new kn,nr=new kn,ii=new kn,pi=new qi,Bi=new qi,mi=new qi;for(let ls=0,ys=0;ls0)te=p-1;else{te=p;break}if(p=te,h[p]===T)return p/(y-1);const xe=h[p],Ve=h[p+1]-xe,We=(T-xe)/Ve;return(p+We)/(y-1)}getTangent(r,l){let p=r-1e-4,y=r+1e-4;p<0&&(p=0),y>1&&(y=1);const T=this.getPoint(p),O=this.getPoint(y),te=l||(T.isVector2?new qi:new kn);return te.copy(O).sub(T).normalize(),te}getTangentAt(r,l){const h=this.getUtoTmapping(r);return this.getTangent(h,l)}computeFrenetFrames(r,l=!1){const h=new kn,p=[],y=[],T=[],O=new kn,te=new oi;for(let We=0;We<=r;We++){const tt=We/r;p[We]=this.getTangentAt(tt,new kn)}y[0]=new kn,T[0]=new kn;let se=Number.MAX_VALUE;const xe=Math.abs(p[0].x),Ne=Math.abs(p[0].y),Ve=Math.abs(p[0].z);xe<=se&&(se=xe,h.set(1,0,0)),Ne<=se&&(se=Ne,h.set(0,1,0)),Ve<=se&&h.set(0,0,1),O.crossVectors(p[0],h).normalize(),y[0].crossVectors(p[0],O),T[0].crossVectors(p[0],y[0]);for(let We=1;We<=r;We++){if(y[We]=y[We-1].clone(),T[We]=T[We-1].clone(),O.crossVectors(p[We-1],p[We]),O.length()>Number.EPSILON){O.normalize();const tt=Math.acos(ki(p[We-1].dot(p[We]),-1,1));y[We].applyMatrix4(te.makeRotationAxis(O,tt))}T[We].crossVectors(p[We],y[We])}if(l===!0){let We=Math.acos(ki(y[0].dot(y[r]),-1,1));We/=r,p[0].dot(O.crossVectors(y[0],y[r]))>0&&(We=-We);for(let tt=1;tt<=r;tt++)y[tt].applyMatrix4(te.makeRotationAxis(p[tt],We*tt)),T[tt].crossVectors(p[tt],y[tt])}return{tangents:p,normals:y,binormals:T}}clone(){return new this.constructor().copy(this)}copy(r){return this.arcLengthDivisions=r.arcLengthDivisions,this}toJSON(){const r={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return r.arcLengthDivisions=this.arcLengthDivisions,r.type=this.type,r}fromJSON(r){return this.arcLengthDivisions=r.arcLengthDivisions,this}}class Rh extends Cc{constructor(r=0,l=0,h=1,p=1,y=0,T=Math.PI*2,O=!1,te=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=r,this.aY=l,this.xRadius=h,this.yRadius=p,this.aStartAngle=y,this.aEndAngle=T,this.aClockwise=O,this.aRotation=te}getPoint(r,l=new qi){const h=l,p=Math.PI*2;let y=this.aEndAngle-this.aStartAngle;const T=Math.abs(y)p;)y-=p;y0?0:(Math.floor(Math.abs(O)/y)+1)*y:te===0&&O===y-1&&(O=y-2,te=1);let se,xe;this.closed||O>0?se=p[(O-1)%y]:(aA.subVectors(p[0],p[1]).add(p[0]),se=aA);const Ne=p[O%y],Ve=p[(O+1)%y];if(this.closed||O+2p.length-2?p.length-1:T+1],Ne=p[T>p.length-3?p.length-1:T+2];return h.set(Hh(O,te.x,se.x,xe.x,Ne.x),Hh(O,te.y,se.y,xe.y,Ne.y)),h}copy(r){super.copy(r),this.points=[];for(let l=0,h=r.points.length;l=h){const T=p[y]-h,O=this.curves[y],te=O.getLength(),se=te===0?0:1-T/te;return O.getPointAt(se,l)}y++}return null}getLength(){const r=this.getCurveLengths();return r[r.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const r=[];let l=0;for(let h=0,p=this.curves.length;h1&&!l[l.length-1].equals(l[0])&&l.push(l[0]),l}copy(r){super.copy(r),this.curves=[];for(let l=0,h=r.curves.length;l0){const Ne=se.getPoint(0);Ne.equals(this.currentPoint)||this.lineTo(Ne.x,Ne.y)}this.curves.push(se);const xe=se.getPoint(1);return this.currentPoint.copy(xe),this}copy(r){return super.copy(r),this.currentPoint.copy(r.currentPoint),this}toJSON(){const r=super.toJSON();return r.currentPoint=this.currentPoint.toArray(),r}fromJSON(r){return super.fromJSON(r),this.currentPoint.fromArray(r.currentPoint),this}}class mn extends wn{constructor(r){super(r),this.uuid=Gr(),this.type="Shape",this.holes=[]}getPointsHoles(r){const l=[];for(let h=0,p=this.holes.length;h80*l){O=ue[0],te=ue[1];let xe=O,Ne=te;for(let Ve=l;Vexe&&(xe=We),tt>Ne&&(Ne=tt)}se=Math.max(xe-O,Ne-te),se=se!==0?32767/se:0}return Zn(y,T,l,O,te,se,0),T}function ir(ue,r,l,h,p){let y;if(p===Qs(ue,r,l,h)>0)for(let T=r;T=r;T-=h)y=ur(T/h|0,ue[T],ue[T+1],y);return y&&$(y,y.next)&&(Ir(y),y=y.next),y}function tr(ue,r){if(!ue)return ue;r||(r=ue);let l=ue,h;do if(h=!1,!l.steiner&&($(l,l.next)||R(l.prev,l,l.next)===0)){if(Ir(l),l=r=l.prev,l===l.next)break;h=!0}else l=l.next;while(h||l!==r);return r}function Zn(ue,r,l,h,p,y,T){if(!ue)return;!T&&y&&Zs(ue,h,p,y);let O=ue;for(;ue.prev!==ue.next;){const te=ue.prev,se=ue.next;if(y?ni(ue,h,p,y):Tr(ue)){r.push(te.i,ue.i,se.i),Ir(ue),ue=se.next,O=se.next;continue}if(ue=se,ue===O){T?T===1?(ue=ns(tr(ue),r),Zn(ue,r,l,h,p,y,2)):T===2&&is(ue,r,l,h,p,y):Zn(tr(ue),r,l,h,p,y,1);break}}}function Tr(ue){const r=ue.prev,l=ue,h=ue.next;if(R(r,l,h)>=0)return!1;const p=r.x,y=l.x,T=h.x,O=r.y,te=l.y,se=h.y,xe=Math.min(p,y,T),Ne=Math.min(O,te,se),Ve=Math.max(p,y,T),We=Math.max(O,te,se);let tt=h.next;for(;tt!==r;){if(tt.x>=xe&&tt.x<=Ve&&tt.y>=Ne&&tt.y<=We&&Ys(p,O,y,te,T,se,tt.x,tt.y)&&R(tt.prev,tt,tt.next)>=0)return!1;tt=tt.next}return!0}function ni(ue,r,l,h){const p=ue.prev,y=ue,T=ue.next;if(R(p,y,T)>=0)return!1;const O=p.x,te=y.x,se=T.x,xe=p.y,Ne=y.y,Ve=T.y,We=Math.min(O,te,se),tt=Math.min(xe,Ne,Ve),Ot=Math.max(O,te,se),An=Math.max(xe,Ne,Ve),un=Po(We,tt,r,l,h),Un=Po(Ot,An,r,l,h);let Vn=ue.prevZ,nr=ue.nextZ;for(;Vn&&Vn.z>=un&&nr&&nr.z<=Un;){if(Vn.x>=We&&Vn.x<=Ot&&Vn.y>=tt&&Vn.y<=An&&Vn!==p&&Vn!==T&&Ys(O,xe,te,Ne,se,Ve,Vn.x,Vn.y)&&R(Vn.prev,Vn,Vn.next)>=0||(Vn=Vn.prevZ,nr.x>=We&&nr.x<=Ot&&nr.y>=tt&&nr.y<=An&&nr!==p&&nr!==T&&Ys(O,xe,te,Ne,se,Ve,nr.x,nr.y)&&R(nr.prev,nr,nr.next)>=0))return!1;nr=nr.nextZ}for(;Vn&&Vn.z>=un;){if(Vn.x>=We&&Vn.x<=Ot&&Vn.y>=tt&&Vn.y<=An&&Vn!==p&&Vn!==T&&Ys(O,xe,te,Ne,se,Ve,Vn.x,Vn.y)&&R(Vn.prev,Vn,Vn.next)>=0)return!1;Vn=Vn.prevZ}for(;nr&&nr.z<=Un;){if(nr.x>=We&&nr.x<=Ot&&nr.y>=tt&&nr.y<=An&&nr!==p&&nr!==T&&Ys(O,xe,te,Ne,se,Ve,nr.x,nr.y)&&R(nr.prev,nr,nr.next)>=0)return!1;nr=nr.nextZ}return!0}function ns(ue,r){let l=ue;do{const h=l.prev,p=l.next.next;!$(h,p)&&K(h,l,l.next,p)&&dn(h,p)&&dn(p,h)&&(r.push(h.i,l.i,p.i),Ir(l),Ir(l.next),l=ue=p),l=l.next}while(l!==ue);return tr(l)}function is(ue,r,l,h,p,y){let T=ue;do{let O=T.next.next;for(;O!==T.prev;){if(T.i!==O.i&&U(T,O)){let te=Ar(T,O);T=tr(T,T.next),te=tr(te,te.next),Zn(T,r,l,h,p,y,0),Zn(te,r,l,h,p,y,0);return}O=O.next}T=T.next}while(T!==ue)}function bi(ue,r,l,h){const p=[];for(let y=0,T=r.length;y=l.next.y&&l.next.y!==l.y){const Ne=l.x+(p-l.y)*(l.next.x-l.x)/(l.next.y-l.y);if(Ne<=h&&Ne>y&&(y=Ne,T=l.x=l.x&&l.x>=te&&h!==l.x&&El(pT.x||l.x===T.x&&Hs(T,l)))&&(T=l,xe=Ne)}l=l.next}while(l!==O);return T}function Hs(ue,r){return R(ue.prev,ue,r.prev)<0&&R(r.next,ue,ue.next)<0}function Zs(ue,r,l,h){let p=ue;do p.z===0&&(p.z=Po(p.x,p.y,r,l,h)),p.prevZ=p.prev,p.nextZ=p.next,p=p.next;while(p!==ue);p.prevZ.nextZ=null,p.prevZ=null,Ia(p)}function Ia(ue){let r,l=1;do{let h=ue,p;ue=null;let y=null;for(r=0;h;){r++;let T=h,O=0;for(let se=0;se0||te>0&&T;)O!==0&&(te===0||!T||h.z<=T.z)?(p=h,h=h.nextZ,O--):(p=T,T=T.nextZ,te--),y?y.nextZ=p:ue=p,p.prevZ=y,y=p;h=T}y.nextZ=null,l*=2}while(r>1);return ue}function Po(ue,r,l,h,p){return ue=(ue-l)*p|0,r=(r-h)*p|0,ue=(ue|ue<<8)&16711935,ue=(ue|ue<<4)&252645135,ue=(ue|ue<<2)&858993459,ue=(ue|ue<<1)&1431655765,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,ue|r<<1}function Ml(ue){let r=ue,l=ue;do(r.x=(ue-T)*(y-O)&&(ue-T)*(h-O)>=(l-T)*(r-O)&&(l-T)*(y-O)>=(p-T)*(h-O)}function Ys(ue,r,l,h,p,y,T,O){return!(ue===T&&r===O)&&El(ue,r,l,h,p,y,T,O)}function U(ue,r){return ue.next.i!==r.i&&ue.prev.i!==r.i&&!Ft(ue,r)&&(dn(ue,r)&&dn(r,ue)&&fn(ue,r)&&(R(ue.prev,ue,r.prev)||R(ue,r.prev,r))||$(ue,r)&&R(ue.prev,ue,ue.next)>0&&R(r.prev,r,r.next)>0)}function R(ue,r,l){return(r.y-ue.y)*(l.x-r.x)-(r.x-ue.x)*(l.y-r.y)}function $(ue,r){return ue.x===r.x&&ue.y===r.y}function K(ue,r,l,h){const p=et(R(ue,r,l)),y=et(R(ue,r,h)),T=et(R(l,h,ue)),O=et(R(l,h,r));return!!(p!==y&&T!==O||p===0&&_e(ue,l,r)||y===0&&_e(ue,h,r)||T===0&&_e(l,ue,h)||O===0&&_e(l,r,h))}function _e(ue,r,l){return r.x<=Math.max(ue.x,l.x)&&r.x>=Math.min(ue.x,l.x)&&r.y<=Math.max(ue.y,l.y)&&r.y>=Math.min(ue.y,l.y)}function et(ue){return ue>0?1:ue<0?-1:0}function Ft(ue,r){let l=ue;do{if(l.i!==ue.i&&l.next.i!==ue.i&&l.i!==r.i&&l.next.i!==r.i&&K(l,l.next,ue,r))return!0;l=l.next}while(l!==ue);return!1}function dn(ue,r){return R(ue.prev,ue,ue.next)<0?R(ue,r,ue.next)>=0&&R(ue,ue.prev,r)>=0:R(ue,r,ue.prev)<0||R(ue,ue.next,r)<0}function fn(ue,r){let l=ue,h=!1;const p=(ue.x+r.x)/2,y=(ue.y+r.y)/2;do l.y>y!=l.next.y>y&&l.next.y!==l.y&&p<(l.next.x-l.x)*(y-l.y)/(l.next.y-l.y)+l.x&&(h=!h),l=l.next;while(l!==ue);return h}function Ar(ue,r){const l=fi(ue.i,ue.x,ue.y),h=fi(r.i,r.x,r.y),p=ue.next,y=r.prev;return ue.next=r,r.prev=ue,l.next=p,p.prev=l,h.next=l,l.prev=h,y.next=h,h.prev=y,h}function ur(ue,r,l,h){const p=fi(ue,r,l);return h?(p.next=h.next,p.prev=h,h.next.prev=p,h.next=p):(p.prev=p,p.next=p),p}function Ir(ue){ue.next.prev=ue.prev,ue.prev.next=ue.next,ue.prevZ&&(ue.prevZ.nextZ=ue.nextZ),ue.nextZ&&(ue.nextZ.prevZ=ue.prevZ)}function fi(ue,r,l){return{i:ue,x:r,y:l,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Qs(ue,r,l,h){let p=0;for(let y=r,T=l-h;y2&&ue[r-1].equals(ue[0])&&ue.pop()}function fa(ue,r){for(let l=0;lNumber.EPSILON){const Rd=Math.sqrt(nf),qx=Math.sqrt(nc*nc+Kc*Kc),Jx=ma.x-Qu/Rd,eb=ma.y+Io/Rd,Fw=ya.x-Kc/qx,Pw=ya.y+nc/qx,vy=((Fw-Jx)*Kc-(Pw-eb)*nc)/(Io*Kc-Qu*nc);Za=Jx+Io*vy-Xs.x,Ga=eb+Qu*vy-Xs.y;const tb=Za*Za+Ga*Ga;if(tb<=2)return new qi(Za,Ga);Tl=Math.sqrt(tb/2)}else{let Rd=!1;Io>Number.EPSILON?nc>Number.EPSILON&&(Rd=!0):Io<-Number.EPSILON?nc<-Number.EPSILON&&(Rd=!0):Math.sign(Qu)===Math.sign(Kc)&&(Rd=!0),Rd?(Za=-Qu,Ga=Io,Tl=Math.sqrt(nf)):(Za=Io,Ga=Qu,Tl=Math.sqrt(nf/2))}return new qi(Za/Tl,Ga/Tl)}const Ac=[];for(let Xs=0,ma=ru.length,ya=ma-1,Za=Xs+1;Xs=0;Xs--){const ma=Xs/An,ya=We*Math.cos(ma*Math.PI/2),Za=tt*Math.sin(ma*Math.PI/2)+Ot;for(let Ga=0,Tl=ru.length;Ga=0;){const Za=ya;let Ga=ya-1;Ga<0&&(Ga=Xs.length-1);for(let Tl=0,Io=xe+An*2;Tl0)&&We.push(Vn,nr,pi),(un!==h-1||te0!=r>0&&this.version++,this._anisotropy=r}get clearcoat(){return this._clearcoat}set clearcoat(r){this._clearcoat>0!=r>0&&this.version++,this._clearcoat=r}get iridescence(){return this._iridescence}set iridescence(r){this._iridescence>0!=r>0&&this.version++,this._iridescence=r}get dispersion(){return this._dispersion}set dispersion(r){this._dispersion>0!=r>0&&this.version++,this._dispersion=r}get sheen(){return this._sheen}set sheen(r){this._sheen>0!=r>0&&this.version++,this._sheen=r}get transmission(){return this._transmission}set transmission(r){this._transmission>0!=r>0&&this.version++,this._transmission=r}copy(r){return super.copy(r),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=r.anisotropy,this.anisotropyRotation=r.anisotropyRotation,this.anisotropyMap=r.anisotropyMap,this.clearcoat=r.clearcoat,this.clearcoatMap=r.clearcoatMap,this.clearcoatRoughness=r.clearcoatRoughness,this.clearcoatRoughnessMap=r.clearcoatRoughnessMap,this.clearcoatNormalMap=r.clearcoatNormalMap,this.clearcoatNormalScale.copy(r.clearcoatNormalScale),this.dispersion=r.dispersion,this.ior=r.ior,this.iridescence=r.iridescence,this.iridescenceMap=r.iridescenceMap,this.iridescenceIOR=r.iridescenceIOR,this.iridescenceThicknessRange=[...r.iridescenceThicknessRange],this.iridescenceThicknessMap=r.iridescenceThicknessMap,this.sheen=r.sheen,this.sheenColor.copy(r.sheenColor),this.sheenColorMap=r.sheenColorMap,this.sheenRoughness=r.sheenRoughness,this.sheenRoughnessMap=r.sheenRoughnessMap,this.transmission=r.transmission,this.transmissionMap=r.transmissionMap,this.thickness=r.thickness,this.thicknessMap=r.thicknessMap,this.attenuationDistance=r.attenuationDistance,this.attenuationColor.copy(r.attenuationColor),this.specularIntensity=r.specularIntensity,this.specularIntensityMap=r.specularIntensityMap,this.specularColor.copy(r.specularColor),this.specularColorMap=r.specularColorMap,this}}class Nf extends ku{constructor(r){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Ea(16777215),this.specular=new Ea(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ea(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=bo,this.normalScale=new qi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Rs,this.combine=on,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.specular.copy(r.specular),this.shininess=r.shininess,this.map=r.map,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.emissive.copy(r.emissive),this.emissiveMap=r.emissiveMap,this.emissiveIntensity=r.emissiveIntensity,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.specularMap=r.specularMap,this.alphaMap=r.alphaMap,this.envMap=r.envMap,this.envMapRotation.copy(r.envMapRotation),this.combine=r.combine,this.reflectivity=r.reflectivity,this.refractionRatio=r.refractionRatio,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.flatShading=r.flatShading,this.fog=r.fog,this}}class Td extends null{constructor(r){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Ea(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ea(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=bo,this.normalScale=new qi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.gradientMap=r.gradientMap,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.emissive.copy(r.emissive),this.emissiveMap=r.emissiveMap,this.emissiveIntensity=r.emissiveIntensity,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.alphaMap=r.alphaMap,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.fog=r.fog,this}}class Gp extends null{constructor(r){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=bo,this.normalScale=new qi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(r)}copy(r){return super.copy(r),this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.flatShading=r.flatShading,this}}class Hp extends null{constructor(r){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Ea(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ea(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=bo,this.normalScale=new qi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Rs,this.combine=on,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.emissive.copy(r.emissive),this.emissiveMap=r.emissiveMap,this.emissiveIntensity=r.emissiveIntensity,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.specularMap=r.specularMap,this.alphaMap=r.alphaMap,this.envMap=r.envMap,this.envMapRotation.copy(r.envMapRotation),this.combine=r.combine,this.reflectivity=r.reflectivity,this.refractionRatio=r.refractionRatio,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.flatShading=r.flatShading,this.fog=r.fog,this}}class Ex extends null{constructor(r){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=$a,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(r)}copy(r){return super.copy(r),this.depthPacking=r.depthPacking,this.map=r.map,this.alphaMap=r.alphaMap,this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this}}class Cx extends null{constructor(r){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(r)}copy(r){return super.copy(r),this.map=r.map,this.alphaMap=r.alphaMap,this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this}}class Tx extends null{constructor(r){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Ea(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=bo,this.normalScale=new qi(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.defines={MATCAP:""},this.color.copy(r.color),this.matcap=r.matcap,this.map=r.map,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.alphaMap=r.alphaMap,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.flatShading=r.flatShading,this.fog=r.fog,this}}class $v extends null{constructor(r){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(r)}copy(r){return super.copy(r),this.scale=r.scale,this.dashSize=r.dashSize,this.gapSize=r.gapSize,this}}function Qp(ue,r){return!ue||ue.constructor===r?ue:typeof r.BYTES_PER_ELEMENT=="number"?new r(ue):Array.prototype.slice.call(ue)}function Xv(ue){return ArrayBuffer.isView(ue)&&!(ue instanceof DataView)}function jv(ue){function r(p,y){return ue[p]-ue[y]}const l=ue.length,h=new Array(l);for(let p=0;p!==l;++p)h[p]=p;return h.sort(r),h}function V0(ue,r,l){const h=ue.length,p=new ue.constructor(h);for(let y=0,T=0;T!==h;++y){const O=l[y]*r;for(let te=0;te!==r;++te)p[T++]=ue[O+te]}return p}function qm(ue,r,l,h){let p=1,y=ue[0];for(;y!==void 0&&y[h]===void 0;)y=ue[p++];if(y===void 0)return;let T=y[h];if(T!==void 0)if(Array.isArray(T))do T=y[h],T!==void 0&&(r.push(y.time),l.push(...T)),y=ue[p++];while(y!==void 0);else if(T.toArray!==void 0)do T=y[h],T!==void 0&&(r.push(y.time),T.toArray(l,l.length)),y=ue[p++];while(y!==void 0);else do T=y[h],T!==void 0&&(r.push(y.time),l.push(T)),y=ue[p++];while(y!==void 0)}function Bx(ue,r,l,h,p=30){const y=ue.clone();y.name=r;const T=[];for(let te=0;te=h)){Ne.push(se.times[We]);for(let Ot=0;Oty.tracks[te].times[0]&&(O=y.tracks[te].times[0]);for(let te=0;te=O.times[tt]){const un=tt*Ne+xe,Un=un+Ne-xe;Ot=O.values.slice(un,Un)}else{const un=O.createInterpolant(),Un=xe,Vn=Ne-xe;un.evaluate(y),Ot=un.resultBuffer.slice(Un,Vn)}te==="quaternion"&&new Du().fromArray(Ot).normalize().conjugate().toArray(Ot);const An=se.times.length;for(let un=0;un=y)){const O=l[1];r=y)break t}T=h,h=0;break n}break e}for(;h>>1;rl;)--T;if(++T,y!==0||T!==p){y>=T&&(T=Math.max(T,1),y=T-1);const O=this.getValueSize();this.times=h.slice(y,T),this.values=this.values.slice(y*O,T*O)}return this}validate(){let r=!0;const l=this.getValueSize();l-Math.floor(l)!==0&&(Wa("KeyframeTrack: Invalid value size in track.",this),r=!1);const h=this.times,p=this.values,y=h.length;y===0&&(Wa("KeyframeTrack: Track is empty.",this),r=!1);let T=null;for(let O=0;O!==y;O++){const te=h[O];if(typeof te=="number"&&isNaN(te)){Wa("KeyframeTrack: Time is not a valid number.",this,O,te),r=!1;break}if(T!==null&&T>te){Wa("KeyframeTrack: Out of order keys.",this,O,te,T),r=!1;break}T=te}if(p!==void 0&&Xv(p))for(let O=0,te=p.length;O!==te;++O){const se=p[O];if(isNaN(se)){Wa("KeyframeTrack: Value is not a valid number.",this,O,se),r=!1;break}}return r}optimize(){const r=this.times.slice(),l=this.values.slice(),h=this.getValueSize(),p=this.getInterpolation()===Ii,y=r.length-1;let T=1;for(let O=1;O0){r[T]=r[y];for(let O=y*h,te=T*h,se=0;se!==h;++se)l[te+se]=l[O+se];++T}return T!==r.length?(this.times=r.slice(0,T),this.values=l.slice(0,T*h)):(this.times=r,this.values=l),this}clone(){const r=this.times.slice(),l=this.values.slice(),h=this.constructor,p=new h(this.name,r,l);return p.createInterpolant=this.createInterpolant,p}}tf.prototype.ValueTypeName="",tf.prototype.TimeBufferType=Float32Array,tf.prototype.ValueBufferType=Float32Array,tf.prototype.DefaultInterpolation=$r;class bm extends tf{constructor(r,l,h){super(r,l,h)}}bm.prototype.ValueTypeName="bool",bm.prototype.ValueBufferType=Array,bm.prototype.DefaultInterpolation=Rr,bm.prototype.InterpolantFactoryMethodLinear=void 0,bm.prototype.InterpolantFactoryMethodSmooth=void 0;class Ix extends tf{constructor(r,l,h,p){super(r,l,h,p)}}Ix.prototype.ValueTypeName="color";class Jv extends tf{constructor(r,l,h,p){super(r,l,h,p)}}Jv.prototype.ValueTypeName="number";class z0 extends xm{constructor(r,l,h,p){super(r,l,h,p)}interpolate_(r,l,h,p){const y=this.resultBuffer,T=this.sampleValues,O=this.valueSize,te=(h-l)/(p-l);let se=r*O;for(let xe=se+O;se!==xe;se+=4)Du.slerpFlat(y,0,T,se-O,T,se,te);return y}}class G0 extends tf{constructor(r,l,h,p){super(r,l,h,p)}InterpolantFactoryMethodLinear(r){return new z0(this.times,this.values,this.getValueSize(),r)}}G0.prototype.ValueTypeName="quaternion",G0.prototype.InterpolantFactoryMethodSmooth=void 0;class Rg extends tf{constructor(r,l,h){super(r,l,h)}}Rg.prototype.ValueTypeName="string",Rg.prototype.ValueBufferType=Array,Rg.prototype.DefaultInterpolation=Rr,Rg.prototype.InterpolantFactoryMethodLinear=void 0,Rg.prototype.InterpolantFactoryMethodSmooth=void 0;class H0 extends tf{constructor(r,l,h,p){super(r,l,h,p)}}H0.prototype.ValueTypeName="vector";class Bd{constructor(r="",l=-1,h=[],p=Cs){this.name=r,this.tracks=h,this.duration=l,this.blendMode=p,this.uuid=Gr(),this.userData={},this.duration<0&&this.resetDuration()}static parse(r){const l=[],h=r.tracks,p=1/(r.fps||1);for(let T=0,O=h.length;T!==O;++T)l.push(Nx(h[T]).scale(p));const y=new this(r.name,r.duration,l,r.blendMode);return y.uuid=r.uuid,y.userData=JSON.parse(r.userData||"{}"),y}static toJSON(r){const l=[],h=r.tracks,p={name:r.name,duration:r.duration,tracks:l,uuid:r.uuid,blendMode:r.blendMode,userData:JSON.stringify(r.userData)};for(let y=0,T=h.length;y!==T;++y)l.push(tf.toJSON(h[y]));return p}static CreateFromMorphTargetSequence(r,l,h,p){const y=l.length,T=[];for(let O=0;O1){const Ne=xe[1];let Ve=p[Ne];Ve||(p[Ne]=Ve=[]),Ve.push(se)}}const T=[];for(const O in p)T.push(this.CreateFromMorphTargetSequence(O,p[O],l,h));return T}static parseAnimation(r,l){if(na("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!r)return Wa("AnimationClip: No animation in JSONLoader data."),null;const h=function(Ne,Ve,We,tt,Ot){if(We.length!==0){const An=[],un=[];qm(We,An,un,tt),An.length!==0&&Ot.push(new Ne(Ve,An,un))}},p=[],y=r.name||"default",T=r.fps||30,O=r.blendMode;let te=r.length||-1;const se=r.hierarchy||[];for(let Ne=0;Ne{l&&l(y),this.manager.itemEnd(r)},0),y;if(Pf[r]!==void 0){Pf[r].push({onLoad:l,onProgress:h,onError:p});return}Pf[r]=[],Pf[r].push({onLoad:l,onProgress:h,onError:p});const T=new Request(r,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),O=this.mimeType,te=this.responseType;fetch(T).then(se=>{if(se.status===200||se.status===0){if(se.status===0&&na("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||se.body===void 0||se.body.getReader===void 0)return se;const xe=Pf[r],Ne=se.body.getReader(),Ve=se.headers.get("X-File-Size")||se.headers.get("Content-Length"),We=Ve?parseInt(Ve):0,tt=We!==0;let Ot=0;const An=new ReadableStream({start(un){Un();function Un(){Ne.read().then(({done:Vn,value:nr})=>{if(Vn)un.close();else{Ot+=nr.byteLength;const ii=new ProgressEvent("progress",{lengthComputable:tt,loaded:Ot,total:We});for(let pi=0,Bi=xe.length;pi{un.error(Vn)})}}});return new Response(An)}else throw new W0(`fetch for "${se.url}" responded with ${se.status}: ${se.statusText}`,se)}).then(se=>{switch(te){case"arraybuffer":return se.arrayBuffer();case"blob":return se.blob();case"document":return se.text().then(xe=>new DOMParser().parseFromString(xe,O));case"json":return se.json();default:if(O==="")return se.text();{const Ne=/charset="?([^;"\s]*)"?/i.exec(O),Ve=Ne&&Ne[1]?Ne[1].toLowerCase():void 0,We=new TextDecoder(Ve);return se.arrayBuffer().then(tt=>We.decode(tt))}}}).then(se=>{Ff.add(`file:${r}`,se);const xe=Pf[r];delete Pf[r];for(let Ne=0,Ve=xe.length;Ne{const xe=Pf[r];if(xe===void 0)throw this.manager.itemError(r),se;delete Pf[r];for(let Ne=0,Ve=xe.length;Ne{this.manager.itemEnd(r)}),this.manager.itemStart(r)}setResponseType(r){return this.responseType=r,this}setMimeType(r){return this.mimeType=r,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class PE extends null{constructor(r){super(r)}load(r,l,h,p){const y=this,T=new Wp(this.manager);T.setPath(this.path),T.setRequestHeader(this.requestHeader),T.setWithCredentials(this.withCredentials),T.load(r,function(O){try{l(y.parse(JSON.parse(O)))}catch(te){p?p(te):Wa(te),y.manager.itemError(r)}},h,p)}parse(r){const l=[];for(let h=0;h0:p.vertexColors=r.vertexColors),r.uniforms!==void 0)for(const y in r.uniforms){const T=r.uniforms[y];switch(p.uniforms[y]={},T.type){case"t":p.uniforms[y].value=h(T.value);break;case"c":p.uniforms[y].value=new Ea().setHex(T.value);break;case"v2":p.uniforms[y].value=new qi().fromArray(T.value);break;case"v3":p.uniforms[y].value=new kn().fromArray(T.value);break;case"v4":p.uniforms[y].value=new ai().fromArray(T.value);break;case"m3":p.uniforms[y].value=new vl().fromArray(T.value);break;case"m4":p.uniforms[y].value=new oi().fromArray(T.value);break;default:p.uniforms[y].value=T.value}}if(r.defines!==void 0&&(p.defines=r.defines),r.vertexShader!==void 0&&(p.vertexShader=r.vertexShader),r.fragmentShader!==void 0&&(p.fragmentShader=r.fragmentShader),r.glslVersion!==void 0&&(p.glslVersion=r.glslVersion),r.extensions!==void 0)for(const y in r.extensions)p.extensions[y]=r.extensions[y];if(r.lights!==void 0&&(p.lights=r.lights),r.clipping!==void 0&&(p.clipping=r.clipping),r.size!==void 0&&(p.size=r.size),r.sizeAttenuation!==void 0&&(p.sizeAttenuation=r.sizeAttenuation),r.map!==void 0&&(p.map=h(r.map)),r.matcap!==void 0&&(p.matcap=h(r.matcap)),r.alphaMap!==void 0&&(p.alphaMap=h(r.alphaMap)),r.bumpMap!==void 0&&(p.bumpMap=h(r.bumpMap)),r.bumpScale!==void 0&&(p.bumpScale=r.bumpScale),r.normalMap!==void 0&&(p.normalMap=h(r.normalMap)),r.normalMapType!==void 0&&(p.normalMapType=r.normalMapType),r.normalScale!==void 0){let y=r.normalScale;Array.isArray(y)===!1&&(y=[y,y]),p.normalScale=new qi().fromArray(y)}return r.displacementMap!==void 0&&(p.displacementMap=h(r.displacementMap)),r.displacementScale!==void 0&&(p.displacementScale=r.displacementScale),r.displacementBias!==void 0&&(p.displacementBias=r.displacementBias),r.roughnessMap!==void 0&&(p.roughnessMap=h(r.roughnessMap)),r.metalnessMap!==void 0&&(p.metalnessMap=h(r.metalnessMap)),r.emissiveMap!==void 0&&(p.emissiveMap=h(r.emissiveMap)),r.emissiveIntensity!==void 0&&(p.emissiveIntensity=r.emissiveIntensity),r.specularMap!==void 0&&(p.specularMap=h(r.specularMap)),r.specularIntensityMap!==void 0&&(p.specularIntensityMap=h(r.specularIntensityMap)),r.specularColorMap!==void 0&&(p.specularColorMap=h(r.specularColorMap)),r.envMap!==void 0&&(p.envMap=h(r.envMap)),r.envMapRotation!==void 0&&p.envMapRotation.fromArray(r.envMapRotation),r.envMapIntensity!==void 0&&(p.envMapIntensity=r.envMapIntensity),r.reflectivity!==void 0&&(p.reflectivity=r.reflectivity),r.refractionRatio!==void 0&&(p.refractionRatio=r.refractionRatio),r.lightMap!==void 0&&(p.lightMap=h(r.lightMap)),r.lightMapIntensity!==void 0&&(p.lightMapIntensity=r.lightMapIntensity),r.aoMap!==void 0&&(p.aoMap=h(r.aoMap)),r.aoMapIntensity!==void 0&&(p.aoMapIntensity=r.aoMapIntensity),r.gradientMap!==void 0&&(p.gradientMap=h(r.gradientMap)),r.clearcoatMap!==void 0&&(p.clearcoatMap=h(r.clearcoatMap)),r.clearcoatRoughnessMap!==void 0&&(p.clearcoatRoughnessMap=h(r.clearcoatRoughnessMap)),r.clearcoatNormalMap!==void 0&&(p.clearcoatNormalMap=h(r.clearcoatNormalMap)),r.clearcoatNormalScale!==void 0&&(p.clearcoatNormalScale=new qi().fromArray(r.clearcoatNormalScale)),r.iridescenceMap!==void 0&&(p.iridescenceMap=h(r.iridescenceMap)),r.iridescenceThicknessMap!==void 0&&(p.iridescenceThicknessMap=h(r.iridescenceThicknessMap)),r.transmissionMap!==void 0&&(p.transmissionMap=h(r.transmissionMap)),r.thicknessMap!==void 0&&(p.thicknessMap=h(r.thicknessMap)),r.anisotropyMap!==void 0&&(p.anisotropyMap=h(r.anisotropyMap)),r.sheenColorMap!==void 0&&(p.sheenColorMap=h(r.sheenColorMap)),r.sheenRoughnessMap!==void 0&&(p.sheenRoughnessMap=h(r.sheenRoughnessMap)),p}setTextures(r){return this.textures=r,this}createMaterialFromType(r){return t0.createMaterialFromType(r)}static createMaterialFromType(r){const l={ShadowMaterial:GA,SpriteMaterial:Fp,RawShaderMaterial:sd,ShaderMaterial:bd,PointsMaterial:LA,MeshPhysicalMaterial:ef,MeshStandardMaterial:lA,MeshPhongMaterial:Nf,MeshToonMaterial:Td,MeshNormalMaterial:Gp,MeshLambertMaterial:Hp,MeshDepthMaterial:Ex,MeshDistanceMaterial:Cx,MeshBasicMaterial:Dh,MeshMatcapMaterial:Tx,LineDashedMaterial:$v,LineBasicMaterial:Wc,Material:ku};return new l[r]}}class X0{static extractUrlBase(r){const l=r.lastIndexOf("/");return l===-1?"./":r.slice(0,l+1)}static resolveURL(r,l){return typeof r!="string"||r===""?"":(/^https?:\/\//i.test(l)&&/^\//.test(r)&&(l=l.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(r)||/^data:.*,.*$/i.test(r)||/^blob:.*$/i.test(r)?r:l+r)}}class kx extends null{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(r){return super.copy(r),this.instanceCount=r.instanceCount,this}toJSON(){const r=super.toJSON();return r.instanceCount=this.instanceCount,r.isInstancedBufferGeometry=!0,r}}class Vx extends null{constructor(r){super(r)}load(r,l,h,p){const y=this,T=new Wp(y.manager);T.setPath(y.path),T.setRequestHeader(y.requestHeader),T.setWithCredentials(y.withCredentials),T.load(r,function(O){try{l(y.parse(JSON.parse(O)))}catch(te){p?p(te):Wa(te),y.manager.itemError(r)}},h,p)}parse(r){const l={},h={};function p(We,tt){if(l[tt]!==void 0)return l[tt];const An=We.interleavedBuffers[tt],un=y(We,An.buffer),Un=gl(An.type,un),Vn=new rh(Un,An.stride);return Vn.uuid=An.uuid,l[tt]=Vn,Vn}function y(We,tt){if(h[tt]!==void 0)return h[tt];const An=We.arrayBuffers[tt],un=new Uint32Array(An).buffer;return h[tt]=un,un}const T=r.isInstancedBufferGeometry?new kx:new Ui,O=r.data.index;if(O!==void 0){const We=gl(O.type,O.array);T.setIndex(new Ql(We,1))}const te=r.data.attributes;for(const We in te){const tt=te[We];let Ot;if(tt.isInterleavedBufferAttribute){const An=p(r.data,tt.data);Ot=new ih(An,tt.itemSize,tt.offset,tt.normalized)}else{const An=gl(tt.type,tt.array),un=tt.isInstancedBufferAttribute?eA:Ql;Ot=new un(An,tt.itemSize,tt.normalized)}tt.name!==void 0&&(Ot.name=tt.name),tt.usage!==void 0&&Ot.setUsage(tt.usage),T.setAttribute(We,Ot)}const se=r.data.morphAttributes;if(se)for(const We in se){const tt=se[We],Ot=[];for(let An=0,un=tt.length;An0){const te=new Fx(l);y=new Z0(te),y.setCrossOrigin(this.crossOrigin);for(let se=0,xe=r.length;se0){p=new Z0(this.manager),p.setCrossOrigin(this.crossOrigin);for(let T=0,O=r.length;T{let An=null,un=null;return Ot.boundingBox!==void 0&&(An=new zi().fromJSON(Ot.boundingBox)),Ot.boundingSphere!==void 0&&(un=new gn().fromJSON(Ot.boundingSphere)),fd(rl({},Ot),{boundingBox:An,boundingSphere:un})}),T._instanceInfo=r.instanceInfo,T._availableInstanceIds=r._availableInstanceIds,T._availableGeometryIds=r._availableGeometryIds,T._nextIndexStart=r.nextIndexStart,T._nextVertexStart=r.nextVertexStart,T._geometryCount=r.geometryCount,T._maxInstanceCount=r.maxInstanceCount,T._maxVertexCount=r.maxVertexCount,T._maxIndexCount=r.maxIndexCount,T._geometryInitialized=r.geometryInitialized,T._matricesTexture=se(r.matricesTexture.uuid),T._indirectTexture=se(r.indirectTexture.uuid),r.colorsTexture!==void 0&&(T._colorsTexture=se(r.colorsTexture.uuid)),r.boundingSphere!==void 0&&(T.boundingSphere=new gn().fromJSON(r.boundingSphere)),r.boundingBox!==void 0&&(T.boundingBox=new zi().fromJSON(r.boundingBox));break;case"LOD":T=new IA;break;case"Line":T=new fl(O(r.geometry),te(r.material));break;case"LineLoop":T=new nA(O(r.geometry),te(r.material));break;case"LineSegments":T=new nd(O(r.geometry),te(r.material));break;case"PointCloud":case"Points":T=new hp(O(r.geometry),te(r.material));break;case"Sprite":T=new RA(te(r.material));break;case"Group":T=new xu;break;case"Bone":T=new Lp;break;default:T=new _l}if(T.uuid=r.uuid,r.name!==void 0&&(T.name=r.name),r.matrix!==void 0?(T.matrix.fromArray(r.matrix),r.matrixAutoUpdate!==void 0&&(T.matrixAutoUpdate=r.matrixAutoUpdate),T.matrixAutoUpdate&&T.matrix.decompose(T.position,T.quaternion,T.scale)):(r.position!==void 0&&T.position.fromArray(r.position),r.rotation!==void 0&&T.rotation.fromArray(r.rotation),r.quaternion!==void 0&&T.quaternion.fromArray(r.quaternion),r.scale!==void 0&&T.scale.fromArray(r.scale)),r.up!==void 0&&T.up.fromArray(r.up),r.castShadow!==void 0&&(T.castShadow=r.castShadow),r.receiveShadow!==void 0&&(T.receiveShadow=r.receiveShadow),r.shadow&&(r.shadow.intensity!==void 0&&(T.shadow.intensity=r.shadow.intensity),r.shadow.bias!==void 0&&(T.shadow.bias=r.shadow.bias),r.shadow.normalBias!==void 0&&(T.shadow.normalBias=r.shadow.normalBias),r.shadow.radius!==void 0&&(T.shadow.radius=r.shadow.radius),r.shadow.mapSize!==void 0&&T.shadow.mapSize.fromArray(r.shadow.mapSize),r.shadow.camera!==void 0&&(T.shadow.camera=this.parseObject(r.shadow.camera))),r.visible!==void 0&&(T.visible=r.visible),r.frustumCulled!==void 0&&(T.frustumCulled=r.frustumCulled),r.renderOrder!==void 0&&(T.renderOrder=r.renderOrder),r.userData!==void 0&&(T.userData=r.userData),r.layers!==void 0&&(T.layers.mask=r.layers),r.children!==void 0){const Ve=r.children;for(let We=0;We{if(ny.has(T)===!0)p&&p(ny.get(T)),y.manager.itemError(r),y.manager.itemEnd(r);else return l&&l(se),y.manager.itemEnd(r),se});return}return setTimeout(function(){l&&l(T),y.manager.itemEnd(r)},0),T}const O={};O.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",O.headers=this.requestHeader,O.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const te=fetch(r,O).then(function(se){return se.blob()}).then(function(se){return createImageBitmap(se,Object.assign(y.options,{colorSpaceConversion:"none"}))}).then(function(se){return Ff.add(`image-bitmap:${r}`,se),l&&l(se),y.manager.itemEnd(r),se}).catch(function(se){p&&p(se),ny.set(te,se),Ff.remove(`image-bitmap:${r}`),y.manager.itemError(r),y.manager.itemEnd(r)});Ff.add(`image-bitmap:${r}`,te),y.manager.itemStart(r)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let j0;class ry{static getContext(){return j0===void 0&&(j0=new(window.AudioContext||window.webkitAudioContext)),j0}static setContext(r){j0=r}}class lw extends null{constructor(r){super(r)}load(r,l,h,p){const y=this,T=new Wp(this.manager);T.setResponseType("arraybuffer"),T.setPath(this.path),T.setRequestHeader(this.requestHeader),T.setWithCredentials(this.withCredentials),T.load(r,function(te){try{const se=te.slice(0);ry.getContext().decodeAudioData(se,function(Ne){l(Ne)}).catch(O)}catch(se){O(se)}},h,p);function O(te){p?p(te):Wa(te),y.manager.itemError(r)}}}const Y0=new oi,uw=new oi,HA=new oi;class cw{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new Vh,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new Vh,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(r){const l=this._cache;if(l.focus!==r.focus||l.fov!==r.fov||l.aspect!==r.aspect*this.aspect||l.near!==r.near||l.far!==r.far||l.zoom!==r.zoom||l.eyeSep!==this.eyeSep){l.focus=r.focus,l.fov=r.fov,l.aspect=r.aspect*this.aspect,l.near=r.near,l.far=r.far,l.zoom=r.zoom,l.eyeSep=this.eyeSep,HA.copy(r.projectionMatrix);const p=l.eyeSep/2,y=p*l.near/l.focus,T=l.near*Math.tan(ac*l.fov*.5)/l.zoom;let O,te;uw.elements[12]=-p,Y0.elements[12]=p,O=-T*l.aspect+y,te=T*l.aspect+y,HA.elements[0]=2*l.near/(te-O),HA.elements[8]=(te+O)/(te-O),this.cameraL.projectionMatrix.copy(HA),O=-T*l.aspect-y,te=T*l.aspect-y,HA.elements[0]=2*l.near/(te-O),HA.elements[8]=(te+O)/(te-O),this.cameraR.projectionMatrix.copy(HA)}this.cameraL.matrixWorld.copy(r.matrixWorld).multiply(uw),this.cameraR.matrixWorld.copy(r.matrixWorld).multiply(Y0)}}class IP extends null{constructor(r=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=r}}class Gx{constructor(r=!0){this.autoStart=r,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let r=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const l=performance.now();r=(l-this.oldTime)/1e3,this.oldTime=l,this.elapsedTime+=r}return r}}const Xp=new kn,Ap=new Du,DE=new kn,jp=new kn,pp=new kn;class Mm extends null{constructor(){super(),this.type="AudioListener",this.context=ry.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Gx}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(r){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=r,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(r){return this.gain.gain.setTargetAtTime(r,this.context.currentTime,.01),this}updateMatrixWorld(r){super.updateMatrixWorld(r);const l=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Xp,Ap,DE),jp.set(0,0,-1).applyQuaternion(Ap),pp.set(0,1,0).applyQuaternion(Ap),l.positionX){const h=this.context.currentTime+this.timeDelta;l.positionX.linearRampToValueAtTime(Xp.x,h),l.positionY.linearRampToValueAtTime(Xp.y,h),l.positionZ.linearRampToValueAtTime(Xp.z,h),l.forwardX.linearRampToValueAtTime(jp.x,h),l.forwardY.linearRampToValueAtTime(jp.y,h),l.forwardZ.linearRampToValueAtTime(jp.z,h),l.upX.linearRampToValueAtTime(pp.x,h),l.upY.linearRampToValueAtTime(pp.y,h),l.upZ.linearRampToValueAtTime(pp.z,h)}else l.setPosition(Xp.x,Xp.y,Xp.z),l.setOrientation(jp.x,jp.y,jp.z,pp.x,pp.y,pp.z)}}class Hx extends null{constructor(r){super(),this.type="Audio",this.listener=r,this.context=r.context,this.gain=this.context.createGain(),this.gain.connect(r.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(r){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=r,this.connect(),this}setMediaElementSource(r){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(r),this.connect(),this}setMediaStreamSource(r){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(r),this.connect(),this}setBuffer(r){return this.buffer=r,this.sourceType="buffer",this.autoplay&&this.play(),this}play(r=0){if(this.isPlaying===!0){na("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){na("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+r;const l=this.context.createBufferSource();return l.buffer=this.buffer,l.loop=this.loop,l.loopStart=this.loopStart,l.loopEnd=this.loopEnd,l.onended=this.onEnded.bind(this),l.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=l,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){na("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(r=0){if(this.hasPlaybackControl===!1){na("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+r),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let r=1,l=this.filters.length;r0){this.source.disconnect(this.filters[0]);for(let r=1,l=this.filters.length;r0&&this._mixBufferRegionAdditive(h,p,this._addIndex*l,1,l);for(let te=l,se=l+l;te!==se;++te)if(h[te]!==h[te+l]){O.setValue(h,p);break}}saveOriginalState(){const r=this.binding,l=this.buffer,h=this.valueSize,p=h*this._origIndex;r.getValue(l,p);for(let y=h,T=p;y!==T;++y)l[y]=l[p+y%h];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const r=this.valueSize*3;this.binding.setValue(this.buffer,r)}_setAdditiveIdentityNumeric(){const r=this._addIndex*this.valueSize,l=r+this.valueSize;for(let h=r;h=.5)for(let T=0;T!==y;++T)r[l+T]=r[h+T]}_slerp(r,l,h,p){Du.slerpFlat(r,l,r,l,r,h,p)}_slerpAdditive(r,l,h,p,y){const T=this._workIndex*y;Du.multiplyQuaternionsFlat(r,T,r,l,r,h),Du.slerpFlat(r,l,r,l,r,T,p)}_lerp(r,l,h,p,y){const T=1-p;for(let O=0;O!==y;++O){const te=l+O;r[te]=r[te]*T+r[h+O]*p}}_lerpAdditive(r,l,h,p,y){for(let T=0;T!==y;++T){const O=l+T;r[O]=r[O]+r[h+T]*p}}}const iy="\\[\\]\\.:\\/",Og=new RegExp("["+iy+"]","g"),Wx="[^"+iy+"]",kE="[^"+iy.replace("\\.","")+"]",hw=/((?:WC+[\/:])*)/.source.replace("WC",Wx),sy=/(WCOD+)?/.source.replace("WCOD",kE),dw=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Wx),ay=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Wx),fw=new RegExp("^"+hw+sy+dw+ay+"$"),Aw=["material","materials","bones","map"];class pw{constructor(r,l,h){const p=h||Cl.parseTrackName(l);this._targetGroup=r,this._bindings=r.subscribe_(l,p)}getValue(r,l){this.bind();const h=this._targetGroup.nCachedObjects_,p=this._bindings[h];p!==void 0&&p.getValue(r,l)}setValue(r,l){const h=this._bindings;for(let p=this._targetGroup.nCachedObjects_,y=h.length;p!==y;++p)h[p].setValue(r,l)}bind(){const r=this._bindings;for(let l=this._targetGroup.nCachedObjects_,h=r.length;l!==h;++l)r[l].bind()}unbind(){const r=this._bindings;for(let l=this._targetGroup.nCachedObjects_,h=r.length;l!==h;++l)r[l].unbind()}}class Cl{constructor(r,l,h){this.path=l,this.parsedPath=h||Cl.parseTrackName(l),this.node=Cl.findNode(r,this.parsedPath.nodeName),this.rootNode=r,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(r,l,h){return r&&r.isAnimationObjectGroup?new Cl.Composite(r,l,h):new Cl(r,l,h)}static sanitizeNodeName(r){return r.replace(/\s/g,"_").replace(Og,"")}static parseTrackName(r){const l=fw.exec(r);if(l===null)throw new Error("PropertyBinding: Cannot parse trackName: "+r);const h={nodeName:l[2],objectName:l[3],objectIndex:l[4],propertyName:l[5],propertyIndex:l[6]},p=h.nodeName&&h.nodeName.lastIndexOf(".");if(p!==void 0&&p!==-1){const y=h.nodeName.substring(p+1);Aw.indexOf(y)!==-1&&(h.nodeName=h.nodeName.substring(0,p),h.objectName=y)}if(h.propertyName===null||h.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+r);return h}static findNode(r,l){if(l===void 0||l===""||l==="."||l===-1||l===r.name||l===r.uuid)return r;if(r.skeleton){const h=r.skeleton.getBoneByName(l);if(h!==void 0)return h}if(r.children){const h=function(y){for(let T=0;T=y){const Ne=y++,Ve=r[Ne];l[Ve.uuid]=xe,r[xe]=Ve,l[se]=Ne,r[Ne]=te;for(let We=0,tt=p;We!==tt;++We){const Ot=h[We],An=Ot[Ne],un=Ot[xe];Ot[xe]=An,Ot[Ne]=un}}}this.nCachedObjects_=y}uncache(){const r=this._objects,l=this._indicesByUUID,h=this._bindings,p=h.length;let y=this.nCachedObjects_,T=r.length;for(let O=0,te=arguments.length;O!==te;++O){const se=arguments[O],xe=se.uuid,Ne=l[xe];if(Ne!==void 0)if(delete l[xe],Ne0&&(l[We.uuid]=Ne),r[Ne]=We,r.pop();for(let tt=0,Ot=p;tt!==Ot;++tt){const An=h[tt];An[Ne]=An[Ve],An.pop()}}}this.nCachedObjects_=y}subscribe_(r,l){const h=this._bindingsIndicesByPath;let p=h[r];const y=this._bindings;if(p!==void 0)return y[p];const T=this._paths,O=this._parsedPaths,te=this._objects,se=te.length,xe=this.nCachedObjects_,Ne=new Array(se);p=y.length,h[r]=p,T.push(r),O.push(l),y.push(Ne);for(let Ve=xe,We=te.length;Ve!==We;++Ve){const tt=te[Ve];Ne[Ve]=new Cl(tt,r,l)}return Ne}unsubscribe_(r){const l=this._bindingsIndicesByPath,h=l[r];if(h!==void 0){const p=this._paths,y=this._parsedPaths,T=this._bindings,O=T.length-1,te=T[O],se=r[O];l[se]=h,T[h]=te,T.pop(),y[h]=y[O],y.pop(),p[h]=p[O],p.pop()}}}class gw{constructor(r,l,h=null,p=l.blendMode){this._mixer=r,this._clip=l,this._localRoot=h,this.blendMode=p;const y=l.tracks,T=y.length,O=new Array(T),te={endingStart:Di,endingEnd:Di};for(let se=0;se!==T;++se){const xe=y[se].createInterpolant(null);O[se]=xe,xe.settings=te}this._interpolantSettings=te,this._interpolants=O,this._propertyBindings=new Array(T),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Ln,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(r){return this._startTime=r,this}setLoop(r,l){return this.loop=r,this.repetitions=l,this}setEffectiveWeight(r){return this.weight=r,this._effectiveWeight=this.enabled?r:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(r){return this._scheduleFading(r,0,1)}fadeOut(r){return this._scheduleFading(r,1,0)}crossFadeFrom(r,l,h=!1){if(r.fadeOut(l),this.fadeIn(l),h===!0){const p=this._clip.duration,y=r._clip.duration,T=y/p,O=p/y;r.warp(1,T,l),this.warp(O,1,l)}return this}crossFadeTo(r,l,h=!1){return r.crossFadeFrom(this,l,h)}stopFading(){const r=this._weightInterpolant;return r!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(r)),this}setEffectiveTimeScale(r){return this.timeScale=r,this._effectiveTimeScale=this.paused?0:r,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(r){return this.timeScale=this._clip.duration/r,this.stopWarping()}syncWith(r){return this.time=r.time,this.timeScale=r.timeScale,this.stopWarping()}halt(r){return this.warp(this._effectiveTimeScale,0,r)}warp(r,l,h){const p=this._mixer,y=p.time,T=this.timeScale;let O=this._timeScaleInterpolant;O===null&&(O=p._lendControlInterpolant(),this._timeScaleInterpolant=O);const te=O.parameterPositions,se=O.sampleValues;return te[0]=y,te[1]=y+h,se[0]=r/T,se[1]=l/T,this}stopWarping(){const r=this._timeScaleInterpolant;return r!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(r)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(r,l,h,p){if(!this.enabled){this._updateWeight(r);return}const y=this._startTime;if(y!==null){const te=(r-y)*h;te<0||h===0?l=0:(this._startTime=null,l=h*te)}l*=this._updateTimeScale(r);const T=this._updateTime(l),O=this._updateWeight(r);if(O>0){const te=this._interpolants,se=this._propertyBindings;switch(this.blendMode){case Aa:for(let xe=0,Ne=te.length;xe!==Ne;++xe)te[xe].evaluate(T),se[xe].accumulateAdditive(O);break;case Cs:default:for(let xe=0,Ne=te.length;xe!==Ne;++xe)te[xe].evaluate(T),se[xe].accumulate(p,O)}}}_updateWeight(r){let l=0;if(this.enabled){l=this.weight;const h=this._weightInterpolant;if(h!==null){const p=h.evaluate(r)[0];l*=p,r>h.parameterPositions[1]&&(this.stopFading(),p===0&&(this.enabled=!1))}}return this._effectiveWeight=l,l}_updateTimeScale(r){let l=0;if(!this.paused){l=this.timeScale;const h=this._timeScaleInterpolant;if(h!==null){const p=h.evaluate(r)[0];l*=p,r>h.parameterPositions[1]&&(this.stopWarping(),l===0?this.paused=!0:this.timeScale=l)}}return this._effectiveTimeScale=l,l}_updateTime(r){const l=this._clip.duration,h=this.loop;let p=this.time+r,y=this._loopCount;const T=h===gr;if(r===0)return y===-1?p:T&&(y&1)===1?l-p:p;if(h===yn){y===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(p>=l)p=l;else if(p<0)p=0;else{this.time=p;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=p,this._mixer.dispatchEvent({type:"finished",action:this,direction:r<0?-1:1})}}else{if(y===-1&&(r>=0?(y=0,this._setEndings(!0,this.repetitions===0,T)):this._setEndings(this.repetitions===0,!0,T)),p>=l||p<0){const O=Math.floor(p/l);p-=l*O,y+=Math.abs(O);const te=this.repetitions-y;if(te<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,p=r>0?l:0,this.time=p,this._mixer.dispatchEvent({type:"finished",action:this,direction:r>0?1:-1});else{if(te===1){const se=r<0;this._setEndings(se,!se,T)}else this._setEndings(!1,!1,T);this._loopCount=y,this.time=p,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:O})}}else this.time=p;if(T&&(y&1)===1)return l-p}return p}_setEndings(r,l,h){const p=this._interpolantSettings;h?(p.endingStart=ss,p.endingEnd=ss):(r?p.endingStart=this.zeroSlopeAtStart?ss:Di:p.endingStart=vs,l?p.endingEnd=this.zeroSlopeAtEnd?ss:Di:p.endingEnd=vs)}_scheduleFading(r,l,h){const p=this._mixer,y=p.time;let T=this._weightInterpolant;T===null&&(T=p._lendControlInterpolant(),this._weightInterpolant=T);const O=T.parameterPositions,te=T.sampleValues;return O[0]=y,te[0]=l,O[1]=y+r,te[1]=h,this}}const mw=new Float32Array(1);class zE extends null{constructor(r){super(),this._root=r,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(r,l){const h=r._localRoot||this._root,p=r._clip.tracks,y=p.length,T=r._propertyBindings,O=r._interpolants,te=h.uuid,se=this._bindingsByRootAndName;let xe=se[te];xe===void 0&&(xe={},se[te]=xe);for(let Ne=0;Ne!==y;++Ne){const Ve=p[Ne],We=Ve.name;let tt=xe[We];if(tt!==void 0)++tt.referenceCount,T[Ne]=tt;else{if(tt=T[Ne],tt!==void 0){tt._cacheIndex===null&&(++tt.referenceCount,this._addInactiveBinding(tt,te,We));continue}const Ot=l&&l._propertyBindings[Ne].binding.parsedPath;tt=new Qx(Cl.create(h,We,Ot),Ve.ValueTypeName,Ve.getValueSize()),++tt.referenceCount,this._addInactiveBinding(tt,te,We),T[Ne]=tt}O[Ne].resultBuffer=tt.buffer}}_activateAction(r){if(!this._isActiveAction(r)){if(r._cacheIndex===null){const h=(r._localRoot||this._root).uuid,p=r._clip.uuid,y=this._actionsByClip[p];this._bindAction(r,y&&y.knownActions[0]),this._addInactiveAction(r,p,h)}const l=r._propertyBindings;for(let h=0,p=l.length;h!==p;++h){const y=l[h];y.useCount++===0&&(this._lendBinding(y),y.saveOriginalState())}this._lendAction(r)}}_deactivateAction(r){if(this._isActiveAction(r)){const l=r._propertyBindings;for(let h=0,p=l.length;h!==p;++h){const y=l[h];--y.useCount===0&&(y.restoreOriginalState(),this._takeBackBinding(y))}this._takeBackAction(r)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const r=this;this.stats={actions:{get total(){return r._actions.length},get inUse(){return r._nActiveActions}},bindings:{get total(){return r._bindings.length},get inUse(){return r._nActiveBindings}},controlInterpolants:{get total(){return r._controlInterpolants.length},get inUse(){return r._nActiveControlInterpolants}}}}_isActiveAction(r){const l=r._cacheIndex;return l!==null&&l=0;--h)r[h].stop();return this}update(r){r*=this.timeScale;const l=this._actions,h=this._nActiveActions,p=this.time+=r,y=Math.sign(r),T=this._accuIndex^=1;for(let se=0;se!==h;++se)l[se]._update(p,r,y,T);const O=this._bindings,te=this._nActiveBindings;for(let se=0;se!==te;++se)O[se].apply(T);return this}setTime(r){this.time=0;for(let l=0;l=this.min.x&&r.x<=this.max.x&&r.y>=this.min.y&&r.y<=this.max.y}containsBox(r){return this.min.x<=r.min.x&&r.max.x<=this.max.x&&this.min.y<=r.min.y&&r.max.y<=this.max.y}getParameter(r,l){return l.set((r.x-this.min.x)/(this.max.x-this.min.x),(r.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(r){return r.max.x>=this.min.x&&r.min.x<=this.max.x&&r.max.y>=this.min.y&&r.min.y<=this.max.y}clampPoint(r,l){return l.copy(r).clamp(this.min,this.max)}distanceToPoint(r){return this.clampPoint(r,ww).distanceTo(r)}intersect(r){return this.min.max(r.min),this.max.min(r.max),this.isEmpty()&&this.makeEmpty(),this}union(r){return this.min.min(r.min),this.max.max(r.max),this}translate(r){return this.min.add(r),this.max.add(r),this}equals(r){return r.min.equals(this.min)&&r.max.equals(this.max)}}const uy=new kn,cy=new kn,gp=new kn,Dg=new kn,Kx=new kn,$x=new kn,J0=new kn;class n0{constructor(r=new kn,l=new kn){this.start=r,this.end=l}set(r,l){return this.start.copy(r),this.end.copy(l),this}copy(r){return this.start.copy(r.start),this.end.copy(r.end),this}getCenter(r){return r.addVectors(this.start,this.end).multiplyScalar(.5)}delta(r){return r.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(r,l){return this.delta(l).multiplyScalar(r).add(this.start)}closestPointToPointParameter(r,l){uy.subVectors(r,this.start),cy.subVectors(this.end,this.start);const h=cy.dot(cy);let y=cy.dot(uy)/h;return l&&(y=ki(y,0,1)),y}closestPointToPoint(r,l,h){const p=this.closestPointToPointParameter(r,l);return this.delta(h).multiplyScalar(p).add(this.start)}distanceSqToLine3(r,l=$x,h=J0){const p=10000000000000001e-32;let y,T;const O=this.start,te=r.start,se=this.end,xe=r.end;gp.subVectors(se,O),Dg.subVectors(xe,te),Kx.subVectors(O,te);const Ne=gp.dot(gp),Ve=Dg.dot(Dg),We=Dg.dot(Kx);if(Ne<=p&&Ve<=p)return l.copy(O),h.copy(te),l.sub(h),l.dot(l);if(Ne<=p)y=0,T=We/Ve,T=ki(T,0,1);else{const tt=gp.dot(Kx);if(Ve<=p)T=0,y=ki(-tt/Ne,0,1);else{const Ot=gp.dot(Dg),An=Ne*Ve-Ot*Ot;An!==0?y=ki((Ot*We-tt*Ve)/An,0,1):y=0,T=(Ot*y+We)/Ve,T<0?(T=0,y=ki(-tt/Ne,0,1)):T>1&&(T=1,y=ki((Ot-tt)/Ne,0,1))}}return l.copy(O).add(gp.multiplyScalar(y)),h.copy(te).add(Dg.multiplyScalar(T)),l.sub(h),l.dot(l)}applyMatrix4(r){return this.start.applyMatrix4(r),this.end.applyMatrix4(r),this}equals(r){return r.start.equals(this.start)&&r.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const kg=new kn;class Xx extends null{constructor(r,l){super(),this.light=r,this.matrixAutoUpdate=!1,this.color=l,this.type="SpotLightHelper";const h=new Ui,p=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let T=0,O=1,te=32;T1)for(let Ne=0;Ne.99999)this.quaternion.set(0,0,0,1);else if(r.y<-.99999)this.quaternion.set(1,0,0,0);else{fc.set(r.z,0,-r.x).normalize();const l=Math.acos(r.y);this.quaternion.setFromAxisAngle(fc,l)}}setLength(r,l=r*.2,h=l*.2){this.line.scale.set(1,Math.max(1e-4,r-l),1),this.line.updateMatrix(),this.cone.scale.set(h,l,h),this.cone.position.y=r,this.cone.updateMatrix()}setColor(r){this.line.material.color.set(r),this.cone.material.color.set(r)}copy(r){return super.copy(r,!1),this.line.copy(r.line),this.cone.copy(r.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class VP extends null{constructor(r=1){const l=[0,0,0,r,0,0,0,0,0,0,r,0,0,0,0,0,0,r],h=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],p=new Ui;p.setAttribute("position",new ha(l,3)),p.setAttribute("color",new ha(h,3));const y=new Wc({vertexColors:!0,toneMapped:!1});super(p,y),this.type="AxesHelper"}setColors(r,l,h){const p=new Ea,y=this.geometry.attributes.color.array;return p.set(r),p.toArray(y,0),p.toArray(y,3),p.set(l),p.toArray(y,6),p.toArray(y,9),p.set(h),p.toArray(y,12),p.toArray(y,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class Bw{constructor(){this.type="ShapePath",this.color=new Ea,this.subPaths=[],this.currentPath=null}moveTo(r,l){return this.currentPath=new wn,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,l),this}lineTo(r,l){return this.currentPath.lineTo(r,l),this}quadraticCurveTo(r,l,h,p){return this.currentPath.quadraticCurveTo(r,l,h,p),this}bezierCurveTo(r,l,h,p,y,T){return this.currentPath.bezierCurveTo(r,l,h,p,y,T),this}splineThru(r){return this.currentPath.splineThru(r),this}toShapes(r){function l(un){const Un=[];for(let Vn=0,nr=un.length;VnNumber.EPSILON){if(ys<0&&(Bi=Un[pi],ls=-ls,mi=Un[ii],ys=-ys),un.ymi.y)continue;if(un.y===Bi.y){if(un.x===Bi.x)return!0}else{const Da=ys*(un.x-Bi.x)-ls*(un.y-Bi.y);if(Da===0)return!0;if(Da<0)continue;nr=!nr}}else{if(un.y!==Bi.y)continue;if(mi.x<=un.x&&un.x<=Bi.x||Bi.x<=un.x&&un.x<=mi.x)return!0}}return nr}const p=bs.isClockWise,y=this.subPaths;if(y.length===0)return[];let T,O,te;const se=[];if(y.length===1)return O=y[0],te=new mn,te.curves=O.curves,se.push(te),se;let xe=!p(y[0].getPoints());xe=r?!xe:xe;const Ne=[],Ve=[];let We=[],tt=0,Ot;Ve[tt]=void 0,We[tt]=[];for(let un=0,Un=y.length;un1){let un=!1,Un=0;for(let Vn=0,nr=Ve.length;Vn0&&un===!1&&(We=Ne)}let An;for(let un=0,Un=Ve.length;unr?(ue.repeat.x=1,ue.repeat.y=l/r,ue.offset.x=0,ue.offset.y=(1-ue.repeat.y)/2):(ue.repeat.x=r/l,ue.repeat.y=1,ue.offset.x=(1-ue.repeat.x)/2,ue.offset.y=0),ue}function ZE(ue,r){const l=ue.image&&ue.image.width?ue.image.width/ue.image.height:1;return l>r?(ue.repeat.x=r/l,ue.repeat.y=1,ue.offset.x=(1-ue.repeat.x)/2,ue.offset.y=0):(ue.repeat.x=1,ue.repeat.y=l/r,ue.offset.x=0,ue.offset.y=(1-ue.repeat.y)/2),ue}function KE(ue){return ue.repeat.x=1,ue.repeat.y=1,ue.offset.x=0,ue.offset.y=0,ue}function $E(ue,r,l,h){const p=rv(h);switch(l){case si:return ue*r;case z:return ue*r/p.components*p.byteLength;case ie:return ue*r/p.components*p.byteLength;case ze:return ue*r*2/p.components*p.byteLength;case Je:return ue*r*2/p.components*p.byteLength;case Ie:return ue*r*3/p.components*p.byteLength;case L:return ue*r*4/p.components*p.byteLength;case xt:return ue*r*4/p.components*p.byteLength;case Sn:case Oe:return Math.floor((ue+3)/4)*Math.floor((r+3)/4)*8;case Qe:case Re:return Math.floor((ue+3)/4)*Math.floor((r+3)/4)*16;case gt:case yt:return Math.max(ue,16)*Math.max(r,8)/4;case Ke:case tn:return Math.max(ue,8)*Math.max(r,8)/2;case Yt:case Rn:return Math.floor((ue+3)/4)*Math.floor((r+3)/4)*8;case er:return Math.floor((ue+3)/4)*Math.floor((r+3)/4)*16;case Jn:return Math.floor((ue+3)/4)*Math.floor((r+3)/4)*16;case kr:return Math.floor((ue+4)/5)*Math.floor((r+3)/4)*16;case fr:return Math.floor((ue+4)/5)*Math.floor((r+4)/5)*16;case wr:return Math.floor((ue+5)/6)*Math.floor((r+4)/5)*16;case ei:return Math.floor((ue+5)/6)*Math.floor((r+5)/6)*16;case _n:return Math.floor((ue+7)/8)*Math.floor((r+4)/5)*16;case jn:return Math.floor((ue+7)/8)*Math.floor((r+5)/6)*16;case Hr:return Math.floor((ue+7)/8)*Math.floor((r+7)/8)*16;case Pr:return Math.floor((ue+9)/10)*Math.floor((r+4)/5)*16;case $i:return Math.floor((ue+9)/10)*Math.floor((r+5)/6)*16;case Zi:return Math.floor((ue+9)/10)*Math.floor((r+7)/8)*16;case Xi:return Math.floor((ue+9)/10)*Math.floor((r+9)/10)*16;case Ei:return Math.floor((ue+11)/12)*Math.floor((r+9)/10)*16;case ms:return Math.floor((ue+11)/12)*Math.floor((r+11)/12)*16;case _i:case Es:case ua:return Math.ceil(ue/4)*Math.ceil(r/4)*16;case Hn:case Pt:return Math.ceil(ue/4)*Math.ceil(r/4)*8;case Gt:case Bt:return Math.ceil(ue/4)*Math.ceil(r/4)*16}throw new Error(`Unable to determine texture byte length for ${l} format.`)}function rv(ue){switch(ue){case es:case Ci:return{byteLength:1,components:1};case rn:case En:case Wt:return{byteLength:2,components:1};case bn:case Jt:return{byteLength:2,components:4};case st:case Xt:case dt:return{byteLength:4,components:1};case rr:case Kr:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${ue}.`)}class XE{static contain(r,l){return my(r,l)}static cover(r,l){return ZE(r,l)}static fill(r){return KE(r)}static getByteLength(r,l,h,p){return $E(r,l,h,p)}}typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:m}})),typeof window!="undefined"&&(window.__THREE__?na("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=m)},23097:function(Be,Me,b){"use strict";b.d(Me,{Z:function(){return N}});function m(pe){"@babel/helpers - typeof";return m=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(Ae){return typeof Ae}:function(Ae){return Ae&&typeof Symbol=="function"&&Ae.constructor===Symbol&&Ae!==Symbol.prototype?"symbol":typeof Ae},m(pe)}var Z=/^\s+/,V=/\s+$/;function N(pe,Ae){if(pe=pe||"",Ae=Ae||{},pe instanceof N)return pe;if(!(this instanceof N))return new N(pe,Ae);var Pe=E(pe);this._originalInput=pe,this._r=Pe.r,this._g=Pe.g,this._b=Pe.b,this._a=Pe.a,this._roundA=Math.round(100*this._a)/100,this._format=Ae.format||Pe.format,this._gradientType=Ae.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=Pe.ok}N.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var Ae=this.toRgb();return(Ae.r*299+Ae.g*587+Ae.b*114)/1e3},getLuminance:function(){var Ae=this.toRgb(),Pe,Ut,jt,ft,on,hn;return Pe=Ae.r/255,Ut=Ae.g/255,jt=Ae.b/255,Pe<=.03928?ft=Pe/12.92:ft=Math.pow((Pe+.055)/1.055,2.4),Ut<=.03928?on=Ut/12.92:on=Math.pow((Ut+.055)/1.055,2.4),jt<=.03928?hn=jt/12.92:hn=Math.pow((jt+.055)/1.055,2.4),.2126*ft+.7152*on+.0722*hn},setAlpha:function(Ae){return this._a=In(Ae),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var Ae=H(this._r,this._g,this._b);return{h:Ae.h*360,s:Ae.s,v:Ae.v,a:this._a}},toHsvString:function(){var Ae=H(this._r,this._g,this._b),Pe=Math.round(Ae.h*360),Ut=Math.round(Ae.s*100),jt=Math.round(Ae.v*100);return this._a==1?"hsv("+Pe+", "+Ut+"%, "+jt+"%)":"hsva("+Pe+", "+Ut+"%, "+jt+"%, "+this._roundA+")"},toHsl:function(){var Ae=C(this._r,this._g,this._b);return{h:Ae.h*360,s:Ae.s,l:Ae.l,a:this._a}},toHslString:function(){var Ae=C(this._r,this._g,this._b),Pe=Math.round(Ae.h*360),Ut=Math.round(Ae.s*100),jt=Math.round(Ae.l*100);return this._a==1?"hsl("+Pe+", "+Ut+"%, "+jt+"%)":"hsla("+Pe+", "+Ut+"%, "+jt+"%, "+this._roundA+")"},toHex:function(Ae){return X(this._r,this._g,this._b,Ae)},toHexString:function(Ae){return"#"+this.toHex(Ae)},toHex8:function(Ae){return j(this._r,this._g,this._b,this._a,Ae)},toHex8String:function(Ae){return"#"+this.toHex8(Ae)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(zn(this._r,255)*100)+"%",g:Math.round(zn(this._g,255)*100)+"%",b:Math.round(zn(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(zn(this._r,255)*100)+"%, "+Math.round(zn(this._g,255)*100)+"%, "+Math.round(zn(this._b,255)*100)+"%)":"rgba("+Math.round(zn(this._r,255)*100)+"%, "+Math.round(zn(this._g,255)*100)+"%, "+Math.round(zn(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:Wn[X(this._r,this._g,this._b,!0)]||!1},toFilter:function(Ae){var Pe="#"+de(this._r,this._g,this._b,this._a),Ut=Pe,jt=this._gradientType?"GradientType = 1, ":"";if(Ae){var ft=N(Ae);Ut="#"+de(ft._r,ft._g,ft._b,ft._a)}return"progid:DXImageTransform.Microsoft.gradient("+jt+"startColorstr="+Pe+",endColorstr="+Ut+")"},toString:function(Ae){var Pe=!!Ae;Ae=Ae||this._format;var Ut=!1,jt=this._a<1&&this._a>=0,ft=!Pe&&jt&&(Ae==="hex"||Ae==="hex6"||Ae==="hex3"||Ae==="hex4"||Ae==="hex8"||Ae==="name");return ft?Ae==="name"&&this._a===0?this.toName():this.toRgbString():(Ae==="rgb"&&(Ut=this.toRgbString()),Ae==="prgb"&&(Ut=this.toPercentageRgbString()),(Ae==="hex"||Ae==="hex6")&&(Ut=this.toHexString()),Ae==="hex3"&&(Ut=this.toHexString(!0)),Ae==="hex4"&&(Ut=this.toHex8String(!0)),Ae==="hex8"&&(Ut=this.toHex8String()),Ae==="name"&&(Ut=this.toName()),Ae==="hsl"&&(Ut=this.toHslString()),Ae==="hsv"&&(Ut=this.toHsvString()),Ut||this.toHexString())},clone:function(){return N(this.toString())},_applyModification:function(Ae,Pe){var Ut=Ae.apply(null,[this].concat([].slice.call(Pe)));return this._r=Ut._r,this._g=Ut._g,this._b=Ut._b,this.setAlpha(Ut._a),this},lighten:function(){return this._applyModification(Ee,arguments)},brighten:function(){return this._applyModification($e,arguments)},darken:function(){return this._applyModification(Fe,arguments)},desaturate:function(){return this._applyModification(he,arguments)},saturate:function(){return this._applyModification(we,arguments)},greyscale:function(){return this._applyModification(ve,arguments)},spin:function(){return this._applyModification(ct,arguments)},_applyCombination:function(Ae,Pe){return Ae.apply(null,[this].concat([].slice.call(Pe)))},analogous:function(){return this._applyCombination(It,arguments)},complement:function(){return this._applyCombination(vt,arguments)},monochromatic:function(){return this._applyCombination(Bn,arguments)},splitcomplement:function(){return this._applyCombination(kt,arguments)},triad:function(){return this._applyCombination(at,[3])},tetrad:function(){return this._applyCombination(at,[4])}},N.fromRatio=function(pe,Ae){if(m(pe)=="object"){var Pe={};for(var Ut in pe)pe.hasOwnProperty(Ut)&&(Ut==="a"?Pe[Ut]=pe[Ut]:Pe[Ut]=On(pe[Ut]));pe=Pe}return N(pe,Ae)};function E(pe){var Ae={r:0,g:0,b:0},Pe=1,Ut=null,jt=null,ft=null,on=!1,hn=!1;return typeof pe=="string"&&(pe=Mt(pe)),m(pe)=="object"&&(Cn(pe.r)&&Cn(pe.g)&&Cn(pe.b)?(Ae=F(pe.r,pe.g,pe.b),on=!0,hn=String(pe.r).substr(-1)==="%"?"prgb":"rgb"):Cn(pe.h)&&Cn(pe.s)&&Cn(pe.v)?(Ut=On(pe.s),jt=On(pe.v),Ae=D(pe.h,Ut,jt),on=!0,hn="hsv"):Cn(pe.h)&&Cn(pe.s)&&Cn(pe.l)&&(Ut=On(pe.s),ft=On(pe.l),Ae=P(pe.h,Ut,ft),on=!0,hn="hsl"),pe.hasOwnProperty("a")&&(Pe=pe.a)),Pe=In(Pe),{ok:on,format:pe.format||hn,r:Math.min(255,Math.max(Ae.r,0)),g:Math.min(255,Math.max(Ae.g,0)),b:Math.min(255,Math.max(Ae.b,0)),a:Pe}}function F(pe,Ae,Pe){return{r:zn(pe,255)*255,g:zn(Ae,255)*255,b:zn(Pe,255)*255}}function C(pe,Ae,Pe){pe=zn(pe,255),Ae=zn(Ae,255),Pe=zn(Pe,255);var Ut=Math.max(pe,Ae,Pe),jt=Math.min(pe,Ae,Pe),ft,on,hn=(Ut+jt)/2;if(Ut==jt)ft=on=0;else{var lt=Ut-jt;switch(on=hn>.5?lt/(2-Ut-jt):lt/(Ut+jt),Ut){case pe:ft=(Ae-Pe)/lt+(Ae1&&(W-=1),W<1/6?Ct+(sn-Ct)*6*W:W<1/2?sn:W<2/3?Ct+(sn-Ct)*(2/3-W)*6:Ct}if(Ae===0)Ut=jt=ft=Pe;else{var hn=Pe<.5?Pe*(1+Ae):Pe+Ae-Pe*Ae,lt=2*Pe-hn;Ut=on(lt,hn,pe+1/3),jt=on(lt,hn,pe),ft=on(lt,hn,pe-1/3)}return{r:Ut*255,g:jt*255,b:ft*255}}function H(pe,Ae,Pe){pe=zn(pe,255),Ae=zn(Ae,255),Pe=zn(Pe,255);var Ut=Math.max(pe,Ae,Pe),jt=Math.min(pe,Ae,Pe),ft,on,hn=Ut,lt=Ut-jt;if(on=Ut===0?0:lt/Ut,Ut==jt)ft=0;else{switch(Ut){case pe:ft=(Ae-Pe)/lt+(Ae>1)+720)%360;--Ae;)Ut.h=(Ut.h+jt)%360,ft.push(N(Ut));return ft}function Bn(pe,Ae){Ae=Ae||6;for(var Pe=N(pe).toHsv(),Ut=Pe.h,jt=Pe.s,ft=Pe.v,on=[],hn=1/Ae;Ae--;)on.push(N({h:Ut,s:jt,v:ft})),ft=(ft+hn)%1;return on}N.mix=function(pe,Ae,Pe){Pe=Pe===0?0:Pe||50;var Ut=N(pe).toRgb(),jt=N(Ae).toRgb(),ft=Pe/100,on={r:(jt.r-Ut.r)*ft+Ut.r,g:(jt.g-Ut.g)*ft+Ut.g,b:(jt.b-Ut.b)*ft+Ut.b,a:(jt.a-Ut.a)*ft+Ut.a};return N(on)},N.readability=function(pe,Ae){var Pe=N(pe),Ut=N(Ae);return(Math.max(Pe.getLuminance(),Ut.getLuminance())+.05)/(Math.min(Pe.getLuminance(),Ut.getLuminance())+.05)},N.isReadable=function(pe,Ae,Pe){var Ut=N.readability(pe,Ae),jt,ft;switch(ft=!1,jt=Et(Pe),jt.level+jt.size){case"AAsmall":case"AAAlarge":ft=Ut>=4.5;break;case"AAlarge":ft=Ut>=3;break;case"AAAsmall":ft=Ut>=7;break}return ft},N.mostReadable=function(pe,Ae,Pe){var Ut=null,jt=0,ft,on,hn,lt;Pe=Pe||{},on=Pe.includeFallbackColors,hn=Pe.level,lt=Pe.size;for(var Ct=0;Ctjt&&(jt=ft,Ut=N(Ae[Ct]));return N.isReadable(pe,Ut,{level:hn,size:lt})||!on?Ut:(Pe.includeFallbackColors=!1,N.mostReadable(pe,["#fff","#000"],Pe))};var Lt=N.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},Wn=N.hexNames=Xn(Lt);function Xn(pe){var Ae={};for(var Pe in pe)pe.hasOwnProperty(Pe)&&(Ae[pe[Pe]]=Pe);return Ae}function In(pe){return pe=parseFloat(pe),(isNaN(pe)||pe<0||pe>1)&&(pe=1),pe}function zn(pe,Ae){_r(pe)&&(pe="100%");var Pe=Ge(pe);return pe=Math.min(Ae,Math.max(0,parseFloat(pe))),Pe&&(pe=parseInt(pe*Ae,10)/100),Math.abs(pe-Ae)<1e-6?1:pe%Ae/parseFloat(Ae)}function dr(pe){return Math.min(1,Math.max(0,pe))}function vn(pe){return parseInt(pe,16)}function _r(pe){return typeof pe=="string"&&pe.indexOf(".")!=-1&&parseFloat(pe)===1}function Ge(pe){return typeof pe=="string"&&pe.indexOf("%")!=-1}function Tt(pe){return pe.length==1?"0"+pe:""+pe}function On(pe){return pe<=1&&(pe=pe*100+"%"),pe}function Vr(pe){return Math.round(parseFloat(pe)*255).toString(16)}function en(pe){return vn(pe)/255}var ln=function(){var pe="[-\\+]?\\d+%?",Ae="[-\\+]?\\d*\\.\\d+%?",Pe="(?:"+Ae+")|(?:"+pe+")",Ut="[\\s|\\(]+("+Pe+")[,|\\s]+("+Pe+")[,|\\s]+("+Pe+")\\s*\\)?",jt="[\\s|\\(]+("+Pe+")[,|\\s]+("+Pe+")[,|\\s]+("+Pe+")[,|\\s]+("+Pe+")\\s*\\)?";return{CSS_UNIT:new RegExp(Pe),rgb:new RegExp("rgb"+Ut),rgba:new RegExp("rgba"+jt),hsl:new RegExp("hsl"+Ut),hsla:new RegExp("hsla"+jt),hsv:new RegExp("hsv"+Ut),hsva:new RegExp("hsva"+jt),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Cn(pe){return!!ln.CSS_UNIT.exec(pe)}function Mt(pe){pe=pe.replace(Z,"").replace(V,"").toLowerCase();var Ae=!1;if(Lt[pe])pe=Lt[pe],Ae=!0;else if(pe=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var Pe;return(Pe=ln.rgb.exec(pe))?{r:Pe[1],g:Pe[2],b:Pe[3]}:(Pe=ln.rgba.exec(pe))?{r:Pe[1],g:Pe[2],b:Pe[3],a:Pe[4]}:(Pe=ln.hsl.exec(pe))?{h:Pe[1],s:Pe[2],l:Pe[3]}:(Pe=ln.hsla.exec(pe))?{h:Pe[1],s:Pe[2],l:Pe[3],a:Pe[4]}:(Pe=ln.hsv.exec(pe))?{h:Pe[1],s:Pe[2],v:Pe[3]}:(Pe=ln.hsva.exec(pe))?{h:Pe[1],s:Pe[2],v:Pe[3],a:Pe[4]}:(Pe=ln.hex8.exec(pe))?{r:vn(Pe[1]),g:vn(Pe[2]),b:vn(Pe[3]),a:en(Pe[4]),format:Ae?"name":"hex8"}:(Pe=ln.hex6.exec(pe))?{r:vn(Pe[1]),g:vn(Pe[2]),b:vn(Pe[3]),format:Ae?"name":"hex"}:(Pe=ln.hex4.exec(pe))?{r:vn(Pe[1]+""+Pe[1]),g:vn(Pe[2]+""+Pe[2]),b:vn(Pe[3]+""+Pe[3]),a:en(Pe[4]+""+Pe[4]),format:Ae?"name":"hex8"}:(Pe=ln.hex3.exec(pe))?{r:vn(Pe[1]+""+Pe[1]),g:vn(Pe[2]+""+Pe[2]),b:vn(Pe[3]+""+Pe[3]),format:Ae?"name":"hex"}:!1}function Et(pe){var Ae,Pe;return pe=pe||{level:"AA",size:"small"},Ae=(pe.level||"AA").toUpperCase(),Pe=(pe.size||"small").toLowerCase(),Ae!=="AA"&&Ae!=="AAA"&&(Ae="AA"),Pe!=="small"&&Pe!=="large"&&(Pe="small"),{level:Ae,size:Pe}}},80813:function(Be,Me,b){"use strict";b.d(Me,{CR:function(){return Ee},Jh:function(){return de},Q_:function(){return zn},XA:function(){return ve},ZT:function(){return Z},_T:function(){return N},ev:function(){return ct},mG:function(){return j},pi:function(){return V},pr:function(){return Fe}});var m=function(en,ln){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Cn,Mt){Cn.__proto__=Mt}||function(Cn,Mt){for(var Et in Mt)Object.prototype.hasOwnProperty.call(Mt,Et)&&(Cn[Et]=Mt[Et])},m(en,ln)};function Z(en,ln){if(typeof ln!="function"&&ln!==null)throw new TypeError("Class extends value "+String(ln)+" is not a constructor or null");m(en,ln);function Cn(){this.constructor=en}en.prototype=ln===null?Object.create(ln):(Cn.prototype=ln.prototype,new Cn)}var V=function(){return V=Object.assign||function(ln){for(var Cn,Mt=1,Et=arguments.length;Mt=0;Pe--)(Ae=en[Pe])&&(pe=(Et<3?Ae(pe):Et>3?Ae(ln,Cn,pe):Ae(ln,Cn))||pe);return Et>3&&pe&&Object.defineProperty(ln,Cn,pe),pe}function F(en,ln){return function(Cn,Mt){ln(Cn,Mt,en)}}function C(en,ln,Cn,Mt,Et,pe){function Ae(Se){if(Se!==void 0&&typeof Se!="function")throw new TypeError("Function expected");return Se}for(var Pe=Mt.kind,Ut=Pe==="getter"?"get":Pe==="setter"?"set":"value",jt=!ln&&en?Mt.static?en:en.prototype:null,ft=ln||(jt?Object.getOwnPropertyDescriptor(jt,Mt.name):{}),on,hn=!1,lt=Cn.length-1;lt>=0;lt--){var Ct={};for(var sn in Mt)Ct[sn]=sn==="access"?{}:Mt[sn];for(var sn in Mt.access)Ct.access[sn]=Mt.access[sn];Ct.addInitializer=function(Se){if(hn)throw new TypeError("Cannot add initializers after decoration has completed");pe.push(Ae(Se||null))};var W=(0,Cn[lt])(Pe==="accessor"?{get:ft.get,set:ft.set}:ft[Ut],Ct);if(Pe==="accessor"){if(W===void 0)continue;if(W===null||typeof W!="object")throw new TypeError("Object expected");(on=Ae(W.get))&&(ft.get=on),(on=Ae(W.set))&&(ft.set=on),(on=Ae(W.init))&&Et.unshift(on)}else(on=Ae(W))&&(Pe==="field"?Et.unshift(on):ft[Ut]=on)}jt&&Object.defineProperty(jt,Mt.name,ft),hn=!0}function P(en,ln,Cn){for(var Mt=arguments.length>2,Et=0;Et0&&pe[pe.length-1])&&(jt[0]===6||jt[0]===2)){Cn=0;continue}if(jt[0]===3&&(!pe||jt[1]>pe[0]&&jt[1]=en.length&&(en=void 0),{value:en&&en[Mt++],done:!en}}};throw new TypeError(ln?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ee(en,ln){var Cn=typeof Symbol=="function"&&en[Symbol.iterator];if(!Cn)return en;var Mt=Cn.call(en),Et,pe=[],Ae;try{for(;(ln===void 0||ln-- >0)&&!(Et=Mt.next()).done;)pe.push(Et.value)}catch(Pe){Ae={error:Pe}}finally{try{Et&&!Et.done&&(Cn=Mt.return)&&Cn.call(Mt)}finally{if(Ae)throw Ae.error}}return pe}function $e(){for(var en=[],ln=0;ln1||Ut(lt,sn)})},Ct&&(Et[lt]=Ct(Et[lt])))}function Ut(lt,Ct){try{jt(Mt[lt](Ct))}catch(sn){hn(pe[0][3],sn)}}function jt(lt){lt.value instanceof vt?Promise.resolve(lt.value.v).then(ft,on):hn(pe[0][2],lt)}function ft(lt){Ut("next",lt)}function on(lt){Ut("throw",lt)}function hn(lt,Ct){lt(Ct),pe.shift(),pe.length&&Ut(pe[0][0],pe[0][1])}}function kt(en){var ln,Cn;return ln={},Mt("next"),Mt("throw",function(Et){throw Et}),Mt("return"),ln[Symbol.iterator]=function(){return this},ln;function Mt(Et,pe){ln[Et]=en[Et]?function(Ae){return(Cn=!Cn)?{value:vt(en[Et](Ae)),done:!1}:pe?pe(Ae):Ae}:pe}}function It(en){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var ln=en[Symbol.asyncIterator],Cn;return ln?ln.call(en):(en=typeof ve=="function"?ve(en):en[Symbol.iterator](),Cn={},Mt("next"),Mt("throw"),Mt("return"),Cn[Symbol.asyncIterator]=function(){return this},Cn);function Mt(pe){Cn[pe]=en[pe]&&function(Ae){return new Promise(function(Pe,Ut){Ae=en[pe](Ae),Et(Pe,Ut,Ae.done,Ae.value)})}}function Et(pe,Ae,Pe,Ut){Promise.resolve(Ut).then(function(jt){pe({value:jt,done:Pe})},Ae)}}function Bn(en,ln){return Object.defineProperty?Object.defineProperty(en,"raw",{value:ln}):en.raw=ln,en}var Lt=Object.create?function(en,ln){Object.defineProperty(en,"default",{enumerable:!0,value:ln})}:function(en,ln){en.default=ln},Wn=function(en){return Wn=Object.getOwnPropertyNames||function(ln){var Cn=[];for(var Mt in ln)Object.prototype.hasOwnProperty.call(ln,Mt)&&(Cn[Cn.length]=Mt);return Cn},Wn(en)};function Xn(en){if(en&&en.__esModule)return en;var ln={};if(en!=null)for(var Cn=Wn(en),Mt=0;Mt - + \ No newline at end of file diff --git a/p__User__ThemeTwoLogin__index.0723c809.async.js b/p__User__ThemeTwoLogin__index.565cb188.async.js similarity index 99% rename from p__User__ThemeTwoLogin__index.0723c809.async.js rename to p__User__ThemeTwoLogin__index.565cb188.async.js index 4c95529f92..66374516db 100644 --- a/p__User__ThemeTwoLogin__index.0723c809.async.js +++ b/p__User__ThemeTwoLogin__index.565cb188.async.js @@ -376,7 +376,7 @@ top: 22px; padding: 15px 0 0; } -`;X(ae);var ve="rc-slider-captcha";function he(e){var t=0,i=0;return typeof e.clientX=="number"&&typeof e.clientY=="number"?(t=e.clientX,i=e.clientY):e.touches&&e.touches[0]?(t=e.touches[0].clientX,i=e.touches[0].clientY):e.changedTouches&&e.changedTouches[0]&&(t=e.changedTouches[0].clientX,i=e.changedTouches[0].clientY),{clientX:t,clientY:i}}function Se(e,t){if(t===void 0&&(t={}),e)for(var i in t)e.style[i]=t[i]}var De=typeof window=="object"&&window&&typeof document=="object"&&document&&window.document===document&&!!document.addEventListener,Ve=De&&"onpointerdown"in window,T=De&&"ontouchstart"in window,G=function(e){return e==null?void 0:e.scrollTop};function u(e,t){return typeof e=="number"&&!Number.isNaN(e)&&typeof t=="number"&&t>0?Number(e.toFixed(t)):e}var c="".concat(ve,"-button"),P=function(e){var t,i=e.className,g=e.disabled,x=e.active,O=e.success,le=e.error,K=e.verify,Ze=e.buttonRef,at=(0,b._T)(e,["className","disabled","active","success","error","verify","buttonRef"]);return m.createElement("span",(0,b.pi)({className:I()(c,i,(t={},t["".concat(c,"-disabled")]=g,t["".concat(c,"-active")]=x,t["".concat(c,"-verify")]=K,t["".concat(c,"-success")]=O,t["".concat(c,"-error")]=le,t["".concat(c,"-pc")]=!T,t)),ref:Ze},at))};P.displayName="SliderButton";var j=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M116.9408 561.4592m0-40.96l0 0q0-40.96 40.96-40.96l573.44 0q40.96 0 40.96 40.96l0 0q0 40.96-40.96 40.96l-573.44 0q-40.96 0-40.96-40.96Z"}),m.createElement("path",{d:"M769.82272 519.43424l-203.22304-203.22304a40.96 40.96 0 1 1 57.91744-57.91744l231.71072 231.71072a40.96 40.96 0 0 1 0.45056 58.44992L624.9472 780.12416a40.96 40.96 0 0 1-57.93792-57.91744l202.79296-202.79296z"}))},te=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M864.554667 268.501333a42.666667 42.666667 0 0 1 0 60.330667L412.032 781.397333a42.453333 42.453333 0 0 1-22.613333 11.818667l-5.034667 0.597333H379.306667a42.496 42.496 0 0 1-27.648-12.416l-211.2-211.2a42.666667 42.666667 0 1 1 60.330666-60.330666l180.992 180.992 422.4-422.4a42.666667 42.666667 0 0 1 60.330667 0z"}))},re=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 120 120",width:"1em",height:"1em"},e),m.createElement("defs",null,m.createElement("line",{id:"l",x1:"60",x2:"60",y1:"7",y2:"27",stroke:"currentColor",strokeWidth:"11",strokeLinecap:"round"})),m.createElement("g",null,m.createElement("use",{xlinkHref:"#l",opacity:".27"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(30 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(60 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(90 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(120 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(150 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".37",transform:"rotate(180 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".46",transform:"rotate(210 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".56",transform:"rotate(240 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".66",transform:"rotate(270 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".75",transform:"rotate(300 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".85",transform:"rotate(330 60,60)"})))},J=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M866.133333 573.013333a42.666667 42.666667 0 0 0-53.333333 27.733334A304.64 304.64 0 0 1 519.68 810.666667 302.933333 302.933333 0 0 1 213.333333 512a302.933333 302.933333 0 0 1 306.346667-298.666667 309.76 309.76 0 0 1 198.4 71.253334l-92.586667-15.36a42.666667 42.666667 0 0 0-49.066666 35.413333 42.666667 42.666667 0 0 0 35.413333 49.066667l180.906667 29.866666h7.253333a42.666667 42.666667 0 0 0 14.506667-2.56 14.08 14.08 0 0 0 4.266666-2.56 33.28 33.28 0 0 0 8.533334-4.693333l3.84-4.693333c0-2.133333 3.84-3.84 5.546666-6.4s0-4.266667 2.133334-5.973334a57.173333 57.173333 0 0 0 2.986666-7.68l32-170.666666a42.666667 42.666667 0 0 0-85.333333-16.213334l-11.52 61.866667A392.96 392.96 0 0 0 519.68 128 388.266667 388.266667 0 0 0 128 512a388.266667 388.266667 0 0 0 391.68 384A389.12 389.12 0 0 0 896 626.346667a42.666667 42.666667 0 0 0-29.866667-53.333334z"}))},ne=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M572.96896 524.6976l217.23136 217.25184a40.96 40.96 0 1 1-57.93792 57.91744L515.072 582.63552l-212.3776 212.3776a40.96 40.96 0 1 1-57.9584-57.91744l212.39808-212.3776-217.21088-217.23136a40.96 40.96 0 1 1 57.91744-57.91744l217.23136 217.21088L737.0752 244.736a40.96 40.96 0 1 1 57.93792 57.91744L572.96896 524.71808z"}))},Ie=function(e){return m.createElement("svg",(0,b.pi)({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor",viewBox:"0 0 16 16"},e),m.createElement("path",{d:"M.002 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-12a2 2 0 0 1-2-2zm1 9v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062zm5-6.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"}))},L="".concat(ve,"-icon"),Pe=function(e){var t,i=e.className,g=e.spin,x=(0,b._T)(e,["className","spin"]);return m.createElement("span",(0,b.pi)({className:I()(L,(t={},t["".concat(L,"-spin")]=g,t),i)},x))},ce={arrowRight:m.createElement(j,null),check:m.createElement(te,null),loading:m.createElement(re,null),refresh:m.createElement(J,null),x:m.createElement(ne,null),imageFill:m.createElement(Ie,null)},k=function(e){var t=e.type,i=(0,b._T)(e,["type"]);return m.createElement(Pe,(0,b.pi)({},i),ce[t])},y;(function(e){e[e.Default=1]="Default",e[e.Loading=2]="Loading",e[e.Moving=3]="Moving",e[e.Verify=4]="Verify",e[e.Success=5]="Success",e[e.Error=6]="Error",e[e.LoadFailed=7]="LoadFailed"})(y||(y={}));var M="".concat(ve,"-control"),Q=40,o=2,l=function(e){var t,i,g=e.status,x=g===void 0?y.Default:g,O=e.isLimitErrors,le=e.tipText,K=e.tipIcon,Ze=e.sliderButtonProps,at=e.indicatorProps,mt=e.controlRef,zt=(0,b._T)(e,["status","isLimitErrors","tipText","tipIcon","sliderButtonProps","indicatorProps","controlRef"]),_e=(0,m.useRef)(null),St=(0,m.useRef)(null),ht=(0,m.useRef)(null),Ye=(0,m.useRef)({}),It=(0,b.pi)({default:"\u5411\u53F3\u62D6\u52A8\u6ED1\u5757\u586B\u5145\u62FC\u56FE",loading:"\u52A0\u8F7D\u4E2D...",moving:null,verifying:null,success:null,error:null,errors:m.createElement(m.Fragment,null,m.createElement(k,{type:"x",style:{fontSize:20}})," \u5931\u8D25\u8FC7\u591A\uFF0C\u70B9\u51FB\u91CD\u8BD5"),loadFailed:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5"},le),qe=(0,b.pi)({default:m.createElement(k,{type:"arrowRight"}),loading:m.createElement(k,{type:"loading",spin:!0}),error:m.createElement(k,{type:"x"}),success:m.createElement(k,{type:"check"})},K),At=(t={},t[y.Default]=[It.default,qe.default],t[y.Loading]=[It.loading,qe.default],t[y.Moving]=[It.moving,qe.default],t[y.Verify]=[It.verifying,qe.loading],t[y.Error]=[It.error,qe.error],t[y.Success]=[It.success,qe.success],t[y.LoadFailed]=[It.loadFailed,qe.default],t),ie=function(Vt){var Ot;return(Vt||typeof Ye.current.sliderButtonWidth!="number")&&(Ye.current.sliderButtonWidth=((Ot=St.current)===null||Ot===void 0?void 0:Ot.clientWidth)||Q),Ye.current.sliderButtonWidth},Tt=function(Vt){if(Vt||typeof Ye.current.indicatorBorderWidth!="number")if(ht.current){var Ot=window.getComputedStyle(ht.current);Ye.current.indicatorBorderWidth=parseInt(Ot.borderLeftWidth)+parseInt(Ot.borderRightWidth)}else Ye.current.indicatorBorderWidth=o;return Ye.current.indicatorBorderWidth},Pt=function(Vt){var Ot;return(Vt||!Ye.current.rect)&&_e.current&&(Ye.current.rect=(Ot=_e.current)===null||Ot===void 0?void 0:Ot.getBoundingClientRect()),Ye.current.rect};(0,m.useImperativeHandle)(mt,function(){return{getSliderButtonWidth:ie,getIndicatorBorderWidth:Tt,getRect:Pt,updateLeft:function(Vt){var Ot=ie(),Tr=Tt();Se(St.current,{left:Vt+"px"}),Se(ht.current,{width:Vt+Ot+Tr+"px"})}}},[]);var kt=x===y.Loading,ir=x===y.Moving,lr=x===y.Verify,sr=x===y.Success,_t=x===y.Error,br=x===y.LoadFailed,Ct=O?It.errors:At[x][0];return m.createElement("div",(0,b.pi)({},zt,{className:I()(M,(i={},i["".concat(M,"-loading")]=kt,i["".concat(M,"-moving")]=ir,i["".concat(M,"-verify")]=lr,i["".concat(M,"-success")]=sr,i["".concat(M,"-error")]=_t,i["".concat(M,"-errors")]=O,i["".concat(M,"-load-failed")]=br,i),zt.className),ref:_e}),m.createElement("div",(0,b.pi)({},at,{className:I()("".concat(M,"-indicator"),at==null?void 0:at.className),ref:ht})),m.createElement(P,(0,b.pi)({},Ze,{className:I()("".concat(M,"-button"),Ze==null?void 0:Ze.className),disabled:kt,active:ir,verify:lr,success:sr,error:_t,buttonRef:St}),At[x][1]),m.createElement("div",{className:I()("".concat(M,"-tips")),style:Ct?{}:{display:"none"}},Ct))},f="".concat(ve,"-loading"),d=function(e){var t=e.icon,i=t===void 0?m.createElement(k,{type:"loading",spin:!0}):t,g=e.text,x=g===void 0?"\u52A0\u8F7D\u4E2D...":g,O=e.className,le=(0,b._T)(e,["icon","text","className"]);return m.createElement("div",(0,b.pi)({className:I()(f,O)},le),m.createElement("div",{className:"".concat(f,"-icon")},i),m.createElement("div",{className:"".concat(f,"-text")},x))},s="".concat(ve,"-jigsaw"),p={bgSize:{width:320,height:160},puzzleSize:{width:60,left:0},loadFailedIcon:m.createElement(k,{type:"imageFill"}),refreshIcon:m.createElement(k,{type:"refresh"})},C=function(e){var t,i,g=e.status,x=e.bgSize,O=x===void 0?p.bgSize:x,le=e.puzzleSize,K=le===void 0?p.puzzleSize:le,Ze=e.bgUrl,at=e.puzzleUrl,mt=e.bgImgProps,zt=e.puzzleImgProps,_e=e.jigsawRef,St=e.loadingBoxProps,ht=e.loadFailedIcon,Ye=ht===void 0?p.loadFailedIcon:ht,It=e.showRefreshIcon,qe=It===void 0?!0:It,At=e.refreshIcon,ie=At===void 0?p.refreshIcon:At,Tt=e.disabledRefresh,Pt=e.onRefresh,kt=e.style,ir=e.className,lr=e.children,sr=(0,b._T)(e,["status","bgSize","puzzleSize","bgUrl","puzzleUrl","bgImgProps","puzzleImgProps","jigsawRef","loadingBoxProps","loadFailedIcon","showRefreshIcon","refreshIcon","disabledRefresh","onRefresh","style","className","children"]),_t=(0,m.useRef)(null);if((0,m.useImperativeHandle)(_e,function(){return{updateLeft:function(Ct){Se(_t.current,{left:Ct+"px"})}}}),g===y.Loading)return m.createElement(d,(0,b.pi)({},St,{style:(0,b.pi)((0,b.pi)({},St==null?void 0:St.style),O)}));if(g===y.LoadFailed)return m.createElement("div",{className:"".concat(ve,"-load-failed"),style:O},Ye);var br=g===y.Verify||g===y.Error||g===y.Success;return m.createElement("div",(0,b.pi)({className:I()(s,(t={},t["".concat(s,"-stop")]=br,t),ir),style:(0,b.pi)((0,b.pi)({},kt),O)},sr),m.createElement("img",(0,b.pi)({src:Ze,alt:""},mt,{className:I()("".concat(s,"-bg"),mt==null?void 0:mt.className),style:(0,b.pi)((0,b.pi)({},mt==null?void 0:mt.style),O)})),m.createElement("img",(0,b.pi)({src:at,alt:""},zt,{className:I()("".concat(s,"-puzzle"),zt==null?void 0:zt.className),style:(0,b.pi)((0,b.pi)({},zt==null?void 0:zt.style),K),ref:_t})),qe&&g!==y.Success&&ie&&m.createElement("div",{className:I()("".concat(s,"-refresh"),(i={},i["".concat(s,"-refresh-disabled")]=g===y.Verify||Tt,i)),onClick:function(){g!==y.Verify&&!Tt&&(Pt==null||Pt())}},ie),lr)},V=Ve?{move:"pointermove",end:"pointerup",cancel:"pointercancel"}:T?{move:"touchmove",end:"touchend",cancel:"touchcancel"}:{move:"mousemove",end:"mouseup",cancel:"touchcancel"},me=Ve?"onPointerDown":T?"onTouchStart":"onMouseDown",R;(function(e){e.Puzzle="puzzle",e.Button="button"})(R||(R={}));var ue=function(e){var t,i,g,x=e.mode,O=x===void 0?"embed":x,le=e.limitErrorCount,K=le===void 0?0:le,Ze=e.tipText,at=e.tipIcon,mt=e.refreshIcon,zt=e.bgSize,_e=e.puzzleSize,St=e.request,ht=e.autoRequest,Ye=ht===void 0?!0:ht,It=e.onVerify,qe=e.autoRefreshOnError,At=qe===void 0?!0:qe,ie=e.actionRef,Tt=e.showRefreshIcon,Pt=Tt===void 0?!0:Tt,kt=e.jigsawContent,ir=e.errorHoldDuration,lr=ir===void 0?500:ir,sr=e.showJigsawOnActive,_t=sr===void 0?!1:sr,br=e.loadingDelay,Ct=br===void 0?0:br,Vt=e.placement,Ot=Vt===void 0?"top":Vt,Tr=e.loadingBoxProps,qr=e.sliderButtonProps,Ft=e.precision,Qt=Ft===void 0?7:Ft,mn=e.className,pn=e.style,Rt=e.styles,Zr=N(),qt=Zr[0],yr=Zr[1],cr=N(function(){return!Jr&&St&&Ye?y.Loading:y.Default}),Vr=cr[0],Er=cr[1],jt=Z(Vr),ur=(0,m.useRef)(null),jr=(0,m.useRef)(null),Br=(0,m.useRef)(null),en=mt!==void 0?mt:at==null?void 0:at.refresh,Yt=(0,b.pi)((0,b.pi)({},p.bgSize),zt),Wt=(0,b.pi)((0,b.pi)({},p.puzzleSize),_e),tn=Ot==="bottom"?"top":"bottom",_=(0,m.useRef)({isPressed:!1,trail:[],errorCount:0,startInfo:{x:0,y:0,timestamp:0},currentTargetType:R.Button,isMouseEntered:!1,floatTransitionTimer:null,floatDelayShowTimer:null,floatDelayHideTimer:null,refreshTimer:null,loadingTimer:null,sliderButtonWidth:40,indicatorBorderWidth:2,ratio:1,buttonMaxDistance:0,puzzleMaxDistance:0}),Jr=O==="slider",Wr=typeof Ct=="number"&&Ct>0,kr=Vr===y.Error&&K>0&&_.current.errorCount>=K,vn=function(){_.current.buttonMaxDistance=Yt.width-_.current.sliderButtonWidth-_.current.indicatorBorderWidth,_.current.puzzleMaxDistance=Yt.width-Wt.width-Wt.left},rn=function(){var Ae;return((Ae=ur.current)===null||Ae===void 0?void 0:Ae.getRect(!0).height)||42},nn=function(){return(0,b.mG)(void 0,void 0,void 0,function(){var Ae;return(0,b.Jh)(this,function(st){switch(st.label){case 0:if(Jr)return[2];if(!St)return[3,4];Wr?_.current.loadingTimer=setTimeout(function(){Er(y.Loading)},Ct):Er(y.Loading),st.label=1;case 1:return st.trys.push([1,3,,4]),[4,St()];case 2:return Ae=st.sent(),Wr&&clearTimeout(_.current.loadingTimer),yr(Ae),Er(y.Default),[3,4];case 3:return st.sent(),Wr&&clearTimeout(_.current.loadingTimer),yr(void 0),Er(y.LoadFailed),[3,4];case 4:return[2]}})})},on=function(Ae){Ae===void 0&&(Ae=300),!(O!=="float"||jt.current===y.Success)&&(clearTimeout(_.current.floatTransitionTimer),clearTimeout(_.current.floatDelayHideTimer),clearTimeout(_.current.floatDelayShowTimer),_.current.floatDelayShowTimer=setTimeout(function(){var st;Se(Br.current,{display:"block"}),G(Br.current);var dr=rn()+"px";Se(Br.current,(st={},st[tn]=dr,st.opacity="1",st))},Ae))},sn=function(Ae){Ae===void 0&&(Ae=300),O==="float"&&(clearTimeout(_.current.floatTransitionTimer),clearTimeout(_.current.floatDelayHideTimer),clearTimeout(_.current.floatDelayShowTimer),_.current.floatDelayHideTimer=setTimeout(function(){var st,dr=rn()/2+"px";Se(Br.current,(st={},st[tn]=dr,st.opacity="0",st)),_.current.floatTransitionTimer=setTimeout(function(){Se(Br.current,{display:"none"})},300)},Ae))},En=function(Ae){var st;Jr||(st=jr.current)===null||st===void 0||st.updateLeft(Ae)},xn=function(){var Ae;_.current.isPressed=!1,Er(y.Default),(Ae=ur.current)===null||Ae===void 0||Ae.updateLeft(0),En(Wt.left)},cn=function(Ae){Ae===void 0&&(Ae=!1),Ae&&(_.current.errorCount=0),clearTimeout(_.current.refreshTimer),jt.current!==y.Loading&&(xn(),nn())},Tn=function(){(kr||Vr===y.LoadFailed)&&cn(kr)},An=function(){T||(_.current.isMouseEntered=!0,on())},Fn=function(){_.current.isMouseEntered=!1,!(T||_t&&_.current.isPressed)&&sn()},jn=function(Ae){_.current.currentTargetType=R.Puzzle,Cn(Ae)},Dn=function(Ae){_.current.currentTargetType=R.Button,Cn(Ae)},Cn=function(Ae){if(jt.current===y.Default){Ae.preventDefault();var st=he(Ae),dr=st.clientX,Hr=st.clientY;_.current.startInfo={x:dr,y:Hr,timestamp:new Date().getTime()},_.current.trail=[[dr,Hr]],ur.current&&(_.current.sliderButtonWidth=ur.current.getSliderButtonWidth(!0),_.current.indicatorBorderWidth=ur.current.getIndicatorBorderWidth(!0)),vn(),_.current.ratio=_.current.puzzleMaxDistance/_.current.buttonMaxDistance,_.current.currentTargetType===R.Puzzle&&(_.current.ratio=1/_.current.ratio),(T||Ae.pointerType==="pen"||Ae.pointerType==="touch")&&on(0),_.current.isPressed=!0,document.addEventListener(V.move,wn),document.addEventListener(V.end,un),document.addEventListener(V.cancel,un)}},wn=function(Ae){var st;if(_.current.isPressed){Ae.preventDefault();var dr=he(Ae),Hr=dr.clientX,hn=dr.clientY,er=Hr-_.current.startInfo.x;_.current.trail.push([Hr,hn]),jt.current!==y.Moving&&er>0&&Er(y.Moving);var tr=er,Ur=er;_.current.currentTargetType===R.Puzzle?(er=Math.max(0,Math.min(er,_.current.puzzleMaxDistance)),tr=er+Wt.left,Ur=er*_.current.ratio):(er=Math.max(0,Math.min(er,_.current.buttonMaxDistance)),Ur=er,tr=er*_.current.ratio+Wt.left),(st=ur.current)===null||st===void 0||st.updateLeft(Ur),En(tr)}},un=function(Ae){if(document.removeEventListener(V.move,wn),document.removeEventListener(V.end,un),document.removeEventListener(V.cancel,un),!!_.current.isPressed){if(jt.current!==y.Moving||typeof It!="function"){_.current.isPressed=!1,(T||Ae.pointerType==="pen"||Ae.pointerType==="touch"||_t&&!_.current.isMouseEntered)&&sn(),xn();return}_.current.isPressed=!1,Er(y.Verify);var st=new Date().getTime(),dr=he(Ae),Hr=dr.clientX,hn=dr.clientY,er=hn-_.current.startInfo.y,tr=Hr-_.current.startInfo.x,Ur=tr;_.current.currentTargetType===R.Puzzle?(tr=Math.max(0,Math.min(tr,_.current.puzzleMaxDistance)),Ur=tr*_.current.ratio):(tr=Math.max(0,Math.min(tr,_.current.buttonMaxDistance)),Ur=tr,tr*=_.current.ratio),It({x:u(tr,Qt),y:u(er,Qt),sliderOffsetX:u(Ur,Qt),duration:st-_.current.startInfo.timestamp,trail:_.current.trail,targetType:_.current.currentTargetType,errorCount:_.current.errorCount}).then(function(){_.current.errorCount=0,Er(y.Success),sn()}).catch(function(){_.current.errorCount+=1,Er(y.Error),(T||Ae.pointerType==="pen"||Ae.pointerType==="touch"||_t&&!_.current.isMouseEntered)&&sn(),(K<=0||_.current.errorCount0?(x.forEach(function(O){O.wrap.apply(O.context,i)}),!0):!1},e}(),q={},$=function(){function e(t){t===void 0&&(t="default"),this.scope=t,q[this.scope]||(q[this.scope]={}),this.data=q[this.scope]}return e.prototype.getItem=function(t){return t in this.data?this.data[t]:null},e.prototype.setItem=function(t,i){this.data[t]=i},e.prototype.removeItem=function(t){delete this.data[t]},e.prototype.clear=function(){q[this.scope]={},this.data=q[this.scope]},e}();function Oe(){return Math.random().toString(16).substring(2,8)}function ge(e){try{var t=typeof e=="object"&&e!==null&&!!e.setItem&&!!e.getItem&&!!e.removeItem;if(t){var i=Oe()+new Date().getTime(),g="1";if(e.setItem(i,g),e.getItem(i)!==g)return!1;e.removeItem(i)}return t}catch(x){return console.error("[cache2] ".concat(e," is not supported. The default memory cache will be used.")),!1}}function W(e,t){try{return JSON.parse(e,t)}catch(i){return e}}function xe(e,t){return JSON.stringify(e,t)}var Be=function(){function e(t,i){i===void 0&&(i={});var g=t?ge(t):!1;this.options=(0,b.pi)({needParsed:g,prefix:""},i),this.storage=g?t:new $(this.options.memoryScope)}return e.prototype.getKey=function(t){return this.options.prefix+t},e.prototype.get=function(t){var i=this.storage.getItem(this.getKey(t));return this.options.needParsed?W(i,this.options.reviver):i},e.prototype.set=function(t,i){this.storage.setItem(this.getKey(t),this.options.needParsed?xe(i,this.options.replacer):i)},e.prototype.del=function(t){this.storage.removeItem(this.getKey(t))},e.prototype.clear=function(){typeof this.storage.clear=="function"&&this.storage.clear()},e}(),Fe="cache2_",Ue="default",je=function(e){(0,b.ZT)(t,e);function t(i,g){var x=e.call(this)||this,O=Ue,le;return typeof i=="string"?O=i||Ue:typeof i=="object"&&(le=i),!le&&typeof g=="object"&&(le=g),x.options=(0,b.pi)({max:-1,stdTTL:0,maxStrategy:"limited",checkperiod:0,prefix:Fe},le),x.storage=new Be(x.options.storage,(0,b.pi)({memoryScope:O},x.options)),x.cacheKey=O,x.startCheckperiod(),x}return t.prototype._check=function(i,g){var x=!0;return g.t!==0&&g.t0?x+O:0;return{v:i,t:le,n:x}},t.prototype._isLimited=function(i){return this.options.max>-1&&i>=this.options.max},t.prototype._getReplaceKey=function(i,g){var x=i[0];return i.forEach(function(O){(g[O].t0&&this.setCacheValues(x),O},t.prototype.clear=function(){this.storage.del(this.cacheKey)},t.prototype.keys=function(){var i=this,g=this.cacheValues,x=Object.keys(g);return x.filter(function(O){return i._check(O,g[O])})},t.prototype.has=function(i){var g=this.cacheValues[i];return!!(g&&this._check(i,g))},t.prototype.take=function(i){var g,x=this.cacheValues[i];return x&&this._check(i,x)&&(g=x.v,this.del(i)),g},t.prototype.ttl=function(i,g){var x=this.cacheValues,O=x[i];return O&&this._check(i,O)?(x[i]=this._wrap(O.v,g),!0):!1},t.prototype.getTtl=function(i){var g=this.cacheValues,x=g[i];if(x&&this._check(i,x))return g[i].t},t.prototype.getLastModified=function(i){var g=this.cacheValues,x=g[i];if(x&&this._check(i,x))return g[i].n},t.prototype.startCheckperiod=function(){var i=this;this.keys(),this.options.checkperiod>0&&(clearTimeout(this._checkTimeout),this._checkTimeout=setTimeout(function(){i.startCheckperiod()},this.options.checkperiod))},t.prototype.stopCheckperiod=function(){clearTimeout(this._checkTimeout)},t}(oe),we=void 0,We="undefined",Ne="object",Ge=Object.prototype,rt=Ge.toString,gt=Ge.hasOwnProperty,Ht=Ge.propertyIsEnumerable,Ke=Object.getOwnPropertySymbols,ct=Object.getPrototypeOf,Zt=Object.keys,fr=Function.prototype,xr=fr.toString,mr=typeof Symbol!==We,pr=mr?Symbol.prototype:we,Cr=Array.prototype,wr=Cr.slice,Mt=Math.min,Et=Math.max,zr=Math.random,Jt=Math.floor,Xt=Math.ceil,Ar=Math.abs,Gr=Number.isFinite,D=Number.isInteger,B=Number.isSafeInteger,H=typeof globalThis===Ne&&globalThis,wt=typeof n.g===Ne&&n.g,lt=typeof self===Ne&&self,He=Number.MAX_SAFE_INTEGER||9007199254740991,Je=Number.MIN_SAFE_INTEGER||-9007199254740991,Re=4294967295,U="[object ",Xe=U+"BigInt]",Ut=U+"Number]",ke=U+"Boolean]",Qe=U+"String]",de=U+"Date]",Me=U+"RegExp]",r=U+"Symbol]",E=U+"Error]",S=U+"ArrayBuffer]",w=U+"Arguments]",A=U+"Array]",Y=["Function","AsyncFunction","GeneratorFunction","Proxy"].map(function(e){return U+e+"]"}),pe=U+"WeakSet]",Le=U+"Blob]",Ce=U+"File]",se=U+"DOMException]",be=U+"Object]",ye=U+"DataView]",ze=U+"Map]",et=U+"Promise]",ut=U+"Set]",dt=U+"WeakMap]",pt=U+"Window]";function tt(e){return rt.call(e)}function Te(e){return typeof e=="string"||tt(e)===Qe}var bt=function(){function e(t,i){i===void 0&&(i="uh_async_memo"),this.promiseCache={},this.cache=new je(i,t)}return e.prototype.run=function(t,i,g){var x=this;if(!i||!Te(i))return t();var O=(0,b.pi)({persisted:!0},g);if(O.persisted){var le=this.cache.get(i);if(le)return Promise.resolve(le)}return this.promiseCache[i]||(this.promiseCache[i]=t().then(function(K){return delete x.promiseCache[i],x.cache.set(i,K,O.ttl),K}).catch(function(K){return delete x.promiseCache[i],Promise.reject(K)})),this.promiseCache[i]},e}(),vt=typeof Blob!==We;function nt(e){return vt&&e instanceof Blob?!0:tt(e)===Le}function yt(e){return function(){return e}}function Lt(){}var Dt=typeof URL!="undefined",Sr=void 0,Gt=Object.keys,vr=Object.values,rr=Dt?URL.createObjectURL:yt(""),Ir=Dt?URL.revokeObjectURL:Lt;function Bt(e,t){var i=t||{},g=i.method,x=g===void 0?"get":g,O=i.data,le=O===void 0?null:O,K=i.timeout,Ze=i.headers,at=i.withCredentials,mt=at===void 0?!1:at,zt=i.async,_e=zt===void 0?!0:zt,St=i.user,ht=St===void 0?null:St,Ye=i.password,It=Ye===void 0?null:Ye,qe=i.responseType,At=i.onReadyStateChange,ie=i.onLoadStart,Tt=i.onProgress,Pt=i.onAbort,kt=i.onTimeout,ir=i.onError,lr=i.onLoad,sr=i.onLoadEnd;return new Promise(function(_t,br){var Ct=new XMLHttpRequest;Ct.open(x.toLowerCase(),e,_e,ht,It),At&&(Ct.onreadystatechange=At),typeof K=="number"&&K>0&&(Ct.timeout=K),Ct.withCredentials=mt,qe&&(Ct.responseType=qe),typeof Ze=="object"&&Gt(Ze).map(function(Ft){Ct.setRequestHeader(Ft,Ze[Ft])});var Vt=function(Ft){return function(Qt){_t(Qt),Ft==null||Ft.call(Ct,Qt)}},Ot=function(Ft){return function(Qt){br(Qt),Ft==null||Ft.call(Ct,Qt)}},Tr={loadstart:ie,progress:Tt,abort:Ot(Pt),timeout:Ot(kt),error:Ot(ir),load:Vt(lr),loadend:sr},qr=Gt(Tr);qr.forEach(function(Ft){var Qt=Tr[Ft];Qt&&Ct.addEventListener(Ft,Qt)}),Ct.send(le)})}var nr=[200,304];function or(e,t){return new Promise(function(i,g){nt(e)?i(e):Bt(e,(0,b.pi)({responseType:"blob"},t)).then(function(x){var O=x.target.status;if(nr.indexOf(O)!==-1)i(x.target.response);else{var le=new Error("The file does not support get requests, responseStatus ".concat(O,", '").concat(e,"'."));console.error(le),g(le)}}).catch(function(x){console.error(new Error("Failed to request file. ".concat(x))),g(x)})})}function Dr(e){return new Promise(function(t,i){var g=nt(e),x=g?rr(e):e,O=new Image;g||(O.crossOrigin="anonymous"),O.onload=function(){t(O)},O.onerror=function(le){g&&Ir(x),console.error("[loadImage] The image load failed, '".concat(e,"'.")),i(le)},O.src=x})}function ar(e,t){return or(e,t).then(function(i){return Dr(i).then(function(g){return{blob:i,image:g}})})}function Pr(e){return e!==null&&typeof e=="object"}function Fr(e){return typeof e=="function"||Pr(e)}function Kr(e){return typeof e=="symbol"||tt(e)===r}var Xr=/^0b[01]+$/i,Kt=/^0o[0-7]+$/i,ft=/^[-+]0x[0-9a-f]+$/i;function Nt(e){if(typeof e=="number")return e;if(Kr(e))return NaN;if(Fr(e)&&(e=Number(e)),typeof e!="string")return e===0?e:+e;e=e.trim();var t=Xr.test(e);return t||Kt.test(e)?parseInt(e.slice(2),t?2:8):ft.test(e)?NaN:+e}var $t=17976931348623157e292;function hr(e){if(!e)return e===0?e:0;if(e=Nt(e),e===1/0||e===-1/0){var t=e<0?-1:1;return t*$t}return e===e?e:0}function gr(e,t){e===void 0&&(e=0),t===void 0&&(t=1),e=hr(e),t=hr(t);var i=Xt(Mt(e,t)||0),g=Jt(Et(e,t)||0);if(i>g){var x=i;i=g,g=x}return Jt(i+zr()*(g-i+1))}var xt=Math.PI,$e;(function(e){e[e.None=0]="None",e[e.Outer=1]="Outer",e[e.Inner=2]="Inner"})($e||($e={}));var Or=[$e.None,$e.Outer,$e.Inner];function ot(e){var t=e.length,i=gr(0,t-1);return e[i]}function Nr(e){var t={top:ot(Or),right:ot(Or),bottom:ot(Or),left:ot(Or)},i=Object.keys(t),g=["top","bottom"],x=["left","right"];if(t.top===$e.Outer&&t.bottom===$e.Outer?t[ot(g)]=$e.Inner:t.top!==$e.Outer&&t.bottom!==$e.Outer&&(t[ot(g)]=$e.Outer),t.left===$e.Outer&&t.right===$e.Outer?t[ot(x)]=$e.Inner:t.left!==$e.Outer&&t.right!==$e.Outer&&(t[ot(x)]=$e.Outer),e){var O=[],le=[];i.forEach(function(K){t[K]===$e.Inner?O.push(K):t[K]===$e.None&&le.push(K)}),e===2?O.forEach(function(K){return t[K]=$e.None}):e===3?O.length===0?t[ot(le)]=$e.Inner:O.length===2&&(t[ot(O)]=$e.None):e==4&&le.forEach(function(K){return t[K]=$e.Inner})}return t}function an(e,t){t===void 0&&(t={});var i=t.x,g=i===void 0?0:i,x=t.y,O=x===void 0?0:x,le=t.w,K=le===void 0?60:le,Ze=t.h,at=Ze===void 0?60:Ze,mt=t.needClosePath,zt=mt===void 0?!0:mt,_e=t.points,St=t.margin,ht=St===void 0?0:St;ht=ht<=0?0:ht,(typeof _e=="number"||!_e)&&(_e=Nr(_e));var Ye=(Math.min(K,at)-ht*2)*.15,It=Math.hypot(Ye,Ye),qe=It/2,At=Ye+qe,ie={x:g+ht,y:O+ht,w:K-At-ht*2,h:at-At-ht*2},Tt=ie.w/2,Pt=ie.h/2;_e.left===$e.Outer&&(ie.x+=At),_e.top===$e.Outer&&(ie.y+=At),e.beginPath(),e.lineWidth=2,e.moveTo(ie.x,ie.y),_e.top!==$e.None&&(e.lineTo(ie.x+Tt-qe,ie.y),_e.top===$e.Inner?e.arc(ie.x+Tt,ie.y+qe,Ye,1.25*xt,1.75*xt,!0):e.arc(ie.x+Tt,ie.y-qe,Ye,.75*xt,.25*xt)),e.lineTo(ie.x+ie.w,ie.y),_e.right!==$e.None&&(e.lineTo(ie.x+ie.w,ie.y+Pt-qe),_e.right===$e.Inner?e.arc(ie.x+ie.w-qe,ie.y+Pt,Ye,1.75*xt,.25*xt,!0):e.arc(ie.x+ie.w+qe,ie.y+Pt,Ye,1.25*xt,.75*xt)),e.lineTo(ie.x+ie.w,ie.y+ie.h),_e.bottom!==$e.None&&(e.lineTo(ie.x+Tt+qe,ie.y+ie.h),_e.bottom===$e.Inner?e.arc(ie.x+Tt,ie.y+ie.h-qe,Ye,.25*xt,.75*xt,!0):e.arc(ie.x+Tt,ie.y+ie.h+qe,Ye,1.75*xt,1.25*xt)),e.lineTo(ie.x,ie.y+ie.h),_e.left!==$e.None&&(e.lineTo(ie.x,ie.y+Pt+qe),_e.left===$e.Inner?e.arc(ie.x+qe,ie.y+Pt,Ye,.75*xt,1.25*xt,!0):e.arc(ie.x-qe,ie.y+Pt,Ye,.25*xt,1.75*xt)),e.lineTo(ie.x,ie.y),e.stroke(),zt&&e.closePath()}function Rr(e,t,i,g){return new Promise(function(x){t?e.toBlob(function(O){x(O?URL.createObjectURL(O):e.toDataURL(i,g))},i,g):x(e.toDataURL(i,g))})}var Mr=new bt({max:5,maxStrategy:"replaced"});Mr.cache.on("del",function(e,t){try{t.image.src&&URL.revokeObjectURL(t.image.src)}catch(i){}});function dn(e){e?Mr.cache.del(e):Mr.cache.clear()}var Lr=new WeakMap,ln=function(e){if(!Fr(e))return String(e);if(!Lr.get(e)){var t="_"+Date.now();Lr.set(e,t)}return Lr.get(e)},Qr={jpeg:"image/jpeg",png:"image/png"},$r=[];function _r(e){e.forEach(function(t){URL.revokeObjectURL(t)})}function Yr(e,t){t===void 0&&(t={});var i=t.borderWidth,g=i===void 0?2:i,x=t.borderColor,O=x===void 0?"rgba(255,255,255,0.7)":x,le=t.fillColor,K=le===void 0?"rgba(255,255,255,0.7)":le,Ze=t.points,at=t.width,mt=at===void 0?60:at,zt=t.height,_e=zt===void 0?60:zt,St=t.x,ht=t.y,Ye=t.margin,It=Ye===void 0?2:Ye,qe=t.equalHeight,At=qe===void 0?!0:qe,ie=t.imageWidth,Tt=t.imageHeight,Pt=t.bgWidth,kt=t.bgHeight,ir=t.bgOffset,lr=ir===void 0?[0,0]:ir,sr=t.bgImageType,_t=sr===void 0?Qr.jpeg:sr,br=t.quality,Ct=br===void 0?.8:br,Vt=t.format,Ot=Vt===void 0?"dataURL":Vt,Tr=t.cacheImage,qr=Tr===void 0?!0:Tr,Ft=t.autoRevokePreviousBlobUrl,Qt=Ft===void 0?!0:Ft,mn=t.ajaxOptions;return new Promise(function(pn,Rt){var Zr=document.createElement("canvas"),qt=document.createElement("canvas"),yr=Zr.getContext("2d"),cr=qt.getContext("2d"),Vr=qr?ln(e):void 0;Mr.run(function(){return ar(e,mn)},Vr).then(function(Er){var jt=Er.image;ie&&(jt.width=ie),Tt&&(jt.height=Tt);var ur=typeof Pt=="number"&&Pt>0?Pt>mt?Pt:mt:jt.width,jr=typeof kt=="number"&&kt>0?kt>_e?kt:_e:jt.height;Zr.width=ur,Zr.height=jr;var Br=ur-mt,en=jr-_e,Yt=typeof St=="undefined"?gr(mt,Br):St||0,Wt=typeof ht=="undefined"?gr(0,en):ht||0;Yt<0?Yt=0:Yt>Br&&(Yt=Br),Wt<0?Wt=0:Wt>en&&(Wt=en);var tn=typeof Ze=="number"||!Ze?Nr(Ze):Ze,_=typeof lr=="function"?lr(jt.width,jt.height):lr;yr.strokeStyle=O,yr.lineWidth=g,yr.fillStyle=K,an(yr,{x:Yt,y:Wt,w:mt,h:_e,points:tn,margin:It}),yr.fillStyle=K,yr.fill(),yr.globalCompositeOperation="destination-over",yr.drawImage(jt,_[0],_[1],jt.width,jt.height),qt.width=ur,qt.height=jr,cr.strokeStyle=O,cr.lineWidth=g,an(cr,{x:Yt,y:Wt,w:mt,h:_e,points:tn,margin:It}),cr.globalCompositeOperation="destination-over",cr.clip(),cr.drawImage(jt,_[0],_[1],jt.width,jt.height);var Jr=cr.getImageData(Yt,Wt,mt,_e);cr.clearRect(0,0,ur,jr),qt.width=mt,qt.height=At?jr:_e,cr.putImageData(Jr,0,At?Wt:0);var Wr=Ot==="blob",kr=Rr(qt,Wr,Qr.png,Ct),vn=Rr(Zr,Wr,_t,Ct);Promise.all([kr,vn]).then(function(rn){var nn=rn[0],on=rn[1];Qt&&($r.length&&(_r($r),$r.length=0),Wr&&$r.push(on,nn)),pn({puzzleUrl:nn,bgUrl:on,x:Yt,y:At?0:Wt})}).catch(Rt)}).catch(Rt)})}var Sn=n(43418),In=n(3113),Pn=Object.defineProperty,gn=Object.getOwnPropertySymbols,On=Object.prototype.hasOwnProperty,Rn=Object.prototype.propertyIsEnumerable,bn=(e,t,i)=>t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,yn=(e,t)=>{for(var i in t||(t={}))On.call(t,i)&&bn(e,i,t[i]);if(gn)for(var i of gn(t))Rn.call(t,i)&&bn(e,i,t[i]);return e},fn=(e,t,i)=>new Promise((g,x)=>{var O=Ze=>{try{K(i.next(Ze))}catch(at){x(at)}},le=Ze=>{try{K(i.throw(Ze))}catch(at){x(at)}},K=Ze=>Ze.done?g(Ze.value):Promise.resolve(Ze.value).then(O,le);K((i=i.apply(e,t)).next())});const Bn=({ModalProps:e,onFinish:t})=>{const[i,g]=(0,m.useState)(),x=(0,m.useRef)(),O=()=>fn(void 0,null,function*(){const K=`/images/VerifCodeBg/img${Math.floor(Math.random()*23)+1}.jpg`,Ze=yield Yr(K,{imageHeight:180,imageWidth:360});return g(Ze),Ze}),le=K=>fn(void 0,null,function*(){return K!=null&&K.x&&K.x>i.x-5&&K.x{var K;e!=null&&e.open&&x.current&&((K=x.current)==null||K.refresh())},[e==null?void 0:e.open,x]),m.createElement(Sn.default,yn({},yn({title:"\u8BF7\u5B8C\u6210\u4E0B\u5217\u9A8C\u8BC1\u540E\u7EE7\u7EED",width:410,footer:null,centered:!0},e)),m.createElement(ue,{actionRef:x,request:O,onVerify:K=>fn(void 0,null,function*(){return le(K)}),bgSize:{width:360,height:180}}),m.createElement("div",{className:"flex mt10"},m.createElement(In.ZP,{style:{paddingLeft:"0px",paddingRight:"0px"},type:"link",icon:m.createElement("i",{className:"iconfont icon-shuaxin3"}),onClick:()=>{var K;(K=x.current)==null||K.refresh()}},"\u5237\u65B0")))};var zn=m.memo(Bn)},16543:function(it,fe,n){n.d(fe,{Ol:function(){return z},c0:function(){return h},o1:function(){return I},z2:function(){return m}});var b=n(22972);function z(a){return(0,b.U2)("accounts/valid_email_and_phone.json",a)}function I(a){return(0,b.U2)("accounts/get_verification_code.json",a)}function m(a){return(0,b.v_)("accounts/register.json",a)}function v(a){return post("weapps/register.json",a)}function h(a){return(0,b.v_)("accounts/reset_password.json",a)}},30968:function(it,fe,n){n.r(fe),n.d(fe,{default:function(){return Gr}});var b=n(63823),z=n(78241),I=n(8591),m=n(92832),v=n(24905),h=n(3113),a=n(59301),N=n(59898),F=n(28209),Z=n.n(F),ee=n(99267),Ee=n(10102),X=n(35783),ae={formWrapper:"formWrapper___fjdm5",errorRes:"errorRes___C0lcE",registerNav:"registerNav___NgUG4",navActive:"navActive___ir4p0",linkBtn:"linkBtn___zgrJY",unit:"unit___xpJyA"},ve=n(40001),he=n(49198),Se=n(68911),De=Object.defineProperty,Ve=Object.defineProperties,T=Object.getOwnPropertyDescriptors,G=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable,P=(D,B,H)=>B in D?De(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,j=(D,B)=>{for(var H in B||(B={}))u.call(B,H)&&P(D,H,B[H]);if(G)for(var H of G(B))c.call(B,H)&&P(D,H,B[H]);return D},te=(D,B)=>Ve(D,T(B)),re=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const J={moveX:0,verify:0};var ne=(D=>(D[D.SET_MOVEX=0]="SET_MOVEX",D[D.VERIFY=1]="VERIFY",D))(ne||{});function Ie(D,B){switch(B.type){case 0:return te(j({},D),{moveX:B.payload});case 1:return j(j({},D),B.payload);default:throw new Error}}var L=({value:D,onChange:B,onValidate:H})=>{const[wt,lt]=(0,a.useReducer)(Ie,J),{moveX:He,verify:Je}=wt,Re=(0,a.useRef)(),U=(0,a.useRef)(),Xe=(0,a.useRef)(),Ut=(0,a.useRef)(),ke=(0,a.useMemo)(()=>{if(U.current)return U.current.getBoundingClientRect()},[U.current]);(0,a.useEffect)(()=>{if(ke){let A=function(Y){return re(this,null,function*(){if(Ut.current){let pe=Y.pageX-E;w&&(pe=Y.changedTouches[0].pageX-E),pe<0&&(pe=0),pe>=S?(Ut.current=!1,pe=S,Me=yield H(),lt({type:1,payload:{moveX:pe,verify:Me}}),B(Me)):lt({type:0,payload:pe})}})},de=function(){Ut.current=!1,Me===0&&(Re.current.style.transition="left .5s ease",Xe.current.style.transition="width .5s ease",lt({type:1,payload:{moveX:0}}))},Me=0;const{width:r,left:E}=ke;let S=r-48;const w=!(0,Se.b9)();return w?(window.addEventListener("touchmove",A),window.addEventListener("touchend",de)):(window.addEventListener("mousemove",A),window.addEventListener("mouseup",de)),()=>{w?(window.removeEventListener("touchmove",A),window.removeEventListener("touchend",de)):(window.removeEventListener("mousemove",A),window.removeEventListener("mouseup",de))}}},[ke,Se.b9]),(0,a.useEffect)(()=>{lt({type:1,payload:{verify:D,moveX:D?(ke==null?void 0:ke.width)-48:0}})},[D]);function Qe(){Je||(Ut.current=!0,Re.current.style.transition="",Xe.current.style.transition="")}return a.createElement("div",{ref:U,className:"unlock-wrapper"},a.createElement("div",{ref:Xe,className:Je===1?"unlock-error-bg":"unlock-bg",style:{width:He}}),a.createElement("div",{className:"unlock-text",style:{color:Je?"#fff":"#7E86A1"}},Je?Je===1?"\u9A8C\u8BC1\u5931\u8D25":"\u9A8C\u8BC1\u901A\u8FC7":"\u62D6\u52A8\u6ED1\u5757\u81F3\u53F3\u4FA7\u9A8C\u8BC1"),a.createElement("div",{ref:Re,onTouchStart:Qe,onMouseDown:Qe,style:{left:He},className:"unlock-handler"},Je?Je===1?a.createElement(ee.Z,null):a.createElement(ve.Z,null):a.createElement(he.Z,null)))},Pe=Object.defineProperty,ce=Object.defineProperties,k=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertySymbols,M=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,o=(D,B,H)=>B in D?Pe(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,l=(D,B)=>{for(var H in B||(B={}))M.call(B,H)&&o(D,H,B[H]);if(y)for(var H of y(B))Q.call(B,H)&&o(D,H,B[H]);return D},f=(D,B)=>ce(D,k(B)),d=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const s={height:48,borderRadius:0,background:"#D7E6F4"},p=/(\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b)|(^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$)/i,C={timer:0};var V=(D=>(D[D.setTimer=0]="setTimer",D))(V||{});function me(D,B){switch(B.type){case 0:return f(l({},D),{timer:B.payload});default:throw new Error}}const R=({validateName:D,getCode:B,register:H,style:wt={},buttonText:lt="\u6CE8\u518C",globalSetting:He})=>{var Je,Re,U,Xe,Ut;const[ke]=z.default.useForm(),[Qe,de]=(0,a.useReducer)(me,C),[Me,r]=(0,a.useState)(!1),{timer:E}=Qe,[S,w]=(0,a.useState)(0),A=(0,a.useMemo)(()=>"/rucaptcha?t="+new Date().getTime(),[S]);function Y(ye){return d(this,null,function*(){const{login:ze,password:et,code:ut}=ye,{message:dt,status:pt}=yield H({login:ze,password:et,code:ut});if(pt<0){ke.setFields([{name:"code",errors:[dt]}]);return}if(localStorage.removeItem("extension-modal"),I.ZP.info("\u6CE8\u518C\u6210\u529F"),localStorage.getItem("addinfo")==="2"){localStorage.setItem("addinfo","2");let Te=localStorage.getItem("classromeurl");b.history.replace(Te)}else window.location.href="/account/profile"})}function pe(){return d(this,null,function*(){let ye=ke.getFieldValue("login"),ze=0;if(!p.test(ye)||ye.indexOf(" ")>-1)return ke.setFields([{name:"login",errors:["\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"]}]),ze=1,ze;let{status:et,message:ut}=yield D({login:ye,type:1});return et>0?ze=2:(ke.setFields([{name:"login",errors:[ut]}]),ze=1),ze})}const Le=()=>d(void 0,null,function*(){const ye=ke.getFieldValue("verify"),ze=ke.getFieldValue("login");if(!ye)ke.validateFields(["verify"]);else{r(!0);const{status:et,message:ut}=yield B({login:ze,type:1,smscode:(0,Se.M)(ze)});et<0&&ke.setFields([{name:"code",errors:[ut]}]),de({type:0,payload:60}),r(!1)}});function Ce(ye,ze){return ze?/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[\W_]).{8,16}$/.test(ze)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u51658~16\u4F4D\u5B57\u7B26\uFF0C\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u7279\u6B8A\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"):Promise.resolve()}const se=(ye,ze)=>ze?Promise.resolve():Promise.reject("\u8BF7\u62D6\u52A8\u6ED1\u5757\u9A8C\u8BC1");(0,a.useEffect)(()=>{E>0&&setTimeout(()=>{de({type:0,payload:E-1})},1e3)},[E]),(0,a.useEffect)(()=>{var ye;((ye=He==null?void 0:He.setting)==null?void 0:ye.close_register)===!0&&b.history.replace("/404")},[(Je=He==null?void 0:He.setting)==null?void 0:Je.close_register]);const be=(ye,ze)=>ze?ze.indexOf(" ")>-1?Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):p.test(ze)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):Promise.resolve();return a.createElement(z.default,{layout:"vertical",form:ke,style:wt,initialValues:{autologin:!0,protool:!1},onFinish:Y},a.createElement(z.default.Item,{name:"login",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"},{validator:be}]},a.createElement(m.default,{style:s,autoComplete:"new-login",size:"large",placeholder:"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7",onChange:()=>ke.setFieldsValue({verify:0})})),a.createElement(z.default.Item,{name:"verify",rules:[{validator:se}]},a.createElement(L,{onValidate:pe})),((Re=He==null?void 0:He.setting)==null?void 0:Re.is_local)&&((U=He==null?void 0:He.setting)==null?void 0:U.is_need_code)=="true"&&a.createElement(z.default.Item,{name:"code",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},a.createElement(m.default,{suffix:a.createElement(h.ZP,{loading:Me,type:"link",onClick:Le,disabled:E>0}," ",E===0?"\u83B7\u53D6\u9A8C\u8BC1\u7801":`${E}\u79D2\u53EF\u91CD\u65B0\u83B7\u53D6`),style:{paddingRight:2,height:48},placeholder:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",size:"large"})),((Xe=He==null?void 0:He.setting)==null?void 0:Xe.is_need_code)!=="true"&&a.createElement(z.default.Item,{name:"code",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},a.createElement("div",{style:{display:"flex"}},a.createElement(m.default,{style:s,size:"large",placeholder:"\u9A8C\u8BC1\u7801"}),a.createElement("img",{src:((Ut=X.Z)==null?void 0:Ut.API_SERVER)+A,style:{height:"47px",marginLeft:"10px"},onClick:()=>{w(S+1)}}))),a.createElement(z.default.Item,{name:"password",rules:[{required:!0,message:"\u8BF7\u8F93\u51658~16\u4F4D\u5B57\u7B26\uFF0C\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u7279\u6B8A\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"},{validator:Ce}]},a.createElement(m.default.Password,{autoComplete:"new-password",style:s,size:"large",placeholder:"\u8F93\u51658\uFF5E16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199",visibilityToggle:!1})),a.createElement(z.default.Item,null,a.createElement(h.ZP,{size:"large",type:"primary",htmlType:"submit",block:!0,style:{height:48},className:"font16"}," ",lt," ")))};var ue=(0,b.connect)(({globalSetting:D})=>({globalSetting:D}))(R),oe={wrap:"wrap___hSbXl",formWrapper:"formWrapper___GUTsO",link:"link___CveOg",linkBtn:"linkBtn___gkEPh",errorRes:"errorRes___RXMcY"},q=n(6018),$=n(59301),Oe=Object.defineProperty,ge=Object.defineProperties,W=Object.getOwnPropertyDescriptors,xe=Object.getOwnPropertySymbols,Be=Object.prototype.hasOwnProperty,Fe=Object.prototype.propertyIsEnumerable,Ue=(D,B,H)=>B in D?Oe(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,je=(D,B)=>{for(var H in B||(B={}))Be.call(B,H)&&Ue(D,H,B[H]);if(xe)for(var H of xe(B))Fe.call(B,H)&&Ue(D,H,B[H]);return D},we=(D,B)=>ge(D,W(B)),We=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const Ne={height:48,borderRadius:0,background:"#D7E6F4"},Ge=/(\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b)|(^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$)/i,rt={timer:0};var gt=(D=>(D[D.setTimer=0]="setTimer",D))(gt||{});function Ht(D,B){switch(B.type){case 0:return we(je({},D),{timer:B.payload});default:throw new Error}}var Ke=({validateName:D,getCode:B,callback:H,style:wt={},goBack:lt})=>{const He=(0,b.useLocation)(),[Je]=(0,b.useSearchParams)(),[Re]=z.default.useForm(),[U,Xe]=(0,a.useReducer)(Ht,rt),[Ut,ke]=(0,a.useState)(!1),{timer:Qe}=U,[de,Me]=(0,a.useState)(!1),[r,E]=(0,a.useState)("");function S(Ce){return We(this,null,function*(){const{login:se,new_password:be,code:ye,new_password_confirmation:ze}=Ce,{message:et,status:ut,show:dt,start_date:pt}=yield H({login:se,new_password_confirmation:ze,new_password:be,code:ye});if(ut===0){dt?(localStorage.setItem("extension-modal","exist"),localStorage.setItem("extension-date",pt)):localStorage.removeItem("extension-modal");const tt=Je.get("from");tt&&tt.indexOf("login")<0?b.history.replace(tt):b.history.replace("/")}else E(et)})}function w(){return We(this,null,function*(){let Ce=Re.getFieldValue("login"),se=0;if(!Ge.test(Ce)||Ce.indexOf(" ")>-1)return Re.setFields([{name:"login",errors:["\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"]}]),se=1,se;let{status:be,message:ye}=yield D({login:Ce,type:2});return be>0?se=2:(Re.setFields([{name:"login",errors:[ye]}]),se=1),se})}const A=()=>We(void 0,null,function*(){const Ce=Re.getFieldValue("verify"),se=Re.getFieldValue("login");if(!Ce)Re.validateFields(["verify"]);else{ke(!0);const{status:be,message:ye}=yield B({login:se,type:2,smscode:(0,Se.M)(se)});be<0&&Re.setFields([{name:"code",errors:[ye]}]),Xe({type:0,payload:60}),ke(!1)}});function Y(Ce,se){return se?/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[\W_]).{8,16}$/.test(se)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u51658~16\u4F4D\u5B57\u7B26\uFF0C\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u7279\u6B8A\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"):Promise.resolve()}(0,a.useEffect)(()=>{Qe>0&&setTimeout(()=>{Xe({type:0,payload:Qe-1})},1e3)},[Qe]);const pe=(Ce,se)=>se?Promise.resolve():Promise.reject("\u8BF7\u62D6\u52A8\u6ED1\u5757\u9A8C\u8BC1"),Le=(Ce,se)=>se?se.indexOf(" ")>-1?Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):Ge.test(se)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):Promise.resolve();return $.createElement("div",{className:oe.wrap},$.createElement(z.default,{layout:"vertical",form:Re,style:wt,className:oe.formWrapper,initialValues:{autologin:!0,protool:!0},onFinish:S,onValuesChange:()=>E("")},!!r&&$.createElement("div",{className:oe.errorRes},$.createElement("span",null,r),$.createElement(ee.Z,{onClick:()=>E("")})),$.createElement(z.default.Item,{name:"login",required:!1,rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"},{validator:Le}]},$.createElement(m.default,{style:Ne,size:"middle",placeholder:"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7",onChange:()=>Re.setFieldsValue({verify:0})})),$.createElement(z.default.Item,{name:"verify",rules:[{validator:pe}]},$.createElement(L,{onValidate:w})),$.createElement("div",{className:"flex"},$.createElement(z.default.Item,{name:"code",required:!1,rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},$.createElement(m.default,{style:{width:"278rem",marginRight:"10rem",paddingRight:"2rem",height:48,borderRadius:0,background:"#D7E6F4"},placeholder:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",size:"middle"})),$.createElement(h.ZP,{loading:Ut,size:"middle",type:"primary",style:{height:48,width:"150rem"},onClick:Ce=>{if(Ce.stopPropagation(),!Re.getFieldValue("verify")){Re.validateFields(["verify"]);return}Me(!0)},disabled:Qe>0}," ",Qe===0?"\u83B7\u53D6\u9A8C\u8BC1\u7801":`${Qe}\u79D2\u53EF\u91CD\u65B0\u83B7\u53D6`)),$.createElement(z.default.Item,{required:!1,name:"new_password",rules:[{required:!0,message:"\u8BF7\u8F93\u51658-16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199\u3001\u4E0D\u80FD\u4F7F\u7528\u7A7A\u683C"},{validator:Y}]},$.createElement(m.default.Password,{style:Ne,size:"middle",placeholder:"\u8F93\u51658\uFF5E16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199",visibilityToggle:!1})),$.createElement(z.default.Item,{name:"new_password_confirmation",rules:[{required:!0,message:"\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801"},({getFieldValue:Ce})=>({validator(se,be){return!be||Ce("new_password")===be?Promise.resolve():Promise.reject("\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4")}})]},$.createElement(m.default.Password,{style:Ne,size:"middle",placeholder:"\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801",visibilityToggle:!1})),$.createElement(z.default.Item,null,$.createElement("div",{className:"flex-container",style:{justifyContent:"space-between"}},$.createElement(z.default.Item,{name:"autologin",noStyle:!0,valuePropName:"checked"},$.createElement(v.default,null,"\u4E0B\u6B21\u81EA\u52A8\u767B\u5F55")),$.createElement("div",{className:oe.linkBtn,onClick:lt},"\u8FD4\u56DE\u767B\u5F55"))),$.createElement(z.default.Item,null,$.createElement(h.ZP,{size:"middle",type:"primary",htmlType:"submit",block:!0,className:"font16",style:{height:48}}," \u5B8C\u6210 "))),$.createElement(q.Z,{ModalProps:{open:de,onCancel:()=>{Me(!1)}},onFinish:()=>{Me(!1),A()}}))},ct=n(16543),Zt=n(29935),fr=Object.defineProperty,xr=Object.defineProperties,mr=Object.getOwnPropertyDescriptors,pr=Object.getOwnPropertySymbols,Cr=Object.prototype.hasOwnProperty,wr=Object.prototype.propertyIsEnumerable,Mt=(D,B,H)=>B in D?fr(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,Et=(D,B)=>{for(var H in B||(B={}))Cr.call(B,H)&&Mt(D,H,B[H]);if(pr)for(var H of pr(B))wr.call(B,H)&&Mt(D,H,B[H]);return D},zr=(D,B)=>xr(D,mr(B)),Jt=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const Xt={height:48,borderRadius:0,background:"#D7E6F4"},Ar=({dispatch:D,globalSetting:B})=>{var H,wt,lt;const[He]=z.default.useForm(),Je=(0,b.useLocation)(),[Re,U]=(0,a.useState)(""),[Xe,Ut]=(0,a.useState)(0),[ke,Qe]=(0,a.useState)("\u767B\u5F55"),de=(0,a.useMemo)(()=>"/rucaptcha?t="+new Date().getTime(),[Xe]);(0,a.useEffect)(()=>{(0,Ee.bg)()&&b.history.push("/")},[(0,Ee.bg)()]);const Me=A=>Jt(void 0,null,function*(){var Y,pe;const Le=Et({},A),Ce=Z().enc.Utf8.parse("5183666c72eec9e4"),se=Z().AES.encrypt(A.password||"",Ce,{iv:Ce,mode:Z().mode.CBC});Le.password=se.toString();const be=yield(0,N.Es)(Le);if(be.status){if(be.status===-4){D({type:"user/showPopLogin",payload:{showPopLogin:!1}}),D({type:"user/setBindAccountModal",payload:{bindAccountModalVisible:!0,userInfoForBindAccountModal:be.user,loginInfo:A}});return}(be==null?void 0:be.status)!==0&&I.ZP.warning(be==null?void 0:be.message),U(be==null?void 0:be.message);return}if(be!=null&&be.show?(localStorage.setItem("extension-modal","exist"),localStorage.setItem("extension-date",be==null?void 0:be.start_date)):localStorage.removeItem("extension-modal"),console.log(b.history,"history"),Je.pathname==="/user/login"||Je.pathname==="/login"){let ye=((Y=Je.query)==null?void 0:Y.from)||((pe=Je.query)==null?void 0:pe.back_url);ye?window.location.href=decodeURIComponent(ye):window.location.href="/"}else window.location.reload();He.resetFields()}),r=()=>{D({type:"user/showPopLogin",payload:{showPopLogin:!1}})},E={getCode:N.o1,register:A=>Jt(void 0,null,function*(){return yield(0,N.z2)(A)}),validateName:N.Ol},S={getCode:N.o1,callback:A=>Jt(void 0,null,function*(){return yield(0,ct.c0)(A)}),validateName:N.Ol},w=(0,a.useMemo)(()=>{var A,Y;return(A=B==null?void 0:B.setting)!=null&&A.login_logo_url?`${X.Z.IMG_SERVER}/${(Y=B==null?void 0:B.setting)==null?void 0:Y.login_logo_url}`:`${X.Z.IMG_SERVER}/images/avatars/LaboratorySetting/1nav?t=${new Date().getTime()}`},[(H=B==null?void 0:B.setting)==null?void 0:H.nav_logo_url]);return a.createElement("div",{className:"flex h-screen w-full item-center justify-end relative",style:{overflow:"hidden",padding:"0 360rem",background:`url(${n(21722)}) 0 center / 100% 100% no-repeat`}},a.createElement("img",{className:"absolute",src:w||Zt,style:{top:"60rem",left:"100rem",height:"60rem"}}),a.createElement("div",{className:"rounded-20px-rem py-40px-rem px-60px-rem flex flex-col item-center gap-30px-rem",style:{border:"2rem solid #fff",backdropFilter:"blur(3rem)",width:"560rem",background:"linear-gradient( 151deg, #EEF6FF 0%, #F2F9FF 25%, #E1EDFE 100%)",boxShadow:"0 0 16rem 2rem rgba(198,221,249,0.6)",paddingBottom:"16rem"}},a.createElement("div",{className:"text-30px-rem font-bold",style:{letterSpacing:"2px"}},(wt=B==null?void 0:B.setting)==null?void 0:wt.name),a.createElement("div",{className:ae.registerNav},ke=="\u627E\u56DE\u5BC6\u7801"?a.createElement("div",{onClick:()=>Qe("\u627E\u56DE\u5BC6\u7801"),className:ke=="\u627E\u56DE\u5BC6\u7801"?`${ae.navActive}`:""},"\u627E\u56DE\u5BC6\u7801"):a.createElement(a.Fragment,null,a.createElement("div",{onClick:()=>Qe("\u767B\u5F55"),className:ke=="\u767B\u5F55"?`${ae.navActive}`:""},"\u767B\u5F55"),a.createElement("div",{onClick:()=>Qe("\u6CE8\u518C"),className:ke=="\u6CE8\u518C"?`${ae.navActive}`:""},"\u6CE8\u518C"))),ke=="\u767B\u5F55"&&a.createElement(z.default,{className:ae.formWrapper,layout:"vertical",form:He,initialValues:{autologin:!0},onFinish:Me,onValuesChange:()=>U("")},!!Re&&a.createElement("div",{className:ae.errorRes},a.createElement("span",null,Re),a.createElement(ee.Z,{onClick:()=>U("")})),a.createElement(z.default.Item,{name:"login",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5B66\u53F7\u3001\u5DE5\u53F7\u3001\u624B\u673A\u53F7\u6216\u90AE\u7BB1"}]},a.createElement(m.default,{style:Xt,size:"large",placeholder:"\u8BF7\u8F93\u5165\u5B66\u53F7\u3001\u5DE5\u53F7\u3001\u624B\u673A\u53F7\u6216\u90AE\u7BB1"})),a.createElement(z.default.Item,{name:"password",rules:[{required:!0,message:"\u8BF7\u8F93\u51658-16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199\u3001\u4E0D\u80FD\u4F7F\u7528\u7A7A\u683C"}]},a.createElement(m.default.Password,{style:Xt,size:"large",placeholder:"\u5BC6\u7801"})),a.createElement(z.default.Item,{name:"code",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},a.createElement("div",{style:{display:"flex"}},a.createElement(m.default,{style:Xt,size:"large",placeholder:"\u9A8C\u8BC1\u7801"}),a.createElement("img",{src:((lt=X.Z)==null?void 0:lt.API_SERVER)+de,style:{height:"47px",marginLeft:"10px"},onClick:()=>{Ut(Xe+1)}}))),a.createElement(z.default.Item,null,a.createElement("div",{className:"flex-container",style:{justifyContent:"space-between"}},a.createElement(z.default.Item,{name:"autologin",noStyle:!0,valuePropName:"checked"},a.createElement(v.default,null,"\u4E0B\u6B21\u81EA\u52A8\u767B\u5F55")),a.createElement("div",{className:ae.linkBtn,onClick:()=>Qe("\u627E\u56DE\u5BC6\u7801")},"\u627E\u56DE\u5BC6\u7801"))),a.createElement(z.default.Item,null,a.createElement(h.ZP,{size:"large",type:"primary",htmlType:"submit",block:!0,className:"font16",style:{height:"48px"}},"\u767B\u5F55"))),ke=="\u6CE8\u518C"&&a.createElement(ue,Et({style:{width:"100%"}},E)),ke=="\u627E\u56DE\u5BC6\u7801"&&a.createElement(Ke,zr(Et({style:{width:"100%"}},S),{goBack:()=>Qe("\u767B\u5F55")}))))};var Gr=(0,b.connect)(({user:D,globalSetting:B})=>({user:D,globalSetting:B}))(Ar)},19080:function(it,fe,n){n.d(fe,{F:function(){return v},Z:function(){return m}});var b=n(92310),z=n.n(b);const I=null;function m(h,a,N){return z()({[`${h}-status-success`]:a==="success",[`${h}-status-warning`]:a==="warning",[`${h}-status-error`]:a==="error",[`${h}-status-validating`]:a==="validating",[`${h}-has-feedback`]:N})}const v=(h,a)=>a||h},24905:function(it,fe,n){n.d(fe,{default:function(){return P}});var b=n(92310),z=n.n(b),I=n(5630),m=n(59301),v=n(36355),h=n(1684),a=n(32441),F=m.createContext(null),Z=n(98447),ee=n(14088),Ee=n(4572),X=function(j,te){var re={};for(var J in j)Object.prototype.hasOwnProperty.call(j,J)&&te.indexOf(J)<0&&(re[J]=j[J]);if(j!=null&&typeof Object.getOwnPropertySymbols=="function")for(var ne=0,J=Object.getOwnPropertySymbols(j);ne{var re;const{prefixCls:J,className:ne,rootClassName:Ie,children:L,indeterminate:Pe=!1,style:ce,onMouseEnter:k,onMouseLeave:y,skipGroup:M=!1,disabled:Q}=j,o=X(j,["prefixCls","className","rootClassName","children","indeterminate","style","onMouseEnter","onMouseLeave","skipGroup","disabled"]),{getPrefixCls:l,direction:f,checkbox:d}=m.useContext(v.E_),s=m.useContext(F),{isFormItemInput:p}=m.useContext(a.aM),C=m.useContext(h.Z),V=(re=(s==null?void 0:s.disabled)||Q)!==null&&re!==void 0?re:C,me=m.useRef(o.value);m.useEffect(()=>{s==null||s.registerValue(o.value)},[]),m.useEffect(()=>{if(!M)return o.value!==me.current&&(s==null||s.cancelValue(me.current),s==null||s.registerValue(o.value),me.current=o.value),()=>s==null?void 0:s.cancelValue(o.value)},[o.value]);const R=l("checkbox",J),[ue,oe]=(0,Z.ZP)(R),q=Object.assign({},o);s&&!M&&(q.onChange=function(){o.onChange&&o.onChange.apply(o,arguments),s.toggleOption&&s.toggleOption({label:L,value:o.value})},q.name=s.name,q.checked=s.value.includes(o.value));const $=z()(`${R}-wrapper`,{[`${R}-rtl`]:f==="rtl",[`${R}-wrapper-checked`]:q.checked,[`${R}-wrapper-disabled`]:V,[`${R}-wrapper-in-form-item`]:p},d==null?void 0:d.className,ne,Ie,oe),Oe=z()({[`${R}-indeterminate`]:Pe},Ee.A,oe),ge=Pe?"mixed":void 0;return ue(m.createElement(ee.Z,{component:"Checkbox",disabled:V},m.createElement("label",{className:$,style:Object.assign(Object.assign({},d==null?void 0:d.style),ce),onMouseEnter:k,onMouseLeave:y},m.createElement(I.Z,Object.assign({"aria-checked":ge},q,{prefixCls:R,className:Oe,disabled:V,ref:te})),L!==void 0&&m.createElement("span",null,L))))};var he=m.forwardRef(ae),Se=n(94480),De=n(2738),Ve=function(j,te){var re={};for(var J in j)Object.prototype.hasOwnProperty.call(j,J)&&te.indexOf(J)<0&&(re[J]=j[J]);if(j!=null&&typeof Object.getOwnPropertySymbols=="function")for(var ne=0,J=Object.getOwnPropertySymbols(j);ne{const{defaultValue:re,children:J,options:ne=[],prefixCls:Ie,className:L,rootClassName:Pe,style:ce,onChange:k}=j,y=Ve(j,["defaultValue","children","options","prefixCls","className","rootClassName","style","onChange"]),{getPrefixCls:M,direction:Q}=m.useContext(v.E_),[o,l]=m.useState(y.value||re||[]),[f,d]=m.useState([]);m.useEffect(()=>{"value"in y&&l(y.value||[])},[y.value]);const s=m.useMemo(()=>ne.map(W=>typeof W=="string"||typeof W=="number"?{label:W,value:W}:W),[ne]),p=W=>{d(xe=>xe.filter(Be=>Be!==W))},C=W=>{d(xe=>[].concat((0,Se.Z)(xe),[W]))},V=W=>{const xe=o.indexOf(W.value),Be=(0,Se.Z)(o);xe===-1?Be.push(W.value):Be.splice(xe,1),"value"in y||l(Be),k==null||k(Be.filter(Fe=>f.includes(Fe)).sort((Fe,Ue)=>{const je=s.findIndex(We=>We.value===Fe),we=s.findIndex(We=>We.value===Ue);return je-we}))},me=M("checkbox",Ie),R=`${me}-group`,[ue,oe]=(0,Z.ZP)(me),q=(0,De.Z)(y,["value","disabled"]),$=ne.length?s.map(W=>m.createElement(he,{prefixCls:me,key:W.value.toString(),disabled:"disabled"in W?W.disabled:y.disabled,value:W.value,checked:o.includes(W.value),onChange:W.onChange,className:`${R}-item`,style:W.style,title:W.title},W.label)):J,Oe={toggleOption:V,value:o,disabled:y.disabled,name:y.name,registerValue:C,cancelValue:p},ge=z()(R,{[`${R}-rtl`]:Q==="rtl"},L,Pe,oe);return ue(m.createElement("div",Object.assign({className:ge,style:ce},q,{ref:te}),m.createElement(F.Provider,{value:Oe},$)))},G=m.forwardRef(T);var u=m.memo(G);const c=he;c.Group=u,c.__ANT_CHECKBOX=!0;var P=c},98447:function(it,fe,n){n.d(fe,{C2:function(){return v}});var b=n(17313),z=n(37613),I=n(83116);const m=h=>{const{checkboxCls:a}=h,N=`${a}-wrapper`;return[{[`${a}-group`]:Object.assign(Object.assign({},(0,b.Wf)(h)),{display:"inline-flex",flexWrap:"wrap",columnGap:h.marginXS,[`> ${h.antCls}-row`]:{flex:1}}),[N]:Object.assign(Object.assign({},(0,b.Wf)(h)),{display:"inline-flex",alignItems:"baseline",cursor:"pointer","&:after":{display:"inline-block",width:0,overflow:"hidden",content:"'\\a0'"},[`& + ${N}`]:{marginInlineStart:0},[`&${N}-in-form-item`]:{'input[type="checkbox"]':{width:14,height:14}}}),[a]:Object.assign(Object.assign({},(0,b.Wf)(h)),{position:"relative",whiteSpace:"nowrap",lineHeight:1,cursor:"pointer",borderRadius:h.borderRadiusSM,alignSelf:"center",[`${a}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0,margin:0,[`&:focus-visible + ${a}-inner`]:Object.assign({},(0,b.oN)(h))},[`${a}-inner`]:{boxSizing:"border-box",position:"relative",top:0,insetInlineStart:0,display:"block",width:h.checkboxSize,height:h.checkboxSize,direction:"ltr",backgroundColor:h.colorBgContainer,border:`${h.lineWidth}px ${h.lineType} ${h.colorBorder}`,borderRadius:h.borderRadiusSM,borderCollapse:"separate",transition:`all ${h.motionDurationSlow}`,"&:after":{boxSizing:"border-box",position:"absolute",top:"50%",insetInlineStart:"21.5%",display:"table",width:h.checkboxSize/14*5,height:h.checkboxSize/14*8,border:`${h.lineWidthBold}px solid ${h.colorWhite}`,borderTop:0,borderInlineStart:0,transform:"rotate(45deg) scale(0) translate(-50%,-50%)",opacity:0,content:'""',transition:`all ${h.motionDurationFast} ${h.motionEaseInBack}, opacity ${h.motionDurationFast}`}},"& + span":{paddingInlineStart:h.paddingXS,paddingInlineEnd:h.paddingXS}})},{[` +`;X(ae);var ve="rc-slider-captcha";function he(e){var t=0,i=0;return typeof e.clientX=="number"&&typeof e.clientY=="number"?(t=e.clientX,i=e.clientY):e.touches&&e.touches[0]?(t=e.touches[0].clientX,i=e.touches[0].clientY):e.changedTouches&&e.changedTouches[0]&&(t=e.changedTouches[0].clientX,i=e.changedTouches[0].clientY),{clientX:t,clientY:i}}function Se(e,t){if(t===void 0&&(t={}),e)for(var i in t)e.style[i]=t[i]}var De=typeof window=="object"&&window&&typeof document=="object"&&document&&window.document===document&&!!document.addEventListener,Ve=De&&"onpointerdown"in window,T=De&&"ontouchstart"in window,G=function(e){return e==null?void 0:e.scrollTop};function u(e,t){return typeof e=="number"&&!Number.isNaN(e)&&typeof t=="number"&&t>0?Number(e.toFixed(t)):e}var c="".concat(ve,"-button"),P=function(e){var t,i=e.className,g=e.disabled,x=e.active,O=e.success,le=e.error,K=e.verify,Ze=e.buttonRef,at=(0,b._T)(e,["className","disabled","active","success","error","verify","buttonRef"]);return m.createElement("span",(0,b.pi)({className:I()(c,i,(t={},t["".concat(c,"-disabled")]=g,t["".concat(c,"-active")]=x,t["".concat(c,"-verify")]=K,t["".concat(c,"-success")]=O,t["".concat(c,"-error")]=le,t["".concat(c,"-pc")]=!T,t)),ref:Ze},at))};P.displayName="SliderButton";var j=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M116.9408 561.4592m0-40.96l0 0q0-40.96 40.96-40.96l573.44 0q40.96 0 40.96 40.96l0 0q0 40.96-40.96 40.96l-573.44 0q-40.96 0-40.96-40.96Z"}),m.createElement("path",{d:"M769.82272 519.43424l-203.22304-203.22304a40.96 40.96 0 1 1 57.91744-57.91744l231.71072 231.71072a40.96 40.96 0 0 1 0.45056 58.44992L624.9472 780.12416a40.96 40.96 0 0 1-57.93792-57.91744l202.79296-202.79296z"}))},te=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M864.554667 268.501333a42.666667 42.666667 0 0 1 0 60.330667L412.032 781.397333a42.453333 42.453333 0 0 1-22.613333 11.818667l-5.034667 0.597333H379.306667a42.496 42.496 0 0 1-27.648-12.416l-211.2-211.2a42.666667 42.666667 0 1 1 60.330666-60.330666l180.992 180.992 422.4-422.4a42.666667 42.666667 0 0 1 60.330667 0z"}))},re=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 120 120",width:"1em",height:"1em"},e),m.createElement("defs",null,m.createElement("line",{id:"l",x1:"60",x2:"60",y1:"7",y2:"27",stroke:"currentColor",strokeWidth:"11",strokeLinecap:"round"})),m.createElement("g",null,m.createElement("use",{xlinkHref:"#l",opacity:".27"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(30 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(60 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(90 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(120 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".27",transform:"rotate(150 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".37",transform:"rotate(180 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".46",transform:"rotate(210 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".56",transform:"rotate(240 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".66",transform:"rotate(270 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".75",transform:"rotate(300 60,60)"}),m.createElement("use",{xlinkHref:"#l",opacity:".85",transform:"rotate(330 60,60)"})))},J=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M866.133333 573.013333a42.666667 42.666667 0 0 0-53.333333 27.733334A304.64 304.64 0 0 1 519.68 810.666667 302.933333 302.933333 0 0 1 213.333333 512a302.933333 302.933333 0 0 1 306.346667-298.666667 309.76 309.76 0 0 1 198.4 71.253334l-92.586667-15.36a42.666667 42.666667 0 0 0-49.066666 35.413333 42.666667 42.666667 0 0 0 35.413333 49.066667l180.906667 29.866666h7.253333a42.666667 42.666667 0 0 0 14.506667-2.56 14.08 14.08 0 0 0 4.266666-2.56 33.28 33.28 0 0 0 8.533334-4.693333l3.84-4.693333c0-2.133333 3.84-3.84 5.546666-6.4s0-4.266667 2.133334-5.973334a57.173333 57.173333 0 0 0 2.986666-7.68l32-170.666666a42.666667 42.666667 0 0 0-85.333333-16.213334l-11.52 61.866667A392.96 392.96 0 0 0 519.68 128 388.266667 388.266667 0 0 0 128 512a388.266667 388.266667 0 0 0 391.68 384A389.12 389.12 0 0 0 896 626.346667a42.666667 42.666667 0 0 0-29.866667-53.333334z"}))},ne=function(e){return m.createElement("svg",(0,b.pi)({viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor"},e),m.createElement("path",{d:"M572.96896 524.6976l217.23136 217.25184a40.96 40.96 0 1 1-57.93792 57.91744L515.072 582.63552l-212.3776 212.3776a40.96 40.96 0 1 1-57.9584-57.91744l212.39808-212.3776-217.21088-217.23136a40.96 40.96 0 1 1 57.91744-57.91744l217.23136 217.21088L737.0752 244.736a40.96 40.96 0 1 1 57.93792 57.91744L572.96896 524.71808z"}))},Ie=function(e){return m.createElement("svg",(0,b.pi)({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"currentColor",viewBox:"0 0 16 16"},e),m.createElement("path",{d:"M.002 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-12a2 2 0 0 1-2-2zm1 9v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062zm5-6.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"}))},L="".concat(ve,"-icon"),Pe=function(e){var t,i=e.className,g=e.spin,x=(0,b._T)(e,["className","spin"]);return m.createElement("span",(0,b.pi)({className:I()(L,(t={},t["".concat(L,"-spin")]=g,t),i)},x))},ce={arrowRight:m.createElement(j,null),check:m.createElement(te,null),loading:m.createElement(re,null),refresh:m.createElement(J,null),x:m.createElement(ne,null),imageFill:m.createElement(Ie,null)},k=function(e){var t=e.type,i=(0,b._T)(e,["type"]);return m.createElement(Pe,(0,b.pi)({},i),ce[t])},y;(function(e){e[e.Default=1]="Default",e[e.Loading=2]="Loading",e[e.Moving=3]="Moving",e[e.Verify=4]="Verify",e[e.Success=5]="Success",e[e.Error=6]="Error",e[e.LoadFailed=7]="LoadFailed"})(y||(y={}));var M="".concat(ve,"-control"),Q=40,o=2,l=function(e){var t,i,g=e.status,x=g===void 0?y.Default:g,O=e.isLimitErrors,le=e.tipText,K=e.tipIcon,Ze=e.sliderButtonProps,at=e.indicatorProps,mt=e.controlRef,zt=(0,b._T)(e,["status","isLimitErrors","tipText","tipIcon","sliderButtonProps","indicatorProps","controlRef"]),_e=(0,m.useRef)(null),St=(0,m.useRef)(null),ht=(0,m.useRef)(null),Ye=(0,m.useRef)({}),It=(0,b.pi)({default:"\u5411\u53F3\u62D6\u52A8\u6ED1\u5757\u586B\u5145\u62FC\u56FE",loading:"\u52A0\u8F7D\u4E2D...",moving:null,verifying:null,success:null,error:null,errors:m.createElement(m.Fragment,null,m.createElement(k,{type:"x",style:{fontSize:20}})," \u5931\u8D25\u8FC7\u591A\uFF0C\u70B9\u51FB\u91CD\u8BD5"),loadFailed:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5"},le),qe=(0,b.pi)({default:m.createElement(k,{type:"arrowRight"}),loading:m.createElement(k,{type:"loading",spin:!0}),error:m.createElement(k,{type:"x"}),success:m.createElement(k,{type:"check"})},K),At=(t={},t[y.Default]=[It.default,qe.default],t[y.Loading]=[It.loading,qe.default],t[y.Moving]=[It.moving,qe.default],t[y.Verify]=[It.verifying,qe.loading],t[y.Error]=[It.error,qe.error],t[y.Success]=[It.success,qe.success],t[y.LoadFailed]=[It.loadFailed,qe.default],t),ie=function(Vt){var Ot;return(Vt||typeof Ye.current.sliderButtonWidth!="number")&&(Ye.current.sliderButtonWidth=((Ot=St.current)===null||Ot===void 0?void 0:Ot.clientWidth)||Q),Ye.current.sliderButtonWidth},Tt=function(Vt){if(Vt||typeof Ye.current.indicatorBorderWidth!="number")if(ht.current){var Ot=window.getComputedStyle(ht.current);Ye.current.indicatorBorderWidth=parseInt(Ot.borderLeftWidth)+parseInt(Ot.borderRightWidth)}else Ye.current.indicatorBorderWidth=o;return Ye.current.indicatorBorderWidth},Pt=function(Vt){var Ot;return(Vt||!Ye.current.rect)&&_e.current&&(Ye.current.rect=(Ot=_e.current)===null||Ot===void 0?void 0:Ot.getBoundingClientRect()),Ye.current.rect};(0,m.useImperativeHandle)(mt,function(){return{getSliderButtonWidth:ie,getIndicatorBorderWidth:Tt,getRect:Pt,updateLeft:function(Vt){var Ot=ie(),Tr=Tt();Se(St.current,{left:Vt+"px"}),Se(ht.current,{width:Vt+Ot+Tr+"px"})}}},[]);var kt=x===y.Loading,ir=x===y.Moving,lr=x===y.Verify,sr=x===y.Success,_t=x===y.Error,br=x===y.LoadFailed,Ct=O?It.errors:At[x][0];return m.createElement("div",(0,b.pi)({},zt,{className:I()(M,(i={},i["".concat(M,"-loading")]=kt,i["".concat(M,"-moving")]=ir,i["".concat(M,"-verify")]=lr,i["".concat(M,"-success")]=sr,i["".concat(M,"-error")]=_t,i["".concat(M,"-errors")]=O,i["".concat(M,"-load-failed")]=br,i),zt.className),ref:_e}),m.createElement("div",(0,b.pi)({},at,{className:I()("".concat(M,"-indicator"),at==null?void 0:at.className),ref:ht})),m.createElement(P,(0,b.pi)({},Ze,{className:I()("".concat(M,"-button"),Ze==null?void 0:Ze.className),disabled:kt,active:ir,verify:lr,success:sr,error:_t,buttonRef:St}),At[x][1]),m.createElement("div",{className:I()("".concat(M,"-tips")),style:Ct?{}:{display:"none"}},Ct))},f="".concat(ve,"-loading"),d=function(e){var t=e.icon,i=t===void 0?m.createElement(k,{type:"loading",spin:!0}):t,g=e.text,x=g===void 0?"\u52A0\u8F7D\u4E2D...":g,O=e.className,le=(0,b._T)(e,["icon","text","className"]);return m.createElement("div",(0,b.pi)({className:I()(f,O)},le),m.createElement("div",{className:"".concat(f,"-icon")},i),m.createElement("div",{className:"".concat(f,"-text")},x))},s="".concat(ve,"-jigsaw"),p={bgSize:{width:320,height:160},puzzleSize:{width:60,left:0},loadFailedIcon:m.createElement(k,{type:"imageFill"}),refreshIcon:m.createElement(k,{type:"refresh"})},C=function(e){var t,i,g=e.status,x=e.bgSize,O=x===void 0?p.bgSize:x,le=e.puzzleSize,K=le===void 0?p.puzzleSize:le,Ze=e.bgUrl,at=e.puzzleUrl,mt=e.bgImgProps,zt=e.puzzleImgProps,_e=e.jigsawRef,St=e.loadingBoxProps,ht=e.loadFailedIcon,Ye=ht===void 0?p.loadFailedIcon:ht,It=e.showRefreshIcon,qe=It===void 0?!0:It,At=e.refreshIcon,ie=At===void 0?p.refreshIcon:At,Tt=e.disabledRefresh,Pt=e.onRefresh,kt=e.style,ir=e.className,lr=e.children,sr=(0,b._T)(e,["status","bgSize","puzzleSize","bgUrl","puzzleUrl","bgImgProps","puzzleImgProps","jigsawRef","loadingBoxProps","loadFailedIcon","showRefreshIcon","refreshIcon","disabledRefresh","onRefresh","style","className","children"]),_t=(0,m.useRef)(null);if((0,m.useImperativeHandle)(_e,function(){return{updateLeft:function(Ct){Se(_t.current,{left:Ct+"px"})}}}),g===y.Loading)return m.createElement(d,(0,b.pi)({},St,{style:(0,b.pi)((0,b.pi)({},St==null?void 0:St.style),O)}));if(g===y.LoadFailed)return m.createElement("div",{className:"".concat(ve,"-load-failed"),style:O},Ye);var br=g===y.Verify||g===y.Error||g===y.Success;return m.createElement("div",(0,b.pi)({className:I()(s,(t={},t["".concat(s,"-stop")]=br,t),ir),style:(0,b.pi)((0,b.pi)({},kt),O)},sr),m.createElement("img",(0,b.pi)({src:Ze,alt:""},mt,{className:I()("".concat(s,"-bg"),mt==null?void 0:mt.className),style:(0,b.pi)((0,b.pi)({},mt==null?void 0:mt.style),O)})),m.createElement("img",(0,b.pi)({src:at,alt:""},zt,{className:I()("".concat(s,"-puzzle"),zt==null?void 0:zt.className),style:(0,b.pi)((0,b.pi)({},zt==null?void 0:zt.style),K),ref:_t})),qe&&g!==y.Success&&ie&&m.createElement("div",{className:I()("".concat(s,"-refresh"),(i={},i["".concat(s,"-refresh-disabled")]=g===y.Verify||Tt,i)),onClick:function(){g!==y.Verify&&!Tt&&(Pt==null||Pt())}},ie),lr)},V=Ve?{move:"pointermove",end:"pointerup",cancel:"pointercancel"}:T?{move:"touchmove",end:"touchend",cancel:"touchcancel"}:{move:"mousemove",end:"mouseup",cancel:"touchcancel"},me=Ve?"onPointerDown":T?"onTouchStart":"onMouseDown",R;(function(e){e.Puzzle="puzzle",e.Button="button"})(R||(R={}));var ue=function(e){var t,i,g,x=e.mode,O=x===void 0?"embed":x,le=e.limitErrorCount,K=le===void 0?0:le,Ze=e.tipText,at=e.tipIcon,mt=e.refreshIcon,zt=e.bgSize,_e=e.puzzleSize,St=e.request,ht=e.autoRequest,Ye=ht===void 0?!0:ht,It=e.onVerify,qe=e.autoRefreshOnError,At=qe===void 0?!0:qe,ie=e.actionRef,Tt=e.showRefreshIcon,Pt=Tt===void 0?!0:Tt,kt=e.jigsawContent,ir=e.errorHoldDuration,lr=ir===void 0?500:ir,sr=e.showJigsawOnActive,_t=sr===void 0?!1:sr,br=e.loadingDelay,Ct=br===void 0?0:br,Vt=e.placement,Ot=Vt===void 0?"top":Vt,Tr=e.loadingBoxProps,qr=e.sliderButtonProps,Ft=e.precision,Qt=Ft===void 0?7:Ft,mn=e.className,pn=e.style,Rt=e.styles,Zr=N(),qt=Zr[0],yr=Zr[1],cr=N(function(){return!Jr&&St&&Ye?y.Loading:y.Default}),Vr=cr[0],Er=cr[1],jt=Z(Vr),ur=(0,m.useRef)(null),jr=(0,m.useRef)(null),Br=(0,m.useRef)(null),en=mt!==void 0?mt:at==null?void 0:at.refresh,Yt=(0,b.pi)((0,b.pi)({},p.bgSize),zt),Wt=(0,b.pi)((0,b.pi)({},p.puzzleSize),_e),tn=Ot==="bottom"?"top":"bottom",_=(0,m.useRef)({isPressed:!1,trail:[],errorCount:0,startInfo:{x:0,y:0,timestamp:0},currentTargetType:R.Button,isMouseEntered:!1,floatTransitionTimer:null,floatDelayShowTimer:null,floatDelayHideTimer:null,refreshTimer:null,loadingTimer:null,sliderButtonWidth:40,indicatorBorderWidth:2,ratio:1,buttonMaxDistance:0,puzzleMaxDistance:0}),Jr=O==="slider",Wr=typeof Ct=="number"&&Ct>0,kr=Vr===y.Error&&K>0&&_.current.errorCount>=K,vn=function(){_.current.buttonMaxDistance=Yt.width-_.current.sliderButtonWidth-_.current.indicatorBorderWidth,_.current.puzzleMaxDistance=Yt.width-Wt.width-Wt.left},rn=function(){var Ae;return((Ae=ur.current)===null||Ae===void 0?void 0:Ae.getRect(!0).height)||42},nn=function(){return(0,b.mG)(void 0,void 0,void 0,function(){var Ae;return(0,b.Jh)(this,function(st){switch(st.label){case 0:if(Jr)return[2];if(!St)return[3,4];Wr?_.current.loadingTimer=setTimeout(function(){Er(y.Loading)},Ct):Er(y.Loading),st.label=1;case 1:return st.trys.push([1,3,,4]),[4,St()];case 2:return Ae=st.sent(),Wr&&clearTimeout(_.current.loadingTimer),yr(Ae),Er(y.Default),[3,4];case 3:return st.sent(),Wr&&clearTimeout(_.current.loadingTimer),yr(void 0),Er(y.LoadFailed),[3,4];case 4:return[2]}})})},on=function(Ae){Ae===void 0&&(Ae=300),!(O!=="float"||jt.current===y.Success)&&(clearTimeout(_.current.floatTransitionTimer),clearTimeout(_.current.floatDelayHideTimer),clearTimeout(_.current.floatDelayShowTimer),_.current.floatDelayShowTimer=setTimeout(function(){var st;Se(Br.current,{display:"block"}),G(Br.current);var dr=rn()+"px";Se(Br.current,(st={},st[tn]=dr,st.opacity="1",st))},Ae))},sn=function(Ae){Ae===void 0&&(Ae=300),O==="float"&&(clearTimeout(_.current.floatTransitionTimer),clearTimeout(_.current.floatDelayHideTimer),clearTimeout(_.current.floatDelayShowTimer),_.current.floatDelayHideTimer=setTimeout(function(){var st,dr=rn()/2+"px";Se(Br.current,(st={},st[tn]=dr,st.opacity="0",st)),_.current.floatTransitionTimer=setTimeout(function(){Se(Br.current,{display:"none"})},300)},Ae))},En=function(Ae){var st;Jr||(st=jr.current)===null||st===void 0||st.updateLeft(Ae)},xn=function(){var Ae;_.current.isPressed=!1,Er(y.Default),(Ae=ur.current)===null||Ae===void 0||Ae.updateLeft(0),En(Wt.left)},cn=function(Ae){Ae===void 0&&(Ae=!1),Ae&&(_.current.errorCount=0),clearTimeout(_.current.refreshTimer),jt.current!==y.Loading&&(xn(),nn())},Tn=function(){(kr||Vr===y.LoadFailed)&&cn(kr)},An=function(){T||(_.current.isMouseEntered=!0,on())},Fn=function(){_.current.isMouseEntered=!1,!(T||_t&&_.current.isPressed)&&sn()},jn=function(Ae){_.current.currentTargetType=R.Puzzle,Cn(Ae)},Dn=function(Ae){_.current.currentTargetType=R.Button,Cn(Ae)},Cn=function(Ae){if(jt.current===y.Default){Ae.preventDefault();var st=he(Ae),dr=st.clientX,Hr=st.clientY;_.current.startInfo={x:dr,y:Hr,timestamp:new Date().getTime()},_.current.trail=[[dr,Hr]],ur.current&&(_.current.sliderButtonWidth=ur.current.getSliderButtonWidth(!0),_.current.indicatorBorderWidth=ur.current.getIndicatorBorderWidth(!0)),vn(),_.current.ratio=_.current.puzzleMaxDistance/_.current.buttonMaxDistance,_.current.currentTargetType===R.Puzzle&&(_.current.ratio=1/_.current.ratio),(T||Ae.pointerType==="pen"||Ae.pointerType==="touch")&&on(0),_.current.isPressed=!0,document.addEventListener(V.move,wn),document.addEventListener(V.end,un),document.addEventListener(V.cancel,un)}},wn=function(Ae){var st;if(_.current.isPressed){Ae.preventDefault();var dr=he(Ae),Hr=dr.clientX,hn=dr.clientY,er=Hr-_.current.startInfo.x;_.current.trail.push([Hr,hn]),jt.current!==y.Moving&&er>0&&Er(y.Moving);var tr=er,Ur=er;_.current.currentTargetType===R.Puzzle?(er=Math.max(0,Math.min(er,_.current.puzzleMaxDistance)),tr=er+Wt.left,Ur=er*_.current.ratio):(er=Math.max(0,Math.min(er,_.current.buttonMaxDistance)),Ur=er,tr=er*_.current.ratio+Wt.left),(st=ur.current)===null||st===void 0||st.updateLeft(Ur),En(tr)}},un=function(Ae){if(document.removeEventListener(V.move,wn),document.removeEventListener(V.end,un),document.removeEventListener(V.cancel,un),!!_.current.isPressed){if(jt.current!==y.Moving||typeof It!="function"){_.current.isPressed=!1,(T||Ae.pointerType==="pen"||Ae.pointerType==="touch"||_t&&!_.current.isMouseEntered)&&sn(),xn();return}_.current.isPressed=!1,Er(y.Verify);var st=new Date().getTime(),dr=he(Ae),Hr=dr.clientX,hn=dr.clientY,er=hn-_.current.startInfo.y,tr=Hr-_.current.startInfo.x,Ur=tr;_.current.currentTargetType===R.Puzzle?(tr=Math.max(0,Math.min(tr,_.current.puzzleMaxDistance)),Ur=tr*_.current.ratio):(tr=Math.max(0,Math.min(tr,_.current.buttonMaxDistance)),Ur=tr,tr*=_.current.ratio),It({x:u(tr,Qt),y:u(er,Qt),sliderOffsetX:u(Ur,Qt),duration:st-_.current.startInfo.timestamp,trail:_.current.trail,targetType:_.current.currentTargetType,errorCount:_.current.errorCount}).then(function(){_.current.errorCount=0,Er(y.Success),sn()}).catch(function(){_.current.errorCount+=1,Er(y.Error),(T||Ae.pointerType==="pen"||Ae.pointerType==="touch"||_t&&!_.current.isMouseEntered)&&sn(),(K<=0||_.current.errorCount0?(x.forEach(function(O){O.wrap.apply(O.context,i)}),!0):!1},e}(),q={},$=function(){function e(t){t===void 0&&(t="default"),this.scope=t,q[this.scope]||(q[this.scope]={}),this.data=q[this.scope]}return e.prototype.getItem=function(t){return t in this.data?this.data[t]:null},e.prototype.setItem=function(t,i){this.data[t]=i},e.prototype.removeItem=function(t){delete this.data[t]},e.prototype.clear=function(){q[this.scope]={},this.data=q[this.scope]},e}();function Oe(){return Math.random().toString(16).substring(2,8)}function ge(e){try{var t=typeof e=="object"&&e!==null&&!!e.setItem&&!!e.getItem&&!!e.removeItem;if(t){var i=Oe()+new Date().getTime(),g="1";if(e.setItem(i,g),e.getItem(i)!==g)return!1;e.removeItem(i)}return t}catch(x){return console.error("[cache2] ".concat(e," is not supported. The default memory cache will be used.")),!1}}function W(e,t){try{return JSON.parse(e,t)}catch(i){return e}}function xe(e,t){return JSON.stringify(e,t)}var Be=function(){function e(t,i){i===void 0&&(i={});var g=t?ge(t):!1;this.options=(0,b.pi)({needParsed:g,prefix:""},i),this.storage=g?t:new $(this.options.memoryScope)}return e.prototype.getKey=function(t){return this.options.prefix+t},e.prototype.get=function(t){var i=this.storage.getItem(this.getKey(t));return this.options.needParsed?W(i,this.options.reviver):i},e.prototype.set=function(t,i){this.storage.setItem(this.getKey(t),this.options.needParsed?xe(i,this.options.replacer):i)},e.prototype.del=function(t){this.storage.removeItem(this.getKey(t))},e.prototype.clear=function(){typeof this.storage.clear=="function"&&this.storage.clear()},e}(),Fe="cache2_",Ue="default",je=function(e){(0,b.ZT)(t,e);function t(i,g){var x=e.call(this)||this,O=Ue,le;return typeof i=="string"?O=i||Ue:typeof i=="object"&&(le=i),!le&&typeof g=="object"&&(le=g),x.options=(0,b.pi)({max:-1,stdTTL:0,maxStrategy:"limited",checkperiod:0,prefix:Fe},le),x.storage=new Be(x.options.storage,(0,b.pi)({memoryScope:O},x.options)),x.cacheKey=O,x.startCheckperiod(),x}return t.prototype._check=function(i,g){var x=!0;return g.t!==0&&g.t0?x+O:0;return{v:i,t:le,n:x}},t.prototype._isLimited=function(i){return this.options.max>-1&&i>=this.options.max},t.prototype._getReplaceKey=function(i,g){var x=i[0];return i.forEach(function(O){(g[O].t0&&this.setCacheValues(x),O},t.prototype.clear=function(){this.storage.del(this.cacheKey)},t.prototype.keys=function(){var i=this,g=this.cacheValues,x=Object.keys(g);return x.filter(function(O){return i._check(O,g[O])})},t.prototype.has=function(i){var g=this.cacheValues[i];return!!(g&&this._check(i,g))},t.prototype.take=function(i){var g,x=this.cacheValues[i];return x&&this._check(i,x)&&(g=x.v,this.del(i)),g},t.prototype.ttl=function(i,g){var x=this.cacheValues,O=x[i];return O&&this._check(i,O)?(x[i]=this._wrap(O.v,g),!0):!1},t.prototype.getTtl=function(i){var g=this.cacheValues,x=g[i];if(x&&this._check(i,x))return g[i].t},t.prototype.getLastModified=function(i){var g=this.cacheValues,x=g[i];if(x&&this._check(i,x))return g[i].n},t.prototype.startCheckperiod=function(){var i=this;this.keys(),this.options.checkperiod>0&&(clearTimeout(this._checkTimeout),this._checkTimeout=setTimeout(function(){i.startCheckperiod()},this.options.checkperiod))},t.prototype.stopCheckperiod=function(){clearTimeout(this._checkTimeout)},t}(oe),we=void 0,We="undefined",Ne="object",Ge=Object.prototype,rt=Ge.toString,gt=Ge.hasOwnProperty,Ht=Ge.propertyIsEnumerable,Ke=Object.getOwnPropertySymbols,ct=Object.getPrototypeOf,Zt=Object.keys,fr=Function.prototype,xr=fr.toString,mr=typeof Symbol!==We,pr=mr?Symbol.prototype:we,Cr=Array.prototype,wr=Cr.slice,Mt=Math.min,Et=Math.max,zr=Math.random,Jt=Math.floor,Xt=Math.ceil,Ar=Math.abs,Gr=Number.isFinite,D=Number.isInteger,B=Number.isSafeInteger,H=typeof globalThis===Ne&&globalThis,wt=typeof n.g===Ne&&n.g,lt=typeof self===Ne&&self,He=Number.MAX_SAFE_INTEGER||9007199254740991,Je=Number.MIN_SAFE_INTEGER||-9007199254740991,Re=4294967295,U="[object ",Xe=U+"BigInt]",Ut=U+"Number]",ke=U+"Boolean]",Qe=U+"String]",de=U+"Date]",Me=U+"RegExp]",r=U+"Symbol]",E=U+"Error]",S=U+"ArrayBuffer]",w=U+"Arguments]",A=U+"Array]",Y=["Function","AsyncFunction","GeneratorFunction","Proxy"].map(function(e){return U+e+"]"}),pe=U+"WeakSet]",Le=U+"Blob]",Ce=U+"File]",se=U+"DOMException]",be=U+"Object]",ye=U+"DataView]",ze=U+"Map]",et=U+"Promise]",ut=U+"Set]",dt=U+"WeakMap]",pt=U+"Window]";function tt(e){return rt.call(e)}function Te(e){return typeof e=="string"||tt(e)===Qe}var bt=function(){function e(t,i){i===void 0&&(i="uh_async_memo"),this.promiseCache={},this.cache=new je(i,t)}return e.prototype.run=function(t,i,g){var x=this;if(!i||!Te(i))return t();var O=(0,b.pi)({persisted:!0},g);if(O.persisted){var le=this.cache.get(i);if(le)return Promise.resolve(le)}return this.promiseCache[i]||(this.promiseCache[i]=t().then(function(K){return delete x.promiseCache[i],x.cache.set(i,K,O.ttl),K}).catch(function(K){return delete x.promiseCache[i],Promise.reject(K)})),this.promiseCache[i]},e}(),vt=typeof Blob!==We;function nt(e){return vt&&e instanceof Blob?!0:tt(e)===Le}function yt(e){return function(){return e}}function Lt(){}var Dt=typeof URL!="undefined",Sr=void 0,Gt=Object.keys,vr=Object.values,rr=Dt?URL.createObjectURL:yt(""),Ir=Dt?URL.revokeObjectURL:Lt;function Bt(e,t){var i=t||{},g=i.method,x=g===void 0?"get":g,O=i.data,le=O===void 0?null:O,K=i.timeout,Ze=i.headers,at=i.withCredentials,mt=at===void 0?!1:at,zt=i.async,_e=zt===void 0?!0:zt,St=i.user,ht=St===void 0?null:St,Ye=i.password,It=Ye===void 0?null:Ye,qe=i.responseType,At=i.onReadyStateChange,ie=i.onLoadStart,Tt=i.onProgress,Pt=i.onAbort,kt=i.onTimeout,ir=i.onError,lr=i.onLoad,sr=i.onLoadEnd;return new Promise(function(_t,br){var Ct=new XMLHttpRequest;Ct.open(x.toLowerCase(),e,_e,ht,It),At&&(Ct.onreadystatechange=At),typeof K=="number"&&K>0&&(Ct.timeout=K),Ct.withCredentials=mt,qe&&(Ct.responseType=qe),typeof Ze=="object"&&Gt(Ze).map(function(Ft){Ct.setRequestHeader(Ft,Ze[Ft])});var Vt=function(Ft){return function(Qt){_t(Qt),Ft==null||Ft.call(Ct,Qt)}},Ot=function(Ft){return function(Qt){br(Qt),Ft==null||Ft.call(Ct,Qt)}},Tr={loadstart:ie,progress:Tt,abort:Ot(Pt),timeout:Ot(kt),error:Ot(ir),load:Vt(lr),loadend:sr},qr=Gt(Tr);qr.forEach(function(Ft){var Qt=Tr[Ft];Qt&&Ct.addEventListener(Ft,Qt)}),Ct.send(le)})}var nr=[200,304];function or(e,t){return new Promise(function(i,g){nt(e)?i(e):Bt(e,(0,b.pi)({responseType:"blob"},t)).then(function(x){var O=x.target.status;if(nr.indexOf(O)!==-1)i(x.target.response);else{var le=new Error("The file does not support get requests, responseStatus ".concat(O,", '").concat(e,"'."));console.error(le),g(le)}}).catch(function(x){console.error(new Error("Failed to request file. ".concat(x))),g(x)})})}function Dr(e){return new Promise(function(t,i){var g=nt(e),x=g?rr(e):e,O=new Image;g||(O.crossOrigin="anonymous"),O.onload=function(){t(O)},O.onerror=function(le){g&&Ir(x),console.error("[loadImage] The image load failed, '".concat(e,"'.")),i(le)},O.src=x})}function ar(e,t){return or(e,t).then(function(i){return Dr(i).then(function(g){return{blob:i,image:g}})})}function Pr(e){return e!==null&&typeof e=="object"}function Fr(e){return typeof e=="function"||Pr(e)}function Kr(e){return typeof e=="symbol"||tt(e)===r}var Xr=/^0b[01]+$/i,Kt=/^0o[0-7]+$/i,ft=/^[-+]0x[0-9a-f]+$/i;function Nt(e){if(typeof e=="number")return e;if(Kr(e))return NaN;if(Fr(e)&&(e=Number(e)),typeof e!="string")return e===0?e:+e;e=e.trim();var t=Xr.test(e);return t||Kt.test(e)?parseInt(e.slice(2),t?2:8):ft.test(e)?NaN:+e}var $t=17976931348623157e292;function hr(e){if(!e)return e===0?e:0;if(e=Nt(e),e===1/0||e===-1/0){var t=e<0?-1:1;return t*$t}return e===e?e:0}function gr(e,t){e===void 0&&(e=0),t===void 0&&(t=1),e=hr(e),t=hr(t);var i=Xt(Mt(e,t)||0),g=Jt(Et(e,t)||0);if(i>g){var x=i;i=g,g=x}return Jt(i+zr()*(g-i+1))}var xt=Math.PI,$e;(function(e){e[e.None=0]="None",e[e.Outer=1]="Outer",e[e.Inner=2]="Inner"})($e||($e={}));var Or=[$e.None,$e.Outer,$e.Inner];function ot(e){var t=e.length,i=gr(0,t-1);return e[i]}function Nr(e){var t={top:ot(Or),right:ot(Or),bottom:ot(Or),left:ot(Or)},i=Object.keys(t),g=["top","bottom"],x=["left","right"];if(t.top===$e.Outer&&t.bottom===$e.Outer?t[ot(g)]=$e.Inner:t.top!==$e.Outer&&t.bottom!==$e.Outer&&(t[ot(g)]=$e.Outer),t.left===$e.Outer&&t.right===$e.Outer?t[ot(x)]=$e.Inner:t.left!==$e.Outer&&t.right!==$e.Outer&&(t[ot(x)]=$e.Outer),e){var O=[],le=[];i.forEach(function(K){t[K]===$e.Inner?O.push(K):t[K]===$e.None&&le.push(K)}),e===2?O.forEach(function(K){return t[K]=$e.None}):e===3?O.length===0?t[ot(le)]=$e.Inner:O.length===2&&(t[ot(O)]=$e.None):e==4&&le.forEach(function(K){return t[K]=$e.Inner})}return t}function an(e,t){t===void 0&&(t={});var i=t.x,g=i===void 0?0:i,x=t.y,O=x===void 0?0:x,le=t.w,K=le===void 0?60:le,Ze=t.h,at=Ze===void 0?60:Ze,mt=t.needClosePath,zt=mt===void 0?!0:mt,_e=t.points,St=t.margin,ht=St===void 0?0:St;ht=ht<=0?0:ht,(typeof _e=="number"||!_e)&&(_e=Nr(_e));var Ye=(Math.min(K,at)-ht*2)*.15,It=Math.hypot(Ye,Ye),qe=It/2,At=Ye+qe,ie={x:g+ht,y:O+ht,w:K-At-ht*2,h:at-At-ht*2},Tt=ie.w/2,Pt=ie.h/2;_e.left===$e.Outer&&(ie.x+=At),_e.top===$e.Outer&&(ie.y+=At),e.beginPath(),e.lineWidth=2,e.moveTo(ie.x,ie.y),_e.top!==$e.None&&(e.lineTo(ie.x+Tt-qe,ie.y),_e.top===$e.Inner?e.arc(ie.x+Tt,ie.y+qe,Ye,1.25*xt,1.75*xt,!0):e.arc(ie.x+Tt,ie.y-qe,Ye,.75*xt,.25*xt)),e.lineTo(ie.x+ie.w,ie.y),_e.right!==$e.None&&(e.lineTo(ie.x+ie.w,ie.y+Pt-qe),_e.right===$e.Inner?e.arc(ie.x+ie.w-qe,ie.y+Pt,Ye,1.75*xt,.25*xt,!0):e.arc(ie.x+ie.w+qe,ie.y+Pt,Ye,1.25*xt,.75*xt)),e.lineTo(ie.x+ie.w,ie.y+ie.h),_e.bottom!==$e.None&&(e.lineTo(ie.x+Tt+qe,ie.y+ie.h),_e.bottom===$e.Inner?e.arc(ie.x+Tt,ie.y+ie.h-qe,Ye,.25*xt,.75*xt,!0):e.arc(ie.x+Tt,ie.y+ie.h+qe,Ye,1.75*xt,1.25*xt)),e.lineTo(ie.x,ie.y+ie.h),_e.left!==$e.None&&(e.lineTo(ie.x,ie.y+Pt+qe),_e.left===$e.Inner?e.arc(ie.x+qe,ie.y+Pt,Ye,.75*xt,1.25*xt,!0):e.arc(ie.x-qe,ie.y+Pt,Ye,.25*xt,1.75*xt)),e.lineTo(ie.x,ie.y),e.stroke(),zt&&e.closePath()}function Rr(e,t,i,g){return new Promise(function(x){t?e.toBlob(function(O){x(O?URL.createObjectURL(O):e.toDataURL(i,g))},i,g):x(e.toDataURL(i,g))})}var Mr=new bt({max:5,maxStrategy:"replaced"});Mr.cache.on("del",function(e,t){try{t.image.src&&URL.revokeObjectURL(t.image.src)}catch(i){}});function dn(e){e?Mr.cache.del(e):Mr.cache.clear()}var Lr=new WeakMap,ln=function(e){if(!Fr(e))return String(e);if(!Lr.get(e)){var t="_"+Date.now();Lr.set(e,t)}return Lr.get(e)},Qr={jpeg:"image/jpeg",png:"image/png"},$r=[];function _r(e){e.forEach(function(t){URL.revokeObjectURL(t)})}function Yr(e,t){t===void 0&&(t={});var i=t.borderWidth,g=i===void 0?2:i,x=t.borderColor,O=x===void 0?"rgba(255,255,255,0.7)":x,le=t.fillColor,K=le===void 0?"rgba(255,255,255,0.7)":le,Ze=t.points,at=t.width,mt=at===void 0?60:at,zt=t.height,_e=zt===void 0?60:zt,St=t.x,ht=t.y,Ye=t.margin,It=Ye===void 0?2:Ye,qe=t.equalHeight,At=qe===void 0?!0:qe,ie=t.imageWidth,Tt=t.imageHeight,Pt=t.bgWidth,kt=t.bgHeight,ir=t.bgOffset,lr=ir===void 0?[0,0]:ir,sr=t.bgImageType,_t=sr===void 0?Qr.jpeg:sr,br=t.quality,Ct=br===void 0?.8:br,Vt=t.format,Ot=Vt===void 0?"dataURL":Vt,Tr=t.cacheImage,qr=Tr===void 0?!0:Tr,Ft=t.autoRevokePreviousBlobUrl,Qt=Ft===void 0?!0:Ft,mn=t.ajaxOptions;return new Promise(function(pn,Rt){var Zr=document.createElement("canvas"),qt=document.createElement("canvas"),yr=Zr.getContext("2d"),cr=qt.getContext("2d"),Vr=qr?ln(e):void 0;Mr.run(function(){return ar(e,mn)},Vr).then(function(Er){var jt=Er.image;ie&&(jt.width=ie),Tt&&(jt.height=Tt);var ur=typeof Pt=="number"&&Pt>0?Pt>mt?Pt:mt:jt.width,jr=typeof kt=="number"&&kt>0?kt>_e?kt:_e:jt.height;Zr.width=ur,Zr.height=jr;var Br=ur-mt,en=jr-_e,Yt=typeof St=="undefined"?gr(mt,Br):St||0,Wt=typeof ht=="undefined"?gr(0,en):ht||0;Yt<0?Yt=0:Yt>Br&&(Yt=Br),Wt<0?Wt=0:Wt>en&&(Wt=en);var tn=typeof Ze=="number"||!Ze?Nr(Ze):Ze,_=typeof lr=="function"?lr(jt.width,jt.height):lr;yr.strokeStyle=O,yr.lineWidth=g,yr.fillStyle=K,an(yr,{x:Yt,y:Wt,w:mt,h:_e,points:tn,margin:It}),yr.fillStyle=K,yr.fill(),yr.globalCompositeOperation="destination-over",yr.drawImage(jt,_[0],_[1],jt.width,jt.height),qt.width=ur,qt.height=jr,cr.strokeStyle=O,cr.lineWidth=g,an(cr,{x:Yt,y:Wt,w:mt,h:_e,points:tn,margin:It}),cr.globalCompositeOperation="destination-over",cr.clip(),cr.drawImage(jt,_[0],_[1],jt.width,jt.height);var Jr=cr.getImageData(Yt,Wt,mt,_e);cr.clearRect(0,0,ur,jr),qt.width=mt,qt.height=At?jr:_e,cr.putImageData(Jr,0,At?Wt:0);var Wr=Ot==="blob",kr=Rr(qt,Wr,Qr.png,Ct),vn=Rr(Zr,Wr,_t,Ct);Promise.all([kr,vn]).then(function(rn){var nn=rn[0],on=rn[1];Qt&&($r.length&&(_r($r),$r.length=0),Wr&&$r.push(on,nn)),pn({puzzleUrl:nn,bgUrl:on,x:Yt,y:At?0:Wt})}).catch(Rt)}).catch(Rt)})}var Sn=n(43418),In=n(3113),Pn=Object.defineProperty,gn=Object.getOwnPropertySymbols,On=Object.prototype.hasOwnProperty,Rn=Object.prototype.propertyIsEnumerable,bn=(e,t,i)=>t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,yn=(e,t)=>{for(var i in t||(t={}))On.call(t,i)&&bn(e,i,t[i]);if(gn)for(var i of gn(t))Rn.call(t,i)&&bn(e,i,t[i]);return e},fn=(e,t,i)=>new Promise((g,x)=>{var O=Ze=>{try{K(i.next(Ze))}catch(at){x(at)}},le=Ze=>{try{K(i.throw(Ze))}catch(at){x(at)}},K=Ze=>Ze.done?g(Ze.value):Promise.resolve(Ze.value).then(O,le);K((i=i.apply(e,t)).next())});const Bn=({ModalProps:e,onFinish:t})=>{const[i,g]=(0,m.useState)(),x=(0,m.useRef)(),O=()=>fn(void 0,null,function*(){const K=`/images/VerifCodeBg/img${Math.floor(Math.random()*23)+1}.jpg`,Ze=yield Yr(K,{imageHeight:180,imageWidth:360});return g(Ze),Ze}),le=K=>fn(void 0,null,function*(){return K!=null&&K.x&&K.x>i.x-5&&K.x{var K;e!=null&&e.open&&x.current&&((K=x.current)==null||K.refresh())},[e==null?void 0:e.open,x]),m.createElement(Sn.default,yn({},yn({title:"\u8BF7\u5B8C\u6210\u4E0B\u5217\u9A8C\u8BC1\u540E\u7EE7\u7EED",width:410,footer:null,centered:!0},e)),m.createElement(ue,{actionRef:x,request:O,onVerify:K=>fn(void 0,null,function*(){return le(K)}),bgSize:{width:360,height:180}}),m.createElement("div",{className:"flex mt10"},m.createElement(In.ZP,{style:{paddingLeft:"0px",paddingRight:"0px"},type:"link",icon:m.createElement("i",{className:"iconfont icon-shuaxin3"}),onClick:()=>{var K;(K=x.current)==null||K.refresh()}},"\u5237\u65B0")))};var zn=m.memo(Bn)},16543:function(it,fe,n){n.d(fe,{Ol:function(){return z},c0:function(){return h},o1:function(){return I},z2:function(){return m}});var b=n(22972);function z(a){return(0,b.U2)("accounts/valid_email_and_phone.json",a)}function I(a){return(0,b.U2)("accounts/get_verification_code.json",a)}function m(a){return(0,b.v_)("accounts/register.json",a)}function v(a){return post("weapps/register.json",a)}function h(a){return(0,b.v_)("accounts/reset_password.json",a)}},51910:function(it,fe,n){n.r(fe),n.d(fe,{default:function(){return Gr}});var b=n(63823),z=n(78241),I=n(8591),m=n(92832),v=n(24905),h=n(3113),a=n(59301),N=n(59898),F=n(28209),Z=n.n(F),ee=n(99267),Ee=n(10102),X=n(35783),ae={formWrapper:"formWrapper___fjdm5",errorRes:"errorRes___C0lcE",registerNav:"registerNav___NgUG4",navActive:"navActive___ir4p0",linkBtn:"linkBtn___zgrJY",unit:"unit___xpJyA"},ve=n(40001),he=n(49198),Se=n(68911),De=Object.defineProperty,Ve=Object.defineProperties,T=Object.getOwnPropertyDescriptors,G=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable,P=(D,B,H)=>B in D?De(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,j=(D,B)=>{for(var H in B||(B={}))u.call(B,H)&&P(D,H,B[H]);if(G)for(var H of G(B))c.call(B,H)&&P(D,H,B[H]);return D},te=(D,B)=>Ve(D,T(B)),re=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const J={moveX:0,verify:0};var ne=(D=>(D[D.SET_MOVEX=0]="SET_MOVEX",D[D.VERIFY=1]="VERIFY",D))(ne||{});function Ie(D,B){switch(B.type){case 0:return te(j({},D),{moveX:B.payload});case 1:return j(j({},D),B.payload);default:throw new Error}}var L=({value:D,onChange:B,onValidate:H})=>{const[wt,lt]=(0,a.useReducer)(Ie,J),{moveX:He,verify:Je}=wt,Re=(0,a.useRef)(),U=(0,a.useRef)(),Xe=(0,a.useRef)(),Ut=(0,a.useRef)(),ke=(0,a.useMemo)(()=>{if(U.current)return U.current.getBoundingClientRect()},[U.current]);(0,a.useEffect)(()=>{if(ke){let A=function(Y){return re(this,null,function*(){if(Ut.current){let pe=Y.pageX-E;w&&(pe=Y.changedTouches[0].pageX-E),pe<0&&(pe=0),pe>=S?(Ut.current=!1,pe=S,Me=yield H(),lt({type:1,payload:{moveX:pe,verify:Me}}),B(Me)):lt({type:0,payload:pe})}})},de=function(){Ut.current=!1,Me===0&&(Re.current.style.transition="left .5s ease",Xe.current.style.transition="width .5s ease",lt({type:1,payload:{moveX:0}}))},Me=0;const{width:r,left:E}=ke;let S=r-48;const w=!(0,Se.b9)();return w?(window.addEventListener("touchmove",A),window.addEventListener("touchend",de)):(window.addEventListener("mousemove",A),window.addEventListener("mouseup",de)),()=>{w?(window.removeEventListener("touchmove",A),window.removeEventListener("touchend",de)):(window.removeEventListener("mousemove",A),window.removeEventListener("mouseup",de))}}},[ke,Se.b9]),(0,a.useEffect)(()=>{lt({type:1,payload:{verify:D,moveX:D?(ke==null?void 0:ke.width)-48:0}})},[D]);function Qe(){Je||(Ut.current=!0,Re.current.style.transition="",Xe.current.style.transition="")}return a.createElement("div",{ref:U,className:"unlock-wrapper"},a.createElement("div",{ref:Xe,className:Je===1?"unlock-error-bg":"unlock-bg",style:{width:He}}),a.createElement("div",{className:"unlock-text",style:{color:Je?"#fff":"#7E86A1"}},Je?Je===1?"\u9A8C\u8BC1\u5931\u8D25":"\u9A8C\u8BC1\u901A\u8FC7":"\u62D6\u52A8\u6ED1\u5757\u81F3\u53F3\u4FA7\u9A8C\u8BC1"),a.createElement("div",{ref:Re,onTouchStart:Qe,onMouseDown:Qe,style:{left:He},className:"unlock-handler"},Je?Je===1?a.createElement(ee.Z,null):a.createElement(ve.Z,null):a.createElement(he.Z,null)))},Pe=Object.defineProperty,ce=Object.defineProperties,k=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertySymbols,M=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,o=(D,B,H)=>B in D?Pe(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,l=(D,B)=>{for(var H in B||(B={}))M.call(B,H)&&o(D,H,B[H]);if(y)for(var H of y(B))Q.call(B,H)&&o(D,H,B[H]);return D},f=(D,B)=>ce(D,k(B)),d=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const s={height:48,borderRadius:0,background:"#D7E6F4"},p=/(\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b)|(^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$)/i,C={timer:0};var V=(D=>(D[D.setTimer=0]="setTimer",D))(V||{});function me(D,B){switch(B.type){case 0:return f(l({},D),{timer:B.payload});default:throw new Error}}const R=({validateName:D,getCode:B,register:H,style:wt={},buttonText:lt="\u6CE8\u518C",globalSetting:He})=>{var Je,Re,U,Xe,Ut;const[ke]=z.default.useForm(),[Qe,de]=(0,a.useReducer)(me,C),[Me,r]=(0,a.useState)(!1),{timer:E}=Qe,[S,w]=(0,a.useState)(0),A=(0,a.useMemo)(()=>"/rucaptcha?t="+new Date().getTime(),[S]);function Y(ye){return d(this,null,function*(){const{login:ze,password:et,code:ut}=ye,{message:dt,status:pt}=yield H({login:ze,password:et,code:ut});if(pt<0){ke.setFields([{name:"code",errors:[dt]}]);return}if(localStorage.removeItem("extension-modal"),I.ZP.info("\u6CE8\u518C\u6210\u529F"),localStorage.getItem("addinfo")==="2"){localStorage.setItem("addinfo","2");let Te=localStorage.getItem("classromeurl");b.history.replace(Te)}else window.location.href="/account/profile"})}function pe(){return d(this,null,function*(){let ye=ke.getFieldValue("login"),ze=0;if(!p.test(ye)||ye.indexOf(" ")>-1)return ke.setFields([{name:"login",errors:["\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"]}]),ze=1,ze;let{status:et,message:ut}=yield D({login:ye,type:1});return et>0?ze=2:(ke.setFields([{name:"login",errors:[ut]}]),ze=1),ze})}const Le=()=>d(void 0,null,function*(){const ye=ke.getFieldValue("verify"),ze=ke.getFieldValue("login");if(!ye)ke.validateFields(["verify"]);else{r(!0);const{status:et,message:ut}=yield B({login:ze,type:1,smscode:(0,Se.M)(ze)});et<0&&ke.setFields([{name:"code",errors:[ut]}]),de({type:0,payload:60}),r(!1)}});function Ce(ye,ze){return ze?/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[\W_]).{8,16}$/.test(ze)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u51658~16\u4F4D\u5B57\u7B26\uFF0C\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u7279\u6B8A\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"):Promise.resolve()}const se=(ye,ze)=>ze?Promise.resolve():Promise.reject("\u8BF7\u62D6\u52A8\u6ED1\u5757\u9A8C\u8BC1");(0,a.useEffect)(()=>{E>0&&setTimeout(()=>{de({type:0,payload:E-1})},1e3)},[E]),(0,a.useEffect)(()=>{var ye;((ye=He==null?void 0:He.setting)==null?void 0:ye.close_register)===!0&&b.history.replace("/404")},[(Je=He==null?void 0:He.setting)==null?void 0:Je.close_register]);const be=(ye,ze)=>ze?ze.indexOf(" ")>-1?Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):p.test(ze)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):Promise.resolve();return a.createElement(z.default,{layout:"vertical",form:ke,style:wt,initialValues:{autologin:!0,protool:!1},onFinish:Y},a.createElement(z.default.Item,{name:"login",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"},{validator:be}]},a.createElement(m.default,{style:s,autoComplete:"new-login",size:"large",placeholder:"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7",onChange:()=>ke.setFieldsValue({verify:0})})),a.createElement(z.default.Item,{name:"verify",rules:[{validator:se}]},a.createElement(L,{onValidate:pe})),((Re=He==null?void 0:He.setting)==null?void 0:Re.is_local)&&((U=He==null?void 0:He.setting)==null?void 0:U.is_need_code)=="true"&&a.createElement(z.default.Item,{name:"code",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},a.createElement(m.default,{suffix:a.createElement(h.ZP,{loading:Me,type:"link",onClick:Le,disabled:E>0}," ",E===0?"\u83B7\u53D6\u9A8C\u8BC1\u7801":`${E}\u79D2\u53EF\u91CD\u65B0\u83B7\u53D6`),style:{paddingRight:2,height:48},placeholder:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",size:"large"})),((Xe=He==null?void 0:He.setting)==null?void 0:Xe.is_need_code)!=="true"&&a.createElement(z.default.Item,{name:"code",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},a.createElement("div",{style:{display:"flex"}},a.createElement(m.default,{style:s,size:"large",placeholder:"\u9A8C\u8BC1\u7801"}),a.createElement("img",{src:((Ut=X.Z)==null?void 0:Ut.API_SERVER)+A,style:{height:"47px",marginLeft:"10px"},onClick:()=>{w(S+1)}}))),a.createElement(z.default.Item,{name:"password",rules:[{required:!0,message:"\u8BF7\u8F93\u51658~16\u4F4D\u5B57\u7B26\uFF0C\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u7279\u6B8A\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"},{validator:Ce}]},a.createElement(m.default.Password,{autoComplete:"new-password",style:s,size:"large",placeholder:"\u8F93\u51658\uFF5E16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199",visibilityToggle:!1})),a.createElement(z.default.Item,null,a.createElement(h.ZP,{size:"large",type:"primary",htmlType:"submit",block:!0,style:{height:48},className:"font16"}," ",lt," ")))};var ue=(0,b.connect)(({globalSetting:D})=>({globalSetting:D}))(R),oe={wrap:"wrap___hSbXl",formWrapper:"formWrapper___GUTsO",link:"link___CveOg",linkBtn:"linkBtn___gkEPh",errorRes:"errorRes___RXMcY"},q=n(6018),$=n(59301),Oe=Object.defineProperty,ge=Object.defineProperties,W=Object.getOwnPropertyDescriptors,xe=Object.getOwnPropertySymbols,Be=Object.prototype.hasOwnProperty,Fe=Object.prototype.propertyIsEnumerable,Ue=(D,B,H)=>B in D?Oe(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,je=(D,B)=>{for(var H in B||(B={}))Be.call(B,H)&&Ue(D,H,B[H]);if(xe)for(var H of xe(B))Fe.call(B,H)&&Ue(D,H,B[H]);return D},we=(D,B)=>ge(D,W(B)),We=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const Ne={height:48,borderRadius:0,background:"#D7E6F4"},Ge=/(\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b)|(^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$)/i,rt={timer:0};var gt=(D=>(D[D.setTimer=0]="setTimer",D))(gt||{});function Ht(D,B){switch(B.type){case 0:return we(je({},D),{timer:B.payload});default:throw new Error}}var Ke=({validateName:D,getCode:B,callback:H,style:wt={},goBack:lt})=>{const He=(0,b.useLocation)(),[Je]=(0,b.useSearchParams)(),[Re]=z.default.useForm(),[U,Xe]=(0,a.useReducer)(Ht,rt),[Ut,ke]=(0,a.useState)(!1),{timer:Qe}=U,[de,Me]=(0,a.useState)(!1),[r,E]=(0,a.useState)("");function S(Ce){return We(this,null,function*(){const{login:se,new_password:be,code:ye,new_password_confirmation:ze}=Ce,{message:et,status:ut,show:dt,start_date:pt}=yield H({login:se,new_password_confirmation:ze,new_password:be,code:ye});if(ut===0){dt?(localStorage.setItem("extension-modal","exist"),localStorage.setItem("extension-date",pt)):localStorage.removeItem("extension-modal");const tt=Je.get("from");tt&&tt.indexOf("login")<0?b.history.replace(tt):b.history.replace("/")}else E(et)})}function w(){return We(this,null,function*(){let Ce=Re.getFieldValue("login"),se=0;if(!Ge.test(Ce)||Ce.indexOf(" ")>-1)return Re.setFields([{name:"login",errors:["\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"]}]),se=1,se;let{status:be,message:ye}=yield D({login:Ce,type:2});return be>0?se=2:(Re.setFields([{name:"login",errors:[ye]}]),se=1),se})}const A=()=>We(void 0,null,function*(){const Ce=Re.getFieldValue("verify"),se=Re.getFieldValue("login");if(!Ce)Re.validateFields(["verify"]);else{ke(!0);const{status:be,message:ye}=yield B({login:se,type:2,smscode:(0,Se.M)(se)});be<0&&Re.setFields([{name:"code",errors:[ye]}]),Xe({type:0,payload:60}),ke(!1)}});function Y(Ce,se){return se?/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[\W_]).{8,16}$/.test(se)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u51658~16\u4F4D\u5B57\u7B26\uFF0C\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u7279\u6B8A\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"):Promise.resolve()}(0,a.useEffect)(()=>{Qe>0&&setTimeout(()=>{Xe({type:0,payload:Qe-1})},1e3)},[Qe]);const pe=(Ce,se)=>se?Promise.resolve():Promise.reject("\u8BF7\u62D6\u52A8\u6ED1\u5757\u9A8C\u8BC1"),Le=(Ce,se)=>se?se.indexOf(" ")>-1?Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):Ge.test(se)?Promise.resolve():Promise.reject("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"):Promise.resolve();return $.createElement("div",{className:oe.wrap},$.createElement(z.default,{layout:"vertical",form:Re,style:wt,className:oe.formWrapper,initialValues:{autologin:!0,protool:!0},onFinish:S,onValuesChange:()=>E("")},!!r&&$.createElement("div",{className:oe.errorRes},$.createElement("span",null,r),$.createElement(ee.Z,{onClick:()=>E("")})),$.createElement(z.default.Item,{name:"login",required:!1,rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u6216\u90AE\u7BB1"},{validator:Le}]},$.createElement(m.default,{style:Ne,size:"middle",placeholder:"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7",onChange:()=>Re.setFieldsValue({verify:0})})),$.createElement(z.default.Item,{name:"verify",rules:[{validator:pe}]},$.createElement(L,{onValidate:w})),$.createElement("div",{className:"flex"},$.createElement(z.default.Item,{name:"code",required:!1,rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},$.createElement(m.default,{style:{width:"278rem",marginRight:"10rem",paddingRight:"2rem",height:48,borderRadius:0,background:"#D7E6F4"},placeholder:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",size:"middle"})),$.createElement(h.ZP,{loading:Ut,size:"middle",type:"primary",style:{height:48,width:"150rem"},onClick:Ce=>{if(Ce.stopPropagation(),!Re.getFieldValue("verify")){Re.validateFields(["verify"]);return}Me(!0)},disabled:Qe>0}," ",Qe===0?"\u83B7\u53D6\u9A8C\u8BC1\u7801":`${Qe}\u79D2\u53EF\u91CD\u65B0\u83B7\u53D6`)),$.createElement(z.default.Item,{required:!1,name:"new_password",rules:[{required:!0,message:"\u8BF7\u8F93\u51658-16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199\u3001\u4E0D\u80FD\u4F7F\u7528\u7A7A\u683C"},{validator:Y}]},$.createElement(m.default.Password,{style:Ne,size:"middle",placeholder:"\u8F93\u51658\uFF5E16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199",visibilityToggle:!1})),$.createElement(z.default.Item,{name:"new_password_confirmation",rules:[{required:!0,message:"\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801"},({getFieldValue:Ce})=>({validator(se,be){return!be||Ce("new_password")===be?Promise.resolve():Promise.reject("\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4")}})]},$.createElement(m.default.Password,{style:Ne,size:"middle",placeholder:"\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801",visibilityToggle:!1})),$.createElement(z.default.Item,null,$.createElement("div",{className:"flex-container",style:{justifyContent:"space-between"}},$.createElement(z.default.Item,{name:"autologin",noStyle:!0,valuePropName:"checked"},$.createElement(v.default,null,"\u4E0B\u6B21\u81EA\u52A8\u767B\u5F55")),$.createElement("div",{className:oe.linkBtn,onClick:lt},"\u8FD4\u56DE\u767B\u5F55"))),$.createElement(z.default.Item,null,$.createElement(h.ZP,{size:"middle",type:"primary",htmlType:"submit",block:!0,className:"font16",style:{height:48}}," \u5B8C\u6210 "))),$.createElement(q.Z,{ModalProps:{open:de,onCancel:()=>{Me(!1)}},onFinish:()=>{Me(!1),A()}}))},ct=n(16543),Zt=n(29935),fr=Object.defineProperty,xr=Object.defineProperties,mr=Object.getOwnPropertyDescriptors,pr=Object.getOwnPropertySymbols,Cr=Object.prototype.hasOwnProperty,wr=Object.prototype.propertyIsEnumerable,Mt=(D,B,H)=>B in D?fr(D,B,{enumerable:!0,configurable:!0,writable:!0,value:H}):D[B]=H,Et=(D,B)=>{for(var H in B||(B={}))Cr.call(B,H)&&Mt(D,H,B[H]);if(pr)for(var H of pr(B))wr.call(B,H)&&Mt(D,H,B[H]);return D},zr=(D,B)=>xr(D,mr(B)),Jt=(D,B,H)=>new Promise((wt,lt)=>{var He=U=>{try{Re(H.next(U))}catch(Xe){lt(Xe)}},Je=U=>{try{Re(H.throw(U))}catch(Xe){lt(Xe)}},Re=U=>U.done?wt(U.value):Promise.resolve(U.value).then(He,Je);Re((H=H.apply(D,B)).next())});const Xt={height:48,borderRadius:0,background:"#D7E6F4"},Ar=({dispatch:D,globalSetting:B})=>{var H,wt,lt;const[He]=z.default.useForm(),Je=(0,b.useLocation)(),[Re,U]=(0,a.useState)(""),[Xe,Ut]=(0,a.useState)(0),[ke,Qe]=(0,a.useState)("\u767B\u5F55"),de=(0,a.useMemo)(()=>"/rucaptcha?t="+new Date().getTime(),[Xe]);(0,a.useEffect)(()=>{(0,Ee.bg)()&&b.history.push("/")},[(0,Ee.bg)()]);const Me=A=>Jt(void 0,null,function*(){var Y,pe;const Le=Et({},A),Ce=Z().enc.Utf8.parse("5183666c72eec9e4"),se=Z().AES.encrypt(A.password||"",Ce,{iv:Ce,mode:Z().mode.CBC});Le.password=se.toString();const be=yield(0,N.Es)(Le);if(be.status){if(be.status===-4){D({type:"user/showPopLogin",payload:{showPopLogin:!1}}),D({type:"user/setBindAccountModal",payload:{bindAccountModalVisible:!0,userInfoForBindAccountModal:be.user,loginInfo:A}});return}(be==null?void 0:be.status)!==0&&I.ZP.warning(be==null?void 0:be.message),U(be==null?void 0:be.message);return}if(be!=null&&be.show?(localStorage.setItem("extension-modal","exist"),localStorage.setItem("extension-date",be==null?void 0:be.start_date)):localStorage.removeItem("extension-modal"),console.log(b.history,"history"),Je.pathname==="/user/login"||Je.pathname==="/login"){let ye=((Y=Je.query)==null?void 0:Y.from)||((pe=Je.query)==null?void 0:pe.back_url);ye?window.location.href=decodeURIComponent(ye):window.location.href="/"}else window.location.reload();He.resetFields()}),r=()=>{D({type:"user/showPopLogin",payload:{showPopLogin:!1}})},E={getCode:N.o1,register:A=>Jt(void 0,null,function*(){return yield(0,N.z2)(A)}),validateName:N.Ol},S={getCode:N.o1,callback:A=>Jt(void 0,null,function*(){return yield(0,ct.c0)(A)}),validateName:N.Ol},w=(0,a.useMemo)(()=>{var A,Y;return(A=B==null?void 0:B.setting)!=null&&A.login_logo_url?`${X.Z.IMG_SERVER}/${(Y=B==null?void 0:B.setting)==null?void 0:Y.login_logo_url}`:`${X.Z.IMG_SERVER}/images/avatars/LaboratorySetting/1nav?t=${new Date().getTime()}`},[(H=B==null?void 0:B.setting)==null?void 0:H.nav_logo_url]);return a.createElement("div",{className:"flex h-screen w-full item-center justify-end relative",style:{overflow:"hidden",padding:"0 360rem",background:`url(${n(21722)}) 0 center / 100% 100% no-repeat`}},a.createElement("img",{className:"absolute",src:w||Zt,style:{top:"60rem",left:"100rem",height:"60rem"}}),a.createElement("div",{className:"rounded-20px-rem py-40px-rem px-60px-rem flex flex-col item-center gap-30px-rem",style:{border:"2rem solid #fff",backdropFilter:"blur(3rem)",width:"560rem",background:"linear-gradient( 151deg, #EEF6FF 0%, #F2F9FF 25%, #E1EDFE 100%)",boxShadow:"0 0 16rem 2rem rgba(198,221,249,0.6)",paddingBottom:"16rem"}},a.createElement("div",{className:"text-30px-rem font-bold",style:{letterSpacing:"2px"}},(wt=B==null?void 0:B.setting)==null?void 0:wt.name),a.createElement("div",{className:ae.registerNav},ke=="\u627E\u56DE\u5BC6\u7801"?a.createElement("div",{onClick:()=>Qe("\u627E\u56DE\u5BC6\u7801"),className:ke=="\u627E\u56DE\u5BC6\u7801"?`${ae.navActive}`:""},"\u627E\u56DE\u5BC6\u7801"):a.createElement(a.Fragment,null,a.createElement("div",{onClick:()=>Qe("\u767B\u5F55"),className:ke=="\u767B\u5F55"?`${ae.navActive}`:""},"\u767B\u5F55"),a.createElement("div",{onClick:()=>Qe("\u6CE8\u518C"),className:ke=="\u6CE8\u518C"?`${ae.navActive}`:""},"\u6CE8\u518C"))),ke=="\u767B\u5F55"&&a.createElement(z.default,{className:ae.formWrapper,layout:"vertical",form:He,initialValues:{autologin:!0},onFinish:Me,onValuesChange:()=>U("")},!!Re&&a.createElement("div",{className:ae.errorRes},a.createElement("span",null,Re),a.createElement(ee.Z,{onClick:()=>U("")})),a.createElement(z.default.Item,{name:"login",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5B66\u53F7\u3001\u5DE5\u53F7\u3001\u624B\u673A\u53F7\u6216\u90AE\u7BB1"}]},a.createElement(m.default,{style:Xt,size:"large",placeholder:"\u8BF7\u8F93\u5165\u5B66\u53F7\u3001\u5DE5\u53F7\u3001\u624B\u673A\u53F7\u6216\u90AE\u7BB1"})),a.createElement(z.default.Item,{name:"password",rules:[{required:!0,message:"\u8BF7\u8F93\u51658-16\u4F4D\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199\u3001\u4E0D\u80FD\u4F7F\u7528\u7A7A\u683C"}]},a.createElement(m.default.Password,{style:Xt,size:"large",placeholder:"\u5BC6\u7801"})),a.createElement(z.default.Item,{name:"code",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"}]},a.createElement("div",{style:{display:"flex"}},a.createElement(m.default,{style:Xt,size:"large",placeholder:"\u9A8C\u8BC1\u7801"}),a.createElement("img",{src:((lt=X.Z)==null?void 0:lt.API_SERVER)+de,style:{height:"47px",marginLeft:"10px"},onClick:()=>{Ut(Xe+1)}}))),a.createElement(z.default.Item,null,a.createElement("div",{className:"flex-container",style:{justifyContent:"space-between"}},a.createElement(z.default.Item,{name:"autologin",noStyle:!0,valuePropName:"checked"},a.createElement(v.default,null,"\u4E0B\u6B21\u81EA\u52A8\u767B\u5F55")),a.createElement("div",{className:ae.linkBtn,onClick:()=>Qe("\u627E\u56DE\u5BC6\u7801")},"\u627E\u56DE\u5BC6\u7801"))),a.createElement(z.default.Item,null,a.createElement(h.ZP,{size:"large",type:"primary",htmlType:"submit",block:!0,className:"font16",style:{height:"48px"}},"\u767B\u5F55"))),ke=="\u6CE8\u518C"&&a.createElement(ue,Et({style:{width:"100%"}},E)),ke=="\u627E\u56DE\u5BC6\u7801"&&a.createElement(Ke,zr(Et({style:{width:"100%"}},S),{goBack:()=>Qe("\u767B\u5F55")}))))};var Gr=(0,b.connect)(({user:D,globalSetting:B})=>({user:D,globalSetting:B}))(Ar)},19080:function(it,fe,n){n.d(fe,{F:function(){return v},Z:function(){return m}});var b=n(92310),z=n.n(b);const I=null;function m(h,a,N){return z()({[`${h}-status-success`]:a==="success",[`${h}-status-warning`]:a==="warning",[`${h}-status-error`]:a==="error",[`${h}-status-validating`]:a==="validating",[`${h}-has-feedback`]:N})}const v=(h,a)=>a||h},24905:function(it,fe,n){n.d(fe,{default:function(){return P}});var b=n(92310),z=n.n(b),I=n(5630),m=n(59301),v=n(36355),h=n(1684),a=n(32441),F=m.createContext(null),Z=n(98447),ee=n(14088),Ee=n(4572),X=function(j,te){var re={};for(var J in j)Object.prototype.hasOwnProperty.call(j,J)&&te.indexOf(J)<0&&(re[J]=j[J]);if(j!=null&&typeof Object.getOwnPropertySymbols=="function")for(var ne=0,J=Object.getOwnPropertySymbols(j);ne{var re;const{prefixCls:J,className:ne,rootClassName:Ie,children:L,indeterminate:Pe=!1,style:ce,onMouseEnter:k,onMouseLeave:y,skipGroup:M=!1,disabled:Q}=j,o=X(j,["prefixCls","className","rootClassName","children","indeterminate","style","onMouseEnter","onMouseLeave","skipGroup","disabled"]),{getPrefixCls:l,direction:f,checkbox:d}=m.useContext(v.E_),s=m.useContext(F),{isFormItemInput:p}=m.useContext(a.aM),C=m.useContext(h.Z),V=(re=(s==null?void 0:s.disabled)||Q)!==null&&re!==void 0?re:C,me=m.useRef(o.value);m.useEffect(()=>{s==null||s.registerValue(o.value)},[]),m.useEffect(()=>{if(!M)return o.value!==me.current&&(s==null||s.cancelValue(me.current),s==null||s.registerValue(o.value),me.current=o.value),()=>s==null?void 0:s.cancelValue(o.value)},[o.value]);const R=l("checkbox",J),[ue,oe]=(0,Z.ZP)(R),q=Object.assign({},o);s&&!M&&(q.onChange=function(){o.onChange&&o.onChange.apply(o,arguments),s.toggleOption&&s.toggleOption({label:L,value:o.value})},q.name=s.name,q.checked=s.value.includes(o.value));const $=z()(`${R}-wrapper`,{[`${R}-rtl`]:f==="rtl",[`${R}-wrapper-checked`]:q.checked,[`${R}-wrapper-disabled`]:V,[`${R}-wrapper-in-form-item`]:p},d==null?void 0:d.className,ne,Ie,oe),Oe=z()({[`${R}-indeterminate`]:Pe},Ee.A,oe),ge=Pe?"mixed":void 0;return ue(m.createElement(ee.Z,{component:"Checkbox",disabled:V},m.createElement("label",{className:$,style:Object.assign(Object.assign({},d==null?void 0:d.style),ce),onMouseEnter:k,onMouseLeave:y},m.createElement(I.Z,Object.assign({"aria-checked":ge},q,{prefixCls:R,className:Oe,disabled:V,ref:te})),L!==void 0&&m.createElement("span",null,L))))};var he=m.forwardRef(ae),Se=n(94480),De=n(2738),Ve=function(j,te){var re={};for(var J in j)Object.prototype.hasOwnProperty.call(j,J)&&te.indexOf(J)<0&&(re[J]=j[J]);if(j!=null&&typeof Object.getOwnPropertySymbols=="function")for(var ne=0,J=Object.getOwnPropertySymbols(j);ne{const{defaultValue:re,children:J,options:ne=[],prefixCls:Ie,className:L,rootClassName:Pe,style:ce,onChange:k}=j,y=Ve(j,["defaultValue","children","options","prefixCls","className","rootClassName","style","onChange"]),{getPrefixCls:M,direction:Q}=m.useContext(v.E_),[o,l]=m.useState(y.value||re||[]),[f,d]=m.useState([]);m.useEffect(()=>{"value"in y&&l(y.value||[])},[y.value]);const s=m.useMemo(()=>ne.map(W=>typeof W=="string"||typeof W=="number"?{label:W,value:W}:W),[ne]),p=W=>{d(xe=>xe.filter(Be=>Be!==W))},C=W=>{d(xe=>[].concat((0,Se.Z)(xe),[W]))},V=W=>{const xe=o.indexOf(W.value),Be=(0,Se.Z)(o);xe===-1?Be.push(W.value):Be.splice(xe,1),"value"in y||l(Be),k==null||k(Be.filter(Fe=>f.includes(Fe)).sort((Fe,Ue)=>{const je=s.findIndex(We=>We.value===Fe),we=s.findIndex(We=>We.value===Ue);return je-we}))},me=M("checkbox",Ie),R=`${me}-group`,[ue,oe]=(0,Z.ZP)(me),q=(0,De.Z)(y,["value","disabled"]),$=ne.length?s.map(W=>m.createElement(he,{prefixCls:me,key:W.value.toString(),disabled:"disabled"in W?W.disabled:y.disabled,value:W.value,checked:o.includes(W.value),onChange:W.onChange,className:`${R}-item`,style:W.style,title:W.title},W.label)):J,Oe={toggleOption:V,value:o,disabled:y.disabled,name:y.name,registerValue:C,cancelValue:p},ge=z()(R,{[`${R}-rtl`]:Q==="rtl"},L,Pe,oe);return ue(m.createElement("div",Object.assign({className:ge,style:ce},q,{ref:te}),m.createElement(F.Provider,{value:Oe},$)))},G=m.forwardRef(T);var u=m.memo(G);const c=he;c.Group=u,c.__ANT_CHECKBOX=!0;var P=c},98447:function(it,fe,n){n.d(fe,{C2:function(){return v}});var b=n(17313),z=n(37613),I=n(83116);const m=h=>{const{checkboxCls:a}=h,N=`${a}-wrapper`;return[{[`${a}-group`]:Object.assign(Object.assign({},(0,b.Wf)(h)),{display:"inline-flex",flexWrap:"wrap",columnGap:h.marginXS,[`> ${h.antCls}-row`]:{flex:1}}),[N]:Object.assign(Object.assign({},(0,b.Wf)(h)),{display:"inline-flex",alignItems:"baseline",cursor:"pointer","&:after":{display:"inline-block",width:0,overflow:"hidden",content:"'\\a0'"},[`& + ${N}`]:{marginInlineStart:0},[`&${N}-in-form-item`]:{'input[type="checkbox"]':{width:14,height:14}}}),[a]:Object.assign(Object.assign({},(0,b.Wf)(h)),{position:"relative",whiteSpace:"nowrap",lineHeight:1,cursor:"pointer",borderRadius:h.borderRadiusSM,alignSelf:"center",[`${a}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0,margin:0,[`&:focus-visible + ${a}-inner`]:Object.assign({},(0,b.oN)(h))},[`${a}-inner`]:{boxSizing:"border-box",position:"relative",top:0,insetInlineStart:0,display:"block",width:h.checkboxSize,height:h.checkboxSize,direction:"ltr",backgroundColor:h.colorBgContainer,border:`${h.lineWidth}px ${h.lineType} ${h.colorBorder}`,borderRadius:h.borderRadiusSM,borderCollapse:"separate",transition:`all ${h.motionDurationSlow}`,"&:after":{boxSizing:"border-box",position:"absolute",top:"50%",insetInlineStart:"21.5%",display:"table",width:h.checkboxSize/14*5,height:h.checkboxSize/14*8,border:`${h.lineWidthBold}px solid ${h.colorWhite}`,borderTop:0,borderInlineStart:0,transform:"rotate(45deg) scale(0) translate(-50%,-50%)",opacity:0,content:'""',transition:`all ${h.motionDurationFast} ${h.motionEaseInBack}, opacity ${h.motionDurationFast}`}},"& + span":{paddingInlineStart:h.paddingXS,paddingInlineEnd:h.paddingXS}})},{[` ${N}:not(${N}-disabled), ${a}:not(${a}-disabled) `]:{[`&:hover ${a}-inner`]:{borderColor:h.colorPrimary}},[`${N}:not(${N}-disabled)`]:{[`&:hover ${a}-checked:not(${a}-disabled) ${a}-inner`]:{backgroundColor:h.colorPrimaryHover,borderColor:"transparent"},[`&:hover ${a}-checked:not(${a}-disabled):after`]:{borderColor:h.colorPrimaryHover}}},{[`${a}-checked`]:{[`${a}-inner`]:{backgroundColor:h.colorPrimary,borderColor:h.colorPrimary,"&:after":{opacity:1,transform:"rotate(45deg) scale(1) translate(-50%,-50%)",transition:`all ${h.motionDurationMid} ${h.motionEaseOutBack} ${h.motionDurationFast}`}}},[` diff --git a/p__knowledgegraph__Detail__id.1cb42ecf.async.js b/p__knowledgegraph__Detail__id.b30b5556.async.js similarity index 99% rename from p__knowledgegraph__Detail__id.1cb42ecf.async.js rename to p__knowledgegraph__Detail__id.b30b5556.async.js index 7f0cef818f..5041687219 100644 --- a/p__knowledgegraph__Detail__id.1cb42ecf.async.js +++ b/p__knowledgegraph__Detail__id.b30b5556.async.js @@ -241,7 +241,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function pe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ee(Oe,Fe){if(typeof Oe!="object"||Oe===null)return Oe;var Me=Oe[Symbol.toPrimitive];if(Me!==void 0){var jt=Me.call(Oe,Fe||"default");if(typeof jt!="object")return jt;throw new TypeError("@@toPrimitive must return a primitive value.")}return(Fe==="string"?String:Number)(Oe)}function Be(Oe){var Fe=Ee(Oe,"string");return typeof Fe=="symbol"?Fe:String(Fe)}var ke=function(Fe,Me){return Object.assign.apply(Object,[{}].concat(po(Me.map(function(jt){return ho({},jt,Fe[jt])}))))},Ke=function(Fe,Me){var jt=new Set(Me);return Object.assign.apply(Object,[{}].concat(po(Object.entries(Fe).filter(function(Mn){var Tr=is(Mn,1),Fr=Tr[0];return!jt.has(Fr)}).map(function(Mn){var Tr=is(Mn,2),Fr=Tr[0],An=Tr[1];return ho({},Fr,An)}))))};function Ue(Oe,Fe){(Fe==null||Fe>Oe.length)&&(Fe=Oe.length);for(var Me=0,jt=Array(Fe);Me1&&arguments[1]!==void 0?arguments[1]:{},Me=Fe.wrapperElementType,jt=Me===void 0?"div":Me,Mn=Fe.nodeMapper,Tr=Mn===void 0?function(wr){return wr}:Mn,Fr=Fe.methodNames,An=Fr===void 0?[]:Fr,_t=Fe.initPropNames,Kn=_t===void 0?[]:_t;return(0,se.forwardRef)(function(wr,ra){var qi=(0,se.useRef)(),aa=(0,se.useMemo)(function(){var Ei=Object.fromEntries(Kn.filter(function(Si){return wr.hasOwnProperty(Si)}).map(function(Si){return[Si,wr[Si]]}));return Oe(Ei)},[]);Sn(function(){aa(Tr(qi.current))},se.useLayoutEffect),Sn(function(){return aa._destructor instanceof Function?aa._destructor:void 0});var ca=(0,se.useCallback)(function(Ei){for(var Si=arguments.length,ba=new Array(Si>1?Si-1:0),Sa=1;Sa1&&arguments[1]!==void 0?arguments[1]:se.useEffect,Me=(0,se.useRef)(),jt=(0,se.useRef)(!1),Mn=(0,se.useRef)(!1),Tr=(0,se.useState)(0),Fr=rn(Tr,2);Fr[0];var An=Fr[1];jt.current&&(Mn.current=!0),Fe(function(){return jt.current||(Me.current=Oe(),jt.current=!0),An(function(_t){return _t+1}),function(){Mn.current&&Me.current&&Me.current()}},[])}var wn=he(47174),wt=he(12708);const Kr={width:wt.number,height:wt.number,graphData:wt.shape({nodes:wt.arrayOf(wt.object).isRequired,links:wt.arrayOf(wt.object).isRequired}),backgroundColor:wt.string,nodeRelSize:wt.number,nodeId:wt.string,nodeLabel:wt.oneOfType([wt.string,wt.func]),nodeVal:wt.oneOfType([wt.number,wt.string,wt.func]),nodeVisibility:wt.oneOfType([wt.bool,wt.string,wt.func]),nodeColor:wt.oneOfType([wt.string,wt.func]),nodeAutoColorBy:wt.oneOfType([wt.string,wt.func]),onNodeHover:wt.func,onNodeClick:wt.func,linkSource:wt.string,linkTarget:wt.string,linkLabel:wt.oneOfType([wt.string,wt.func]),linkVisibility:wt.oneOfType([wt.bool,wt.string,wt.func]),linkColor:wt.oneOfType([wt.string,wt.func]),linkAutoColorBy:wt.oneOfType([wt.string,wt.func]),linkWidth:wt.oneOfType([wt.number,wt.string,wt.func]),linkCurvature:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalArrowLength:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalArrowColor:wt.oneOfType([wt.string,wt.func]),linkDirectionalArrowRelPos:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticles:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleSpeed:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleOffset:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleWidth:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleColor:wt.oneOfType([wt.string,wt.func]),onLinkHover:wt.func,onLinkClick:wt.func,dagMode:wt.oneOf(["td","bu","lr","rl","zin","zout","radialin","radialout"]),dagLevelDistance:wt.number,dagNodeFilter:wt.func,onDagError:wt.func,d3AlphaMin:wt.number,d3AlphaDecay:wt.number,d3VelocityDecay:wt.number,warmupTicks:wt.number,cooldownTicks:wt.number,cooldownTime:wt.number,onEngineTick:wt.func,onEngineStop:wt.func,getGraphBbox:wt.func},Pi={zoomToFit:wt.func,onNodeRightClick:wt.func,onNodeDrag:wt.func,onNodeDragEnd:wt.func,onLinkRightClick:wt.func,linkHoverPrecision:wt.number,onBackgroundClick:wt.func,onBackgroundRightClick:wt.func,showPointerCursor:wt.oneOfType([wt.bool,wt.func]),enablePointerInteraction:wt.bool,enableNodeDrag:wt.bool},ja={showNavInfo:wt.bool,nodeOpacity:wt.number,nodeResolution:wt.number,nodeThreeObject:wt.oneOfType([wt.object,wt.string,wt.func]),nodeThreeObjectExtend:wt.oneOfType([wt.bool,wt.string,wt.func]),nodePositionUpdate:wt.func,linkOpacity:wt.number,linkResolution:wt.number,linkCurveRotation:wt.oneOfType([wt.number,wt.string,wt.func]),linkMaterial:wt.oneOfType([wt.object,wt.string,wt.func]),linkThreeObject:wt.oneOfType([wt.object,wt.string,wt.func]),linkThreeObjectExtend:wt.oneOfType([wt.bool,wt.string,wt.func]),linkPositionUpdate:wt.func,linkDirectionalArrowResolution:wt.number,linkDirectionalParticleResolution:wt.number,linkDirectionalParticleThreeObject:wt.oneOfType([wt.object,wt.string,wt.func]),forceEngine:wt.oneOf(["d3","ngraph"]),ngraphPhysics:wt.object,numDimensions:wt.oneOf([1,2,3])};Object.assign({},Kr,Pi,{linkLineDash:wt.oneOfType([wt.arrayOf(wt.number),wt.string,wt.func]),nodeCanvasObjectMode:wt.oneOfType([wt.string,wt.func]),nodeCanvasObject:wt.func,nodePointerAreaPaint:wt.func,linkCanvasObjectMode:wt.oneOfType([wt.string,wt.func]),linkCanvasObject:wt.func,linkPointerAreaPaint:wt.func,linkDirectionalParticleCanvasObject:wt.func,autoPauseRedraw:wt.bool,minZoom:wt.number,maxZoom:wt.number,enableZoomInteraction:wt.oneOfType([wt.bool,wt.func]),enablePanInteraction:wt.oneOfType([wt.bool,wt.func]),onZoom:wt.func,onZoomEnd:wt.func,onRenderFramePre:wt.func,onRenderFramePost:wt.func});const wi=Object.assign({},Kr,Pi,ja,{enableNavigationControls:wt.bool,controlType:wt.oneOf(["trackball","orbit","fly"]),rendererConfig:wt.object,extraRenderers:wt.arrayOf(wt.shape({render:wt.func.isRequired}))});Object.assign({},Kr,ja,{nodeDesc:wt.oneOfType([wt.string,wt.func]),linkDesc:wt.oneOfType([wt.string,wt.func])}),Object.assign({},Kr,ja,{markerAttrs:wt.object,yOffset:wt.number,glScale:wt.number});const Ka=mn(wn.Z,{methodNames:["emitParticle","d3Force","d3ReheatSimulation","stopAnimation","pauseAnimation","resumeAnimation","cameraPosition","zoomToFit","getGraphBbox","screen2GraphCoords","graph2ScreenCoords","postProcessingComposer","lights","scene","camera","renderer","controls","refresh"],initPropNames:["controlType","rendererConfig","extraRenderers"]});Ka.displayName="ForceGraph3D",Ka.propTypes=wi;var vo=he(21668),mo=he(61147),ii=he(33662),Ki=he(14301),Mo=he(7695),fr=he(85320),er=he(50277);function Fi(Oe){return Oe.x+Oe.vx}function _i(Oe){return Oe.y+Oe.vy}function La(Oe){return Oe.z+Oe.vz}function ki(Oe){var Fe,Me,jt,Mn,Tr=1,Fr=1;typeof Oe!="function"&&(Oe=(0,fr.Z)(Oe==null?1:+Oe));function An(){for(var wr,ra=Fe.length,qi,aa,ca,Ra,Ei,Si,ba,Sa=0;Sa1&&(Ra=aa.y+aa.vy),Me>2&&(Ei=aa.z+aa.vz),qi.visit(Uo);function Uo(Ua,Oa,xo,di,Ca,va,ro){var Pa=[Oa,xo,di,Ca,va,ro],rl=Pa[0],xl=Pa[1],Xo=Pa[2],_l=Pa[Me],ts=Pa[Me+1],ko=Pa[Me+2],Gr=Ua.data,so=Ua.r,Ti=Si+so;if(Gr){if(Gr.index>aa.index){var oa=ca-Gr.x-Gr.vx,Ea=Me>1?Ra-Gr.y-Gr.vy:0,Yo=Me>2?Ei-Gr.z-Gr.vz:0,Eo=oa*oa+Ea*Ea+Yo*Yo;Eo1&&Ea===0&&(Ea=(0,er.Z)(Mn),Eo+=Ea*Ea),Me>2&&Yo===0&&(Yo=(0,er.Z)(Mn),Eo+=Yo*Yo),Eo=(Ti-(Eo=Math.sqrt(Eo)))/Eo*Tr,aa.vx+=(oa*=Eo)*(Ti=(so*=so)/(ba+so)),Me>1&&(aa.vy+=(Ea*=Eo)*Ti),Me>2&&(aa.vz+=(Yo*=Eo)*Ti),Gr.vx-=oa*(Ti=1-Ti),Me>1&&(Gr.vy-=Ea*Ti),Me>2&&(Gr.vz-=Yo*Ti))}return}return rl>ca+Ti||_l1&&(xl>Ra+Ti||ts2&&(Xo>Ei+Ti||kowr.r&&(wr.r=wr[ra].r)}function Kn(){if(Fe){var wr,ra=Fe.length,qi;for(jt=new Array(ra),wr=0;wrtypeof qi=="function")||Math.random,Me=ra.find(qi=>[1,2,3].includes(qi))||2,Kn()},An.iterations=function(wr){return arguments.length?(Fr=+wr,An):Fr},An.strength=function(wr){return arguments.length?(Tr=+wr,An):Tr},An.radius=function(wr){return arguments.length?(Oe=typeof wr=="function"?wr:(0,fr.Z)(+wr),Kn(),An):Oe},An}var ma=he(76633),To=he(38192),go=he(51910),ia=he(89392),As=he(59301),Ws=Object.defineProperty,Vu=Object.defineProperties,du=Object.getOwnPropertyDescriptors,Yu=Object.getOwnPropertySymbols,sc=Object.prototype.hasOwnProperty,_u=Object.prototype.propertyIsEnumerable,dc=(Oe,Fe,Me)=>Fe in Oe?Ws(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Nc=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))sc.call(Fe,Me)&&dc(Oe,Me,Fe[Me]);if(Yu)for(var Me of Yu(Fe))_u.call(Fe,Me)&&dc(Oe,Me,Fe[Me]);return Oe},gd=(Oe,Fe)=>Vu(Oe,du(Fe)),Ic=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const fd=new go.u9r,yd=new Float32Array([0,.5,0,-.5,-.5,0,.5,-.5,0]);fd.setAttribute("position",new go.TlE(yd,3));const hc=new go.vBJ({color:"#FF4500",side:go.ehD,transparent:!0,opacity:.8}),Eu=new Map,rc=Oe=>(Eu.has(Oe)||Eu.set(Oe,new go.xoR({transparent:!1,color:Oe})),Eu.get(Oe)),Gc=(Oe,Fe)=>{const Me=Oe.getParentData(Fe.id,"tree");return Me?Fe.style.x>Me.style.x?"right":"left":"center"},lc=[20,15,10],zc=[{name:"\u6839\u8282\u70B9",src:"/images/one.svg",color:"#CC7CF5"},{name:"\u8BFE\u7A0B",src:"/images/kc.svg",color:"#3241F7"},{name:"\u7AE0\u8282",src:"/images/zj.svg",color:"#5e54e7"},{name:"\u77E5\u8BC6\u70B9",src:"/images/zsd.svg",color:"#FFDF55"},{name:"\u5B9E\u8BAD",src:"/images/sx.svg",color:"#4E9DFF"},{name:"\u4F5C\u4E1A",src:"/images/zy.svg",color:"#445DF3"},{name:"\u89C6\u9891",src:"/images/sp.svg",color:"#6BC4DE"},{name:"\u8BFE\u4EF6",src:"/images/fj.svg",color:"#6BDE73"},{name:"\u8BD5\u5377",src:"/images/sj.svg",color:"#2D9534"},{name:"\u5176\u4ED6",src:"/images/qt.svg",color:"#2D947C"}],Uc=(Oe,Fe)=>{const Me={};let jt=null;return Oe.forEach(Mn=>{Me[Mn.properties.uuid]=gd(Nc({},Mn),{id:Mn.properties.uuid,children:[]})}),Fe.forEach(Mn=>{const Tr=Me[Mn.startNodeUuid],Fr=Me[Mn.endNodeUuid];Tr&&(Tr.id=Tr.properties.uuid),Tr&&Fr&&Tr.children.push(Fr)}),Oe.forEach(Mn=>{!Fe.some(Fr=>Fr.endNodeUuid===Mn.properties.uuid)&&(jt=Me[Mn.properties.uuid])}),jt};var Nd=(0,se.forwardRef)(({nodeUuid:Oe,subject_id:Fe,setshowdetail:Me,setitems:jt,setzoomsize:Mn},Tr)=>{var Fr;const[An,_t]=(0,se.useState)(!1),[Kn,wr]=(0,se.useState)({nodes:[],links:[]}),ra=(0,se.useRef)(),qi=(0,se.useRef)(1),aa=(0,se.useRef)(null),ca=(0,se.useRef)(null),Ra=50,Ei=2e3,[Si,ba]=(0,se.useState)(null),[Sa,Uo]=(0,se.useState)(""),[Ua,Oa]=(0,se.useState)(null),xo=(0,se.useRef)(new Map);(0,se.useEffect)(()=>{di()},[]);const di=()=>Ic(void 0,null,function*(){var Gr,so,Ti,oa,Ea,Yo,Eo,Ss;_t(!0);let _s=yield(0,Ot.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{nodeUuid:Oe,subject_id:Fe,depth:-1,relationshipFilter:"\u5305\u542B>"}});_t(!1);let il=(so=(Gr=_s==null?void 0:_s.data)==null?void 0:Gr.nodes)==null?void 0:so.map(Gs=>{var kc,Lc,Cd,Bd,mf,md,nf,rf,Ad,uh;return gd(Nc({},Gs==null?void 0:Gs.properties),{id:(kc=Gs==null?void 0:Gs.properties)==null?void 0:kc.uuid,name:(Lc=Gs==null?void 0:Gs.properties)==null?void 0:Lc.name,description:(Cd=Gs==null?void 0:Gs.properties)==null?void 0:Cd.description,nodeType:(Bd=Gs==null?void 0:Gs.properties)==null?void 0:Bd.nodeType,tags:((nf=(md=(mf=Gs==null?void 0:Gs.properties)==null?void 0:mf.tags)==null?void 0:md.split("\uFF0C"))==null?void 0:nf.map(af=>({name:af})))||[],colorType:parseInt((rf=Gs==null?void 0:Gs.properties)==null?void 0:rf.color)>3?"3":(Ad=Gs==null?void 0:Gs.properties)==null?void 0:Ad.color,activeColor:"#FA6400",size:lc[((uh=Gs==null?void 0:Gs.properties)==null?void 0:uh.color)-1]||20,shape:"circle",hide:!1,isExtendedState:!0})}),Ks=Uc((oa=(Ti=_s==null?void 0:_s.data)==null?void 0:Ti.nodes)==null?void 0:oa.map((Gs,kc)=>{var Lc,Cd,Bd,mf,md,nf,rf,Ad,uh;const af=parseInt((Lc=Gs==null?void 0:Gs.properties)==null?void 0:Lc.color)===1?"#CC7CF5":((Cd=zc.find(xf=>{var ws;return(xf==null?void 0:xf.name)===((ws=Gs==null?void 0:Gs.properties)==null?void 0:ws.nodeType)}))==null?void 0:Cd.color)||"#2D947C";return gd(Nc({},Gs),{key:kc,title:(Bd=Gs==null?void 0:Gs.properties)==null?void 0:Bd.name,newcolor:af,nodeColor:af,color:af,colornodeType:parseInt((mf=Gs==null?void 0:Gs.properties)==null?void 0:mf.color)===1?"\u6839\u8282\u70B9":((md=zc.find(xf=>{var ws;return(xf==null?void 0:xf.name)===((ws=Gs==null?void 0:Gs.properties)==null?void 0:ws.nodeType)}))==null?void 0:md.name)||"\u5176\u4ED6",val:lc[((nf=Gs==null?void 0:Gs.properties)==null?void 0:nf.color)-1]||10,nodeVal:lc[((rf=Gs==null?void 0:Gs.properties)==null?void 0:rf.color)-1]||10,name:(Ad=Gs==null?void 0:Gs.properties)==null?void 0:Ad.name,nodeLabel:(uh=Gs==null?void 0:Gs.properties)==null?void 0:uh.name})}),(Yo=(Ea=_s==null?void 0:_s.data)==null?void 0:Ea.relationships)==null?void 0:Yo.filter(Gs=>Gs.type==="\u5305\u542B")),Kl=(0,dr.RN)(Ks),Hl=(Eo=Kl.nodes)==null?void 0:Eo.filter((Gs,kc,Lc)=>kc===Lc.findIndex(Cd=>Cd.id===Gs.id)),Hu=(Ss=Kl.edges)==null?void 0:Ss.filter((Gs,kc,Lc)=>kc===Lc.findIndex(Cd=>Cd.source===Gs.source&&Cd.target===Gs.target));wr({nodes:Hl,links:Hu})}),Ca=(Gr,so)=>{const Ti=new Map([[Gr,!0]]),oa=Yo=>{so.forEach(Eo=>{Eo.source.id===Yo&&!Ti.has(Eo.target.id)&&(Ti.set(Eo.target.id,!0),oa(Eo.target.id))})},Ea=Yo=>{so.forEach(Eo=>{Eo.target.id===Yo&&!Ti.has(Eo.source.id)&&(Ti.set(Eo.source.id,!0),Ea(Eo.source.id))})};return oa(Gr),Ea(Gr),Ti};(0,se.useEffect)(()=>{Ua?xo.current=Ca(Ua.id,Kn.links):xo.current=new Map},[Ua,Kn.links]);const va=()=>vo.Z().force("charge",mo.Z().strength(-50)).force("collision",ki().radius(Gr=>(Gr.val||20)*1.2)).force("link",ma.Z().id(Gr=>Gr.id).distance(80)).force("center",To.Z()).numDimensions(3).tick(100),ro=Gr=>Ua?xo.current.has(Gr.id):!0,Pa=Gr=>Ua?xo.current.has(Gr.source.id)&&xo.current.has(Gr.target.id):!0;(0,se.useEffect)(()=>()=>{ca.current&&cancelAnimationFrame(ca.current)},[]);const rl=()=>{if(!aa.current||!ra.current)return;const Gr=ra.current,so=Gr.cameraPosition(),Ti={x:0,y:0,z:0},oa=.1,Ea={x:so.x+(aa.current.x-so.x)*oa,y:so.y+(aa.current.y-so.y)*oa,z:so.z+(aa.current.z-so.z)*oa};Gr.cameraPosition(Ea,Ti,0),Math.hypot(Ea.x-aa.current.x,Ea.y-aa.current.y,Ea.z-aa.current.z)>5?ca.current=requestAnimationFrame(rl):(ca.current=null,aa.current=null)};(0,se.useImperativeHandle)(Tr,()=>({handleZoom:_l,getData:di,selectall:xl,settype:Xo}));const xl=Gr=>{ba(Gr)},Xo=Gr=>{Uo(Gr)},_l=Gr=>{ca.current&&(cancelAnimationFrame(ca.current),ca.current=null);const so=ra.current;if(!so)return;const Ti=so.cameraPosition(),oa={x:0,y:0,z:0},Ea={x:Ti.x-oa.x,y:Ti.y-oa.y,z:Ti.z-oa.z},Yo=Math.hypot(Ea.x,Ea.y,Ea.z);let Ss=Yo*(Gr==="in"?.8:1.2);if(Ss=Math.max(Ra,Math.min(Ei,Ss)),Yo>0){const _s=Ss/Yo;aa.current={x:oa.x+Ea.x*_s,y:oa.y+Ea.y*_s,z:oa.z+Ea.z*_s},qi.current=1e3/Ss,rl()}},ts=(0,ia.debounce)(Gr=>{Oa(Gr)},100),ko=Gr=>{console.log("---",Gr),ba(Gr.id),jt(Gr),Me(!0)};return As.createElement("div",{style:{height:"calc(100vh - 0px)",overflow:"hidden"}},((Fr=Kn==null?void 0:Kn.nodes)==null?void 0:Fr.length)>0&&As.createElement(Ka,{graphData:Kn,ref:ra,enableNodeDrag:!1,backgroundColor:"rgb(1, 10, 35)",linkColor:Gr=>Pa(Gr)?"#ccc":"rgba(0,0,0,0)",linkWidth:Gr=>(Pa(Gr),1),linkDirectionalArrowLength:Ua?6:0,nodeRelSize:8,linkDirectionalArrowColor:()=>"rgba(0,0,0,0)",linkDirectionalParticles:Gr=>Pa(Gr)?3:0,linkDirectionalParticleSpeed:.001,linkDirectionalParticleWidth:2,linkDirectionalParticleColor:Gr=>Pa(Gr)?"#ccc":"rgba(0,0,0,0)",linkThreeObjectExtend:!0,nodeThreeObject:Gr=>{if(Sa){const so=new go.Kj0(new go.xo$(Gr.val,16,16),rc(Gr.colornodeType===Sa?Gr.nodeColor:"#999999"));if(Gr.id===Si){const Ti=new go.Kj0(new go.xo$(Gr.val+5,32,32),new go.vBJ({transparent:!0,opacity:.3}));so.add(Ti)}return so}else{const so=new go.Kj0(new go.xo$(Gr.val,16,16),rc(Gr.id===Si||ro(Gr)?Gr.nodeColor:"#999999"));if(Gr.id===Si){const Ti=new go.Kj0(new go.xo$(Gr.val+5,32,32),new go.vBJ({transparent:!0,opacity:.3}));so.add(Ti)}return so}},linkThreeObject:Gr=>Pa(Gr)?new go.Kj0(fd,hc):null,onNodeHover:ts,onNodeClick:ko,onEngineStop:()=>{},onNodeDragEnd:Gr=>{Gr.fx=Gr.x,Gr.fy=Gr.y,Gr.fz=Gr.z}}))}),Hc={flex_box_center:"flex_box_center___mORrQ",flex_space_between:"flex_space_between___AGgBm",flex_box_vertical_center:"flex_box_vertical_center____H93g",flex_box_center_end:"flex_box_center_end___VPK8Q",flex_box_column:"flex_box_column___qksG3",autocomp:"autocomp___H_feM",autocompwidth:"autocompwidth___RMYtG",hoverone:"hoverone___j7m8k",name:"name___qwPqM",img:"img___WHKD_",autopop:"autopop___YCC3k",studentHead:"studentHead___DeVom",headLi:"headLi___qiYnp",btn:"btn___s7HI8",tupugx:"tupugx___JCYSy",textname:"textname___iEAMA",dropdownst:"dropdownst___ca1cn",ChangeBut:"ChangeBut___uZelH"},vd=he(37295),Xd=he(59301),ju=Object.defineProperty,Ec=Object.defineProperties,yf=Object.getOwnPropertyDescriptors,uf=Object.getOwnPropertySymbols,rd=Object.prototype.hasOwnProperty,Nf=Object.prototype.propertyIsEnumerable,Xc=(Oe,Fe,Me)=>Fe in Oe?ju(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Df=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))rd.call(Fe,Me)&&Xc(Oe,Me,Fe[Me]);if(uf)for(var Me of uf(Fe))Nf.call(Fe,Me)&&Xc(Oe,Me,Fe[Me]);return Oe},Sh=(Oe,Fe)=>Ec(Oe,yf(Fe)),Eh=(Oe,Fe)=>{var Me={};for(var jt in Oe)rd.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&uf)for(var jt of uf(Oe))Fe.indexOf(jt)<0&&Nf.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},qf=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});let Ud=[{name:"\u6839\u8282\u70B9",src:"/images/one.svg",color:"#CC7CF5",bordercolor:"#A150CB"},{name:"\u8BFE\u7A0B",src:"/images/kc.svg",color:"#3241F7",bordercolor:"#3437D9"},{name:"\u7AE0\u8282",src:"/images/zj.svg",color:"#5e54e7",bordercolor:"#7f77f9"},{name:"\u77E5\u8BC6\u70B9",src:"/images/zsd.svg",color:"#FFDF55",bordercolor:"#FFD60F"},{name:"\u5B9E\u8BAD",src:"/images/sx.svg",color:"#4E9DFF",bordercolor:"#0882FB"},{name:"\u4F5C\u4E1A",src:"/images/zy.svg",color:"#445DF3",bordercolor:"#3149D5"},{name:"\u89C6\u9891",src:"/images/sp.svg",color:"#6BC4DE",bordercolor:"#339DC4"},{name:"\u8BFE\u4EF6",src:"/images/fj.svg",color:"#6BDE73",bordercolor:"#33C448"},{name:"\u8BD5\u5377",src:"/images/sj.svg",color:"#2D9534",bordercolor:"#077A04"},{name:"\u5176\u4ED6",src:"/images/qt.svg",color:"#2D947C",bordercolor:"#157660"}];const Yd=null;let oo=null;const Mh=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,datas:An}=Fe,_t=Eh(Fe,["pathsDetail","user","globalSetting","loading","dispatch","datas"]);const Kn=(0,se.useRef)(),wr=(0,se.useRef)(null);(0,se.useEffect)(()=>{ra()},[An]);function ra(){return qf(this,null,function*(){var qi,aa,ca,Ra,Ei,Si,ba;if(((qi=An==null?void 0:An.nodes)==null?void 0:qi.length)>0){let Sa=(0,Xt.fX)((aa=An==null?void 0:An.nodes)==null?void 0:aa.map((di,Ca)=>{var va,ro,Pa,rl,xl,Xo,_l,ts,ko,Gr,so,Ti,oa,Ea,Yo,Eo;return Sh(Df(Df({},di),di==null?void 0:di.properties),{rootNodeUuid:(va=di==null?void 0:di.properties)==null?void 0:va.rootNodeUuid,id:(ro=di==null?void 0:di.properties)==null?void 0:ro.uuid,name:(Pa=di==null?void 0:di.properties)==null?void 0:Pa.name,labelstype:(rl=di==null?void 0:di.labels)==null?void 0:rl[1],description:(xl=di==null?void 0:di.properties)==null?void 0:xl.description,nodeType:(Xo=di==null?void 0:di.properties)==null?void 0:Xo.nodeType,colornodeType:parseInt((_l=di==null?void 0:di.properties)==null?void 0:_l.color)===1?"\u6839\u8282\u70B9":((ts=Ud==null?void 0:Ud.find(Ss=>{var _s;return(Ss==null?void 0:Ss.name)===((_s=di==null?void 0:di.properties)==null?void 0:_s.nodeType)}))==null?void 0:ts.name)||"\u5176\u4ED6",newcolor:parseInt((ko=di==null?void 0:di.properties)==null?void 0:ko.color)===1?"#CC7CF5":((Gr=Ud==null?void 0:Ud.find(Ss=>{var _s;return(Ss==null?void 0:Ss.name)===((_s=di==null?void 0:di.properties)==null?void 0:_s.nodeType)}))==null?void 0:Gr.color)||"#2D947C",tags:((so=di==null?void 0:di.properties)==null?void 0:so.tags)&&((Ea=(oa=(Ti=di==null?void 0:di.properties)==null?void 0:Ti.tags)==null?void 0:oa.split("\uFF0C"))==null?void 0:Ea.map(Ss=>({name:Ss})))||[],colorType:parseInt((Yo=di==null?void 0:di.properties)==null?void 0:Yo.color)>3?"3":(Eo=di==null?void 0:di.properties)==null?void 0:Eo.color})}),(Ei=(Ra=(ca=An==null?void 0:An.relationships)==null?void 0:ca.filter(di=>{var Ca,va,ro;return(di==null?void 0:di.endNodeUuid)!==((ro=(va=(Ca=An==null?void 0:An.nodes)==null?void 0:Ca[0])==null?void 0:va.properties)==null?void 0:ro.rootNodeUuid)}))==null?void 0:Ra.filter(di=>{var Ca,va,ro;return(di==null?void 0:di.startNodeUuid)!==((ro=(va=(Ca=An==null?void 0:An.nodes)==null?void 0:Ca[0])==null?void 0:va.properties)==null?void 0:ro.rootNodeUuid)}))==null?void 0:Ei.filter(di=>di.type==="\u5305\u542B")),Uo=(0,dr.RN)(Sa),Ua=(Si=Uo.nodes)==null?void 0:Si.filter((di,Ca,va)=>Ca===va.findIndex(ro=>ro.id===di.id)),Oa=(ba=Uo.edges)==null?void 0:ba.filter((di,Ca,va)=>Ca===va.findIndex(ro=>ro.source===di.source&&ro.target===di.target));Ua.map(di=>(di.transformd=!0,di.style={labelWordWrap:!0,labelPlacement:di.depth===0?"center":di.depth<3?"top-left":"top",haloLineWidth:Math.max(20-di.depth*6,0),labelMaxWidth:di.depth===0?300:200,labelFontSize:di.depth===0?22:Ua.length>300?12:14,labelLineHeight:100,halo:di.depth<3},di)),Kn.current=null;let xo=Ua==null?void 0:Ua.length;Kn.current=new dr.kJ({container:wr.current,autoResize:!0,background:"#010A23",autoFit:{type:Ua.length>50?"view":"center",options:{direction:"both",when:"always"}},animation:!1,padding:50,data:{nodes:Ua,edges:Oa},node:{type:"circle",style:{size:di=>di.colorType==1?100:di.depth<2?50:xo>250?10:20,fill:di=>di.newcolor,labelText:di=>di.name,labelFill:"#ffffff"},state:{highlight:{stroke:"transparent"},selected:{stroke:"transparent"},inactive:{fill:di=>di.newcolor,port:!1,labelBackground:!1,halo:!1,badgeBackground:!1}}},edge:{style:{labelBackground:!1,halo:!1,stroke:"#A150CB",strokeOpacity:.5},state:{inactive:{stroke:"#f9f0ff",strokeOpacity:.5,halo:!1,labelBackground:!1,lineWidth:1},highlight:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},selected:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},active:{halo:!1},disable:{halo:!1}}},layout:[{type:"dendrogram",radial:!0,nodeSep:40,rankSep:Ua.length>250?360:240,direction:"RL",unitRadius:90,linkDistance:200,preventOverlap:!0,maxPreventOverlapIteration:100,strictRadial:!1}],plugins:[{type:"tooltip",enable:di=>di.targetType==="node",getContent:(di,Ca)=>{let va="";return Ca.forEach(ro=>{va+=`
    ${ro.name||""}
    `}),va}}],behaviors:["drag-canvas",{type:"zoom-canvas"},"drag-element",{type:"collapse-expand",onExpand:(di,Ca)=>{console.log("----",di,Ca)}},{type:"fix-element-size",state:"fix-element-size",enable:!0}],transforms:[{type:"place-radial-labels"}]}),Kn.current.render()}})}return Xd.createElement("div",{style:{background:"#fff",height:"800rem"}},Xd.createElement("div",{style:{width:"100%",height:"800rem"},ref:wr}))};var _f=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(Mh),$f={flex_box_center:"flex_box_center___WMF1f",flex_space_between:"flex_space_between___haq2g",flex_box_vertical_center:"flex_box_vertical_center___KFxAJ",flex_box_center_end:"flex_box_center_end___DIl10",flex_box_column:"flex_box_column___f8Jy4",zhishidian:"zhishidian___ftPXv"},bd={flex_box_center:"flex_box_center___JiLDQ",flex_space_between:"flex_space_between___Ur9j0",flex_box_vertical_center:"flex_box_vertical_center___FAM8c",flex_box_center_end:"flex_box_center_end___onqau",flex_box_column:"flex_box_column___jwO5r",tree_box:"tree_box___EeMwm",tree:"tree___jwv1Z"},fu=he(59301),Ff=Object.defineProperty,Qf=Object.defineProperties,yc=Object.getOwnPropertyDescriptors,Ih=Object.getOwnPropertySymbols,eh=Object.prototype.hasOwnProperty,Pd=Object.prototype.propertyIsEnumerable,th=(Oe,Fe,Me)=>Fe in Oe?Ff(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Jd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))eh.call(Fe,Me)&&th(Oe,Me,Fe[Me]);if(Ih)for(var Me of Ih(Fe))Pd.call(Fe,Me)&&th(Oe,Me,Fe[Me]);return Oe},au=(Oe,Fe)=>Qf(Oe,yc(Fe)),id=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const xd=({dispatch:Oe,user:Fe,classroomList:Me,account:jt,resourceModalVisible:Mn,setResourceModalVisible:Tr,resourceId:Fr,binding:An,getTableData:_t})=>{const[Kn]=Ze.default.useForm(),wr=(0,je.useParams)(),[ra,qi]=(0,se.useState)([]),[aa,ca]=(0,se.useState)([]),[Ra,Ei]=(0,se.useState)([]),[Si,ba]=(0,se.useState)(!1),[Sa,Uo]=(0,se.useState)(!1),[Ua,Oa]=(0,se.useState)([]),[xo,di]=(0,se.useState)({keyword:""});(0,se.useEffect)(()=>{Mn?(Kn.setFieldsValue({tab:"all"}),va("all")):(Oa([]),Ei([]),xo.keyword="",di(Jd({},xo)))},[Mn]),(0,se.useEffect)(()=>{Mn&&va(Kn.getFieldValue("tab"))},[xo==null?void 0:xo.keyword]);const Ca=Pa=>{switch(Pa.item_type){case"Challenge":return fu.createElement(Lr.Z,{wrap:!1,align:"middle",justify:"space-between",gutter:20},fu.createElement(Aa.Z,{flex:"302px"},fu.createElement(Bn.Z,{title:Pa.name||""},fu.createElement("div",{className:" multi_ellipsis1"},fu.createElement("span",{className:"mr5",style:{color:"#20BB8A"}},"\u5173\u5361")," ",Pa.name||""))),fu.createElement(Aa.Z,{flex:1},fu.createElement(Bn.Z,{title:Pa.shixun_name||""},fu.createElement("div",{className:"c-grey-666 multi_ellipsis1"},"\u6240\u5C5E\u5B9E\u8BAD\uFF1A",(Pa==null?void 0:Pa.shixun_name)||""))));case"Shixun":return fu.createElement("span",null,fu.createElement("span",{className:"mr5 c-light-primary"},"\u5B9E\u8BAD"),Pa.name);case"Attachment":return fu.createElement("span",null,fu.createElement("span",{className:"mr5 c-cyan-blue"},"\u8BFE\u4EF6"),Pa.name);case"ExaminationBank":return fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#e69917"}},"\u6D4B\u9A8C"),Pa.name);case"HomeworkCommon":return fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#E99237"}},"\u7F16\u7A0B\u4F5C\u4E1A"),Pa.name);case"VideoItem":return fu.createElement("span",null,fu.createElement("span",{className:"mr5 c-purple-8C1"},"\u89C6\u9891"),Pa.name);case"SubjectHomework":return(Pa==null?void 0:Pa.homework_type)=="group"?fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#AABF07"}},"\u5206\u7EC4\u4F5C\u4E1A"),Pa.name):fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#20BB8A"}},"\u56FE\u6587\u4F5C\u4E1A"),Pa.name);case"StageCatalog":return fu.createElement("span",null,fu.createElement("span",{className:"mr5"},"\u5C0F\u8282"),Pa.name);default:return""}},va=Pa=>id(void 0,null,function*(){ba(!0);const rl=yield(0,Ot.ZP)(`/api/paths/${wr==null?void 0:wr.pathId}/bind_tag_stage_shixuns.json`,{method:"get",params:{tag_discipline_id:Fr,binding:An,keywords:xo==null?void 0:xo.keyword,tab:Pa}});if(rl){const xl=(ts,ko="")=>ts==null?void 0:ts.map((Gr,so)=>{const Ti=ko?`${ko}-${so}`:`${so}`,Ea=!ko?Gr.state_name||"":Ca(Gr),Yo=!(Gr!=null&&Gr.can_choose);return au(Jd({},Gr),{title:Ea,key:Ti,disabled:Yo,children:xl(Gr.items||Gr.children||[],Ti)})}),Xo=xl((rl==null?void 0:rl.stages)||[]);qi(Xo||[]);const _l=(ts,ko=[])=>(ts.forEach(Gr=>{var so;ko.push(Gr.key),(so=Gr.children)!=null&&so.length&&_l(Gr.children,ko)}),ko);ca(_l(Xo||[]))}ba(!1)}),ro=(Pa,rl)=>{var xl,Xo;(xl=rl==null?void 0:rl.checkedNodes)!=null&&xl.length&&Ei((Xo=rl==null?void 0:rl.checkedNodes)==null?void 0:Xo.map(_l=>_l==null?void 0:_l.stage_shixun_id)),Oa(Pa)};return fu.createElement("div",null,fu.createElement(Bt.default,{title:An?"\u89E3\u7ED1\u8D44\u6E90":"\u5173\u8054\u8D44\u6E90",open:Mn,width:700,centered:!0,destroyOnClose:!0,okText:"\u786E\u5B9A\u4FDD\u5B58",className:bd.scoremodal,onCancel:()=>{Tr(!1)},onOk:()=>id(void 0,null,function*(){if(Uo(!0),An){const Pa=yield(0,Ot.ZP)(`/api/v2/tag_disciplines/${Fr}/un_bind_resource.json`,{method:"post",body:{stage_shixun_ids:Ra}});(Pa==null?void 0:Pa.status)==0&&(Tr(!1),_t()),Uo(!1)}else{const Pa=yield(0,Ot.ZP)(`/api/v2/tag_disciplines/${Fr}/bind_resource.json`,{method:"post",body:{stage_shixun_ids:Ra}});(Pa==null?void 0:Pa.status)==0&&(Tr(!1),_t()),Uo(!1)}})},fu.createElement(Ze.default,{layout:"inline",form:Kn,className:bd.myForm},fu.createElement(Ze.default.Item,{name:"tab",colon:!1},fu.createElement(Ma.default,{style:{width:200},size:"large",placeholder:"\u8BF7\u9009\u62E9\u8D44\u6E90\u7C7B\u578B",onChange:Pa=>{va(Pa)}},fu.createElement(Ma.default.Option,{value:"all"},"\u5168\u90E8"),fu.createElement(Ma.default.Option,{value:"shixun"},"\u5B9E\u8DF5\u9879\u76EE"),fu.createElement(Ma.default.Option,{value:"video"},"\u89C6\u9891"),fu.createElement(Ma.default.Option,{value:"attachment"},"\u8BFE\u4EF6"),fu.createElement(Ma.default.Option,{value:"challenge"},"\u5173\u5361"),fu.createElement(Ma.default.Option,{value:"group_homework"},"\u5206\u7EC4\u4F5C\u4E1A"),fu.createElement(Ma.default.Option,{value:"normal_homework"},"\u56FE\u6587\u4F5C\u4E1A"),fu.createElement(Ma.default.Option,{value:"hack_homework"},"\u7F16\u7A0B\u4F5C\u4E1A"),fu.createElement(Ma.default.Option,{value:"exercise"},"\u6D4B\u9A8C"))),fu.createElement($s.t7,{placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u5B57\u8FDB\u884C\u641C\u7D22",value:xo==null?void 0:xo.keyword,style:{width:240,marginLeft:"auto"},onChange:Pa=>{di(au(Jd({},xo),{keyword:Pa,page:1}))}})),fu.createElement(vt.Z,{spinning:Si},(ra==null?void 0:ra.length)>0?fu.createElement("div",{className:bd.tree_box},fu.createElement(es.default,{className:bd.tree,checkable:!0,treeData:ra,checkedKeys:Ua,expandedKeys:aa,onExpand:Pa=>ca(Pa),onCheck:(Pa,rl)=>ro(Pa,rl)})):fu.createElement(_a.Z,null))))};var ad=(0,je.connect)(({user:Oe,classroomList:Fe,account:Me})=>({user:Oe,classroomList:Fe,account:Me}))(xd),wc=he(59301),Qu=Object.defineProperty,fc=Object.defineProperties,hd=Object.getOwnPropertyDescriptors,Fd=Object.getOwnPropertySymbols,Vd=Object.prototype.hasOwnProperty,hh=Object.prototype.propertyIsEnumerable,Vc=(Oe,Fe,Me)=>Fe in Oe?Qu(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Qd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Vd.call(Fe,Me)&&Vc(Oe,Me,Fe[Me]);if(Fd)for(var Me of Fd(Fe))hh.call(Fe,Me)&&Vc(Oe,Me,Fe[Me]);return Oe},Oh=(Oe,Fe)=>fc(Oe,hd(Fe)),cf=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Wf=({dispatch:Oe,user:Fe,classroomList:Me,account:jt})=>{const[Mn]=Ze.default.useForm(),Tr=(0,je.useParams)(),[Fr,An]=(0,se.useState)(!1),[_t,Kn]=(0,se.useState)({page:1,limit:10,keyword:""}),[wr,ra]=(0,se.useState)([]),[qi,aa]=(0,se.useState)({}),[ca,Ra]=(0,se.useState)(!1),[Ei,Si]=(0,se.useState)(""),[ba,Sa]=(0,se.useState)(!1),[Uo,Ua]=(0,se.useState)("");(0,se.useEffect)(()=>{jt.actionTabs.key=="\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90"?Oa():(_t.keyword="",Kn(Qd({},_t)))},[jt.actionTabs]);const Oa=()=>cf(void 0,null,function*(){var Ca,va,ro,Pa,rl,xl,Xo,_l,ts,ko,Gr,so;An(!0);const Ti=yield(0,Ot.ZP)("/api/v2/course_disciplines.json",{method:"get"});(Ti==null?void 0:Ti.status)===0&&(ra((Ca=Ti==null?void 0:Ti.data)==null?void 0:Ca.list),Mn.setFieldsValue({course_discipline_id:(Pa=(ro=(va=Ti==null?void 0:Ti.data)==null?void 0:va.list)==null?void 0:ro[0])==null?void 0:Pa.id}),((xl=(rl=Ti==null?void 0:Ti.data)==null?void 0:rl.list)==null?void 0:xl.length)>0?xo((ts=(_l=(Xo=Ti==null?void 0:Ti.data)==null?void 0:Xo.list)==null?void 0:_l[0])==null?void 0:ts.id):An(!1),Ua((so=(Gr=(ko=Ti==null?void 0:Ti.data)==null?void 0:ko.list)==null?void 0:Gr[0])==null?void 0:so.id))}),xo=Ca=>cf(void 0,null,function*(){const va=yield(0,Ot.ZP)("/api/v2/tag_disciplines.json",{method:"get",params:{subject_id:(Tr==null?void 0:Tr.pathId)||"",course_discipline_id:Ca,keyword:_t==null?void 0:_t.keyword}});(va==null?void 0:va.status)===0&&aa(va==null?void 0:va.data),An(!1)});(0,se.useEffect)(()=>{jt.actionTabs.key=="\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90"&&(xo(Mn.getFieldValue("course_discipline_id")),Ua(Mn.getFieldValue("course_discipline_id")))},[_t==null?void 0:_t.keyword]);const di=[{title:"\u77E5\u8BC6\u70B9\u540D\u79F0",dataIndex:"name",key:"name",ellipsis:!0,align:"left",render:(Ca,va)=>wc.createElement("span",null,Ca||"--")},{title:"\u5DF2\u5173\u8054\u8D44\u6E90\u6570\u91CF",dataIndex:"resource_size",key:"resource_size",ellipsis:!0,align:"left",render:Ca=>wc.createElement("span",null,Ca)},{title:"\u64CD\u4F5C",key:"action",align:"right",width:200,render:(Ca,va)=>wc.createElement(wc.Fragment,null,wc.createElement("span",{style:{color:"#165DFF",cursor:"pointer",marginRight:"20px"},onClick:()=>{Ra(!0),Si(va==null?void 0:va.id),Sa(!1)}},"\u5173\u8054\u8D44\u6E90"),wc.createElement("span",{style:{color:"#165DFF",cursor:"pointer"},onClick:()=>{Ra(!0),Si(va==null?void 0:va.id),Sa(!0)}},"\u89E3\u7ED1\u8D44\u6E90"))}].filter(Ca=>!!Ca);return wc.createElement(Bt.default,{title:"\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90",open:jt.actionTabs.key=="\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90",width:900,centered:!0,footer:null,destroyOnClose:!0,className:$f.scoremodal,onCancel:()=>{Oe({type:"account/setActionTabs",payload:{key:""}})}},wc.createElement(vt.Z,{spinning:Fr},wc.createElement(Ze.default,{layout:"inline",form:Mn,className:$f.myForm},wc.createElement(Ze.default.Item,{name:"course_discipline_id",colon:!1},wc.createElement(Ma.default,{style:{width:200},size:"large",placeholder:"\u8BF7\u9009\u62E9\u8BFE\u7A0B",onChange:Ca=>{xo(Ca),Ua(Ca)}},wr==null?void 0:wr.map(Ca=>wc.createElement(Ma.default.Option,{key:Ca==null?void 0:Ca.id,value:Ca==null?void 0:Ca.id},Ca==null?void 0:Ca.name)))),wc.createElement($s.t7,{placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u5B57\u8FDB\u884C\u641C\u7D22",value:_t==null?void 0:_t.keyword,style:{width:240},onChange:Ca=>{Kn(Oh(Qd({},_t),{keyword:Ca,page:1}))}}),wc.createElement("div",{className:$f.zhishidian,onClick:()=>{(0,Xt.xg)(`/knowledgeHub?course_discipline_id=${Uo}`)}},"\u77E5\u8BC6\u70B9\u7BA1\u7406")),wc.createElement(Pn.default,{columns:di,pagination:!1,scroll:{y:400},style:{marginTop:"20px",marginBottom:"20px"},dataSource:(qi==null?void 0:qi.tag_disciplines)||[]})),wc.createElement(ad,{resourceModalVisible:ca,setResourceModalVisible:Ra,resourceId:Ei,binding:ba,getTableData:()=>{xo(Mn.getFieldValue("course_discipline_id")),Ua(Mn.getFieldValue("course_discipline_id"))}}))};var uc=(0,je.connect)(({user:Oe,classroomList:Fe,account:Me})=>({user:Oe,classroomList:Fe,account:Me}))(Wf),Ja=he(59301),Sd=Object.defineProperty,Nh=Object.defineProperties,ga=Object.getOwnPropertyDescriptors,ph=Object.getOwnPropertySymbols,Kf=Object.prototype.hasOwnProperty,Zh=Object.prototype.propertyIsEnumerable,Xh=(Oe,Fe,Me)=>Fe in Oe?Sd(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Wd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Kf.call(Fe,Me)&&Xh(Oe,Me,Fe[Me]);if(ph)for(var Me of ph(Fe))Zh.call(Fe,Me)&&Xh(Oe,Me,Fe[Me]);return Oe},gh=(Oe,Fe)=>Nh(Oe,ga(Fe)),A0=(Oe,Fe)=>{var Me={};for(var jt in Oe)Kf.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&ph)for(var jt of ph(Oe))Fe.indexOf(jt)<0&&Zh.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},Fc=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Wl=window.ENV==="build"?"/react/build":"";let df=[{name:"\u6839\u8282\u70B9",src:Wl+"/images/one.svg",color:"#CC7CF5",bordercolor:"#A150CB",img:Wl+"/images/gjd.svg"},{name:"\u8BFE\u7A0B",src:Wl+"/images/kc.svg",color:"#3241F7",bordercolor:"#3437D9",img:Wl+"/images/kcjd.svg"},{name:"\u7AE0\u8282",src:Wl+"/images/zj.svg",color:"#5e54e7",bordercolor:"#7f77f9",img:Wl+"/images/zjjd.svg"},{name:"\u77E5\u8BC6\u70B9",src:Wl+"/images/zsd.svg",color:"#FFDF55",bordercolor:"#FFD60F",img:Wl+"/images/zsdjd.svg"},{name:"\u5B9E\u8BAD",src:Wl+"/images/sx.svg",color:"#4E9DFF",bordercolor:"#0882FB",img:Wl+"/images/sxjd.svg"},{name:"\u4F5C\u4E1A",src:Wl+"/images/zy.svg",color:"#445DF3",bordercolor:"#3149D5",img:Wl+"/images/zyjd.svg"},{name:"\u89C6\u9891",src:Wl+"/images/sp.svg",color:"#6BC4DE",bordercolor:"#339DC4",img:Wl+"/images/spjd.svg"},{name:"\u8BFE\u4EF6",src:Wl+"/images/fj.svg",color:"#6BDE73",bordercolor:"#33C448",img:Wl+"/images/kjjd.svg"},{name:"\u8BD5\u5377",src:Wl+"/images/sj.svg",color:"#2D9534",bordercolor:"#077A04",img:Wl+"/images/sjjd.svg"},{name:"\u5176\u4ED6",src:Wl+"/images/qt.svg",color:"#2D947C",bordercolor:"#157660",img:Wl+"/images/qtjd.svg"}];const wh=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,uuid:An,Tabsdatas:_t,initdata:Kn,setactivied:wr,tpacti:ra}=Fe,qi=A0(Fe,["pathsDetail","user","globalSetting","loading","dispatch","uuid","Tabsdatas","initdata","setactivied","tpacti"]),aa,ca,Ra,Ei,Si,ba,Sa,Uo,Ua;const Oa=(0,je.useParams)(),xo=(0,se.useRef)(),di=(0,se.useRef)(),Ca=(0,se.useRef)(),[va,ro]=(0,se.useState)([]),[Pa,rl]=(0,se.useState)(!0),[xl,Xo]=(0,se.useState)([]),[_l,ts]=(0,se.useState)(""),[ko,Gr]=(0,se.useState)(!1),so=(0,se.useRef)(null),[Ti,oa]=(0,se.useState)(),[Ea,Yo]=(0,se.useState)(!1),[Eo,Ss]=(0,se.useState)([]);let[_s,il]=(0,se.useState)(!1);const[Ks,Kl]=(0,se.useState)(!1),[Hl,Hu]=(0,se.useState)(!1),[Wc,Gs]=(0,se.useState)(!1),[kc,Lc]=(0,se.useState)([]),[Cd,Bd]=(0,se.useState)(!1),[mf,md]=(0,se.useState)([]),[nf]=(0,je.useSearchParams)(),[rf,Ad]=(0,se.useState)(!1),[uh,af]=(0,se.useState)(0),[xf,ws]=(0,se.useState)("\u5168\u90E8");let[Pc,Rf]=(0,se.useState)({page:1,limit:10});const[Ah,ch]=(0,se.useState)({}),[Td,yh]=(0,se.useState)([]),If=(0,se.useRef)(null),zd=(0,se.useRef)(null),[Ef,Cu]=(0,se.useState)(!1);(0,se.useEffect)(()=>(_s=!1,il(!1),dh(2,!0),Rt.ZP.config({getContainer:()=>so.current}),()=>{var bs;rl(!1),Xo([]),Yo(!1),ts(""),(bs=Ca.current)==null||bs.clear()}),[An]),(0,se.useEffect)(()=>(document.addEventListener("keydown",Gd),document.addEventListener("keyup",e0),()=>{document.removeEventListener("keydown",Gd),document.addEventListener("keyup",e0)}),[]);function Gd(bs){bs.ctrlKey&&Ca.current&&Ca.current.setBehaviors(Nu=>[...Nu.filter(tc=>typeof tc=="string"?tc!=="zoom-canvas":tc.type!=="zoom-canvas"),{type:"zoom-canvas",key:"new-zoom",enable:!0,preventDefault:!0}])}function e0(bs){Ca.current&&Ca.current.setBehaviors(Nu=>[...Nu.filter(tc=>typeof tc=="string"?tc!=="zoom-canvas":tc.type!=="zoom-canvas"),{type:"zoom-canvas",key:"new-zoom1",enable:!1,preventDefault:!1}])}const wp={onRemove:()=>{Lc([])},beforeUpload:bs=>{if(console.log(bs),(bs==null?void 0:bs.size)>1024*1024*50)return Rt.ZP.info("\u6587\u4EF6\u8D85\u8FC750M\uFF0C\u4E0D\u7B26\u5408\u4E0A\u4F20\u8981\u6C42"),!1;let Nu=[];return Nu.push(bs),Lc([...Nu]),!1},fileList:kc,accept:".xls,.xlsx"};(0,se.useEffect)(()=>{},[_s]),(0,se.useEffect)(()=>(window.addEventListener("resize",Cp),()=>{window.removeEventListener("resize",Cp)}),[]);function Cp(){var bs,Nu;(Nu=(bs=xo.current)==null?void 0:bs.update)==null||Nu.call(bs)}const Bp=(...bs)=>Fc(void 0,[...bs],function*(Nu={}){return yield Fr({type:"pathsDetail/getKnowledgeGraphs",payload:Wd({graphable_type:nf.get("type")==="classrooms"?"course":"subject",graphable_id:Oa==null?void 0:Oa.pathId},Nu)})});function dh(bs,Nu=!1){return Fc(this,null,function*(){var ic,tc,Fu,bh,fh,Yf,Y0,lg;(ic=Ca.current)==null||ic.destroy(),Ad(!0);let J0=yield(0,Ot.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{nodeUuid:An,subject_id:Oa==null?void 0:Oa.pathId,depth:bs===0?bs:bs||-1,relationshipFilter:"\u5305\u542B>"}});if(Ad(!1),(J0==null?void 0:J0.status)===0){if(Nu||Bp({graphable_id:Oa==null?void 0:Oa.pathId}),_s){di.current.getData();return}rl(!0);let Av=(0,Xt.fX)((Fu=(tc=J0==null?void 0:J0.data)==null?void 0:tc.nodes)==null?void 0:Fu.map((Cs,xh)=>{var ud,Hd,Th,I0,Wh,Ph,Kh,_0,Dp,Of,cg,Lg,dg,Tg,fg,Gp,zg,Pp;return gh(Wd(Wd({},Cs),Cs==null?void 0:Cs.properties),{rootNodeUuid:(ud=Cs==null?void 0:Cs.properties)==null?void 0:ud.rootNodeUuid,id:(Hd=Cs==null?void 0:Cs.properties)==null?void 0:Hd.uuid,name:(Th=Cs==null?void 0:Cs.properties)==null?void 0:Th.name,labelstype:(I0=Cs==null?void 0:Cs.labels)==null?void 0:I0[1],description:(Wh=Cs==null?void 0:Cs.properties)==null?void 0:Wh.description,nodeType:(Ph=Cs==null?void 0:Cs.properties)==null?void 0:Ph.nodeType,colornodeType:parseInt((Kh=Cs==null?void 0:Cs.properties)==null?void 0:Kh.color)===1?"\u6839\u8282\u70B9":((_0=df==null?void 0:df.find(zh=>{var Hh;return(zh==null?void 0:zh.name)===((Hh=Cs==null?void 0:Cs.properties)==null?void 0:Hh.nodeType)}))==null?void 0:_0.name)||"\u5176\u4ED6",newcolor:parseInt((Dp=Cs==null?void 0:Cs.properties)==null?void 0:Dp.color)===1?"#CC7CF5":((Of=df==null?void 0:df.find(zh=>{var Hh;return(zh==null?void 0:zh.name)===((Hh=Cs==null?void 0:Cs.properties)==null?void 0:Hh.nodeType)}))==null?void 0:Of.color)||"#2D947C",newbordercolor:parseInt((cg=Cs==null?void 0:Cs.properties)==null?void 0:cg.color)===1?Wl+"/images/gjd.svg":((Lg=df==null?void 0:df.find(zh=>{var Hh;return(zh==null?void 0:zh.name)===((Hh=Cs==null?void 0:Cs.properties)==null?void 0:Hh.nodeType)}))==null?void 0:Lg.img)||Wl+"/images/qtjd.svg",tags:((dg=Cs==null?void 0:Cs.properties)==null?void 0:dg.tags)&&((Gp=(fg=(Tg=Cs==null?void 0:Cs.properties)==null?void 0:Tg.tags)==null?void 0:fg.split("\uFF0C"))==null?void 0:Gp.map(zh=>({name:zh})))||[],colorType:parseInt((zg=Cs==null?void 0:Cs.properties)==null?void 0:zg.color)>3?"3":(Pp=Cs==null?void 0:Cs.properties)==null?void 0:Pp.color})}),(fh=(bh=J0==null?void 0:J0.data)==null?void 0:bh.relationships)==null?void 0:fh.filter(Cs=>Cs.type==="\u5305\u542B")),ug=(0,dr.RN)(Av),t0=(Yf=ug.nodes)==null?void 0:Yf.filter((Cs,xh,ud)=>xh===ud.findIndex(Hd=>Hd.id===Cs.id));ro(t0);let Kp=(Y0=ug.edges)==null?void 0:Y0.filter((Cs,xh,ud)=>xh===ud.findIndex(Hd=>Hd.source===Cs.source&&Hd.target===Cs.target));t0.map(Cs=>(Cs.transformd=!0,Cs.style={labelWordWrap:!0,labelPlacement:Cs.depth===0?"center":Cs.depth<3?"top-left":"top",haloLineWidth:Math.max(20-Cs.depth*6,0),labelMaxWidth:Cs.depth===0?300:100,labelFontSize:Cs.depth===0?22:t0.length>300?12:14,labelLineHeight:100,halo:Cs.depth<3},Cs)),Ca.current=null;let kg=t0==null?void 0:t0.length;Ca.current=new dr.kJ({container:zd.current,autoResize:!0,background:"#010A23",autoFit:{type:t0.length>10?"view":"center",options:{direction:"both",when:"always"}},animation:!1,padding:50,data:{nodes:t0,edges:Kp},node:{type:"image",style:{src:Cs=>Cs.newbordercolor,size:Cs=>Cs.colorType==1?100:Cs.depth<2?50:kg>250?10:20,fill:Cs=>Cs.newcolor,labelText:Cs=>Cs.name,labelFill:"#ffffff"},state:{highlight:{stroke:"transparent"},selected:{stroke:"transparent"},inactive:{fill:Cs=>Cs.newcolor,port:!1,labelBackground:!1,halo:!1,badgeBackground:!1}}},edge:{style:{labelBackground:!1,halo:!1,stroke:"#A150CB",strokeOpacity:.5},state:{inactive:{stroke:"#f9f0ff",strokeOpacity:.5,halo:!1,labelBackground:!1,lineWidth:1},highlight:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},selected:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},active:{halo:!1},disable:{halo:!1}}},layout:[{type:"dendrogram",radial:!0,nodeSep:40,rankSep:t0.length>250?360:240,direction:"RL",unitRadius:90,linkDistance:200,preventOverlap:!0,maxPreventOverlapIteration:100,strictRadial:!1}],plugins:[{type:"tooltip",position:"bottom",enable:Cs=>Cs.targetType==="node",getContent:(Cs,xh)=>{let ud="";return xh.forEach(Hd=>{ud+=`
    ${Hd.name||""}
    `}),ud}}],behaviors:["drag-canvas",{type:"zoom-canvas",enable:!1,preventDefault:!1,onFinish:()=>{setTimeout(()=>{var Cs;af((((Cs=Ca==null?void 0:Ca.current)==null?void 0:Cs.getZoom())*100).toFixed(0))},300)}},"drag-element",{type:"collapse-expand",onExpand:(Cs,xh)=>{console.log("----",Cs,xh)}},{type:"fix-element-size",state:"fix-element-size",enable:!0},{type:"click-select",state:"selected",onClick:Cs=>{If.current?(clearTimeout(If.current),If.current=null):If.current=setTimeout(()=>{let xh=t0.filter(ud=>{var Hd,Th;return(ud==null?void 0:ud.id)===((Th=(Hd=Cs.target)==null?void 0:Hd.config)==null?void 0:Th.id)});if((xh==null?void 0:xh.length)===0){Yo(!1);return}oa(xh==null?void 0:xh[0]),Yo(!0),Cs.view.setCursor("pointer"),If.current=null},300)},multiple:!1},{type:"hover-activate",enable:Cs=>Cs.targetType==="node",degree:1,state:"highlight",direction:"both",inactiveState:"inactive",onHover:Cs=>{Cs.view.setCursor("pointer")},onHoverEnd:Cs=>{Cs.view.setCursor("default")}}],transforms:[{type:"place-radial-labels"}]}),Ca.current.render(),zd.current&&(zd.current.style.opacity=1),(lg=Ca==null?void 0:Ca.current)==null||lg.fitView(),setTimeout(()=>{var Cs;af((((Cs=Ca==null?void 0:Ca.current)==null?void 0:Cs.getZoom())*100).toFixed(0))},300);var q0=Ca.current.getOptions();setTimeout(()=>{var Cs;q0.animation=!0,(Cs=Ca.current)==null||Cs.setOptions(q0)},2500),window.graphsRef=Ca.current}let Wp=yield(0,Ot.ZP)("/api/knowledge_items.json",{method:"get",params:{item_type:3,subject_id:Oa==null?void 0:Oa.pathId}});(Wp==null?void 0:Wp.status)===0&&yh(Wp==null?void 0:Wp.data)})}const U0=(bs,Nu)=>{if(Ca.current){if(Ks){bs==="Leave"?di.current.settype(""):di.current.settype(Nu==null?void 0:Nu.name);return}if(_s){di.current.onMouse(bs,Nu.name);return}try{const ic={},tc={};Ca.current.getEdgeData().map(Fu=>{ic[Fu.id]=bs==="Enter"?"inactive":"active"}),Ca.current.getNodeData().map(Fu=>{bs==="Enter"?tc[Fu.id]=Fu.colornodeType===Nu.name?"highlight":"inactive":tc[Fu.id]="active"}),Ca.current.setElementState(ic),Ca.current.setElementState(tc)}catch(ic){}}},p0=(bs,Nu)=>{if(Ca.current){if(_s){di.current.onMouse(bs,Nu.name);return}try{const ic={},tc={};Ca.current.getEdgeData().map(Fu=>{ic[Fu.id]=bs==="Enter"?"inactive":"active"}),Ca.current.getNodeData().map(Fu=>{var bh,fh;bs==="Enter"?tc[Fu.id]=(fh=(bh=Fu.tags)==null?void 0:bh.map(Yf=>Yf==null?void 0:Yf.name))!=null&&fh.includes(Nu.name)?"highlight":"inactive":tc[Fu.id]="active"}),Ca.current.setElementState(ic),Ca.current.setElementState(tc)}catch(ic){}}};return Ja.createElement(vt.Z,{spinning:rf},Ja.createElement("div",{ref:so,className:"h-screen flex flex-col",style:{background:"#010A23",height:"100%"}},Ja.createElement("div",{className:"relative w-full"},Ja.createElement("div",{className:"flex w-full px-40px-rem pt-24px-rem absolute gap-20px-rem",style:{left:0,top:0,justifyContent:"start",zIndex:1}},Ja.createElement("span",{className:Hc.tupugx,onClick:()=>{wr(),localStorage.setItem("tpuuid",An)}},Ja.createElement("img",{src:Wl+"/images/tpgx.svg",style:{marginRight:"10rem",width:"16rem"}}),"\u56FE\u8C31\u5173\u7CFB"),Ja.createElement("div",{className:Hc.autocomp},Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement(Wt.Z,{className:Hc.autocompwidth,options:xl,popupClassName:Hc.autopop,getPopupContainer:()=>so.current,value:_l,onSelect:(bs,Nu)=>{var ic;if(ts(va.find(tc=>tc.id===bs).name),oa(va.find(tc=>tc.id===bs)),Yo(!0),Ks){di.current.selectall(bs);return}if(_s)di.current.selectall(bs);else{let tc=Ca.current.getElementDataByState("node","selected");(tc==null?void 0:tc.length)>0&&Ca.current.setElementState((ic=tc==null?void 0:tc[0])==null?void 0:ic.id,[""]),Ca.current.setElementState(bs,["selected"])}},onChange:bs=>{ts(bs)},onSearch:bs=>{Xo(()=>{var Nu,ic,tc;return xf==="\u5168\u90E8"?(Nu=va==null?void 0:va.filter(Fu=>Fu.name.includes(bs)))==null?void 0:Nu.map(Fu=>({label:Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement("span",{style:{marginRight:"10rem",height:"20rem",lineHeight:"20rem",padding:"0rem 6rem",color:"#fff",fontSize:"12rem",background:"#1890FF",borderRadius:"2rem"}},Fu==null?void 0:Fu.nodeType)," ",Ja.createElement("div",{style:{color:"#fff"},dangerouslySetInnerHTML:{__html:Fu==null?void 0:Fu.name.replaceAll(bs,`${bs}`)}})),value:Fu==null?void 0:Fu.id})):(tc=(ic=va==null?void 0:va.filter(Fu=>{var bh;return(bh=Fu==null?void 0:Fu.tags)==null?void 0:bh.find(fh=>fh.name===xf)}))==null?void 0:ic.filter(Fu=>Fu.name.includes(bs)))==null?void 0:tc.map(Fu=>({label:Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement("span",{style:{marginRight:"10rem",height:"20rem",padding:"2rem 6rem",color:"#fff",fontSize:"12rem",background:"#1890FF",borderRadius:"2rem"}},Fu==null?void 0:Fu.nodeType)," ",Ja.createElement("div",{style:{color:"#fff"},dangerouslySetInnerHTML:{__html:Fu==null?void 0:Fu.name.replaceAll(bs,`${bs}`)}})),value:Fu==null?void 0:Fu.id}))})}},Ja.createElement(Et.default,{placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22",addonBefore:Ja.createElement(cn.Z,{overlayClassName:Hc.dropdownst,menu:{items:[{label:Ja.createElement("div",{onClick:()=>{ws("\u5168\u90E8"),p0("\u5168\u90E8","")}},"\u5168\u90E8"),key:"1"},...Td==null?void 0:Td.map(bs=>({label:Ja.createElement("div",{onClick:()=>{ws(bs.name),p0("Enter",bs)}},bs==null?void 0:bs.name),key:bs.id}))]}},Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement("div",{className:Hc.textname,style:{width:"60rem"}},xf),Ja.createElement("div",{style:{height:"22rem",background:"linear-gradient( 180deg, rgba(255,255,255,0) 0%, #AEAEAE 52%, rgba(255,255,255,0) 100%)",width:"1rem"}})))})))),Ja.createElement("div",{className:"flex ml-auto",style:{zIndex:"3"}},((aa=Me==null?void 0:Me.detail)==null?void 0:aa.can_managed)&&nf.get("type")==="classrooms"&&Ja.createElement("div",{className:`current flex item-center c-white ${Hc.ChangeBut}`,onClick:()=>{je.history.push(`/knowledgegraph/${Oa==null?void 0:Oa.pathId}/statistics/pathatlas/${An}?type=classrooms&tabs=3`)}},"\u6570\u636E\u7EDF\u8BA1"),((ca=Me==null?void 0:Me.detail)==null?void 0:ca.sync_uuid)&&((Ra=Me==null?void 0:Me.detail)==null?void 0:Ra.sync_uuid)===An&&((Ei=Me==null?void 0:Me.detail)==null?void 0:Ei.can_managed)&&Ja.createElement(Bn.Z,{title:"\u540C\u6B65"},Ja.createElement("img",{className:"current",onClick:(0,ia.debounce)(()=>{Bt.default.confirm({title:"\u63D0\u793A",icon:null,centered:!0,getContainer:()=>so.current,content:"\u8BF7\u786E\u5B9A\u662F\u5426\u5C06\u540C\u6B65\u8BFE\u7A0B\u7AE0\u8282\u5185\u5BB9\uFF0C\u66F4\u65B0\u540E\u539F\u6709\u77E5\u8BC6\u56FE\u8C31\u5185\u5BB9\u5C06\u88AB\u8986\u76D6\uFF0C\u8986\u76D6\u540E\u53EF\u5728\u7248\u672C\u7BA1\u7406\u4E2D\u9009\u62E9\u6062\u590D\u3002",onOk:()=>Fc(void 0,null,function*(){var bs;const Nu=(bs=_t==null?void 0:_t.find(tc=>(tc==null?void 0:tc.uuid)===An))==null?void 0:bs.name;let ic=yield(0,Ot.ZP)("/api/knowledge/v2/sync.json",{method:"post",body:{subject_id:Oa==null?void 0:Oa.pathId,uuid:An,name:Nu}});ic.status===0&&Rt.ZP.info(ic==null?void 0:ic.message)})})},500),src:Ef===1?Wl+"/images/gxxz.png":Wl+"/images/gx.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(1)},style:{width:"40rem",height:"40rem",marginRight:"15rem",marginTop:"5rem"}})),((Si=Me==null?void 0:Me.detail)==null?void 0:Si.can_managed)&&Ja.createElement("div",{className:Hc.hoverone},Ja.createElement("div",{onClick:()=>Fc(void 0,null,function*(){let bs=yield(0,Ot.ZP)("/api/knowledge/v2/backup.json",{method:"POST",body:{subject_id:Oa==null?void 0:Oa.pathId,parentNodeUuid:An}});(bs==null?void 0:bs.status)===0&&Rt.ZP.info("\u56FE\u8C31\u4FDD\u5B58\u6210\u529F")})},Ja.createElement("img",{src:Ef===2?Wl+"/images/bcbbxz.png":Wl+"/images/bcbb.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(2)}}),Ja.createElement("div",{className:Hc.name},"\u4FDD\u5B58\u7248\u672C")),Ja.createElement("div",{onClick:()=>Fc(void 0,null,function*(){Pc.page=1,Pc.limit=10;let bs=yield(0,Ot.ZP)("/api/knowledge/v2/knowledge_histories.json",{mehtod:"get",params:Wd({subject_id:Oa==null?void 0:Oa.pathId,nodeUuid:An},Pc)});Rf(Pc),(bs==null?void 0:bs.status)===0&&(Bd(!0),md(bs))})},Ja.createElement("img",{src:Ef===3?Wl+"/images/qhbbxz.png":Wl+"/images/qhbb.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(3)},className:Hc.img}),Ja.createElement("div",{className:Hc.name},"\u5207\u6362\u7248\u672C"))),((ba=Me==null?void 0:Me.detail)==null?void 0:ba.can_managed)&&Ja.createElement(Bn.Z,{title:"\u521B\u5EFA\u77E5\u8BC6\u56FE\u8C31"},Ja.createElement("div",{className:"current flex item-center justify-center c-white",style:{width:"40rem",height:"40rem",marginRight:"15rem",marginTop:"5rem",borderRadius:"50%",background:"#202F4F"},onClick:()=>{Fa.Z.publish("create_a_knowledge_map")}},Ja.createElement("span",{className:"iconfont icon-tianjia4"}))),Ja.createElement("div",{className:Hc.hoverone},Ja.createElement("div",{onClick:()=>{_s=!1,il(!1),Kl(!1),rl(!0),dh(2,!0)}},Ja.createElement("img",{src:Ef===4?Wl+"/images/gxtxz.png":Wl+"/images/gxt.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(4)}}),Ja.createElement("div",{className:Hc.name},"\u5173\u7CFB\u56FE")),Ja.createElement("div",{onClick:()=>{_s=!0,Kl(!1),il(!0)}},Ja.createElement("img",{src:Ef===5?Wl+"/images/zssxz.png":Wl+"/images/zss.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(5)},className:Hc.img}),Ja.createElement("div",{className:Hc.name},"\u77E5\u8BC6\u6811"))),Ja.createElement(Bn.Z,{title:"\u5168\u5C4F"},Ja.createElement("img",{className:"current",onClick:()=>{var bs,Nu,ic,tc;(0,vd.vp)()?(Gr(!1),(0,vd.BU)(),!_s&&Pa?(bs=Ca==null?void 0:Ca.current)==null||bs.fitCenter():(Nu=di==null?void 0:di.current)==null||Nu.fitView()):(Gr(!0),(0,vd.Dj)(so.current),!_s&&Pa?(ic=Ca==null?void 0:Ca.current)==null||ic.fitCenter():(tc=di==null?void 0:di.current)==null||tc.fitView())},src:Ef===6?Wl+"/images/qpxz.png":Wl+"/images/qp.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(6)},style:{width:"40rem",height:"40rem",marginRight:"15rem",marginTop:"5rem"}})),((Sa=Me==null?void 0:Me.detail)==null?void 0:Sa.can_managed)&&Ja.createElement("div",{className:Hc.hoverone,style:{marginRight:"0rem"}},Ja.createElement("div",{onClick:()=>{Hu(!0)}},Ja.createElement("img",{src:Ef===10?Wl+"/images/drxz.png":Wl+"/images/dr.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(10)}}),Ja.createElement("div",{className:Hc.name},"\u5BFC\u5165")),Ja.createElement("div",{onClick:()=>{(0,Xt.FH)("",fn.Z.API_SERVER+`/api/knowledge/v2/export.json?subject_id=${Oa==null?void 0:Oa.pathId}&fileType=xlsx&parentNodeUuid=${An}`)}},Ja.createElement("img",{src:Ef===11?Wl+"/images/dcxz.png":Wl+"/images/dc.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(11)},className:Hc.img}),Ja.createElement("div",{className:Hc.name},"\u5BFC\u51FA")))))),Pa&&!_s&&!Ks&&Ja.createElement("div",{className:"w-full h-screen",style:{opacity:0},ref:zd}),Ja.createElement("div",{id:"myDiagramDiv",className:`w-full ${_s?"h-screen":""}`},_s?Ja.createElement(ms,{ref:di,setzoomsize:af,setshowdetail:Yo,setitems:oa,nodeUuid:An,subject_id:Oa==null?void 0:Oa.pathId}):"",Ks?Ja.createElement(Nd,{ref:di,setzoomsize:af,setshowdetail:Yo,setitems:oa,nodeUuid:An,subject_id:Oa==null?void 0:Oa.pathId}):""),Ja.createElement("div",{className:"flex item-center sticky c-white px-10px-rem",style:{bottom:"30px",zIndex:101}},(va==null?void 0:va.length)>0&&Ja.createElement("div",{className:" flex item-center gap-12px-rem"},(Uo=df.filter(bs=>{var Nu;return(Nu=va==null?void 0:va.map(ic=>ic==null?void 0:ic.colornodeType))==null?void 0:Nu.includes(bs==null?void 0:bs.name)}))==null?void 0:Uo.map(bs=>Ja.createElement("div",{onMouseLeave:()=>U0("Leave",bs),onMouseEnter:()=>U0("Enter",bs),className:"flex item-center current gap-6px-rem"},Ja.createElement("img",{src:bs==null?void 0:bs.img,style:{width:"20rem",height:"20rem"}}),Ja.createElement("span",null,bs==null?void 0:bs.name)))),Ja.createElement("div",{className:"flex item-center ml-auto"},!_s&&!Ks&&Ja.createElement(cn.Z,{overlayClassName:Hc.dropdownst,getPopupContainer:()=>so.current,menu:{items:[{label:Ja.createElement("div",{onClick:()=>{dh()}},"\u5C55\u5F00\u5168\u90E8"),key:"1"},{label:Ja.createElement("div",{onClick:()=>{dh(3)}},"\u5C55\u5F003\u5C42"),key:"2"},{label:Ja.createElement("div",{onClick:()=>{dh(2)}},"\u5C55\u5F002\u5C42"),key:"3"},{label:Ja.createElement("div",{onClick:()=>{dh(1)}},"\u5C55\u5F001\u5C42"),key:"4"},{label:Ja.createElement("div",{onClick:()=>{dh(0)}},"\u6536\u8D77\u5168\u90E8"),key:"5"}]}},Ja.createElement("img",{style:{cursor:"pointer"},onClick:()=>{},src:Ef===7?Wl+"/images/xscjxz.png":Wl+"/images/xscj.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(7)}})),!Ks&&Ja.createElement(Bn.Z,{title:"\u5C45\u4E2D\u663E\u793A"},Ja.createElement("img",{onClick:()=>{rl(!1),dh()},style:{marginLeft:"10rem",cursor:"pointer"},src:Ef===8?Wl+"/images/jzxsxz.png":Wl+"/images/jzxs.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(8)},className:Hc.img})),Ja.createElement("div",{style:{marginLeft:"10rem",background:"#202F4F",borderRadius:"4px",alignItems:"center"}},Ja.createElement("img",{style:{cursor:"pointer"},onClick:()=>{if(Ks){di.current.handleZoom("out");return}_s?(di.current.zoomBy(.9),di.current.getZooms()):(Ca.current.zoomBy(.9),setTimeout(()=>{var bs;af((((bs=Ca==null?void 0:Ca.current)==null?void 0:bs.getZoom())*100).toFixed(0))},300))},src:Ef===9?Wl+"/images/newsxxz.png":Wl+"/images/newsx.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(9)}}),!Ks&&Ja.createElement("span",{style:{display:"inline-flex",width:"46px",justifyContent:"center"},onClick:()=>{}}," ",uh+"%"),Ja.createElement("img",{style:{cursor:"pointer"},onClick:()=>{if(Ks){di.current.handleZoom("in");return}_s?(di.current.zoomBy(1.1),di.current.getZooms()):(Ca.current.zoomBy(1.1),setTimeout(()=>{var bs;af((((bs=Ca==null?void 0:Ca.current)==null?void 0:bs.getZoom())*100).toFixed(0))},300))},src:Ef===12?Wl+"/images/newfdxz.png":Wl+"/images/newfd.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(12)}})))),Ja.createElement(Hs.Z,{tpacti:ra,initdata:Kn,uuid:An,Tabsdatas:_t,setshow:rl,getData:dh,containerRef:so,showdetail:Ea,setshowdetail:Yo,items:Ti}),Ja.createElement(Bt.default,{title:"\u6587\u4EF6\u5BFC\u5165",open:Hl,centered:!0,getContainer:()=>so.current,okButtonProps:{loading:Wc},onCancel:()=>{Hu(!1),Lc([])},onOk:()=>Fc(void 0,null,function*(){var bs,Nu,ic;const tc=new FormData;if(kc.length>0)tc.append("file",kc[0]);else{Rt.ZP.warning("\u8BF7\u9009\u62E9\u6587\u4EF6");return}Gs(!0),tc.append("subject_id",(Oa==null?void 0:Oa.pathId)+""),tc.append("parentNodeUuid",An);let Fu=yield(0,Ot.ZP)("/api/knowledge/v2/import.json",{method:"post",body:tc},!0);Gs(!1),(Fu==null?void 0:Fu.status)===0&&((bs=Fu==null?void 0:Fu.data)!=null&&bs.importErrorFilePath?Bt.default.confirm({icon:null,title:"\u5BFC\u5165\u5931\u8D25",centered:!0,content:Ja.createElement("span",null,"\u68C0\u6D4B\u5230\u672C\u6B21\u5BFC\u5165\u5B58\u5728\u4E0D\u7B26\u5408\u8981\u6C42\u7684\u6570\u636E\uFF0C\u70B9\u51FB\u4E0B\u8F7D",Ja.createElement("a",{href:`${fn.Z.API_SERVER}${(Nu=Fu==null?void 0:Fu.data)==null?void 0:Nu.importErrorFilePath}`,download:"\u5931\u8D25\u6570\u636E.xlsx"},"\u5BFC\u5165\u5931\u8D25\u7684\u6570\u636E"),"\u67E5\u770B")}):(dh(),rl(!1),(ic=Fu==null?void 0:Fu.data)!=null&&ic.has_route?Rt.ZP.info("\u77E5\u8BC6\u56FE\u8C31\u6570\u636E\u5BFC\u5165\u6210\u529F\uFF0C\u4E3A\u4FDD\u8BC1\u5B66\u4E60\u8DEF\u5F84\u7684\u8282\u70B9\u4E0E\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u7ED1\u5B9A\uFF0C\u8BF7\u66F4\u65B0\u5B66\u4E60\u8DEF\u5F84"):Rt.ZP.info("\u5BFC\u5165\u6210\u529F"),Lc([]),oa({}),Hu(!1)))})},(va==null?void 0:va.length)>0&&Ja.createElement("div",{style:{marginBottom:30,color:"#333333"}},"\u68C0\u6D4B\u5F53\u524D\u5DF2\u5B58\u5728\u6570\u636E\uFF0C\u5BFC\u5165\u540E\u539F\u6570\u636E\u5C06\u4F1A\u88AB\u8986\u76D6\uFF0C\u6309\u7167\u6700\u65B0\u5BFC\u5165\u7684\u4E3A\u4E3B\uFF0C\u5982\u9700\u7EE7\u7EED\u5BFC\u5165\uFF0C\u8BF7\u6309\u7167\u4E0B\u65B9\u6B65\u9AA4\u8FDB\u884C"),Ja.createElement("p",{style:{color:"#5F6368"}},"\u6B65\u9AA41\uFF1A",Ja.createElement("span",{style:{color:"#000000"}},"\u4E0B\u8F7D"),Ja.createElement("a",{href:`${fn.Z.API_SERVER}/api/knowledge/v2/down_template.json`,download:"\u6A21\u7248.xlsx"},"\u77E5\u8BC6\u56FE\u8C31\u5BFC\u5165\u6A21\u7248")),Ja.createElement(Lr.Z,null,Ja.createElement(Aa.Z,{style:{color:"#5F6368"}},"\u6B65\u9AA42\uFF1A",Ja.createElement("span",{style:{color:"#000000"}},"\u4E0A\u4F20\u586B\u5199\u597D\u7684\u300A\u77E5\u8BC6\u56FE\u8C31\u5BFC\u5165\u6A21\u7248\u300B"))),Ja.createElement(Lr.Z,{style:{marginTop:10,marginLeft:50}},Ja.createElement(Nn.default,Wd({},wp),Ja.createElement("span",{style:{padding:"0px 16px",color:"#1b8565",cursor:"pointer",height:32,alignItems:"center",display:"inline-flex",borderRadius:2,border:"1px solid #1b8565",background:"#1b8565 linear-gradient(180deg, #FFFFFF 0%, #F6F7F9 100%)",boxShadow:"0px 2px 4px 0px #E0DFE1, inset 0px 1px 3px 0px rgba(255,255,255,0.5)"}},Ja.createElement("i",{style:{fontSize:12,marginRight:6},className:"iconfont icon-tianjiashitixiaojiahao"})," \u9009\u62E9\u6587\u4EF6")))),Ja.createElement(lo.Z,null,Ja.createElement(Ja.Fragment,null,Ja.createElement(Bt.default,{title:"\u7248\u672C\u8BB0\u5F55",centered:!0,width:1200,open:Cd,footer:!1,getContainer:()=>so.current,onCancel:()=>{Bd(!1)}},Ja.createElement(Pn.default,{dataSource:mf==null?void 0:mf.data,pagination:!1,columns:[{title:"\u7248\u672C\u4FDD\u5B58\u65F6\u95F4",dataIndex:"created_at",ellipsis:!0,key:"created_at",render:(bs,Nu)=>Ja.createElement("div",null,Ja.createElement("span",null,bs),(Nu==null?void 0:Nu.is_now_version)&&Ja.createElement("span",{style:{background:"#2BAC8E",padding:"4rem",fontSize:"12rem",marginLeft:"5rem",color:"#fff"}},"\u5F53\u524D\u4F7F\u7528\u7248\u672C"))},{title:"\u4FDD\u5B58\u4EBA",dataIndex:"username",ellipsis:!0,key:"username"},{title:"\u64CD\u4F5C",dataIndex:"name",ellipsis:!0,key:"name",render:(bs,Nu)=>Ja.createElement("div",null,Ja.createElement("span",{style:{color:"#1B8565",marginRight:"30rem",cursor:"pointer"},onClick:()=>Fc(void 0,null,function*(){var ic,tc;let Fu=yield(0,Ot.ZP)(`${Nu==null?void 0:Nu.url}`,{method:"get"});(Fu==null?void 0:Fu.status)===0&&((tc=(ic=Fu==null?void 0:Fu.data)==null?void 0:ic.nodes)==null?void 0:tc.length)>0&&Ss(Fu==null?void 0:Fu.data)})},"\u67E5\u770B"),Ja.createElement("span",{onClick:()=>Fc(void 0,null,function*(){if(Nu!=null&&Nu.is_now_version)return;let ic=yield(0,Ot.ZP)("/api/knowledge/v2/restore.json",{method:"post",body:{subject_id:Oa==null?void 0:Oa.pathId,backupFilePath:Nu==null?void 0:Nu.backupFilePath}});(ic==null?void 0:ic.status)===0&&(dh(),Bd(!1),rl(!1),Rt.ZP.info("\u5207\u6362\u6210\u529F"))}),style:{color:Nu!=null&&Nu.is_now_version?"#999999":"#1B8565",cursor:"pointer"}},"\u5207\u6362\u81F3\u5F53\u524D\u7248\u672C"))}]}),Ja.createElement(sr.Z,{hideOnSinglePage:!0,style:{marginTop:"20rem"},pageSize:Pc.limit,total:mf==null?void 0:mf.total_count,current:Pc.page,onChange:(bs,Nu)=>Fc(void 0,null,function*(){Pc.page=bs,Pc.limit=Nu,Rf(Pc);let ic=yield(0,Ot.ZP)("/api/knowledge/v2/knowledge_histories.json",{mehtod:"get",params:Wd({subject_id:Oa==null?void 0:Oa.pathId,nodeUuid:An},Pc)});(ic==null?void 0:ic.status)===0&&(Bd(!0),md(ic))})})),Ja.createElement(Bt.default,{open:((Ua=Eo==null?void 0:Eo.nodes)==null?void 0:Ua.length)>0,title:"\u5386\u53F2\u56FE\u8C31",width:"1200rem",footer:null,getContainer:()=>so.current,destroyOnClose:!0,onCancel:()=>{Ss({})}},Ja.createElement(_f,{datas:Eo}))))),Ja.createElement(uc,null))};var Vh=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(wh),Pf={wrap:"wrap___HuFFi",add:"add___GrP2R",dimensionalBall:"dimensionalBall___flm6B",archer:"archer___biVqC",svg:"svg___hXxGw",modal:"modal___DR9M_",mHead:"mHead___I923K",form:"form___W2fTe",mType:"mType___hoISa",listItem:"listItem___JCZwd",tupugx:"tupugx___iCNXk"},qd={flex_box_center:"flex_box_center___aEG4A",flex_space_between:"flex_space_between___O70yE",flex_box_vertical_center:"flex_box_vertical_center___rEvY1",flex_box_center_end:"flex_box_center_end___Xp3ui",flex_box_column:"flex_box_column___McZmY",largeBall:"largeBall___SbxSR",middleBall:"middleBall___eKLzh",smallBall:"smallBall___r7xv5",largeBallDish:"largeBallDish___EeTGm",middleBallDish:"middleBallDish___hca4h",smallBallDish:"smallBallDish___rrHxf",smallBallGather:"smallBallGather___hHHqa",box:"box___yWjPn",spectrum:"spectrum___r9a7p",pedestal:"pedestal___Grjvz",spectrumHover:"spectrumHover___OibBM",pedestalHover:"pedestalHover___EcKUJ"};const $u="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjkxcHgiIGhlaWdodD0iMTk0cHgiIHZpZXdCb3g9IjAgMCAyOTEgMTk0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA2MSAoODk1ODEpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPuWfuuW6pzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMjcuNzcyODY0MyUiIHkxPSI0My4xNzgwNjE3JSIgeDI9Ijk3LjIyMjIyMjIlIiB5Mj0iNTAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzMTdDRDMiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3MkE5NSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjE0LjI3MTI2ODMlIiB5MT0iMzEuNjQ0NzI5NyUiIHgyPSIxMDAlIiB5Mj0iNzMuMTEyMDA3OCUiIGlkPSJsaW5lYXJHcmFkaWVudC0yIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3NzFEQiIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjg0REIwIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMTAwJSIgeTE9IjM1LjA0MTMwMTklIiB4Mj0iMCUiIHkyPSI2NS41NDY3MzEzJSIgaWQ9ImxpbmVhckdyYWRpZW50LTMiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzA2NkI0IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxNDM4OTQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIyNy43NzI4NjQzJSIgeTE9IjQzLjE1NTA2NzMlIiB4Mj0iOTcuMjIyMjIyMiUiIHkyPSI1MCUiIGlkPSJsaW5lYXJHcmFkaWVudC00Ij4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzMxN0NEMyIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjcyQTk1IiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMCUiIHkxPSI1MCUiIHgyPSI1MCUiIHkyPSI2NC4yMTc0OTQ1JSIgaWQ9ImxpbmVhckdyYWRpZW50LTUiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMkY3MEM5IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM1QjVGRkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtNiIgcG9pbnRzPSIxNDQuNzQ1OSAxNi40Njc5NzAxIDI2MC4xMzI5MzUgNzIuOTI3OTU1NiAxNDYuMTg4MjM4IDEzOC43NTc4OTYgMzAuODAxMjAzMyA3Mi4yMDcxODk5Ij48L3BvbHlnb24+CiAgICAgICAgPGZpbHRlciB4PSItMS41JSIgeT0iLTIuOSUiIHdpZHRoPSIxMDMuMSUiIGhlaWdodD0iMTA1LjclIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItNyI+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dCbHVySW5uZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSI1IiBpbj0ic2hhZG93Qmx1cklubmVyMSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRJbm5lcjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93T2Zmc2V0SW5uZXIxIiBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIgcmVzdWx0PSJzaGFkb3dJbm5lcklubmVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAuNzk2ODM2ODkgICAwIDAgMCAwIDAuOTc0NjYwMTA4ICAgMCAwIDAgMCAxICAwIDAgMCAwLjUgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93SW5uZXJJbm5lcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSLpobXpnaItMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IjA4MjAtM0Tlm77osLEt5YiH5Zu+VjQuMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQ0OS4wMDAwMDAsIC0xMzQ0LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i5Z+65bqnIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NDkuMDAwMDAwLCAxMzQ0LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IuefqeW9oiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgb3BhY2l0eT0iMC4zMjA4NzA1MzYiIHBvaW50cz0iMTQ0LjU4NDkwNiAzOC45MDI0MTk0IDI5MSAxMTAuNDY0MzA1IDE0Ni40MTUwOTQgMTkzLjkwMjQxOSAwIDEwOS41NTA3NDkiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSLnn6nlvaIiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMikiIHBvaW50cz0iLTcuNTMxNzUzZS0xMyA3MC43NTEyNzkgMTQ2LjA3Njk5NCAxNTUuMjI1ODY2IDE0Ni4wNzY5OTQgMTc3Ljc5MzA4NSAtNy41MzE3NTNlLTEzIDkzLjMxODQ5NzMiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSLnn6nlvaIiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMykiIHBvaW50cz0iMTQ2LjA3Njk5NCAxNTUuMjI1ODY2IDI5MC45MzQxMzggNzEuNjY2MTY2MiAyOTAuOTM0MTM4IDk0LjIzMzM4NDUgMTQ2LjA3Njk5NCAxNzcuNzkzMDg1Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTQpIiBwb2ludHM9IjE0NC41NTIxODIgLTUuODk5OTA5NzdlLTEzIDI5MC45MzQxMzggNzEuNjY2MTY2MiAxNDYuMzgxOTU2IDE1NS4yMjU4NjYgLTUuNjg0MzQxODllLTEzIDcwLjc1MTI3OSI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgPGcgaWQ9IuefqeW9oiI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTUpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHhsaW5rOmhyZWY9IiNwYXRoLTYiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDx1c2UgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMSIgZmlsdGVyPSJ1cmwoI2ZpbHRlci03KSIgeGxpbms6aHJlZj0iI3BhdGgtNiI+PC91c2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==",sl="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjk1cHgiIGhlaWdodD0iMTk3cHgiIHZpZXdCb3g9IjAgMCAyOTUgMTk3IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA2MSAoODk1ODEpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPuW6leW6p+mAieS4rTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMjcuNzcyODY0MyUiIHkxPSI0My4xNTUwNjczJSIgeDI9Ijk3LjIyMjIyMjIlIiB5Mj0iNTAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzMTdDRDMiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3MkE5NSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjE0LjI3MTI2ODMlIiB5MT0iMzEuNjQ0NzI5NyUiIHgyPSIxMDAlIiB5Mj0iNzMuMTEyMDA3OCUiIGlkPSJsaW5lYXJHcmFkaWVudC0yIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3NzFEQiIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjg0REIwIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMTAwJSIgeTE9IjM1LjA0MTMwMTklIiB4Mj0iMCUiIHkyPSI2NS41NDY3MzEzJSIgaWQ9ImxpbmVhckdyYWRpZW50LTMiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzA2NkI0IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxNDM4OTQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSI2LjA2MjU2MyUiIHgyPSI1MCUiIHkyPSI2NC40MjMxOTgxJSIgaWQ9ImxpbmVhckdyYWRpZW50LTQiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMkY3MEM5IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyREUxRkQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtNSIgcG9pbnRzPSIxNDYuMzI3NiAxNi42NDc5MjI2IDI2Mi45NzU1MTcgNzMuNzI0ODcwMiAxNDcuNzg1Njk5IDE0MC4yNzQxNjIgMzEuMTM3NzgxMSA3Mi45OTYyMjgzIj48L3BvbHlnb24+CiAgICAgICAgPGZpbHRlciB4PSItMS4xJSIgeT0iLTIuMCUiIHdpZHRoPSIxMDIuMiUiIGhlaWdodD0iMTA0LjAlIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItNiI+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjAuNSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd0JsdXJJbm5lcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjQiIGluPSJzaGFkb3dCbHVySW5uZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldElubmVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluPSJzaGFkb3dPZmZzZXRJbm5lcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIiByZXN1bHQ9InNoYWRvd0lubmVySW5uZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMC43OTY4MzY4OSAgIDAgMCAwIDAgMC45NzQ2NjAxMDggICAwIDAgMCAwIDEgIDAgMCAwIDAuNSAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dJbm5lcklubmVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iMDgyMC0zROWbvuiwsS3liIflm75WNC4wIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTQ3MS4wMDAwMDAsIC0xMzU0LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i5bqV5bqn6YCJ5LitIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDcxLjAwMDAwMCwgMTM1NC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QtMyI+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IuefqeW9oiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgb3BhY2l0eT0iMC4zMjA4NzA1MzYiIHBvaW50cz0iMTQ2LjEzMTc2NSAzOS40MTkzNDQyIDI5NC4xMTMyOTggMTExLjg2ODYzNyAxNDcuOTgxNTM0IDE5Ni4zNDE0MjkgLTEuNDIxMDg1NDdlLTEzIDExMC45NDM3NTIiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIiBwb2ludHM9IjEuMTM2ODY4MzhlLTEzIDcxLjUyNDQwOCAxNDcuNjczMjM5IDE1Ni45MjIwODUgMTQ3LjY3MzIzOSAxNzkuNzM1OTA1IDEuMTM2ODY4MzhlLTEzIDk0LjMzODIyNzgiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTMpIiBwb2ludHM9IjE0Ny42NzMyMzkgMTU2LjkyMjA4NSAyOTQuMTEzMjk4IDcyLjQ0OTI5MjYgMjk0LjExMzI5OCA5NS4yNjMxMTI0IDE0Ny42NzMyMzkgMTc5LjczNTkwNSI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSLnn6nlvaIiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiIHBvaW50cz0iMTQ2LjEzMTc2NSAtNC43OTMzNDg4M2UtMTMgMjk0LjExMzI5OCA3Mi40NDkyOTI2IDE0Ny45ODE1MzQgMTU2LjkyMjA4NSAtMS40MjEwODU0N2UtMTMgNzEuNTI0NDA4Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IuefqeW9oiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC00KSIgZmlsbC1ydWxlPSJldmVub2RkIiB4bGluazpocmVmPSIjcGF0aC01Ij48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTYpIiB4bGluazpocmVmPSIjcGF0aC01Ij48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==",dl="data:image/png;base64,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",Wu="data:image/png;base64,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";var Qc=Object.defineProperty,Gf=Object.defineProperties,Ed=Object.getOwnPropertyDescriptors,ff=Object.getOwnPropertySymbols,Sf=Object.prototype.hasOwnProperty,Fh=Object.prototype.propertyIsEnumerable,nh=(Oe,Fe,Me)=>Fe in Oe?Qc(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,kd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Sf.call(Fe,Me)&&nh(Oe,Me,Fe[Me]);if(ff)for(var Me of ff(Fe))Fh.call(Fe,Me)&&nh(Oe,Me,Fe[Me]);return Oe},su=(Oe,Fe)=>Gf(Oe,Ed(Fe)),y0=({className:Oe,style:Fe={},title:Me="",childNode:jt=[],knowledgeNode:Mn=[]})=>{const Tr="rem",Fr=[{position:"absolute",zIndex:2,bottom:112,left:44},{position:"absolute",zIndex:3,bottom:94,left:74},{position:"absolute",zIndex:4,bottom:78,left:104},{position:"absolute",zIndex:5,bottom:66,left:136},{position:"absolute",zIndex:6,bottom:82,left:168},{position:"absolute",zIndex:7,bottom:104,left:202},{position:"absolute",zIndex:8,bottom:122,left:166}],An=[{position:"absolute",zIndex:10,bottom:166,left:66},{position:"absolute",zIndex:11,bottom:148,left:120},{position:"absolute",zIndex:12,bottom:150,left:180},{position:"absolute",zIndex:13,bottom:188,left:164},{position:"absolute",zIndex:14,bottom:192,left:114}],_t=(qi="")=>{if(!qi)return"-";let aa=3;return/[\u4e00-\u9fff]/.test(qi)||(aa=7),(qi==null?void 0:qi.length)>=aa?(qi==null?void 0:qi.slice(0,aa-1))+"...":qi},Kn=()=>(Array.isArray(Mn)?Mn.slice(0,7):Array(7).fill("\u77E5\u8BC6\u70B9")).map((ca,Ra)=>{const Ei=Fr[Ra],Si=su(kd({},Ei),{bottom:`${Ei.bottom}${Tr}`,left:`${Ei.left}${Tr}`});return se.createElement("div",{key:Ra,style:Si,className:qd.smallBallGather},se.createElement("div",{className:qd.smallBall},se.createElement("b",null,_t(ca))),se.createElement("div",{className:qd.smallBallDish}))}),wr=()=>(Array.isArray(jt)?jt.slice(0,5):Array(5).fill("\u5B50\u8282\u70B9")).map((ca,Ra)=>{const Ei=An[Ra],Si=su(kd({},Ei),{bottom:`${Ei.bottom}${Tr}`,left:`${Ei.left}${Tr}`});return se.createElement("div",{key:Ra,style:Si,className:qd.middleBall},se.createElement("div",null,se.createElement("b",null,_t(ca))))}),ra={position:"absolute",zIndex:1,bottom:0,width:"100%"};return se.createElement("div",{className:hr()(qd.box,Oe),style:Fe},se.createElement("img",{className:qd.pedestal,style:ra,src:$u}),se.createElement("img",{className:qd.pedestalHover,style:ra,src:sl}),Kn(),se.createElement("div",{style:{position:"absolute",zIndex:9,bottom:138+Tr,left:"50%",transform:"translateX(-50%)"},className:qd.middleBallDish}),wr(),se.createElement("div",{style:{position:"absolute",zIndex:15,bottom:214+Tr,left:"50%",transform:"translateX(-50%)"},className:qd.largeBallDish}),se.createElement("div",{style:{position:"absolute",zIndex:16,bottom:234+Tr,left:120+Tr},className:qd.largeBall},se.createElement("b",null,_t(Me))),se.createElement("img",{style:su(kd({},ra),{zIndex:17}),className:qd.spectrum,src:dl}),se.createElement("img",{style:su(kd({},ra),{zIndex:17}),className:qd.spectrumHover,src:Wu}),se.createElement("div",{title:Me,style:{position:"absolute",zIndex:18,bottom:304+Tr,left:0,fontSize:24+Tr,width:"100%",textAlign:"center"},className:"c-white blod"},(0,Xt.Pq)(Me,9)))},kf=Object.defineProperty,rh=Object.defineProperties,ih=Object.getOwnPropertyDescriptors,o0=Object.getOwnPropertySymbols,b0=Object.prototype.hasOwnProperty,s0=Object.prototype.propertyIsEnumerable,Ch=(Oe,Fe,Me)=>Fe in Oe?kf(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,x0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))b0.call(Fe,Me)&&Ch(Oe,Me,Fe[Me]);if(o0)for(var Me of o0(Fe))s0.call(Fe,Me)&&Ch(Oe,Me,Fe[Me]);return Oe},l0=(Oe,Fe)=>rh(Oe,ih(Fe));function E0(Oe){const Fe=new Map,Me=[];return Oe.nodes.forEach(jt=>{const Mn=l0(x0({},jt.properties),{children:[]});Fe.set(Mn.uuid,Mn)}),Oe.relationships.forEach(jt=>{const Mn=Fe.get(jt.startNodeUuid),Tr=Fe.get(jt.endNodeUuid);Mn&&Tr&&Mn.children.push(Tr)}),Oe.nodes.forEach(jt=>{const Mn=jt.properties;if(!Oe.relationships.some(An=>An.startNodeUuid===Mn.uuid||An.endNodeUuid===Mn.uuid))return;Oe.relationships.some(An=>An.endNodeUuid===Mn.uuid)||Me.push(Fe.get(Mn.uuid))}),Me.length===1?Me[0]:Me}function Qh(Oe,Fe){const Me=new Set,jt=[];return Oe.forEach(Mn=>{const Tr=Mn[Fe[0]],Fr=Mn[Fe[1]];if(!Tr||!Fr)return;const An=`${Tr}-${Fr}`,_t=`${Fr}-${Tr}`;Tr!==Fr&&!Me.has(An)&&!Me.has(_t)&&(jt.push(Mn),Me.add(An),Me.add(_t))}),jt}const Yh=(Oe,Fe)=>{const Me=Oe==null?void 0:Oe.map(Mn=>{const Tr=Fr=>{let An=[Fr.uuid];return Fr.children.forEach(_t=>{An=An.concat(Tr(_t))}),An};return Tr(Mn)});return Fe.map(Mn=>{let Tr,Fr;return Me.forEach(An=>{An.includes(Mn.startNodeUuid)&&(Tr=An[0]),An.includes(Mn.endNodeUuid)&&(Fr=An[0])}),l0(x0({},Mn),{firstStartNodeUuid:Tr,firstEndNodeUuid:Fr})})};var Bu=he(59301),w0=({data:Oe})=>{const Fe=(0,se.useRef)(),Me=(0,se.useRef)();function jt(Fr,An,_t){let Kn,wr;switch(An){case"top":Kn=Math.ceil(Fr.left+Fr.width/2-_t.left),wr=Math.ceil(Fr.top-_t.top);break;case"bottom":Kn=Math.ceil(Fr.left+Fr.width/2-_t.left),wr=Math.ceil(Fr.bottom-_t.top+15);break;case"left":Kn=Math.ceil(Fr.left-_t.left-10),wr=Math.ceil(Fr.top+Fr.height/2-_t.top+80);break;case"right":Kn=Math.ceil(Fr.right-_t.left+10),wr=Math.ceil(Fr.top+Fr.height/2-_t.top+50);break}return{x:Kn,y:wr}}function Mn(Fr,An){const _t={x:parseInt(Fr.left+Fr.width/2),y:parseInt(Fr.top+Fr.height/2)},Kn={x:parseInt(An.left+An.width/2),y:parseInt(An.top+An.height/2)},wr=Kn.x-_t.x,ra=Kn.y-_t.y;let qi,aa;return Math.abs(wr)>Math.abs(ra)?(qi=wr>0?"right":"left",aa=wr>0?"left":"right"):(qi=ra>0?"bottom":"top",aa=ra>0?"top":"bottom"),{startEdge:qi,endEdge:aa}}function Tr(){let Fr=Oe;if(!(Fr!=null&&Fr.length))return;const An=document.getElementById("lineContainer"),_t=document.getElementById("parentContainer").getBoundingClientRect();An.querySelectorAll("line").forEach(Kn=>Kn.remove()),Fr.forEach(Kn=>{const wr=document.getElementById(Kn.from),ra=document.getElementById(Kn.to),qi=wr.getBoundingClientRect(),aa=ra.getBoundingClientRect();let{startEdge:ca,endEdge:Ra}=Kn;if(!ca||!Ra){const Sa=Mn(qi,aa);ca=ca||Sa.startEdge,Ra=Ra||Sa.endEdge}const Ei=jt(qi,ca,_t),Si=jt(aa,Ra,_t),ba=document.createElementNS("http://www.w3.org/2000/svg","line");if(ba.setAttribute("x1",Ei.x+Kn.offsetStart.x),ba.setAttribute("y1",Ei.y+Kn.offsetStart.y),ba.setAttribute("x2",Ei.x+Kn.offsetStart.x+.01),ba.setAttribute("y2",Ei.y+Kn.offsetStart.y),ba.setAttribute("stroke",`url(#${Kn.gradient})`),ba.setAttribute("stroke-width","2"),Kn.dashed&&ba.setAttribute("stroke-dasharray","5, 5"),Kn.arrow==="start"?ba.setAttribute("marker-start",Kn!=null&&Kn.animated?"url(#triangle-start-h)":"url(#triangle-start)"):Kn.arrow==="end"?ba.setAttribute("marker-end",Kn!=null&&Kn.animated?"url(#triangle-end-h)":"url(#triangle-end)"):Kn.arrow==="both"&&(ba.setAttribute("marker-start",Kn!=null&&Kn.animated?"url(#triangle-start-h)":"url(#triangle-start)"),ba.setAttribute("marker-end",Kn!=null&&Kn.animated?"url(#triangle-end-h)":"url(#triangle-end)")),Kn.animated){ba.classList.add("dashed-line");const Sa=document.createElementNS("http://www.w3.org/2000/svg","animate");Sa.setAttribute("attributeName","x2"),Sa.setAttribute("from",Ei.x+Kn.offsetStart.x),Sa.setAttribute("to",Si.x+Kn.offsetEnd.x+.01),Sa.setAttribute("dur","1s"),Sa.setAttribute("fill","freeze"),ba.appendChild(Sa);const Uo=document.createElementNS("http://www.w3.org/2000/svg","animate");Uo.setAttribute("attributeName","y2"),Uo.setAttribute("from",Ei.y+Kn.offsetStart.y),Uo.setAttribute("to",Si.y+Kn.offsetEnd.y),Uo.setAttribute("dur","1s"),Uo.setAttribute("fill","freeze"),ba.appendChild(Uo)}else ba.setAttribute("x2",Si.x+Kn.offsetEnd.x+.01),ba.setAttribute("y2",Si.y+Kn.offsetEnd.y);An.appendChild(ba)})}return(0,se.useEffect)(()=>{Oe!=null&&Oe.length&&Tr()},[Oe]),(0,se.useEffect)(()=>(window.addEventListener("resize",()=>Tr),window.addEventListener("scroll",()=>Tr),()=>{window.removeEventListener("resize",Tr),window.removeEventListener("scroll",Tr)}),[]),Bu.createElement(Bu.Fragment,null,Bu.createElement("svg",{id:"lineContainer",style:{width:"100%",height:"100%",position:"absolute",top:0,left:0}}),Bu.createElement("svg",null,Bu.createElement("defs",null,Bu.createElement("linearGradient",{id:"gradient1",x1:"0%",y1:"0%",x2:"0%",y2:"100%"},Bu.createElement("stop",{"stop-color":"#42BECD",offset:"0%"}),Bu.createElement("stop",{"stop-color":"#3C30C6",offset:"100%"})),Bu.createElement("linearGradient",{id:"gradient2",x1:"0%",y1:"0%",x2:"100%",y2:"100%"},Bu.createElement("stop",{"stop-color":"#2DE1FD",offset:"0%"}),Bu.createElement("stop",{"stop-color":"#C7FFB0",offset:"100%"})),Bu.createElement("marker",{id:"triangle-start",viewBox:"0 0 10 10",refX:"2",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 10 0 L 0 5 L 10 10 z",fill:"url(#gradient1)"})),Bu.createElement("marker",{id:"triangle-end",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"url(#gradient1)"})),Bu.createElement("marker",{id:"triangle-start-h",viewBox:"0 0 10 10",refX:"2",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 10 0 L 0 5 L 10 10 z",fill:"url(#gradient2)"})),Bu.createElement("marker",{id:"triangle-end-h",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"url(#gradient2)"})))))},ah=he(61485),cp=Object.defineProperty,u0=Object.defineProperties,dp=Object.getOwnPropertyDescriptors,Oc=Object.getOwnPropertySymbols,oh=Object.prototype.hasOwnProperty,vh=Object.prototype.propertyIsEnumerable,Lf=(Oe,Fe,Me)=>Fe in Oe?cp(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,hf=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))oh.call(Fe,Me)&&Lf(Oe,Me,Fe[Me]);if(Oc)for(var Me of Oc(Fe))vh.call(Fe,Me)&&Lf(Oe,Me,Fe[Me]);return Oe},ee=(Oe,Fe)=>u0(Oe,dp(Fe)),ae=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())}),ce=({subjectId:Oe,setActivated:Fe,onAddSuccess:Me,settpacti:jt})=>{const Mn=(0,je.useSelector)(Gr=>Gr),{pathsDetail:{detail:Tr={}}}=Mn,[Fr]=Ze.default.useForm(),[An,_t]=(0,se.useState)(""),[Kn,wr]=(0,se.useState)(!1),[ra,qi]=(0,se.useState)(!0),[aa,ca]=(0,se.useState)(!1),[Ra,Ei]=(0,se.useState)([]),[Si,ba]=(0,se.useState)([]),[Sa,Uo]=(0,se.useState)(null),[Ua,Oa]=(0,se.useState)(),xo=(0,se.useRef)(),di=(0,se.useRef)();let Ca=(0,se.useRef)().current,va=(0,se.useRef)().current,ro=(0,se.useRef)(!1).current;const Pa=Tr==null?void 0:Tr.can_managed;(0,se.useEffect)(()=>{Oe&&rl()},[Oe]);const rl=()=>ae(void 0,null,function*(){var Gr,so,Ti,oa,Ea;qi(!0);const Yo=yield(0,Ot.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{depth:-1,subject_id:Oe}});if(Yo.status===0){_t((oa=(Ti=(so=(Gr=Yo==null?void 0:Yo.data)==null?void 0:Gr.nodes)==null?void 0:so[0])==null?void 0:Ti.properties)==null?void 0:oa.uuid);const Eo=((Ea=Yo==null?void 0:Yo.data)==null?void 0:Ea.relationships)||[];let Ss=[],_s=[];Eo==null||Eo.forEach(Hl=>{["\u5173\u8054"].includes(Hl.type)?Ss.push(Hl):["\u5305\u542B"].includes(Hl.type)&&_s.push(Hl)}),Ss=Qh(Ss,["startNodeUuid","endNodeUuid"]);const il=ee(hf({},Yo==null?void 0:Yo.data),{relationships:_s}),Ks=E0(il);let Kl=Yh((Ks==null?void 0:Ks.children)||[],Ss);console.log(Kl,3),Kl=Qh(Kl,["firstStartNodeUuid","firstEndNodeUuid"]),Ei((Ks==null?void 0:Ks.children)||[]),ba(Kl),console.log(Kl,Ks==null?void 0:Ks.children,222)}qi(!1)});(0,se.useEffect)(()=>{Si!=null&&Si.length&&Oa(Si.map(Gr=>({from:Gr.firstStartNodeUuid,to:Gr.firstEndNodeUuid,animated:!1,dashed:!0,arrow:"both",offsetStart:{x:0,y:0},offsetEnd:{x:0,y:1},gradient:"gradient1"})))},[Si]),(0,se.useEffect)(()=>{var Gr;Ua!=null&&Ua.length&&((Gr=Ua==null?void 0:Ua.map)==null||Gr.call(Ua,so=>{so.animated=so.from===Sa||so.to===Sa,so.gradient=so.from===Sa||so.to===Sa?"gradient2":"gradient1"}),Oa([...Ua]))},[Sa]);function xl(Gr){var so,Ti;if(!ro)return;const oa=Gr.pageY-Ca;(Ti=(so=xo.current)==null?void 0:so.scrollTo)==null||Ti.call(so,0,va-oa)}function Xo(Gr){var so;ro=!0,Ca=Gr.pageY,va=((so=xo.current)==null?void 0:so.scrollTop)||0}function _l(Gr){ro=!1}(0,se.useEffect)(()=>(document.addEventListener("mousedown",Xo),document.addEventListener("mousemove",xl),document.addEventListener("mouseup",_l),()=>{document.removeEventListener("mouseup",_l),document.removeEventListener("mousemove",xl),document.removeEventListener("mousedown",Xo)}),[]);const ts=Gr=>ae(void 0,null,function*(){const{nodeType:so,description:Ti,name:oa,tags:Ea}=Gr;ca(!0);const Yo=yield(0,Ot.ZP)("/api/knowledge/v2/add_node.json",{method:"POST",body:{label:"\u56FE\u8C31",subject_id:Oe,properties:{description:Ti,rootNodeUuid:An,name:oa,nodeType:so[0],tags:(Ea==null?void 0:Ea.join("\uFF0C"))||"",color:"1"},relationships:[{startNodeUuid:An,type:"\u5305\u542B"}]}});(Yo==null?void 0:Yo.status)===0&&(wr(!1),rl(),Me()),ca(!1)}),ko=()=>{const Gr=[],so=Ra==null?void 0:Ra.map((oa,Ea)=>{var Yo;let Eo;const Ss=Ea+1,_s=Gr.length-3,il=Gr[_s];Ss%3===1&&(Eo={top:il!==void 0?`${parseFloat(il==null?void 0:il.top)+600}rem`:"100rem",left:"50%",marginLeft:"-146rem"}),Ss%3===2&&(Eo={top:il!==void 0?`${parseFloat(il==null?void 0:il.top)+600}rem`:"380rem",left:0}),Ss%3===0&&(Eo={top:il!==void 0?`${parseFloat(il==null?void 0:il.top)+600}rem`:"380rem",right:0}),Gr.push(Eo);let Ks=[],Kl=(Yo=oa==null?void 0:oa.children)==null?void 0:Yo.map(Hl=>{var Hu;return Hl!=null&&Hl.children&&((Hu=Hl==null?void 0:Hl.children)==null||Hu.forEach(Wc=>{Ks.push(Wc.name)})),Hl.name});return Kl.length>5&&(Kl[0]="..."),Ks.length>7&&(Ks[0]="..."),se.createElement("div",{className:Pf.listItem,key:Ea,onMouseEnter:()=>Uo(oa==null?void 0:oa.uuid),onMouseLeave:()=>Uo(null),id:oa==null?void 0:oa.uuid,onClick:()=>{Fe(oa==null?void 0:oa.uuid),jt(oa==null?void 0:oa.uuid)},style:hf({position:"absolute",zIndex:10},Eo)},se.createElement(y0,{childNode:Kl,knowledgeNode:Ks,title:oa==null?void 0:oa.name}))}),Ti=parseFloat(Gr[Gr.length-1].top)+352+80+"rem";return se.createElement("div",{ref:di,style:{height:Ti}},so)};return se.createElement(lo.Z,null,se.createElement("div",{className:Pf.wrap},ra&&se.createElement(vt.Z,{style:{width:"100%",marginTop:"300rem"},spinning:ra}),!ra&&se.createElement(se.Fragment,null,Pa&&se.createElement("div",{className:Pf.add,onClick:()=>wr(!0)},se.createElement("i",{className:"iconfont icon-tianjiatixing"})),se.createElement("span",{className:Pf.tupugx,onClick:()=>{let Gr=localStorage.getItem("tpuuid");Fe(Gr),jt(Gr)}},"\u8FD4\u56DE"),Ra!=null&&Ra.length?se.createElement("div",{className:Pf.dimensionalBall,ref:xo},se.createElement("div",{className:Pf.archer,id:"parentContainer"},ko(),se.createElement(w0,{data:Ua}))):se.createElement(qa.Z,{text:"\u6682\u65E0\u56FE\u8C31\uFF0C\u7ACB\u5373\u65B0\u5EFA\u4E00\u4E2A\u56FE\u8C31\u5427\uFF5E",textColor:"#fff",buttonText:Pa&&"\u65B0\u5EFA\u56FE\u8C31",onClick:()=>wr(!0)})),se.createElement(Bt.default,{open:Kn,centered:!0,width:"1000rem",okText:"\u4FDD\u5B58",onCancel:()=>wr(!1),cancelText:"\u53D6\u6D88",afterClose:()=>{Fr.resetFields()},confirmLoading:aa,onOk:()=>Fr.submit(),title:"\u65B0\u589E\u77E5\u8BC6\u56FE\u8C31"},se.createElement("div",{className:Pf.modal},se.createElement("div",{className:Pf.mHead},"\u8282\u70B9\u5C5E\u6027"),se.createElement(Ze.default,{form:Fr,scrollToFirstError:!0,layout:"horizontal",colon:!1,size:"large",labelCol:{flex:"110rem"},onFinish:ts,className:Pf.form},se.createElement(Ze.default.Item,{label:"\u56FE\u8C31\u540D\u79F0",name:"name",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u8282\u70B9\u540D\u79F0"},{type:"string",max:60,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},se.createElement(Et.default,{maxLength:60,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),se.createElement(Ze.default.Item,{label:"\u7B80\u4ECB",name:"description",rules:[{type:"string",max:5e3,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},se.createElement(Et.default.TextArea,{maxLength:5e3,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),se.createElement(Ze.default.Item,{className:Pf.mType,label:se.createElement("span",null,"\u56FE\u8C31\u7C7B\u578B ",se.createElement(Bn.Z,{title:"\u5F53\u524D\u77E5\u8BC6\u56FE\u8C31\u7684\u7C7B\u578B\uFF0C\u5982\uFF1A\u5927\u7EB2\u56FE\u8C31\u3001\u80FD\u529B\u56FE\u8C31"},se.createElement(ah.Z,null))),name:"nodeType",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u8282\u70B9\u7C7B\u578B"}]},se.createElement(ot.Z,{subjectId:Oe,type:1})))))))},me={statistics:"statistics___BP4qi",noUnfold:"noUnfold___EpqXR",wrapBox:"wrapBox___TsFlb",scrollBox:"scrollBox___Oh4zJ",content:"content___NRQFH",title:"title___z20Sn",box:"box___k6Eep",left:"left___Gnxfc",right:"right___rNC9V",head:"head___mT3Wl",radio:"radio___sjK3F",active:"active___oX7gd",average:"average___KVA2l",li:"li____NnY1",yellow:"yellow___CCujs",blue:"blue___m_425",lineTitle:"lineTitle___qo6vf",echartsTwo:"echartsTwo___aC24D",echartsThree:"echartsThree___Z2Q2A",unfold:"unfold___VUl4t",select:"select___dM1mS"},Se="data:image/png;base64,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",Qe="data:image/png;base64,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",ct="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAsCAYAAAA5KtvpAAAAAXNSR0IArs4c6QAABFJJREFUaEPtml9MW1Ucxz+nlxbaUkYvYjdENG7RiEg6jNGQ+aIx08SE6IvZxGS+qGGPPjnj2+J8MIuJMVk00Zgg0zc1Rpm+Gf+M+GdkZKhT4gyMjnWllJWWtrf3mNPLHJcWaBmlXcMvaV96fufez/n+fuf8zjkV/a8ZBzB5R4JO7VpICHlo8A3nt6L/VWNSIttrl9UiEzAyeMz5sOg/khmTkq7aBxbfDB6r2y8OHZFBjzf7rt5Mb61ChyOcWkxrhz86KiaEggxF5Aum5INaBRaCJ9taxPBSaG8D15zQVaVwnQaao/QxlhLSxnU/1Y+RLdxP1QA7BAT8IHIzSekWjUMyBS1NUO+EuTgkUvn9lB84mwVNK4pA921c4bkFS1V/IzS4QA3AYroCwM2nBpnf14fp9RUFvRmNVLSYskIh3XryOMJIc+WZw1sKvdrAlT2kFbAzPEVGDxB5eqDi0EUDzyetSWC1UFk+oq74LPqFURrD/9AUOo8jm8n9nNwR4M/HBzDc5Q1vhwO8LvC5N5jDV5MQXVg/u1wLUe789TP8F88hpFnQIdkUYPyxATJlhlYPb/WBu97+GkUpHJ6HZIEZb3lX/qkx9vw0hJYpsBasQE807+LsE6+AkqKM1tgAeuMGgC/HYNGKyoKmFL37uw9XVXW5k3Ro/NX7PLMd3WVEtbr21kPLiuwpSuG1gLVUguCXb+JMxdcF2ErYsgHfNfIpt06M5GANl4doWyfzgT25HM3U+9h9eghP7BKbBauKi08+t9eNDg0O9uUXN5uusGdumu6v3iLT4ONCTx+RjmBeXt7/9XE8sdCmhbECPjG4rHAG6jTBy/1bANx+dhjPXIiJh54lW+8pGNJdw28z3floSTkbnoVozF4qteoC/w4wDDjxcYWAO377gsngU8g1ZltP9CIJ/23r5vfyBj/8YnLmnH1Z631Ao6dL5OrlyihsmjiyBqbTVRKMamxm4cy4XUG1LQzeZ22V1gSupMIlky45pDPw3pA9LJ11gpees/KwOhVeh/bvfyVTIbuKu+8Q3L5LcEPA1arw9z+bjI7b83DfgxrBzhsErlgOAwsJu8xqH+peKtjLBlwphVNpeP+kPQ9dTsGLB608LBtwpRTeBga2Fa6lSaumQ3r2KsRX7OtvBuAmNzR7N3AAkMnCzJz9PKvagVWpurM5/5y7qAMANUZZE1KZ69DqfH30D3slpfYQe++16uHJS3A5Yv+9PSAI3GL1Nfr7Cl8Bezst36kZmLlS2Nc08+vw3HOXfJW/ur1wu0DVBSutaOCN1s3V5rcNvNaFuAoVV121aZb/PmpzsspNiwr34i/Er93MVTtyYhHU5VohKwnY2wDqU82m7orjydXP0UsCrmbQYt8tD3g6IvdLSe5PH7VomoPunboYyy1f6ktK2TAdYRS4p+aABT+26TwihMidTPy/TM/EZcBY5HUEPUJyE8zL60gjSEk47RYc1XURu9b6P7vslVpOgNBqAAAAAElFTkSuQmCC",xt="data:image/png;base64,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",kt="data:image/png;base64,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",Yn={wave:"wave___rx4XG",fillWrap:"fillWrap___q512j",svgBox:"svgBox___DfbUu"},vr=Object.defineProperty,bi=Object.getOwnPropertySymbols,si=Object.prototype.hasOwnProperty,xa=Object.prototype.propertyIsEnumerable,Ga=(Oe,Fe,Me)=>Fe in Oe?vr(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Zo=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))si.call(Fe,Me)&&Ga(Oe,Me,Fe[Me]);if(bi)for(var Me of bi(Fe))xa.call(Fe,Me)&&Ga(Oe,Me,Fe[Me]);return Oe};const Ps=Oe=>React.createElement("svg",Zo({width:449,height:204,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink"},Oe),React.createElement("title",null,"\u6CE2\u7EB9"),React.createElement("defs",null,React.createElement("linearGradient",{x1:"50%",y1:"41.532%",x2:"51.437%",y2:"65.254%",id:"water_svg__c"},React.createElement("stop",{stopColor:"#34D5A2",offset:"0%"}),React.createElement("stop",{stopColor:"#1D9F76",offset:"100%"})),React.createElement("path",{id:"water_svg__a",d:"M0 0h449v204H0z"})),React.createElement("g",{fill:"none",fillRule:"evenodd"},React.createElement("mask",{id:"water_svg__b",fill:"#fff"},React.createElement("use",{xlinkHref:"#water_svg__a"})),React.createElement("g",{mask:"url(#water_svg__b)"},React.createElement("path",{d:"M0 7.704c14.667 8 29.667 8 45 0 6.537-3.41 23.776-14.982 45 0 17 12 29 9 45 0s31-9 45 0c25 17 35 8 45 0s32.344-7.91 45 0c16 10 32 10 45 0 10.947-8.42 33.124-8.71 45 0 15 11 31.839 11.136 45 0 13-11 30-9.517 45 0s15 17 45 0v196H0v-196Z",fill:"url(#water_svg__c)",transform:"translate(-40)"}),React.createElement("path",{d:"M0 11c14.667 8 29.667 8 45 0 6.537-3.41 23.776-14.982 45 0 17 12 29 9 45 0s31-9 45 0c25 17 35 8 45 0s32.344-7.91 45 0c16 10 32 10 45 0 10.947-8.42 33.124-8.71 45 0 15 11 31.839 11.137 45 0 13-11 30-10 45 0s15 17 45 0v193H0V11Z",fill:"#38E5AE"}))));var Zs="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDQ5IiBoZWlnaHQ9IjIwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSI0MS41MzIlIiB4Mj0iNTEuNDM3JSIgeTI9IjY1LjI1NCUiIGlkPSJjIj48c3RvcCBzdG9wLWNvbG9yPSIjMzRENUEyIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzFEOUY3NiIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0iYSIgZD0iTTAgMGg0NDl2MjA0SDB6Ii8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PGcgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgNy43MDRjMTQuNjY3IDggMjkuNjY3IDggNDUgMCA2LjUzNy0zLjQxIDIzLjc3Ni0xNC45ODIgNDUgMCAxNyAxMiAyOSA5IDQ1IDBzMzEtOSA0NSAwYzI1IDE3IDM1IDggNDUgMHMzMi4zNDQtNy45MSA0NSAwYzE2IDEwIDMyIDEwIDQ1IDAgMTAuOTQ3LTguNDIgMzMuMTI0LTguNzEgNDUgMCAxNSAxMSAzMS44MzkgMTEuMTM2IDQ1IDAgMTMtMTEgMzAtOS41MTcgNDUgMHMxNSAxNyA0NSAwdjE5Nkgwdi0xOTZaIiBmaWxsPSJ1cmwoI2MpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDApIi8+PHBhdGggZD0iTTAgMTFjMTQuNjY3IDggMjkuNjY3IDggNDUgMCA2LjUzNy0zLjQxIDIzLjc3Ni0xNC45ODIgNDUgMCAxNyAxMiAyOSA5IDQ1IDBzMzEtOSA0NSAwYzI1IDE3IDM1IDggNDUgMHMzMi4zNDQtNy45MSA0NSAwYzE2IDEwIDMyIDEwIDQ1IDAgMTAuOTQ3LTguNDIgMzMuMTI0LTguNzEgNDUgMCAxNSAxMSAzMS44MzkgMTEuMTM3IDQ1IDAgMTMtMTEgMzAtMTAgNDUgMHMxNSAxNyA0NSAwdjE5M0gwVjExWiIgZmlsbD0iIzM4RTVBRSIvPjwvZz48L2c+PC9zdmc+",qs=({percentage:Oe,size:Fe=180,unit:Me="rem"})=>{const[jt,Mn]=(0,se.useState)(["",""]),[Tr,Fr]=(0,se.useState)(0),An=(0,se.useRef)(null),_t=(0,se.useRef)(null);(0,se.useEffect)(()=>(An.current&&(clearTimeout(_t.current),_t.current=setTimeout(()=>{var aa;const ca=Tr+20;ca+Fe>((aa=An.current)==null?void 0:aa.offsetWidth)-40&&Mn([...jt,""]),Fr(ca)},200)),()=>{clearTimeout(_t.current)}),[An.current,Tr]),(0,se.useEffect)(()=>(window.addEventListener("resize",Kn),()=>{window.removeEventListener("resize",Kn)}),[]);const Kn=()=>{Fr(0)},wr={width:Fe+Me,height:Fe+Me},ra=148-Fe*(Oe/100),qi=()=>se.createElement("img",{src:Zs,style:{width:`449${Me}`,height:`204${Me}`}});return se.createElement("div",{className:Yn.wave,style:wr},se.createElement("div",{className:Yn.fillWrap},se.createElement("div",{style:{fontSize:`28${Me}`,zIndex:2,color:"#fff"}},Oe,"%"),se.createElement("div",{className:Yn.svgBox,ref:An,style:{top:ra+Me,transform:`translateX(-${Tr}px)`}},jt.map((aa,ca)=>se.createElement(qi,{key:ca})))))},ml=he(22861),Cl={trapezoid:"trapezoid___qw8yM",pillarBox:"pillarBox___rGJCP",pillar1:"pillar1___uJ0zx",point:"point____XIHt",pillar2:"pillar2___pL9k5",pillar3:"pillar3___dUdZf",textBox:"textBox___isldE",text1:"text1___g5Hy9",tip:"tip___PXfJr",line:"line___A5wA_",l:"l___hfZzL",text2:"text2___u2scn",text3:"text3___WSnmy"},ec=Object.defineProperty,Rc=Object.defineProperties,Md=Object.getOwnPropertyDescriptors,Jc=Object.getOwnPropertySymbols,_d=Object.prototype.hasOwnProperty,pf=Object.prototype.propertyIsEnumerable,od=(Oe,Fe,Me)=>Fe in Oe?ec(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,$d=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))_d.call(Fe,Me)&&od(Oe,Me,Fe[Me]);if(Jc)for(var Me of Jc(Fe))pf.call(Fe,Me)&&od(Oe,Me,Fe[Me]);return Oe},Du=(Oe,Fe)=>Rc(Oe,Md(Fe)),qc=({dataSource:Oe=[]})=>{const[Fe,Me]=(0,se.useState)([]),[jt,Mn]=(0,se.useState)(0),Tr=(0,se.useRef)(String(Math.random()).slice(-6));(0,se.useEffect)(()=>{if(Oe!=null&&Oe.length){const Kn=_t(Oe),wr=Oe.map((ra,qi)=>Du($d({value:ra,lineWidth:30,pillarWidth:104+Kn[qi]},An[qi]),{from:An[qi].from+Tr.current,to:An[qi].to+Tr.current}));Me(wr),Mn(jt+1)}},[JSON.stringify(Oe)]),(0,se.useEffect)(()=>{jt>0&&Fr()},[jt]),(0,se.useEffect)(()=>(window.addEventListener("resize",Fr),()=>{window.removeEventListener("resize",Fr)}),[jt]);const Fr=()=>{const Kn=Fe.map((wr,ra)=>{const{from:qi,to:aa}=wr,ca=document.querySelector(`#${qi}`),Ra=document.querySelector(`#${aa}`),Ei=ca.getBoundingClientRect(),Si=Ra.getBoundingClientRect(),ba=Math.abs(Si.left-Ei.left);return Du($d({},wr),{lineWidth:ba})});Me(Kn)},An=[{title:"\u5B8C\u6210\u738780%\uFF5E100%",pillarTitle:"80\uFF5E100%",from:"lineStart1",to:"lineEnd1"},{title:"\u5B8C\u6210\u738760%\uFF5E79%",pillarTitle:"60\uFF5E79%",from:"lineStart2",to:"lineEnd2"},{title:"\u5B8C\u6210\u738759%\u4EE5\u4E0B",pillarTitle:"59%\u4EE5\u4E0B",from:"lineStart3",to:"lineEnd3"}];function _t(Kn){const wr=Kn.reduce((ra,qi)=>ra+qi,0);return Kn.map(ra=>ra/wr*100)}return se.createElement("div",{className:Cl.trapezoid},se.createElement("div",{className:Cl.textBox},Fe.map((Kn,wr)=>{const{value:ra,lineWidth:qi,title:aa,from:ca}=Kn,Ra=wr+1;return se.createElement("div",{key:wr,className:Cl[`text${Ra}`]},se.createElement("div",{className:Cl.tip},aa,se.createElement("span",null,ra)),se.createElement("div",{id:ca,className:Cl.line},se.createElement("div",{style:{width:qi},className:Cl.l})))})),se.createElement("div",{className:Cl.pillarBox},Fe.map((Kn,wr)=>{const{pillarWidth:ra,pillarTitle:qi,to:aa}=Kn,ca=wr+1;return se.createElement("div",{key:wr,className:Cl[`pillar${ca}`],style:{width:ra+"rem"}},se.createElement("span",null,qi),se.createElement("div",{id:aa,className:Cl.point}))})))},ss=he(59301),pd=Object.defineProperty,Bh=Object.getOwnPropertySymbols,bf=Object.prototype.hasOwnProperty,Id=Object.prototype.propertyIsEnumerable,Ae=(Oe,Fe,Me)=>Fe in Oe?pd(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,xe=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))bf.call(Fe,Me)&&Ae(Oe,Me,Fe[Me]);if(Bh)for(var Me of Bh(Fe))Id.call(Fe,Me)&&Ae(Oe,Me,Fe[Me]);return Oe},Pe=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())}),gt=({subjectId:Oe,uuid:Fe,isAll:Me})=>{const[jt,Mn]=(0,se.useState)(!1),[Tr,Fr]=(0,se.useState)({type:0,course_id:null}),[An,_t]=(0,se.useState)(!0),[Kn,wr]=(0,se.useState)(!0),[ra,qi]=(0,se.useState)([]),[aa]=(0,je.useSearchParams)(),[ca,Ra]=(0,se.useState)({graphCount:0,tagCount:0,resourceCount:0,proportionCount:0}),Ei=[{name:"",value:0,itemStyle:{color:"rgb(223,209,38)"}},{name:"",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"",value:0,itemStyle:{color:"rgb(6,110,247)"}}],[Si,ba]=(0,se.useState)({averageCompletionRate:0,averageMasteryRate:0,completionRate:[0,0,0],masteryRate:Ei});(0,se.useEffect)(()=>{jt?Sa(Tr):Fr({type:0,course_id:null})},[jt]),(0,se.useEffect)(()=>{jt&&Mn(!1)},[Fe]);const Sa=(xo,di=!1)=>Pe(void 0,null,function*(){var Ca,va,ro,Pa,rl,xl,Xo,_l,ts,ko;di?wr(!0):_t(!0);const Gr=yield(0,Ot.ZP)(Me?"/api/knowledge/v2/subject_statistics.json":"/api/knowledge/v2/knowledge_statistics.json",{method:"get",params:xe({subject_id:Oe,parentNodeUuid:Fe,labels:"\u56FE\u8C31,\u6807\u7B7E,\u8D44\u6E90",depth:-1},xo)});if((Gr==null?void 0:Gr.status)===0){let so=(Ca=Gr==null?void 0:Gr.data)==null?void 0:Ca.metricCounters;so=so||[];const Ti={graphCount:((va=so.find(Eo=>(Eo==null?void 0:Eo.name)==="\u56FE\u8C31"))==null?void 0:va.count)||0,tagCount:((ro=so.find(Eo=>(Eo==null?void 0:Eo.name)==="\u6807\u7B7E"))==null?void 0:ro.count)||0,resourceCount:((Pa=so.find(Eo=>(Eo==null?void 0:Eo.name)==="\u8D44\u6E90"))==null?void 0:Pa.count)||0,proportionCount:(rl=Gr==null?void 0:Gr.data)==null?void 0:rl.resource_rate};let oa=Object.entries((xl=Gr==null?void 0:Gr.data)==null?void 0:xl.study_grasp_hash).map(([Eo,Ss],_s)=>({name:Eo,value:Ss,itemStyle:Ei[_s].itemStyle}));const Ea={averageCompletionRate:(Xo=Gr==null?void 0:Gr.data)==null?void 0:Xo.study_complete_rate,averageMasteryRate:(_l=Gr==null?void 0:Gr.data)==null?void 0:_l.study_grasp_rate,completionRate:Object.values((ts=Gr==null?void 0:Gr.data)==null?void 0:ts.study_complete_hash),masteryRate:oa};console.log(oa,"newMasteryRate");const Yo=(ko=Gr==null?void 0:Gr.courses)==null?void 0:ko.map(Eo=>({label:Eo.name,value:Eo.id}));qi(Yo),Ra(Ti),ba(Ea)}setTimeout(()=>{_t(!1)},500),wr(!1)}),Uo=xo=>{Tr.type=xo,Fr(xe({},Tr)),(xo!==2||Tr.course_id)&&Sa(Tr,!0)},Ua=xo=>{Tr.course_id=xo,Fr(xe({},Tr)),Sa(Tr,!0)},Oa=[{name:"\u5168\u90E8",id:0},{name:"\u81EA\u4E3B\u5B66\u4E60",id:1},{name:"\u8BFE\u5802\u5B66\u4E60",id:2}];return ss.createElement(lo.Z,null,ss.createElement("div",{className:me.statistics},ss.createElement("div",{onClick:()=>Mn(!0),className:me.noUnfold},ss.createElement("img",{style:{width:"32rem",marginBottom:"4rem"},src:Se}),ss.createElement("span",null,"\u7EDF"),ss.createElement("span",null,"\u8BA1")),ss.createElement("div",{className:me.wrapBox,style:{right:jt?0:"-600rem"}},An&&ss.createElement(vt.Z,{style:{width:"100%",marginTop:"200rem"},spinning:!0}),!An&&ss.createElement(ss.Fragment,null,ss.createElement("div",{className:me.scrollBox},ss.createElement("div",{className:me.content},ss.createElement("div",{className:me.title},ss.createElement("img",{src:Qe}),ss.createElement("span",null,"\u56FE\u8C31\u7EDF\u8BA1\u5206\u6790")),ss.createElement(Lr.Z,{className:me.box,justify:"space-between"},ss.createElement("div",{className:me.left},ss.createElement("div",null,ss.createElement("span",null,"\u77E5\u8BC6\u56FE\u8C31\u6570\u91CF"),ss.createElement("b",null,ca==null?void 0:ca.graphCount)),ss.createElement("div",{style:{margin:"18rem 0"}},ss.createElement("span",null,"\u6807\u7B7E\u8282\u70B9\u6570\u91CF"),ss.createElement("b",null,ca==null?void 0:ca.tagCount)),ss.createElement("div",null,ss.createElement("span",null,"\u8D44\u6E90\u8282\u70B9\u6570\u91CF"),ss.createElement("b",null,ca==null?void 0:ca.resourceCount))),ss.createElement("div",{className:me.right},jt&&ss.createElement(qs,{percentage:ca==null?void 0:ca.proportionCount}),ss.createElement("div",{className:"c-white",style:{marginTop:"20rem",fontSize:"14rem"}},"\u5DF2\u5173\u8054\u8D44\u6E90\u7684\u6807\u7B7E\u8282\u70B9\u5360\u6BD4"))),ss.createElement("div",{style:{marginTop:"20rem"},className:me.title},ss.createElement("img",{src:ct}),ss.createElement("span",null,"\u5B66\u4E60\u7EDF\u8BA1\u5206\u6790")),ss.createElement("div",{className:me.box},aa.get("type")!=="classrooms"&&ss.createElement("div",{className:me.head},ss.createElement("span",{style:{marginRight:"10rem",fontSize:"16rem"}},"\u7EDF\u8BA1\u8303\u56F4"),ss.createElement("div",{className:me.radio},Oa.map(xo=>ss.createElement("div",{className:Tr.type===xo.id?me.active:"",key:xo.id,onClick:()=>Uo(xo.id)},ss.createElement("b",null),ss.createElement("span",null,xo.name)))),Tr.type===2&&ss.createElement(Ma.default,{className:me.select,options:ra,value:Tr==null?void 0:Tr.course_id,onChange:Ua,placeholder:"\u8BF7\u9009\u62E9",getPopupContainer:xo=>xo.parentNode,style:{width:"156rem",marginLeft:"10rem"},suffixIcon:ss.createElement("i",{className:"iconfont icon-a-bianzu11",style:{color:"#1B8565",fontSize:"16rem"}})})),ss.createElement(vt.Z,{spinning:Kn},ss.createElement("div",{className:me.average},ss.createElement("div",{className:me.li},ss.createElement("img",{src:xt,style:{marginLeft:0}}),ss.createElement("aside",{className:me.yellow},ss.createElement("div",{style:{fontSize:"16rem"}},"\u5E73\u5747\u5B8C\u6210\u7387"),ss.createElement("div",null,ss.createElement("b",{style:{fontSize:"40rem"}},Si==null?void 0:Si.averageCompletionRate),ss.createElement("span",{style:{fontSize:"20rem"}},"%")))),ss.createElement("div",{className:me.li},ss.createElement("img",{src:kt}),ss.createElement("aside",{className:me.blue},ss.createElement("div",{style:{fontSize:"16rem"}},"\u5E73\u5747\u638C\u63E1\u7387"),ss.createElement("div",null,ss.createElement("b",{style:{fontSize:"40rem"}},Si==null?void 0:Si.averageMasteryRate),ss.createElement("span",{style:{fontSize:"20rem"}},"%"))))),ss.createElement("div",{className:me.lineTitle},ss.createElement("b",null),ss.createElement("span",null,"\u5B8C\u6210\u7387"),ss.createElement("b",null)),ss.createElement("div",{className:me.echartsTwo},ss.createElement(qc,{dataSource:Si==null?void 0:Si.completionRate})),ss.createElement("div",{className:me.lineTitle,style:{marginTop:"40rem"}},ss.createElement("b",null),ss.createElement("span",null,"\u638C\u63E1\u7387"),ss.createElement("b",null)),ss.createElement("div",{className:me.echartsThree},ss.createElement(ml.Z,{dataSource:Si==null?void 0:Si.masteryRate})))))),jt&&ss.createElement("div",{onClick:()=>Mn(!1),className:me.unfold})))))},ft={statistics:"statistics___BZJje",noUnfold:"noUnfold___L4va9",wrapBox:"wrapBox___tHLW6",scrollBox:"scrollBox___m8AGu",content:"content____Gl9N",title:"title___SAaGy",top:"top___h1nbU",topLi:"topLi___Ib2Tu",bottom:"bottom___ZKnwW",bottomLi:"bottomLi___YAGiM",echarts:"echarts___M5Dkf",name:"name___XhFko",unfold:"unfold___I5om1",select:"select___TcV_B"},St="data:image/png;base64,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",zt="data:image/png;base64,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",Fn="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAsCAYAAAA5KtvpAAAAAXNSR0IArs4c6QAABFJJREFUaEPtml9MW1Ucxz+nlxbaUkYvYjdENG7RiEg6jNGQ+aIx08SE6IvZxGS+qGGPPjnj2+J8MIuJMVk00Zgg0zc1Rpm+Gf+M+GdkZKhT4gyMjnWllJWWtrf3mNPLHJcWaBmlXcMvaV96fufez/n+fuf8zjkV/a8ZBzB5R4JO7VpICHlo8A3nt6L/VWNSIttrl9UiEzAyeMz5sOg/khmTkq7aBxbfDB6r2y8OHZFBjzf7rt5Mb61ChyOcWkxrhz86KiaEggxF5Aum5INaBRaCJ9taxPBSaG8D15zQVaVwnQaao/QxlhLSxnU/1Y+RLdxP1QA7BAT8IHIzSekWjUMyBS1NUO+EuTgkUvn9lB84mwVNK4pA921c4bkFS1V/IzS4QA3AYroCwM2nBpnf14fp9RUFvRmNVLSYskIh3XryOMJIc+WZw1sKvdrAlT2kFbAzPEVGDxB5eqDi0EUDzyetSWC1UFk+oq74LPqFURrD/9AUOo8jm8n9nNwR4M/HBzDc5Q1vhwO8LvC5N5jDV5MQXVg/u1wLUe789TP8F88hpFnQIdkUYPyxATJlhlYPb/WBu97+GkUpHJ6HZIEZb3lX/qkx9vw0hJYpsBasQE807+LsE6+AkqKM1tgAeuMGgC/HYNGKyoKmFL37uw9XVXW5k3Ro/NX7PLMd3WVEtbr21kPLiuwpSuG1gLVUguCXb+JMxdcF2ErYsgHfNfIpt06M5GANl4doWyfzgT25HM3U+9h9eghP7BKbBauKi08+t9eNDg0O9uUXN5uusGdumu6v3iLT4ONCTx+RjmBeXt7/9XE8sdCmhbECPjG4rHAG6jTBy/1bANx+dhjPXIiJh54lW+8pGNJdw28z3floSTkbnoVozF4qteoC/w4wDDjxcYWAO377gsngU8g1ZltP9CIJ/23r5vfyBj/8YnLmnH1Z631Ao6dL5OrlyihsmjiyBqbTVRKMamxm4cy4XUG1LQzeZ22V1gSupMIlky45pDPw3pA9LJ11gpees/KwOhVeh/bvfyVTIbuKu+8Q3L5LcEPA1arw9z+bjI7b83DfgxrBzhsErlgOAwsJu8xqH+peKtjLBlwphVNpeP+kPQ9dTsGLB608LBtwpRTeBga2Fa6lSaumQ3r2KsRX7OtvBuAmNzR7N3AAkMnCzJz9PKvagVWpurM5/5y7qAMANUZZE1KZ69DqfH30D3slpfYQe++16uHJS3A5Yv+9PSAI3GL1Nfr7Cl8Bezst36kZmLlS2Nc08+vw3HOXfJW/ur1wu0DVBSutaOCN1s3V5rcNvNaFuAoVV121aZb/PmpzsspNiwr34i/Er93MVTtyYhHU5VohKwnY2wDqU82m7orjydXP0UsCrmbQYt8tD3g6IvdLSe5PH7VomoPunboYyy1f6ktK2TAdYRS4p+aABT+26TwihMidTPy/TM/EZcBY5HUEPUJyE8zL60gjSEk47RYc1XURu9b6P7vslVpOgNBqAAAAAElFTkSuQmCC",Ar=he.p+"static/a.d3f19668.png",lr=he.p+"static/b.ba7414bd.png",Kt=he.p+"static/c.2b6f6bd3.png",Tn=he.p+"static/d.f1216ccd.png",Ir={cylinder:"cylinder___rUBlO",cylinderBox:"cylinderBox___NurwX",cylinder1:"cylinder1___LPJD0",item1:"item1___ekrFi",item2:"item2___PuVOv",item3:"item3___x9UjL",point:"point___ZJ1ZD",cylinder2:"cylinder2___aQBbC",cylinder3:"cylinder3___lefpl",textBox:"textBox____wuhT"},Li=Object.defineProperty,Bo=Object.defineProperties,Qo=Object.getOwnPropertyDescriptors,Wo=Object.getOwnPropertySymbols,Xs=Object.prototype.hasOwnProperty,Bl=Object.prototype.propertyIsEnumerable,Il=(Oe,Fe,Me)=>Fe in Oe?Li(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Ku=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Xs.call(Fe,Me)&&Il(Oe,Me,Fe[Me]);if(Wo)for(var Me of Wo(Fe))Bl.call(Fe,Me)&&Il(Oe,Me,Fe[Me]);return Oe},wu=(Oe,Fe)=>Bo(Oe,Qo(Fe)),td=({dataSource:Oe=[]})=>{const[Fe,Me]=(0,se.useState)([]),[jt,Mn]=(0,se.useState)(0),Tr=(0,se.useRef)(String(Math.random()).slice(-6));console.log(Oe,Fe,223),(0,se.useEffect)(()=>{if(Oe!=null&&Oe.length){const Kn=_t(Oe),wr=Oe.map((ra,qi)=>wu(Ku({value:ra,lineWidth:30,cylinderWidth:40+Kn[qi]},An[qi]),{from:An[qi].from+Tr.current,to:An[qi].to+Tr.current}));Me(wr),Mn(jt+1)}},[JSON.stringify(Oe)]),(0,se.useEffect)(()=>{jt>0&&Fr()},[jt]),(0,se.useEffect)(()=>(window.addEventListener("resize",Fr),()=>{window.removeEventListener("resize",Fr)}),[jt]);const Fr=()=>{const Kn=Fe.map((wr,ra)=>{const{from:qi,to:aa}=wr,ca=document.querySelector(`#${qi}`),Ra=document.querySelector(`#${aa}`),Ei=ca.getBoundingClientRect(),Si=Ra.getBoundingClientRect(),ba=Math.abs(Si.left-Ei.left);return wu(Ku({},wr),{lineWidth:ba})});Me(Kn)},An=[{title:"\u90E8\u5206\u638C\u63E1  ",from:"lineStart1",to:"lineEnd1"},{title:"\u5168\u90E8\u638C\u63E1  ",from:"lineStart2",to:"lineEnd2"},{title:"\u672A  \u638C  \u63E1  ",from:"lineStart3",to:"lineEnd3"}];function _t(Kn){const wr=Kn.reduce((ra,qi)=>ra+qi,0);return Kn.map(ra=>ra/wr*122)}return se.createElement("div",{className:Ir.cylinder},se.createElement("div",{className:Ir.cylinderBox},Fe.map((Kn,wr)=>{const{cylinderWidth:ra,lineWidth:qi,from:aa}=Kn,ca=wr+1;return se.createElement("div",{key:ca,className:Ir[`cylinder${ca}`],style:{width:ra+"rem"}},se.createElement("div",{className:Ir.item1}),se.createElement("div",{className:Ir.item2}),se.createElement("div",{className:Ir.item3}),se.createElement("div",{id:aa,style:{width:qi},className:Ir.point}))})),se.createElement("div",{className:Ir.textBox},Fe.map((Kn,wr)=>{const{title:ra,to:qi,value:aa}=Kn,ca=wr+1;return se.createElement("div",{key:ca,id:qi},se.createElement("span",{dangerouslySetInnerHTML:{__html:`${ra}${aa}%`}}))})))},as=he(59301),Yc=Object.defineProperty,jc=Object.getOwnPropertySymbols,ef=Object.prototype.hasOwnProperty,tf=Object.prototype.propertyIsEnumerable,wd=(Oe,Fe,Me)=>Fe in Oe?Yc(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,gf=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))ef.call(Fe,Me)&&wd(Oe,Me,Fe[Me]);if(jc)for(var Me of jc(Fe))tf.call(Fe,Me)&&wd(Oe,Me,Fe[Me]);return Oe},sh=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())}),Ld=({subjectId:Oe,uuid:Fe,isAll:Me})=>{const[jt,Mn]=(0,se.useState)(!1),[Tr,Fr]=(0,se.useState)({course_id:null}),[An,_t]=(0,se.useState)(!0),[Kn,wr]=(0,se.useState)(!0),[ra,qi]=(0,se.useState)([]),[aa]=(0,je.useSearchParams)(),[ca,Ra]=(0,se.useState)({graphCount:0,tagCount:0,resourceCount:0,proportionCount:0}),Ei=[{name:"\u5DF2\u5B8C\u6210",value:0,itemStyle:{color:"rgb(223,209,38)"}},{name:"\u5F85\u5F00\u59CB",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"\u90E8\u5206\u5B8C\u6210",value:0,itemStyle:{color:"rgb(6,110,247)"}}],[Si,ba]=(0,se.useState)({averageCompletionRate:0,averageMasteryRate:0,completionRate:Ei,masteryRate:[0,0,0],course_rank_num:0,course_rank_all_num:0,system_rank_num:0,system_rank_all_num:0});(0,se.useEffect)(()=>{jt?Sa(Tr):Fr({course_id:null})},[jt]),(0,se.useEffect)(()=>{jt&&Mn(!1)},[Fe]);const Sa=(Ua,Oa=!1)=>sh(void 0,null,function*(){var xo,di,Ca,va,ro,Pa,rl,xl,Xo,_l,ts,ko,Gr,so,Ti;Oa?wr(!0):_t(!0);const oa=yield(0,Ot.ZP)(Me?"/api/knowledge/v2/subject_statistics.json":"/api/knowledge/v2/knowledge_statistics.json",{method:"get",params:gf({subject_id:Oe,parentNodeUuid:Fe,labels:"\u56FE\u8C31,\u6807\u7B7E,\u8D44\u6E90",depth:-1},Ua)});if((oa==null?void 0:oa.status)===0){let Ea=(xo=oa==null?void 0:oa.data)==null?void 0:xo.metricCounters;Ea=Ea||[];const Yo={graphCount:((di=Ea.find(il=>(il==null?void 0:il.name)==="\u56FE\u8C31"))==null?void 0:di.count)||0,tagCount:((Ca=Ea.find(il=>(il==null?void 0:il.name)==="\u6807\u7B7E"))==null?void 0:Ca.count)||0,resourceCount:((va=Ea.find(il=>(il==null?void 0:il.name)==="\u8D44\u6E90"))==null?void 0:va.count)||0,proportionCount:(ro=oa==null?void 0:oa.data)==null?void 0:ro.resource_rate};let Eo=Object.entries((Pa=oa==null?void 0:oa.data)==null?void 0:Pa.study_complete_hash).map(([il,Ks],Kl)=>({name:Ei[Kl].name,value:Ks,itemStyle:Ei[Kl].itemStyle}));const Ss={averageCompletionRate:(rl=oa==null?void 0:oa.data)==null?void 0:rl.study_complete_rate,averageMasteryRate:(xl=oa==null?void 0:oa.data)==null?void 0:xl.study_grasp_rate,completionRate:Eo,masteryRate:Object.values((Xo=oa==null?void 0:oa.data)==null?void 0:Xo.study_grasp_hash),course_rank_num:(_l=oa==null?void 0:oa.data)==null?void 0:_l.course_rank_num,course_rank_all_num:(ts=oa==null?void 0:oa.data)==null?void 0:ts.course_rank_all_num,system_rank_num:(ko=oa==null?void 0:oa.data)==null?void 0:ko.system_rank_num,system_rank_all_num:(Gr=oa==null?void 0:oa.data)==null?void 0:Gr.system_rank_all_num},_s=(so=oa==null?void 0:oa.courses)==null?void 0:so.map(il=>({label:il.name,value:il.id}));qi(_s),Ra(Yo),ba(Ss),Oa||Fr({course_id:((Ti=_s==null?void 0:_s[0])==null?void 0:Ti.value)||null})}setTimeout(()=>{_t(!1)},500),wr(!1)}),Uo=Ua=>{Tr.course_id=Ua,Fr(gf({},Tr)),Sa(Tr,!0)};return as.createElement(lo.Z,null,as.createElement("div",{className:ft.statistics},as.createElement("div",{onClick:()=>Mn(!0),className:ft.noUnfold},as.createElement("img",{style:{width:"32rem",marginBottom:"4rem"},src:St}),as.createElement("span",null,"\u7EDF"),as.createElement("span",null,"\u8BA1")),as.createElement("div",{className:ft.wrapBox,style:{right:jt?0:"-600rem"}},An&&as.createElement(vt.Z,{style:{width:"100%",marginTop:"200rem"},spinning:!0}),!An&&as.createElement(as.Fragment,null,as.createElement("div",{className:ft.scrollBox},as.createElement("div",{className:ft.content},as.createElement("div",{className:ft.title},as.createElement("img",{src:zt}),as.createElement("span",null,"\u56FE\u8C31\u7EDF\u8BA1\u5206\u6790")),as.createElement("div",{className:ft.top},as.createElement("div",{className:ft.topLi},as.createElement("div",null,ca==null?void 0:ca.graphCount),as.createElement("div",null,"\u77E5\u8BC6\u56FE\u8C31\u6570\u91CF")),as.createElement("div",{className:ft.topLi},as.createElement("div",null,ca==null?void 0:ca.tagCount),as.createElement("div",null,"\u6807\u7B7E\u8282\u70B9\u6570\u91CF")),as.createElement("div",{className:ft.topLi},as.createElement("div",null,ca==null?void 0:ca.resourceCount),as.createElement("div",null,"\u8D44\u6E90\u8282\u70B9\u6570\u91CF"))),as.createElement("div",{style:{marginTop:"20rem"},className:ft.title},as.createElement("img",{src:Fn}),as.createElement("span",null,"\u5B66\u4E60\u7EDF\u8BA1\u5206\u6790")),as.createElement(vt.Z,{spinning:Kn},as.createElement("div",{className:ft.bottom},as.createElement("div",{className:ft.bottomLi,style:{marginTop:"82rem",marginRight:"26rem"}},aa.get("type")!=="classrooms"&&as.createElement(Ma.default,{className:ft.select,options:ra,value:Tr==null?void 0:Tr.course_id,size:"small",onChange:Uo,placeholder:"\u8BF7\u9009\u62E9",getPopupContainer:Ua=>Ua.parentNode,style:{width:"222rem"},suffixIcon:as.createElement("i",{className:"iconfont icon-a-bianzu11",style:{color:"#fff",fontSize:"12rem"}})}),as.createElement("b",{style:{fontSize:"26rem",marginTop:"5rem"}},Si==null?void 0:Si.course_rank_num),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\u8BFE\u5802\u6392\u540D"),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\uFF08\u5171",Si==null?void 0:Si.course_rank_all_num,"\u4EBA\uFF09"),as.createElement("img",{src:Ar})),as.createElement("div",{className:ft.bottomLi,style:{marginTop:"82rem"}},as.createElement("b",{style:{fontSize:"26rem",marginTop:"30rem"}},Si==null?void 0:Si.system_rank_num),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\u7CFB\u7EDF\u6392\u540D"),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\uFF08\u5171",Si==null?void 0:Si.system_rank_all_num,"\u4EBA\uFF09"),as.createElement("img",{src:lr})),as.createElement("div",{className:ft.bottomLi,style:{marginTop:"104rem",marginRight:"26rem"}},as.createElement("b",{style:{fontSize:"26rem",marginTop:"30rem"}},Si==null?void 0:Si.averageCompletionRate,"%"),as.createElement("div",{style:{fontSize:"14rem",marginTop:"2rem"}},"\u5E73\u5747\u5B8C\u6210\u7387"),as.createElement("img",{src:Kt})),as.createElement("div",{className:ft.bottomLi,style:{marginTop:"104rem"}},as.createElement("b",{style:{fontSize:"26rem",marginTop:"30rem"}},Si==null?void 0:Si.averageMasteryRate,"%"),as.createElement("div",{style:{fontSize:"14rem",marginTop:"2rem"}},"\u5E73\u5747\u638C\u63E1\u7387"),as.createElement("img",{src:Tn})),as.createElement("div",{className:ft.echarts},as.createElement("div",{className:ft.name},"\u5B8C\u6210\u60C5\u51B5"),as.createElement(ml.Z,{dataSource:Si==null?void 0:Si.completionRate})),as.createElement("div",{className:ft.echarts},as.createElement("div",{className:ft.name},"\u638C\u63E1\u60C5\u51B5"),as.createElement(td,{dataSource:Si==null?void 0:Si.masteryRate})))))),jt&&as.createElement("div",{onClick:()=>Mn(!1),className:ft.unfold})))))},Mf=he(59301),C0=Object.defineProperty,Tf=Object.getOwnPropertySymbols,Kd=Object.prototype.hasOwnProperty,Uf=Object.prototype.propertyIsEnumerable,zf=(Oe,Fe,Me)=>Fe in Oe?C0(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,lh=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Kd.call(Fe,Me)&&zf(Oe,Me,Fe[Me]);if(Tf)for(var Me of Tf(Fe))Uf.call(Fe,Me)&&zf(Oe,Me,Fe[Me]);return Oe},Dh=(Oe,Fe)=>{var Me={};for(var jt in Oe)Kd.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&Tf)for(var jt of Tf(Oe))Fe.indexOf(jt)<0&&Uf.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},Jh=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Hf=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,tpacti:An,settpacti:_t}=Fe,Kn=Dh(Fe,["pathsDetail","user","globalSetting","loading","dispatch","tpacti","settpacti"]),wr,ra,qi,aa,ca,Ra;const Ei=(0,je.useParams)(),[Si,ba]=(0,se.useState)(""),[Sa,Uo]=(0,se.useState)([]),[Ua]=(0,je.useSearchParams)(),[Oa,xo]=(0,se.useState)([]),[di,Ca]=(0,se.useState)(1);(0,se.useEffect)(()=>{var Pa,rl,xl,Xo,_l,ts;if((Pa=Me==null?void 0:Me.detail)!=null&&Pa.nodes&&di===1){Uo((rl=Me==null?void 0:Me.detail)==null?void 0:rl.nodes),Ua.get("uuid")?ba(Ua.get("uuid")):ba((_l=(Xo=(xl=Me==null?void 0:Me.detail)==null?void 0:xl.nodes)==null?void 0:Xo[1])==null?void 0:_l.uuid);let ko=[...(ts=Me==null?void 0:Me.detail)==null?void 0:ts.nodes];xo(ko==null?void 0:ko.splice(1)),Ca(2)}},[(wr=Me==null?void 0:Me.detail)==null?void 0:wr.nodes]),(0,se.useEffect)(()=>{var Pa,rl,xl;ba(An||((xl=(rl=(Pa=Me==null?void 0:Me.detail)==null?void 0:Pa.nodes)==null?void 0:rl[1])==null?void 0:xl.uuid))},[An]);const va=(...Pa)=>Jh(void 0,[...Pa],function*(rl={}){return yield Fr({type:"pathsDetail/getKnowledgeGraphs",payload:lh({graphable_type:Ua.get("type")==="classrooms"?"course":"subject",graphable_id:Ei==null?void 0:Ei.pathId},rl)})});function ro(){return Jh(this,null,function*(){var Pa,rl,xl,Xo;const _l=yield va({graphable_id:Ei==null?void 0:Ei.pathId});ba((rl=(Pa=_l==null?void 0:_l.nodes)==null?void 0:Pa[1])==null?void 0:rl.uuid),_t((Xo=(xl=_l==null?void 0:_l.nodes)==null?void 0:xl[1])==null?void 0:Xo.uuid)})}return Mf.createElement("div",{style:{height:"calc(100vh - 72px - 170rem)"}},(Sa==null?void 0:Sa.length)>0&&Mf.createElement("div",{className:ht.content},((ra=Sa==null?void 0:Sa[0])==null?void 0:ra.uuid)===Si&&Si&&Mf.createElement(ce,{onAddSuccess:ro,setActivated:ba,subjectId:Ei==null?void 0:Ei.pathId,settpacti:_t}),((qi=Sa==null?void 0:Sa[0])==null?void 0:qi.uuid)!==Si&&Si&&Mf.createElement(Vh,{tpacti:An,setactivied:()=>{var Pa;ba((Pa=Sa==null?void 0:Sa[0])==null?void 0:Pa.uuid)},initdata:ro,Tabsdatas:Oa,uuid:Si})),(aa=Me==null?void 0:Me.detail)!=null&&aa.can_managed?Mf.createElement(gt,{isAll:((ca=Sa==null?void 0:Sa[0])==null?void 0:ca.uuid)===Si,subjectId:Ei==null?void 0:Ei.pathId,uuid:Si}):Mf.createElement(Ld,{isAll:((Ra=Sa==null?void 0:Sa[0])==null?void 0:Ra.uuid)===Si,subjectId:Ei==null?void 0:Ei.pathId,uuid:Si}))};var qh=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(Hf),_h={TabsItemActive:"TabsItemActive___UqdaX",TabsItem:"TabsItem___L0dKD"},z0=he(84105),kh=he(59301),ng=Object.defineProperty,c0=Object.defineProperties,Lp=Object.getOwnPropertyDescriptors,B0=Object.getOwnPropertySymbols,H0=Object.prototype.hasOwnProperty,D0=Object.prototype.propertyIsEnumerable,fp=(Oe,Fe,Me)=>Fe in Oe?ng(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,R0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))H0.call(Fe,Me)&&fp(Oe,Me,Fe[Me]);if(B0)for(var Me of B0(Fe))D0.call(Fe,Me)&&fp(Oe,Me,Fe[Me]);return Oe},P0=(Oe,Fe)=>c0(Oe,Lp(Fe)),rg=(Oe,Fe)=>{var Me={};for(var jt in Oe)H0.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&B0)for(var jt of B0(Oe))Fe.indexOf(jt)<0&&D0.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me};const d0=({DataProps:Oe,isActive:Fe=!1,onClick:Me})=>kh.createElement("div",{className:`current ${_h.TabsItem} ${Fe?_h.TabsItemActive:""}`,onClick:Me},(Oe==null?void 0:Oe.name)||""),j0=Oe=>{var Fe=Oe,{pathsDetail:Me,dispatch:jt,activied:Mn,setactivied:Tr,settpacti:Fr,tpacti:An,setxxljac:_t,xxljac:Kn,TabsData:wr=[],tplist:ra=[]}=Fe,qi=rg(Fe,["pathsDetail","dispatch","activied","setactivied","settpacti","tpacti","setxxljac","xxljac","TabsData","tplist"]),aa,ca,Ra,Ei,Si;const ba=(0,se.useRef)(null),[Sa,Uo]=(0,se.useState)(0),[Ua,Oa]=(0,se.useState)(!1),xo=(0,se.useMemo)(()=>(wr==null?void 0:wr.filter(di=>![1,3,4].includes(di==null?void 0:di.key)))||[],[wr]);return(0,se.useEffect)(()=>{ba.current&&setTimeout(()=>{const di=(0,Xt.ZR)(ba.current,"rem",1,!0);Uo(di)},500)},[ba.current,Me==null?void 0:Me.detail]),(0,se.useEffect)(()=>{var di,Ca;((di=Me==null?void 0:Me.actionTabs)==null?void 0:di.key)==="\u4FEE\u6539tab\u4FE1\u606F"&&(jt({type:"pathsDetail/setActionTabs",payload:{key:""}}),Tr==null||Tr((Ca=Me==null?void 0:Me.actionTabs)==null?void 0:Ca.type),window.scrollTo({top:800,left:0,behavior:"smooth"}))},[(aa=Me==null?void 0:Me.actionTabs)==null?void 0:aa.key]),kh.createElement("div",{className:"flex c-white justify-between overflow_hidden",style:{height:Ua?"auto":"40rem",background:"#101C39",borderRadius:"22rem",backdropFilter:"blur(10rem)",fontSize:"16rem",lineHeight:"26rem"}},kh.createElement("div",{ref:ba,className:"flex flex-wrap",style:{gap:"25rem 40rem"}},(Si=((Ra=(ca=Me==null?void 0:Me.detail)==null?void 0:ca.nodes)==null?void 0:Ra.length)>1?(Ei=Me==null?void 0:Me.detail)==null?void 0:Ei.nodes.slice(1):[{isNull:!0}])==null?void 0:Si.map((di,Ca)=>{var va;return kh.createElement(d0,{key:di==null?void 0:di.uuid,DataProps:di!=null&&di.isNull?P0(R0({},di),{name:((va=wr==null?void 0:wr.find(ro=>(ro==null?void 0:ro.key)==3))==null?void 0:va.name)||(di==null?void 0:di.name)}):di,isActive:di!=null&&di.isNull?Mn==3:Mn==3&&(An?(di==null?void 0:di.uuid)==An:Ca==0),onClick:()=>{Fr==null||Fr(di==null?void 0:di.uuid),Tr==null||Tr(3)}})}),xo==null?void 0:xo.map(di=>kh.createElement(d0,{key:di==null?void 0:di.key,DataProps:di,isActive:Mn==(di==null?void 0:di.key),onClick:()=>{Tr==null||Tr(di==null?void 0:di.key)}}))),Sa>44&&kh.createElement("div",{className:"current flex text-nowrap",style:{padding:"7rem 20rem"},onClick:()=>{Oa(!Ua)}},kh.createElement("a",null,Ua?"\u6536\u8D77":"\u5C55\u5F00"," ",kh.createElement(z0.Z,{rotate:Ua?-180:0,rev:void 0}))))};var hp=(0,je.connect)(({pathsDetail:Oe})=>({pathsDetail:Oe}))(j0),Lh=he(72484),ig="data:image/png;base64,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",Cg="data:image/png;base64,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",ev=he(37426),tv=he(19150),Bg=he(55303),ag=he(92691),nv=he(99755),Dg=he(46016),rv="data:image/png;base64,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",iv=he.p+"static/nltpbg.f01aad4b.png",Tp=he.p+"static/nltpbg2.303fcb0b.png",f0={title:"title___m9Fww",bg:"bg___f9tLu"},av="data:image/png;base64,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",pp=he.p+"static/2.3612d2e5.png",Z0=he.p+"static/3.0ae7bccf.png",og=he.p+"static/4.d75cb058.png",mh=he.p+"static/5.89f1948f.png",ov=he.p+"static/6.cc2d55ef.png",sv=he.p+"static/7.3afb9435.png",lv=he.p+"static/8.5401d4a7.png",uv=Object.defineProperty,X0=Object.getOwnPropertySymbols,cv=Object.prototype.hasOwnProperty,sg=Object.prototype.propertyIsEnumerable,V0=(Oe,Fe,Me)=>Fe in Oe?uv(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,h0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))cv.call(Fe,Me)&&V0(Oe,Me,Fe[Me]);if(X0)for(var Me of X0(Fe))sg.call(Fe,Me)&&V0(Oe,Me,Fe[Me]);return Oe};const dv=({DataProps:Oe=[],baifenbi:Fe=1,pathsDetail:Me,isShow:jt,item:Mn,i:Tr})=>{const Fr=(0,je.useParams)(),[An,_t]=(0,se.useState)(0),Kn=33,wr=Math.PI/2+Tr*(Math.PI*2/(Oe==null?void 0:Oe.length)),ra=Kn*Math.cos(wr)/100,qi=Kn*Math.sin(wr)/100;return se.createElement(Bn.Z,{color:"#444FC2",title:jt?null:se.createElement("div",{style:{fontSize:`${14*Fe}rem`}},se.createElement("div",null,"\u8986\u76D6",(Mn==null?void 0:Mn.children_count)||0,"\u4E2A\u5B50\u80FD\u529B\u3001",(Mn==null?void 0:Mn.subject_knowledge_graph_count)||0,"\u4E2A\u77E5\u8BC6\u70B9"),se.createElement("div",{style:{marginTop:"10rem"}},"\u70B9\u51FB\u67E5\u770B\u8BE6\u60C5"))},se.createElement("div",{className:`flex flex-col item-center justify-center absolute ${jt?"":"current"} ${f0.title}`,onClick:()=>{jt||(0,Xt.xg)(`/knowledgegraph/${Fr==null?void 0:Fr.pathId}/abilityMap/detail/${Mn==null?void 0:Mn.id}${window.location.search}`)},onMouseOver:()=>{jt||_t(2)},onMouseOut:()=>{jt||_t(0)},style:{left:`calc(50% - ${ra*100}%)`,top:`calc(50% - ${qi*100}%)`,transform:"translate(-50%,-50%)",width:"20%",fontSize:`${(14+An)*Fe}rem`}},se.createElement("div",{style:{opacity:"0.8"}},"\u4E3B\u80FD\u529B"),se.createElement("div",{className:"multi_ellipsis1",style:{fontSize:`${18*Fe}rem`,fontWeight:500}},Mn==null?void 0:Mn.name),!(Me!=null&&Me.detail.can_managed)&&se.createElement("div",null,"\u638C\u63E1\u7387 ",Mn==null?void 0:Mn.grasp_rate," %")))},zp=({DataProps:Oe=[],className:Fe="",style:Me={},baifenbi:jt=1,pathsDetail:Mn,isShow:Tr})=>{const Fr=(0,se.useMemo)(()=>{const An=["",av,pp,Z0,og,mh,ov,sv,lv];return An==null?void 0:An[(Oe==null?void 0:Oe.length)||0]},[Oe]);return se.createElement("div",{className:`w-full h-full flex item-center justify-center relative overflow_hidden ${Fe} ${f0.bg}`,style:h0({backgroundImage:`url(${Oe!=null&&Oe.length?Tp:iv})`,backgroundSize:"auto 100%",height:"100%"},Me)},((Oe==null?void 0:Oe.length)||0)>0&&se.createElement("img",{className:`absolute ${f0.bg}`,src:Fr,style:{width:"95%",height:"95%",left:"50%",top:"50%",transform:`translate(-50%, -50%) ${[2,3,6].includes(Oe==null?void 0:Oe.length)?"rotate(90deg)":(Oe==null?void 0:Oe.length)==7?"rotate(25deg)":""}`}}),Oe==null?void 0:Oe.map((An,_t)=>se.createElement(dv,{key:_t,i:_t,item:An,DataProps:Oe,className:Fe,style:Me,baifenbi:jt,pathsDetail:Mn,isShow:Tr})),se.createElement("div",{className:"text-center"},se.createElement("div",{style:{fontSize:`${28*jt}rem`}},"\u80FD\u529B\u76EE\u6807"),se.createElement("div",{style:{fontSize:`${12*jt}rem`}},"\u70B9\u51FB\u73AF\u56FE\u67E5\u770B\u80FD\u529B\u8BE6\u60C5")))};var Q0=(0,je.connect)(({pathsDetail:Oe})=>({pathsDetail:Oe}))(zp),$h=he.p+"static/bg.a1e8d200.png",vf={ChangeBut:"ChangeBut___VXZuF",spin:"spin___YZs77"},fv=he(39794),W0=Object.defineProperty,Pg=Object.defineProperties,hv=Object.getOwnPropertyDescriptors,Sg=Object.getOwnPropertySymbols,Mg=Object.prototype.hasOwnProperty,pv=Object.prototype.propertyIsEnumerable,gp=(Oe,Fe,Me)=>Fe in Oe?W0(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,S0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Mg.call(Fe,Me)&&gp(Oe,Me,Fe[Me]);if(Sg)for(var Me of Sg(Fe))pv.call(Fe,Me)&&gp(Oe,Me,Fe[Me]);return Oe},Hp=(Oe,Fe)=>Pg(Oe,hv(Fe)),Rp=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Ig=({pathsDetail:Oe,dispatch:Fe})=>{var Me,jt,Mn,Tr,Fr,An,_t,Kn,wr,ra,qi,aa,ca,Ra,Ei,Si,ba,Sa,Uo,Ua;const{detail:Oa,actionTabs:xo}=Oe,di=(0,je.useParams)(),[Ca]=(0,je.useSearchParams)(),va=(0,se.useRef)(null),[ro,Pa]=(0,se.useState)({}),[,rl,xl,Xo]=(0,gn.U)(Le.Eu,{subject_id:di==null?void 0:di.pathId}),[_l,ts]=(0,se.useState)([{name:"\u638C\u63E1\u738759%\u4EE5\u4E0B",value:0,itemStyle:{color:"rgb(6,110,247)"}},{name:"\u638C\u63E1\u738760%\uFF5E79%",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"\u638C\u63E1\u738780%\uFF5E100%",value:0,itemStyle:{color:"rgb(223,209,38)"}}]),ko=[{title:"\u80FD\u529B\u76EE\u6807\u638C\u63E1\u6570",value:(Me=Xo==null?void 0:Xo.data)==null?void 0:Me.total_grasp_count,unit:"\u4E2A",img:Dg,bg:"rgba(18, 42, 159, .4)",ProgressTitle:"\u5B8C\u6210\u6574\u4F53\u80FD\u529B\u7387",percent:((jt=Xo==null?void 0:Xo.data)==null?void 0:jt.total_grasp_rate)||0,trailColor:"rgba(22, 115, 255, .1)",strokeColor:"#1673FF"},{title:"\u5DF2\u638C\u63E1\u5B50\u80FD\u529B\u6570",value:(Mn=Xo==null?void 0:Xo.data)==null?void 0:Mn.children_ability_goal_grasp_count,unit:"\u4E2A",img:rv,bg:"rgba(0, 87, 76, .4)",ProgressTitle:"\u5B8C\u6210\u5B50\u80FD\u529B\u7387",percent:((Tr=Xo==null?void 0:Xo.data)==null?void 0:Tr.children_ability_goal_grasp_rate)||0,trailColor:"rgba(50, 199, 145, .1)",strokeColor:"#32C791"},{title:"\u8D44\u6E90\u5B8C\u6210\u6570",value:(Fr=Xo==null?void 0:Xo.data)==null?void 0:Fr.resource_complete_count,unit:"\u4E2A",img:ag,bg:"rgba(108, 76, 0, .4)",ProgressTitle:"\u5B8C\u6210\u8D44\u6E90\u7387",percent:((An=Xo==null?void 0:Xo.data)==null?void 0:An.resource_complete_rate)||0,trailColor:"rgba(209, 157, 83, .1)",strokeColor:"#D19D53"},{title:"\u5DF2\u7ECF\u638C\u63E1\u77E5\u8BC6\u70B9",value:(_t=Xo==null?void 0:Xo.data)==null?void 0:_t.knowledge_grasp_count,unit:"\u4E2A",img:nv,bg:"rgba(0, 28, 106, .4)",ProgressTitle:"\u77E5\u8BC6\u70B9\u638C\u63E1\u7387",percent:((Kn=Xo==null?void 0:Xo.data)==null?void 0:Kn.knowledge_grasp_rate)||0,trailColor:"rgba(50, 199, 145, .1)",strokeColor:"#1673FF"}],Gr=(...Ti)=>Rp(void 0,[...Ti],function*(oa={}){yield xl(Hp(S0({},oa),{subject_id:di==null?void 0:di.pathId}))}),so=()=>Rp(void 0,null,function*(){Fe({type:"pathsDetail/getKnowledgeGraphs",payload:{graphable_type:Ca.get("type")==="classrooms"?"course":"subject",graphable_id:di.pathId}})});return(0,se.useEffect)(()=>{var Ti,oa;if((Xo==null?void 0:Xo.status)==0&&(Oa!=null&&Oa.can_managed)){const Ea=(oa=Object==null?void 0:Object.entries(((Ti=Xo==null?void 0:Xo.data)==null?void 0:Ti.study_grasp_hash)||{}))==null?void 0:oa.map(([Yo,Eo],Ss)=>({name:Yo,value:Eo,itemStyle:_l[Ss].itemStyle}));ts(Ea)}},[Oa==null?void 0:Oa.can_managed,Xo]),(0,se.useEffect)(()=>{ro!=null&&ro.id&&Gr({id:ro==null?void 0:ro.id})},[ro==null?void 0:ro.id]),(0,se.useEffect)(()=>{var Ti,oa,Ea;if(((Ti=Oa==null?void 0:Oa.ability_goals)==null?void 0:Ti.length)>0){const Yo=(oa=Oa==null?void 0:Oa.ability_goals)==null?void 0:oa.find(Eo=>Eo==null?void 0:Eo.is_choice);Pa(Hp(S0({},Yo),{knowledge_graph_route_id:(Ea=Xo==null?void 0:Xo.data)==null?void 0:Ea.knowledge_graph_route_id})),!(Yo!=null&&Yo.id)&&Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u5207\u6362\u80FD\u529B\u56FE\u8C31"}}})}},[Oa==null?void 0:Oa.ability_goals,(wr=Xo==null?void 0:Xo.data)==null?void 0:wr.knowledge_graph_route_id]),se.createElement(vt.Z,{spinning:rl,wrapperClassName:vf.spin,size:"large",tip:"\u6570\u636E\u7EDF\u8BA1\u4E2D\uFF0C\u8BF7\u7A0D\u540E"},((ra=Oa==null?void 0:Oa.ability_goals)==null?void 0:ra.length)>0?se.createElement("div",{className:"flex w-full c-white overflow_hidden",style:{padding:"20rem 40rem",fontSize:"16rem"}},se.createElement("div",{className:" minW-0 flex flex-col",style:{flex:"1.5",gap:"10rem"}},se.createElement("div",{className:" flex-1",style:{padding:"20rem",background:"rgba(32, 47, 79, .34)",borderRadius:"12rem"}},se.createElement("div",{className:"flex item-center gap-10px-rem"},se.createElement("div",{className:"flex item-center rounded-full text-14px-rem mr-auto",style:{background:"#101C39",padding:"0 0 0 20rem",gap:"10rem"}},se.createElement("div",{className:"c-grey-eee text-nowrap "},"\u5F53\u524D\u8DEF\u5F84"),se.createElement(Bn.Z,{title:(ro==null?void 0:ro.name)||"",placement:"topLeft"},se.createElement("div",{className:"multi_ellipsis1"},(ro==null?void 0:ro.name)||"")),se.createElement("div",{className:`current flex item-center text-nowrap ${vf.ChangeBut}`,onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u5207\u6362\u80FD\u529B\u56FE\u8C31"}}})}},se.createElement("span",{className:"iconfont icon-dingbu-qiehuanbanben",style:{fontSize:"14rem"}})," \u66F4\u6362")),(Oa==null?void 0:Oa.can_managed)&&se.createElement("div",{className:"text-12px-rem c-white flex item-center gap-10px-rem"},se.createElement("div",{className:"flex current item-center rounded-full gap-6px-rem text-nowrap",style:{background:"#202F4F",padding:"5rem 8rem"},onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"}}})}},se.createElement("span",{className:"iconfont icon-tianjiatixing",style:{fontSize:"12rem"}})," \u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"),se.createElement("div",{className:"flex current item-center rounded-full gap-6px-rem text-nowrap",style:{background:"#202F4F",padding:"5rem 8rem"},onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u7F16\u8F91\u80FD\u529B\u56FE\u8C31"}}})}},se.createElement("span",{className:"iconfont icon-bianji13",style:{fontSize:"12rem"}})," \u7F16\u8F91\u80FD\u529B\u56FE\u8C31"),se.createElement("div",{className:"flex current item-center rounded-full gap-6px-rem text-nowrap",style:{background:"#202F4F",padding:"5rem 8rem"},onClick:()=>{Bt.default.confirm({title:"\u5220\u9664\u80FD\u529B\u56FE\u8C31",icon:null,centered:!0,width:"500rem",content:se.createElement(se.Fragment,null,se.createElement("div",{className:"text-16px-rem c-black ",style:{marginBottom:"10rem"}},"\u8BF7\u786E\u8BA4\u662F\u5426\u9700\u8981\u5220\u9664\u300A",ro==null?void 0:ro.name,"\u300B\u80FD\u529B\u56FE\u8C31\uFF1F\u5220\u9664\u540E\uFF0C\u5C06\u65E0\u6CD5\u6062\u590D\uFF0C\u8BF7\u8C28\u614E\u64CD\u4F5C\u3002"),se.createElement(fv.Z,{ref:Ti=>va.current=Ti})),okText:"\u786E\u8BA4\u5220\u9664",onOk:()=>Rp(void 0,null,function*(){if(va.current.onVerify())return Promise.reject();const Ti=yield(0,Le.pf)({id:ro==null?void 0:ro.id,subject_id:di==null?void 0:di.pathId});(Ti==null?void 0:Ti.status)===0&&(Rt.ZP.success("\u5220\u9664\u6210\u529F"),so())})})}},se.createElement("span",{className:"iconfont icon-shanchu17",style:{fontSize:"12rem"}})," \u5220\u9664\u80FD\u529B\u56FE\u8C31"))),se.createElement("div",{className:"flex",style:{marginTop:"30rem",gap:"10rem"}},se.createElement("div",{className:"minW-0 flex",style:{flex:"1.5"}},[{title:"\u4E3B\u80FD\u529B\uFF08\u4E2A\uFF09",value:(qi=Xo==null?void 0:Xo.data)==null?void 0:qi.total_count,img:ig},{title:"\u5B50\u80FD\u529B\uFF08\u4E2A\uFF09",value:(aa=Xo==null?void 0:Xo.data)==null?void 0:aa.total_children_count,img:Cg}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"flex-1 minW-0 flex flex-col item-center",style:{gap:"10rem"}},se.createElement("div",{style:{fontSize:"30rem",textShadow:"0 1rem 10rem #0096FC"}},Ti==null?void 0:Ti.value),se.createElement("div",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.title),se.createElement("img",{src:Ti==null?void 0:Ti.img,width:"166rem",height:"160rem",style:{width:"166rem",height:"160rem",marginTop:"-15rem"}})))),se.createElement("div",{className:"flex-1 minW-0 flex flex-col justify-between",style:{gap:"70rem"}},[{title:"\u8986\u76D6\u77E5\u8BC6\u70B9",value:(ca=Xo==null?void 0:Xo.data)==null?void 0:ca.total_knowledge_count,unit:"\u4E2A",percent:(Ra=Xo==null?void 0:Xo.data)==null?void 0:Ra.knowledge_rate,percenttitle:"\u5360\u603B\u77E5\u8BC6\u70B9"},{title:"\u8986\u76D6\u8D44\u6E90\u6570",value:(Ei=Xo==null?void 0:Xo.data)==null?void 0:Ei.total_resource_count,unit:"\u4E2A",percent:(Si=Xo==null?void 0:Xo.data)==null?void 0:Si.resource_rate,percenttitle:"\u5360\u603B\u8D44\u6E90\u6570"}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"flex-1 minW-0 flex relative",style:{gap:"20rem"}},se.createElement("div",{className:"flex flex-col justify-between",style:{marginLeft:"40rem"}},se.createElement("div",{style:{fontSize:"14rem",whiteSpace:"nowrap"}},Ti==null?void 0:Ti.title),se.createElement("div",{style:{fontSize:"26rem",textShadow:(Ti==null?void 0:Ti.value)==0?"":"0 1rem 10rem #0096FC",opacity:(Ti==null?void 0:Ti.value)==0?.9:1}},Ti==null?void 0:Ti.value,se.createElement("span",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.unit))),se.createElement(ll.Z,{type:"dashboard",percent:Ti==null?void 0:Ti.percent,gapDegree:178,strokeWidth:10,className:"absolute",style:{right:"30rem",top:"15rem"},trailColor:"#1E2E72",strokeColor:{"0%":"#0E5FFF","50%":"#2DE1FD","100%":"#2DE1FD"},strokeLinecap:"round",format:Ea=>se.createElement("div",{className:"c-white",style:{fontSize:"12rem",textAlign:"center",marginTop:"-35rem"}},Ea,"%",se.createElement("br",null),se.createElement("br",null),Ti==null?void 0:Ti.percenttitle)})))))),se.createElement("div",{className:"flex-1",style:{padding:"20rem",background:"rgba(32, 47, 79, .34)",borderRadius:"12rem"}},se.createElement("div",{style:{marginBottom:"20rem"}},"\u4E3B\u80FD\u529B\u5B66\u4E60\u60C5\u51B5"),Oa!=null&&Oa.can_managed?se.createElement("div",{className:"flex",style:{gap:"10rem"}},se.createElement("div",{className:"minW-0 flex flex-col flex-1",style:{gap:"13rem"}},[{title:"\u5B66\u4E60\u4EBA\u6570",value:(ba=Xo==null?void 0:Xo.data)==null?void 0:ba.study_count,unit:"",img:ev,bg:"rgba(68, 95, 232, 0.4)"},{title:"\u5B66\u4E60\u5B8C\u6210\u7387",value:(Sa=Xo==null?void 0:Xo.data)==null?void 0:Sa.complete_rate,unit:"%",img:tv,bg:"rgba(182, 129, 0, .4)"},{title:"\u5B66\u4E60\u638C\u63E1\u7387",value:(Uo=Xo==null?void 0:Xo.data)==null?void 0:Uo.grasp_rate,unit:"%",img:Bg,bg:"rgba(6, 145, 127, .4)"}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"relative",style:{borderRadius:"6rem",padding:"20rem",background:Ti==null?void 0:Ti.bg}},se.createElement("div",{style:{fontSize:"14rem",color:"rgba(255,255,255,.8)"}},Ti==null?void 0:Ti.title),se.createElement("div",{style:{fontSize:"26rem"}},Ti==null?void 0:Ti.value,se.createElement("span",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.unit)),se.createElement("img",{className:"absolute",style:{right:"6rem",bottom:"6rem"},height:"35rem",src:Ti==null?void 0:Ti.img})))),se.createElement("div",{className:"flex-2 minW-0"},se.createElement(Lh.Z,{dataSource:_l,legend:{top:null,icon:"roundRect",bottom:10,left:"center",itemWidth:14,itemGap:15,textStyle:{color:"#fff"},formatter:Ti=>Ti}}))):se.createElement("div",{style:{display:"grid",gap:"20rem",gridTemplateColumns:"1fr 1fr"}},ko==null?void 0:ko.map((Ti,oa)=>se.createElement("div",{key:oa,className:"relative c-white",style:{padding:"22rem 30rem",background:Ti==null?void 0:Ti.bg,borderRadius:"6rem"}},se.createElement("img",{src:Ti==null?void 0:Ti.img,width:"43rem",height:"43rem",className:"absolute",style:{right:"22rem",top:"22rem"}}),se.createElement("div",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.title),se.createElement("div",{className:" blod",style:{marginTop:"10rem",fontSize:"26rem",lineHeight:"26rem"}},Ti==null?void 0:Ti.value,se.createElement("span",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.unit)),se.createElement("div",{style:{fontSize:"12rem",marginTop:"26rem"}},se.createElement("div",null,Ti==null?void 0:Ti.ProgressTitle,Ti==null?void 0:Ti.percent,"%"),se.createElement(ll.Z,{percent:Ti==null?void 0:Ti.percent,showInfo:!1,trailColor:Ti==null?void 0:Ti.trailColor,strokeColor:Ti==null?void 0:Ti.strokeColor,style:{marginBottom:"0",marginLeft:"0"}}))))))),se.createElement("div",{className:"flex-2 minW-0 flex item-center justify-center relative"},(Oa==null?void 0:Oa.can_managed)&&se.createElement("div",{className:"absolute flex item-center gap-16px-rem",style:{top:0,right:0}},Ca.get("type")==="classrooms"&&se.createElement("div",{className:`current flex item-center ${vf.ChangeBut}`,onClick:()=>{je.history.push(`/knowledgegraph/${di==null?void 0:di.pathId}/statistics/abilitymap/${ro==null?void 0:ro.id}?type=classrooms&tabs=5`)}},se.createElement("span",{style:{fontSize:"14rem"}},"\u6570\u636E\u7EDF\u8BA1")),se.createElement("div",{className:`current flex item-center ${vf.ChangeBut}`,onClick:()=>{(0,Xt.xg)(`/knowledgegraph/${di.pathId}/abilityMap/edit/${ro==null?void 0:ro.id}${window.location.search}`)}},se.createElement("span",{className:"iconfont icon-dingbu-qiehuanbanben",style:{fontSize:"14rem"}})," \u7F16\u8F91\u80FD\u529B\u76EE\u6807"),Ca.get("type")!=="classrooms"&&se.createElement("div",{className:`current flex item-center ${vf.ChangeBut}`,onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u53D1\u9001\u81F3\u6559\u5B66\u8BFE\u5802",params:{type:"goal"}}}})}},se.createElement("span",{className:"iconfont icon-dingbu-qiehuanbanben",style:{fontSize:"14rem"}})," \u53D1\u9001\u81F3\u8BFE\u5802")),se.createElement("img",{src:$h,className:"absolute",width:"1532rem",height:"100%",style:{left:"50%",pointerEvents:"none",transform:"translateX(-61%)"}}),se.createElement(Q0,{DataProps:((Ua=Xo==null?void 0:Xo.data)==null?void 0:Ua.ability_goals)||[],className:"c-white",style:{backgroundSize:"auto 100%",height:"710rem",width:"710rem"}}))):se.createElement("div",{className:"w-full c-white text-14px-rem flex flex-col justify-center",style:{padding:"70rem 150rem",minHeight:"100vh"}},se.createElement("div",{className:"flex item-center justify-center gap-30px-rem"},(Oa==null?void 0:Oa.can_managed)&&se.createElement("div",{className:"current rounded-full py-10px-rem px-40px-rem",style:{background:"linear-gradient( 90deg, #272B95 0%, #295BAB 100%)"},onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"}}})}},"\u521B\u5EFA\u80FD\u529B\u56FE\u8C31")),se.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem mt-40px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}}," \u8BFE\u7A0B\u80FD\u529B\u56FE\u8C31\u662F\u4EC0\u4E48\uFF1F "),se.createElement("div",{className:"rounded-8px-rem py-16px-rem px-20px-rem w-full mt-20px-rem relative",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},"\u80FD\u529B\u56FE\u8C31\u901A\u8FC7\u6574\u5408\u8BFE\u7A0B\u57F9\u517B\u76EE\u6807\u4E0E\u77E5\u8BC6\u70B9\uFF0C\u6784\u5EFA\u4EE5\u80FD\u529B\u57F9\u517B\u4E3A\u6838\u5FC3\u7684\u6210\u957F\u5730\u56FE\u3002\u5B83\u6E05\u6670\u6807\u6CE8\u6BCF\u4E00\u95E8\u8BFE\u7A0B\u9700\u638C\u63E1\u7684\u6838\u5FC3\u80FD\u529B\uFF0C\u5C06\u62BD\u8C61\u7684\u77E5\u8BC6\u8F6C\u5316\u4E3A\u53EF\u91CF\u5316\u3001\u53EF\u8FFD\u8E2A\u7684\u80FD\u529B\u5750\u6807\uFF0C\u8BA9\u5B66\u4E60\u6709\u65B9\u5411\uFF0C\u6210\u957F\u6709\u8F68\u8FF9\u3002",se.createElement("img",{className:"absolute",src:he(23280),style:{width:"66rem",height:"83rem",right:"8rem",bottom:"16rem"}})),se.createElement("div",{className:"flex gap-40px-rem mt-40px-rem"},se.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},se.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(37618)}) 0 0 /100% 100% no-repeat`,width:"340rem",height:"40rem",color:"#F9F9F9"}}," \u8BFE\u7A0B\u80FD\u529B\u56FE\u8C31\u5728\u5E73\u53F0\u7684\u5E94\u7528 "),se.createElement("div",{className:"w-full flex justify-between gap-32px-rem relative"},se.createElement("img",{className:"absolute",style:{width:"97rem",height:"42rem",left:"200rem",top:"80rem"},src:he(79989)}),se.createElement("img",{className:"absolute",style:{width:"97rem",height:"42rem",right:"210rem",top:"80rem"},src:he(73486)}),[{title:"\u591A\u7EF4\u80FD\u529B\u56FE\u8C31",desc:"\u4E00\u4E2A\u8BFE\u7A0B\u4E0B\u652F\u6301\u6784\u5EFA\u591A\u4E2A\u80FD\u529B\u56FE\u8C31\uFF0C\u5B66\u751F\u53EF\u4EE5\u6839\u636E\u4E2A\u4EBA\u4E13\u4E1A\u3001\u5B66\u4E60\u60C5\u51B5\u7B49\u56E0\u7D20\uFF0C\u9009\u62E9\u4E0D\u540C\u7684\u80FD\u529B\u56FE\u8C31\u8FDB\u884C\u5B66\u4E60\u3002",img:he(4212)},{title:"\u6570\u636E\u5173\u8054",desc:"\u652F\u6301\u5C06\u5B66\u751F\u5728\u6559\u5B66\u8BFE\u5802\u3001\u77E5\u8BC6\u56FE\u8C31\u3001\u5B66\u4E60\u8DEF\u5F84\u4E2D\u7684\u5B66\u4E60\u60C5\u51B5\u8FDB\u884C\u6C47\u603B\u7EDF\u8BA1\uFF0C\u5206\u6790\u51FA\u5B66\u751F\u5728\u80FD\u529B\u56FE\u8C31\u4E2D\u7684\u638C\u63E1\u60C5\u51B5\u3002",img:he(50356)},{title:"\u80FD\u529B\u5B66\u4E60\u8DEF\u5F84",desc:"\u652F\u6301\u6839\u636E\u80FD\u529B\u56FE\u8C31\u4E2D\u7684\u4E3B\u80FD\u529B\u548C\u5B50\u80FD\u529B\u751F\u6210\u5BF9\u5E94\u5B66\u4E60\u8DEF\u5F84\uFF0C\u4FBF\u4E8E\u5B66\u751F\u6309\u7167\u5BF9\u7528\u8DEF\u5F84\u8FDB\u884C\u5B66\u4E60\u3002",img:he(40362)}].map((Ti,oa)=>se.createElement("div",{key:oa,className:`flex flex-col item-center ${oa!=1?"mt-64px-rem":""}`},se.createElement("img",{src:Ti==null?void 0:Ti.img,style:{width:"127rem",height:"119rem"}}),se.createElement("div",{className:"px-20px-rem pb-20px-rem",style:{background:`url(${he(14760)}) 0 0 / 100% 100% no-repeat`}},Ti==null?void 0:Ti.title),se.createElement("div",{className:"mt-6px-rem",style:{width:"20rem",height:"10rem",background:"#7A99DD",clipPath:"polygon(100% 0, 0 0, 50% 100%)",WebkitClipPath:"polygon(100% 0, 0 0, 50% 100%)"}}),se.createElement("div",{className:"px-20px-rem py-20px-rem mt-6px-rem rounded-8px-rem",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259",color:"rgba(255,255,255,0.8)",width:"236rem",height:"153rem"}},Ti==null?void 0:Ti.desc))))),se.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},se.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}}," \u521B\u5EFA\u80FD\u529B\u56FE\u8C31\u6CE8\u610F\u4E8B\u9879 "),se.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-10px-rem"},[{desc:se.createElement("div",{className:"flex flex-col gap-4px-rem"},se.createElement("div",{className:"text-16px-rem"},"\u80FD\u529B\u56FE\u8C31\u6784\u5EFA"),se.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u80FD\u529B\u56FE\u8C31\u57FA\u4E8E\u5B66\u4E60\u8DEF\u5F84\u548C\u77E5\u8BC6\u56FE\u8C31\u521B\u5EFA\uFF0C\u5728\u521B\u5EFA\u80FD\u529B\u56FE\u8C31\u524D\uFF0C\u9700\u521B\u5EFA\u77E5\u8BC6\u56FE\u8C31\u548C\u5B66\u4E60\u8DEF\u5F84\u3002"))},{desc:se.createElement("div",{className:"flex flex-col gap-4px-rem"},se.createElement("div",{className:"text-16px-rem"},"\u5B50\u80FD\u529B/\u4E3B\u80FD\u529B\u638C\u63E1\u5EA6\u8BA1\u7B97"),se.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},se.createElement("span",{className:"c-white"},"\u5B50\u80FD\u529B\uFF1A"),"\u6839\u636E\u5F53\u524D\u5173\u8054\u7684\u8D44\u6E90\u638C\u63E1\u8FDB\u884C\u8BA1\u7B97\uFF0C\u6240\u6709\u8D44\u6E90\u638C\u63E1\u7387\u8FBE\u5230\u8BBE\u7F6E\u6570\u503C\u540E, \u8868\u793A\u638C\u63E1\u6539\u8BE5\u80FD\u529B\uFF1B",se.createElement("br",null),se.createElement("span",{className:"c-white"},"\u4E3B\u80FD\u529B\uFF1A"),"\u6839\u636E\u8BE5\u4E3B\u80FD\u529B\u4E0B\u7684\u5B50\u80FD\u529B\u8FDB\u884C\u8BA1\u7B97\uFF0C\u6240\u6709\u5B50\u80FD\u529B\u638C\u63E1\u540E\uFF0C\u8868\u793A\u4E3B\u80FD\u529B\u638C\u63E1\u3002"))},{desc:se.createElement("div",{className:"flex flex-col gap-4px-rem"},se.createElement("div",{className:"text-16px-rem"},"\u4E3B\u80FD\u529B/\u5B50\u80FD\u529B\u6570\u91CF\u9650\u5236"),se.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u4E00\u4E2A\u80FD\u529B\u56FE\u8C31\u4E2D\u6700\u591A\u521B\u5EFA8\u4E2A\u4E3B\u80FD\u529B\uFF0C\u4E3B\u80FD\u529B\u4E0B\u4E0D\u9650\u5236\u5B50\u80FD\u529B\u6570\u91CF\uFF0C\u5B50\u80FD\u529B\u4E0B\u4E0D\u9650\u5236\u8D44\u6E90\u77E5\u8BC6\u70B9\u5173\u8054\u6570\u91CF\u3002"))}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"px-16px-rem py-22px-rem w-full flex item-center gap-20px-rem rounded-8px-rem",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},se.createElement("div",{className:"text-18px-rem flex item-center justify-center rounded-4px-rem",style:{background:"rgba(48,97,208,0.2)",width:"70rem",height:"80rem"}},(oa+1).toString().padStart(2,"0")),se.createElement("div",{className:"flex-1 minW-0"},Ti==null?void 0:Ti.desc))))))),(xo==null?void 0:xo.key)=="\u5207\u6362\u80FD\u529B\u56FE\u8C31"&&se.createElement(Qs.E_,{type:"goal",open:(xo==null?void 0:xo.key)=="\u5207\u6362\u80FD\u529B\u56FE\u8C31",title:"\u9009\u62E9\u80FD\u529B\u56FE\u8C31",currentSeleteData:ro,onFinish:()=>{so()}}),((xo==null?void 0:xo.key)=="\u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"||(xo==null?void 0:xo.key)=="\u7F16\u8F91\u80FD\u529B\u56FE\u8C31")&&se.createElement(Qs.DZ,{currentSeleteData:ro,onFinish:()=>{so()}}))};var vp=(0,je.connect)(({pathsDetail:Oe})=>({pathsDetail:Oe}))(Ig),Og=he(97846),Ol=he(59301),mp=Object.defineProperty,Ap=Object.getOwnPropertySymbols,M0=Object.prototype.hasOwnProperty,yp=Object.prototype.propertyIsEnumerable,jp=(Oe,Fe,Me)=>Fe in Oe?mp(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,gv=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))M0.call(Fe,Me)&&jp(Oe,Me,Fe[Me]);if(Ap)for(var Me of Ap(Fe))yp.call(Fe,Me)&&jp(Oe,Me,Fe[Me]);return Oe},vv=(Oe,Fe)=>{var Me={};for(var jt in Oe)M0.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&Ap)for(var jt of Ap(Oe))Fe.indexOf(jt)<0&&yp.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},Zp=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Xp=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,activied:An,setactivied:_t}=Fe,Kn=vv(Fe,["pathsDetail","user","globalSetting","loading","dispatch","activied","setactivied"]),wr,ra,qi,aa,ca,Ra,Ei,Si,ba;const{detail:Sa,actionTabs:Uo}=Me,Ua=(0,je.useParams)(),[Oa]=(0,je.useSearchParams)(),[xo,di]=(0,se.useState)([]),[Ca,va]=(0,se.useState)(),[ro,Pa]=(0,se.useState)(),[rl]=Ze.default.useForm(),[xl,Xo]=(0,se.useState)(!1),[_l,ts]=(0,se.useState)(!1),ko=(ra=(wr=Sa==null?void 0:Sa.route_nodes)==null?void 0:wr.find(oa=>oa==null?void 0:oa.is_choice))==null?void 0:ra.id;(0,se.useEffect)(()=>{Oa.get("uuid")&&va(Oa.get("uuid"))},[Oa.get("uuid")]);const Gr=[{name:"\u8BFE\u7A0B\u4FE1\u606F",key:1,content:Ol.createElement(ua,null),isshow:Oa.get("type")!=="classrooms"},{name:"\u8BFE\u7A0B\u56FE\u8C31",key:3,content:((aa=(qi=Me==null?void 0:Me.detail)==null?void 0:qi.nodes)==null?void 0:aa.length)<=1?Ol.createElement("div",{className:"w-full c-white text-14px-rem flex flex-col justify-center",style:{padding:"70rem 150rem",minHeight:"100vh"}},Ol.createElement("div",{className:"flex item-center justify-center gap-30px-rem"},((ca=Me==null?void 0:Me.detail)==null?void 0:ca.can_managed)&&Ol.createElement("div",{className:"current rounded-full py-10px-rem px-40px-rem",style:{background:"linear-gradient( 90deg, #272B95 0%, #295BAB 100%)"},onClick:()=>{ts(!0)}},"\u65B0\u5EFA\u56FE\u8C31"),((Ra=Me==null?void 0:Me.detail)==null?void 0:Ra.can_managed)&&Oa.get("type")!=="classrooms"&&Ol.createElement("div",{className:"current rounded-full py-10px-rem px-40px-rem flex item-center gap-4px-rem",style:{background:"linear-gradient( 90deg, #272B95 0%, #295BAB 100%)"},onClick:()=>Zp(void 0,null,function*(){let oa=yield(0,Ot.ZP)("/api/knowledge/v2/sync.json",{method:"post",body:{subject_id:Ua==null?void 0:Ua.pathId}});oa.status===0&&Rt.ZP.info(oa==null?void 0:oa.message)})},"\u751F\u6210\u56FE\u8C31",Ol.createElement(Bn.Z,{title:Ol.createElement("span",{className:"c-black"},"\u6839\u636E\u65E7\u7248\u77E5\u8BC6\u56FE\u8C31\u5185\u5BB9\u6216\u8BFE\u7A0B\u7AE0\u8282\u53CA\u8D44\u6E90\u5185\u5BB9\u81EA\u52A8\u751F\u6210\u77E5\u8BC6\u56FE\u8C31"),color:"#fff"},Ol.createElement(ah.Z,{style:{color:"#fff",marginLeft:5,marginTop:0},rev:void 0})))),Ol.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem mt-40px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}},"\u8BFE\u7A0B\u77E5\u8BC6\u56FE\u8C31\u662F\u4EC0\u4E48\uFF1F"),Ol.createElement("div",{className:"rounded-8px-rem py-16px-rem px-20px-rem w-full mt-20px-rem relative",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},"\u8BFE\u7A0B\u77E5\u8BC6\u56FE\u8C31\u662F\u4E00\u5F20\u667A\u80FD\u5316\u7684\u77E5\u8BC6\u5BFC\u822A\u5730\u56FE\uFF0C\u901A\u8FC7AI\u6280\u672F\u5C06\u96F6\u6563\u77E5\u8BC6\u70B9\u4E32\u8054\u6210\u903B\u8F91\u7F51\u7EDC\uFF0C\u6E05\u6670\u5C55\u73B0\u5B66\u79D1\u6838\u5FC3\u6982\u5FF5\u3001\u80FD\u529B\u5C42\u7EA7\u4E0E\u5173\u8054\u8DEF\u5F84\u3002\u5B83\u5982\u540C\u4E00\u4F4D\u201C\u8D85\u7EA7\u5BFC\u5E08\u201D\uFF0C\u4E3A\u4F60\u6307\u660E\u5B66\u4EC0\u4E48\u3001\u600E\u4E48\u5B66\u3001\u5B66\u5230\u54EA\u3002",Ol.createElement("img",{className:"absolute",src:he(23280),style:{width:"66rem",height:"83rem",right:"8rem",bottom:"16rem"}})),Ol.createElement("div",{className:"flex gap-40px-rem mt-40px-rem"},Ol.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},Ol.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(37618)}) 0 0 /100% 100% no-repeat`,width:"340rem",height:"40rem",color:"#F9F9F9"}}," \u8BFE\u7A0B\u77E5\u8BC6\u56FE\u8C31\u5728\u5E73\u53F0\u7684\u5E94\u7528 "),Ol.createElement("div",{className:"w-full flex flex-wrap justify-between",style:{background:`url(${he(30019)}) center / auto 100% no-repeat`,height:"446rem",gap:"54rem 200rem"}},[{title:"\u5B66\u4E60\u8DEF\u5F84\u751F\u6210",order:1,desc:"\u5C06\u77E5\u8BC6\u56FE\u8C31\u4E2D\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5173\u7CFB\uFF08\u5305\u542B\u3001\u524D/\u540E\u7EED\uFF09\u548C\u8282\u70B9\u6807\u7B7E\uFF08\u5982\uFF1A\u6587\u79D1/\u7406\u79D1\u3001\u57FA\u7840/\u8FDB\u9636/\u7A81\u7834\uFF09\u5FEB\u901F\u81EA\u52A8\u6784\u5EFA\u5B66\u4E60\u8DEF\u5F84\u3002"},{title:"\u80FD\u529B\u56FE\u8C31\u6784\u5EFA",order:2,desc:"\u5C06\u77E5\u8BC6\u56FE\u8C31\u4E2D\u7684\u8282\u70B9\uFF0C\u6309\u7167\u80FD\u529B\u7EF4\u5EA6\uFF0C\u6784\u5EFA\u8BFE\u7A0B\u80FD\u529B\u56FE\u8C31\uFF0C\u7528\u4E8E\u68C0\u9A8C\u5B66\u751F\u5BF9\u8BFE\u7A0B\u57F9\u517B\u80FD\u529B\u7684\u638C\u63E1\u3002"},{title:"\u8BFE\u5802\u5B66\u60C5\u5206\u6790",order:4,desc:"\u652F\u6301\u4E00\u952E\u5C06\u77E5\u8BC6\u56FE\u8C31\u53D1\u9001\u81F3\u6559\u5B66\u8BFE\u5802\uFF0C\u8BA9\u5B66\u751F\u5728\u6559\u5B66\u8BFE\u5802\u4E2D\u5B8C\u6210\u5B66\u4E60\u4EFB\u52A1\uFF0C\u5E76\u53EF\u4EE5\u6839\u636E\u5B66\u751F\u5B66\u4E60\u60C5\u51B5\u8FDB\u884C\u5B66\u60C5\u5206\u6790\u548C\u5B66\u60C5\u9884\u8B66\u3002"},{title:"\u5B66\u4E60\u8D44\u6E90\u63A8\u8350",order:3,desc:"\u5229\u7528\u77E5\u8BC6\u56FE\u8C31\u4E2D\u7684\u8282\u70B9\u5173\u7CFB\u548C\u6807\u7B7E\u5206\u7C7B\uFF0C\u57FA\u4E8E\u5B66\u751F\u5B66\u4E60\u53CA\u638C\u63E1\u5185\u5BB9\u4E3A\u5B66\u751F\u63A8\u8350\u8584\u5F31\u70B9\u3001\u63D0\u5347\u70B9\u3001\u7A81\u7834\u70B9\u8D44\u6E90\u5B66\u4E60\u3002"}].map((oa,Ea)=>Ol.createElement("div",{key:Ea,className:"py-10px-rem px-20px-rem flex flex-col gap-10px-rem rounded-8px-rem",style:{width:"234rem",height:"160rem",background:"rgba(70,99,162,0.16)",border:"1rem solid #203259",order:oa==null?void 0:oa.order}},Ol.createElement("div",{className:"text-16px-rem"},Ea+1,". ",oa==null?void 0:oa.title),Ol.createElement("div",{style:{color:"rgba(255,255,255,0.8)"}},oa==null?void 0:oa.desc))))),Ol.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},Ol.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}}," \u521B\u5EFA\u77E5\u8BC6\u56FE\u8C31\u6CE8\u610F\u4E8B\u9879 "),Ol.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-10px-rem"},[{desc:Ol.createElement("div",{className:"flex flex-col gap-4px-rem"},Ol.createElement("div",{className:"text-16px-rem"},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u7C7B\u578B"),Ol.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u4E3B\u8981\u5206\u4E3A\u4E24\u79CD\u7C7B\u578B\uFF1A",Ol.createElement("span",{style:{color:"#FFE698"}},"\u6807\u7B7E\u8282\u70B9\u548C\u8D44\u6E90\u8282\u70B9"),Ol.createElement("br",null),Ol.createElement("span",{className:"c-white"},"\u6807\u7B7E\u8282\u70B9\uFF1A"),"\u7528\u4E8E\u521B\u5EFA\u6587\u672C\u5185\u5BB9\uFF0C\u5982\u7AE0\u8282\u3001\u77E5\u8BC6\u70B9\u3002",Ol.createElement("br",null),Ol.createElement("span",{className:"c-white"},"\u8D44\u6E90\u8282\u70B9\uFF1A"),"\u7528\u4E8E\u521B\u5EFA\u8D44\u6E90\u5185\u5BB9\uFF0C\u53EF\u4EE5\u9009\u62E9\u5E73\u53F0\u8D44\u6E90\u3001\u672C\u5730\u4E0A\u4F20\u6587\u4EF6\u548C\u5916\u94FE\u3002",Ol.createElement("br",null)))},{desc:Ol.createElement("div",{className:"flex flex-col gap-4px-rem"},Ol.createElement("div",{className:"text-16px-rem"},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u6807\u7B7E"),Ol.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u77E5\u8BC6\u56FE\u8C31\u6807\u7B7E\u53EF\u4EE5\u7528\u6237\u81EA\u5B9A\u4E49\u6DFB\u52A0\uFF0C\u8282\u70B9\u6807\u7B7E\u4E3B\u8981\u7528\u4E8E\u7B5B\u9009\u8282\u70B9\uFF0C\u5982\u6587\u79D1/\u7406\u79D1/\u5DE5\u79D1\u3001\u7B80\u5355/\u8FDB\u9636/\u56F0\u96BE\u3002",Ol.createElement("br",null),Ol.createElement("span",{style:{color:"#FFE698"}},"\u5EFA\u8BAE\u521B\u5EFA\u56FE\u8C31\u65F6\uFF0C\u5C06\u6807\u7B7E\u540C\u6B65\u5EFA\u7ACB\uFF0C\u540E\u7EED\u5728\u521B\u5EFA\u5B66\u4E60\u8DEF\u5F84\u548C\u80FD\u529B\u56FE\u8C31\u65F6\u53EF\u4EE5\u4F7F\u7528\u3002")))},{desc:Ol.createElement("div",{className:"flex flex-col gap-4px-rem"},Ol.createElement("div",{className:"text-16px-rem"},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u5173\u7CFB"),Ol.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u77E5\u8BC6\u56FE\u8C31\u5173\u7CFB",Ol.createElement("span",{style:{color:"#FFE698"}},"\u6709\u5305\u542B/\u88AB\u5305\u542B\u3001\u524D\u5E8F/\u540E\u7EED\u3001\u5173\u8054\u3002"),Ol.createElement("br",null),Ol.createElement("span",{style:{color:"#FFE698"}},"\u5EFA\u8BAE\u521B\u5EFA\u56FE\u8C31\u65F6\uFF0C\u5C06\u5173\u7CFB\u540C\u6B65\u5EFA\u7ACB\uFF0C\u5728\u521B\u5EFA\u5B66\u4E60\u8DEF\u5F84\u65F6\uFF0C\u5C06\u6839\u636E\u524D\u5E8F/\u540E\u7EED\u5173\u7CFB\u751F\u6210\u5B66\u4E60\u8DEF\u5F84\u3002")))}].map((oa,Ea)=>Ol.createElement("div",{key:Ea,className:"py-22px-rem px-16px-rem w-full flex item-center gap-20px-rem rounded-8px-rem",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},Ol.createElement("div",{className:"text-18px-rem flex item-center justify-center rounded-4px-rem",style:{background:"rgba(48,97,208,0.2)",width:"70rem",height:"80rem"}},(Ea+1).toString().padStart(2,"0")),Ol.createElement("div",{className:"flex-1 minW-0"},oa==null?void 0:oa.desc))))))):Ol.createElement(qh,{settpacti:va,tpacti:Ca}),isshow:!0},{name:"\u5B66\u4E60\u8DEF\u5F84",key:2,content:Ol.createElement(Ac,{setxxljac:Pa,xxljac:ro}),isshow:!0},{name:"\u4EA4\u6D41\u53CD\u9988",key:4,content:Ol.createElement(Zn,null),isshow:Oa.get("type")!=="classrooms"},{name:"\u80FD\u529B\u56FE\u8C31",key:5,content:Ol.createElement(vp,null),isshow:!0},{name:"\u6570\u636E\u7EDF\u8BA1",key:6,content:Ol.createElement(Og.default,{learningpathId:ko,isCompontent:!0}),isshow:Oa.get("type")=="classrooms"&&ko&&(0,ol.GJ)()}].filter(oa=>oa==null?void 0:oa.isshow);(0,se.useEffect)(()=>{var oa,Ea;if((oa=Me==null?void 0:Me.detail)!=null&&oa.nodes){let Yo=[...(Ea=Me==null?void 0:Me.detail)==null?void 0:Ea.nodes];di(Yo==null?void 0:Yo.splice(1))}},[(Ei=Me==null?void 0:Me.detail)==null?void 0:Ei.nodes]),(0,se.useEffect)(()=>Fa.Z.subscribe("create_a_knowledge_map",()=>{ts(!0)}),[]);const so=(oa={})=>{Fr({type:"pathsDetail/getKnowledgeGraphs",payload:gv({graphable_type:Oa.get("type")==="classrooms"?"course":"subject",graphable_id:Ua.pathId},oa)})},Ti=oa=>Zp(void 0,null,function*(){var Ea,Yo,Eo,Ss,_s,il,Ks;const{nodeType:Kl,description:Hl,name:Hu,tags:Wc}=oa;Xo(!0);const Gs=yield(0,Ot.ZP)("/api/knowledge/v2/add_node.json",{method:"POST",body:{label:"\u56FE\u8C31",subject_id:Ua==null?void 0:Ua.pathId,properties:{description:Hl,rootNodeUuid:(Eo=(Yo=(Ea=Me==null?void 0:Me.detail)==null?void 0:Ea.nodes)==null?void 0:Yo[0])==null?void 0:Eo.uuid,name:Hu,nodeType:Kl[0],tags:(Wc==null?void 0:Wc.join("\uFF0C"))||"",color:"1"},relationships:[{startNodeUuid:(il=(_s=(Ss=Me==null?void 0:Me.detail)==null?void 0:Ss.nodes)==null?void 0:_s[0])==null?void 0:il.uuid,type:"\u5305\u542B"}]}});(Gs==null?void 0:Gs.status)===0&&(ts(!1),va((Ks=Gs==null?void 0:Gs.data)==null?void 0:Ks.uuid),_t(3),so({graphable_id:Ua==null?void 0:Ua.pathId})),Xo(!1)});return Ol.createElement("div",{className:co.content,style:{paddingTop:"20rem"}},Ol.createElement("div",{style:{padding:"0 40rem",position:"sticky",top:0,zIndex:99}},Ol.createElement(hp,{activied:An,setactivied:_t,TabsData:Gr,tplist:xo,settpacti:va,tpacti:Ca,setxxljac:Pa,xxljac:ro})),(Uo==null?void 0:Uo.key)=="\u53D1\u9001\u81F3\u6559\u5B66\u8BFE\u5802"&&Ol.createElement(Qs.NI,{onFinish:()=>{so()},type:(Si=Uo==null?void 0:Uo.params)==null?void 0:Si.type}),Ol.createElement(Bt.default,{open:_l,centered:!0,width:"1000rem",okText:"\u4FDD\u5B58",onCancel:()=>ts(!1),cancelText:"\u53D6\u6D88",afterClose:()=>{rl.resetFields()},confirmLoading:xl,onOk:()=>rl.submit(),title:"\u65B0\u589E\u77E5\u8BC6\u56FE\u8C31"},Ol.createElement("div",{className:co.modal},Ol.createElement("div",{className:co.mHead},"\u8282\u70B9\u5C5E\u6027"),Ol.createElement(Ze.default,{form:rl,scrollToFirstError:!0,layout:"horizontal",colon:!1,size:"large",labelCol:{flex:"110rem"},onFinish:Ti,className:co.form},Ol.createElement(Ze.default.Item,{label:"\u56FE\u8C31\u540D\u79F0",name:"name",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u8282\u70B9\u540D\u79F0"},{type:"string",max:60,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},Ol.createElement(Et.default,{maxLength:60,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),Ol.createElement(Ze.default.Item,{label:"\u7B80\u4ECB",name:"description",rules:[{type:"string",max:5e3,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},Ol.createElement(Et.default.TextArea,{maxLength:5e3,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),Ol.createElement(Ze.default.Item,{className:co.mType,label:Ol.createElement("span",null,"\u56FE\u8C31\u7C7B\u578B ",Ol.createElement(Bn.Z,{title:"\u5F53\u524D\u77E5\u8BC6\u56FE\u8C31\u7684\u7C7B\u578B\uFF0C\u5982\uFF1A\u5927\u7EB2\u56FE\u8C31\u3001\u80FD\u529B\u56FE\u8C31"},Ol.createElement(ah.Z,null))),name:"nodeType",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u8282\u70B9\u7C7B\u578B"}]},Ol.createElement(ot.Z,{subjectId:Ua==null?void 0:Ua.pathId,type:1}))))),Ol.createElement("div",{className:co.content},(ba=Gr.find(oa=>oa.key===An))==null?void 0:ba.content))};var K0=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(Xp),Vp=he(59301),Ng=Object.getOwnPropertySymbols,mv=Object.prototype.hasOwnProperty,bp=Object.prototype.propertyIsEnumerable,Fg=(Oe,Fe)=>{var Me={};for(var jt in Oe)mv.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&Ng)for(var jt of Ng(Oe))Fe.indexOf(jt)<0&&bp.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},xp=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});function Ep(Oe){const Fe=(Mn,Tr)=>{if(Mn.localName===Tr)return Mn;for(let Fr=0,An=Mn;An=An.parentNode;Fr++){if(An.localName===Tr)return An;if(An==document.documentElement)return!1}},Me=Oe.target,jt=Fe(Me,"a");if(console.log([jt],jt==null?void 0:jt.href,44),!(jt!=null&&jt.href)&&Me.tagName.toUpperCase()==="IMG"){let Mn=Me.src||Me.getAttribute("src");Mn&&(Mn==null?void 0:Mn.indexOf("/images/avatars/User"))===-1&&(Oe.stopPropagation(),Oe.preventDefault(),Fa.Z.publish("preview-image",Mn))}}const Qp=Oe=>{var Fe=Oe,{pathsDetail:Me,globalSetting:jt,loading:Mn,dispatch:Tr}=Fe,Fr=Fg(Fe,["pathsDetail","globalSetting","loading","dispatch"]);const[An]=(0,je.useSearchParams)(),_t=(0,je.useParams)(),Kn=(0,se.useRef)(),[wr,ra]=(0,se.useState)((An==null?void 0:An.get("type"))!=="classrooms"?3:1);(0,se.useEffect)(()=>{An.get("tabs")&&ra(parseInt(An.get("tabs"))||3)},[An.get("tabs")]),(0,se.useEffect)(()=>{if(Kn.current)return Kn.current.addEventListener("mousedown",Ep),()=>{var aa;(aa=Kn.current)==null||aa.removeEventListener("mousedown",Ep)}},[Kn.current]),(0,se.useEffect)(()=>{_t.pathId&&qi()},[_t.pathId]),(0,se.useEffect)(()=>(Tr({type:"globalSetting/footerToggle",payload:!1}),()=>{Tr({type:"globalSetting/footerToggle",payload:!0})}),[]);const qi=()=>xp(void 0,null,function*(){const aa=yield Tr({type:"pathsDetail/getKnowledgeGraphs",payload:{graphable_type:An.get("type")==="classrooms"?"course":"subject",graphable_id:_t.pathId}});An.get("type")!="classrooms"&&(aa!=null&&aa.id)&&An.get("token")&&(location.href=location.pathname)});return Vp.createElement(vt.Z,{spinning:!1},Vp.createElement("section",{id:"knowledgegraphDetail",className:_o.bg,style:{background:An.get("type")!=="classrooms"?"#010A23":""}},Vp.createElement(Ni,null),Vp.createElement(K0,{activied:wr,setactivied:ra})))};var G0=(0,je.connect)(({pathsDetail:Oe,loading:Fe,globalSetting:Me})=>({pathsDetail:Oe,globalSetting:Me,loading:Fe}))(Qp)},20122:function(Hn,xr,he){"use strict";he.d(xr,{Z:function(){return $t}});var se=he(59301),je={tag:"tag___aFk2e",active:"active___xFrif",tagsModal:"tagsModal___PRPSO",btn:"btn___IfO8v",modal:"modal___X3fUd",mHead:"mHead___IvIZN",body:"body___FhLrG",add:"add___YJGg_",error:"error___JoLGM"},Bt=he(8591),Rt=he(43418),Dt=he(71418),dt=he(92832),Le=he(92310),Ze=he.n(Le),qe=he(22972),It=he(43332),Et=he(59301),vt=Object.defineProperty,Ot=Object.getOwnPropertySymbols,Ye=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable,pt=(Ft,Gt,_e)=>Gt in Ft?vt(Ft,Gt,{enumerable:!0,configurable:!0,writable:!0,value:_e}):Ft[Gt]=_e,mt=(Ft,Gt)=>{for(var _e in Gt||(Gt={}))Ye.call(Gt,_e)&&pt(Ft,_e,Gt[_e]);if(Ot)for(var _e of Ot(Gt))We.call(Gt,_e)&&pt(Ft,_e,Gt[_e]);return Ft},Jt=(Ft,Gt,_e)=>new Promise((Bn,ur)=>{var fn=et=>{try{gn(_e.next(et))}catch(nn){ur(nn)}},Xt=et=>{try{gn(_e.throw(et))}catch(nn){ur(nn)}},gn=et=>et.done?Bn(et.value):Promise.resolve(et.value).then(fn,Xt);gn((_e=_e.apply(Ft,Gt)).next())}),$t=({value:Ft=[],onChange:Gt,type:_e,subjectId:Bn})=>{const[ur,fn]=(0,se.useState)(!1),[Xt,gn]=(0,se.useState)([]),[et,nn]=(0,se.useState)([]),[Ct,Ln]=(0,se.useState)([]),[Dn,xn]=(0,se.useState)(""),[Dr,oi]=(0,se.useState)(""),[yt,tt]=(0,se.useState)(!1),[Rn,fi]=(0,se.useState)(!1),li=[{background:"#6236FF",borderColor:"#9D82FF"},{background:"#6DB9FF",borderColor:"#6DB9FF"},{background:"rgba(27,175,234,0.8)",borderColor:"#68D5FF"},{background:"#C1AC15",borderColor:"#DCC51C"},{background:"#E07E37",borderColor:"#F79046"},{background:"rgba(29,94,255,0.8)",borderColor:"#6D97FE"},{background:"#E75454",borderColor:"#FE8383"},{background:"#A557D8",borderColor:"#C57AF6"},{background:"#2CA768",borderColor:"#43CC86"},{background:"#1F9269",borderColor:"#38B588"},{background:"#CA7720",borderColor:"#E99338"},{background:"rgba(224,32,32,0.8)",borderColor:"#E02020"},{background:"rgba(255,126,15,0.8)",borderColor:"#FF7E0F"},{background:"rgba(29,94,255,0.8)",borderColor:"#1D5EFF"},{background:"#2BAC8E",borderColor:"#30CB9D"},{background:"#EE5D5D",borderColor:"#FF8181"},{background:"#7E5AFE",borderColor:"#9173FA"},{background:"#3ABCEF",borderColor:"#6FD6FF"},{background:"#B132C2",borderColor:"#C57AF6"},{background:"#46A4FB",borderColor:"#72BBFF"},{background:"#C1AC15",borderColor:"#DCC51C"},{background:"#E07E37",borderColor:"#F79046"},{background:"#1D5EFF",borderColor:"#6D97FE"},{background:"#2CA768",borderColor:"#43CC86"},{background:"#A557D8",borderColor:"#C57AF6"},{background:"#1F9269",borderColor:"#38B588"},{background:"#CA7720",borderColor:"#E99338"}],In=_e===1?"\u7C7B\u578B":"\u6807\u7B7E",an=_e===1?"0":"4";(0,se.useEffect)(()=>{ur&&(Ln(Ft),Xr())},[ur]);const Xr=()=>Jt(void 0,null,function*(){fi(!0);const qn=yield(0,qe.ZP)("/api/knowledge_items.json",{method:"get",params:{subject_id:Bn,item_type:an}});(qn==null?void 0:qn.status)===0&&(gn(qn==null?void 0:qn.data),nn((qn==null?void 0:qn.data)||[])),fi(!1)}),Or=qn=>Jt(void 0,null,function*(){var On;fi(!0);const Je=(On=et==null?void 0:et.find(Ce=>Ce.name===qn))==null?void 0:On.id,Ie=yield(0,qe.ZP)(`/api/knowledge_items/${Je}.json`,{method:"delete",body:{subject_id:Bn}});if((Ie==null?void 0:Ie.status)===0){Xr(),Bt.ZP.success("\u5220\u9664\u6210\u529F");return}fi(!1)}),zn=({title:qn="",style:On={},showDelete:Je=!0,modal:Ie=!1,active:Ce=!1,showdeletes:He=!1})=>{const we=(Lt=>Lt.split("").reduce((Zt,ar)=>Zt+ar.charCodeAt(0),0))(qn)%li.length,{background:Vt,borderColor:Cn}=li[we];return Et.createElement("div",{className:Ze()(je.tag,Ce?je.active:""),onClick:()=>{Ie&&(ur===1&&Ln([qn]),ur===2&&(Ct.includes(qn)?Ln(Ct.filter(Lt=>Lt!==qn)):Ln([...Ct,qn])))},style:mt({background:Vt,borderColor:Cn},On)},Et.createElement("span",null,qn),Je&&Et.createElement("i",{style:{display:!He&&"none"},onClick:Lt=>{Lt.stopPropagation(),Ie?Or(qn):Gt(Ft.filter(Zt=>Zt!==qn))},className:"iconfont icon-shanchu5"}))},Qn=()=>{Gt([...Ct]),fn(!1)},Jn=()=>Jt(void 0,null,function*(){if(!Dn.replace(/\s+/g,"")){oi(`${In}\u4E0D\u80FD\u4E3A\u7A7A`);return}if(Xt.includes(Dn)){oi(`\u8BE5${In}\u5DF2\u5B58\u5728\uFF0C\u8BF7\u52FF\u91CD\u590D\u6DFB\u52A0\uFF01`);return}fi(!0);const qn=yield(0,qe.ZP)("/api/knowledge_items.json",{method:"post",body:{subject_id:Bn,item_type:an,name:Dn}});if((qn==null?void 0:qn.status)===0){yield Xr(),tt(!1),Bt.ZP.success("\u6DFB\u52A0\u6210\u529F");return}fi(!1)});return Et.createElement("div",{className:je.tagsModal},_e===1&&Et.createElement(Et.Fragment,null,Ft==null?void 0:Ft.map((qn,On)=>Et.createElement(zn,{key:On,title:qn,showDelete:!1,style:{marginRight:"20rem"}})),Et.createElement("div",{onClick:()=>fn(1),style:{marginBottom:"20rem"},className:je.btn},Et.createElement("i",{className:"iconfont icon-genghuanguanliyuan1"}),Ft!=null&&Ft.length?"\u66F4\u6362":"\u9009\u62E9","\u7C7B\u578B")),_e===2&&Et.createElement(Et.Fragment,null,Ft==null?void 0:Ft.map((qn,On)=>Et.createElement(zn,{key:On,title:qn})),Et.createElement("div",{onClick:()=>fn(2),className:je.btn,style:{marginBottom:"10rem"}},Et.createElement("i",{className:"iconfont icon-tianjiatixing"}),Ft!=null&&Ft.length?"\u66F4\u6362":"\u9009\u62E9","\u6807\u7B7E")),Et.createElement(Rt.default,{open:!!ur,centered:!0,width:"1000rem",okText:"\u4FDD\u5B58",onCancel:()=>fn(!1),cancelText:"\u53D6\u6D88",afterClose:()=>{tt(!1),oi(""),xn("")},onOk:Qn,title:`\u9009\u62E9${In}`},Et.createElement("div",{className:je.modal},Et.createElement(Dt.Z,{spinning:Rn},Et.createElement("div",{className:je.mHead},Et.createElement("b",null),Et.createElement("span",null,`\u8282\u70B9${In}`,"\uFF08",Xt.length,"\uFF09"),Et.createElement("div",{onClick:()=>{yt||(tt(!0),oi(""),xn(""))},className:je.btn},Et.createElement("i",{className:"iconfont icon-tianjiatixing"}),"\u6DFB\u52A0")),Et.createElement("div",{className:je.body},!(Xt!=null&&Xt.length)&&!yt&&Et.createElement(It.Z,{style:{height:"230rem"}}),Xt==null?void 0:Xt.map((qn,On)=>Et.createElement(zn,{showDelete:!(Ct!=null&&Ct.includes(qn.name)),showdeletes:!!qn.id,modal:!0,style:{cursor:"pointer",verticalAlign:"center",marginTop:"10rem",marginBottom:"10rem"},active:Ct.includes(qn.name),key:On,title:qn.name})),yt&&Et.createElement("div",{className:je.add},Et.createElement(dt.default,{style:{width:"rem"},size:"large",value:Dn,onChange:qn=>{oi(""),xn(qn.target.value)}}),Et.createElement("i",{onClick:Jn,className:"iconfont icon-dui",style:{color:"#1B8565"}}),Et.createElement("i",{onClick:()=>tt(!1),className:"iconfont icon-shanchu10",style:{color:"#9096A3"}}),!!Dr&&Et.createElement("div",{className:je.error},Dr)))))))}},35743:function(Hn,xr,he){"use strict";var se=he(59301),je=Object.defineProperty,Bt=Object.getOwnPropertySymbols,Rt=Object.prototype.hasOwnProperty,Dt=Object.prototype.propertyIsEnumerable,dt=(It,Et,vt)=>Et in It?je(It,Et,{enumerable:!0,configurable:!0,writable:!0,value:vt}):It[Et]=vt,Le=(It,Et)=>{for(var vt in Et||(Et={}))Rt.call(Et,vt)&&dt(It,vt,Et[vt]);if(Bt)for(var vt of Bt(Et))Dt.call(Et,vt)&&dt(It,vt,Et[vt]);return It};const Ze=()=>`shadow-${Math.random().toString(36).slice(2,9)}`,qe=({percentage:It,startAngle:Et=270,strokeColor:vt="#42BECD",trackColor:Ot="#e6e6e6",innerBackgroundColor:Ye="#fff",text:We="",textColor:pt="#000",textSize:mt="1rem",textPadding:Jt="28rem",outerDiameter:Qt,innerDiameter:$t,maxTextLength:Ft=6,onClick:Gt,hoverEffect:_e=!0,style:Bn})=>{const[ur,fn]=(0,se.useState)(0),[Xt,gn]=(0,se.useState)(0),[et,nn]=(0,se.useState)(!1),Ct=Or=>{var zn,Qn;const Jn=parseFloat(Or),qn=parseFloat((Qn=(zn=document.documentElement)==null?void 0:zn.style)==null?void 0:Qn.fontSize);return Jn*qn},Ln=()=>{fn(Ct(Qt)),gn(Ct($t))};(0,se.useEffect)(()=>(Ln(),window.addEventListener("resize",Ln),()=>window.removeEventListener("resize",Ln)),[Qt,$t]);const Dn=ur/2,xn=Xt/2,Dr=(ur-Xt)/2,oi=Dn-Dr,yt=2*Math.PI*oi,tt=yt-It/100*yt,Rn=`rotate(${Et} ${Dn} ${Dn})`,li=((Or,zn)=>zn&&Or.length>zn?Or.slice(0,zn-1)+"...":Or)(We,Ft),In=()=>{_e&&nn(!0)},an=()=>{nn(!1)},Xr=Ct("4rem");return se.createElement("svg",{width:ur,height:ur,viewBox:`0 0 ${ur} ${ur}`,xmlns:"http://www.w3.org/2000/svg",onClick:Gt,onMouseEnter:In,onMouseLeave:an,style:Le({cursor:Gt?"pointer":"default"},Bn)},se.createElement("circle",{cx:Dn,cy:Dn,r:xn,fill:Ye}),se.createElement("circle",{cx:Dn,cy:Dn,r:oi,fill:"none",stroke:Ot,strokeWidth:Dr}),se.createElement("circle",{cx:Dn,cy:Dn,r:oi,fill:"none",stroke:vt,strokeWidth:Dr,strokeDasharray:yt,strokeDashoffset:tt,strokeLinecap:"round",transform:Rn}),et&&se.createElement("circle",{cx:Dn,cy:Dn,r:oi+Dr/2,fill:"none",stroke:"#FA6400",strokeWidth:Ct("4rem")}),We&&se.createElement("foreignObject",{x:Dn-xn,y:Dn-xn,width:Xt,height:Xt},se.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",padding:Jt}},se.createElement("b",{style:{color:pt,fontSize:mt,textAlign:"center"},title:We},li))))};xr.Z=qe},22861:function(Hn,xr,he){"use strict";var se=he(59301),je=he(76411),Bt=he.n(je),Rt=he(48961),Dt=he.n(Rt),dt=he(59301),Le=Object.defineProperty,Ze=Object.getOwnPropertySymbols,qe=Object.prototype.hasOwnProperty,It=Object.prototype.propertyIsEnumerable,Et=(Ye,We,pt)=>We in Ye?Le(Ye,We,{enumerable:!0,configurable:!0,writable:!0,value:pt}):Ye[We]=pt,vt=(Ye,We)=>{for(var pt in We||(We={}))qe.call(We,pt)&&Et(Ye,pt,We[pt]);if(Ze)for(var pt of Ze(We))It.call(We,pt)&&Et(Ye,pt,We[pt]);return Ye};const Ot=({dataSource:Ye,height:We,labelTextColor:pt,legend:mt={}})=>{console.log("dataSource:",Ye);const Jt=(0,se.useRef)(null),Qt=(0,se.useRef)(null),[$t,Ft]=(0,se.useState)({}),[Gt,_e]=(0,se.useState)(""),[Bn,ur]=(0,se.useState)(""),fn=Ye||[{name:"\u638C\u63E1\u738780%~100%",value:1,itemStyle:{color:"rgb(223,209,38)"}},{name:"\u638C\u63D0\u738760%~79%",value:2,itemStyle:{color:"rgb(6,234,230)"}},{name:"\u638C\u63A8\u738759%\u4EE5\u4E0B",value:3,itemStyle:{color:"rgb(6,110,247)"}}];(0,se.useEffect)(()=>(gn(),window.addEventListener("resize",Xt),()=>{window.removeEventListener("resize",Xt)}),[]),(0,se.useEffect)(()=>{Ye!=null&&Ye.length&&Xt()},[Ye]);const Xt=()=>{var xn,Dr;const oi=et(fn,.8);(xn=Qt.current)==null||xn.setOption(oi),(Dr=Qt.current)==null||Dr.resize()},gn=()=>{const xn=Jt.current;Qt.current=je.init(xn);const Dr=et(fn,.8);Ft(Dr),Qt.current.setOption(Dr),Qt.current.getZr().off("mousewheel"),Dr.series.push({name:"\u638C\u63E1\u7387",type:"pie",labelLine:{length:10,length2:10},startAngle:-20,clockwise:!1,radius:["20%","50%"],center:["50%","50%"],data:fn,itemStyle:{opacity:0}}),Qt.current.setOption(Dr),Dn(Qt.current)},et=(xn,Dr)=>{let oi,yt=[],tt=0,Rn=0,fi=0,li=[],In=[],an=1-Dr;xn.sort((Or,zn)=>zn.value-Or.value);for(let Or=0;OrJn.name===Or)[0],Qn=Ln(zn.value*100,2)+"%";return`${zn.name} ${Qn}`}},mt),labelLine:{show:!0,lineStyle:{color:"#7BC0CB"}},label:{show:!0,position:"outside",rich:{b:{color:pt||"#FFF",fontSize:12,lineHeight:20},c:{fontSize:16,lineHeight:24,color:pt||"#FFF"}},formatter:`{b|{b} +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function rn(Oe,Fe){return ut(Oe)||bt(Oe,Fe)||sn(Oe,Fe)||Ht()}function Vn(Oe){return at(Oe)||Pt(Oe)||sn(Oe)||ln()}function sn(Oe,Fe){if(Oe){if(typeof Oe=="string")return Ue(Oe,Fe);var Me={}.toString.call(Oe).slice(8,-1);return Me==="Object"&&Oe.constructor&&(Me=Oe.constructor.name),Me==="Map"||Me==="Set"?Array.from(Oe):Me==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Me)?Ue(Oe,Fe):void 0}}function mn(Oe){var Fe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Me=Fe.wrapperElementType,jt=Me===void 0?"div":Me,Mn=Fe.nodeMapper,Tr=Mn===void 0?function(wr){return wr}:Mn,Fr=Fe.methodNames,An=Fr===void 0?[]:Fr,_t=Fe.initPropNames,Kn=_t===void 0?[]:_t;return(0,se.forwardRef)(function(wr,ra){var qi=(0,se.useRef)(),aa=(0,se.useMemo)(function(){var Ei=Object.fromEntries(Kn.filter(function(Si){return wr.hasOwnProperty(Si)}).map(function(Si){return[Si,wr[Si]]}));return Oe(Ei)},[]);Sn(function(){aa(Tr(qi.current))},se.useLayoutEffect),Sn(function(){return aa._destructor instanceof Function?aa._destructor:void 0});var ca=(0,se.useCallback)(function(Ei){for(var Si=arguments.length,ba=new Array(Si>1?Si-1:0),Sa=1;Sa1&&arguments[1]!==void 0?arguments[1]:se.useEffect,Me=(0,se.useRef)(),jt=(0,se.useRef)(!1),Mn=(0,se.useRef)(!1),Tr=(0,se.useState)(0),Fr=rn(Tr,2);Fr[0];var An=Fr[1];jt.current&&(Mn.current=!0),Fe(function(){return jt.current||(Me.current=Oe(),jt.current=!0),An(function(_t){return _t+1}),function(){Mn.current&&Me.current&&Me.current()}},[])}var wn=he(47174),wt=he(12708);const Kr={width:wt.number,height:wt.number,graphData:wt.shape({nodes:wt.arrayOf(wt.object).isRequired,links:wt.arrayOf(wt.object).isRequired}),backgroundColor:wt.string,nodeRelSize:wt.number,nodeId:wt.string,nodeLabel:wt.oneOfType([wt.string,wt.func]),nodeVal:wt.oneOfType([wt.number,wt.string,wt.func]),nodeVisibility:wt.oneOfType([wt.bool,wt.string,wt.func]),nodeColor:wt.oneOfType([wt.string,wt.func]),nodeAutoColorBy:wt.oneOfType([wt.string,wt.func]),onNodeHover:wt.func,onNodeClick:wt.func,linkSource:wt.string,linkTarget:wt.string,linkLabel:wt.oneOfType([wt.string,wt.func]),linkVisibility:wt.oneOfType([wt.bool,wt.string,wt.func]),linkColor:wt.oneOfType([wt.string,wt.func]),linkAutoColorBy:wt.oneOfType([wt.string,wt.func]),linkWidth:wt.oneOfType([wt.number,wt.string,wt.func]),linkCurvature:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalArrowLength:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalArrowColor:wt.oneOfType([wt.string,wt.func]),linkDirectionalArrowRelPos:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticles:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleSpeed:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleOffset:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleWidth:wt.oneOfType([wt.number,wt.string,wt.func]),linkDirectionalParticleColor:wt.oneOfType([wt.string,wt.func]),onLinkHover:wt.func,onLinkClick:wt.func,dagMode:wt.oneOf(["td","bu","lr","rl","zin","zout","radialin","radialout"]),dagLevelDistance:wt.number,dagNodeFilter:wt.func,onDagError:wt.func,d3AlphaMin:wt.number,d3AlphaDecay:wt.number,d3VelocityDecay:wt.number,warmupTicks:wt.number,cooldownTicks:wt.number,cooldownTime:wt.number,onEngineTick:wt.func,onEngineStop:wt.func,getGraphBbox:wt.func},Pi={zoomToFit:wt.func,onNodeRightClick:wt.func,onNodeDrag:wt.func,onNodeDragEnd:wt.func,onLinkRightClick:wt.func,linkHoverPrecision:wt.number,onBackgroundClick:wt.func,onBackgroundRightClick:wt.func,showPointerCursor:wt.oneOfType([wt.bool,wt.func]),enablePointerInteraction:wt.bool,enableNodeDrag:wt.bool},ja={showNavInfo:wt.bool,nodeOpacity:wt.number,nodeResolution:wt.number,nodeThreeObject:wt.oneOfType([wt.object,wt.string,wt.func]),nodeThreeObjectExtend:wt.oneOfType([wt.bool,wt.string,wt.func]),nodePositionUpdate:wt.func,linkOpacity:wt.number,linkResolution:wt.number,linkCurveRotation:wt.oneOfType([wt.number,wt.string,wt.func]),linkMaterial:wt.oneOfType([wt.object,wt.string,wt.func]),linkThreeObject:wt.oneOfType([wt.object,wt.string,wt.func]),linkThreeObjectExtend:wt.oneOfType([wt.bool,wt.string,wt.func]),linkPositionUpdate:wt.func,linkDirectionalArrowResolution:wt.number,linkDirectionalParticleResolution:wt.number,linkDirectionalParticleThreeObject:wt.oneOfType([wt.object,wt.string,wt.func]),forceEngine:wt.oneOf(["d3","ngraph"]),ngraphPhysics:wt.object,numDimensions:wt.oneOf([1,2,3])};Object.assign({},Kr,Pi,{linkLineDash:wt.oneOfType([wt.arrayOf(wt.number),wt.string,wt.func]),nodeCanvasObjectMode:wt.oneOfType([wt.string,wt.func]),nodeCanvasObject:wt.func,nodePointerAreaPaint:wt.func,linkCanvasObjectMode:wt.oneOfType([wt.string,wt.func]),linkCanvasObject:wt.func,linkPointerAreaPaint:wt.func,linkDirectionalParticleCanvasObject:wt.func,autoPauseRedraw:wt.bool,minZoom:wt.number,maxZoom:wt.number,enableZoomInteraction:wt.oneOfType([wt.bool,wt.func]),enablePanInteraction:wt.oneOfType([wt.bool,wt.func]),onZoom:wt.func,onZoomEnd:wt.func,onRenderFramePre:wt.func,onRenderFramePost:wt.func});const wi=Object.assign({},Kr,Pi,ja,{enableNavigationControls:wt.bool,controlType:wt.oneOf(["trackball","orbit","fly"]),rendererConfig:wt.object,extraRenderers:wt.arrayOf(wt.shape({render:wt.func.isRequired}))});Object.assign({},Kr,ja,{nodeDesc:wt.oneOfType([wt.string,wt.func]),linkDesc:wt.oneOfType([wt.string,wt.func])}),Object.assign({},Kr,ja,{markerAttrs:wt.object,yOffset:wt.number,glScale:wt.number});const Ka=mn(wn.Z,{methodNames:["emitParticle","d3Force","d3ReheatSimulation","stopAnimation","pauseAnimation","resumeAnimation","cameraPosition","zoomToFit","getGraphBbox","screen2GraphCoords","graph2ScreenCoords","postProcessingComposer","lights","scene","camera","renderer","controls","refresh"],initPropNames:["controlType","rendererConfig","extraRenderers"]});Ka.displayName="ForceGraph3D",Ka.propTypes=wi;var vo=he(21668),mo=he(61147),ii=he(33662),Ki=he(14301),Mo=he(7695),fr=he(85320),er=he(50277);function Fi(Oe){return Oe.x+Oe.vx}function _i(Oe){return Oe.y+Oe.vy}function La(Oe){return Oe.z+Oe.vz}function ki(Oe){var Fe,Me,jt,Mn,Tr=1,Fr=1;typeof Oe!="function"&&(Oe=(0,fr.Z)(Oe==null?1:+Oe));function An(){for(var wr,ra=Fe.length,qi,aa,ca,Ra,Ei,Si,ba,Sa=0;Sa1&&(Ra=aa.y+aa.vy),Me>2&&(Ei=aa.z+aa.vz),qi.visit(Uo);function Uo(Ua,Oa,xo,di,Ca,va,ro){var Pa=[Oa,xo,di,Ca,va,ro],rl=Pa[0],xl=Pa[1],Xo=Pa[2],_l=Pa[Me],ts=Pa[Me+1],ko=Pa[Me+2],Gr=Ua.data,so=Ua.r,Ti=Si+so;if(Gr){if(Gr.index>aa.index){var oa=ca-Gr.x-Gr.vx,Ea=Me>1?Ra-Gr.y-Gr.vy:0,Yo=Me>2?Ei-Gr.z-Gr.vz:0,Eo=oa*oa+Ea*Ea+Yo*Yo;Eo1&&Ea===0&&(Ea=(0,er.Z)(Mn),Eo+=Ea*Ea),Me>2&&Yo===0&&(Yo=(0,er.Z)(Mn),Eo+=Yo*Yo),Eo=(Ti-(Eo=Math.sqrt(Eo)))/Eo*Tr,aa.vx+=(oa*=Eo)*(Ti=(so*=so)/(ba+so)),Me>1&&(aa.vy+=(Ea*=Eo)*Ti),Me>2&&(aa.vz+=(Yo*=Eo)*Ti),Gr.vx-=oa*(Ti=1-Ti),Me>1&&(Gr.vy-=Ea*Ti),Me>2&&(Gr.vz-=Yo*Ti))}return}return rl>ca+Ti||_l1&&(xl>Ra+Ti||ts2&&(Xo>Ei+Ti||kowr.r&&(wr.r=wr[ra].r)}function Kn(){if(Fe){var wr,ra=Fe.length,qi;for(jt=new Array(ra),wr=0;wrtypeof qi=="function")||Math.random,Me=ra.find(qi=>[1,2,3].includes(qi))||2,Kn()},An.iterations=function(wr){return arguments.length?(Fr=+wr,An):Fr},An.strength=function(wr){return arguments.length?(Tr=+wr,An):Tr},An.radius=function(wr){return arguments.length?(Oe=typeof wr=="function"?wr:(0,fr.Z)(+wr),Kn(),An):Oe},An}var ma=he(76633),To=he(38192),go=he(18230),ia=he(89392),As=he(59301),Ws=Object.defineProperty,Vu=Object.defineProperties,du=Object.getOwnPropertyDescriptors,Yu=Object.getOwnPropertySymbols,sc=Object.prototype.hasOwnProperty,_u=Object.prototype.propertyIsEnumerable,dc=(Oe,Fe,Me)=>Fe in Oe?Ws(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Nc=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))sc.call(Fe,Me)&&dc(Oe,Me,Fe[Me]);if(Yu)for(var Me of Yu(Fe))_u.call(Fe,Me)&&dc(Oe,Me,Fe[Me]);return Oe},gd=(Oe,Fe)=>Vu(Oe,du(Fe)),Ic=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const fd=new go.u9r,yd=new Float32Array([0,.5,0,-.5,-.5,0,.5,-.5,0]);fd.setAttribute("position",new go.TlE(yd,3));const hc=new go.vBJ({color:"#FF4500",side:go.ehD,transparent:!0,opacity:.8}),Eu=new Map,rc=Oe=>(Eu.has(Oe)||Eu.set(Oe,new go.xoR({transparent:!1,color:Oe})),Eu.get(Oe)),Gc=(Oe,Fe)=>{const Me=Oe.getParentData(Fe.id,"tree");return Me?Fe.style.x>Me.style.x?"right":"left":"center"},lc=[20,15,10],zc=[{name:"\u6839\u8282\u70B9",src:"/images/one.svg",color:"#CC7CF5"},{name:"\u8BFE\u7A0B",src:"/images/kc.svg",color:"#3241F7"},{name:"\u7AE0\u8282",src:"/images/zj.svg",color:"#5e54e7"},{name:"\u77E5\u8BC6\u70B9",src:"/images/zsd.svg",color:"#FFDF55"},{name:"\u5B9E\u8BAD",src:"/images/sx.svg",color:"#4E9DFF"},{name:"\u4F5C\u4E1A",src:"/images/zy.svg",color:"#445DF3"},{name:"\u89C6\u9891",src:"/images/sp.svg",color:"#6BC4DE"},{name:"\u8BFE\u4EF6",src:"/images/fj.svg",color:"#6BDE73"},{name:"\u8BD5\u5377",src:"/images/sj.svg",color:"#2D9534"},{name:"\u5176\u4ED6",src:"/images/qt.svg",color:"#2D947C"}],Uc=(Oe,Fe)=>{const Me={};let jt=null;return Oe.forEach(Mn=>{Me[Mn.properties.uuid]=gd(Nc({},Mn),{id:Mn.properties.uuid,children:[]})}),Fe.forEach(Mn=>{const Tr=Me[Mn.startNodeUuid],Fr=Me[Mn.endNodeUuid];Tr&&(Tr.id=Tr.properties.uuid),Tr&&Fr&&Tr.children.push(Fr)}),Oe.forEach(Mn=>{!Fe.some(Fr=>Fr.endNodeUuid===Mn.properties.uuid)&&(jt=Me[Mn.properties.uuid])}),jt};var Nd=(0,se.forwardRef)(({nodeUuid:Oe,subject_id:Fe,setshowdetail:Me,setitems:jt,setzoomsize:Mn},Tr)=>{var Fr;const[An,_t]=(0,se.useState)(!1),[Kn,wr]=(0,se.useState)({nodes:[],links:[]}),ra=(0,se.useRef)(),qi=(0,se.useRef)(1),aa=(0,se.useRef)(null),ca=(0,se.useRef)(null),Ra=50,Ei=2e3,[Si,ba]=(0,se.useState)(null),[Sa,Uo]=(0,se.useState)(""),[Ua,Oa]=(0,se.useState)(null),xo=(0,se.useRef)(new Map);(0,se.useEffect)(()=>{di()},[]);const di=()=>Ic(void 0,null,function*(){var Gr,so,Ti,oa,Ea,Yo,Eo,Ss;_t(!0);let _s=yield(0,Ot.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{nodeUuid:Oe,subject_id:Fe,depth:-1,relationshipFilter:"\u5305\u542B>"}});_t(!1);let il=(so=(Gr=_s==null?void 0:_s.data)==null?void 0:Gr.nodes)==null?void 0:so.map(Gs=>{var kc,Lc,Cd,Bd,mf,md,nf,rf,Ad,uh;return gd(Nc({},Gs==null?void 0:Gs.properties),{id:(kc=Gs==null?void 0:Gs.properties)==null?void 0:kc.uuid,name:(Lc=Gs==null?void 0:Gs.properties)==null?void 0:Lc.name,description:(Cd=Gs==null?void 0:Gs.properties)==null?void 0:Cd.description,nodeType:(Bd=Gs==null?void 0:Gs.properties)==null?void 0:Bd.nodeType,tags:((nf=(md=(mf=Gs==null?void 0:Gs.properties)==null?void 0:mf.tags)==null?void 0:md.split("\uFF0C"))==null?void 0:nf.map(af=>({name:af})))||[],colorType:parseInt((rf=Gs==null?void 0:Gs.properties)==null?void 0:rf.color)>3?"3":(Ad=Gs==null?void 0:Gs.properties)==null?void 0:Ad.color,activeColor:"#FA6400",size:lc[((uh=Gs==null?void 0:Gs.properties)==null?void 0:uh.color)-1]||20,shape:"circle",hide:!1,isExtendedState:!0})}),Ks=Uc((oa=(Ti=_s==null?void 0:_s.data)==null?void 0:Ti.nodes)==null?void 0:oa.map((Gs,kc)=>{var Lc,Cd,Bd,mf,md,nf,rf,Ad,uh;const af=parseInt((Lc=Gs==null?void 0:Gs.properties)==null?void 0:Lc.color)===1?"#CC7CF5":((Cd=zc.find(xf=>{var ws;return(xf==null?void 0:xf.name)===((ws=Gs==null?void 0:Gs.properties)==null?void 0:ws.nodeType)}))==null?void 0:Cd.color)||"#2D947C";return gd(Nc({},Gs),{key:kc,title:(Bd=Gs==null?void 0:Gs.properties)==null?void 0:Bd.name,newcolor:af,nodeColor:af,color:af,colornodeType:parseInt((mf=Gs==null?void 0:Gs.properties)==null?void 0:mf.color)===1?"\u6839\u8282\u70B9":((md=zc.find(xf=>{var ws;return(xf==null?void 0:xf.name)===((ws=Gs==null?void 0:Gs.properties)==null?void 0:ws.nodeType)}))==null?void 0:md.name)||"\u5176\u4ED6",val:lc[((nf=Gs==null?void 0:Gs.properties)==null?void 0:nf.color)-1]||10,nodeVal:lc[((rf=Gs==null?void 0:Gs.properties)==null?void 0:rf.color)-1]||10,name:(Ad=Gs==null?void 0:Gs.properties)==null?void 0:Ad.name,nodeLabel:(uh=Gs==null?void 0:Gs.properties)==null?void 0:uh.name})}),(Yo=(Ea=_s==null?void 0:_s.data)==null?void 0:Ea.relationships)==null?void 0:Yo.filter(Gs=>Gs.type==="\u5305\u542B")),Kl=(0,dr.RN)(Ks),Hl=(Eo=Kl.nodes)==null?void 0:Eo.filter((Gs,kc,Lc)=>kc===Lc.findIndex(Cd=>Cd.id===Gs.id)),Hu=(Ss=Kl.edges)==null?void 0:Ss.filter((Gs,kc,Lc)=>kc===Lc.findIndex(Cd=>Cd.source===Gs.source&&Cd.target===Gs.target));wr({nodes:Hl,links:Hu})}),Ca=(Gr,so)=>{const Ti=new Map([[Gr,!0]]),oa=Yo=>{so.forEach(Eo=>{Eo.source.id===Yo&&!Ti.has(Eo.target.id)&&(Ti.set(Eo.target.id,!0),oa(Eo.target.id))})},Ea=Yo=>{so.forEach(Eo=>{Eo.target.id===Yo&&!Ti.has(Eo.source.id)&&(Ti.set(Eo.source.id,!0),Ea(Eo.source.id))})};return oa(Gr),Ea(Gr),Ti};(0,se.useEffect)(()=>{Ua?xo.current=Ca(Ua.id,Kn.links):xo.current=new Map},[Ua,Kn.links]);const va=()=>vo.Z().force("charge",mo.Z().strength(-50)).force("collision",ki().radius(Gr=>(Gr.val||20)*1.2)).force("link",ma.Z().id(Gr=>Gr.id).distance(80)).force("center",To.Z()).numDimensions(3).tick(100),ro=Gr=>Ua?xo.current.has(Gr.id):!0,Pa=Gr=>Ua?xo.current.has(Gr.source.id)&&xo.current.has(Gr.target.id):!0;(0,se.useEffect)(()=>()=>{ca.current&&cancelAnimationFrame(ca.current)},[]);const rl=()=>{if(!aa.current||!ra.current)return;const Gr=ra.current,so=Gr.cameraPosition(),Ti={x:0,y:0,z:0},oa=.1,Ea={x:so.x+(aa.current.x-so.x)*oa,y:so.y+(aa.current.y-so.y)*oa,z:so.z+(aa.current.z-so.z)*oa};Gr.cameraPosition(Ea,Ti,0),Math.hypot(Ea.x-aa.current.x,Ea.y-aa.current.y,Ea.z-aa.current.z)>5?ca.current=requestAnimationFrame(rl):(ca.current=null,aa.current=null)};(0,se.useImperativeHandle)(Tr,()=>({handleZoom:_l,getData:di,selectall:xl,settype:Xo}));const xl=Gr=>{ba(Gr)},Xo=Gr=>{Uo(Gr)},_l=Gr=>{ca.current&&(cancelAnimationFrame(ca.current),ca.current=null);const so=ra.current;if(!so)return;const Ti=so.cameraPosition(),oa={x:0,y:0,z:0},Ea={x:Ti.x-oa.x,y:Ti.y-oa.y,z:Ti.z-oa.z},Yo=Math.hypot(Ea.x,Ea.y,Ea.z);let Ss=Yo*(Gr==="in"?.8:1.2);if(Ss=Math.max(Ra,Math.min(Ei,Ss)),Yo>0){const _s=Ss/Yo;aa.current={x:oa.x+Ea.x*_s,y:oa.y+Ea.y*_s,z:oa.z+Ea.z*_s},qi.current=1e3/Ss,rl()}},ts=(0,ia.debounce)(Gr=>{Oa(Gr)},100),ko=Gr=>{console.log("---",Gr),ba(Gr.id),jt(Gr),Me(!0)};return As.createElement("div",{style:{height:"calc(100vh - 0px)",overflow:"hidden"}},((Fr=Kn==null?void 0:Kn.nodes)==null?void 0:Fr.length)>0&&As.createElement(Ka,{graphData:Kn,ref:ra,enableNodeDrag:!1,backgroundColor:"rgb(1, 10, 35)",linkColor:Gr=>Pa(Gr)?"#ccc":"rgba(0,0,0,0)",linkWidth:Gr=>(Pa(Gr),1),linkDirectionalArrowLength:Ua?6:0,nodeRelSize:8,linkDirectionalArrowColor:()=>"rgba(0,0,0,0)",linkDirectionalParticles:Gr=>Pa(Gr)?3:0,linkDirectionalParticleSpeed:.001,linkDirectionalParticleWidth:2,linkDirectionalParticleColor:Gr=>Pa(Gr)?"#ccc":"rgba(0,0,0,0)",linkThreeObjectExtend:!0,nodeThreeObject:Gr=>{if(Sa){const so=new go.Kj0(new go.xo$(Gr.val,16,16),rc(Gr.colornodeType===Sa?Gr.nodeColor:"#999999"));if(Gr.id===Si){const Ti=new go.Kj0(new go.xo$(Gr.val+5,32,32),new go.vBJ({transparent:!0,opacity:.3}));so.add(Ti)}return so}else{const so=new go.Kj0(new go.xo$(Gr.val,16,16),rc(Gr.id===Si||ro(Gr)?Gr.nodeColor:"#999999"));if(Gr.id===Si){const Ti=new go.Kj0(new go.xo$(Gr.val+5,32,32),new go.vBJ({transparent:!0,opacity:.3}));so.add(Ti)}return so}},linkThreeObject:Gr=>Pa(Gr)?new go.Kj0(fd,hc):null,onNodeHover:ts,onNodeClick:ko,onEngineStop:()=>{},onNodeDragEnd:Gr=>{Gr.fx=Gr.x,Gr.fy=Gr.y,Gr.fz=Gr.z}}))}),Hc={flex_box_center:"flex_box_center___mORrQ",flex_space_between:"flex_space_between___AGgBm",flex_box_vertical_center:"flex_box_vertical_center____H93g",flex_box_center_end:"flex_box_center_end___VPK8Q",flex_box_column:"flex_box_column___qksG3",autocomp:"autocomp___H_feM",autocompwidth:"autocompwidth___RMYtG",hoverone:"hoverone___j7m8k",name:"name___qwPqM",img:"img___WHKD_",autopop:"autopop___YCC3k",studentHead:"studentHead___DeVom",headLi:"headLi___qiYnp",btn:"btn___s7HI8",tupugx:"tupugx___JCYSy",textname:"textname___iEAMA",dropdownst:"dropdownst___ca1cn",ChangeBut:"ChangeBut___uZelH"},vd=he(37295),Xd=he(59301),ju=Object.defineProperty,Ec=Object.defineProperties,yf=Object.getOwnPropertyDescriptors,uf=Object.getOwnPropertySymbols,rd=Object.prototype.hasOwnProperty,Nf=Object.prototype.propertyIsEnumerable,Xc=(Oe,Fe,Me)=>Fe in Oe?ju(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Df=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))rd.call(Fe,Me)&&Xc(Oe,Me,Fe[Me]);if(uf)for(var Me of uf(Fe))Nf.call(Fe,Me)&&Xc(Oe,Me,Fe[Me]);return Oe},Sh=(Oe,Fe)=>Ec(Oe,yf(Fe)),Eh=(Oe,Fe)=>{var Me={};for(var jt in Oe)rd.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&uf)for(var jt of uf(Oe))Fe.indexOf(jt)<0&&Nf.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},qf=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});let Ud=[{name:"\u6839\u8282\u70B9",src:"/images/one.svg",color:"#CC7CF5",bordercolor:"#A150CB"},{name:"\u8BFE\u7A0B",src:"/images/kc.svg",color:"#3241F7",bordercolor:"#3437D9"},{name:"\u7AE0\u8282",src:"/images/zj.svg",color:"#5e54e7",bordercolor:"#7f77f9"},{name:"\u77E5\u8BC6\u70B9",src:"/images/zsd.svg",color:"#FFDF55",bordercolor:"#FFD60F"},{name:"\u5B9E\u8BAD",src:"/images/sx.svg",color:"#4E9DFF",bordercolor:"#0882FB"},{name:"\u4F5C\u4E1A",src:"/images/zy.svg",color:"#445DF3",bordercolor:"#3149D5"},{name:"\u89C6\u9891",src:"/images/sp.svg",color:"#6BC4DE",bordercolor:"#339DC4"},{name:"\u8BFE\u4EF6",src:"/images/fj.svg",color:"#6BDE73",bordercolor:"#33C448"},{name:"\u8BD5\u5377",src:"/images/sj.svg",color:"#2D9534",bordercolor:"#077A04"},{name:"\u5176\u4ED6",src:"/images/qt.svg",color:"#2D947C",bordercolor:"#157660"}];const Yd=null;let oo=null;const Mh=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,datas:An}=Fe,_t=Eh(Fe,["pathsDetail","user","globalSetting","loading","dispatch","datas"]);const Kn=(0,se.useRef)(),wr=(0,se.useRef)(null);(0,se.useEffect)(()=>{ra()},[An]);function ra(){return qf(this,null,function*(){var qi,aa,ca,Ra,Ei,Si,ba;if(((qi=An==null?void 0:An.nodes)==null?void 0:qi.length)>0){let Sa=(0,Xt.fX)((aa=An==null?void 0:An.nodes)==null?void 0:aa.map((di,Ca)=>{var va,ro,Pa,rl,xl,Xo,_l,ts,ko,Gr,so,Ti,oa,Ea,Yo,Eo;return Sh(Df(Df({},di),di==null?void 0:di.properties),{rootNodeUuid:(va=di==null?void 0:di.properties)==null?void 0:va.rootNodeUuid,id:(ro=di==null?void 0:di.properties)==null?void 0:ro.uuid,name:(Pa=di==null?void 0:di.properties)==null?void 0:Pa.name,labelstype:(rl=di==null?void 0:di.labels)==null?void 0:rl[1],description:(xl=di==null?void 0:di.properties)==null?void 0:xl.description,nodeType:(Xo=di==null?void 0:di.properties)==null?void 0:Xo.nodeType,colornodeType:parseInt((_l=di==null?void 0:di.properties)==null?void 0:_l.color)===1?"\u6839\u8282\u70B9":((ts=Ud==null?void 0:Ud.find(Ss=>{var _s;return(Ss==null?void 0:Ss.name)===((_s=di==null?void 0:di.properties)==null?void 0:_s.nodeType)}))==null?void 0:ts.name)||"\u5176\u4ED6",newcolor:parseInt((ko=di==null?void 0:di.properties)==null?void 0:ko.color)===1?"#CC7CF5":((Gr=Ud==null?void 0:Ud.find(Ss=>{var _s;return(Ss==null?void 0:Ss.name)===((_s=di==null?void 0:di.properties)==null?void 0:_s.nodeType)}))==null?void 0:Gr.color)||"#2D947C",tags:((so=di==null?void 0:di.properties)==null?void 0:so.tags)&&((Ea=(oa=(Ti=di==null?void 0:di.properties)==null?void 0:Ti.tags)==null?void 0:oa.split("\uFF0C"))==null?void 0:Ea.map(Ss=>({name:Ss})))||[],colorType:parseInt((Yo=di==null?void 0:di.properties)==null?void 0:Yo.color)>3?"3":(Eo=di==null?void 0:di.properties)==null?void 0:Eo.color})}),(Ei=(Ra=(ca=An==null?void 0:An.relationships)==null?void 0:ca.filter(di=>{var Ca,va,ro;return(di==null?void 0:di.endNodeUuid)!==((ro=(va=(Ca=An==null?void 0:An.nodes)==null?void 0:Ca[0])==null?void 0:va.properties)==null?void 0:ro.rootNodeUuid)}))==null?void 0:Ra.filter(di=>{var Ca,va,ro;return(di==null?void 0:di.startNodeUuid)!==((ro=(va=(Ca=An==null?void 0:An.nodes)==null?void 0:Ca[0])==null?void 0:va.properties)==null?void 0:ro.rootNodeUuid)}))==null?void 0:Ei.filter(di=>di.type==="\u5305\u542B")),Uo=(0,dr.RN)(Sa),Ua=(Si=Uo.nodes)==null?void 0:Si.filter((di,Ca,va)=>Ca===va.findIndex(ro=>ro.id===di.id)),Oa=(ba=Uo.edges)==null?void 0:ba.filter((di,Ca,va)=>Ca===va.findIndex(ro=>ro.source===di.source&&ro.target===di.target));Ua.map(di=>(di.transformd=!0,di.style={labelWordWrap:!0,labelPlacement:di.depth===0?"center":di.depth<3?"top-left":"top",haloLineWidth:Math.max(20-di.depth*6,0),labelMaxWidth:di.depth===0?300:200,labelFontSize:di.depth===0?22:Ua.length>300?12:14,labelLineHeight:100,halo:di.depth<3},di)),Kn.current=null;let xo=Ua==null?void 0:Ua.length;Kn.current=new dr.kJ({container:wr.current,autoResize:!0,background:"#010A23",autoFit:{type:Ua.length>50?"view":"center",options:{direction:"both",when:"always"}},animation:!1,padding:50,data:{nodes:Ua,edges:Oa},node:{type:"circle",style:{size:di=>di.colorType==1?100:di.depth<2?50:xo>250?10:20,fill:di=>di.newcolor,labelText:di=>di.name,labelFill:"#ffffff"},state:{highlight:{stroke:"transparent"},selected:{stroke:"transparent"},inactive:{fill:di=>di.newcolor,port:!1,labelBackground:!1,halo:!1,badgeBackground:!1}}},edge:{style:{labelBackground:!1,halo:!1,stroke:"#A150CB",strokeOpacity:.5},state:{inactive:{stroke:"#f9f0ff",strokeOpacity:.5,halo:!1,labelBackground:!1,lineWidth:1},highlight:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},selected:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},active:{halo:!1},disable:{halo:!1}}},layout:[{type:"dendrogram",radial:!0,nodeSep:40,rankSep:Ua.length>250?360:240,direction:"RL",unitRadius:90,linkDistance:200,preventOverlap:!0,maxPreventOverlapIteration:100,strictRadial:!1}],plugins:[{type:"tooltip",enable:di=>di.targetType==="node",getContent:(di,Ca)=>{let va="";return Ca.forEach(ro=>{va+=`
    ${ro.name||""}
    `}),va}}],behaviors:["drag-canvas",{type:"zoom-canvas"},"drag-element",{type:"collapse-expand",onExpand:(di,Ca)=>{console.log("----",di,Ca)}},{type:"fix-element-size",state:"fix-element-size",enable:!0}],transforms:[{type:"place-radial-labels"}]}),Kn.current.render()}})}return Xd.createElement("div",{style:{background:"#fff",height:"800rem"}},Xd.createElement("div",{style:{width:"100%",height:"800rem"},ref:wr}))};var _f=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(Mh),$f={flex_box_center:"flex_box_center___WMF1f",flex_space_between:"flex_space_between___haq2g",flex_box_vertical_center:"flex_box_vertical_center___KFxAJ",flex_box_center_end:"flex_box_center_end___DIl10",flex_box_column:"flex_box_column___f8Jy4",zhishidian:"zhishidian___ftPXv"},bd={flex_box_center:"flex_box_center___JiLDQ",flex_space_between:"flex_space_between___Ur9j0",flex_box_vertical_center:"flex_box_vertical_center___FAM8c",flex_box_center_end:"flex_box_center_end___onqau",flex_box_column:"flex_box_column___jwO5r",tree_box:"tree_box___EeMwm",tree:"tree___jwv1Z"},fu=he(59301),Ff=Object.defineProperty,Qf=Object.defineProperties,yc=Object.getOwnPropertyDescriptors,Ih=Object.getOwnPropertySymbols,eh=Object.prototype.hasOwnProperty,Pd=Object.prototype.propertyIsEnumerable,th=(Oe,Fe,Me)=>Fe in Oe?Ff(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Jd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))eh.call(Fe,Me)&&th(Oe,Me,Fe[Me]);if(Ih)for(var Me of Ih(Fe))Pd.call(Fe,Me)&&th(Oe,Me,Fe[Me]);return Oe},au=(Oe,Fe)=>Qf(Oe,yc(Fe)),id=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const xd=({dispatch:Oe,user:Fe,classroomList:Me,account:jt,resourceModalVisible:Mn,setResourceModalVisible:Tr,resourceId:Fr,binding:An,getTableData:_t})=>{const[Kn]=Ze.default.useForm(),wr=(0,je.useParams)(),[ra,qi]=(0,se.useState)([]),[aa,ca]=(0,se.useState)([]),[Ra,Ei]=(0,se.useState)([]),[Si,ba]=(0,se.useState)(!1),[Sa,Uo]=(0,se.useState)(!1),[Ua,Oa]=(0,se.useState)([]),[xo,di]=(0,se.useState)({keyword:""});(0,se.useEffect)(()=>{Mn?(Kn.setFieldsValue({tab:"all"}),va("all")):(Oa([]),Ei([]),xo.keyword="",di(Jd({},xo)))},[Mn]),(0,se.useEffect)(()=>{Mn&&va(Kn.getFieldValue("tab"))},[xo==null?void 0:xo.keyword]);const Ca=Pa=>{switch(Pa.item_type){case"Challenge":return fu.createElement(Lr.Z,{wrap:!1,align:"middle",justify:"space-between",gutter:20},fu.createElement(Aa.Z,{flex:"302px"},fu.createElement(Bn.Z,{title:Pa.name||""},fu.createElement("div",{className:" multi_ellipsis1"},fu.createElement("span",{className:"mr5",style:{color:"#20BB8A"}},"\u5173\u5361")," ",Pa.name||""))),fu.createElement(Aa.Z,{flex:1},fu.createElement(Bn.Z,{title:Pa.shixun_name||""},fu.createElement("div",{className:"c-grey-666 multi_ellipsis1"},"\u6240\u5C5E\u5B9E\u8BAD\uFF1A",(Pa==null?void 0:Pa.shixun_name)||""))));case"Shixun":return fu.createElement("span",null,fu.createElement("span",{className:"mr5 c-light-primary"},"\u5B9E\u8BAD"),Pa.name);case"Attachment":return fu.createElement("span",null,fu.createElement("span",{className:"mr5 c-cyan-blue"},"\u8BFE\u4EF6"),Pa.name);case"ExaminationBank":return fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#e69917"}},"\u6D4B\u9A8C"),Pa.name);case"HomeworkCommon":return fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#E99237"}},"\u7F16\u7A0B\u4F5C\u4E1A"),Pa.name);case"VideoItem":return fu.createElement("span",null,fu.createElement("span",{className:"mr5 c-purple-8C1"},"\u89C6\u9891"),Pa.name);case"SubjectHomework":return(Pa==null?void 0:Pa.homework_type)=="group"?fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#AABF07"}},"\u5206\u7EC4\u4F5C\u4E1A"),Pa.name):fu.createElement("span",null,fu.createElement("span",{className:"mr5",style:{color:"#20BB8A"}},"\u56FE\u6587\u4F5C\u4E1A"),Pa.name);case"StageCatalog":return fu.createElement("span",null,fu.createElement("span",{className:"mr5"},"\u5C0F\u8282"),Pa.name);default:return""}},va=Pa=>id(void 0,null,function*(){ba(!0);const rl=yield(0,Ot.ZP)(`/api/paths/${wr==null?void 0:wr.pathId}/bind_tag_stage_shixuns.json`,{method:"get",params:{tag_discipline_id:Fr,binding:An,keywords:xo==null?void 0:xo.keyword,tab:Pa}});if(rl){const xl=(ts,ko="")=>ts==null?void 0:ts.map((Gr,so)=>{const Ti=ko?`${ko}-${so}`:`${so}`,Ea=!ko?Gr.state_name||"":Ca(Gr),Yo=!(Gr!=null&&Gr.can_choose);return au(Jd({},Gr),{title:Ea,key:Ti,disabled:Yo,children:xl(Gr.items||Gr.children||[],Ti)})}),Xo=xl((rl==null?void 0:rl.stages)||[]);qi(Xo||[]);const _l=(ts,ko=[])=>(ts.forEach(Gr=>{var so;ko.push(Gr.key),(so=Gr.children)!=null&&so.length&&_l(Gr.children,ko)}),ko);ca(_l(Xo||[]))}ba(!1)}),ro=(Pa,rl)=>{var xl,Xo;(xl=rl==null?void 0:rl.checkedNodes)!=null&&xl.length&&Ei((Xo=rl==null?void 0:rl.checkedNodes)==null?void 0:Xo.map(_l=>_l==null?void 0:_l.stage_shixun_id)),Oa(Pa)};return fu.createElement("div",null,fu.createElement(Bt.default,{title:An?"\u89E3\u7ED1\u8D44\u6E90":"\u5173\u8054\u8D44\u6E90",open:Mn,width:700,centered:!0,destroyOnClose:!0,okText:"\u786E\u5B9A\u4FDD\u5B58",className:bd.scoremodal,onCancel:()=>{Tr(!1)},onOk:()=>id(void 0,null,function*(){if(Uo(!0),An){const Pa=yield(0,Ot.ZP)(`/api/v2/tag_disciplines/${Fr}/un_bind_resource.json`,{method:"post",body:{stage_shixun_ids:Ra}});(Pa==null?void 0:Pa.status)==0&&(Tr(!1),_t()),Uo(!1)}else{const Pa=yield(0,Ot.ZP)(`/api/v2/tag_disciplines/${Fr}/bind_resource.json`,{method:"post",body:{stage_shixun_ids:Ra}});(Pa==null?void 0:Pa.status)==0&&(Tr(!1),_t()),Uo(!1)}})},fu.createElement(Ze.default,{layout:"inline",form:Kn,className:bd.myForm},fu.createElement(Ze.default.Item,{name:"tab",colon:!1},fu.createElement(Ma.default,{style:{width:200},size:"large",placeholder:"\u8BF7\u9009\u62E9\u8D44\u6E90\u7C7B\u578B",onChange:Pa=>{va(Pa)}},fu.createElement(Ma.default.Option,{value:"all"},"\u5168\u90E8"),fu.createElement(Ma.default.Option,{value:"shixun"},"\u5B9E\u8DF5\u9879\u76EE"),fu.createElement(Ma.default.Option,{value:"video"},"\u89C6\u9891"),fu.createElement(Ma.default.Option,{value:"attachment"},"\u8BFE\u4EF6"),fu.createElement(Ma.default.Option,{value:"challenge"},"\u5173\u5361"),fu.createElement(Ma.default.Option,{value:"group_homework"},"\u5206\u7EC4\u4F5C\u4E1A"),fu.createElement(Ma.default.Option,{value:"normal_homework"},"\u56FE\u6587\u4F5C\u4E1A"),fu.createElement(Ma.default.Option,{value:"hack_homework"},"\u7F16\u7A0B\u4F5C\u4E1A"),fu.createElement(Ma.default.Option,{value:"exercise"},"\u6D4B\u9A8C"))),fu.createElement($s.t7,{placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u5B57\u8FDB\u884C\u641C\u7D22",value:xo==null?void 0:xo.keyword,style:{width:240,marginLeft:"auto"},onChange:Pa=>{di(au(Jd({},xo),{keyword:Pa,page:1}))}})),fu.createElement(vt.Z,{spinning:Si},(ra==null?void 0:ra.length)>0?fu.createElement("div",{className:bd.tree_box},fu.createElement(es.default,{className:bd.tree,checkable:!0,treeData:ra,checkedKeys:Ua,expandedKeys:aa,onExpand:Pa=>ca(Pa),onCheck:(Pa,rl)=>ro(Pa,rl)})):fu.createElement(_a.Z,null))))};var ad=(0,je.connect)(({user:Oe,classroomList:Fe,account:Me})=>({user:Oe,classroomList:Fe,account:Me}))(xd),wc=he(59301),Qu=Object.defineProperty,fc=Object.defineProperties,hd=Object.getOwnPropertyDescriptors,Fd=Object.getOwnPropertySymbols,Vd=Object.prototype.hasOwnProperty,hh=Object.prototype.propertyIsEnumerable,Vc=(Oe,Fe,Me)=>Fe in Oe?Qu(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Qd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Vd.call(Fe,Me)&&Vc(Oe,Me,Fe[Me]);if(Fd)for(var Me of Fd(Fe))hh.call(Fe,Me)&&Vc(Oe,Me,Fe[Me]);return Oe},Oh=(Oe,Fe)=>fc(Oe,hd(Fe)),cf=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Wf=({dispatch:Oe,user:Fe,classroomList:Me,account:jt})=>{const[Mn]=Ze.default.useForm(),Tr=(0,je.useParams)(),[Fr,An]=(0,se.useState)(!1),[_t,Kn]=(0,se.useState)({page:1,limit:10,keyword:""}),[wr,ra]=(0,se.useState)([]),[qi,aa]=(0,se.useState)({}),[ca,Ra]=(0,se.useState)(!1),[Ei,Si]=(0,se.useState)(""),[ba,Sa]=(0,se.useState)(!1),[Uo,Ua]=(0,se.useState)("");(0,se.useEffect)(()=>{jt.actionTabs.key=="\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90"?Oa():(_t.keyword="",Kn(Qd({},_t)))},[jt.actionTabs]);const Oa=()=>cf(void 0,null,function*(){var Ca,va,ro,Pa,rl,xl,Xo,_l,ts,ko,Gr,so;An(!0);const Ti=yield(0,Ot.ZP)("/api/v2/course_disciplines.json",{method:"get"});(Ti==null?void 0:Ti.status)===0&&(ra((Ca=Ti==null?void 0:Ti.data)==null?void 0:Ca.list),Mn.setFieldsValue({course_discipline_id:(Pa=(ro=(va=Ti==null?void 0:Ti.data)==null?void 0:va.list)==null?void 0:ro[0])==null?void 0:Pa.id}),((xl=(rl=Ti==null?void 0:Ti.data)==null?void 0:rl.list)==null?void 0:xl.length)>0?xo((ts=(_l=(Xo=Ti==null?void 0:Ti.data)==null?void 0:Xo.list)==null?void 0:_l[0])==null?void 0:ts.id):An(!1),Ua((so=(Gr=(ko=Ti==null?void 0:Ti.data)==null?void 0:ko.list)==null?void 0:Gr[0])==null?void 0:so.id))}),xo=Ca=>cf(void 0,null,function*(){const va=yield(0,Ot.ZP)("/api/v2/tag_disciplines.json",{method:"get",params:{subject_id:(Tr==null?void 0:Tr.pathId)||"",course_discipline_id:Ca,keyword:_t==null?void 0:_t.keyword}});(va==null?void 0:va.status)===0&&aa(va==null?void 0:va.data),An(!1)});(0,se.useEffect)(()=>{jt.actionTabs.key=="\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90"&&(xo(Mn.getFieldValue("course_discipline_id")),Ua(Mn.getFieldValue("course_discipline_id")))},[_t==null?void 0:_t.keyword]);const di=[{title:"\u77E5\u8BC6\u70B9\u540D\u79F0",dataIndex:"name",key:"name",ellipsis:!0,align:"left",render:(Ca,va)=>wc.createElement("span",null,Ca||"--")},{title:"\u5DF2\u5173\u8054\u8D44\u6E90\u6570\u91CF",dataIndex:"resource_size",key:"resource_size",ellipsis:!0,align:"left",render:Ca=>wc.createElement("span",null,Ca)},{title:"\u64CD\u4F5C",key:"action",align:"right",width:200,render:(Ca,va)=>wc.createElement(wc.Fragment,null,wc.createElement("span",{style:{color:"#165DFF",cursor:"pointer",marginRight:"20px"},onClick:()=>{Ra(!0),Si(va==null?void 0:va.id),Sa(!1)}},"\u5173\u8054\u8D44\u6E90"),wc.createElement("span",{style:{color:"#165DFF",cursor:"pointer"},onClick:()=>{Ra(!0),Si(va==null?void 0:va.id),Sa(!0)}},"\u89E3\u7ED1\u8D44\u6E90"))}].filter(Ca=>!!Ca);return wc.createElement(Bt.default,{title:"\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90",open:jt.actionTabs.key=="\u8BFE\u7A0B\u77E5\u8BC6\u70B9\u5173\u8054\u8D44\u6E90",width:900,centered:!0,footer:null,destroyOnClose:!0,className:$f.scoremodal,onCancel:()=>{Oe({type:"account/setActionTabs",payload:{key:""}})}},wc.createElement(vt.Z,{spinning:Fr},wc.createElement(Ze.default,{layout:"inline",form:Mn,className:$f.myForm},wc.createElement(Ze.default.Item,{name:"course_discipline_id",colon:!1},wc.createElement(Ma.default,{style:{width:200},size:"large",placeholder:"\u8BF7\u9009\u62E9\u8BFE\u7A0B",onChange:Ca=>{xo(Ca),Ua(Ca)}},wr==null?void 0:wr.map(Ca=>wc.createElement(Ma.default.Option,{key:Ca==null?void 0:Ca.id,value:Ca==null?void 0:Ca.id},Ca==null?void 0:Ca.name)))),wc.createElement($s.t7,{placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u5B57\u8FDB\u884C\u641C\u7D22",value:_t==null?void 0:_t.keyword,style:{width:240},onChange:Ca=>{Kn(Oh(Qd({},_t),{keyword:Ca,page:1}))}}),wc.createElement("div",{className:$f.zhishidian,onClick:()=>{(0,Xt.xg)(`/knowledgeHub?course_discipline_id=${Uo}`)}},"\u77E5\u8BC6\u70B9\u7BA1\u7406")),wc.createElement(Pn.default,{columns:di,pagination:!1,scroll:{y:400},style:{marginTop:"20px",marginBottom:"20px"},dataSource:(qi==null?void 0:qi.tag_disciplines)||[]})),wc.createElement(ad,{resourceModalVisible:ca,setResourceModalVisible:Ra,resourceId:Ei,binding:ba,getTableData:()=>{xo(Mn.getFieldValue("course_discipline_id")),Ua(Mn.getFieldValue("course_discipline_id"))}}))};var uc=(0,je.connect)(({user:Oe,classroomList:Fe,account:Me})=>({user:Oe,classroomList:Fe,account:Me}))(Wf),Ja=he(59301),Sd=Object.defineProperty,Nh=Object.defineProperties,ga=Object.getOwnPropertyDescriptors,ph=Object.getOwnPropertySymbols,Kf=Object.prototype.hasOwnProperty,Zh=Object.prototype.propertyIsEnumerable,Xh=(Oe,Fe,Me)=>Fe in Oe?Sd(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Wd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Kf.call(Fe,Me)&&Xh(Oe,Me,Fe[Me]);if(ph)for(var Me of ph(Fe))Zh.call(Fe,Me)&&Xh(Oe,Me,Fe[Me]);return Oe},gh=(Oe,Fe)=>Nh(Oe,ga(Fe)),A0=(Oe,Fe)=>{var Me={};for(var jt in Oe)Kf.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&ph)for(var jt of ph(Oe))Fe.indexOf(jt)<0&&Zh.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},Fc=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Wl=window.ENV==="build"?"/react/build":"";let df=[{name:"\u6839\u8282\u70B9",src:Wl+"/images/one.svg",color:"#CC7CF5",bordercolor:"#A150CB",img:Wl+"/images/gjd.svg"},{name:"\u8BFE\u7A0B",src:Wl+"/images/kc.svg",color:"#3241F7",bordercolor:"#3437D9",img:Wl+"/images/kcjd.svg"},{name:"\u7AE0\u8282",src:Wl+"/images/zj.svg",color:"#5e54e7",bordercolor:"#7f77f9",img:Wl+"/images/zjjd.svg"},{name:"\u77E5\u8BC6\u70B9",src:Wl+"/images/zsd.svg",color:"#FFDF55",bordercolor:"#FFD60F",img:Wl+"/images/zsdjd.svg"},{name:"\u5B9E\u8BAD",src:Wl+"/images/sx.svg",color:"#4E9DFF",bordercolor:"#0882FB",img:Wl+"/images/sxjd.svg"},{name:"\u4F5C\u4E1A",src:Wl+"/images/zy.svg",color:"#445DF3",bordercolor:"#3149D5",img:Wl+"/images/zyjd.svg"},{name:"\u89C6\u9891",src:Wl+"/images/sp.svg",color:"#6BC4DE",bordercolor:"#339DC4",img:Wl+"/images/spjd.svg"},{name:"\u8BFE\u4EF6",src:Wl+"/images/fj.svg",color:"#6BDE73",bordercolor:"#33C448",img:Wl+"/images/kjjd.svg"},{name:"\u8BD5\u5377",src:Wl+"/images/sj.svg",color:"#2D9534",bordercolor:"#077A04",img:Wl+"/images/sjjd.svg"},{name:"\u5176\u4ED6",src:Wl+"/images/qt.svg",color:"#2D947C",bordercolor:"#157660",img:Wl+"/images/qtjd.svg"}];const wh=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,uuid:An,Tabsdatas:_t,initdata:Kn,setactivied:wr,tpacti:ra}=Fe,qi=A0(Fe,["pathsDetail","user","globalSetting","loading","dispatch","uuid","Tabsdatas","initdata","setactivied","tpacti"]),aa,ca,Ra,Ei,Si,ba,Sa,Uo,Ua;const Oa=(0,je.useParams)(),xo=(0,se.useRef)(),di=(0,se.useRef)(),Ca=(0,se.useRef)(),[va,ro]=(0,se.useState)([]),[Pa,rl]=(0,se.useState)(!0),[xl,Xo]=(0,se.useState)([]),[_l,ts]=(0,se.useState)(""),[ko,Gr]=(0,se.useState)(!1),so=(0,se.useRef)(null),[Ti,oa]=(0,se.useState)(),[Ea,Yo]=(0,se.useState)(!1),[Eo,Ss]=(0,se.useState)([]);let[_s,il]=(0,se.useState)(!1);const[Ks,Kl]=(0,se.useState)(!1),[Hl,Hu]=(0,se.useState)(!1),[Wc,Gs]=(0,se.useState)(!1),[kc,Lc]=(0,se.useState)([]),[Cd,Bd]=(0,se.useState)(!1),[mf,md]=(0,se.useState)([]),[nf]=(0,je.useSearchParams)(),[rf,Ad]=(0,se.useState)(!1),[uh,af]=(0,se.useState)(0),[xf,ws]=(0,se.useState)("\u5168\u90E8");let[Pc,Rf]=(0,se.useState)({page:1,limit:10});const[Ah,ch]=(0,se.useState)({}),[Td,yh]=(0,se.useState)([]),If=(0,se.useRef)(null),zd=(0,se.useRef)(null),[Ef,Cu]=(0,se.useState)(!1);(0,se.useEffect)(()=>(_s=!1,il(!1),dh(2,!0),Rt.ZP.config({getContainer:()=>so.current}),()=>{var bs;rl(!1),Xo([]),Yo(!1),ts(""),(bs=Ca.current)==null||bs.clear()}),[An]),(0,se.useEffect)(()=>(document.addEventListener("keydown",Gd),document.addEventListener("keyup",e0),()=>{document.removeEventListener("keydown",Gd),document.addEventListener("keyup",e0)}),[]);function Gd(bs){bs.ctrlKey&&Ca.current&&Ca.current.setBehaviors(Nu=>[...Nu.filter(tc=>typeof tc=="string"?tc!=="zoom-canvas":tc.type!=="zoom-canvas"),{type:"zoom-canvas",key:"new-zoom",enable:!0,preventDefault:!0}])}function e0(bs){Ca.current&&Ca.current.setBehaviors(Nu=>[...Nu.filter(tc=>typeof tc=="string"?tc!=="zoom-canvas":tc.type!=="zoom-canvas"),{type:"zoom-canvas",key:"new-zoom1",enable:!1,preventDefault:!1}])}const wp={onRemove:()=>{Lc([])},beforeUpload:bs=>{if(console.log(bs),(bs==null?void 0:bs.size)>1024*1024*50)return Rt.ZP.info("\u6587\u4EF6\u8D85\u8FC750M\uFF0C\u4E0D\u7B26\u5408\u4E0A\u4F20\u8981\u6C42"),!1;let Nu=[];return Nu.push(bs),Lc([...Nu]),!1},fileList:kc,accept:".xls,.xlsx"};(0,se.useEffect)(()=>{},[_s]),(0,se.useEffect)(()=>(window.addEventListener("resize",Cp),()=>{window.removeEventListener("resize",Cp)}),[]);function Cp(){var bs,Nu;(Nu=(bs=xo.current)==null?void 0:bs.update)==null||Nu.call(bs)}const Bp=(...bs)=>Fc(void 0,[...bs],function*(Nu={}){return yield Fr({type:"pathsDetail/getKnowledgeGraphs",payload:Wd({graphable_type:nf.get("type")==="classrooms"?"course":"subject",graphable_id:Oa==null?void 0:Oa.pathId},Nu)})});function dh(bs,Nu=!1){return Fc(this,null,function*(){var ic,tc,Fu,bh,fh,Yf,Y0,lg;(ic=Ca.current)==null||ic.destroy(),Ad(!0);let J0=yield(0,Ot.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{nodeUuid:An,subject_id:Oa==null?void 0:Oa.pathId,depth:bs===0?bs:bs||-1,relationshipFilter:"\u5305\u542B>"}});if(Ad(!1),(J0==null?void 0:J0.status)===0){if(Nu||Bp({graphable_id:Oa==null?void 0:Oa.pathId}),_s){di.current.getData();return}rl(!0);let Av=(0,Xt.fX)((Fu=(tc=J0==null?void 0:J0.data)==null?void 0:tc.nodes)==null?void 0:Fu.map((Cs,xh)=>{var ud,Hd,Th,I0,Wh,Ph,Kh,_0,Dp,Of,cg,Lg,dg,Tg,fg,Gp,zg,Pp;return gh(Wd(Wd({},Cs),Cs==null?void 0:Cs.properties),{rootNodeUuid:(ud=Cs==null?void 0:Cs.properties)==null?void 0:ud.rootNodeUuid,id:(Hd=Cs==null?void 0:Cs.properties)==null?void 0:Hd.uuid,name:(Th=Cs==null?void 0:Cs.properties)==null?void 0:Th.name,labelstype:(I0=Cs==null?void 0:Cs.labels)==null?void 0:I0[1],description:(Wh=Cs==null?void 0:Cs.properties)==null?void 0:Wh.description,nodeType:(Ph=Cs==null?void 0:Cs.properties)==null?void 0:Ph.nodeType,colornodeType:parseInt((Kh=Cs==null?void 0:Cs.properties)==null?void 0:Kh.color)===1?"\u6839\u8282\u70B9":((_0=df==null?void 0:df.find(zh=>{var Hh;return(zh==null?void 0:zh.name)===((Hh=Cs==null?void 0:Cs.properties)==null?void 0:Hh.nodeType)}))==null?void 0:_0.name)||"\u5176\u4ED6",newcolor:parseInt((Dp=Cs==null?void 0:Cs.properties)==null?void 0:Dp.color)===1?"#CC7CF5":((Of=df==null?void 0:df.find(zh=>{var Hh;return(zh==null?void 0:zh.name)===((Hh=Cs==null?void 0:Cs.properties)==null?void 0:Hh.nodeType)}))==null?void 0:Of.color)||"#2D947C",newbordercolor:parseInt((cg=Cs==null?void 0:Cs.properties)==null?void 0:cg.color)===1?Wl+"/images/gjd.svg":((Lg=df==null?void 0:df.find(zh=>{var Hh;return(zh==null?void 0:zh.name)===((Hh=Cs==null?void 0:Cs.properties)==null?void 0:Hh.nodeType)}))==null?void 0:Lg.img)||Wl+"/images/qtjd.svg",tags:((dg=Cs==null?void 0:Cs.properties)==null?void 0:dg.tags)&&((Gp=(fg=(Tg=Cs==null?void 0:Cs.properties)==null?void 0:Tg.tags)==null?void 0:fg.split("\uFF0C"))==null?void 0:Gp.map(zh=>({name:zh})))||[],colorType:parseInt((zg=Cs==null?void 0:Cs.properties)==null?void 0:zg.color)>3?"3":(Pp=Cs==null?void 0:Cs.properties)==null?void 0:Pp.color})}),(fh=(bh=J0==null?void 0:J0.data)==null?void 0:bh.relationships)==null?void 0:fh.filter(Cs=>Cs.type==="\u5305\u542B")),ug=(0,dr.RN)(Av),t0=(Yf=ug.nodes)==null?void 0:Yf.filter((Cs,xh,ud)=>xh===ud.findIndex(Hd=>Hd.id===Cs.id));ro(t0);let Kp=(Y0=ug.edges)==null?void 0:Y0.filter((Cs,xh,ud)=>xh===ud.findIndex(Hd=>Hd.source===Cs.source&&Hd.target===Cs.target));t0.map(Cs=>(Cs.transformd=!0,Cs.style={labelWordWrap:!0,labelPlacement:Cs.depth===0?"center":Cs.depth<3?"top-left":"top",haloLineWidth:Math.max(20-Cs.depth*6,0),labelMaxWidth:Cs.depth===0?300:100,labelFontSize:Cs.depth===0?22:t0.length>300?12:14,labelLineHeight:100,halo:Cs.depth<3},Cs)),Ca.current=null;let kg=t0==null?void 0:t0.length;Ca.current=new dr.kJ({container:zd.current,autoResize:!0,background:"#010A23",autoFit:{type:t0.length>10?"view":"center",options:{direction:"both",when:"always"}},animation:!1,padding:50,data:{nodes:t0,edges:Kp},node:{type:"image",style:{src:Cs=>Cs.newbordercolor,size:Cs=>Cs.colorType==1?100:Cs.depth<2?50:kg>250?10:20,fill:Cs=>Cs.newcolor,labelText:Cs=>Cs.name,labelFill:"#ffffff"},state:{highlight:{stroke:"transparent"},selected:{stroke:"transparent"},inactive:{fill:Cs=>Cs.newcolor,port:!1,labelBackground:!1,halo:!1,badgeBackground:!1}}},edge:{style:{labelBackground:!1,halo:!1,stroke:"#A150CB",strokeOpacity:.5},state:{inactive:{stroke:"#f9f0ff",strokeOpacity:.5,halo:!1,labelBackground:!1,lineWidth:1},highlight:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},selected:{stroke:"#43E93F",strokeOpacity:1,halo:!1,lineWidth:1},active:{halo:!1},disable:{halo:!1}}},layout:[{type:"dendrogram",radial:!0,nodeSep:40,rankSep:t0.length>250?360:240,direction:"RL",unitRadius:90,linkDistance:200,preventOverlap:!0,maxPreventOverlapIteration:100,strictRadial:!1}],plugins:[{type:"tooltip",position:"bottom",enable:Cs=>Cs.targetType==="node",getContent:(Cs,xh)=>{let ud="";return xh.forEach(Hd=>{ud+=`
    ${Hd.name||""}
    `}),ud}}],behaviors:["drag-canvas",{type:"zoom-canvas",enable:!1,preventDefault:!1,onFinish:()=>{setTimeout(()=>{var Cs;af((((Cs=Ca==null?void 0:Ca.current)==null?void 0:Cs.getZoom())*100).toFixed(0))},300)}},"drag-element",{type:"collapse-expand",onExpand:(Cs,xh)=>{console.log("----",Cs,xh)}},{type:"fix-element-size",state:"fix-element-size",enable:!0},{type:"click-select",state:"selected",onClick:Cs=>{If.current?(clearTimeout(If.current),If.current=null):If.current=setTimeout(()=>{let xh=t0.filter(ud=>{var Hd,Th;return(ud==null?void 0:ud.id)===((Th=(Hd=Cs.target)==null?void 0:Hd.config)==null?void 0:Th.id)});if((xh==null?void 0:xh.length)===0){Yo(!1);return}oa(xh==null?void 0:xh[0]),Yo(!0),Cs.view.setCursor("pointer"),If.current=null},300)},multiple:!1},{type:"hover-activate",enable:Cs=>Cs.targetType==="node",degree:1,state:"highlight",direction:"both",inactiveState:"inactive",onHover:Cs=>{Cs.view.setCursor("pointer")},onHoverEnd:Cs=>{Cs.view.setCursor("default")}}],transforms:[{type:"place-radial-labels"}]}),Ca.current.render(),zd.current&&(zd.current.style.opacity=1),(lg=Ca==null?void 0:Ca.current)==null||lg.fitView(),setTimeout(()=>{var Cs;af((((Cs=Ca==null?void 0:Ca.current)==null?void 0:Cs.getZoom())*100).toFixed(0))},300);var q0=Ca.current.getOptions();setTimeout(()=>{var Cs;q0.animation=!0,(Cs=Ca.current)==null||Cs.setOptions(q0)},2500),window.graphsRef=Ca.current}let Wp=yield(0,Ot.ZP)("/api/knowledge_items.json",{method:"get",params:{item_type:3,subject_id:Oa==null?void 0:Oa.pathId}});(Wp==null?void 0:Wp.status)===0&&yh(Wp==null?void 0:Wp.data)})}const U0=(bs,Nu)=>{if(Ca.current){if(Ks){bs==="Leave"?di.current.settype(""):di.current.settype(Nu==null?void 0:Nu.name);return}if(_s){di.current.onMouse(bs,Nu.name);return}try{const ic={},tc={};Ca.current.getEdgeData().map(Fu=>{ic[Fu.id]=bs==="Enter"?"inactive":"active"}),Ca.current.getNodeData().map(Fu=>{bs==="Enter"?tc[Fu.id]=Fu.colornodeType===Nu.name?"highlight":"inactive":tc[Fu.id]="active"}),Ca.current.setElementState(ic),Ca.current.setElementState(tc)}catch(ic){}}},p0=(bs,Nu)=>{if(Ca.current){if(_s){di.current.onMouse(bs,Nu.name);return}try{const ic={},tc={};Ca.current.getEdgeData().map(Fu=>{ic[Fu.id]=bs==="Enter"?"inactive":"active"}),Ca.current.getNodeData().map(Fu=>{var bh,fh;bs==="Enter"?tc[Fu.id]=(fh=(bh=Fu.tags)==null?void 0:bh.map(Yf=>Yf==null?void 0:Yf.name))!=null&&fh.includes(Nu.name)?"highlight":"inactive":tc[Fu.id]="active"}),Ca.current.setElementState(ic),Ca.current.setElementState(tc)}catch(ic){}}};return Ja.createElement(vt.Z,{spinning:rf},Ja.createElement("div",{ref:so,className:"h-screen flex flex-col",style:{background:"#010A23",height:"100%"}},Ja.createElement("div",{className:"relative w-full"},Ja.createElement("div",{className:"flex w-full px-40px-rem pt-24px-rem absolute gap-20px-rem",style:{left:0,top:0,justifyContent:"start",zIndex:1}},Ja.createElement("span",{className:Hc.tupugx,onClick:()=>{wr(),localStorage.setItem("tpuuid",An)}},Ja.createElement("img",{src:Wl+"/images/tpgx.svg",style:{marginRight:"10rem",width:"16rem"}}),"\u56FE\u8C31\u5173\u7CFB"),Ja.createElement("div",{className:Hc.autocomp},Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement(Wt.Z,{className:Hc.autocompwidth,options:xl,popupClassName:Hc.autopop,getPopupContainer:()=>so.current,value:_l,onSelect:(bs,Nu)=>{var ic;if(ts(va.find(tc=>tc.id===bs).name),oa(va.find(tc=>tc.id===bs)),Yo(!0),Ks){di.current.selectall(bs);return}if(_s)di.current.selectall(bs);else{let tc=Ca.current.getElementDataByState("node","selected");(tc==null?void 0:tc.length)>0&&Ca.current.setElementState((ic=tc==null?void 0:tc[0])==null?void 0:ic.id,[""]),Ca.current.setElementState(bs,["selected"])}},onChange:bs=>{ts(bs)},onSearch:bs=>{Xo(()=>{var Nu,ic,tc;return xf==="\u5168\u90E8"?(Nu=va==null?void 0:va.filter(Fu=>Fu.name.includes(bs)))==null?void 0:Nu.map(Fu=>({label:Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement("span",{style:{marginRight:"10rem",height:"20rem",lineHeight:"20rem",padding:"0rem 6rem",color:"#fff",fontSize:"12rem",background:"#1890FF",borderRadius:"2rem"}},Fu==null?void 0:Fu.nodeType)," ",Ja.createElement("div",{style:{color:"#fff"},dangerouslySetInnerHTML:{__html:Fu==null?void 0:Fu.name.replaceAll(bs,`${bs}`)}})),value:Fu==null?void 0:Fu.id})):(tc=(ic=va==null?void 0:va.filter(Fu=>{var bh;return(bh=Fu==null?void 0:Fu.tags)==null?void 0:bh.find(fh=>fh.name===xf)}))==null?void 0:ic.filter(Fu=>Fu.name.includes(bs)))==null?void 0:tc.map(Fu=>({label:Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement("span",{style:{marginRight:"10rem",height:"20rem",padding:"2rem 6rem",color:"#fff",fontSize:"12rem",background:"#1890FF",borderRadius:"2rem"}},Fu==null?void 0:Fu.nodeType)," ",Ja.createElement("div",{style:{color:"#fff"},dangerouslySetInnerHTML:{__html:Fu==null?void 0:Fu.name.replaceAll(bs,`${bs}`)}})),value:Fu==null?void 0:Fu.id}))})}},Ja.createElement(Et.default,{placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22",addonBefore:Ja.createElement(cn.Z,{overlayClassName:Hc.dropdownst,menu:{items:[{label:Ja.createElement("div",{onClick:()=>{ws("\u5168\u90E8"),p0("\u5168\u90E8","")}},"\u5168\u90E8"),key:"1"},...Td==null?void 0:Td.map(bs=>({label:Ja.createElement("div",{onClick:()=>{ws(bs.name),p0("Enter",bs)}},bs==null?void 0:bs.name),key:bs.id}))]}},Ja.createElement("div",{style:{display:"flex",alignItems:"center"}},Ja.createElement("div",{className:Hc.textname,style:{width:"60rem"}},xf),Ja.createElement("div",{style:{height:"22rem",background:"linear-gradient( 180deg, rgba(255,255,255,0) 0%, #AEAEAE 52%, rgba(255,255,255,0) 100%)",width:"1rem"}})))})))),Ja.createElement("div",{className:"flex ml-auto",style:{zIndex:"3"}},((aa=Me==null?void 0:Me.detail)==null?void 0:aa.can_managed)&&nf.get("type")==="classrooms"&&Ja.createElement("div",{className:`current flex item-center c-white ${Hc.ChangeBut}`,onClick:()=>{je.history.push(`/knowledgegraph/${Oa==null?void 0:Oa.pathId}/statistics/pathatlas/${An}?type=classrooms&tabs=3`)}},"\u6570\u636E\u7EDF\u8BA1"),((ca=Me==null?void 0:Me.detail)==null?void 0:ca.sync_uuid)&&((Ra=Me==null?void 0:Me.detail)==null?void 0:Ra.sync_uuid)===An&&((Ei=Me==null?void 0:Me.detail)==null?void 0:Ei.can_managed)&&Ja.createElement(Bn.Z,{title:"\u540C\u6B65"},Ja.createElement("img",{className:"current",onClick:(0,ia.debounce)(()=>{Bt.default.confirm({title:"\u63D0\u793A",icon:null,centered:!0,getContainer:()=>so.current,content:"\u8BF7\u786E\u5B9A\u662F\u5426\u5C06\u540C\u6B65\u8BFE\u7A0B\u7AE0\u8282\u5185\u5BB9\uFF0C\u66F4\u65B0\u540E\u539F\u6709\u77E5\u8BC6\u56FE\u8C31\u5185\u5BB9\u5C06\u88AB\u8986\u76D6\uFF0C\u8986\u76D6\u540E\u53EF\u5728\u7248\u672C\u7BA1\u7406\u4E2D\u9009\u62E9\u6062\u590D\u3002",onOk:()=>Fc(void 0,null,function*(){var bs;const Nu=(bs=_t==null?void 0:_t.find(tc=>(tc==null?void 0:tc.uuid)===An))==null?void 0:bs.name;let ic=yield(0,Ot.ZP)("/api/knowledge/v2/sync.json",{method:"post",body:{subject_id:Oa==null?void 0:Oa.pathId,uuid:An,name:Nu}});ic.status===0&&Rt.ZP.info(ic==null?void 0:ic.message)})})},500),src:Ef===1?Wl+"/images/gxxz.png":Wl+"/images/gx.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(1)},style:{width:"40rem",height:"40rem",marginRight:"15rem",marginTop:"5rem"}})),((Si=Me==null?void 0:Me.detail)==null?void 0:Si.can_managed)&&Ja.createElement("div",{className:Hc.hoverone},Ja.createElement("div",{onClick:()=>Fc(void 0,null,function*(){let bs=yield(0,Ot.ZP)("/api/knowledge/v2/backup.json",{method:"POST",body:{subject_id:Oa==null?void 0:Oa.pathId,parentNodeUuid:An}});(bs==null?void 0:bs.status)===0&&Rt.ZP.info("\u56FE\u8C31\u4FDD\u5B58\u6210\u529F")})},Ja.createElement("img",{src:Ef===2?Wl+"/images/bcbbxz.png":Wl+"/images/bcbb.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(2)}}),Ja.createElement("div",{className:Hc.name},"\u4FDD\u5B58\u7248\u672C")),Ja.createElement("div",{onClick:()=>Fc(void 0,null,function*(){Pc.page=1,Pc.limit=10;let bs=yield(0,Ot.ZP)("/api/knowledge/v2/knowledge_histories.json",{mehtod:"get",params:Wd({subject_id:Oa==null?void 0:Oa.pathId,nodeUuid:An},Pc)});Rf(Pc),(bs==null?void 0:bs.status)===0&&(Bd(!0),md(bs))})},Ja.createElement("img",{src:Ef===3?Wl+"/images/qhbbxz.png":Wl+"/images/qhbb.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(3)},className:Hc.img}),Ja.createElement("div",{className:Hc.name},"\u5207\u6362\u7248\u672C"))),((ba=Me==null?void 0:Me.detail)==null?void 0:ba.can_managed)&&Ja.createElement(Bn.Z,{title:"\u521B\u5EFA\u77E5\u8BC6\u56FE\u8C31"},Ja.createElement("div",{className:"current flex item-center justify-center c-white",style:{width:"40rem",height:"40rem",marginRight:"15rem",marginTop:"5rem",borderRadius:"50%",background:"#202F4F"},onClick:()=>{Fa.Z.publish("create_a_knowledge_map")}},Ja.createElement("span",{className:"iconfont icon-tianjia4"}))),Ja.createElement("div",{className:Hc.hoverone},Ja.createElement("div",{onClick:()=>{_s=!1,il(!1),Kl(!1),rl(!0),dh(2,!0)}},Ja.createElement("img",{src:Ef===4?Wl+"/images/gxtxz.png":Wl+"/images/gxt.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(4)}}),Ja.createElement("div",{className:Hc.name},"\u5173\u7CFB\u56FE")),Ja.createElement("div",{onClick:()=>{_s=!0,Kl(!1),il(!0)}},Ja.createElement("img",{src:Ef===5?Wl+"/images/zssxz.png":Wl+"/images/zss.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(5)},className:Hc.img}),Ja.createElement("div",{className:Hc.name},"\u77E5\u8BC6\u6811"))),Ja.createElement(Bn.Z,{title:"\u5168\u5C4F"},Ja.createElement("img",{className:"current",onClick:()=>{var bs,Nu,ic,tc;(0,vd.vp)()?(Gr(!1),(0,vd.BU)(),!_s&&Pa?(bs=Ca==null?void 0:Ca.current)==null||bs.fitCenter():(Nu=di==null?void 0:di.current)==null||Nu.fitView()):(Gr(!0),(0,vd.Dj)(so.current),!_s&&Pa?(ic=Ca==null?void 0:Ca.current)==null||ic.fitCenter():(tc=di==null?void 0:di.current)==null||tc.fitView())},src:Ef===6?Wl+"/images/qpxz.png":Wl+"/images/qp.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(6)},style:{width:"40rem",height:"40rem",marginRight:"15rem",marginTop:"5rem"}})),((Sa=Me==null?void 0:Me.detail)==null?void 0:Sa.can_managed)&&Ja.createElement("div",{className:Hc.hoverone,style:{marginRight:"0rem"}},Ja.createElement("div",{onClick:()=>{Hu(!0)}},Ja.createElement("img",{src:Ef===10?Wl+"/images/drxz.png":Wl+"/images/dr.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(10)}}),Ja.createElement("div",{className:Hc.name},"\u5BFC\u5165")),Ja.createElement("div",{onClick:()=>{(0,Xt.FH)("",fn.Z.API_SERVER+`/api/knowledge/v2/export.json?subject_id=${Oa==null?void 0:Oa.pathId}&fileType=xlsx&parentNodeUuid=${An}`)}},Ja.createElement("img",{src:Ef===11?Wl+"/images/dcxz.png":Wl+"/images/dc.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(11)},className:Hc.img}),Ja.createElement("div",{className:Hc.name},"\u5BFC\u51FA")))))),Pa&&!_s&&!Ks&&Ja.createElement("div",{className:"w-full h-screen",style:{opacity:0},ref:zd}),Ja.createElement("div",{id:"myDiagramDiv",className:`w-full ${_s?"h-screen":""}`},_s?Ja.createElement(ms,{ref:di,setzoomsize:af,setshowdetail:Yo,setitems:oa,nodeUuid:An,subject_id:Oa==null?void 0:Oa.pathId}):"",Ks?Ja.createElement(Nd,{ref:di,setzoomsize:af,setshowdetail:Yo,setitems:oa,nodeUuid:An,subject_id:Oa==null?void 0:Oa.pathId}):""),Ja.createElement("div",{className:"flex item-center sticky c-white px-10px-rem",style:{bottom:"30px",zIndex:101}},(va==null?void 0:va.length)>0&&Ja.createElement("div",{className:" flex item-center gap-12px-rem"},(Uo=df.filter(bs=>{var Nu;return(Nu=va==null?void 0:va.map(ic=>ic==null?void 0:ic.colornodeType))==null?void 0:Nu.includes(bs==null?void 0:bs.name)}))==null?void 0:Uo.map(bs=>Ja.createElement("div",{onMouseLeave:()=>U0("Leave",bs),onMouseEnter:()=>U0("Enter",bs),className:"flex item-center current gap-6px-rem"},Ja.createElement("img",{src:bs==null?void 0:bs.img,style:{width:"20rem",height:"20rem"}}),Ja.createElement("span",null,bs==null?void 0:bs.name)))),Ja.createElement("div",{className:"flex item-center ml-auto"},!_s&&!Ks&&Ja.createElement(cn.Z,{overlayClassName:Hc.dropdownst,getPopupContainer:()=>so.current,menu:{items:[{label:Ja.createElement("div",{onClick:()=>{dh()}},"\u5C55\u5F00\u5168\u90E8"),key:"1"},{label:Ja.createElement("div",{onClick:()=>{dh(3)}},"\u5C55\u5F003\u5C42"),key:"2"},{label:Ja.createElement("div",{onClick:()=>{dh(2)}},"\u5C55\u5F002\u5C42"),key:"3"},{label:Ja.createElement("div",{onClick:()=>{dh(1)}},"\u5C55\u5F001\u5C42"),key:"4"},{label:Ja.createElement("div",{onClick:()=>{dh(0)}},"\u6536\u8D77\u5168\u90E8"),key:"5"}]}},Ja.createElement("img",{style:{cursor:"pointer"},onClick:()=>{},src:Ef===7?Wl+"/images/xscjxz.png":Wl+"/images/xscj.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(7)}})),!Ks&&Ja.createElement(Bn.Z,{title:"\u5C45\u4E2D\u663E\u793A"},Ja.createElement("img",{onClick:()=>{rl(!1),dh()},style:{marginLeft:"10rem",cursor:"pointer"},src:Ef===8?Wl+"/images/jzxsxz.png":Wl+"/images/jzxs.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(8)},className:Hc.img})),Ja.createElement("div",{style:{marginLeft:"10rem",background:"#202F4F",borderRadius:"4px",alignItems:"center"}},Ja.createElement("img",{style:{cursor:"pointer"},onClick:()=>{if(Ks){di.current.handleZoom("out");return}_s?(di.current.zoomBy(.9),di.current.getZooms()):(Ca.current.zoomBy(.9),setTimeout(()=>{var bs;af((((bs=Ca==null?void 0:Ca.current)==null?void 0:bs.getZoom())*100).toFixed(0))},300))},src:Ef===9?Wl+"/images/newsxxz.png":Wl+"/images/newsx.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(9)}}),!Ks&&Ja.createElement("span",{style:{display:"inline-flex",width:"46px",justifyContent:"center"},onClick:()=>{}}," ",uh+"%"),Ja.createElement("img",{style:{cursor:"pointer"},onClick:()=>{if(Ks){di.current.handleZoom("in");return}_s?(di.current.zoomBy(1.1),di.current.getZooms()):(Ca.current.zoomBy(1.1),setTimeout(()=>{var bs;af((((bs=Ca==null?void 0:Ca.current)==null?void 0:bs.getZoom())*100).toFixed(0))},300))},src:Ef===12?Wl+"/images/newfdxz.png":Wl+"/images/newfd.png",onMouseOut:()=>{Cu(!1)},onMouseOver:()=>{Cu(12)}})))),Ja.createElement(Hs.Z,{tpacti:ra,initdata:Kn,uuid:An,Tabsdatas:_t,setshow:rl,getData:dh,containerRef:so,showdetail:Ea,setshowdetail:Yo,items:Ti}),Ja.createElement(Bt.default,{title:"\u6587\u4EF6\u5BFC\u5165",open:Hl,centered:!0,getContainer:()=>so.current,okButtonProps:{loading:Wc},onCancel:()=>{Hu(!1),Lc([])},onOk:()=>Fc(void 0,null,function*(){var bs,Nu,ic;const tc=new FormData;if(kc.length>0)tc.append("file",kc[0]);else{Rt.ZP.warning("\u8BF7\u9009\u62E9\u6587\u4EF6");return}Gs(!0),tc.append("subject_id",(Oa==null?void 0:Oa.pathId)+""),tc.append("parentNodeUuid",An);let Fu=yield(0,Ot.ZP)("/api/knowledge/v2/import.json",{method:"post",body:tc},!0);Gs(!1),(Fu==null?void 0:Fu.status)===0&&((bs=Fu==null?void 0:Fu.data)!=null&&bs.importErrorFilePath?Bt.default.confirm({icon:null,title:"\u5BFC\u5165\u5931\u8D25",centered:!0,content:Ja.createElement("span",null,"\u68C0\u6D4B\u5230\u672C\u6B21\u5BFC\u5165\u5B58\u5728\u4E0D\u7B26\u5408\u8981\u6C42\u7684\u6570\u636E\uFF0C\u70B9\u51FB\u4E0B\u8F7D",Ja.createElement("a",{href:`${fn.Z.API_SERVER}${(Nu=Fu==null?void 0:Fu.data)==null?void 0:Nu.importErrorFilePath}`,download:"\u5931\u8D25\u6570\u636E.xlsx"},"\u5BFC\u5165\u5931\u8D25\u7684\u6570\u636E"),"\u67E5\u770B")}):(dh(),rl(!1),(ic=Fu==null?void 0:Fu.data)!=null&&ic.has_route?Rt.ZP.info("\u77E5\u8BC6\u56FE\u8C31\u6570\u636E\u5BFC\u5165\u6210\u529F\uFF0C\u4E3A\u4FDD\u8BC1\u5B66\u4E60\u8DEF\u5F84\u7684\u8282\u70B9\u4E0E\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u7ED1\u5B9A\uFF0C\u8BF7\u66F4\u65B0\u5B66\u4E60\u8DEF\u5F84"):Rt.ZP.info("\u5BFC\u5165\u6210\u529F"),Lc([]),oa({}),Hu(!1)))})},(va==null?void 0:va.length)>0&&Ja.createElement("div",{style:{marginBottom:30,color:"#333333"}},"\u68C0\u6D4B\u5F53\u524D\u5DF2\u5B58\u5728\u6570\u636E\uFF0C\u5BFC\u5165\u540E\u539F\u6570\u636E\u5C06\u4F1A\u88AB\u8986\u76D6\uFF0C\u6309\u7167\u6700\u65B0\u5BFC\u5165\u7684\u4E3A\u4E3B\uFF0C\u5982\u9700\u7EE7\u7EED\u5BFC\u5165\uFF0C\u8BF7\u6309\u7167\u4E0B\u65B9\u6B65\u9AA4\u8FDB\u884C"),Ja.createElement("p",{style:{color:"#5F6368"}},"\u6B65\u9AA41\uFF1A",Ja.createElement("span",{style:{color:"#000000"}},"\u4E0B\u8F7D"),Ja.createElement("a",{href:`${fn.Z.API_SERVER}/api/knowledge/v2/down_template.json`,download:"\u6A21\u7248.xlsx"},"\u77E5\u8BC6\u56FE\u8C31\u5BFC\u5165\u6A21\u7248")),Ja.createElement(Lr.Z,null,Ja.createElement(Aa.Z,{style:{color:"#5F6368"}},"\u6B65\u9AA42\uFF1A",Ja.createElement("span",{style:{color:"#000000"}},"\u4E0A\u4F20\u586B\u5199\u597D\u7684\u300A\u77E5\u8BC6\u56FE\u8C31\u5BFC\u5165\u6A21\u7248\u300B"))),Ja.createElement(Lr.Z,{style:{marginTop:10,marginLeft:50}},Ja.createElement(Nn.default,Wd({},wp),Ja.createElement("span",{style:{padding:"0px 16px",color:"#1b8565",cursor:"pointer",height:32,alignItems:"center",display:"inline-flex",borderRadius:2,border:"1px solid #1b8565",background:"#1b8565 linear-gradient(180deg, #FFFFFF 0%, #F6F7F9 100%)",boxShadow:"0px 2px 4px 0px #E0DFE1, inset 0px 1px 3px 0px rgba(255,255,255,0.5)"}},Ja.createElement("i",{style:{fontSize:12,marginRight:6},className:"iconfont icon-tianjiashitixiaojiahao"})," \u9009\u62E9\u6587\u4EF6")))),Ja.createElement(lo.Z,null,Ja.createElement(Ja.Fragment,null,Ja.createElement(Bt.default,{title:"\u7248\u672C\u8BB0\u5F55",centered:!0,width:1200,open:Cd,footer:!1,getContainer:()=>so.current,onCancel:()=>{Bd(!1)}},Ja.createElement(Pn.default,{dataSource:mf==null?void 0:mf.data,pagination:!1,columns:[{title:"\u7248\u672C\u4FDD\u5B58\u65F6\u95F4",dataIndex:"created_at",ellipsis:!0,key:"created_at",render:(bs,Nu)=>Ja.createElement("div",null,Ja.createElement("span",null,bs),(Nu==null?void 0:Nu.is_now_version)&&Ja.createElement("span",{style:{background:"#2BAC8E",padding:"4rem",fontSize:"12rem",marginLeft:"5rem",color:"#fff"}},"\u5F53\u524D\u4F7F\u7528\u7248\u672C"))},{title:"\u4FDD\u5B58\u4EBA",dataIndex:"username",ellipsis:!0,key:"username"},{title:"\u64CD\u4F5C",dataIndex:"name",ellipsis:!0,key:"name",render:(bs,Nu)=>Ja.createElement("div",null,Ja.createElement("span",{style:{color:"#1B8565",marginRight:"30rem",cursor:"pointer"},onClick:()=>Fc(void 0,null,function*(){var ic,tc;let Fu=yield(0,Ot.ZP)(`${Nu==null?void 0:Nu.url}`,{method:"get"});(Fu==null?void 0:Fu.status)===0&&((tc=(ic=Fu==null?void 0:Fu.data)==null?void 0:ic.nodes)==null?void 0:tc.length)>0&&Ss(Fu==null?void 0:Fu.data)})},"\u67E5\u770B"),Ja.createElement("span",{onClick:()=>Fc(void 0,null,function*(){if(Nu!=null&&Nu.is_now_version)return;let ic=yield(0,Ot.ZP)("/api/knowledge/v2/restore.json",{method:"post",body:{subject_id:Oa==null?void 0:Oa.pathId,backupFilePath:Nu==null?void 0:Nu.backupFilePath}});(ic==null?void 0:ic.status)===0&&(dh(),Bd(!1),rl(!1),Rt.ZP.info("\u5207\u6362\u6210\u529F"))}),style:{color:Nu!=null&&Nu.is_now_version?"#999999":"#1B8565",cursor:"pointer"}},"\u5207\u6362\u81F3\u5F53\u524D\u7248\u672C"))}]}),Ja.createElement(sr.Z,{hideOnSinglePage:!0,style:{marginTop:"20rem"},pageSize:Pc.limit,total:mf==null?void 0:mf.total_count,current:Pc.page,onChange:(bs,Nu)=>Fc(void 0,null,function*(){Pc.page=bs,Pc.limit=Nu,Rf(Pc);let ic=yield(0,Ot.ZP)("/api/knowledge/v2/knowledge_histories.json",{mehtod:"get",params:Wd({subject_id:Oa==null?void 0:Oa.pathId,nodeUuid:An},Pc)});(ic==null?void 0:ic.status)===0&&(Bd(!0),md(ic))})})),Ja.createElement(Bt.default,{open:((Ua=Eo==null?void 0:Eo.nodes)==null?void 0:Ua.length)>0,title:"\u5386\u53F2\u56FE\u8C31",width:"1200rem",footer:null,getContainer:()=>so.current,destroyOnClose:!0,onCancel:()=>{Ss({})}},Ja.createElement(_f,{datas:Eo}))))),Ja.createElement(uc,null))};var Vh=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(wh),Pf={wrap:"wrap___HuFFi",add:"add___GrP2R",dimensionalBall:"dimensionalBall___flm6B",archer:"archer___biVqC",svg:"svg___hXxGw",modal:"modal___DR9M_",mHead:"mHead___I923K",form:"form___W2fTe",mType:"mType___hoISa",listItem:"listItem___JCZwd",tupugx:"tupugx___iCNXk"},qd={flex_box_center:"flex_box_center___aEG4A",flex_space_between:"flex_space_between___O70yE",flex_box_vertical_center:"flex_box_vertical_center___rEvY1",flex_box_center_end:"flex_box_center_end___Xp3ui",flex_box_column:"flex_box_column___McZmY",largeBall:"largeBall___SbxSR",middleBall:"middleBall___eKLzh",smallBall:"smallBall___r7xv5",largeBallDish:"largeBallDish___EeTGm",middleBallDish:"middleBallDish___hca4h",smallBallDish:"smallBallDish___rrHxf",smallBallGather:"smallBallGather___hHHqa",box:"box___yWjPn",spectrum:"spectrum___r9a7p",pedestal:"pedestal___Grjvz",spectrumHover:"spectrumHover___OibBM",pedestalHover:"pedestalHover___EcKUJ"};const $u="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjkxcHgiIGhlaWdodD0iMTk0cHgiIHZpZXdCb3g9IjAgMCAyOTEgMTk0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA2MSAoODk1ODEpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPuWfuuW6pzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMjcuNzcyODY0MyUiIHkxPSI0My4xNzgwNjE3JSIgeDI9Ijk3LjIyMjIyMjIlIiB5Mj0iNTAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzMTdDRDMiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3MkE5NSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjE0LjI3MTI2ODMlIiB5MT0iMzEuNjQ0NzI5NyUiIHgyPSIxMDAlIiB5Mj0iNzMuMTEyMDA3OCUiIGlkPSJsaW5lYXJHcmFkaWVudC0yIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3NzFEQiIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjg0REIwIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMTAwJSIgeTE9IjM1LjA0MTMwMTklIiB4Mj0iMCUiIHkyPSI2NS41NDY3MzEzJSIgaWQ9ImxpbmVhckdyYWRpZW50LTMiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzA2NkI0IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxNDM4OTQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIyNy43NzI4NjQzJSIgeTE9IjQzLjE1NTA2NzMlIiB4Mj0iOTcuMjIyMjIyMiUiIHkyPSI1MCUiIGlkPSJsaW5lYXJHcmFkaWVudC00Ij4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzMxN0NEMyIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjcyQTk1IiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMCUiIHkxPSI1MCUiIHgyPSI1MCUiIHkyPSI2NC4yMTc0OTQ1JSIgaWQ9ImxpbmVhckdyYWRpZW50LTUiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMkY3MEM5IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM1QjVGRkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtNiIgcG9pbnRzPSIxNDQuNzQ1OSAxNi40Njc5NzAxIDI2MC4xMzI5MzUgNzIuOTI3OTU1NiAxNDYuMTg4MjM4IDEzOC43NTc4OTYgMzAuODAxMjAzMyA3Mi4yMDcxODk5Ij48L3BvbHlnb24+CiAgICAgICAgPGZpbHRlciB4PSItMS41JSIgeT0iLTIuOSUiIHdpZHRoPSIxMDMuMSUiIGhlaWdodD0iMTA1LjclIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItNyI+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dCbHVySW5uZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSI1IiBpbj0ic2hhZG93Qmx1cklubmVyMSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRJbm5lcjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93T2Zmc2V0SW5uZXIxIiBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIgcmVzdWx0PSJzaGFkb3dJbm5lcklubmVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAuNzk2ODM2ODkgICAwIDAgMCAwIDAuOTc0NjYwMTA4ICAgMCAwIDAgMCAxICAwIDAgMCAwLjUgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93SW5uZXJJbm5lcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSLpobXpnaItMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IjA4MjAtM0Tlm77osLEt5YiH5Zu+VjQuMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQ0OS4wMDAwMDAsIC0xMzQ0LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i5Z+65bqnIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NDkuMDAwMDAwLCAxMzQ0LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IuefqeW9oiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgb3BhY2l0eT0iMC4zMjA4NzA1MzYiIHBvaW50cz0iMTQ0LjU4NDkwNiAzOC45MDI0MTk0IDI5MSAxMTAuNDY0MzA1IDE0Ni40MTUwOTQgMTkzLjkwMjQxOSAwIDEwOS41NTA3NDkiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSLnn6nlvaIiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMikiIHBvaW50cz0iLTcuNTMxNzUzZS0xMyA3MC43NTEyNzkgMTQ2LjA3Njk5NCAxNTUuMjI1ODY2IDE0Ni4wNzY5OTQgMTc3Ljc5MzA4NSAtNy41MzE3NTNlLTEzIDkzLjMxODQ5NzMiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSLnn6nlvaIiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMykiIHBvaW50cz0iMTQ2LjA3Njk5NCAxNTUuMjI1ODY2IDI5MC45MzQxMzggNzEuNjY2MTY2MiAyOTAuOTM0MTM4IDk0LjIzMzM4NDUgMTQ2LjA3Njk5NCAxNzcuNzkzMDg1Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTQpIiBwb2ludHM9IjE0NC41NTIxODIgLTUuODk5OTA5NzdlLTEzIDI5MC45MzQxMzggNzEuNjY2MTY2MiAxNDYuMzgxOTU2IDE1NS4yMjU4NjYgLTUuNjg0MzQxODllLTEzIDcwLjc1MTI3OSI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgPGcgaWQ9IuefqeW9oiI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTUpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHhsaW5rOmhyZWY9IiNwYXRoLTYiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDx1c2UgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMSIgZmlsdGVyPSJ1cmwoI2ZpbHRlci03KSIgeGxpbms6aHJlZj0iI3BhdGgtNiI+PC91c2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==",sl="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjk1cHgiIGhlaWdodD0iMTk3cHgiIHZpZXdCb3g9IjAgMCAyOTUgMTk3IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA2MSAoODk1ODEpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPuW6leW6p+mAieS4rTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMjcuNzcyODY0MyUiIHkxPSI0My4xNTUwNjczJSIgeDI9Ijk3LjIyMjIyMjIlIiB5Mj0iNTAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzMTdDRDMiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3MkE5NSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjE0LjI3MTI2ODMlIiB5MT0iMzEuNjQ0NzI5NyUiIHgyPSIxMDAlIiB5Mj0iNzMuMTEyMDA3OCUiIGlkPSJsaW5lYXJHcmFkaWVudC0yIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzI3NzFEQiIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjg0REIwIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMTAwJSIgeTE9IjM1LjA0MTMwMTklIiB4Mj0iMCUiIHkyPSI2NS41NDY3MzEzJSIgaWQ9ImxpbmVhckdyYWRpZW50LTMiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzA2NkI0IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxNDM4OTQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSI2LjA2MjU2MyUiIHgyPSI1MCUiIHkyPSI2NC40MjMxOTgxJSIgaWQ9ImxpbmVhckdyYWRpZW50LTQiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMkY3MEM5IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyREUxRkQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtNSIgcG9pbnRzPSIxNDYuMzI3NiAxNi42NDc5MjI2IDI2Mi45NzU1MTcgNzMuNzI0ODcwMiAxNDcuNzg1Njk5IDE0MC4yNzQxNjIgMzEuMTM3NzgxMSA3Mi45OTYyMjgzIj48L3BvbHlnb24+CiAgICAgICAgPGZpbHRlciB4PSItMS4xJSIgeT0iLTIuMCUiIHdpZHRoPSIxMDIuMiUiIGhlaWdodD0iMTA0LjAlIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItNiI+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjAuNSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd0JsdXJJbm5lcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjQiIGluPSJzaGFkb3dCbHVySW5uZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldElubmVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluPSJzaGFkb3dPZmZzZXRJbm5lcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIiByZXN1bHQ9InNoYWRvd0lubmVySW5uZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMC43OTY4MzY4OSAgIDAgMCAwIDAgMC45NzQ2NjAxMDggICAwIDAgMCAwIDEgIDAgMCAwIDAuNSAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dJbm5lcklubmVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iMDgyMC0zROWbvuiwsS3liIflm75WNC4wIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTQ3MS4wMDAwMDAsIC0xMzU0LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i5bqV5bqn6YCJ5LitIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDcxLjAwMDAwMCwgMTM1NC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QtMyI+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IuefqeW9oiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgb3BhY2l0eT0iMC4zMjA4NzA1MzYiIHBvaW50cz0iMTQ2LjEzMTc2NSAzOS40MTkzNDQyIDI5NC4xMTMyOTggMTExLjg2ODYzNyAxNDcuOTgxNTM0IDE5Ni4zNDE0MjkgLTEuNDIxMDg1NDdlLTEzIDExMC45NDM3NTIiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIiBwb2ludHM9IjEuMTM2ODY4MzhlLTEzIDcxLjUyNDQwOCAxNDcuNjczMjM5IDE1Ni45MjIwODUgMTQ3LjY3MzIzOSAxNzkuNzM1OTA1IDEuMTM2ODY4MzhlLTEzIDk0LjMzODIyNzgiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTMpIiBwb2ludHM9IjE0Ny42NzMyMzkgMTU2LjkyMjA4NSAyOTQuMTEzMjk4IDcyLjQ0OTI5MjYgMjk0LjExMzI5OCA5NS4yNjMxMTI0IDE0Ny42NzMyMzkgMTc5LjczNTkwNSI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSLnn6nlvaIiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiIHBvaW50cz0iMTQ2LjEzMTc2NSAtNC43OTMzNDg4M2UtMTMgMjk0LjExMzI5OCA3Mi40NDkyOTI2IDE0Ny45ODE1MzQgMTU2LjkyMjA4NSAtMS40MjEwODU0N2UtMTMgNzEuNTI0NDA4Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IuefqeW9oiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC00KSIgZmlsbC1ydWxlPSJldmVub2RkIiB4bGluazpocmVmPSIjcGF0aC01Ij48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTYpIiB4bGluazpocmVmPSIjcGF0aC01Ij48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==",dl="data:image/png;base64,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",Wu="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUcAAAGCCAYAAABzbAFsAAAAAXNSR0IArs4c6QAAIABJREFUeF7svWtvG1ma5/k/ESduvJO6WbYyy5nlzulxbu9i14MCFthB+UVjgf0A7o9QX8Ppj7H1Edpv9vW8cgGNWWAWxgA9W+7pLHWWMq20LJEixWvcIyafuFDBIEMkJVJKSkGUK8WIE+c5fCLOL57LuTDkn1wDuQZyDeQamNIA21Sd+L4/0XbGmL+pvyVvd66B+6SB+9I3Nw6OacWnH6ockvepm+W/ZZM0cN/65kbBcZ7y4wcpB+Qmdam8rfdBA/exb24yHNNtH7vVORzvQ3fLf8MmaSAFx3vRN+8THOlZCgCZw3GTulXe1vuggTlw3Mi+ualwzGp3Dsf70NPy37BxGkjA8d70zU2HY9z+ZKY6TGPn2euN62B5gzdXAzPguPF9cxPhGLc5K66RW4+b28fylm+oBiI43qu+uTFwTL2ZMk33N78EHl8Dfh533NBeljd74zRwX/vmpsFx6s30DmAvo0TMWwCvwr9zOG5cF8sbvKkayLIaN71vbjIcr3Krczhuak/L271xGpgBx3vRNzcOjm8B9ip8fIK2vwfYC8B/ByCyIAPLMR/Ss3F9LG/whmoghuN965sbB0eCYmSuJwEJAmQERT+PO25oL8ubvZEaSFiO96pvbiQcCZCRxZh8mMZwjA7mrvVGdrW80ZumgSQc71Pf3Fg4xm71B4A9v7Qa8Rbw86TMpnWvvL2brIE0HO9L39wkOArRA0RtTv7DBwA64Cdd6zxjvcndLW/7JmnA9/172Tc3Co5xwPc9IGihxZjlVufDeTapd+Vt3WgNEBzvY9/cRDiOrcbDKGP9LJGMiZMyueW40f0tb/wGaSABx3vVNzcKjil3mhEcn4UPkZ9wrb0YkPksmQ3qYXlTN1YDkVs9Ee66D31zM+Do+7QHQjrWGH/HIQAL8KO4Yw7Hje1mecM3TgP3uG9uBBzT2bAPgCADjB+B4Snof8lhPDkcN66H5Q3eVA3c5765cXBMJGPYEcCeAjgC4AD+M4DAmMNxU3ta3u6N00ASjvetb24kHF8A7OgIwlMiYwKO1gf4z5/DzWOOG9fH8gZvqAbScLxPfXPj4AhAODyEwJ+B8ShbTVYjudYfAP85cjhuaD/Lm72BGki51feqb24mHAGBwBjDEcfAwQG8HI4b2LvyJm+0BqbgeI/65sbB8QMgUjLmWZS9PjkBc/fhR9aj9+4dvJcvw7hjPpRno/td3vgN0EASjvetb24kHJ8D7BgQxMitdhHC0TmEf/wM7ssoKZPDcQN6V97EjdZAGo73qW9uJBwLRxD4U7AYjjgBzH14BMhjJOFIzx0Nkcw/uQZyDaxDA2k43qe+uXFwBCAeAYJyAgH7gHAK5u3BJ+vRALxngPv2LfxXr+AFPy7fhXAdfSKvM9dAoIFUzPFe9c2NguM7QHgJCAEcAUGI3GoPl3DsAt4PgPcKORzz/ptrYN0aiOF4H/vmxsHxABApS52E4ymABuAdAN77BBxDwzF3q9fdQfL6H64GknC8b31zI+GoRskYshz3ABAc7QiObz/Ax3O4ZDnmcHy4nTb/5bejgTQc71Pf3Cg4BgPAAZFugJRyq8m13gfcxFjHHI630z9yKQ9YA4mY473rm/cCjs0mUN+Bl8PxAffS/KffiQbmwXGT++bGwZGy1TTGMbYc2wCjTHUdl3A8A7w/Ad7rfCD4nXSYXOjD0UASjvetb24MHN8CwtfvIbx4AeEEEDuJQeANwD8B/MoR3NFTeDkcH07nzH/p3WqA4Hhf++ZmwREQXuASjrvRUJ5zACbgVQB3hByOd9tdcukPSQNjON7Dvvnrh2O40jBtuUo7nImvAEaWIwcEBrCLyK2uAZ4OuPEUwtytfkhdNP+td6KBe943NxKO/3wKruxNzq0ewzGaQpjD8U66Sy70IWlgBhzvU9/cGDjSMJ63keX4zwCnQeA0t5rGOtIwHgvwCoATrQhOC97mK/M8pI6a/9bb10AEx/vaN68NxyhLNXVDVj6f2ffZdwD7PSDsAkIh3LNa7LchCgwMlKaO4NgF3J1ofnUOx9vvK7nEB6aBX1nfXDWTNheOgDgxt7oFv70NJ4fjA+ug+c+9Ow1kwfGO+uadwzGrAek7tLI5zTNuwAjgcjRDpncBVvE7vl2ve0XAiVfmyS3Hu+szueQHooFfSd9cF5OWshwXbUT8aKwEkIkbcHAIkfaOieE4uIBQo0wM4NPc6gHgVgGXli3L4fhAOmj+M+9OA7+CvrlOJi0Ex2UbkLxbNwZk8gYAYvMYQvUA4iNA6IXDe3I43l33yCU/ZA3cYd+8DSYtAkfm+zdfTPu6kCQlvIkSMrQkUhMQnlFCBhCH3a6AapXMRF8D3B8B7/8MtrDOLceH3Gfz3347GrjDvnkrTJoLx3mEJnDRraB5zFfdkutmsWfdgAbAaW71MLIcCY6lcB1Hl+D4/j28H36AF6wGnq/neDs9JZfy4DRwV33ztph0JRyvagRB8fXsxyETktcBVdYN0AGRxjmKPTDXh69Vg6mD7v9McEyuBp7D8cF12vwH344G7qJv3iaTrgvHeRbnTEBex3qctSTSz4C0F2WrB9H0QXKrCY60+MT5U7jjrRJyON5OT8mlPDgN3EXfvAKOK2fS0nC8wmJMPxyzAbkkrNI3oHsC0dkHL3QhijQInFaboEHgHXh9B+7THTjnyOH44Hpq/oNvXQN30TdnwXFdTFoajrQtyyJ34U1GHHJZ1zp9A344Bf96D2LsVlNbCI5FwPsJcJ8ih+Mi9ycvk2vgphq4i76ZYTmuhUmZld7AfA10vjY4AvxrXMJR6IN1fPh7FbgG4NL86txyvOljn1+fa2C+BqbguOa+edtMWhiOiaz0fK1dlphyrZeNOyZvAC1Z9p+iG9AEOCVkKtE4R1p4QgacHI7L3J68bK6B62vgtvtmGo7rZtLCcJzlTr+NXOxX4XqLwedVYkgPWY/0SQ/zWca1nnUDtjrgVh1iHWDDPphWhkdwHLbgPtmGnVuO13/g8ytzDSyqgdvumzMsxyl+rZJJs+F4uRRRUk8TZakRBMX0hyCZBGR0fsKCvA4c37+HSFskvG1C2pHAlRoEuQ8BZcDtw5fLcCljrQD2//cBXrw96zKyFn0o8nK5BnINADEcb6Vv3gGTZsJxXtAzC4yJBybtTt8cjoBIWyS8AyQAnJYv0wGhDOAC8GWEcGwfwzk+CGbIBHtX53DMu3GugfVoYAzHW+ibd8Gka8FxXsZ6hvW4EjhuHUE8egpeA7jVhyiWwYQBmFaCpwKuSXAEHFp84s85HNfTI/Jacw3E7uAvc6uJBe8Bcd19cx4c18GkpeGYthrfvQPDS9D/rrIWJ+FIyl1wvCMp5e1bCF+/grAFiEeI4AiI0gACaN4gudUe3JEL12vAJjg+j+ZX55Zj3pdzDaxHA7fZN6+C47qYNBeOMzJCE9dkwTFlPU5nrZeBI23LihlwTKzKQ241zZDxkMNxPV0hrzXXwKQGAjjeUt9MwvG2mLQUHKcIPWNAeGxBrguO/9yC9OU2RDUc6yjoAzAaBF4rwUnC8ewdvD/9Cd5339EWM/kn10CugVVrIA3HdfbNLDiuk0lz4Zj05VMNmXntO4Qu9trgCEhfAqLbBzcZhFIpnCFj9OAKFTjNEzhf78M5AzzagfA7lsNx1Z0ir++6GqAYXbDT8B19Vit/Co5r7Jspt3rMnnUyaRpw0ynzazUkjtnSf2eNd1w0FjjrBnzVBXeq4SBwfRiuysNKcATAaQKOeAj3YxfeyQu437Grl1K7o6f0VyD2Ljvpr+DnX6sJWXAJEhPRJ6nXRY4nGkLYnAg3peX9uuRfp29+jWsYLnfEpCk4zhloGZR/B7CXVz9cwdvx7Vvg1Sv4K4cjwJ1ohkwMR+7DFR04qMM+Wx0c0/q57bf+LcnPQTnncV5o7u5c3gbwS5T67pdv3814eafLza14wQIrlv8dtf/3EJ7vQjioQPyhAOlrDq5WIFrDcJV+Mlwo5KV34FLf1K4Bx7ti0pVwnLHaRVx+fN376Ha/SGSrM1xr0tUYLtexHK1j8IsCpIMGRIJjcAOKwGAIiD240OA0P8E5/jPcXjSc5+2HX2R+t+DDExeLy6evy6pnXrnNkO/frcu35D26leJJy+8XgdMwo34w/cJMl8uCYPo3ULnLZ3B+vWHfm19uTfKTcNR0cPEr8BoH9wXwYMWsYhjy4n24YhnO+Skctw9HewZ3mZBXOt6YWkd2bUxaCI7xlJydCISx1RiDcXxD3wMvXsBfBxzx4YN48Py5KLQhFRoQ+wNIYgnsojUSXL/gsy5cT4Yz0mAfH8LtHYdjHd/+wzXgmH5o/xw9tN8u6KLPg+WyHfu25T/0JNZ3fmD1THyS95T+nvd93vXLPgPz5KXP34L870jm7yE0dIi1J+BlD1J5ByIkcLEIZupg5W24YzgCjgs4NFnjpnC8DSbNc6uD87MakrAYg9vwProZCQsyfqMl32zXthzxAeLB82CvasnrgfuV0HK0dQiSD0+nMY4WnFMdTrcNh+D47gO8d+S2zJrnuOzD+dDK04vgQUHyFysxabnR/Y5fSvT3VS9GKpc8n/4ePztXHY/LpOuZdXzWy/sO5L96DlbvQHgsQ/z6f4NYrkAqSxBNGZJjQKhvwa8WwtWyxHC1rDQciQdzQ1WzkjG3waSF4JiIlEy40y9SNykJSLIe6fMy2Bxw/LmEIx1aYKxjHPSlFXlog60AjgD3I7ea4KjrI1qPxzV12J/7cBwP9hiOf56v/BtzrxlZlju3IGtWY9cp/95DMoJiEoQ3fiAeRgWvXgH1ryE87kP8+t9DLCuQuA4ucHCCo8DAdupDh3tFF2XYPzThlnaCuGNkOVJ/mR/vzshUz3SnV8mka8GRrMZ0I+LHgQBJ1mMMx2b0ZqDFKJJrPAaCbwDHIsBNQDg9h+iN4MOBa0qwfzgN3lT2+Rnc//z/wHv//R0B6771j5e/vOTukyVJU9/+AQKuerHQueQLL/09vsfzyl11XVzHrBfrvHrvWP7Lb8F2nkMgo+XZDsTHT8FtB1JFArdFCNCAkge3rMKZCUdiw4IMSHSnNBSD7+tg0sJwpJkwL6NgY7IhHxL5t+eAv244DjsdmfE6LwngFoPQDSxH0Iasrm7APhnCaZ3DaX2C+98suO9ProBjTPBY83Ewddnj8fVZ12WBclk58+qfdz7djuvIp078lryB+W/8X+X7IQlFut9pHUTuzszjyeckeV26nkXrXbRcWpHz5C1a76LlMuS/+Abs678HOziA+KwK0R/0lcpWWazK4I4QZqsbNTjlYrBdsk27g5aQsBxvCMd1MykTjqlMNUsO34nhmARjoL8PgP4cfjJz/TZhOUY6Dlzr61iO2gm4qkJiHGM4NjsQux0wSYTjMVh/NeCe/QVO8xjuhx7cP3/KLce1QKoDb6MgSUmWd2GHxTdgeJx4Lj4lssRJT4PKXfV91ni2JDSTcrKOU3s2VD7Bcfd/gvC3/wFC5QLSzhYkpQC+W4U4siCS5ViX4RRUOIUSrJvC8baZNBeOiRHoU/HGWXB8/vzSeqT7ngXH0Kueb30kY44awFVAqkQxx95oJI4uCmJbB3wHrjaA9b0IJ4bjf/0rvMPPiU5QXxKUndR+Ofn108Fzgsc7GrEx/16uBdLzKo2hSKC66hMHzCks9OIywTiv+pWd30D5FFojOH7xFcT9HfCdKqSGAu65kFxBFzRoqFRgM3fg7iol6y81ODexHGM43haTloZjptUYPSVJ1zppKSayUktlrGfB8QDgn4dDyWZFYXQB8dQA8xy4yhDW90M4Z204zc9w/+X/hzsBx5U9yXlFUxr4lmKSvyJIhsNxhAmr7Ka3jV6WC7wgv+2A/XmBcks351cmn37nzrcQvnkBoa5C2qlD+lIDH3i65IlMqCiqX3kEm3lwdx0EcBwewXn6FE4wlGdJtzoLjuti0o3h+Dxxhz/McK3jMY83heO3gPgDwPdpsdt+X2qZolTaLrBPn8B7JpgtwcFPsE/7cEYm7H/5DPe//b/wjk5nWIulJS3IQWR1ZF33baSEP2c87vH18en7LJ+g8H/DWSTQvjQcFrnglS+iDgEEErovM+7Jt98Cf866V4vIWLTMPZdPP4/g+B++hig+B/+6DKnQH0kjMKnU0BhUYKcK2y/A2QWsn1pwKwPY35/DDab2rgmOq2LSJBwTcxivorQWhQzjRhwegj17Bj+AIwCyHmMYrhKO708hPd8DHw0gjwRwienC588a73XBbAGORDegCXfwGfa/nsD9/s9wAzg+ixp2mHqq4+PzHvas61Z1/D7K/wIeHv9iSd5WhpugCNA/PHsENstjyDqOR2DYil6YSWhmHU/fLyqXCN88FPn0O3e+gvC/HkCUd8C/rkIqApKuQipqYI5psEfbqiVvwR7DcRv294B78svkmYXgeIdMyoTjjLGN4xR6HGuUD8HG4KGHEiEg01nraBmzqUHhi8Yc37yD+LsDiK0y+CQcIZydGlLLVJllw3FbQ7tTKNqDc9j/2oL74b/CO+7MsBLLqWP9yDJMH487warOx/U9JPkEjW9/yVauC5IJKAaQiz+HiTfXs/AtSP+fPpx+v80ql3zGkbyAKkzGtB+YfFJrAEcFov8bSP/+MbgkQHZlcEWAoMBA/UvVkjXYhW7XblerTgXXh+NtM+nacCSr8TC9nuMhYD2DPyvumFjCbOmY4xtA/B0gigDfQmQ5lsAlQDg7gtQywYYOXGEE63QIp9+E/X0T7vdNeJ+68DELkPOstfz8ajUw/CW7vUpIEhQH4ASuAHrJ1tLLLPkCSn9f7S97sPKf9sG2/ncIf1sE/+I3EB8XQzgaCiRFhKACqG7B4grshgOrXcVa4bhqJk3Acd5I9GTgM201xs9bbD1SAjk5lTCG48RA8AWz1e/ChW3HcDwfQDEE8FIB7OcfIZ/3wFwaBO7Bavdh3zoch5HFUlwylrmqTrpJ8glan+HgLa1RfI3PS58/+zuIh7E1P6OKpwCOljieLpp1fVzuuufnXXfT+uddv2r5T58C3xQh7uxD3N0Gf7wPLphQPAWc3GrRBNt+rJtVRbOVIiza32lZy/EumbQ0HLUPYOQ3yzNWAY9cksC1XgccB01IX+9AJDiyIOYI4eMZpM99U3AdxfVcmJ9HcPrnsP/ShvvXj3ADy/H4Gp2QLjmIrpt3fVwuLWbedfOadZ/lP4K3FCS/8/nTI/BZ0MtSI3XeoxkXpCFB5ejjdMFmhmEiAQf1q89PQfaeyyd9PH8Mofob8N0G+OMSuCpAlhVwuQABCrC9DVP14FSKMNcFx3Ux6Uo4vn0LRvMnow/tMsbSDZmV67AQutbJDPUqLEeCI+1ZbdUgM4Ru9V9/gjzohW616sL813O4xggWwfHwX+Cd9hLW3LKWXWyRxRrIr5+7SMAEIBbRH4U8hrAzLck/+BIeQxwvApG8B3WwZMgkgFeiAfRuGcNuGMzkwDEViOoIyscXxPUmy8V1BRVFX3L542cgDccdEZK6A1mRweVohsyTum5KimZ/UYT5z224TxqwlknIpC3H22TS8nAEWOzbHx+BxW9dekEfRLNh1gZHQNq5uISjr0P8uQmJ4Nj14LEWrKMBnG4T9k8jOEc/wZ2A4zxLbUXnH0f1fFpRfctWs5HyLXh4GiRunF+m4TP8ARxF8ORvTzLqKp08HoJ9SsSZAyjGF0zR87KmiXIzBOTyE3oEQHr+5n+BUKNZMU/Bt82RVNgtyMUSxEs4wpQasOs9WD84cNYCxzUx6Wo4Aiyx2ldoOQIsjjfyIzBELknglqTg+D5a3zFpQS4bc/zuO1/4/WsIFHMcRHDsSVAEAVwGhKMW5KEFNhzCddqwf3Zhd49COP7QhtccwMdp6knXlowN6lFMMeO6uTCKr4+bkcvPtkAJakShIRjpNfMFk7DgAhgmLbrIYo3vC6l9fD6qN74VV73AcvlX65/0/tVvIe58A3G3RnCEVNiFLEvglJAht/o3+zAkDbbyc9/+/KRsy8ewOwdwFh3KM2U53iKTrgfHKN7IU3FHiu8cPIVPlmNqnvV4GM+N4Qjw3vASjictyN0BhM7QdO2RZ/880OxuC/ZPJ3B+MuDOhGPUM/b2wj9OU/DMOh53qHnnF7X0cvmz9Y/o5TEBtyuUmobYXgVslseQBbssObn8S6XPeomQnp8WIW7vQSTLcb8ELktQlEroVisAvtyDIdZhKf2+/bm8RjiugUkz4ZgeAJ5Y/YLRGEdKxiRd6uRzG1iP0ZCeRFJmNhzpwjkZ6+98X/g9bcEaW44ER0BxdF2SoAln55DPP0PsMzj+ENbPHuxuJ8hYOx//Dd6/DuDvpDpWs5CyHEeRZZg+Hl23E52fum7O+Yi98OL6o/K5/Kv1T3qbgFtkeQfHE1b3FAQzyiE+vjdZb3B92qsAQC+tXH7iHs3QK7047McQvm5A2N6CuFsH36lAKhQhizAlWSM4KviiAgNVWFUX1ucybBmwaZOtF4DLFpghE1uOd8GkheD4x/fvhRd4EUzIj+GYthpj/iRd61lwjMotvDJPEo4nrZb8jSTxE84VUSgGCZlPJ6bStRWhb8OxL2D/PITdbcPun8I5voB3qMMHudY01SmGUwqWWcfTxkp+faiR5jr1V4Afv1TSVn0ArQTMYst7kXLp65JMDKB7zXpjVUzVn6rvvsknnXm/BftShbi9DbFRGEpf7wmclZislFUuOhBlAF/9DXSosKqA9RmXcPzh7VvvH1698uYZR1lwvA0mLQZHQKh/AKO5lLJ8yPDsGUXKg2tPjsP/7h+EAEq61mk4xrsRxjHIRZYtm4Qj5G8k8BMOhdZzlDQI/3YMpXlmcdP2HX2oWJ0B7OYQVgDHH+AdDuFDDdu2bbQmfm9L3Z6IfS0Lv7i8b4Q6aEVysjzAXP5i+if9CZEVn4RYbMEHgE5Y+XQ8/T3r+qnr4puVqi+XH/aZq/S/U0rAcQfSFxIk+Qmkgo/AcqTrn+zCKMgjS3ALlu50bNTrFlmOP7yF9w+vcH043gKTroRjPF3nj9QQRHBM+PYBGBNj/PbJTD4CnCjuOAXHX9YBoBXBrwPHoyNwrwTpm+0w5lgogo8MiH/9BKUzgmgO4ehDWM1zOM1BCMdPF/B+8OGhNRtX21kUm3M8XV1WPRlix7Xn8mcrmiVeMkkrlV5G6e/pGrLOz7uO6vGNFmOpF2Yu/1LDSf3T334J7GAf4lYDYmMb0hccUqUBqVwCdxyIrgD21WOMCjIswYWlO7BRx43geJtMuhkc0wPBj0MLklxrSsqsHI5PIX0TxRy5DslhEP5yArU/hGA6cPQRrGYbzmeKObbgnPTgHZ3Da2TATsjIGnvp7HJ0fVb5KfhG1MuqJ25OLj971ECrdflq2cY2YmAmYbVtgCWt9e0SWPpepM+zKMQSwDBRPl0ul3+1/gmOrgjhy68hjOFYCmOOBVo5K7Icx3AswNI7CTgC3j/Q/lJzcg5pt3ouHFfIpGvBkVzq2Gr8AsDHBHzIelwnHJ/0IA3JrWbgjgbhL3+FeqFDNG04ug6r2YHz+ecwIXNmwb0Kjtc0HPPL1qwBemkk2IixhU1/JM3x9PeoXV4RrE3hlOiznSh31eVBueiTy7/URZb+vS/AnqiXluNBlJApKpB8GsoD4OlTY1StqqYAWDpgA5HluGI4roNJN4LjF6lpcwRJgiPFHXUH/u4zeMFmW++Aly/hpxefWCbmeARwD5DqP0P265Alpksu04Tjz1A7XYgDG443gnUyhD0BRx1+vZPhvimTlotvdsImKfWJWKRvRrs6pMovyoj4+nR5lstP6TnUv1irBztWJi3vdsLKT4cjqFwSho3i9KrfSSs9WW/6eFa5XH7iZRO/hLQQjrW9YBVwvq9CLj+CpDJLpmHgEoC/+Q2GkGGVXFiDEqzOCewX+8F+Miu1HGM4rpJJmXB8/vYtexXNHUzHHIOGAIysxvSHrEaaLUMu9W8+wNd1+P0X8GnZsuuszBMnZKbhCMllEI4+Qut2IVK2OoDjAHavA/uUYo8tuD/58LLgmAm3enQmA6qLQvHa5R64/PRL49p6zC9cqwZqBbBiDQLBsb4VxhwLW5CLMiTXs0RJlvHbPQylMswYjtoJ7P1rwvG2mZQNx8RI9KvgeHoCRubiXjQ7JoYjTSWkuOOfPwAdHf4fXsC7KRz77bZ8oDek0HKEZDBD/PlUUNst8D6THTaCeTGCffoJdossyD68n07h11KPyLTFNmlpZJ3P6rTzLMu05ZjLT1vsCf1fAGwPPqPtdqNPUn9J3dHxq76nyeAXwCbqLQRzs4PPRD3pcpHnMFXugcv3RAhPvoTQqEGslnT5oKxJZDkGcHQhCsxi3+zKA2kXZmkASyrBMm4Cx1tm0iUcUyvuPp/RkNLhIdM4Z0+fPgVZjnIExvghJECSa20C/hiOAD1//h9wfTjuv38vyi9eiFIbcqEByRxBKTJwMIj/dooAjheO5bq6b+mWYn46g9M6hX06gHdswK8ZS04XXOv7Nq98ngbGACMLOmm9p7/HFc0rl3Vd1vWL1rtouXsqn142j3YhfnkAsSRA3n0CrkhQKiVwQQxXZf/mCwx8WbcKrmuVSyWT9pTfD7dpne9W3zGTZsKRXqTxDl/v3r1j5Zcv2Q8AK0Vzq5VjMPLtT9OZoRPA2oefTMrQqvNpOL55A7x+HQJr3mrg5Fbvv4cov8AEHGUBEg0C//4YWr8HbuhwL0amNTIU86wL+6wD5+yk7/18UfaqGb1xWQtxyhJJWBRpq4K++2Y30u/sFuTyZ1uQpJdZVvq1LMgEXAPLMRHnTVueSUs1lz9tUKT172tgj2SI1R3wJw1Iu4/BuQ+1Ei56K3gM7Lc7GJTLMJkLq1zCteF4F0y6Eo4778C+//49e/GHF5iAYxRvnIIjpaKwABx/AcfryA2/LhwrArnVpviXj4rW60HUXbgjHdaoC7M7hNM5RpwFAAAgAElEQVQ6hvNjG+7PPrxqd56tsuLzMQtvW278MzZcfh5zXPHzuKbqKiqYqkKsP4H4qAT5i8fgkKBsF8FdEaJr2+ybr6R+WV4dHG+TSVfDEWDfA+wPUViGtkU4DsIzky61dApm74VvGnKtKe4YD+dJWo5xCGmZxScmLEdArvYhD8qQKwbBEeKPH6G1zmzJkn2na8jWsAez2YN9egynNQy2SfAqC1qOs2Jck5f2ovhUZaF1DbOy1HGd82KY081+APLphVIFWCIUkmXhzbPkp2KEKthEvanv4/ufLpeKLWaxZtb9nrBU75l8XwXb24b4RRViaQfyngyZ1yHXmCVBkQWaPnjwBINiSTcVTTPLuLnluHOLTFoajnGmOl4JnMBIRCQfmwAZxB2PAZOG8jyFtxI4AuLw+JjvHhxIBMc2h7Ktgfe7Jv/4iWlnA5mbDI5uwOq3YA16sGm848cLuIPuL/sp55+N0kAAlFlWN1nEi1jj6XLLXBdrKpc//cyk9Ehw3N2BuK+NePVJQXpcgsQaULYkcM+zRYp7PdnyBtUtxVA0rA2O62LSjeA4BmOkRptc5SjuSEmZXawSjuC7BxjDscIgmcwUPx4r2lnTlh1fsjumZQ+bntns+nZrqNntC7h9Ez5Cg2vqw+SrEzW+1Y/0Uw4txozyvhWNg5xzPt2AXP5s/S/rVvtmjzEjYc1HYYVlY4rXfYM8VPkBHBsQ99hIerxX4I9KkKwYjiJEwQH78kv0qyUYvje0NLto8hqlJcKEzCvAuzKslkjIxDHHWZZjEo6rZNLN4JhKyKThqB/CHzyDHydkru1WA2L9GLxT7MiP63VJ16HAMmRPVYWjv6Lw+QKSI8G2+rA7fZjdj3A6w6H9sVN0hzRFKf6kIRn721nHr3vdsnJy+RNcmvfSuC7E8utWq4GyCkZTB8sqePWxIe03VEmVLKXAmARFEkQGdvAl+ltF6L4HS7Nh9k3Yz/dgrQ2OK2TS0nBsHkOIM9XSrIZESRmyHGkg+ACrhCPkujSQLVFUZKZJHg0C/xmFZhMy7Vt9YcAamTCbZ7DPW7BbI3ij/gy3Om3hRZbf+NHJOj91fNKyxLx6YwHzyj1k+TJ8emf1Zwy/IkueyeXL8Y8W2DIgpc6crDf9Pb49Wcdz+ZP6LwkQth9BKDfA92qQdsqmzIpMKUsy90SINEOG4FguwpA8mFoRZv8UtnoOG8/hrspyXBeTpuD45s0b9vr1a9BQnqQJe3gI4ZiDKU8vkzEEx3YzdCkbO+F2BBR3pIz1yuEI8E6H4AjZEqHIgVsN8acjFFpdWzZHcCxBMkd9mGc/w+mMYB934Q5N+MzKxzmu1mZYc20xGImSvctwBrlxM0MkUblxq2Z8Tydipn5Br584FIZRkMu/Uv/0EmmQ5XgAXpUh7VYgF2qQC3Iwtzpwq7/6Ct0AjhpMDdeD410xaQYcwV6/xjQcAWGcqQbY+SnYoz1gAo60OnA0M+Y24EiDwP/yCYWzE1uxLcnWRVijAczmJ8PpnKv2z92hO/KLHgaLxRx9axDOrZZLi2Wjo/JAKRKQIWh8frIdaasnlz9gpPuKDD8jTBwosGyB9a+IF2edn3ddfHfSbE0/PfPqeSjyywoYzY4p18H3KmQ5QiaHmkApihBt2PjiK6n3uAjd0WDuA+ZHwFY/LGc5vnlzN0yahiPAXmM+HGOXuh271s3QepwHx7dv3+LDq1f+UuMcKeZIliMg1weR5ahBggnxhx9RPOlC9nQ4AwZz0IF1PoB9/lc4JwzOaJBnq9ds5628+glLP4agBUb2XGDf0bEgWRZZeMkWJKAZQGp8rg9ELvnk8clakvZjcGkuPzQUZui/KJfZVh1iqQ6+uwdppwSZq6HlqIoQPSfYnbS7HcGx0oXVrsJaGo53xKRMOJIB9S4xpugwZTmOXerEBi0NwP98Clge/C0X/s4BvMS6jkFihFYD//AK14cjIA90qIoACmmIHz+h0GxBthw4PcOyBm3Z6piwzmmx2x5c/Uo4RpaelLIU7elVXcI+llE+jQc7tEAvLcosfuTyA82k9E92+PAaoZByGegn6DaGaaT+9PmiDDZLTtbxeW+Bhyaf9DQBxwZkhUMpSJBEDyL10C92rV6jLutMhTGGY7h02cIxx3j/mNtm0hiOsxaVjOH4f3wAOytAoG1YgwHgAAvgCLDd6Ik5o7gjwRHAVuRa7wDes2jl7z/+8T2++abvN1++9D9gxXDsQjYMuAM3shxbsNt9OL02HB3whlne7rynPXW+mFF+OKdc+vySYsfFH4x8Kdj3J/pc3rxSqYRB8l4SRZMHSmF4Iw1X6sQT18VV03zYCMIU0gjqnxKbyx+rK6X/4hZYQxqJpRrju48EaaehhHCUIUlKuJ7jbw/QKxVxLTjeNZMWgyPAzhD+2MEJBFmI4o0JONK5s7RrfQT/5dPArfX/+B74pg+/+RI3gqM2gOKIUATLlJmgiD+eonjehWzpcEY2jN4F7A6Z7304J204Iwt+GirDiFaMOmHi46csxmLqQqprFtgKcmhpzjsfX5vLDzUxS//Bsei+BOxb4E2SVa5ogwaVBPcsWU/W8bSoXP7V+i9SzLEKkdZyLO9CaihQCipkVbBlSZEEgYH9Zh/dWh2j61iOV8LxFpi0FBybx2CaCJaEo9QKwVDfhj8Fx18Wun0ZjjNcPRwFyAzB9MFi89xWLEdyBt2haTncOu0qVrsJ57MR7CvjxYzLsvAWPR53nlXVt2w9D0V+bM0l303Je0THp74nXnTUaWMaDumPyG0nKM6y4q+SM36hJciZyw/1T0ZBvQpxuwZeewJeEyy1UJVlVbZlSSA4OuzRltfd2pVHcIfGTrFotgFLXdCtXgSO62TSXDj+6QOE38lg2jOwoCEHoVstN4OpQ7TiTlhHC7C34ZNrnUzKjOFIyxcBfhM3sxx3BlD6IlRfgERw/OsPKDU7UGic42gIo+/AuiDLsQmn24NrjKYTMvMsxtFE1wMKCLtPfN24g0WWZiHqOKOUJVqwh5F+J03QXP7VFjvpJ2mFj7VXApIhkmLqe/LlkYZn7G8nr6fOPUuOn3Gc/PVc/uVbolAHq3OIhSKkR0/AHylQJMVWlYrEKVtNJb/cQq++iyFcGDtFrASOt8Wk+XAEhN/FS5VF8cbz6L8Ub5wHx4PDQ//Zs2feHxNwnNiBcM4GO8HCE4lsdXk4VG2hqMQJmX/7iNLPTai2BZvcasOAfdqE1e7B6TXhGj48Zk92xlHKf4rhtoAHt5IiufxJNab1n3x5JOFFMLuE3jB6ZVFdxSlLMjlMiqZ3putJ38is87n8y76T1n9gOVYEcbui8fIOpEdlS1G4rBQ1hHDkwOPqJRyLLiyjAvPiEM6jZ3DmDQLPshz/dEtMuhKO0XxGYbyOYyoZE7jUiQ09gumDTaC8E2apg0VvD+E/e4YbwxEnJxL296XyEKotQBFsyFIFwvf/Zpc/tyXFtmEPejANHXZTh0mWY28w23KMO0Yamr40e460b43C8Y92YTJGGZUf15caexfPuc4iai4/ZUFG+hSSUz5nKM+3h4xJxYl7MdNSTLnfhUQMcpa7nA5bZN23XH6of7Kw6xWIDc2Qqo9VvqtaqqbJskbZatUJhvI8OuAXe7XQclwFHG+TSTPhGO/V8P79e+GHFy8uF7lNwzE1fbCOMO5IQ3noX2kfHq0I/gyrgCMk7OMSjgJoRSTxr8cofepAtW2b9o6xrKFvNUey2RnA6V/AmeVWr8T8yytZmwZiOFKCLBmqIEslOQaSIBU24jJskS4fm5QTx7OGahUvs9dUay7/av17GAm1akHcriCyHKFoGmRRhqyIjugxzp5+hU69gaE1gll3YF7XcrwLJmXAEYz21nr/HsIPLxIrgM+BYxx3JKuR/pWwWjiOtAt5T6opdhGKYIZwPDxC+VSHYjuwe2cER1hND2b7BC7B0SQrRJ/Xj5d0dPmc6YhO1jjJrHbk8pOaYYWCN51xCUskNVWYlRlJq/iKTA55CrH7PUqUm1lvdD6Xf6lgrQZW9cG39sDLZVN6VFYUbQuywiDHbvUXj3CxvYfBoDWy9uSCcX043j6TZsOR5lW/Ayu/BNMA9mMi5tg/DYfySCx0qXvtEASVRgiMOBmThKP14YP/T8+f+3FC5joxR5xAGmmQ9yQoIxGqyGjDR4hHn1A6uXBU2/ftXkeyHMDsnsO6GMA5O4dr6vBYGmbzYKlFD0C6XHw83QEXLRdfl8u/+m3F4c9aUILCFOlY4k3KpRuRDIPcpN5F27nx8n0I1QrErR3wcgkSJWSUKhSVFr0VIPjMYU92vYutbW9gDFRzbxuGAZgXgPMIy8UcaU+r22ZSNhwRTNeahiNAK/yyON4YwLEBoB0CMglH/Rj+jnPk745G3o3hCEijC8h7NSgjI4SjY1v8px9ZqTWUVFN3nK7NDceGeXYOi9zqXgTHzJhfCpr+HItvCrJRxfF1886n25Eun8uPYr5+PuVznq/zqzgvgREcG3VIJYJjA0owCLxAc6sd0XPBvviSdyqqOXRtxbgxHG+ZSUvBMRgAvn85Q4bA2CAwhmykRUxmwBH+7gjePz3HdSxH9uof/1H4+1evaAC6JF9AVmpQuheGJopMZkwRf/qEUusCqqkHS5aZdmQ5ds5M93yo2GQ5/ioepLwRC2uAxXBMJrxSIw4mKqNyyfPp73Hhq47H1nzyhZnLv5xenNa/M2KqVGDyTmg5bkmQ6gRHLbQcRR8i58BvHqNTUzEcSjD2Cje0HGfAcZ1MWg6OkdUYTx+k1aQiNo7heN4Cnm7DIwvyB8DfiVYE/ydcB44+e/WPEP7+VTA75xKOBjTRhswYudV2uX3ONMPmdteBYXYtq9n3rYs2nL6pOLPgyJxUlpQ2eU18ss5PHY8D+5G7Pa/eWMS8crl83We2dpmNzgpnkEKTIYpkuQWO+5LOGE/IGXsCOsvlz9e/Bwi1OoS6BmlrC9JuyVaEiqSogiPT3GrOOb7cR2erjMGwCqPS75sDwzDdnR37Wm71LDiukUkrgWO/02Hlet1vk2vtwbd9+DScZ5Vw7J2eytt7e5ICKF2CI4Ps2Rb/+Ekutc+hGTbsnmlbhiUZF6em3TMVu9UOY46Yl0BZ2KbJC65dAzogaKG1T2GGZOgh/T1uy7xy2dfp0fOvYVZIZF69D1k+6cbnYNUyxHrNlBoNJu1UZIkr0EoUc2RhzPFgn3d2S+hfyDC3HBifP7Us7d9tW+uG4yqYtDAcB8fHgnZwEM6OiRaeoL0b+p3Q6irXEcKR4o7NcChPdw/eqizH3ink7T2k4Aj+4wnKnXNotu3YFwY39RHMzqll903ZPu9hpuV42cGzMikZx9OQnYpR3jQzMycT9BDkUzKGZhpdlbQiNV3n/Lzr4gdjXrnrnp933QbJ93tgagVMqUGoq5AatG91CYpYBk3QoISMyGkl8H10drfRv/BiOMLS/h1WAsd1M2kJOEKIpw4aLQiS0GaNRgMTcEzFHcuAF2+0dS232vfZK0D4e0AgOBbVrqxxrgwcUSsIquwyi//4kZWbbaY5Puyuzo0Ajh3YfQv2eR+OaSwylGfF9lAW41YsJrO6DZfPokHgZJkkQwwqBzOSIZHod/q2zpgUuYEJaAbXx1M6U8dn+eNUXbL+XH62/kk3BMeKAFGtmdJemcn1ApPFiqSUmCOLIhc95rAvdv32k32vr3uKUQgsx1XCcb1MWhyOgbcDpjchKDtgUpSM6ccDwTuAXQ/2/xgnZWI40kZb/8WC//vn8Ghu9cJDeabgCFm0R6pVKqgFBtklt7oll05PUXBs2BembRoDyaCpg/0+QsuR4LjiT3pudLr69Oo+KxY/tZrNfZJPMNR4sP9QxicrmDhfy2nDbfJ7XK+Gqw28XH6oaQ2KBqEiGqK2rfK9MuSaYitKQ1IU5shKMH2QY38P7Sfb5iUcTVja9oosxzUzaS4czw4PBTx7RmubhHAEBFrTkdZzlMilrl8+lJSEWT8coVolqLJtKYzJ4o+f7fJpWyo4OuyhC7PXhalb4WrgrY7hmibNrVYX2vZgfvdarIQaFTMWK77yUpsuP7YcpxRDYYwF4seqBGYks6uOzjAj8TJd/5xyufxL/UtgCgerFCFqDfC6ArmuQCntQil4jsJlLtgujXP024/rUn8kwVAcGLwMc4ibwfG2mDQFx+T+sDTO8ewQAp4F67oJximEL/ZCMFKmOr37YDmIoSeG85yEUwhpF8L/Avi/xw0sR0AudslyjOEIxWMW/+mzUG43eWA59hwYBMeuBasfwBEBHLPiU6saZ6hGsUcjo+NmjV/M5adGDUR6HM+tzso+p6imaoAxw6Cjl8T4BZU4H5SP65gXu1yg3IOUrwWxD2GvCqG6A6kGyNWSrYgNppQYlxUlXJVnbw/txyXcCI53xaT5cIwXuQWEajwAPAOOtEQPZaptD766Dc+6Ao5v3rzB69ev/Xmbeo9jjgk4jiRTKwiK7DHwnz6jfNpyiq7Frb5lW+RWN7uWPTDkYMHbAI4Zn3kTYcb9JtWBtOjCzH61YF4mlx/emLS6knOrKYQxAbkZ91KxwczEcnHp7/ElWccpDDJLTtbxdBMeonzSjVoGK4sQK9uQGkVIBRlKseKoRYHLIsFRBPYadvugLvVuYjlOwfGWmHQtOOrttjBgjNXrCZ+anpgEHE2/6Ws7Ox7Nr44tx/337/36ixcexRzfvAFev8ZycARkcQR1ZEMraJA9C/zo2Km0Bzxwqy+GjmUMfaNl+Va/7dujvuJYM+CYtvBiyy9+6I1LuyI4pCJ0VMfHeeSmR5bOpRs76UjH16U7Uy5/0mJM65+p8CYswYyXWwjNaZPx6uOXlU1ZfNGprOPpZjxo+Rqg+BAqVQhq2ZR2FSZXi0xRy5JSpEHgMkTPddj+E35+0ECvO9TNfUnT9XKwC6E1WGL64CJwXAeTFoLj6RHYthLOjgkz1dHc6oiN/OKCObXaeG41xR7NJnxtByk4wq+/wI3g6I5GmiMWgpgjWY7Hn+XyeccpOgbsrslNdwij1bXsoSFbJxehW83csDNmxeLmHZ+CW9qty+i86ZjjPDlZ5R+a/HiGTBpSmTCTDGYk4srpmONUDHKeW54ByVz+ZfiCFu1QRbBSEWJ125LqBVkqFKAUJagFxVG4xINxjnuP/fMnRa83dBRjX8LK4HgbTLoSjs0PEErPweKG6LwpKGyHSdthvHFwccFqwYNUg1O7XHgigCPgU1hiwnIE/DoiOP4yyJe2Z13GrRZ7PUXiFdURKSFDMcfAra6ct1D0fFidESy9Z5ttUzL7bdijAWZajvMtxMsSSaia7mRiRxEnZ9YsCrdcfqiBLAtdYIG3EX0utaqNX2/TA3F0PVFOUy/tyYRhSeEQfewVqJNZ6fH1KsJyufz4LsWaSOtfUSCUFQjVbUg12QosR1liarHAA8uRFrvd28X5kwZ6Qw9G3R0Yfqlk3MRyvE0mLQZHgG0DwngYT5SMGVwghGMNoEQM/UlgTMJRPz72SwcHHiVk9q8Jx28/fBCLz59LMRx129RUkQVw/PizUGlfoOja3OqaMB2C41CyhiaszvnVcMww+PLDd6wBk4Vx4vSQGnK/kyGJefka1TEYi0IgiwzAocRZuv7kdbn8hH4cMKUIViqYYq2u8IpqK/WKJMvcUZUCl2XR4bTwxMEjv7W/K3VXDsdbYNLVcASCVcBPsxqCCI40QwbwOxR27ABKPRz8bZye+qq955UOMIbjyTv4z5vw472rF7Ecv/0AsfgcktiDInGoughNDSxHK4IjLzqGY/ccbjg9mO0hrMEQdmcIx6aYo7nq3p6qUFQmhwq5y67nuGz77rF8ET5l8Y3ET4zDEYG1mRgRkIYVuXnpez0u7xhMVVQY5qWFSd/j8tPlLu9JLv9SF2M9iWAK8aECQStb0k5JlqtVKDKHWipAZr7DAY7HW/b53o7XNbmi110Yfgk3sxxvkUnLwTE5xpHcarIgu10GVFH04V+Q5ejDt3z4cgOecQpftTEJR8B//vb6cISta05JU0M4kuWIyvk5Srbj2F3TNr2RZnRMmP2m5VwM5cCtzlpKbC6S0lBVMq6Iy2WdnytoTr3x6Qcif2KcY+Ie+OKlJTjWWPIeRfohC9CM4sxBWCSht2ToI0ioJCE8S7+5/LGqk/oPhqeVwIoCxGrZkqolFsBRKUlKQYQiCuFQnsdbON/bQXfAdWPX1XSCo3B0ZBefPrUX3UMmmZBppuG4RiZdC45mpyNIjDHUapC6kZXU7cKuVH27Bt9qJ+C4F8YdY7f6hOCY2IGQqqE1BmbiIZohk7QcIemaI2gqH1qqoMjijz871W6blUxftLpDmN4IERzhXAznudWL0i9s3fz1GsP6GJ+0JLPXaczlT973kE6Zg8AThdMLUpgJi1KZuS5njMWkHXjdt9bksxDA+IHJDzQXw3ELUrWIyHJ01BCOLIg5PtkTW3s1giOMXRcRHGEXn2KlcFwHk5aGo9VuCzJrBCuBS6zLUK2GT1gXsKthvLEE+Cetli9tb3tqlJSJ4ZjenjVkI1sCjtBgmxoEpviM8c8/S5XztlsyHN/uGaFbTZbjoAena8IOhvKs3K2+fqfKr5yvgTEc5w1wjKviJoOTeCHREnSpZemCouly85qSy0+Mlk8pi4PJIphUgFhuWFJVJstRUoqqo0oyFEngggCX7Ve9870vpc7AWx8c18WkTDh23r8X6tHmWv/9+Fj4m4ODYOqg1YYgB2CMhvNEbCTVxWAMkjIt+N1tjOE4CGOS4wVvPwB+mK1eAo6AAp3gCA0CFJ+Bfz5DpXmGshnHHPt2AMfhhWQHlqM1Y99qMTUzY+EYYWQZRjFGf+q6xSxBlsuf3MUxpcdgEHgSbsn1NtPHFypnRs+5QpnDS9kT63im/POF6k1BOLOd91A+B/MoWy1DoC0SqiXIlRrUAiVkNC6LgityiNjfts+3trwLgyv6TS3H22bSFXCEUI821/rvxxD+5iCcVx3AsRHNrSaXOguOgN/FJRwPDwHlGbwpyzFg49WW4ytA/BGQ7H5fVXlZhQDNtS1VYLL46QzVVhNly4Y1HDqmodtmZ8jNYce3dYd2UoCXjD/NMxby83evgXlbs85roe+YLB3amHfNKs8/BPnBeo5FsIYKkeCoFe3AciyoUGXBUUSZBXB8vIXW1hYuDA696g4M27KMcq9h/Xj0zsGf/uR99913mTPY4n2r45hj5/3tMikbjoBQR7jz4AQcE1MIaazjqBfGHAsV+N0uUPDhK7VwJfD1whEqWY4nJ6ieN90yxRxHQ5jmCEa7a1sjU7IuenDJcowHgd+4A8xdT/HGEq6u4CHIp/UcybI2p+O349gtrXySSLhMLUobZK1nXC+Cpa+L09VJmPpZ18exzFx+8JzKHKxYhagUw5hjQ3ZUWUVgOQq+y2n+4ONdu7WzL3UGOowtDt22YJR7sH48goM/wfvuO7Y4HG+ZSQvBcXAMoSpBOBZbgrK9PV7sNglHoIeCXwlWAad/NJwnCUdS5i7g9QGfli0bu9VLWY5QRa5rzBY0RVAUM4ZjG2XHdOy+ww19APOiA3Now9YvEFiO1gIruawZa3n1S2iAxVM+KT+T8HYVBTHzwtrmZJcnzs/Iaqeb5LsmY8nYZS4/U/8+N5lSUFhBTcCx6KiKwhVNdhXanFVwwfbrTmtrz+sYkqxvOREcG7B+fHczON4GkxaDIy06cUpwhKBsg9kXcdyxx1CphM9YL7Qeg3hjJ4QjTSHsOPBkE97eU/irgSM0ZkNTVCimDf7pxKm1e7zkmLA7Bgx7ALPTgjXyYI3O4QZwTMX4luinGUUnY4uLZ6dvLjms4X7LVxmNk52kWTpOS1qgmG/y+HQMGEifT36XXbBYDkuMVU0ejymcy5+O08syhGIDQlmCVClCLhehBm61BlkQwH3PZY93/OZWg3cMCauF4y0waXE4AsJxC8L+Nph5AWEUJGQy4IhoOI8Lby1wFKApDMrIgXT6CdXzXmQ5Drmh92EOhzCHDuzuOVzHhWslXLAb4WneOMOocrJwJhC2qmz5A5HPohkyU/cqZcll3UtFNJnppgbm3+jGxzd26r00s9YHIV80mSwqrFCBWJYhaTXIFQ1KWXO0gsplHy4HudX7aG7toGN4a4Djmpm0NBzLIo1xrLMQjmC0H+uU5ZiG4z68vWgXwuu61R+akLdVKEMOjTtmgQlMMZnMCY6dC7dimKI9MJzAre72uUFwJMsxgGNmx1gsu3x5eVQ+NY5RjmJRVmztpM4jcz/sXP7krYnGOUpwg+NJvSVfcGl3V5wc9A0xzA4rUC7tz8T1NCd+bJkm71V6Mdtc/uWunGn9U0JGBKtXIJZUW65WJKkkO6qmuVqQrZbIrXbZ7o7fbGx5HZvLo1JvaAi8qJdX4VZHSyiSwbYuJk3A8c2bN+z169d48+6dsP/yJYsTMrTQLa3leAwI5Q4EqR5mq4NkTAXQ+32mlct+IZpXTa51PBC8A3gyVgfHC1svaJKmeY6lWgLjpy1WbXd42TZhDxyEMcduaDnqXTgOudUZlqMc9cw0PLOOxx153vlFjZRcfqiptP7TluM8gzF9Pqv8vHoyLdE5BuNDlS/JECjmWC5CqhRsWS0ytVLiqia4CiSIHgN7si2eNbbQsTlGpR4MYRd6GbB+DJZjgPcduzohc5dMSsER7PVrLA5H2jahD1aml3wZPsUdpUqYqV4HHEtqXzU41zSB4Bhmqz+foHp27lYtW7T6JgyDLEcTxlCHrffh2vZ0ttq0JrujIseYitzhVG9VUhQz4+4cXRd7u/PqjTvfvHLmA5dPcEy+0GhozDj2l0iu0SDkWeXoflhp652yq6ny9N2ckdXOqpds0eTMnIcsn6xGijkWimHMsVSylXKBqYUSjXXkMmQECZmdmtPc3uNtnUOvudCF4rJwvDsmZcARwv5LTFmOBiCYgHs6swcAACAASURBVBDsH0OWI82i6odDefq0ikqUqaa51VIttBhXaTmGcCxrkmMWfFcI4Hj6mVVbXV4xTdfuO77hGtzodm1zOILdsyTXMS5jjmOIpUyEVU+JHkMwQ86yzvSilmi6XJacX7t8K4o5BhZZOls9QxnzLLd0Peksd9b5XP4V+ndMJlO2WoFYKkIqVyBrBagVFYHl6Anggge2u+ufbdW8tlWQRzeD4+0z6VpwtLsQKN6osz4rl8luBPr9+XAcfIC/E+1AuOxQnmYTsq5CNTgiOCqqz2x+2pKqzXNUTcu1+6ZvuCNudEe2OdJh93qSM8tyvOxfWQ71bBxdf2ZLFt5y+ZOaCU10mj44a/hVHNsNXPGkBemAXfV9HA65Zrnk9fHfD16+ElriBMeaArlchayVoWiSo2kSVwQBos9ctr3tN3d2vPOR6+nbXB0ZVseQh0Ord3BgL+ZWx5bj1XBcB5Mm4fjLJOfXvzycbwBhH2DmIYT/6xlAK2EcN5uiJYqC3Giwy4aARWwMTEdyre1uuCrPLMtxdXBEwReiQeDHTq3V5lXLQeBWuzaMi7Zt6ZZk9QzMgeN1bbL8unVqgIZfUf2EyuTrQ1YAK2FJTgZDpuOXVD7OyKTrSY0UGv+cdP25/Ms7PaF/BZB8CLUyxGLkVmvlcIaMJkGhZScIjjtb4tnODs5HLvRtjpFhwZCHx4vD8Q6ZNAXH52/BPrwCm4YjREuEYAuXc6t1FsLR6PeZWi5P7DwoAZ7ZavnO9rYbJ2SuC8f/eHjI9VpNFpVtpe/ohQLXNMe1NXKrz85ZtXXOq6YLe2BAd4aO2e3y0HLU4Tg2PHgZq/5cu4dPWnxMlK+cK3xtMZkX3m/5wfTB5MD9RBZ5Al5pWIpW9DxfYtVyL+8NWTpIJufoeyRnot7E8eAW5PKn9BTEHDUwjVu8XmBSuSDJStHRyipTJe1yybKdPfGsXrfaliuPKtZQ93hRl4ewege0FMMCCRmA3RWT5sLx7/gRGyiKoPN9YQzHWhhz1Cn2GMUc1TJ8cq15GZ5FCZlOx+du3Wu7p9723p5LQ3lo8YmdaHvWZdzq/3gIrtdAO5opfQcFhVsFX2BBzPGM3Ooz1IKY48g3XJ3capg63QAXjjNcIRxnmSqBj7d6/M2s8YHIv+ncaoopmomslhLYoLf4eQjyFcDzIVQ18GIBUllzZLXA1VLJ1WQVsiiIwXqOW7VgnOO55WJU4dA9CzeG420x6Wo4AsLfHYENFAj6PgQLEILZMREcOcCMFBzjxW5FDx534bVdeNt7WAkcXWegmtWSpjiXbvXpZ6fWbLOa64hWZ2Cari4aPRoMTnC0ECRksrvFcjG/bAqm0tnepCUJIWtl8Fz+rJij4IX3zBctxhKWX9Z9zCpH1s04uzyxaO3kHOtl602Xf4jyTddikiQLVXKrCY4VR1Y1rpYkgqMoC4LLfQa2teWf7Wzz1sg19QZXRjeG4y0yaRqOAPuAyK2e0xCn3xeCDRIoJ9OP9o+JVgIP4FiHJ53Ca9nw/vYA3k0tR1cdqKZ4CUfXtaVmi1WbbV6jmGNvAJNijt0eTH0Eq5/HHG/RXFqdqMwZMtcWEb+EbtmCvIxkRn/dH/mk0YIAUVMIjrZUbjBZ1aCWFa5KkqsIQcwRbLvhn94YjnfEpMXg+BRCsFwZWY6A4PZ6wUrgEsosACN9IjjScJ6WD1+swuNYNRyhDh2jUBRVzVehujakZgvVsybqjuXa3aGoO4ZjkuU46tu26YbZajsdc0yNc0RqnOOUmzw2DDMsvazz6XrjzpLLTxmMk9AgOM5aScl3LZaM76bnVs9j59Rc7NQqPfH1gcU5Y+JALv9S/6YLJkkQqqXIcixDLsiOVixwhWKO4dxqsO1dnG7VrHPDlUcNjutZjrPgeAtMmg/HcK+YFBzDoTwUd5yAYznYjtVvdRNwBLzW8aosR4IjCmoUcwQkfnrq1JotVncc1x6asm4OYHT10HI0XTj2aAYc5/Wi/PydaoBREo0+UV4lHkIVLCU2K747ldZOp7lTS5zFi+smmTzxwopO5PKDSNIs/dNtIDhWNPBaAZJaRmg5FqGqKhSaW00vo+0d/7ReNc/tQnHYcDDyitDl4yUTMmk43hKTloZjr9sVZVYNVwKnmCMbMNpMQi2FK/IEcKRwESLLkeAIeH+LVbjVk3D0HEjNc1Y9O2UN1xetge4apu6HcNS5ZfbDbPWU5Xjdrp9e3WfhFcSvKzB13QORz2B5oLUL0h8nkY2eyGZbbKJ8eo50XE/W8VlycvlX6592nZAghG41pDJZjgq0QhGqpLqK4NMOMkCj4Z9tNbyWIfijmu2ObG7plVrN7AVRuAWz1XPguC4mzYTjDsC+p3GOFHNMUbrXhShXo5XACY6DMNlAcKRsdb0cTh+koTx9cqtTcOy8h19/AW+pbDXAdUB2B1CHHAXVQcF1bQ1M4s0LVM9O0XBc2EPT1Y2eb/ZMbug6LNOA4zjw7LSLRLeFPtKKoLVsNbn8K/XPbCtaAFWm3T3DTuoE09UQGnhXxBDTQ4DG98bCGKAZC4GE9U+MbMzlZ+jfgoyCYIlaVRZqGqRiAYpShlpQoEpS6FbT/oONGs62ttEyHHNUs5WRzaFXalgajnfBpCvh+AUgaBEcz1oQHRGCS+McZ8AxACRNH0Tft33fFz3P82o1d5Vw1E8Hml0taZJjFSHIKo1SO/vs1M7OQ8txOIJujGD2+jBH5FYTHFdgOU4vEHG74wwfmnyFwbPTVvKi7nT6RZW4ThItZiey35IINpYzUS5xfBwnnvEGnOXOPxD5lK0uFmVBLUKscUhF2VGUOldV1dUURZQFMVyyrF5xznYe8abhYFSTMLKtm8HxNpl0bTi6/X64PStKwf8wiOEYrgRO2WqvhrXAURgNSqJaUmI4njbZluvDGppiAEd9hMByHMSWo7GaQeDXzq+saBzkQ5E/ma1OWXKTc2amg4tRqDIJV8kFs6auCyk2jqe55LLPnXMzQ166fWEt91++HMQcCY5V2ZYVmSlalSsF2SoUFFGGFI5zrFWd5u4eP7sNOK6aScvDsQ5Bpvh2P0zKBGCkD8GR4o79OXAE/Dqu51brA2g2hyaMrBJEpoqyJH7+2ak3L3jDdWENLNdwh6LRGcEYJdzq7EHasX8b/gQ75WenvW47CJNcfi7Px3+F520uTcRrpMz1HHP5SX3G+md+NDY1bZllhC8u3e3JApIAWhAruBdJhEmCxez0WNRZdefys4f2uhbjBSZoBEdNkooSFEWjZExkOUrgnm8JWzX58+4ezgwOWnhiPZbjmpiUCcc/fYDwu+dgU251qiEmwoSMUoKv0nqOCTj2PXiiC8/cgRsnZGh71pvDESWIUCHb/OyTV2+e84brEBxhuKZo9EcwDLIcB2HMMZ4yNomixUOOWdctW9+y5eP++tDkO9GqPMmX06UOps1wCTKSSTeCop3EYQTCqeORpThbzuTzkctPxxdkcMUWNU2iWTIhHEtBplrTKFtNg8A9l9XLwunOtnemi/5omyvDm7jVt82kheD48fRUtPf2BKcDYSj2RDka40iWYxKOGAwglkpBQoay1f32GuBYgia0YziCn31y6mft0K0eDGC4hmP0R6Jh6L41MKUAjrH1cBmbT+FGXjAzY827bkH8za0nw0Sae939kE9u9VQSLcqfJX+h5FrMTs1rJ83R3UxrIjieKh/EHGeMZ8w8nqr3IcunWUESZ6FbrUaWYwmqpkJTOS12K4oBHGviaaMxbFoCH1Ysd8R4YXTdhEwSjrfBpAXhCNHeg+AAwrAXwbFcZtIgyGhHdQxoSqu/Ljiet9sKkxuqXYLmd6wyE1iQkGm1pdpp09123TAhE8KRdiG07YEHx7UkdwqOGezJD/86NDDOVssykvAiaF0mkylfGn1keSLLLM+4bqKeIL5IwcnLGGPW+Vz+Zbx+Qv8yjTKGUC5C1CRHJstRrUJRJVagcY5hrlpErYqzrV2cWS6GFWsUwBE6rE+f3tuPX7xw564ETgtPAIyy1ZNwXD+T5sJxcHwsGNKBcAlHiDKNcSyHw3nMaCgPPWsER9vv+2K57CUtx6YD73f7cA8PD6E8e+Zdx62O4WhwoyDoaokJUD1Bl1pncq3ZxlYARxO6M4LZ12HoF449BLddfXULT6x+PcflYPRQ5Av8qvnwgO/YjKXiuhMxxcT5rONpJzF5J+ZN8svl24ziwzTOsVKBEMBR44pSctQAjhLB0Q3gWK34Zzv7/DSAI8eIFTDCyc3geFtMmgvHj+9PRO1gn6Xh6LFBsCJ4mKoOP1fB8Tfmkdd3nvrKMywNx2+PjiS/UpFtR9G8SlETdJSYAtVzHal1xmvNjrvtOLCGFvQg5jhwTL3PraFpO64vuatfsmw5qOWll9OAECVkfAfMToxbTCZYqEaCVFjzZVhkonwiEZZ1fKJllGlMTDXN5Wfr3xLAOIdQEm1eKDGpKENRqkzVuKjJBciCTwtPiKxWc053dvmp7pqjOleGpt3V1VHV/PQJ9uMXuJbleFtMyoYjIPwOYB/fQ9RegF2026IrCIIv1ASyHD0WbpdAbOTDIXP8oh/CEb5Iy5Z1u75TrdLrw2uewPuNCa/v4NpwPK88lcsONEsxCrKoFgPL0YXUaru1ZlvcdkxYQ3KqTd8Y6NzQL2APGWxHnxFzXK6vzig9K6KVLLZgDPPa7bjf8hmzPYiTGf+xquaN7Enr9Kryos3GcpLlkseXqW/ZkUAbLN+m8fkMYkmGKJcgVRRHVStcKUpuQdREWQC4jyDm+HlnFwk4QldHuB4cb5lJS8ARIg0AL9dCKHYH4X85GzKgCMeHTxlrylaHcITvVDETjifv3vl4+dJ7DfhBAxibnqoUmAY+ewUI3x5BOq9ALivQLMcoiFwocSYrpgup3XZr503sOK5ojUbQHRNG34BpDGCZJhzXh+tcd7HbBfMbU9H/VbHxgcoPhvK4kVWYhCRN10wODqcysyA6VW6J69I3M5d/2TcTerVo4QmyHIsQCyVIBdlR1QJXiqpbEGhPXAdcEIFa3T/drvmnpiAN6xxD014lHNfLpEw40tYIpQnL8bIhNNjSZOUg5shprCOAIYZQfN8XSqUg3ng1HOHjJZaGo6DQ/jEouNz6H+y92ZIjV3rn+T+L70AgIpnBLFalpKxWSiWRpaWbY5LJWhe8mFcoPcK8RrFep3k798M2m7EetUSptDAllSiJqsqqzGRmxobFt7O0vuPugMMBDwCxsckAzCRWAA7/kAfwn//Ptw4CxsIiY97JGTs8OcWxKlDMyOdYK8c2HMteobUtfRr50Hei5TxH1rlgqQB/vUjc219el2odm211b9i5u5g94WnLS8bMGgXaF87e8rwr3+U9tF94VUBmICAJjjRcKwl06AWI/IBSCEqaXI3R0L46fse+JDgOy3SmZTS7qnK8ayZthuMLiOg92lZXcPTEWLjpg2zI8gGYnDZwBLXisHyAORwvzKlhmibrPNS/8eViW/3i06vDkU/zBEmQBAxh4ZQjDk/ekHLURZ6LNJ8hG0+RZ2MURb2tVo3a2LQbbX71y6y78uZ3/sZdz7fr8Zs+4a7n2/X4G7ZPARnrlOMqdbo3HrfB0GDtYFVfK7PV49o+y7XJPytJQXv71c2GlGMUgYcehPTgJ0MEg0CHYSwij+uQUnkEB0YHePUgKV+pwJvcGBzviElXgCOEmU64NwDLGWMJEndpTCkg42qrJ5bbgeEG5sK4vnwmfYgKjk9AfklzPTiCTCaeLqNCM+/0gh2evMUxdQJPsyIrpiKdlNb5HAstS61gVrfVuyk2117E9T7oKsjVGpp1SmiVHXv7l60To2j1tjeyTWBuve55wNIugpcM65Rl3/M72Fp36LfKvgdQQCbgjXJUYSJl6MU68jwTgnPBYdhoxF8+fE+8zHU+PSzM9EaU4wocb4dJm+EICPX6NdfHx1zTzOoxfRDUcARLKjZiOm3gCMstDB/CiFOYswaOVZeeG4Gj8YpBEPphkSnv9EIenr/FMQ3YylKdFkqklAyeTlEW5HMsr+Fz3PJiWIXnlm+8ocO+bfYdHOlB6rENLxo3sc5/3H1+09/NPa3xa5JCbZ+3/fre/sLn2F5XDiZkpRyjCH4wRJBIhEGiYz9AIKwQFmCjEV4+fA8VHGUw1QVm4Qj5rz7bPVo931bfEZO2hCO4PsZaONIW209gSTpSUIaqYzbCES6xdDef4xP4+vU0DmwSmwQD6DJizJMnp/ro/I04zktd5jOkhRUzt60mOGqUKlsox211Xm+5Xsd56ZEUaD02iZ29/eW7Qd86k8/xsrXc5DLsrZDpqZzp3qOuev7mPPfBfsFLJqXHA68KyESeCpNQht4QkS/h+jnSaNbRSLw8/g5e5BrTQ4kFHIHyu9gtlWcZjrfPpBuBo9tUzwBK4+FxYrpwPHwIN551rhyvCscpYhquZWQFR6uZdzZmh2dv8S7NkMkzkWoFpxyzHOV0Rv3B5TxavQ8i34xU3dYpsO1x3U9FGQb0HPkd2z4+ycHWZR5U/snqsc3xkpesfZ9r3+Ta59/b719/W+c5EhyjSPlxhDCuxrJGQiKgXTcXYIMRXr77HfGrdJbPHiTBZK4cbxmON8GktXA8/ewzfvThh8xFq52EBR/LU2E550M+4k2OY96MSnAex2rAFrcVHAt7YRN9oGnIlsL14JgAnn96Gkj/KBIUkPH5gHMvtEx5Z6fy8PQr/ai0Is+mOnNwzGyWzWQ50yh1tkWFzK5XcX/4u7pCO4pyI5L29peWiAIySzXUbcXXWnuC2jLklmuqnYJrDvC8lfDOksLb9Tj3Nd9j+55X+RwDSCmVPxrIIA516MWIOUNAL1PPsjYch9xMS1nORgcH2a92hOPXwaQeOIIffYgOHCEs5TmOwE2d47iAY/XbJjiWk4mNHg10cQGbHIA6Xt4sHFWeUEyc4Gi08s/OSDmKdwutiyyjrjxIp6nI0kKVaS5L8jneeIXMuhy8jQS8wQO+5fb7ttVSg80zDy5pMNFVmFKXTPUllbe+FjquUZ7rtvV7+631J+UYgAV+C45SR14sIunpUNCYBGFwlPCXD941v8q5mQ5LgmM0Gx3gCnC8eyY1cGTWWvykLvI+/WzxQT5/9UrGjx6x8SnEAQc3BEcKzFCl1XTKKQG8eTg42oll1hpuh6aB48mrV+bho0f6qtvqSjkikD4ioZAUEgM/pzEJ9bb6BI+KAkWWUvkgsmkq0iU4drk0/+VvKdnmqS3b5TmuJCZ351bv7dffyPr1Z7bULo2n5QdRrUOlB9BYyeYhPW/l7+5X3n1/8/oiA2HxkZoA197+YhVX1h+AkCUPI0+EngriEEESyJAlOg4lAkFjErjAINavHn3X/DLXlOeIaSkxE+mr/OLRo2KDz/FrZ9IWcISMH2EOxxkfC8tYPZo1YUU6c+fwo9gFY8jvSOoxjAd6AUeYh49ws3DUiMCUd/qGHZ2c411dUCoPMpPRthpZNlPVtrqUmtmb6QR+g9pvf6pLVkAX0AQmUnJziLWU3xxezYuXVMS04UfKr6mwWX5+UWmz8nxto6089/ZB3ZKYTMAolScK4ccDgiNCFtB0UARC0mhWzYYDvHz0XfFLCsjcHBzvhkn1j4/EHnqUY/eDQFiqq679jQVVyMwIjlWkuoIjbBjjduAokWRpOfQFi+gSOj9lh29PxSPq55hNtVOOk6nN8kwWJUWr8+vnOS6u401Kc9PrLY29BIdtQ0Wbzr/p9W+G/apCput1XNfQseVTdC+317Hv/a3nXeLhGkpXzsrWC/V5u2Folze5OO4+2S/p5iXAgwjCk/CHkQqTWDo4RlLXc6sNGx7wl9/5DfE8zzAdSkzLkpQj8otH2KAcv34mrYcjwPMvvuBDKdmb6IlYVo7r4UjhavYwNgRGB8fvQLOzM0ODtvLygb4J5Qg9i6UvktLwwRyOY0m11d9xFTKFmKmJzqeFSPMcxays8hxXfI7dvdSKFLhlYbe3v7zAnfXn/5HisXRAw5+ee0g3qryuEmapjLDvXtRnZ2+/+jpa6+aUow9GAZkwhB+FOkziSjlGlMrDmQTnGERuW/281N4kKtOZldH0SnD8Gph0CRzBhxLsTQRhxBtuHz7kBwCfjdfAsXHX2KllNnGArOAIQ4O28hIrcPz8E9gPnsF+/GPYTY0nGp/jHI4iGPiGttWkHPXhm9fsPQ2e5ylSNdHZNBOUylOkdZ7jzW2r91S7lGo3dE+Zz5Bx59tCAXbj0CulKPUHW3l+g9Lc2+9df7oShCh56HnCwdHTYZzoiEd+FPkIXFceTcrR0rb6eSkwiabXhePdMmkzHJ9AmDcVHP2LC2HYAW+21TYFR9zadFpYZrEWjqJ8buTjx8aVDwL2anBELH0kpUALjjh88xrvaSDPC4IjsslM5bmS+azOc5zDcVMpSZ+CXPHab6BAn529/Wrh+tazXh9WtgIybTZ2y/rWKcDu8Y2vcg1j59/iZZUye/uLH3tr/UsOFvlg3K98jg6OQxFyX8eRT/2wjccBFkf25Xcei19UcMQsT8ezSA6znbfVTjnWcLwjJm0JR3D7EEtwtOmUe0my1G2G/I0sqeAIOzaRHmqnHB9Ai+cw8jGuB8cAsVRIclMOA8EiSz7HMTt8+4a9pxXP81Kn+URklNLjttUUkMm3yHPcWfFsouVt79O/3fZpOILqTIKcK8huC7F1ynLtnrzZF7ai3NKDapayaU6iSybhreF3/b69fVdOSNvqMAQPPOXyHOMkDGh+DPfLOAwQeExIy8CSkL9491H5vOB2Ikt/ytLx7EIOs2hXn+MKHG+fSRXcLAm+VkCm54OYX44lRox7gwGzVF/NwGgsBOKY5nlUwRhMLUsSgzFMpLECx5Nnzyzef99sqxw/+vRTcfz0qXeUPPYxhyOGgUBk62312xPxni51kZVIi7FIyxnymUVepEppK7UqbiZaLblauhnQ9+9+KB2nfjcHfFPO+LZsvi/2uYDCmjZvlpWM2Z4muK1FpDZ6VMo6f4ruVZvuJ3TwhuP29hfrT+CTUnHfh/R8eNGAhXGA0PNFHAQIBYPQxrDhEX/x7lEbjphdSGTZ22flB++/r3pnyPxvwKTL4fgU7A1oW11Rei0c6wFbCzhWuY6+Heg2HKefvbAPPnxPn/yHnxHvYwc4Qhw/hZcMzgLfP4yYygdKBgMvVzH5HC/GcnT6Bt/VJYoZMNMTnU2mIisU8ukk0wRHz1YQW30sXzHKXR2LR1f/qc4Vtnh9eb+86pncbr++t1+tE+elqnpg9vkEu99kFUZuErib/pnLweXlqHJfxupaH+eK73Fvn5Q9NZ6gJPAwUP7wQAaBJJ+jiEKJUHIjQV63BC8fPcQviggTqTFlJ9eE4x0yqR+OAB+iC0dIjKqOPHPlOJ8+OCN0WNjYkIL0LTpwhH3wIRZwBOwHP9kckPno0y4cMVASczi6bfVX7Lta8zzXSFWms+lUZLki5QhlKFq9a56jrhVirQz7wjC3Fp655/Z1kwROSt1Iu6kRBClqZRY3wO7fDcr6nu9tqru337/+XDEhJPd9JcNA+/Ew8AOJSEaIA5SRkEKAA9HAvnx3ZH6hht4Y03SWyWhqaa78VZTjHTNpOzi65sykHJfhaNMZpy1186jgiAUch9WYhBzQ08/WwPE/jv+Y3nPJmIQFHBFwNYs9P04cHDWccqRo9elbgqMtUi1m5UWRz5Sf5jNVFDOpNLBmNOt1sda8f1VbLmuK7RRjtZ/b5fHttk/b6iVlV2+xq13v4ruTkFhqRFFXIrnj2i3IaneIO57eX4PUlRm2f731/3bHLY1jqBo67+2311+C8Ndsq4cDHfqBcHAMmQmFhLAGLErUy0eP2M9V2ILjEFn2DOUH72O3bXUbjnfApCvB0bIqGGNndG8AyjRlXhRZgqM3ndpZlBinHGs4nrx+bfDzY7OiHK8BR2jEVit/fM4OL07Zd3VJcMRMpSKjcQl5rooilUqrdXDcBUSbj7WmUpqM923fN5/jOkd82+yzVp7jUsVKj+uw6yqUWjFVq/51rsSV4zvnbd+q9vaX3UzNeliuGCWB+wwyjKVHeY5BLEKCo8cQctpWM7BBbF88eiR+XvBiwkt/mklM7S3A8TaYtBscx6B/sEvlAZtxiZgRGBFH8CxqOMLOIkq7HpvAGJ2MRvrkNQwUzIP3OtvqneGIWCAfKI8PmGFOOY4n7PDiLfsebatnmU41wdFglk1USXA0dKFddcBWl1jz0GYjMXZVfNdBIF3BHcUrv532Of1aatfCEuTaNeplay28ZQVJihD16933txUlHVfWxzXBNQfTS94//wbvuX1S9nM4JvCjAIEf6sgbIPaECDhKj3OBiFJ53hX/XnBMeImbh+MtMmkFjvj0U/7eRx+xfJ2EXfog4BJgZT1gaw5HCzuzDkcmMKTaTk2mjvQcjnUvx8/J53hFOBaeHgrjuyRwguP5a/a41Mhnms8wAfkbqwqZCe2ubhCO12Tb/u3brUA7Wt3eXpMibENs3dn60hkvS3NszmPXnH9vv6UcW+tTasVEILnPlYwi6YUhwiDWkfRN7Puez7nxOKNttX1x9I75ecG9cXRFOH5dTNoKjpOTE5FPJiL0jgR4lcpDCrINRyBFObU2iWIzS+BSeSo4wmSUmNEox+vA0UcsNAaFmQ0F9yNr4I/H7PDiNfsetSxLCz5DIdKs0Fk+E0WaovI57hqQ2XgNdxTcSknzbSu6b7d9Uo4EqvnXQAq5Vs1tOFqmGGtlIlB6Sfera3/39Hr37+a8SwqTztNW6Xv7K+tPosj5HKnxRAQvHCD0Ax17HiJPspB7kNyAxUP+q6N3ygqOAtPx2Xgm3xumu/gc18HxLpi0Bo7g732EJeU4OYHIJ+ciPKLevtSRpw+OkU0irIfjMcwDQJ9cA46Zj3jo4IghMypmHF4Nx8cFRatpW61FmuU6K3KRzki4BQAAIABJREFUpxkqn+MNwXHpgm1dhZvUzEbWbnnAfbHPLN3TrnGDIbC2fI5bLu/NHXYP7JNypGa3vlf5HL0YlOcYSaFjT5pQeFXLsiSxLw4PzM8LZsdJ5E/GajyTw13h+PUwaQc4QoRHEKQYKfnb+R7TlJO/sQnIUApPYu8AjgJDplVMynE6ZqPTE/aY8hypK4+x3izLkRWpKmaUykOqte9C2dWH1z2+uZwa39+m16/rw9x0/k2vf0PsC4bS5Sq21WP3s7e/05WWZbXq9CQa3+PSb6DlU1wh4tJ5l5P+l4695/ZLTy58jgF8b4jAwTHSscdYyKE9gmMY2xeHR+bfVZlPhqPBeKwwk0PsqBz74Hi7TLoSHJFOuevpmMTu/RvheOS6rNycchQYolAJ+RynlAR+hsc6N0WWWaccc4JjgXw2rn2OPcqxt9S5k2d4c5Ji+Ux7+9V6dBOrXECm2yD4tr6E/XmvtALkSQoom0dChATHGGEkEXkJwdGEnFOKOEcY4sXhEf5dlZNbheNtMOlSOKrnz7l+/JhX2+oFpYvsjfDwkHkJqmg1OR3q8sEl5TiEZqcw2RH05NUr++uPHqmdt9WAOAa85AzBVKfJ0PJB6fEht1W0ejJmh6dv2K9pizzP+UwXOs1nIstTVZRlncrDl8sHVZ9i7CkxWxWGy3mGi9eXT0D5cu7R2SHu7fdE3eunXUCm9Wi7E5Z8jhqMtfIR+45rTiUYmG7dKJ2Pcq0vs+ObbCnYvf0qXY3WzvkcPUgvghd4OiLlyELjUnmEL6jvKwtD++LoWHypFCbDCNdWjnfJpCvCEcKLwWh7XTYVMhT9oPqYyJqptcZPEh1QMAQwGQiOsL/+CFeHIxBM36bJ0I8GpSmHXLAYWnqTsa7gqFHkJZ9pTWk8yIsceWqhdL7Ic+xTaqLOU9SdPMVtvV59eYbbVtbs7Vfb12b9uYWaB1fcItYreZ3UpW6AZcXF0HpiJdFxb7+6ybcWxigm/AqOMpKeFyCM/da2mrm0PxYE9sWD74h/W4EjUH7wH1/sNrXV+HSxre6H480zaRWOAH8PVUBGPQfXj7FGOa77IDS3OrVxFJmphbF2YgIz0OEB9E3A0Ts/D0s1ioc+HByp/w9rttUn+DVdmiLLbWqsIDhmeYGiVFAm6y8fXK2V3oTD61bWLF+Re/vrlTb5HJsUsaUVq29iroKlvRsw5AFf7A6kAVt6vT7JyuAto5hak7gve57H3n5dKSShJCB4BUcRwI8iBBE1hvF1LAQLuYSAAQsqn+OXqrST0SP/YjyufY67wPFrYtJ2cAREDohwXAVkiqyCI7KU05a6eVCFTGxRwxEG52Mz+t5Q3TQc86I8IOVIcJxM2OHbE/ZrtqS51XamAde2LC90UZaidAGZG4pWb+2cuSOfZe/n+YbbN0Xtc3SlLAsXxiKjZtWtMcdsSyFKSeWC9aPv+Y7XY8njsrffv/4UqoYSBMcgZr7vI4giEVE/R6+Co6TywYDyHB+af1OpnQxGZjwrw6kLyFwXjnfApJ3gyCYTyRjjSBNewRFcIa3uJnX54DIcYUbfgzp588YY/dBcdVs9fPHCH8bvBSWl8igMCI7G4Vn5swkbnZ2wXzc5iqK0zueYpdSVR+SkHHV2A6k8vZGT1m1hiVSbFOjWmF32Wfb4RFdDGt9s+5zqW1oBGaEV02syDrplgHRcd2Xb7+ueR7R8lu2lped1y5e5t7+6/pRNIAJwjyvPi6RHyjGkPEfBYu4jBIPkAiDlODqwXxomx4Mou3E43iaTdoQjJKMNTArOWMplHDFFARlEkFFVPrgejjBGY3c4fvwx/+jHP+YNHDOdJrEXJbbAgRHUeEL503N2eHbKft1q5AX5HEukZaqzQos82+c57kjhyw+/qzxLXkItttWtRhOkBFsUW9cIogmAtYNepCAbCblaK718/tXj9vabX4VT4s1yMOrKA+6Rz9FnfjRE4PsiCgUcHC1XntAcwdC+GB3af6vgiPGsxI0qRza5PSZthONF8FrY42NO2+rmg6iTmfDimEnCU9pUJaRAFBk5ndkyirWlEsLzRjneLBxLiwNOAxq08rNzdnh6Yn/DtSyjJHDwWT4TqdtWK6tMTuWD2/Vz3Jx43CfdNknLm+rOcz/sC381z/HSRhJrGk24C9p186nX7LK8xL57QkuJ7u23WsKRt8OVD4J7UkqXyuPr0E9EKJlJ/JAHth6TEIT2xeED8a+qLCYHI//iJuB4V0xaC0c8c7NhON6CzwZvBHtX8EIIEfIDQcpRsZnwWMyofFC1otU0mjUykaHaakmDUztwHKRfajx5Yijncava6o8t/+jH4MMX8IcxAqcckyjJ83IkDHNJ4GnKRmen4tfJ51jmOi21mKkUWaHhKmSMvkJtde14x9fUZadx/N9X+xStdmDra4/ThdmSb7COqi6cjYujWwpyxQuy7r6zt79Ypm7FKnczqzkPIMIYvid06A+oQsYkHhMhJCTnHEGoXxweXh+OXweTLodjAD67gGDvghcCIuSo4QhBaTxLcKTa6jSyUYgKjjR7uA3HhzCDL6HxBOZXn31mTz/80GxsPLECRySBVwyUZQcOjgx+OmGj87fsCTTyPLWptpilKdIqWi0q5bgSkLlq1HnT+za9fl0f5abzb3r9m2HfJYG3wNSkStGnb7eFo+dZe1ewwdXqjm/d8ChgwDo5sGSj+/ze/sKX26xfacAEBWQCKQK/SgL3Ix15Hos9AQdH6gTu+Xj58BH+Rc0wORjh4kJNZkjTFMfHxdapPHSiRrDdIZOuBUdQ+WArWu2UI5UPUirPZGI8NdBVQAbGLMER9vRDXAOO/oEwiC1TDo6nJ+z7tkCuSj4rtK6UI5UTUrSalGMDx2ab1B2bwJY7f+/sqNs2Ory3X//eOm6OzvpzoxQBanWoy2WdFlvf2lol2fU2dr/lPunY975LzncP7Kva5+jgKHTgRSKgxhMyELHwEQhGvkDDpGdfvvPA/osu5TgJsvFUqultwvEmmXRNONIWu45Wh5Ft4Hg+m1kZGu3ZgR4Nl+H4Vn1h8/OnZlc4hvoi1PFBXClH/4AZlTAmvTTVo9PX7PsUkClTpEbZWa5EWmS6SHPhaqubxhOicz0sT44Hmtf7n99Wma3H697+8rr0rbP1UFZw7H5hrWh0twb6sr+b02zbEKLvuHY0/L7bR9UJnEklw0j7MpChmz7osVhIhJycIgLwPfvy6J3iX3UpxkPfXNw+HG+OSTvDUaVTwZKEU46jF0VMZXUL+ZAmD1bK8XwGK0NobwA9wk3DEYOiKEeCKmQ4/HTMRmdn4oktTV4UOlOKT6kbeO6mEVbKcVNXnk1QXLlGO090odc0TFiXfrIOm3v71ao0sOQapbWK5sIvVV5X0dINzsE14w2qs29SjlUByPL59/bb69Zef8XAfCofDKSQnvalhyiKRcg9Q8ox5BySGcNlyF4cPLD/wmDGHjMXWoZTpEhxjBvbVt8Wk3aD4wGEmlZ+R8px9CJUcAwBZClsGBlvltqpjcwSHAFjUPkcr6McC2p1MYwSgiMHS4wHr5ixhXIskJaFnWkl0jyrK2SofPDGk8B7Ew5r9t1wnuEKUb/d9g2nUYIL5bjUhHY1F2e+Oq6/YzcfspUvPs9XbALYrJW/1zqvaD9PPsh2E9y9/epWU8ORmvNIX/tUPhgliJgwCcVuhQ9hAeb7/MXBA/wLQzH2mH+hJW4WjrfIpDkcP/7JT9jn77/PPvjRj9g65+dkNpYH3xvyFTg20eosBbUsI+XYwNHasRlqrWaHh3oBR9j8HFfYViMs4jSJB1FSZBhxqxKl4ZcZG529ZU9UicIoPisznZYFMuoMXuYUrbaaMUkR8t0fHQbRxbfuJPOGqzUTu/mAV+73eE/tG0PbalKOy4/5gKwN32RXYW79PjeAq3ms3oC2Pk9H4W79vm+SfQ5G5YNeIIUgn6Ovw/hAhIyzxPMRGkvTJsC80L4YPRBfMGDsMewEx6+bSS04gn3+PtgHP8IyHD0IJsAnM8iD76GCY1InglP5YBhB5RmTNrSlTa21kaEcR1KO9N+hhpod4sbgGPpiMCvYKLA60Ux6WcZGF2/sf6I8R1NiRsqxLJGVBVyFjCnsPs+xt3Hsrj7Uu8mztBylGxrfM1Cru0tuNequyNY0Q6KUrDo63apCBNVOz5+/BLR7+6u1V/Plomg1wVFqGUTCZ752PkcrCI7GVchIC+ZH9sXwgffPBEdeZGMFNZV8MNtmW/3xT75eJq2HI4XO6/+bUfI3wCdjyINhF47k/Myq8sEgtGUKayNqOgEjTQVH7/RcTwdaBw8e6AGg335xNeVYJAhDhST0iwqOoobjpIaj5bmmbXVqZ7as8hzzEmWhhZa6vqi3zVu86TzHXc+36/GbNPGu59v1+Bu2b0k5WkXluS0dtwBzF1pdZVa9rzre/f/6e3cNKVa6RxJL++zs7S90dGf9GRinxhM0oDqC70kdRaGJeChoVEII8jkqw0XEfjV6YL8As2N+MRubQEwaOH5CXw9j63d11rIlOH4NTLpZOALW4rbhiMHMlKPAeoky2s9SjMZn7PuqNIUpeFpmdqYKkRIcldJKF2KNz3FXxdS31bqqb3Fvv7thbv/taqtb0WrZinjRAIXm4XyDrbSsvuOab4ncIu3j6f3zvMfWebvH7e0v1ny+/gRHKOH5TMhI+KFA6Cc6Yh5LKM/R8GpbTUngyZH+gjNxwQszNjaYSA6nHO8Ejtdg0qVwnLx6JfijR7w4OxOlOBQRmwiVceE/jJmrr6bGE7XjXAZVtJrgWE5nVhirZZToSjmOdPAAC+X4FOYUu+U5NsqR+xgog1FgMYfj5I39TW2Qm5LP8tLOTIqsNKQcRalb0WprqL0kwCz5ihcPy+rneef55vjO812h1Jy3eZ71HL+3v93681o50nq2e2wKB8xt8xGXIye6lezd9M9cfI8Sfa/v7S9yUtvrT9d92+cY+ghliIjyHD1pIjDjksCD0L5Mjsp/5iy84EV+bTjeJZM2wBGCPwIvziBKgTkcWcI4SylaHTGVN9HqDDYITZmm1prIiAiattbeKfR0gOvBEfCLi2pbDRRDI/0DYZFYo4M0xcHshFVwzPks15iZDFlZIs9cQOYmW5b1ZeZt2lfe1Ov3w76bIbMuz7FRkLTtbyfy0/PtpaHAWTfR390VN7xvLkk752s/T/97b59RCZODYwwhPfiBRCQ9HUmPJdR4glvj0VKFsXyRHKl/5kxe8AJjY3Et5Th5dXdM2gjH3DsRgj/gFRwhVFYFZCo4up9bdQ5q0OYCMjCU0iPsDcDRWv5RNT/bwdHT6UBYMdDgI4IjOPPziR5NLvhvFiXPmebTLEfqfI5l5XO8WThuCblacWKD4tzybLsf9g23L1rKcV5f7vygtS+x8R03vtGlPXmr+qatNNv+5hUFekkR9ZKtvX2n3Lm0LpUHWvBYCMHhS1nEccBCJpCIUAScw2ua3YaH4mc+w43B8a6YtAUcQf/4BRzr+mqCI+OZm6CzDMfI2BD9cARsji231dbyDz/7THz3ww89gqPW6SAhOHr+SBiVwDA/TzG6OGW/WZSmEIZPs5lNrRapg6OLVvcrx6snX3cVXJdfK2nhawG3t18tS3c1OVMlmFxOm5of1E5IlMtvXrfs7ZN3FOby3OtFQqR7vhu829uvf8N1oIuBeYIJ33d88G1ASeAISTm62mru7mSufDAe2Z8FsTzn05tRjrl3N0zaGo6zdCwPhkOuGjgCnOXgLgG8frhotVOOFRzNeGKSYqCWttVXgOM7jx/7WsUhi2US5WJofD6SQsbK6EBPcHB+xp5SXqMAn6ZTnVmXDI5caahCQ0smliJiGzentfLSHd+kqH2TXdLpjkIUjXJrDuy8vre/vIJdplmjSmtdxkSn0cRyo4jVRhJVHipFn9s+xL7jVs+/msd6WaOK+2yfmhFzq4UXQAYERx9hGIIaTyTSo36OrkKGeQF70cAxO8knoR+MrxOQoW11A8fbZtICjgD7HGAfVEndLpVn6YMIyANqV3YZHO0iWm2mUyMiSkYcqKlu+RyvBcdhEtliaGhbDSSaMV9N9Why7v9mWZgCFtOMOvNopLpAnhWVz1F2ILe4NDdiqsPBPsW4rAFXz9qnJPf212HSAoWD404tw+hMtfqrB0EtdfBuCc6lzmWXVLzs7be+nU4cbBGQgfShA56IIBJlzCMR07hqDhpIahiVD8aJ/Vk4lGcER30UjMPsTRo8fJhvjFZ/zUy6Ehx1lroSQo9FVelgoxxX4JjoROOacIR45/GrWjmuwlGnOBifi6elMoVWmJUzm6qygqO2onTKUdcQ2tYHuEH57ewE3NUHeM/tt5Vj71q3ygRXxxqA6TVNbrvHNTXwO3+f9Ib7bp9myFgIKh+kbTVPqBO4iaWHKpXHGo/6OcqYv4iH6mdM2nNbmLGObweOt8GkneBo0qkIOROMx5zgqCMwYqNGxgRCm2UZrLHGWBhuIk0R65uBI3ytELIYSVAUB/D8AyFUokoWlAWGkwv2W1X5IKZlblOVCQdH2laXTjkuz61e9XJt5yPsfd9cOG6rBLc9bmUD33miNvwts2+4KskZMv/H1grSuQy7Lsc1I1er41YbTQhyUbqnq9cEY0yLOn1rqbZasyWXyt5+tV6t9Xdzq31wybQnpfB4iDD0TcwDHntMRYZallkwL5Iv4nfUPzEQHL2xjjEOM6TBQ9yIcrxNJl0JjqagxM+IERw9ZC6dJwhCM4djVMPRQicDqCngZljr58+NevzY7BaQIeUIX8cImargSD5HXuqB5dIrShxMTtlvaWUKo+1U5zwtMuq8izy3y1155nmGW+Yz9h3fRVY3z7F5vZvvuLe/XT4pt6q0hjmf4xxedHFqTZ3n3YM1UKufXz6uOyBLLyDYOU/lo1y103yHe/uL3N/2+kMKl8ojJTzqysMDEYTCxNZDEggTWekuMuZ7eJm8Y/6RefbcTm8PjrfBpK3gqCbnQh+NREXpRJiCbrqZU46S5QwIUMHRdVE2Jkor5Wih1cCNuL1ROBY+pfLoAWfSKzKCo/1trWRugGkx0anWooJjUQdkervy7Krgdj1+04Zt1/Ptevw30z43i2g1zUtoHrK3BEZAtUpn3HE1RZf0o2tJtny+hcDs2Jm/f29/3forrV0SuAyEpDxH5ukwpDaCEVwSOGdcGg74Pl4mh/wfmYfz2Wk+8Q+Di5tQjnfBpMvhSLNhTyCUOBeaExyrUQmGgjIcXFOo3tVWh7ABDOU6VnAk5QgHx5m50Bda62OldJAfa/UYV1eOEklwgYPCVyNrMeCG+QTHjLbVBQrL+aSYmkxpm7JSUCrPPs9xEx9v4/VdfaxdZwGrAjJWryq+tmJs3kbH9Sm9Tc8vmxbU+39ePbW337/+TUCGlKOQ2nfbasZi+NTPkYdcw7N0gYb8RXJg/pFH8uxG4HiHTOqF4/nz50I8fsyX4MghQgZhKBF8DscqCVwFmRVZaNtwTC00v2E44qIYMd8/sEINuGa+JuV4Yn/bdeVRepaXYsY0T02OPNNVtHrez3FTemIXFL2tuzedqOMLnF+hO5LontrnBEdTpfK4h8u9XrfmncTFtrJs3tt+n1OUrfO0FOaSP3np+b39deuvXeMJwaWnPenD+Rw9ZhIReREXJqIxCbStFlK/jA/ZP3jSnqelGfvHwUX45mo+x7tm0mY4AkKdQ2TpRIrhgPfDEVYAlsoHeRhpM52ZMowVKcgLDT386o0ZJQ/VdZUjwRE+H0HIhGtdwfGc/bYuUBiDqRuVAJuaXOQq16o0q0ngfbXPcyXSU1O9kr9Yv2FTnmO3Gnhvf7mGvXvL4FaXllEzqM6DFGLL19h7q6HJhUsdwbd934bj9vbn6+/gSI3fOLwggmc9gmNJcIwJjrDGTR8UPl7GB/wfPFneHBzviEmXwBFCPIabV90LxxBM5mA6z1kZWKpmtWWaWRYEmhurbxOOzba6LDGcntjfMQq5BZ+WJZ+pUqea4Ki0MhT37EvhaVJ86qtMiVqq1eJinmZXP606xy+EzXKe40rPnea8qxf70jN7+9U6CkPKUXNy+s8fa5VjoyzXKMLuWncV41xZtg7sKtS9/d71n2+rAyF9CZ+HOhTMJNwXsaCWZTS3mmoIPbwMDsw/+LE8SxXGQkzHWZrMzh4i/3xTy7JOnuP587tlUi8cP38O8RttOApIQXeKLJUmhyjI40rR6py5c6zCMdJlCKXPxyaNh2r4FcwowQ0oR4zQ+Bw588sUB9Mz+4MKjnJapEiV0anJCI4oDfk+a6jtGj2e74Z7KmD6FOOudvqOv7/2yX8MjpYv8VLF2FF0FFVtR5mbdex7vtfO3v5CvXcUu6utJh4w7QlP+4j9gLbV3Ecs/Cog4wqcBF7Gh+bZTcDxrpm0EY4Xp6dS8COeCUjrotVcrMIxQBlktXKEpSZutJ0uH0LpX94MHAszjuThMMYFRpZnh7StZtYEeSGG2QWr4Gj4tCiQknIkOJbkczRr8hy7CrCr7Ppev+r7NihGGuO29Ljn9q1BAVKOc2neoyDX+RDX+Rrr54QU0C0F6f5ec3z3uF4Fe4/tuzxHT3BJokkUAY9EIISIuWcSpxypKw8lgdO2+sg8k8ye58y7uI5ybOB4V0y6FI7HwWuhpBRtOBqeCMshnIpkYIZyHAHkyOH7gaH6ahZA8xC6jAmOMGmMaytHgiOPvIRN+AgBH1noAefSzwsMp2fsd5hBrgoz04q21TbVJXJrRWnLls+xL4rarUhZcYJ1fGSbjm/e393O7+1Xv7e+danXzQqRw4J3O5FxrZlZ43PsPr/p7+braaLcZGfdeff2l8se2uvqgi0cXNR5jkwipImgDRxd5w4O5vl4GR2YZ9YW59qKCy8OLrIUV9pWExzvkklbwPHYdeWplGOVxtOFIxwdV+GYmolm5wN9o3As+AgeHymwAWfwVYpheiZ+xxIclZnpAjOleaoVwbJHOc7ht2Pe4Cbl2IXqxr/39peXqFKIFK1WZUs5NsqvpbB167sQQuCyv+fb6ise137/3NVx3+0b7cYkMF/IwNO+g6OkbTWLmcdDzqifI81RwMvBjcPxbpi0Fo5vv/hCvAyf8uMAQtHs7jYcB27kIt3bOS9yTgngFRwB/wCmpArCWWqYXwVk2DmuB0dAlK/gPzCI+FGWsIsFHJlBoAoMZxfiBwRHnRtSjE45MkUty4TzOTblg41SWJcrRz/6Ta9vZF2jfGpfVdfOpvNvev2+2AcTuWWrypGyBdp+3rYzYm2iDyn1WqUudS5rPe/WtLUT6J6/+769/XoXRdFqD5wx7fkMPh8iEHCNbmMmEHEGyatjXvoPzOeitOfamgsONS5ZMt01IPN1MGkFjkeffcaD0YivhSPlOJJybMMxCEDRaoHA8iCz1obGmNSwOlq9BMcfgAoSdksCb8GxOMqS6CIcwcOoVHrIOXyCY3puf9eAZzrDTGs+UzlSZmvlqKG10pb8SDf36FyKq+HpmzO19kzfbvvC6ILguPinCyo+dX8uwWrxtHuNFGT30VWUzXnqN8zPOK+lNppV51mytLffWf/K5wjOhJA+14GNEHiMJV7IY8NMJGTVsgwefxk95H/PZ7MLI+NzjunOcPy6mNQDxw/5yxBz5ainF8IcHgjLIMo8lZYz4Ych43nuqmTcDzOv4KjI5+hbfaNwBPwHY0QF1W2+LQ+Zz6pttVdtq6dj+7ta8ZyTz9Hwmc5tSmMTVFk1u2VWE89b19rleXbz6GXXv9WOXravws5xFBXtXshLF+2mXL3Gzj21L7pJ4M3idRVf3y2I+m72tqm7xn1rb3+uxF0qj4MjpM9RwdGYxAuQGEoC97iwCoyHeBkOzeeisOcm8c55Ph2Xx8n0DNun8lRwvHsmrYEjeDDCMhzFhShSLsVgwJfhSCWEVW01udB5AKsoz9EPNaNodQjFLCWBn+kH6lDL8oUu8tz4T57orQZsUSdwUo4tOPKL8tD3WaUcmfTLAoP83L5PMITi07LQqSp5CvI5aiofFJqRcmz7q+bXx+U+v9UClfWVMaIGL42rWfdoXp/7q/b26xVYv/7caOrNydv3s1VJ2HqGvltSNk2gZ96UuKUAG1PuS+0qw9a5OoKxF6XrJOw9sk/TIWlbzYWQHtcBCI6cxV5gEsMQUfEM9XPk0r4MR+zvCY7KMxe5DS78Y+wIx6+HSVvCEaJIJ9IKLiyPXUDGD8F4XtVXux9QnsMLAlMpR2yE488+/dR+9NFH5mPAgrGlaYDzH2QLjt4YUeAhIThyn42sYkPL4OvSDLMT8bsaJucFnxVap7rwZqBtdapdKg+sq96B6URJedPxu3MFzDlaXwB977up51cQsZxT3vu5v7X2pchhwKmL0aZqIvrqusfRNMnuhMl1xzVfe5+dvf3+9Sfl6HmgjD1PSFDqdyC0SWRgksrnyCU5RpjUr6J32N+JmT2feebC2uCCi5PZ25OT/IunT8tL51bXSeBHn62D4+0zqR+OT8GPX1cBGS3og0BaMZvDUbCMewjZJjiq8dik0VA9OISWL6CLHMZ/An0VOHo6G0iIEVPsEGADY3RgSjHILuz7xrpsollp7KxRjroOyEDBLrujNkWJ+16/6vtWPGFdHHf+vuf2qULGtqLVfZEXITCvmydItsZYtOHYPE8Kvu2DrPJLe2q225kJe/uL32ezXBRskYIzoandre+FOgQ3ieeLmDEazVoFZJiwr6Jj9reilOcz5NeD4x0zaXs4ckibVWk8VSpPxnnOOCggU+RM2MAKysM2gXHKMYROJzQgwej1cIT96CPspBwrOIYjrdShgB5aJn1TYpCe6g8seG4KzPMc3ba6EDTikyptjft9NxdP1x/VMxtmoWA7PspNx88lSc/79vaXdwrd9dQidxUyK+6HLYNqXZ+j8xW2Gx5veZ69/Y77o7VuTbQa2gNFXARZAAAgAElEQVSVD3osFJLHQqqEC0RCcmmNYdxz2+q/M6U9V9I7txYXXGD29gT5F0+xm3LswvGWmXR1OIbgLiBTgFEqD8GR8q79IDA6pWg1dKmNol7gaYQ1yvG6cKy21RUc7Q8teLaAI+Y+RwfHFeW46v2rnultg9Pjetr1Iruuguy+/1tqn6LVS3Bc/nc7BdiNJrd6dgpGYxJWFWH3fUu6sblhMc0u8UjWv5K9fcW0azzBBc0zE74XmBCSxx43Do7gxqN+joLxV9GR+ds7geMNM+lSOOI1xNExhL6gWupKOSqeSopReS5aDa5ds9sGjrB+gBYcI+pV6uCYmBOT5A/UYlt9FThiIIGRhjoUlg1NqQNVskFxwT6wvIZjwWfGIGU5eUHdcPgFHJt8tq5yaxjTV/nSd3yft35TJcze/rJyXF1/qm6qleMiksIZJUGsZhosw2wBRReEq/9sw7KC5OLRuFzIx7h6/r39Rji0159SecirSHmO5HPkkoUs4DGXKhGc02hWj8MwJvjLaHRzcLxLJq2F4y9G4IOn4Nt/kICSH22JCo7TFAaUfE1YiqBTXcGRPy+1OHikp7Nn5vVX75tdt9Vilg39IDwos+wBk2xgjfRtiUExYR9QErhRfEpDtoyCSwJ3qTwGpF87Psc+qm37/PqodOty2/ZEVzzuW28/p34hzeK04df2JbqLtRVkawJs7UVtXifwNedpgjzcUDCxWss5FAUoyrCkPPf2F57ZZv0dHLkWlOfIpPalL0IhTMK5GTCqrSafI+fUPPhleGj+zhbyTCU4t9nVttVfB5MuhyMgjgCR/XIsS49qJZlwmU2cCc4okh+Qd6fu3JHD2MAYpxxrOIZQBMkKjjD8+asbhKM3sDQvt8CgOLc/NATHkk9hMFOqTuUptHLKkeLVbXfJhimE81kvHZXSdvi3L8D5BVvb6Jsp07xnUwR2b18XbeW4oORCCa5zjCy+Yk2Bwrk6badSdTN1FopyOeFqcZxe/HRaSvS+26dAbFMhAwHfI5+jz2MONWABD8GMpPJBIfGVHJm/4YU914l3dm043iGTrgDHWNC/mbOc8wIuINM8yiy37CDQm+EI8/orXE05DsKDckzKsQXHsfihMSY3eZUEbhWfVQGZGo6uqGfdY1P0eZOPsNlwVJdlX57jqi9z3aXlnBMblOTV8iy/gfZzGhh/6WK0E+TXjFNovpm55lk6fqEYryjdqRxn8Zu6h/a1JI1Ub6t94TNuIh7xSFo1oNpqNLXVEl95I/PT24Xj7TDpUjjmb97I7zx8yJeVY/NBqtpqU+c58iCwBEcT0KCEULtt9YpyhBYH0NPZ1eDIT/MDHPADrtgRAyPlGFgtkvzU/J4lOBZmZhWbqUKkzPBMWZRGacPqbfWuCTLz47fs5ziv0e07vnMldtIZ56+uPH/P7IMh50Zw156/eXRLNNtr2WlSS1u+xfa79a13xx8053DvX4PJvf3e9Xf9HCnPkVoSSzg4sgCxpG21ROi68lAVjcArLyn/hht+Vkpzbqf6Qg7j6a7R6mZbfZdMWg/HD8HlixeCeZ6o4AhZeqAWRE41VsoRvCxy7hEcAxLQgS0tzdfKjJ7BCD9UBMeJazbbbKuvD8fygB/4OXvABRsYqwOlRaKm7IdGI0dmZtramclFisLm2sHReYXNUp5jb7/E6rfQVYDz6pqVTuA1xur/LOXQOR24/Pr8l7a3v0yiTgd2gmM7Wt0eoNVu5kHPd/9uTrzd830KcnXQVt95t7OzGAC2fPw3174CmGc1XVhS+PC5g6OJJeB8jpa6eLkZMnglDvBTv7AVHKEvJK/h+NefKPzZn63fDlnLPm4lgf/ia2DSdnAcQ5aUBM4hdJFKiCpaXTJUcKQ2UzQ/huBIPscsMzBWC23URFvNC60OByPNn18djuLlJJbFYFgelC04IlAaSTmxv0cBGTtFqoGpVTallHDNvcIpR1PBcdPc6L4t1qZO3bu+b9fz7Xr8/ELecT73rv+OTVvSXTuiz89HcCTl6CIhrWunfYdbdR4uPs669y3dkNbctPpe39tvrWvL02HALNOc0fRBAZ+DRTZBRHAUAUJTN7sVPl6JgfkpZva8DM2Zd1NwvAMmrcIR4L8AKUcI5kF85yF4Rh+EUnlSqpapU3mwDEdKnNF+HZDpg2MJLR5BT5/tvq0Wk0ksTwiOOOC5csrRWtpWI9EX9vc1eGZTk2rDp9agpRxFVT641oO17Ua7/n301vk1v5/r+jD7Ntr3zD7d6Ja68tT//naqVRv8nYYQ3dZmzbez8vyW55vTYcvj74V9IUDfkUvlIeUIFrGYRxxmwGjAlhuTQLXVeCUP8dcEx0Jk5743PJcc1bZ6W+X4NTFpIxyDh+BqDBkSHBmEzis4UnWMCQNGypEqZJSFlXM4VtFq2k5PNDSPoA7pv204vg/zEbavkHFwnA2GBStHgntHBnoomItWJ+XY/oFRJoeSU63MjLlotc0LjdJSpiWvaqvnj75odV+e44bodrsf4CY15V7f218fIGvWX4jMKipaXe5J1m1q2wojL5a924R2ft9azn/sCs/FYR2leklT23ttn4FZRwIhhdABIzgmPOLWDOCZkDPuuURVab4SB/hrVtqzwthz3/NbcITCn1FiwZpHe1vdgeNdMWknOKqMwBhVPsc856oelUD/NOUHlue5xTDQOrs9OOZ8dihZfFjBUfhW66Q8s39AqTzUlYfyHB0cC+QaKGn6oME+z3EraG990C3nWbpt9aJ8cFsltm507lJz2m6zXKbZvI9j698uOs/v7S83GXZL5YJeWliPZshQQIY5nyMXPKHaakZdeahVOFcVHK08K1Cc+/Zm4XibTNoJjuMslVEDR4ArilZT1AoBlI9VOAZQEwvNqaTl2soRMUWry0iPGjhyg8AAsToxf2jBMhg51aWhBPDUKJ7ZctGV57LrftuO3RYLx3r7fKyTKtQOIGzDm7395VQrSy3LmvLBJSG3XLbXLfNb7A7WjE1YW07YcmmKVgCtHZTb25//hJ1yb9bRNf3Q1GdBconAVcj4JuZMJrStpj6PxtCcGfOVPMRf3RYcb5NJO8IRMqqj1SVtDhm4Kap+jryGo/FhrA1cKo+4TThqfWAphUCLWJ2ZP6RUHqccNZ8ZZVwqj6W51YY298tJ4K09WIddV8szXOQR9imqvvNe10c596b1OCW7r3dR/b+pfYOcRnO0bzLtAVjd1aTj2q/TICj3L23RcylKTDe5+p++bfR7b39xA6NlVaAZMoIzajvBELhotW9icJ4wDgdH5qpozFdyhM8qOOLcj3B+nmEK53O8/rZ6nN0ekzbCkcszwcShIJ8jfRDaUjPqytPAsa6Q4RaWItbG5kZba7gJ1U3BMXv9OhAmij2KVkcYgakjDja0RgfQLFZT8Qc0mpVZuAFb1vAZbathqjzHeUeWDgu6GSS9qOlUytC2i45d2ZJt6vqzt79E5971nwdk2hi8bCu/TkOuO757XPsb7zt+7o28ZBNw/+xrIejuJQiCBEcqH7Q+YkgkDKQcjWSaatjEKx6bv/ICeVqUOFcRzstrwvGumLQzHE2RSUapPEHAnHJsygfzHC4gY2G0zYw1VvtBVN7EtroNx1mEkcfUkQUb0rYaGg6OoAtKV9MHrUIKS9tqKJfKw0XVsmz+uFwxreQ5zj3v1ftW372+QqbbAXxvvw80HS2odGFp+G/zaLc0a9+odh2H0D2e/m6+zHaQbN1xzWfZ23fBNE0NhSn2ICnvWQSSmcjQcC2CI22rWZXnCClfyaH6K0/K03xaXJSeOtc8nlxHOXbheFtM2gKOEDody1BymfJEGJFJxmh8xAKO1YCtOlrt4AhjaRBgEJW29jnG5tSExZFyqTyAeY3to9VtOE6j8tAz5shCDikzH6VJygv+hwwso8mDBEijbMoaOBrhZsi0mgNixUfY40ucX5udWS67+hS7kmNvv+Nj7Kw/DUdbm8rTO95gk3LrU4yblGP3m9tWeW76PNued9vjNtm7+X8/KUfyOXKqY5IskJKHijryMIIjj7ig2mrKhBRUPviXkPLUlMVFadW5fhhPaHbAF59cbVtNQL4LJm0NRy255A6OzpcgRJE7n+N8wFYQWJ7lNMrKwA80NXzIzEzxMFYUkHFwPDpSlJyxOxwRCIPYKzCcw1HIIbc6MFrEZsL+EMrkxvKp1XVXHoJjXnXloW7RbThuVnCborF9vrzr+vA25DmubOy63rdvh33Gl6PVc9F2SafvbufvdWMSui3Pescp9I1Z2NtfqHnXeV1wTpVz1oRSwm2rqTOPpX6OjIo/GbOSfSVj+xkLxMlNw/G2mbQVHM9SyPiAWhBBmLyGI80hK5rpgwFEAFdbLXvgmFNXniOo714HjgzDKS8PPcaqbbVFYDRiM2N/iFIXxrCpLTGD4k45qlIrUq7NDJk5W7p5hn35jc0bdj3+Eu+Ue2nX8+16/DfdPrlI1jS7XW1ye/k/tO/41aa3i4qZbglo28Le/nK02pLPkQIyIOVYwRHcDMARcsY85rbV9ises79kwpwaa89vSjneBZO2g6OAjCkJPE8l45FwytHBsVaO1Jgnr1qWERzJ58i9UGUGyuqJZhQWSQ40wXH0/LnB48d6t211pRx1mR/okI8cHLU5sFz4jOA4wX822uYGmLKSz6BpbnXlcyQFS+2r1hfIbFBavUHmLZXl+rKclnDd21/GW73gndpqNyq3cW10y/naqTbkCZuLeuG+8+VRMPR6O+qqmV45r0Pg4nnnYNvbX7P+zLoZMq49SCC5iWxoYs4xsMxGTHIBA8Yk+4of2L9UwpyKkuDon+uHuPa2+uwOmNQPR+pw/qZyuPZ+kNa22sHRr+GYrcLxTXKg37khODLGjgRFq6vyQQdHWJvTlpralbE5HLWiQQ2s1dtvrdboU2bbKrbmuE0KtE/o7O0vV8yQclzTsqxbIdPrAaR8vHZlS88YrXUevb6QET2/t99a1ybP0aXysIBxHfFAROBwXXmstV61Zva1TdhfWILjdZXjHTPpcjgCgp9VcAzymcdpLGuRSRGFzt/oKmRao1kJjuRz1MgMdKiYU47QrIR6k6CGIwweY0flWKXymGIw1AcYIVcPADOEpW67JjYT778AJjcQE1ASuOYpoyRwynOkrjxSmPVc2qQAN/n0ur7H+nxda3zbPMfLLlcnYXrw2vFVftPtW+RUodr+x3bL/ebwE1VOQDuPoMkSaI9Wbb+fOoZvajjcXei9/cWKuDxHEgJUW+1BcsECC0ScpldzJOBUW80ks4Zzzr6yQ/0XheCnYW7PrxWtJjjeIZOuBEdGFZU1HP2m2W0OUAJ4BUdKAccKHIfqtc7zY/14Rzg+B/zhBHF0gmF2gANf44GFHoIJ3xQ6xph9aKwpSDkygxnTMkVpclhbGkpHbw1fWvYhVX/1bW6b57sXUtOOvzs3eteuP33hl+7z982+ZCKjpk7d2upeD2OnBrv3fd3j2ve2tWmOy7Xde/stj1Cd52g8SObcWyZCaCLu84R8ji4gQ9tqbl7bBP9TC3sWwp4r65+XvEkC37JlWVNbfQkcb4NJl8JRnZzIgD/glXKERwEZKhdiLBfkbyTl6DHGmO/T1Ghqvm2tF9CGxhiTUuGqYmHsIPlGQ18Lji8ncczkIAvCAz7JjljoJZYy8zUic87+iMHkukDKwGdG85RrU1hjnc9RrHQCv16e4+pFcrd5jt92+7C6k8rTo7wvHbna1Xo0KKYzopVmyKxrArLtKNd7bJ82hNTT1WWvcONLKUIteMSsSiB5AGGqxhMMr3GAP9elPefSOxcWF/n5yQw4yb94+nS70awtON4lk24MjgUFYfNNcISmzma7KEd8BvHIgy/fGYdBPEz86XRk/eCASQxgZKUcZ+yPmeWFtSplOU9hkUGjsIY7OHLSsvSoN2o75xl2a6c35EXO4bWyva1e2du/PM/RWJG5MQn0fdEazgHWqm1vr21zXLPw6/5uf4fz6ZBL+4iF37P9+t7+2vWnyTquZRkgmSh9CBFQwwl4PLKeCZnlkhvDrM9fsQH/cyXL87AwFzwOxnqAGZ6h+Px9KDC23uW1risPIHaB43WZtAJHPHsmXscxHz55wvs/SBWtVgUpRzD4BfICLuHpcuW4MxwZPoX47vCFL4/jIExGcWgxyFh5wC2LGYNnlI5x4f1XKhUEjWTVyDV1BTc0lpUrxlzji57HJp9j70aq88Km/MSr+hzvp/0qCbw7mpXWolrH9fmJi+/Suu1cA+DF85yBmSUXS/t7WaM0V5wue/vN+rt7BkBkk9xjVA0TcJ86gJuIWe4zAWFgaLL1K3PI/4dXFhME/lin4+n5e8P01TOU2BKOXxeTNsARkk/OxfRoJGhbbXkqeSuVx22rXUCmQFqA0TBAa3LN/KBKvia/Y1j5Hqtt9RXgCPAnX37pyYMnvtKIAx8R8mJoLIu4z6QpEbMTfAQ4OObQnMBYcPBSWU05jtR6Yvmxa3R526j1tizb269UWk903zBkTFVTJhajQFujVesSvnXTILujW+d+41bZX/d9C0QuR7n39vvXn8Ix3GjuejqC2mLDhwcfgJtZbQW1cgez3L6SB/j/DDNTw4JpNsVMech/9R5I2NFtbKNyXIbj9kxygs33jc5yY/1A78qkNXCEeB2D+9ErIbxHguB44QsJOZARTyVKJkUYclbmwgQB/cuYKSYMbl18FPRv9nzla+QER2OmWoZJeSU4knD/b+AffACBY/g6RKBKRMbksTU0CtIn32dsT9T/yRSUIUobXjBSkYxTLx5X670CxznENkV/u7TbVWn2KcbmvHv7a+8nrkKmFa3uJizO37SczFMlaS+68VSvLtZ4TSpOK++xdRw1cG5vw/f2lxNG3Y3NjUdhbmvtUTMa5oHDN8L4tKOzgnOa/22ZfWmH+v8tmUkFUzM7LXPDj/Ivn7iRZpqKaNb+Blrbajy7GpNIrDk4UjmzxRyO2zLpSnCkyBCpRkGxqCaVBz5sWbDS862gqHWWG78Mciun+dXhSHsoV/kn/gSQL748C0R06Fs/DZnivmQQXAeefVt+ZC2LLXjJFZRlUFUHcG6M0usTwLdReZ2aapcMvO6xSCRe//o2ti4775yl98Q+R2ZNvYdufQeCRqC21qk3z5EgKVpzqzvvW1rq1ne3dpO9t7+Y/91dx3pUAgVqmTVS0SRCDs81naBgDRHU2Ff8Hf3fmTS59OKMZa8K/fZR+fn77q5FyvFG4LiOSQRHTunPBEcfGiZQuwi2HeEIibrxBPkbF3D0XT9HPS04wZFTLMTztaJSQgslJGazEsXO22rn4LD0GfnTLyDjIeRFAE+8nfgiEJ6JI2aztBrwdR5939PmfWU4Z7o01gpjuDWi025s6cJYmQLYJVRH+a1MH6yO53UljOl53aWWrHvs7S+vSrNMivIcqTneYt0uS+peVYQt32Dtwmi/n/aBzfa7qyz7Bnrt7S8pa0e2um0Zp5xUy7SwjLl2hlRBR3kAFBgt/PyvcBj9+yBAUZRQ+eTL8ssnT0g19m+p6+u+mT54uXK8nEkUJF6FoxsbvXE3ewkcIYQHwQXEBZUIUQoP9XMUkLxO5ang6NdqqXABmTKgwdVgVM2nssAQIEvjKmYKGqzDZyi3jlY3cPwEHD8CewqI+G//Vk5+7dek4pzHk5GLPwt7YafKGP+tkFpGvyc0/y1wa42uGk5sm0/YXKnb5hluu8ne269WdlM+abP+jHyOdjGhZRvh3c4FbfJN6X19z29zzl2OuW/2K0chRazdbsal9TBm6IZG6T2WG/4zmUz/wXq6pGszmR2qafyleufJE/1ZlYPQrxp74Xg1JjVwNNZqTKxifkRjo3eH47NnEMfO53jZB2lqqwsHR8sKEsdWW9/VVpOENchZlgcgOEqTmbMwdE0pihTp97+HSQro408+sZ88e2bx8cc9FSz1z7NSj+wjgD//AiILn/MHnsfx6FF1wCvgzfMXNv7wPT367DNzzn9wyFj0Rwx4r/oKN1W6LONr9SLeLhq92geyi9vm78sxcd/tg6LVrRkyS8p7pba6tVpLo1vbz7e+h/b7XY3HalTb+dPaUe3e83aSxO+ZfZp37G5EHC4qAyM44+p5LvKfDn+YUP30yrX52YcfVmB0d66eLXUHjjfGJJvN4YhyrM6+N1TD18tB4jaTVpTjbh8E3ARgtqjh6NdwJOdn7QCl2dazLGN5DcdsBusdQasU09//fz6ZbQXHarGacjIHyg9BQ2Oqmdl4BnxO2Y3jTy0++qhZePODv7Hf5xp/bK0euuOumOdYf5X9QmJ9P7TmJ7B4395+dU1syBtlVmTz2uruCNZmNfuen3/PrVzKzujWtVHyXe3s7dMO0T2s0dxwnApW/MXP/iB6tc21uVGVtwIyxKSDA4gggKDxfut3s4tmOJcxyVXu0eCUXeD4o08+4a+Pj9nrdz/ifcrRnKUeo76OdVce6gauy6JKhLewCrCe52sXGaJWYfUHSS3sxINvMrDSh46JUzGsuYA6zb4cf/n972cbF6u+m9THMXzyCcOPflT9+QmAH8HiJz8Bfvxju3RH+m9WvP/b+H1j8QcAXDH84rHtxnjTp9ukLJv3b1Kwm+z0vf7tsn95s9tmDS4LzawP1VD01JAnbP7oD+msr2O/LC9yc6joW2nfitwY/PXP/m/8DD92a7v9tXnZz91aRkx6hg/E6Z++Lx9ysAc0HLsDx6syCSXU2fewnXKkD/Kvp6c8+9P/i3XheJpNPDdqsWCyDUcq33dJ4A6OvlUoluCYUpNbR+nqg4hfQp4HCOZwfAs2iygXCdn7Bzj/hPXMsF1dRAbbCXLVn6JvvX//b2ySW/wRs3gKZm42qnxVpu3ft3YFGOMUrSYn/zxw4gQh08ysCbD1+Rjp+GYXveQTbI9HcJ1jFh+jff69/cvWX1vOxT8yib/+/ANGOYvNY+drc+2PwFr+5Ev40y9fS7wLvPfOsW3D8aaYtNW2eis4CiZZuVCOCzj6tXKsotQyy6kbuHJwDKFgoM6GFaXHxzD+BcJCIpi8BUMEhDQgnJJKLzD56ROcX+qLuCZQfvj/20c6xp9YQ0ve5+qs97/d7bK53DW68tF45wQrb9/bX09Hm1u7mFu9NEbwku9/nudYH7OS5+jyIFtRVwOml5Rk9cbVprZ9CnP5w9wX+wzil6HF//zpf2Zn17wc17/9c+uSpo/xGvgKuBSON8Ck/Bj68IsvTPr0qT7+BPaTZ/+hgD9uFFQtYbvK0UxPZfDOEZ9TWsSSlXm9rQ64ZgX3WBWtpuRvQUnXLoUnN7ABtStbgWPrg7BfvcCAefAJjKN6WBdVRs88nH7+Lqscurf0+J2f2t9m0H9swUjIrn9w3ukz2KM4m+PMDSvSe2pfMJuppnywdf9wTWi7zWrb/sv6XiTMdse5L71z/uaHoOdVTIufxr23b/UEnvjzZz9kP7+Ny/LDv7Tev40QnVRAMcf0369egz8w9nd//5H2X0HcMpP64Aj+r6fg2Z9ivq1efBB4VqaeKx2kId5F5fykOBVtq01RMOXDCusb42Ge37gBju6D/I8/gX94hAPk8AMG2vBUEw01yosLvPny+xR3uZ0HfRmpV/4XC/571rKq0UHrsfiz+l+U1Nq9oOjvRiDOr7OOIOQdBbk4rnvg3n61AjbnLlq9UGyXexg7irBZxlaLsqX397UuW/mZ7e2T79UCpRHib/7ph/j73nK/61yi1ooHXyCJC8hJAXM2cC0P7aMcZvhLqOA3YBtX310waY1y3AGOVJlSFoLSeEg9UsUgJYETHEk1Gi/QJs201VYNDiOqea621YDOsUbC/hj2v77B4JzjUHIIz2XXg2lqbBFjnCR48yljlDh6K4+n/2wPZI4/scp8nwxsCptcN29xfu3W/6MvsWeuYjr/6m+7fcltRo0n+nyJ3R9Bu6mtQ2tPM9vLnm/OuU2+4n2xTwnxltsv4kL+5Wf/B5vd+MVnLfvBP2FwLhByA8sV/hd77x5kyXWfh33n0d33zp3XPmYXCwyIxWJJALvAguCQkvhekmU5elSUWALtOCUlVspSHMd/RFFsx1ZCsiKlHDlWuZKSrKKdKkVRKQ5hR9Yzia0SlyBF8LUCAWIXWGKwWAADLBazr3ne249zTvCd7r7T986dncfO3Z27mFscLmZud5/uPqe//j2+3/ezBEc5DHsViJ84iuz8FzdosG03JnW61b3BUYVKLQSj2ulcz9FbjsWJeCuP2SkPjqETLnEmjq1rjGTWtQz1FIejXuAI2zxKnuOKf88b/4Rz6vwC9iRNjIZRYUUmkCKC08DV0yO40s945Pu+6+5RynxMQOzpbcOtEyNcL4bZPugaWmbr7v8uGZ8tL6oxx6pF3yFVpihesTJV3VJl3U8zFdk7tq/EEtc7bnms9ba7UVh6gMaX1rwdG/WN6Q+I2W0HRQB3v+mGshZGXNOrINjlGqzIYOsZ4ksn0OQ77oknby8mtXmOvU8EWoXzHeDo0tiDJJMxug2OefngeuBYu3zZ2v37s/Hp3uBYTsJR56JGE/vFIoYoeuRdd45lkWmFS6f3irl+TFju0Tnx8As4Lhw+5Kyt+b+thWVbPAmBzlimo7TTjT7vsvGFzLPVuTgt+YoFAN5QnHYdXuMqCk+XKtBa37/LxndCLSuBb585Lqa3uLxvuNvRl1w0l2BPGELHBlYYWBXCNJvIjiZYPP1BkZbP4e3GpBuDYwi9tATffrG0HFeDY+gtR0ZQVQBrYufjji6gCnen5bhRcCzv7kedG2m9jQOoI7BpHuN0gAgyNKMYbzx9r+Abpi8fTmKYZD9grDxO6aUbD1KaNutls1elv7fp3O+s8QXVAkrLsafMYo/scWdQsWe/HQmFjvr3XrTFG8VU2t/deeNTzgtCfe/cZXwXn+pDCOvLTh/ci71yBHUswxEYZQQrUxgdY+HNbrfdJ9JDFyYAACAASURBVIl7WI63EJNWg+PPQUzQS74EdSWEbi1BjfUEx6htOVKNRwSMObKHjKNMmHFBRBXubDjyOos+5rhZcCzfIFML2OcSTGRs0wAIb7GmkFrjysgevNnPeOTxM24vHD5qYe/dJiTbPcw6d8DzHB18zFG0LTrmy4ywfgmUSNhL0GMFJXMx1h6it54MvmJp8rgrXvPK398t4yuXvZoG+hvnHhIL2744nROTM9iTNjFO4S5K9QjLniawI8tYuvD7mCdtZtW4VXC8TZi0JXAkSCmRg2O7QibIa6s9ncfFbXCsmyUqLWYLh0bS2mVYux/Z7DTsZI+Y440mZsq5QF7FXVZg3LvYIEnYRyBdluLimQlc6mc88sEX3f3KmI86IUbXLScsL6Sb59h9gd28yVVliGtYmusZqAM/voxZklZexkbrWLq3W//3ziz3ynirs9+9aqnWP35nnc3q7W/7+FezBE+f+4B4c9tBEcD+F92IkpgIFFRCUHTUqYC1GZpvP4KrEIUL3WvwTYJjPzBpfXBUUGPNwq0egmotIFAyz1aTzkOAos5tKTyxChyjpQzzNrteN1kjGzdbBcfy/p14yzXEEO5BCw0dQtCC9GLsCnEm8Nr3xsW1fkx0YcXKh1/A+6XAFIwlUdV/bBfPcduc5y6eI3ty9Lq2O258xhy9nAG94wppWwhh3EppVG+yNlvU2c7tuvpY590JS6JQpxhueX/bf70DxxdSxdLhO2eO4YV+GBSHX3G1Vgt3CYW60LCpg61Z2CwGu4FeufSYWFr3Gb0RON4iTFobHAF15Rp0iycioV2MoKVaWoqaVimUFIkyKWQQdZYPahv6umoXwLvVoV02Kh1Kr9evbws4ljf1B+bdvizDPc4gJDjyYaKqPkLM1a7jlX7GI6fedEPNa9mHnZMPeUWSrplenT/p3KLNlyz2WytiuCbPsmu8O298F0snOi5rM5XUbWeblvtmq5rWeGrvhPGtcywtfyF+TX9n+kdFvC5AbXYD59Q90ziUZdhDUBTMNBIcLUwU4+rMMVzbMBj3AsdbjElbAkdWyWgh2iRwtkdIHbUTE6eDHBxNwXOshS6rgmMrvWjmlg6ZzbrVPefJOfmDTdwdL+MQ3ezCkpUuo54kLu4/gFf7GY88Me0OmBQfh7VeGq2Nkltl6qyxGK3rzG7LsrJpo+Osl69ZS1WotIxv8fgGLlZ8inyjrK4qpfY9Wrn4fLsVQYnO/WzRwZD8x87tykOt2r744k4a3wr3hnRLT585PuYLULb348RdL2G/NjiUCIhQw2a5G23VMuZnHvMhr83xlDcJjv3ApE2Do0hFQJ7jCjgW5YNJka0OQqPY0IY9o43L+gqOxQzTjB8dxn1KYi8tSCZtKL7pFDKX4NVn9+HNDb+xtrBqHnzRPaiAjwhnG713X9+2Kxz0NUbfKLqtx4MsD79RVC23v9XjM+Zouw3n1bfI0whWwNOtV77ZzYP0MeEeVU/dFueaPMudP76Qbt5APf3iw+LCFpb2urscedmNLTncK4HIW4p0nzVsaLFsGrj45t1bJI9vAhz7hUltcMSTkFMsHywyQ5id1Qt6QnW61WBtdQGOrK3OY45ez7FdIZNYY50JwxwcF209G0qRmjqyRgazrZZj19RNXXVjmcARODQ8OGZgdzThDJYbAV56ekz04a2Zn8RJ5/SlF/BBSPu4cNA3WlXtB7p46NZ9qNddopvbYKePL4CYL7jcFO9gXfcgnZYme2U7z4esSJN1/74qEMJj9HqxDPD4yiUw9pmzZ/7Nc/jsZ7dLm6+90A5/2dWSQ7hPSoxT0Fqo3FJkkztdw8WZe2/yWaPA9W3GpDXBcXZ2VtfWBMdI+Uy1p9QUeo5d4GjZntUgMxaZiZBSuiwHR5i5JeRuNeCexDs6jGu1Z9zcM59v7ZyYWsZdpoX7YfN4JDSENJCQmK2P49zToq/8yNEgNR8TQjzQPv2Nyi2WO2x6+y7LbqP9CNa6v7d7fJJmCym8jt4KvZg75TX05EN2XqCHurVYQOv9nYcahPElnBD2pdqo/sbprVptN3ruvuTUXY/iXqVzlf0SGCVbMQNvv/EMLuKzG5YeXHukHuB4qzGpJziOzsyo+ShSvcERheVYAUdmq9lrPSadJ7FWB9l64Dg2d9oemZqy2w6Oxe2mJXd93gPkPV7KJXez/fW6FK8+9zxe7gvZtRj/sXPunsyaTzoh9m8F49/V+zjEHhy73NuiiXyPbnW9/V4KfqzkY1YsQ74lO+zR9ruFXmHF4hyw8aXAJanw588dFRT62vbPgfPuYCBwv7X0IEGpFm8tOoVrgcRr2yoS0wWOtwOTOsHxCGRrCmIjJ2KygsrjM8RhAY5JAY7DmQ1xQ8ux3+BYrgxP/YnwPmGx35EbWfTa1RKJNjj37X3i9W1fReUBnROPvohHrMQPOa9cuVGCYnmA9WKV6535YO6vIOOsEnOs8gOrCRpSm9o0JubDesQcy+8ZuiiPUx6jun2v7aqGfGlY7sTxhcRylsXfPPdQ7dx6K2Ir3+99yY1GEu9zDiPsA2WYbFG+s+iybuLCayf6QJ8rwfE2YtIKOAJyCpDsy5KD46Sqaail5QU9FkgtVUO3GtAiyS1HQ55jCuk8LubgmMaJU95y3DngWC6GxxfchHR4ME0x7Nt++uoJHzOdsxLPn+ljPJKliHVkP2ScPEGAXg8jy3b2FMOuLma5Rg12uV0Zuyz37+Vx+r+tg9E7YPzY9HCrFU/MdAgwdnZSLS6YcXBbaZBV3c+DXIGSq0jZ/sLz46/wHFdmYKeN7ySMg3y2Po+/aNckbwX91tiH6zYWeK8RuMt7hhKGnfykQSpqeG1mso+JzqIl8+3EpM2D4wKCjD1kZCc4Ikl8/GGngqOff+fEiTkcFgbvZTySbjYFDnzztAAz9Xk8309+JEsRZYRPOGvv29waXi9b3Hm01SHH7bIgN2b53vz4MvaUvBt8qhYcXwo9LchKPqXc3r9AuvMsm5sMv/XtHh9Kno8dvj79XjG/hdO/8S6fd/I9fwNsLn3EGUifhS4TLg4X9zTxSldrhG0/hbJf/YbAsU+Y1AmOp6tudQ/LUUEnKQJFcMwS5cVuc+I1Ugp6r2M5NjOY4SIhc6vc6l6zxjfi6D48aID3sAE5F4BvQ075OoFzz+zFOWy8n82mF8aJF939RppPQojxTe/8Lthh7Wz1WhffhXarstPlfmuh4mb/3n0et3B8667qIfXVZ+8Vb/RjKfi4osQxYVA39HEIjIwralyLE7x0tR9g3OtCSsvxNmLSDRIyOTiSyqMktIgRyB7g6CkXPiGTg6MOYEjl6ZWQWQWO56dsqbrbj4le75ie+gM8CosJgiOtSM8fCbCsMzx3em9/5OALK1Y+9DIe1wI/4IDI/229Wus1pcsKI2utapD1DMe2lPmNlcnXlm7b9vGpEFqZvmrZZDXUwL93/94GwpWQRBmL9IdcY/tuxtBGjuvDHLdmfAHXElJ963tHvBp3j6TUeqv9xt+zDjrUeBQS+72lyPiChM2AZtTE9189Ji7e3Aib3LtnQubWYtKaVJ6rgAqK8sGWhFYxAqWgZRp7y9GKSDLmaMWSZMdT2QitTOBMACNbse0AxxTpUB1ZDo7bWCGzyfu91uaPXXb3WIkTwqFRkOvY8Etah8tuGafP3Cxn6wbnefd33NDe0eyjTsjjvq3lrfhstDdNv85lvfElYtD62+qnOza5HX70Zs5le8d30snnmwLfnH5vX0r+gntewTFhccQqMFKbl/1JX/57/o0jeLmfXtSat7UHledWY9ImwbGlVVFb7RMyjN6Ehf5CArA1q9Ihg7ZG2ZaxxmUmdZkJh9Kh+vWsmY3vSHD0E/Qlpx7/DB60Dg9BICA4Mhbpq20cXh7bi2dOif71s2EpooX5lBPi7s08h3fktpbioD1CjoUF6J3YKsD6OOKKBdedxW7bkl2xSVSz2xvYv9z+Vo3vDGZEDV/ty8vZOXHv6zgCg0esQyCY7fOSg1TVwkVZx5ktV7dsx6LcMDj2D5NWg+PHIJaGIEfrUEF4TbeWlGoFo1ppBFo2qcYTKFnzlqMViXRJXj5I3q4MEivjwNpGlGVNmJB0nghpZpE1RpAtXr5s9+7fn81OT9vJo0fNqSfhULRB3I77uR3HoKiEa+BEZnA/M8vk1nmOpEMmgOee24Oz20pa7zrpE+fdgwbmE3BipP3Vekrg633ffWO2e/vtPp4oLMeuUF7OW1ydFPJ0xPIaK1/7xmbF9t28xuphyqgCa6ldB8+xM7N/68Z388Jlf/78e2svb8ea7j7GwWl3INCYsg5jBERepY8rAnPG4rm33tuf1gibupYqON4mTKomZMTJU5CzByBLcKwHUMsKarm1GGg1rANKlSnoNIm1zhLlwsj3m/ZUHmq10XJka9ZWbE0YZcYgCw0yV0NaG4VpzcKMxjDzk746xp568kmHs2cdPv/5jaVBN3V3b27jqXm3P03xQSGwv5DPEtZCCWDBCHzzbD/jkV92+tH78SGX2Q+xG8XKc995m9bKYd8wzdvjtqyNbZ1H2rya0MbmYNXkcyFV3GrPuyosu+o5CIJZpUyQv3ePuPK9hLBWuIqFKBhaKwbvPk53CPJWjO8sUinM6edPB89sS5VJ1804+JZrhMuYcsB76D7bwlp0QEtpnHn9XpzvRzxzY6uga6s8IXNbMakDHJ8AxNmzUDk4XlLLwUFVX4Rqhos60MNaJU2dKqG1FEqLqCRUt2urReycGY6McjCZhSE4BnbJuFojrRmYVtYFjvkLn+WD2x5g3tKE9NjpkevuAWHwAV+vXSRtaFEqgTeNxNf7qR/54KwbCZbwCQc8yFPjw93rujpoKtt14ZyYrtjgrRp/JVu9xYuh0nfFAlxPc3iLo6y922bH51Mg5YtyCF9/7q4NaB1u9oS/7PTd9+NRKXCcYSLBbqs5OJpA4KVXl/A8jgvf7GTHfApwvJ2YtAoczwNyDpBjF6EWA6i6hlpuLuhAS53KhlKqRbkylS1AuRpEXjnI/4tc4mKnXGRT17KBcZkbq6chgZIW5JVrNm3syeYPwjTOwk4cgz01AODIa2Mp4tU5nIDDI7AIfGY7J3MLAZxd3oNvTYs+BMuLlfrY6+4ek+LTkPaA/9N6bux63/dwQf2f1jQ5u2zU9Y6/3vfrjc+YI0+mlGbj9l2yaR03gd5LhfTdTuZUWd5tC7M4bknGrL4AOF51nFsxvnNvOa2eOnO/eKsfwPSeV90RZ/EDEBgqAdG70AJvRSP4zvl+Nqu7mQuqgOPtwqQOcCTGkXRJcGQfmavnoOvRdZXuHZeihSBJmpp9pY0SKhBCEhxtHAmXxLkqTwibIrJymQKXTVMbr6dRYUEuWtihmUtmfvSgaSzDTrwNe+rkzrccq/NLSy4U+EEI3M/a3yJhw8cusQLfen4Pvtc3K5iliDN4xBr7cWExtKl1tzkO+aYOvaGNNzu+T8hs6MhrbLQNLO+bGX4j2XEhqYb99ecPixduaqg1dr77TbdfZfiIczjoM9CFC20dFozBdy4+0Eea2nZcUAGOtxOTVoPjaci5MchWDXLvJOTieejGPkitoFtXlnWqhQqkUFay9E6IkBIBUWE5Rv69a5Ut1H9ryBIH08iQLRpYT+M5dMiMAXbkFNyggWM554/PurtNgI9012vD4VoEPNVPfuRx50JxIfuIgH7cCVtAyGbRZztWb/UY2zy+kEmHZViNJXZLkVUTKJ1UqJVQTeFX51lsQkV+7oWQRfFLd7a7S/KsvNybHN8JFpLJZ6LL+HY/Sv4mX3d1AD8oHB5iHsBL/bLkTyAxBs+98R0834945navqKJCxscdp24TJq2A4xcgcAzi5BNgqoqvNTl66ZJaXgjU8P69UjWhY7Wk6FobCRmWWo6tlkCNq7Lm2IpbuKZLHGwQORMYa65ccyY6OJLV98DMzcDUJmHHTsMemUKuyLPDY45rTrpz4rGrOMaFaAXqnvpD2qz0LvcrCvjKd/eI69u+aIoDPvqq22Od+bSAOLLpMTbq9m76wBvcYb3xXd7sd9VnDYNwlTZtd3eEGxXAlINsJCV4k+M75843nXrq/AN96LvunLzvVTzmNPutIyAkWuFlxLgqX0qv4tsb6t2ywSns+2a0HLcFk1qM/9kkatrAWhMaZ2Yza2qTo1k0CzsXr41Jq8FxAmLhJDh7cuziRbU4H6jhA0q2lvaoWENlaklFQsgoFtLW68K2mgL1OtBsQtbqTgIutsuWxbHaNExSR6btNVvP9hieiJ6G2zcCM7IwuJZjdWGwFHFon69yOeEEtKf+cDkS9CX+wo7j6TOif8HuExfc/VaZT8OIvest2HULZYoDbAQn1htrLWyr/n1NjBRIO6TDip1kaUHm1J22Zci/e4uwsl319xWjrytR07XfuvtveXx3FVqdev6e/ihAHb7oDtsEnwQwTktR5Dl46yzeDur42isHxaWtzNdt3acKjjeBSbpW910PE7dsk9qQCRxMy8BEGUxkYOebMDqDG5tbbbBV3WreC8HsUBkAnQQo56uWr0Ili1BDCjLVi8pIIaOWkE4MCeIiP0vXmkKN160cgmsuwdG1DoZgli2svgIbpJft0oP7sxpyy/H0VGE1esuR/71zM9YbWSSPXnd74PAJgZwf6UsRc4mDZRfiqecbfY1HykdeTz8Apz4iJaI26GxQ/5mdyfhpC8Fu5IIr25T7rzLCtji+E0h5LJ9PqSDoKlGeCtq3h+ravjynVcepnH81vLmqkdZNjC+UbGmTfuO7h4Nn+xGLfs+rbo+Q+JR1uL/kKnpwdGDZ2tOv9imeucnlsbXN85jjTWFSswmoGqysw7W8KA4scyDNMRhajbXsomWYLwLcxCmfA8k92cKbXaGGVLNDRbF3DAhmrVsaMp6ArM9BxZeYkIGsj0CgwaMs5cdYbsCnCWaJBnBBDWbZwOph2HkCZQqjDsINASY6C3emedphYcHh5Mly+XXSeXYwvedGs33iurvfOZx0FvuY1Ra5npiEwCVY/Lvn+6gfyXjTuMs+DitPbKQUcaOguNHtNvsUrHVcKWRqKin5DvDaIFi1QbELBNcSDN8weG5gfGspYGK/N+/017dVALa4FsadF9/AR63FVNE0LLcUHTIJPPPaIr6146g5m10c3P4mMUmg4TFFLsItL8BFNZhmAyYwsNcNbP0gjAZcOwcyW/CuP/c5Ty9cBY6eeAmI2bOQ8TGwZZhoXrqkxtVBmSrI0T0Q6TxkuuT7RQsnFotjDEM04LAI6AbswjyghmHltetucXjcqP1g9sDJGbhaC3b6aJGpXnGPSnBcAckBBUg4Jx+Z89zIjwiHehGHpPQTw2Nnl8bxp9OiD1JTxQJkKSJCfBrC3nszFmH3eu62ENuWYpeFKAotxrIj4GYtUimQVsGqpBit0l+s6i52dTHoBrs1LcgNWJqbGt+511ux+sr3HxSXt4IHN9zHOXH/GzhhHMjzoCnSJnIDeFlcx1f6Ijy77Rey3gGd9yVLy3GrmCQaw0wQ+1BfYGEXHJy2V21kjJ2LJ3z+g1Zj7TRcRw7E26vd4PiFLwh87nPwrnXFelw+fVHtnzok4suQBMbRvRBmHsIuQmAUMGJBKDeSo/QI3NwYgNeozAzHn/kUlsTTYI8XynQzGRz4swKQHNPv307SVO/fgIIkSxGzBj5uHd7vKC2fg4ZwOc/s67VxfO20EN6F7MeHpYhO2ZNOcpYqnw26u6voNGvsJ4s6aEpE9/x003LWGZ/guMry67bYui3C7pKWbrDs2n7V8df7fp3xrXPzTqmnztwrpvsxl3e/4e4NLP4yHA6RvO2J3Ln68WUY/Nmrh8Ur/Rj31h2zAxBXhr1JTCL+qFG4+XE4eRWOcUZ1EW5+tIg1HoUdAdyp0p0ujbUelqPHzBKpFwAxNw2ZaYh9EWTrGmR2AMKwEotqy3PVcq2VxKwcc066Pe4qA5ZjsHICDgwJX7qESycOWlwo3gsZ3PGjvr4atWNwOA0wUTNxsmi8xbP5wjvm9ed8XNLjyq2brO0b6cSCO2BT/LAQOOw1s+hqSwghsACLf/v8XvHc9o3WdaSiFFEI+4MUGKh+uxaoredGr/f9Rq9lzfELy7GqPbFe/6w13eW1QG8DFuNGxncOqVXm22cmg9P9UK85+pIbTer4YV+AIGEdQTHPQC/D4muv3wuO268c2kancuvbrcQWK4BYwZXPeYtJ0HqiR7tZTCIW4RoQjO6x2sFdy3IDzVuNZ+FqzdPu9NRUXqnXxpocZ7rdaoKRAE+o4l6TsLJ0IQdJOwmx5+yszJQQ2LcfRl71x1B2r8MVQO/l5M3ibUx4y5FxRlAJ7s382iV/5+d1QB/K/5vZooggyc9ZgNUzOAW0A6TlSbfPeDBB8pHL7mEo/CVY7CU4ehI5rUmLGVXDHz471B8BU962B190I7W6+aRz4uHNPknrWYZrxg7b6NI54nputnDIqtnmjSZMOtzftcCvCyw3DarF/mSySZudM8vXvnbm+IHFraPDGnt+2enDD+FjNsMnvSAzV4llZ0FkyPDdNMSXb6tqzk1fcJeluII7nUcmMJafAiAZ8tscJs06Za27bA+68BAsGTNRQmCE86yZWTg80U7GeJe6Exz5WyVDhCefFHjiiTZas7cMEzSMQfLHXqQFeUkcxMH2uV8ugZAgmL/h8k8BhOwqPql5sTPFF5P+36OTxbYXgJnDcJgGxuhyF5bkKpAcYCsSX3b6xBQ+bDN8QjjUfEfEwpKUwF8kKf7fcxN8Qfbn8/hr7u7Umc/AibvaI2y2FWv3qW3z/gTHMl655URJNwiuAZblZhuOUfqnRr5l7fJXXjjc6IsA7L2vuUeEwI9BYIw8xSIDzfjZBdTw/1w40J9Sw/6suO6j3gAUCwuxvceTPc6oYkFuBpOIRzTCvCFWBcYyQ/2FLwBMxPj5vTE45sDZZc62znqiODxIXoB3ErOZGQFMQlcAjidQXhYtwngaK4GYo8DhCxcEDh9GNgOBScBnDcrPDHCxOFYHwk/1jgvcmgnd/lFYihgF+GELPF662kzcCCB1wJ+dGcNTEHwP9efz6MvuUShLUYt2KeJW3eyNnuFKQifn4HTHKMvxXWZXwLEL5Npg1g1+W9xurcRPr3GklEvW4s/P3CfObvSaN7Pd4bfdXTbDTwiHB1xR2cLGVrC4ZgT+v5l7xfc2c7ydtW0FFEsrsbQKJyBoha36nKKwARwTEd6yo8FG/7oKkJvAJGJRjfdzLaOrAow5AHZ/qtbjyndlGY/AFFCCJL+Op6cFcBRtt5h/LGKIp/MTyceY8n8XeBUC7wUO04I8DHYGF8lFiJRkF34KumowAXeJ1ufrQG0Ctor2lZjkwNN/Hrni7oXAjzvgPsnqGlqRwjc1YrziD763t38PxPEzLpQj+CHAUppNrefurvWwbTfPsXSre/Ic1wPBDcYSN+pOEzzZdc9m9pn6Ef3NfiTQ7n7TDQXAj8Dhw7w8D4w5XzFxwFdeewtP4YP9S9z1D0R7JFmehCS4+c8piClSAokN1c9pEL+ABTAvn4MjdV/zcF/52TomEXRXXOk18xo3AscqePrteE2zp3KUZ2CUf/NAWXyqSRVe+amTJ3Pwyvdx/t/vQ+BjOUgefhjikIZIVAGOBwEzu3I8VSRyghm4kX2w9cNwLxUuNzNME6gkbipZpv5Ndv+O/Ng193gG/JhwGPPUH+dzxVQhn84i/OsXGv3r4fH+V9x4pvEpGHu01xVuVwKm+9hrHZcS/R2tVSs7bpQUXu6yitS9FriukY1Wwp2XRj313fv7UArqnLz/Ij5mCIwWdYpDFJXfrMV5VtTxxxf6WILav9Xcw0okXhTYQYNpqjCy4sJY8ufyEhDdl8cC+evp1eDIv7fJ4VvGpNJdpzV6g3xGD33AVWi/sk3hZpfAv9bNrYQKcnDkCZx5xyX/0soeZcvFiQuQsYZYugqJEzk4jpc9i4vNrztfceOCg3Ah4C4Crk3evINAkpYc7iI/ESfZsazoZ5MXxkn8uWzhj/qi91fc58ffdPelifkMIPbdCCS7v+u2OG+W5yikzKyhMHXxKSphbiXP0UJeiTS+cvqe/qjX3P+Ge9AK/BSpORUlbkL0Gy7A7712kIVqg/ZZAxRLA2kE4ni9CM1NQ/iw2uE8IVteaekhtsGRFh4B5UsdQn3bg0kchEyY8tNFGewBjtyyJ+eoc9vu4Cl3qyJy57xW3d8OqhCDqsyEewtyEqI1C4kJYPwyRFa62sxo850KoATKxkHYixfyACuTN12W5EATyY/Pub3S4t+3wPtJHPcZbZYiOrQg8MdnxvgO7hN9g729X8XjVtiPQlJSpPK5RTxHWo6sh+XIa5UF3qjMr5q1Ls9+I240txUCLS3lN777L77wXD8U6iklFgI/BeD9ZVzRU3NI63L441fvxtP9KDXsO8x2UnLyfAVjiYXbfPwsRByuACLPJ7uYW4FkregiEVuCoy8vplFFih8tvE7FzjacdVzX1jGpnYSpHm8NcCw26cVB4ldrpd3LI1dN1e7RuOSL/U8CcuE0RKsOwWqciRlIutgsV8wExH7eQAnB/64ehvJn5Cx5a9LCXYlhG4fzN4tvv7BC6PRIP6gcSaqQO+An4cC4pOdH0oYUAm9Zhydf2Cue79eiP/yKqw2zFFHKx7pj09vlZq+VAPJutYHbCM9wM+B3ozLEfpf8UaAkbeBHhcAPM2TCLHQBjhkEvmIM/mTmXtHs13z29bgdLJcKKNYhjob500caoKcCXlp5lktaX5lFpls9dqDQXciTMbbT7eUrs1LVV72om8GkNfjTNwbHcvC1Tmgjd7w9QsFN7H7DVMsVQwhSfRYiSCZoYgU5XoLjHsBcL27sdU8ud3MFQJL17kGSHKayVpKsdzbw6sFf2shp75htnBOPLODDLsNPOGDUu9q0qB1ppPieCvAvnx/un+rK0ZcWPg5VBQAAIABJREFUJmpR/dNSqPesVQGz7TxHJkDaqou5AMVaILhmmeFmeI5Svp4qfOX7d/eh5A/AfW+4jwiFn3IO42VMkeAoHM64AE8OLDWnO3l7CtJbigUoZkdzS9ED4t098glvAmznXPswLOl7tBrPMN6Yxxq7gNHb9Sse4XZi0hoP+8bAsXvn9U5sXR5i4bZX0J7NvRZGIFpTuZvNipxugDQiL1vEGPg/LNL1ug5Eo7DXLZx+G662B5Yg2QAs0/arSoMGtBTxsHO1xhx+DMCnfauGQk/Tu58Sfzo3it+fEf2zPB5+2b1Xa/spx4RR92e7eY6sSC1aX/WT58iSP2Oyr77wQO2lfrwM2aJAhvhpAEfYxsETuSk8S06GxZdemRTP9mPcvh9zHUuxbSUy0XoOEnlzj5XP20DwYF6pUuUedgBjvnXBO+wCxl4XeNOYtPqgWwPH7br71Qt6EvKJJ7yoTy56EUJM1CCXAsj4OuT4RO5eEyDTRcjRUWC+OA8Wl6viR1+BW0xgr+2BDWPYUqutrR/Z7fIPGFg+cskdtCE+K4DHGIv0smh0tyn5IfCvzoz7eGR/yiydU8dm8EFp8UNwtmhYvvHFsGGeo7OmaBm6EnNcp1Z6IzHFdkLHIYWS3z4z6UvvNlppvuELPXLVjdkUf004fLzsDOtFZwUFq/CHr76If4dP9Y/DuuET3dSGq/IQ0mefiySLjycyb3AF0kxC2CsQvsCh68OacJnBBXvzZ7MkZZ/5Ghx+DrZC29k4MG7qOja+8e0Fx/I8u7TbCJC+hhKQkxcKN/sQRP0qFAEyWYAcljlQlpIKHijfAIIh2HAkj0kyNlnLYEdiWFbedCmQb+7NtPF7eku2PLbgjiPFX6fDQlfby6KR5iDwmszwfzy/vz+9SXhxx8+8PSwbez/hII7z923nORZu9XbzHFl1I609Zxr6a2cOiL6U/N3/MH7UOfwV3zyE5X55bJGK3F8TNXxpxza0WnPVrvLycsz4IuTxop80EyvpAiQeA81iYc5DjvtKOAB7cgEaNQ535Qqgxr18YRsYmUz1fGj+5GTvlYBIv17yG3xCdwY4ephaEbdkpotWJJWB5t6GfO+PANdnIJcmIUcuQ7YUZCJzybQG4WAESN/Kc5SyARc6WLrc6hocXW6CJPtlj0/CvpZTf+wdwZF0Tj48h89I4D+Ew7AX2c0FdsmP/Fas8TvTI/1r0P7wBXdIK3zaGXv3Btdbx2Y3SOxQtaht0W2HnqMS7lJq1akXDveHL3rvm+6DWuA/hcRBqi4VPSLpRr9kJX57IKk55TOZh79yrDgNSTrO0tuQWQRhD0OkGtIDIrPTBSD6f6/l0y1nc3C83hsYq3quO4plsnPAsWpFVsQviu5j4sA0ZPOotyhlC5AxIIevQ9YlpI9FjkCkl3KAVIWuZNCAbVqvAOwim4MkLcl2TLKq49alyLGVh/127XP8bTeMGn4SBp+xbNVQ1GozSWgt/qg1h9/rh+hqeb3HXo2PS6E/AYth/u1meY6FcOuKu3szPEcplzSSrz97X3i2H6pO98y4ySDAfyaB9/sa6KLsz7HCSeF3XzmAr/Vj3L6utSooHlvJPhMUySpZPg1F19lch7QKgklTWox2Ic8HgC7fSC5XyJ/rZB5UgPEC9YSYePkjuDZVZwc+fzsPHKsgmf93WSYkfbIGkPsuQnq6zwTE8DXI1hJUTUGSTkuApEXJdg0eKCmwuwDXaviMtmWLWGa3PUgWFKAuS7Kj+Lyvi3CbD85SRKvw0wJ41LvZTNVQkNjhugJ+5/k9ggSJvnymvuOC5oHsh5SVH3KdCebu3yrkxd6nIqQ0wuXRuq3yHAVgpLHfNU39zTN9aFh/8C3XGAL+umNVE+9xUfIHR+kB/CGa/X0h9WUSOy1FUu4kfrzIPh+DaM1ApgEkQdEEkGMlKJZ85CIJoIdgPSgSHC/BqRFYxhg7RK5Lqs5mki59uei1D7pzwdGfczsI7M/T8yILjUm2jj1I0jgga4BK5nIrkgrlZhjCXIYcnoBjc2AQUdm6YQiWvSQIkvNX4eojMHMTMPoCHHmSXRzJgQXJ43PuQ87gZyBwV9GigdEbguVLxuBfnJsQ5/q1zqZedmNJwDYR9n3rjXEDnqOxFCXt1SOmKzFTjtGRkOlvyZ94YBb/ngN+xlqMsuSv7UYLfEMM4bde6SO1ar17uuXvy4ZWrF+uUHIOD+VShd2gmC3nmqTV8QTBcBiOz5YchlUJrBe4vgBHfYTpZ+Aw8Y4cYbVXS+5q9CeBuOWbsWKV3eQhbsHunXwq38e2pPwcOpxbk8E1aLrXtCLrqgDIJuRQW3MGWJ4FVN03/rJqHi5pwNCSHEphrh701B8vgHmGepI5R3LHBIc3e5dPOqcvXcePC+CnnMCQB8ecI0kNrFNK4rfOjLF/Wn8+x95w71EGnxask+io/NpQI6+1Y46V0+1O2EDKq6FpfeWZI/VX+3FVR95yj0Lgv3Ck5uQ9W3I3mkoBwD9/5eAAUnO6ni3GFMlTPMyY4tEuUNwLkX4fyo33yEIz6TIEq0dgr1+BC0Zg1AxcuADbOADraTpT7dYo3vLZ6cUZO9xyrCzxLpO/akWS8jM/DxWHkMP7PT9S1gRkugxZH4bImpArwly+KbdrOrgWOyPSxW7AMCbZJEimufnPLNqR4ql+svp079C33FpgwK6IVuA/dhafodHFNo++FJHKcwJfkjP4v/vhduaGvxPH38BjMrMfc0DRp7LHmXbxJKmC06byrNOegEezFrES5hvP/lbwLD6//WWVD7zlDkDh5x3wSZeXseYJF+fZZL/zylP4E3x2+ylB/QD4cl4qx/ZhK/4cL/pG0X2O56FMCGl1biEOq/xfuwSRR5ZJNC5aoRAUqbBdtERR8Yob7Yndbw+OtdhhCfdtAvpx4LWqa/IETd4p8RBk7RqU2QMRLkC1lqFKgMxyUACa3hd3ug7bBFzzrbxbIkGytCQbKezsJCw7kxEkV/W2GTCQPD7njlqHv+lD4CSQwzf7YjzybaHwz8+Oiq/2Y8p4TJYijsrso1bI90s/B+voOW6Q5yiktDLJzlwN9df7UXrHkj83hv/Iwf+EBOwitsiSvz9WCr89va9/jdL6Mh/dluIpiOMH8mZ6ZUwxXYAa3weRLEHZZUifbGmRCLLyabLlKalKLOGtwWgWYjAr/Sps/X0w+gW46QOw3los9RgHwFocXHAsz7wLJMuGYHNjkJNHIa5eglpegCqtyHgZat8IJC1ID5BDREQIgiQrTHQNlkCZLMA2WYpoYJvDMHS39x6EmZmGmzwKU9B/vLHSvokDBpIPXXOfFMDPCuHrFhjsyfmRDt9LBX59ely83JeHEsBDM25fYPBp5yx76bQ/3ZQeJlOs8N0qV/etLvZScDOtQJ3qV8nfA5fdp53F3wZwwNOKHFwBjs8Y4DcGjprTIwN9fBYyfhyC8XvGFAmKo0x0LkNmMZQbhaC1OFTRNuDzQlDkcyILi5FW48IIDPmLZW+WntYi526AnpfBcat7PbEVkHyiMEfOA5JMAiZqxnx32Jz2s7wAHTahIpkDJKtLqGNKX4/V/r59Yw2m5TxP0iQWJrgKuzgKO7YX2RXkvScK0mrekGdANSRpEYX78IRVeMK3ji2Vf7wrjD9pAf9bP3UEj0+3jspAf0pIMe7fNN2tXW9QW52X/KmvvvCA6EvJ35EZ9z5E+K+cwGO0itrACLypgH/20gHxVL9eHv05boXEXdByeoFi1VLMAigCIg0IWo08L0/LKaxFAqM+CLNwBVbMwgV1mDq7+b0A54UjytrolbbLhQrjzky8rHXfBxscV1uSq2g/iadcQdWvQ4VLUOkYZNL0lTaSQBmxH07xZoyLHreqBps42DZIMh6ZwQzvhyFI+rrt03Cnz8MOsrAFY2lhiL8JCaoSe+qPF7YQzO/jf39hDP+6b60avuTUYx/GlLH2w3DoKEX0ytumYp3TERdIhZHfee4wvtOPkr/D19y4Nvhb1uEnCAd0nwmO5Do4id8Z2od/eUaIpD8A1qej5sZD/owXGejjUxBzM1DpVch0KLcU0xaU0ZD1UUjbhLQUxiu8K28p1uDIF5ZkEGSwiymsqsP4bHQTdmgMpt2HnonMXLXbDZKV2GsG7gxw7AZJSrFPQEydzEsQJwA5PwtFlZ+6goollLcih/OFQQsyqkNYpiiYqShcbeU6QbJmYEgkj96EZd/bxjIsOyV29LwdILehvG0PX3WPOIn/kk0KC8fHxySFwIwz+F9e3Ce+3qfHFyeefath9h78uHD2EZ/3zZ/mDuEJKdw5O6S+2peSP+fUkWv4qzD4eQiwfKCUErNC4N8Kg994+S7xdr+uvy/HXSsDfQyy+RyUuRtyeBHKg+I4pLma84TpTZX0HFGDwzKgoryQgsCoExhyGBdjmHAUhp38aCicOd2RiR5YClz3XNxZ4OjdwkoZYimHxgQ1lX4OQy5ehqprqFBBpQJStqCzBqRpQgbSJyrKB9TFEZxs5u526mACB1uzMJcMTPA27NKDyEj/YdKmqA8t3e2Biq34RcGerfNerv/nILHXa0fmCSyC5DecxT99cY9gA8m+fCioIRJ8xhl7j2DrLSetUvJSjOWvnHtPo2jsu71DP3DFfeQdCPi7zuFwW19RwDqLF+DwT1452Md+4tt7KStHW7EWc6vxLCS5ikkEmTADfQCysQSV5daiB0UbF4LKxVEIjDKCZdkfEy+6RkI97BLBsQUTHYOpTcNOJz69l2fuO9oNDJb7fGe71b2urkvMwscipyEZfB4j7eeu3IoMZW5JBiJ/k5YAadjkit5VK397agub1WCSJdiwDtMwyN60sPUMZnQCZnY6p/+czpM1paIIsXZHElzXWhBs9jQ2hP/EOXzWiydQ+YcxyZy68q9chi/2s3XsIxfcwwLmA1Ko7z57H1u1bf/9O3LVvUda/D0n8ElP4CZfkaAIXLbAr1/Yhz8YOJewBMVcDbsDFEcCqHgRKmOyRUOZFlSUQLmG95ZkybFi7F0sw8kQVhnYVgqjQxgaB4vDMOpNWMYW6TF18RZvu4JOP941d57l2HGXOipsxMlCDm1pKNeLXAxyK5K8SCWhA5kDJOORYR3SzEOGFHGI4GLAESRpSabLsPV7kF55CzYagolHkUVnYUdHYWYrHMknOygM2/+Q92NBlMc8esVNBgp/5502sWzfmscic6Qit++fncvjkRUWYj/PZnuOzZK/4QB/C8DPUJ2/4kIzlvi7Cw5fnO2HWs/2nP7qo/TQVSxDSaTltJagh6MV97nGtU1wnIPCUKUxHhvlMbYYwYoluGAcWXMeNgyRhcMwc28VscUpmKJIokyhDSxrYyNTcoeDY4eb7cNZpP1QEm1mGooVAKNM1lyFivcWGW1akU0omUCbvQVARhAu8baESyKvHUkxC5stwZhJZNFCnt1umpz+M38Qxidtvgh3mhp1XygC1P4MBgsk3zfnPiQdfuEdsjM7E3K9SJfXbE9rgV89Mya+tZGFdlu3cU4cuYq/IoBfhAObh7VVcwTwVJbiVy8c6l/IoC/X3lXuV81Ak8DdSKAzFkRchWaihaDIBKR3odnkqvy0gJgxRRZEBDByATYOYcIDyBYzmDCFoS6qtxZLMvcAr+fNzMWdD47l3ejiRnrl8SJhQ9pP4zI0qwBaCko1oQMmbgiQQ5CBgAwICklO/6G0gGF5FBM2EWywDJNZmLSGLOoBkgNfs+2cenAOPymAn6dCH8GxyGqTRP5nJsI/nh4SM5tZeLdq26PX3ON8NVmHE0XVjU+4CIHz1uAfvTKo1Jy81alvS3B0DHJ5Dip9D+SIhiJ5mzHFKIU2I5BGejc6b9RGefw4f9H7l30I44Exg2llMEy6LJHUzdjiKExZLebDRZ+tdAHMI/MDFTLa7Jp794Bj9c6svHW9q00xC+pw7gPkIqDC16BDxmlG81hkHEPrBMrWIHUCiQgoLcks9LL3luAY2AIkM2R0t5MUGRWA5pswFLY4s2Kx8Gx2fG1p92I6esWNKoX/XACfdaTflPFI0mwcfnt+HL/5phDLm12E/dj+/kvuoNT4BxD4CUaAPSAyvigx5xx+/fxe/HbfaEr9uKAeGeiSlkNLMatBjWjIJISOrkGTq2glJBOPPgudQHjleLrPgb8XThkYgmOcwQQhsiXGGMtMdAzrpcXKhMuAcnpvZireneDo71hnPJJiFqywYcJm7yTk4nno+v48YbPcQsB4pJZQTNRYkYMksy0igkvyFg0eJBmPNIzVGGRZHRnpP+RILqQwQ0swFeXjlQzfgLnaR6+7B7TEfwOLj3oCeU4UZkzysrD4tRfH8Xu3K3xw3Lmwdd1buH8H1lfUexea9CAI/F9NjX/yxijfhQP0qSZbrr3TMehjEMxAN+eh0kmoobegs71FooUxxRQ6pAtN9gWtxYRd0HNLkVZiQje6AEWdImM2mpnosIHMq3RPw10YgakIRQzci3w7ZvddDI4VgKS4LqsHnoCYKtozsLpm7ir0sIRcpputoRXjOEOQKoUOal5k1wMk38pIgKwBI2M4b0UGyNKaF7TIjEXGeCQz29dey0mzY3OwHSTyAXRTHrrmTjqBv5u3Zs9J5P6FATxvgP9helz8xXYs0o0e48hVx9ann/etbOk2Fu1PBfCtd375/Mt9bGW70XPc1HZVa5Eu9IEKLSeA8lzFACpJEUQExSSnqHlQTIu5COG4NkWQxxWTAEYbZDqCiQ3McoxMF5nokSFkPek5A/by3tQ9vsHG73JwLO7MWtxIQI5eglpcgq6HUPG4p/rooAUlJXSWQOlabknaxGe2kYZwSQwnW7DBiO+/nKUWJqohu2q9RelBcmICGWu2p496PdeyFHHgqgoocrv4AH6aUl4ARovMds6xc/hDmeEfvTDRn9YE5bo+PO8eCgz+Rwd8vKAceSkx5/AmHH7l5f3i32zXA3PLjlPlK56FooRY8iBkSctJIuiMVLQEOmBssQTFMrZYnKhkkqW0FsnPHUMWX0cWTuRrkZnoxjG+14uwT7Wd8QC+sLdzfnbBsTsWyd/LCpsRiLkpSKr9LM5DDR8oEjYSWsQIfEZ7CNL/yyw3IOKiFNG7MM672D6ekzmYdAkmM8hqKbLhSWTNS0Vm+yzsxNuwpwZEBLTXAnxo3u2DxS84tkjKtb9z/UjKe1j8Znwdv7ndrRpY8hcI/AMH/A2vel640M75cvnfiPfgf+1nu9rtfBDzSE9nAYMP9UxBLl+EIoGbtJzkCnS011uMBERtFVRAi5FaAWkhd5SnSlwawPi4ooFRGUwSIAtiZJ63WMYWz8F2uNB3IJl7q/O0C46r7lwPbmRRYTNah1qmO7MXcvEtBHtGPIFcSwGdLkArkSuZ2MWi0oaF3cOwHiSdz24bGyIzS97lzuomd7fHYmRzh2CY5/GZ7arQ7oC5NEcX3LF3CMT/PYAf7FD9AS4KiV8+Nyr+YKuLtb2fc+qBOfyscPglABSvKKk5tMB/31l8/uV94vWbHudWHaCbr/gExFFSzbTv4a4bh6HpPteYiVbQAV/GDShzJQ/veFAMAZdC+GTLPFyqYbIGMrkEE2hkcYSMGekwgWnVkfq2xZQV+xGYQth5YIVU+jVNu+C41p2t8MhKSbSyhw25kVQeJ+1n+QqC0QA6GYbWAooAafiTQnHBarqXS4AJYFUAY1ow3t1eRmb3Io0uwpgYGSXSfNLmEExbQ3KA+WTvnXM/Jh3+oQMmixJEL4/G+J9Q+KUXh8X3trKoj15zn3xHbvV/ZuFau+Qvz0Q/LzX+/rlR8edbOe5t2ae7Z8spSGorLrEG+hIUXeiEluFlBMmYD+PoIIO2dUh9DZrsibawBHslBbApG8ox3m1gCIypQkrPJUgLa3ERZmgKhm2KT68oc9+RFS43O6e74LiRO1jGfyq8stZRyLHZ/G2ulqGXQgRKQafSA6SWab54ZVqob3MVB3BZ4jPbnhfJRcuYJBM2JkLasjD1FNnS/o6a7YGVR6PIbbTXZ47/tgMavr927v4ya/N/Golf2Wjr2Ieb7r40xq8K4D8o44oQHhQvO4Ffnh7Db/VDrWcjy2NL23Qp5lRBkVbi0DJ0GkMHBoGZgPJxxUVoTWoOixIKF9rzFQmKC3ByCBnd6EAjnQuRqTmYZhMZ15kXiihd6Kqk2Ls8rnijudsFx42u7K540PGzUHzDe0m0y1Bh4BeubhXxSNJ+RIqAiZt2VrsQtcj4lne+IiGju01wDAmQBMoa0paBaaTI5mKYsUmYVaonA+ZqPzzrDpkQ/1A4/GTZ8KuISS46i18L38RvrtWq4W7nhhrz+PuAr9KJ2iV/QCKAL6YOv9JP7cmNLo8Nb9e5jiTZEVdOQTUZRxyCGp6ASprQUQydBAjIkrACSmdQNs0z0X4sLrwhWBHDZtrHFr21qFJkSYIsHEdapefMzMN4zuIdJCm24Xu+xQ13wXGzN67COZs6kjf6oj7e2CRUcD13tXUTWo1AxzEC1mzTiqSrrQqOZDlkAZDGA2QLxgZICZDkSLoa0jhDVi1H9CTyAV7cD153H4TALzvgA0UCJefhAa8I4Je+Pyb+pDod75tzf805/E8QOTWnElv8Uyj84ksj4oXNTt9t3b6agT4NycoWeiAtVmcxnkjKWIKAyZZAQZOvSG/EZlAuhAjSvOwv5ctV+1i2yTQytQyTMtmSIktDH0/MKBTB0j9ya6fninYFAyzQfDvmbRcct3LXq3Wt8NxIeeUCFCXRyI2k2k+z4EYKlQNkKqHrKXQmoEj9YWY7zcf2ViR/WhZZUFiQBMqoAMl2zXYTZt9hmNOn4HCyUP8ZNLfIOfG+efzVdzog/HdwOFRUbfjM9jsqOV+GxN9zBnUB/BoEPlpSg/IiF0xD4BenR8UfbmXabts+pbVIFsQRSExBTD4NFY9BZYdyF5pcxbHA03N0liGg+2wyaMeCA0rHpXlYJuVaYVxRIyPzIcuQaY00YVyxjmzpMky4iKytnsN66FnfSTNPuAyY13Hb5qwSzL2d5zCYY1drtZ+E9FZkHYKu9tJZ6LFjkNE8tGghkBpBIqGHUui05he/VmwnG67QL+hqZ7mghdEWWStAyn9LV5uZ7WQM2cJFmD2HkHkl8m45+gFa+Aeda4zP4xes8yK7tVL1h3FE56AhKnQgqnEL/ApG8E+nhYgHZsFUXOiylp8v0Wbd1z/rRgil5xGmY7mlSCuRgMgfWosBy/5CCIKiSApgpIdRQ+rd6ABZmCBN9yGNMmQLGUwU5/XQbf5smdQbtJfoDpjkXcvxZiehi4Zx8olc8YeNvmZnoYMgd7VVK0/YQCFgLNLUoNJlBLoBqTJf0eAfArpLyymcbnmLILMEyBAZQiTGIB0i/WccZvgiDOk/hdDuwCZtHrrmDhuJXxYOP9Fu9lWI7BZT87ta4799odFfIvnNLoOO/XvEp9ndb+ESdGMJOgmhIq6LDCFBUS4jIGex6kKzbt1TcxQMgZEJPKWQmSGkrHDJMqThNWTpONLlIWS1lv+x0TNwZ54oCgtKzuIAvTS3dR5u8mC74HiTN7C9e7e4bkHgJYF8LipcbT4ALQTD+6HjOQRCIqAVKRlwZw+jsnVsChAkGYtkGWLT5e62M0hdhNRYpI0RZK1ZmDJps0r5Z8AeiPcuuE8Ig3/sgEepQC6A7zjgv35pTHxzu6ao78epUnM+yc48EEfZ3O1iTstpBtAx6/RTBKWlmJk87OJd6Ch/SSLIA4vS5v27mbCzEmnKsr8UaaiQpgHS2iSyhUsw9YMw+1CEW6ouNC94wNZB3+doEwPsguMmbtaGN61Qf46fhFwqyhBJII80NOOQdLNrCULGmvhwCJFnJZm0cUHe+Y00DathWAJm4zxh4yzSYAmZY/KmhjTJkA3vQTYPmEZZaZM/ILkQ6SA9HF9y6n0/jJ+l/vr3x/E7g3PuXR3+ChI3ZcSS+6DKZIvKEGYagTIILC1Gg4DcWGugOOdBAKQERcDSYlQW2XLLW4xpoJCaFGmcIqtppHSflxq5tTjoJagbfq5u8Ya74NivG16RRWOy4TgFLZjVjqCaGmpPC8HyGAJfhpgiIGC+U0GiTQjFeJPMfMwtjxTRimQHU8YjW8jcEBLrvBxaupAh9dJoMTI+LPUyabPSruFdqajSr2ldddwqXzGfZ8l5jiOoBosDmJgLECQJAmURku5Fa9GDIjmxBgy2+IaHaQpHUDQWRjKkkuWxRTOMJM2QMhu93EIWjMBwni8chsEgJ+du2SRtbaBdcNzafdvgXl2yaEUfm+UG1MghqOacD8QHqgBINQTtXW0BLZoI6G6DVmRB4fAVIXVkMoZxATLbREoL0tLVns+tisYk0gXADAFm+nQXhWOQrMgN3uHbtlk1A130bJkc9RJisnENOtZeoCRIOL9LCIuYovcS+PLz3MWyDj+FM2xiFeecV62QMhNtFJIy4bLMrHQG05hARg/hTHdjq9253falsAuO235Lexywqsc3AUFXe+5pqLGjuRUZUg6NCZthaFe42lJ5cPSZbVI5ynik0LkUl01ytyseQhpapJY/GVKTIc1qSD2JfMInbEwhsuva7Rp2H6Sbm/VqxdRJiMPMQFNbcQiqXkfAggClEaQpgozz2ERoa3kNvmtB6aDdpsAJAmPhQhuVz2Gmker830RfhVkOkdUayHY5izc3bZvdexccN3vHbmb7CgmYCuTMavsyRNZqX8+zlYsxQlJ/WILIHHUqEUgDLUMo0n9cBkmAJPVHpLklSReb7nZLIyFQMnHD+NRQjCxtIFsqrA322D75jrv9+ZXuiHe81P3NTFfHvtVkyzEIUrcojkwvoBVBU3A2qCNIQgSa85flwGhq0FETgQshGVtE9g4Nni84gmKETDlkWQwTSCRWIWHShdZithdJjfSctOJC5/M2uO1/t20ybs2BdsHx1tznzlGqCZsDkKR5MKM5tAQd1aDVeJ7QidFuAAAU7ElEQVS0aSUIJS2OFEGaIRAZAkWQpCVJkHRwhpUSgIk1Mk05Ko3UNZE2NZIaQbKatLlQtNXMGyXtPmQbnfuul9psGVechKq/hiAMoWPOUYBwyCAkKKpaHhphXNEx4cLUGEFRw4qkUGnKs9CeohXy3xRpWeHC+DFdaKpyVypcBi/JttF7vAO32wXH2zEpXWosJwE5exZy4pj/V9cOQS3R1ZYI6GZLmQNjIv1/a0n6T564yUUcNJwh5QMwVnvaTxo4L2TBcsS0niHx5YijyJYvIiuVfyo9tgtVlju7YdKmp7ozroiynn7xHAJqK4YRdMxkS4qwTlDUCKRCyPmxFtrVIZ3x1r4QKi/3449Rnr9KvmK6rJCULnRUQ7qcIis7/vlqqGpizU/27hxteh63uMMuOG7xxm3bbl31tmyaNEGwnIVeCqDDnBwcIEGIFKGsM0WDwAjosIXABrkV6TOeWW5JejebvEhakQES10LqShL5MFJ2dPBJm+l2T5sVEvnuw9fZX6hLRqwRQrfIVQwQqARBEiCUBiFfZIIUHSZcCkoWXWjPNHBePciQ0K/pPts84UJrcSHIky71JtKFEZhLTRiwsdWKdU9AHKj+4Nv2bNzmA+2C422egPbwKyRyKrXIuZI8fAgqnMvd7OUEIYEyShGi5gnk/oEk/cdTf1h0l3/e0Xv14roEyMzFoLpkTI6kNT67nSQGWSmPxqSNL0eceqcJ1bu9qqL6sgIkSdxlZUscQQchgjhFyLgiQVFYRO9U+NDKJ2/R10KXXf4IjLQUCYqWyRaDhAmXYBgJK1xIz6m1kFKVmwmXmUlf2ZKLi5Cnulvyd1ufzl1wvK23v8fgKw+nPH4WcmkIkgrkiyG0ZkabFksDmpZknCEM6cYJr/qTE8kZ38otFnaboxVp6FJbylhxL5tbLnxIXYQkG0G6MNtBEan2tHn3uHE9FHOYbEmorbgfuvUKwmDMJ1pCus7CIDTGS9IF1ng3mv2E4K3FQvldRsicQ8ostKb1LhH7sr8AaZoUZX+vIGPDtemjHWrmuwIRO+C53AXHHTAJq06hU/WnTSxu1KBZghZSEm0UgaCrzQc1QyiiPC7JMjSSyellpwW5mG6dTGEcH1KHVGgkzSbSSCMRdLdtXmmzlCAbOYhs+ix1tisP6x3tahdcVCrmPAHBF9Lc6AqJu6UR6BihpjanRpgoRLKFUIbQykAbC40ahGv5rov+hSQVskQhVbml7rPQQYZ0USMOMmSUFCsTLgVn8d35QtqJz17lnHbBccdOUG8CObmRi/BqLoEX1lUIlchd7ThDlEkEUehpQLRoWLPdnuMkTwhkJUgmGokzSGohksVFpI0ICTUkF2ZgRk4ga7dryJMCZb1OnrwZ9E+X6OzxJyHnPgzVWoIefRBSvoUwzik5PqaYDiGMWggzi9CGeT08qVW+G7aCM4z3sk+QRaok0riFNABiV0ecsQ46QmKHkdBKjyZgatPtsr+B7V8+6EtgvfPfBcf17tDt/r6SMX3iCeB8oR1ZutolgdxphARKVtgQJPmvZEyS8bBcK5F9pUkgd3S1mbQhSNLNjoYQM2nTNEiYuBkqkjZLQMaHeOwobEfWdJAtySoonoKcOgnB+K6PK4bQvJ/Nqwhjh4hxRREgihRClvxZ6QneOTXHQBIUmQSL+dKRPgmWOCZceB9V7kJHMRIvEjGEjD2iyRTwlUvnYdsai/7Fs5uFvt2PWvf4u+C402ZkrfOpcu1OQcwWghaNIqvt45GjCLCASAwhQIaIPeno/mERoQzykjX/HNLSobhBCkP3jxFMzaSNRuyWkTqNhJU2aQ3pyBhSgqTva3z6nU7UeVOmweTbVe5hNek1FEFTEGQpzhNeMIhS4+O5TLYEhsT8wlr0oJjfQ2tSWKuQKYmE4YqYoJgi9mV/AZI0RVqr+XYFKzXv1VroXVDc0U/fLjju6OnpOrkeArtllQZrtZnVpphFo4mQ/EiCI7mRroVIhggCJg4A5a3IAiSzzDf88okD1JAgRkJwBGNlBin/ktSRsRyxrLRp1/W2K212utXzjsH8eQgcg/BxRUBeuwidUIWb9e0tBK0AYT1DlNL6tt7y5r+hDaB8Fjq3FslXZFzREBSZ5CI1J4nQKhMuJkUSxUjT/UiX38rL/qicM3kU5lRHdYufgTsjRDFIz9AmznUXHDdxs3bUpl31vV43EFC1awjoGorYu9lBrBBGhRUJEpXpbrM7Ints51FEJhI8F08RIAtLMrFI+MCLFPFihrQxjtjLoyXI5ps9Km12olvY5UKX8nFLgK7PIfDaiowr6vwepQZREZpgNjrwRG6dk7iLkKu10pf8+Vp2utDOILYZkkgithoJre1WgnRV/5a2IvcuIO6o5+gGJ7MLjoMyU73OszupgFw7cmkWmnJZvsZX5q62z2rXEUIgJEj6h58gSUuSIGlyV9G5olabGWzlqT8xs9rNRSQ2QFJj3W8dKWt+fWZ7JX62s1ztKjXnLNRhtq+YhR7RUCRxyxBRm5bDDuMGUWYRkZrDlweTWSzT5H0xMs9A+zgtK1skYiayyB0lMDqNuMOFPghzAQVnsWxqtRNfHoO89m/Bue+C4y24yX0foqIpOHUaiq72xFHI2asIWpTOojJMjLCuELZoHUUIQ4PQkasnEEhaSID0qW0HlxAPyI9USJ3LuZEEA6ERM9lQy5DOR0hY6lZjj+2VzGspjHD7EgwlDapU4p6GXBiB9krcTQSjEcI4jyvWSisRsc/yky/KF0YuOFyU/FmVJ69kExktRRAYM8RMYi0ueQ5j7Mv+Che6TeTeFYjo+7Lv9wC74NjvO3yrjt9pRbY7IrKZU5mFpasNXcQiDaJQIqQryaoPCWiT5JltliKaIqtdUn9cgkTUfFbbg6TL8qSNiZAwHjkxgezUWdg2P5KVNp+/xWVvzuU9nXkN01B3UzczgFqi+8xrHEEYLyKqKUSJRY1xRV+3nle6eBfaU3OowM6ElfTWYuoSFm6ipRWSeAlx2MgtRhK563WkZRZ6Ej6uuCsNd6vWfJ/H2QXHPt/gW374LlfbN40HVAPQS9fzKhsZIBSMs0mEtohHOpbBBZ5YHljdjkd6yX4mIJxC5lKkMIhFHbFr5iC5FCKpzyGhhmT9IszSELJbKpjQFVc82oTKfgQiuoyAhHlazS1WES0girTP4Hv3mf+yTYEHRQutQjCFL2yWg2IaIlGpl39LEKHF66b7HNGNTvPrZSfIRq/r3XWhb/my78eAu+DYj7u6E45ZAQ2q/swAamIG8motB8hWLosW1vjoq5xAHkhEBEkfj2RmO4B0CjKgmEWWg2RKVztB6khXaSHGEGIsFdZkUY64DGThBdh9V2BO59Sf7e+Z3OslcAGq0cgFOxhvbc4hUnwRKESk5aQSkYhzDqgIvOIRY655XJH9w9mjJ8sVcxD6uKL/QR0ts5gLRJCm06znPVzGJmHOnCr6QrOq6HO7faF3wtLfrnPYBcftupM78TgVabQnPgdxvuiISMLzyEEo/YYHSdYHU/EnigiOBhGTEwgLlRkmbSjSSoYkyZGFFUl3k7FI1BCHFrGwiFsBYrOINItyodZV7uZ2gOQNwgf1JoJwH3STvESSt3NqTg76MWqG9ByqcVto2elCGyeLDLRFEki0vFBHhpjcT7rQrB66mCGrxcjYN7zo9riiienT2buZ6J34GGz1nHbBcat3btD2qwha4Cwks7dNutvXciuLziNdbUc3W+UEcsHMtkWkaUnS1S74kcaBwT3DzLaiejVB0iL2PwSVXH0mMQeQ1C/natYElKJdw9ZFdiuJJ5yGOjqVtz0libsZ5DXQQuegyBpoWNR4/p6zyGSL9Qrr0gvP0otmFhp5Btrx3CVi7z6X1iKvgYmnK8iiupcVMxeuwGABDl+B3bUUB+0h2Nz57oLj5u7XgG/dUa+dC1oU8Ug2+yLfj1ltWo41hdBJRJYAw9gkuykTXFRRipgVrihjkaUVqQpwLJI2yBDbIj7nSeRLRTyyo2PeBqytbspSIQ7RqkHXSG5nHJWJJo1I1BDZedTpShMYSV0iKBa8TvbDdqQs+Qw0ky10oaW3fFs831iiZchbjJG0XWj24jkLc4Yai2Xb2105sQF/FtY//V1wXP8e3XlbrKVZSFk0ciMLcV1akU6hhmHmanOwoQVmjAdSr3LttSMljMotMHL/EtJ/BBM3Gq04QFwrqEBZmvMj221FO9rHrgGSPfiKzUtQdKFb+73gbNRgzJTuc+YtRYK5P1cCuk+4kKbEmkdWt8SwlkEE6/Utk1QiDmgpSrToRjPpwrBANIusVUfas6nVrvt85z0TPa5oFxzfFdO8xkV21Rozq01Xu34dARXImbAh0Lg0z+46g5pmVlsgDAoNSYe8XpsgWXAjM8e6bAJlhFboECckkhOAQiQLQ4hrV5GNxcjmShGGXkmbzzuJz/njCpyGPDwFRVAkLWk5Rjg26lWJonAJNQ/geQY6d6OLrLsXnqULLWGtyQnuMucqMgzQygxa1FiEzq1FGyImh7OshfYuNAUi2skWfzq7JX/vkmdmFxzfJRN9w8ssQNL3sild7cvQbDG6nFuRvqzOxyJNYZkZRFqskMil8lU2wtJlzVXIfXldxupsJjjyeGQLAWJrkQxnSJoGprUXKV1Wdkb0HMHKx3doBNTCc9Ajk1CMK8oYkS/3U4hsC/U0QqSL2CIEIsfqFuvlxHzVD61aHx8lWAdopQmSIEIrVWgytmgMknqIOL2KdOQ9SOdmYMbmYXz9eKnIvZtseVc+Jbvg+K6c9q6L7pEBpoxXC5DhNYThMrTYg9DNI0IjtyZtK3dhtURoat59DShqIZm0yby/zBYB7G6TZBHlLPwPs9stGeRgyeZfIyRTjyObY6uGadjoaA6QMYqOjBE0q3w0dSvZcCxFLTSoxSTYNHJgpCWrOX6KgC40BxdBPn4mkUqHJCM4t9AKh9GSCs2E1uIS0izG/9/elezGcUPBItmrFu9GYgQIcsjJV51880/kg/w9+ZCcfMzNQHIQ4hhBDMuyppvNpY167PaMFySApR54ZngQIAgY9vQTUeBj1asaNoXct58jSlzEzphq5A28VAUyOC5V2V1c91OQfA797xnMLeZqA8XF3yKREeJjZrVHjaasUIlUJiapjGgHiykuIGAkYUP3Gk/ChiBlYXWDjlKgVQnbhpRpU0REExM4OgPtNTRF3HiL2paoNe8VDRoX0TaTmFscdMikcxbaCChLfo5M9kwMNIGx1OjQw5o76N7Rlq1Ezxb60qeIiPv4JOkv3yvu4g6+0e+cwfFGy7lHi224/tAQ9tU5ClvDtGSHzYeIBhrB1nZqtQ3nlamZDMJuM9Nm9o/kfV+IHtQT0vtQdJGe7XYibuQUOTQI5goRR4DvYU4NCksZDgmWgHoc0BYajaeYm0a0EeWoxFKMc4piJaY1HE1m2UILAx3QK43eevR1IfeedngNb3/EUP6GeP6E51wB5CQxyqC4R5v4eq+SwfF69dvvT6+zbIQUmXWFnFcuKpScrFm9RV2fyEmSxMh8J0n3n1pa7UJE5DLzzFabACaEyChu2QMBjPeBlNSYUuQ14u4THAzt1WgIUc4MtFoz5gKKPKGmGfA4YiJbpjtOFdBrjc6RdHGw4y1YHzD0t+Cqlwh/PYIHp1ueZlDc70389W+XwfHra3c4n/wf6Y/w0gXqOJM1POlNzDF1hpT/yJRN8o9cmzp4eEWXmyT/4d1gYEAVHXHGElqXKHxIQnQRpDtUI70qp4mdGDByDpp6Re8T4aIselWjUwadXcE2BvbdfdgGydH8FCkbZ29iHw5nF279TTM4br3ku/rADQE5g+6fQl+cwxxfoei+TwJyNbHabINNQMv7SJI2Mq9dJPNYybOZHLWFTOaUjYabbdIo0qb8hjIcRQfuAgXF5yLkNnJSlEArNSBy5C+MGEy6W+xDQCdtNO8z38Ey7a+ZpnSuHsB/EHLPp8XMQu/qZtzK987guJUy79FDNlrtWWojI3yPUHSXKEuaOjjUFdvsAo0AZJU0kjxhap78yCpztplQR2ZZI4YwmVOwVGmOWysHQ+MLTHpFwTLaRFAmNErKXx9JtAywbJ8VfzdJzH1Swcos9D34IyC8+Nh8Ns9B79GWXOpVMjguVdl9X3fNbOuzydBijmmg648iq12ilhFEg3bs0crkik76SERU1CQqOpFHAUqFOMXImmQfNsvLVZha8UIsxGS6BSNsVFgpnhY1+uEYfcv7xYCBhEx/F+7oBcLtC8TnWci977txkffL4LhIWQ9k0Q3pzy+AktjYDe9IttrdgLqly890iiTbzFY7OrT6GAXdgBRQkGChRlETKMvkAMTTJAXczG0REof3ihF9qEQG1OsGq/ECVp2gj5fJJKJ18PYB3GfSnNxCH8imvLnXzOB4c7U87JU2XbgB/eQcht6RV1Vyy2l5ijSJ1Y4RrYz8ESg3GGieIucWmsQMg78o4jaMaqD8Z0z3imyfRchdoh8bWP92skj7A/7umbj/zCLuLM057F15rbfP4Hit8uUPf1SBjVZ7lv7M3pGrl6hOS1SWJhYOTamFqGn5Q4AsGINKr0XeMSbChsw17xcHT2CkJpJMtEevW3TUK86uP6v1veKcqf1thX3lbbKTFcjguJP/tm/8S2+QNmdzq/3P2qFbpD+TJnI6QYrIm6l/ZKlJac9MtqceMpnp0oBWZrMpHHcBrhvgbj+Ee5EE3Ms4jn/jpc5fb7kKZHBcrrYHvvIXvCMp/WGr3aMs7qI60SiDQ+MY9NXJ7HQRAV2WEzgOkl1DsbjYi40lrHsDd/IDBua3iIFuFnIf+D5b7vUzOC5X27wyK7DZagP6Z0CT1T56ndy7aVRL/8jiCIUnKUMPH0p2KkTTI/oIL0l/DVzt4WknxrzsySAi4lnObskbbZkKZHBcpq551U8rsCn9SbZoH0ByuAfTXMI4vU49NCMif8oLRHsEz3tFhnYdrxB/f5wJl7zBlq9ABsfla5yfMFfgS9KfP2H8T1D3XkFbAx3eQJk7GIsHGM0rjK+/Q2yA+NnInxwvs/Fs3lzLVSCD43K1zSv/VwVm6c+vUHgIhVMo4a0ff8x/T0SLNOjZNSdvqW1WIIPjNqudn/WFCkzEzTOoKRbhs4Zc/pBPiXn3bLkC7wGkZRgc8eQNbwAAAABJRU5ErkJggg==";var Qc=Object.defineProperty,Gf=Object.defineProperties,Ed=Object.getOwnPropertyDescriptors,ff=Object.getOwnPropertySymbols,Sf=Object.prototype.hasOwnProperty,Fh=Object.prototype.propertyIsEnumerable,nh=(Oe,Fe,Me)=>Fe in Oe?Qc(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,kd=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Sf.call(Fe,Me)&&nh(Oe,Me,Fe[Me]);if(ff)for(var Me of ff(Fe))Fh.call(Fe,Me)&&nh(Oe,Me,Fe[Me]);return Oe},su=(Oe,Fe)=>Gf(Oe,Ed(Fe)),y0=({className:Oe,style:Fe={},title:Me="",childNode:jt=[],knowledgeNode:Mn=[]})=>{const Tr="rem",Fr=[{position:"absolute",zIndex:2,bottom:112,left:44},{position:"absolute",zIndex:3,bottom:94,left:74},{position:"absolute",zIndex:4,bottom:78,left:104},{position:"absolute",zIndex:5,bottom:66,left:136},{position:"absolute",zIndex:6,bottom:82,left:168},{position:"absolute",zIndex:7,bottom:104,left:202},{position:"absolute",zIndex:8,bottom:122,left:166}],An=[{position:"absolute",zIndex:10,bottom:166,left:66},{position:"absolute",zIndex:11,bottom:148,left:120},{position:"absolute",zIndex:12,bottom:150,left:180},{position:"absolute",zIndex:13,bottom:188,left:164},{position:"absolute",zIndex:14,bottom:192,left:114}],_t=(qi="")=>{if(!qi)return"-";let aa=3;return/[\u4e00-\u9fff]/.test(qi)||(aa=7),(qi==null?void 0:qi.length)>=aa?(qi==null?void 0:qi.slice(0,aa-1))+"...":qi},Kn=()=>(Array.isArray(Mn)?Mn.slice(0,7):Array(7).fill("\u77E5\u8BC6\u70B9")).map((ca,Ra)=>{const Ei=Fr[Ra],Si=su(kd({},Ei),{bottom:`${Ei.bottom}${Tr}`,left:`${Ei.left}${Tr}`});return se.createElement("div",{key:Ra,style:Si,className:qd.smallBallGather},se.createElement("div",{className:qd.smallBall},se.createElement("b",null,_t(ca))),se.createElement("div",{className:qd.smallBallDish}))}),wr=()=>(Array.isArray(jt)?jt.slice(0,5):Array(5).fill("\u5B50\u8282\u70B9")).map((ca,Ra)=>{const Ei=An[Ra],Si=su(kd({},Ei),{bottom:`${Ei.bottom}${Tr}`,left:`${Ei.left}${Tr}`});return se.createElement("div",{key:Ra,style:Si,className:qd.middleBall},se.createElement("div",null,se.createElement("b",null,_t(ca))))}),ra={position:"absolute",zIndex:1,bottom:0,width:"100%"};return se.createElement("div",{className:hr()(qd.box,Oe),style:Fe},se.createElement("img",{className:qd.pedestal,style:ra,src:$u}),se.createElement("img",{className:qd.pedestalHover,style:ra,src:sl}),Kn(),se.createElement("div",{style:{position:"absolute",zIndex:9,bottom:138+Tr,left:"50%",transform:"translateX(-50%)"},className:qd.middleBallDish}),wr(),se.createElement("div",{style:{position:"absolute",zIndex:15,bottom:214+Tr,left:"50%",transform:"translateX(-50%)"},className:qd.largeBallDish}),se.createElement("div",{style:{position:"absolute",zIndex:16,bottom:234+Tr,left:120+Tr},className:qd.largeBall},se.createElement("b",null,_t(Me))),se.createElement("img",{style:su(kd({},ra),{zIndex:17}),className:qd.spectrum,src:dl}),se.createElement("img",{style:su(kd({},ra),{zIndex:17}),className:qd.spectrumHover,src:Wu}),se.createElement("div",{title:Me,style:{position:"absolute",zIndex:18,bottom:304+Tr,left:0,fontSize:24+Tr,width:"100%",textAlign:"center"},className:"c-white blod"},(0,Xt.Pq)(Me,9)))},kf=Object.defineProperty,rh=Object.defineProperties,ih=Object.getOwnPropertyDescriptors,o0=Object.getOwnPropertySymbols,b0=Object.prototype.hasOwnProperty,s0=Object.prototype.propertyIsEnumerable,Ch=(Oe,Fe,Me)=>Fe in Oe?kf(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,x0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))b0.call(Fe,Me)&&Ch(Oe,Me,Fe[Me]);if(o0)for(var Me of o0(Fe))s0.call(Fe,Me)&&Ch(Oe,Me,Fe[Me]);return Oe},l0=(Oe,Fe)=>rh(Oe,ih(Fe));function E0(Oe){const Fe=new Map,Me=[];return Oe.nodes.forEach(jt=>{const Mn=l0(x0({},jt.properties),{children:[]});Fe.set(Mn.uuid,Mn)}),Oe.relationships.forEach(jt=>{const Mn=Fe.get(jt.startNodeUuid),Tr=Fe.get(jt.endNodeUuid);Mn&&Tr&&Mn.children.push(Tr)}),Oe.nodes.forEach(jt=>{const Mn=jt.properties;if(!Oe.relationships.some(An=>An.startNodeUuid===Mn.uuid||An.endNodeUuid===Mn.uuid))return;Oe.relationships.some(An=>An.endNodeUuid===Mn.uuid)||Me.push(Fe.get(Mn.uuid))}),Me.length===1?Me[0]:Me}function Qh(Oe,Fe){const Me=new Set,jt=[];return Oe.forEach(Mn=>{const Tr=Mn[Fe[0]],Fr=Mn[Fe[1]];if(!Tr||!Fr)return;const An=`${Tr}-${Fr}`,_t=`${Fr}-${Tr}`;Tr!==Fr&&!Me.has(An)&&!Me.has(_t)&&(jt.push(Mn),Me.add(An),Me.add(_t))}),jt}const Yh=(Oe,Fe)=>{const Me=Oe==null?void 0:Oe.map(Mn=>{const Tr=Fr=>{let An=[Fr.uuid];return Fr.children.forEach(_t=>{An=An.concat(Tr(_t))}),An};return Tr(Mn)});return Fe.map(Mn=>{let Tr,Fr;return Me.forEach(An=>{An.includes(Mn.startNodeUuid)&&(Tr=An[0]),An.includes(Mn.endNodeUuid)&&(Fr=An[0])}),l0(x0({},Mn),{firstStartNodeUuid:Tr,firstEndNodeUuid:Fr})})};var Bu=he(59301),w0=({data:Oe})=>{const Fe=(0,se.useRef)(),Me=(0,se.useRef)();function jt(Fr,An,_t){let Kn,wr;switch(An){case"top":Kn=Math.ceil(Fr.left+Fr.width/2-_t.left),wr=Math.ceil(Fr.top-_t.top);break;case"bottom":Kn=Math.ceil(Fr.left+Fr.width/2-_t.left),wr=Math.ceil(Fr.bottom-_t.top+15);break;case"left":Kn=Math.ceil(Fr.left-_t.left-10),wr=Math.ceil(Fr.top+Fr.height/2-_t.top+80);break;case"right":Kn=Math.ceil(Fr.right-_t.left+10),wr=Math.ceil(Fr.top+Fr.height/2-_t.top+50);break}return{x:Kn,y:wr}}function Mn(Fr,An){const _t={x:parseInt(Fr.left+Fr.width/2),y:parseInt(Fr.top+Fr.height/2)},Kn={x:parseInt(An.left+An.width/2),y:parseInt(An.top+An.height/2)},wr=Kn.x-_t.x,ra=Kn.y-_t.y;let qi,aa;return Math.abs(wr)>Math.abs(ra)?(qi=wr>0?"right":"left",aa=wr>0?"left":"right"):(qi=ra>0?"bottom":"top",aa=ra>0?"top":"bottom"),{startEdge:qi,endEdge:aa}}function Tr(){let Fr=Oe;if(!(Fr!=null&&Fr.length))return;const An=document.getElementById("lineContainer"),_t=document.getElementById("parentContainer").getBoundingClientRect();An.querySelectorAll("line").forEach(Kn=>Kn.remove()),Fr.forEach(Kn=>{const wr=document.getElementById(Kn.from),ra=document.getElementById(Kn.to),qi=wr.getBoundingClientRect(),aa=ra.getBoundingClientRect();let{startEdge:ca,endEdge:Ra}=Kn;if(!ca||!Ra){const Sa=Mn(qi,aa);ca=ca||Sa.startEdge,Ra=Ra||Sa.endEdge}const Ei=jt(qi,ca,_t),Si=jt(aa,Ra,_t),ba=document.createElementNS("http://www.w3.org/2000/svg","line");if(ba.setAttribute("x1",Ei.x+Kn.offsetStart.x),ba.setAttribute("y1",Ei.y+Kn.offsetStart.y),ba.setAttribute("x2",Ei.x+Kn.offsetStart.x+.01),ba.setAttribute("y2",Ei.y+Kn.offsetStart.y),ba.setAttribute("stroke",`url(#${Kn.gradient})`),ba.setAttribute("stroke-width","2"),Kn.dashed&&ba.setAttribute("stroke-dasharray","5, 5"),Kn.arrow==="start"?ba.setAttribute("marker-start",Kn!=null&&Kn.animated?"url(#triangle-start-h)":"url(#triangle-start)"):Kn.arrow==="end"?ba.setAttribute("marker-end",Kn!=null&&Kn.animated?"url(#triangle-end-h)":"url(#triangle-end)"):Kn.arrow==="both"&&(ba.setAttribute("marker-start",Kn!=null&&Kn.animated?"url(#triangle-start-h)":"url(#triangle-start)"),ba.setAttribute("marker-end",Kn!=null&&Kn.animated?"url(#triangle-end-h)":"url(#triangle-end)")),Kn.animated){ba.classList.add("dashed-line");const Sa=document.createElementNS("http://www.w3.org/2000/svg","animate");Sa.setAttribute("attributeName","x2"),Sa.setAttribute("from",Ei.x+Kn.offsetStart.x),Sa.setAttribute("to",Si.x+Kn.offsetEnd.x+.01),Sa.setAttribute("dur","1s"),Sa.setAttribute("fill","freeze"),ba.appendChild(Sa);const Uo=document.createElementNS("http://www.w3.org/2000/svg","animate");Uo.setAttribute("attributeName","y2"),Uo.setAttribute("from",Ei.y+Kn.offsetStart.y),Uo.setAttribute("to",Si.y+Kn.offsetEnd.y),Uo.setAttribute("dur","1s"),Uo.setAttribute("fill","freeze"),ba.appendChild(Uo)}else ba.setAttribute("x2",Si.x+Kn.offsetEnd.x+.01),ba.setAttribute("y2",Si.y+Kn.offsetEnd.y);An.appendChild(ba)})}return(0,se.useEffect)(()=>{Oe!=null&&Oe.length&&Tr()},[Oe]),(0,se.useEffect)(()=>(window.addEventListener("resize",()=>Tr),window.addEventListener("scroll",()=>Tr),()=>{window.removeEventListener("resize",Tr),window.removeEventListener("scroll",Tr)}),[]),Bu.createElement(Bu.Fragment,null,Bu.createElement("svg",{id:"lineContainer",style:{width:"100%",height:"100%",position:"absolute",top:0,left:0}}),Bu.createElement("svg",null,Bu.createElement("defs",null,Bu.createElement("linearGradient",{id:"gradient1",x1:"0%",y1:"0%",x2:"0%",y2:"100%"},Bu.createElement("stop",{"stop-color":"#42BECD",offset:"0%"}),Bu.createElement("stop",{"stop-color":"#3C30C6",offset:"100%"})),Bu.createElement("linearGradient",{id:"gradient2",x1:"0%",y1:"0%",x2:"100%",y2:"100%"},Bu.createElement("stop",{"stop-color":"#2DE1FD",offset:"0%"}),Bu.createElement("stop",{"stop-color":"#C7FFB0",offset:"100%"})),Bu.createElement("marker",{id:"triangle-start",viewBox:"0 0 10 10",refX:"2",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 10 0 L 0 5 L 10 10 z",fill:"url(#gradient1)"})),Bu.createElement("marker",{id:"triangle-end",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"url(#gradient1)"})),Bu.createElement("marker",{id:"triangle-start-h",viewBox:"0 0 10 10",refX:"2",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 10 0 L 0 5 L 10 10 z",fill:"url(#gradient2)"})),Bu.createElement("marker",{id:"triangle-end-h",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto"},Bu.createElement("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"url(#gradient2)"})))))},ah=he(61485),cp=Object.defineProperty,u0=Object.defineProperties,dp=Object.getOwnPropertyDescriptors,Oc=Object.getOwnPropertySymbols,oh=Object.prototype.hasOwnProperty,vh=Object.prototype.propertyIsEnumerable,Lf=(Oe,Fe,Me)=>Fe in Oe?cp(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,hf=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))oh.call(Fe,Me)&&Lf(Oe,Me,Fe[Me]);if(Oc)for(var Me of Oc(Fe))vh.call(Fe,Me)&&Lf(Oe,Me,Fe[Me]);return Oe},ee=(Oe,Fe)=>u0(Oe,dp(Fe)),ae=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())}),ce=({subjectId:Oe,setActivated:Fe,onAddSuccess:Me,settpacti:jt})=>{const Mn=(0,je.useSelector)(Gr=>Gr),{pathsDetail:{detail:Tr={}}}=Mn,[Fr]=Ze.default.useForm(),[An,_t]=(0,se.useState)(""),[Kn,wr]=(0,se.useState)(!1),[ra,qi]=(0,se.useState)(!0),[aa,ca]=(0,se.useState)(!1),[Ra,Ei]=(0,se.useState)([]),[Si,ba]=(0,se.useState)([]),[Sa,Uo]=(0,se.useState)(null),[Ua,Oa]=(0,se.useState)(),xo=(0,se.useRef)(),di=(0,se.useRef)();let Ca=(0,se.useRef)().current,va=(0,se.useRef)().current,ro=(0,se.useRef)(!1).current;const Pa=Tr==null?void 0:Tr.can_managed;(0,se.useEffect)(()=>{Oe&&rl()},[Oe]);const rl=()=>ae(void 0,null,function*(){var Gr,so,Ti,oa,Ea;qi(!0);const Yo=yield(0,Ot.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{depth:-1,subject_id:Oe}});if(Yo.status===0){_t((oa=(Ti=(so=(Gr=Yo==null?void 0:Yo.data)==null?void 0:Gr.nodes)==null?void 0:so[0])==null?void 0:Ti.properties)==null?void 0:oa.uuid);const Eo=((Ea=Yo==null?void 0:Yo.data)==null?void 0:Ea.relationships)||[];let Ss=[],_s=[];Eo==null||Eo.forEach(Hl=>{["\u5173\u8054"].includes(Hl.type)?Ss.push(Hl):["\u5305\u542B"].includes(Hl.type)&&_s.push(Hl)}),Ss=Qh(Ss,["startNodeUuid","endNodeUuid"]);const il=ee(hf({},Yo==null?void 0:Yo.data),{relationships:_s}),Ks=E0(il);let Kl=Yh((Ks==null?void 0:Ks.children)||[],Ss);console.log(Kl,3),Kl=Qh(Kl,["firstStartNodeUuid","firstEndNodeUuid"]),Ei((Ks==null?void 0:Ks.children)||[]),ba(Kl),console.log(Kl,Ks==null?void 0:Ks.children,222)}qi(!1)});(0,se.useEffect)(()=>{Si!=null&&Si.length&&Oa(Si.map(Gr=>({from:Gr.firstStartNodeUuid,to:Gr.firstEndNodeUuid,animated:!1,dashed:!0,arrow:"both",offsetStart:{x:0,y:0},offsetEnd:{x:0,y:1},gradient:"gradient1"})))},[Si]),(0,se.useEffect)(()=>{var Gr;Ua!=null&&Ua.length&&((Gr=Ua==null?void 0:Ua.map)==null||Gr.call(Ua,so=>{so.animated=so.from===Sa||so.to===Sa,so.gradient=so.from===Sa||so.to===Sa?"gradient2":"gradient1"}),Oa([...Ua]))},[Sa]);function xl(Gr){var so,Ti;if(!ro)return;const oa=Gr.pageY-Ca;(Ti=(so=xo.current)==null?void 0:so.scrollTo)==null||Ti.call(so,0,va-oa)}function Xo(Gr){var so;ro=!0,Ca=Gr.pageY,va=((so=xo.current)==null?void 0:so.scrollTop)||0}function _l(Gr){ro=!1}(0,se.useEffect)(()=>(document.addEventListener("mousedown",Xo),document.addEventListener("mousemove",xl),document.addEventListener("mouseup",_l),()=>{document.removeEventListener("mouseup",_l),document.removeEventListener("mousemove",xl),document.removeEventListener("mousedown",Xo)}),[]);const ts=Gr=>ae(void 0,null,function*(){const{nodeType:so,description:Ti,name:oa,tags:Ea}=Gr;ca(!0);const Yo=yield(0,Ot.ZP)("/api/knowledge/v2/add_node.json",{method:"POST",body:{label:"\u56FE\u8C31",subject_id:Oe,properties:{description:Ti,rootNodeUuid:An,name:oa,nodeType:so[0],tags:(Ea==null?void 0:Ea.join("\uFF0C"))||"",color:"1"},relationships:[{startNodeUuid:An,type:"\u5305\u542B"}]}});(Yo==null?void 0:Yo.status)===0&&(wr(!1),rl(),Me()),ca(!1)}),ko=()=>{const Gr=[],so=Ra==null?void 0:Ra.map((oa,Ea)=>{var Yo;let Eo;const Ss=Ea+1,_s=Gr.length-3,il=Gr[_s];Ss%3===1&&(Eo={top:il!==void 0?`${parseFloat(il==null?void 0:il.top)+600}rem`:"100rem",left:"50%",marginLeft:"-146rem"}),Ss%3===2&&(Eo={top:il!==void 0?`${parseFloat(il==null?void 0:il.top)+600}rem`:"380rem",left:0}),Ss%3===0&&(Eo={top:il!==void 0?`${parseFloat(il==null?void 0:il.top)+600}rem`:"380rem",right:0}),Gr.push(Eo);let Ks=[],Kl=(Yo=oa==null?void 0:oa.children)==null?void 0:Yo.map(Hl=>{var Hu;return Hl!=null&&Hl.children&&((Hu=Hl==null?void 0:Hl.children)==null||Hu.forEach(Wc=>{Ks.push(Wc.name)})),Hl.name});return Kl.length>5&&(Kl[0]="..."),Ks.length>7&&(Ks[0]="..."),se.createElement("div",{className:Pf.listItem,key:Ea,onMouseEnter:()=>Uo(oa==null?void 0:oa.uuid),onMouseLeave:()=>Uo(null),id:oa==null?void 0:oa.uuid,onClick:()=>{Fe(oa==null?void 0:oa.uuid),jt(oa==null?void 0:oa.uuid)},style:hf({position:"absolute",zIndex:10},Eo)},se.createElement(y0,{childNode:Kl,knowledgeNode:Ks,title:oa==null?void 0:oa.name}))}),Ti=parseFloat(Gr[Gr.length-1].top)+352+80+"rem";return se.createElement("div",{ref:di,style:{height:Ti}},so)};return se.createElement(lo.Z,null,se.createElement("div",{className:Pf.wrap},ra&&se.createElement(vt.Z,{style:{width:"100%",marginTop:"300rem"},spinning:ra}),!ra&&se.createElement(se.Fragment,null,Pa&&se.createElement("div",{className:Pf.add,onClick:()=>wr(!0)},se.createElement("i",{className:"iconfont icon-tianjiatixing"})),se.createElement("span",{className:Pf.tupugx,onClick:()=>{let Gr=localStorage.getItem("tpuuid");Fe(Gr),jt(Gr)}},"\u8FD4\u56DE"),Ra!=null&&Ra.length?se.createElement("div",{className:Pf.dimensionalBall,ref:xo},se.createElement("div",{className:Pf.archer,id:"parentContainer"},ko(),se.createElement(w0,{data:Ua}))):se.createElement(qa.Z,{text:"\u6682\u65E0\u56FE\u8C31\uFF0C\u7ACB\u5373\u65B0\u5EFA\u4E00\u4E2A\u56FE\u8C31\u5427\uFF5E",textColor:"#fff",buttonText:Pa&&"\u65B0\u5EFA\u56FE\u8C31",onClick:()=>wr(!0)})),se.createElement(Bt.default,{open:Kn,centered:!0,width:"1000rem",okText:"\u4FDD\u5B58",onCancel:()=>wr(!1),cancelText:"\u53D6\u6D88",afterClose:()=>{Fr.resetFields()},confirmLoading:aa,onOk:()=>Fr.submit(),title:"\u65B0\u589E\u77E5\u8BC6\u56FE\u8C31"},se.createElement("div",{className:Pf.modal},se.createElement("div",{className:Pf.mHead},"\u8282\u70B9\u5C5E\u6027"),se.createElement(Ze.default,{form:Fr,scrollToFirstError:!0,layout:"horizontal",colon:!1,size:"large",labelCol:{flex:"110rem"},onFinish:ts,className:Pf.form},se.createElement(Ze.default.Item,{label:"\u56FE\u8C31\u540D\u79F0",name:"name",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u8282\u70B9\u540D\u79F0"},{type:"string",max:60,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},se.createElement(Et.default,{maxLength:60,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),se.createElement(Ze.default.Item,{label:"\u7B80\u4ECB",name:"description",rules:[{type:"string",max:5e3,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},se.createElement(Et.default.TextArea,{maxLength:5e3,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),se.createElement(Ze.default.Item,{className:Pf.mType,label:se.createElement("span",null,"\u56FE\u8C31\u7C7B\u578B ",se.createElement(Bn.Z,{title:"\u5F53\u524D\u77E5\u8BC6\u56FE\u8C31\u7684\u7C7B\u578B\uFF0C\u5982\uFF1A\u5927\u7EB2\u56FE\u8C31\u3001\u80FD\u529B\u56FE\u8C31"},se.createElement(ah.Z,null))),name:"nodeType",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u8282\u70B9\u7C7B\u578B"}]},se.createElement(ot.Z,{subjectId:Oe,type:1})))))))},me={statistics:"statistics___BP4qi",noUnfold:"noUnfold___EpqXR",wrapBox:"wrapBox___TsFlb",scrollBox:"scrollBox___Oh4zJ",content:"content___NRQFH",title:"title___z20Sn",box:"box___k6Eep",left:"left___Gnxfc",right:"right___rNC9V",head:"head___mT3Wl",radio:"radio___sjK3F",active:"active___oX7gd",average:"average___KVA2l",li:"li____NnY1",yellow:"yellow___CCujs",blue:"blue___m_425",lineTitle:"lineTitle___qo6vf",echartsTwo:"echartsTwo___aC24D",echartsThree:"echartsThree___Z2Q2A",unfold:"unfold___VUl4t",select:"select___dM1mS"},Se="data:image/png;base64,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",Qe="data:image/png;base64,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",ct="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAsCAYAAAA5KtvpAAAAAXNSR0IArs4c6QAABFJJREFUaEPtml9MW1Ucxz+nlxbaUkYvYjdENG7RiEg6jNGQ+aIx08SE6IvZxGS+qGGPPjnj2+J8MIuJMVk00Zgg0zc1Rpm+Gf+M+GdkZKhT4gyMjnWllJWWtrf3mNPLHJcWaBmlXcMvaV96fufez/n+fuf8zjkV/a8ZBzB5R4JO7VpICHlo8A3nt6L/VWNSIttrl9UiEzAyeMz5sOg/khmTkq7aBxbfDB6r2y8OHZFBjzf7rt5Mb61ChyOcWkxrhz86KiaEggxF5Aum5INaBRaCJ9taxPBSaG8D15zQVaVwnQaao/QxlhLSxnU/1Y+RLdxP1QA7BAT8IHIzSekWjUMyBS1NUO+EuTgkUvn9lB84mwVNK4pA921c4bkFS1V/IzS4QA3AYroCwM2nBpnf14fp9RUFvRmNVLSYskIh3XryOMJIc+WZw1sKvdrAlT2kFbAzPEVGDxB5eqDi0EUDzyetSWC1UFk+oq74LPqFURrD/9AUOo8jm8n9nNwR4M/HBzDc5Q1vhwO8LvC5N5jDV5MQXVg/u1wLUe789TP8F88hpFnQIdkUYPyxATJlhlYPb/WBu97+GkUpHJ6HZIEZb3lX/qkx9vw0hJYpsBasQE807+LsE6+AkqKM1tgAeuMGgC/HYNGKyoKmFL37uw9XVXW5k3Ro/NX7PLMd3WVEtbr21kPLiuwpSuG1gLVUguCXb+JMxdcF2ErYsgHfNfIpt06M5GANl4doWyfzgT25HM3U+9h9eghP7BKbBauKi08+t9eNDg0O9uUXN5uusGdumu6v3iLT4ONCTx+RjmBeXt7/9XE8sdCmhbECPjG4rHAG6jTBy/1bANx+dhjPXIiJh54lW+8pGNJdw28z3floSTkbnoVozF4qteoC/w4wDDjxcYWAO377gsngU8g1ZltP9CIJ/23r5vfyBj/8YnLmnH1Z631Ao6dL5OrlyihsmjiyBqbTVRKMamxm4cy4XUG1LQzeZ22V1gSupMIlky45pDPw3pA9LJ11gpees/KwOhVeh/bvfyVTIbuKu+8Q3L5LcEPA1arw9z+bjI7b83DfgxrBzhsErlgOAwsJu8xqH+peKtjLBlwphVNpeP+kPQ9dTsGLB608LBtwpRTeBga2Fa6lSaumQ3r2KsRX7OtvBuAmNzR7N3AAkMnCzJz9PKvagVWpurM5/5y7qAMANUZZE1KZ69DqfH30D3slpfYQe++16uHJS3A5Yv+9PSAI3GL1Nfr7Cl8Bezst36kZmLlS2Nc08+vw3HOXfJW/ur1wu0DVBSutaOCN1s3V5rcNvNaFuAoVV121aZb/PmpzsspNiwr34i/Er93MVTtyYhHU5VohKwnY2wDqU82m7orjydXP0UsCrmbQYt8tD3g6IvdLSe5PH7VomoPunboYyy1f6ktK2TAdYRS4p+aABT+26TwihMidTPy/TM/EZcBY5HUEPUJyE8zL60gjSEk47RYc1XURu9b6P7vslVpOgNBqAAAAAElFTkSuQmCC",xt="data:image/png;base64,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",kt="data:image/png;base64,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",Yn={wave:"wave___rx4XG",fillWrap:"fillWrap___q512j",svgBox:"svgBox___DfbUu"},vr=Object.defineProperty,bi=Object.getOwnPropertySymbols,si=Object.prototype.hasOwnProperty,xa=Object.prototype.propertyIsEnumerable,Ga=(Oe,Fe,Me)=>Fe in Oe?vr(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Zo=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))si.call(Fe,Me)&&Ga(Oe,Me,Fe[Me]);if(bi)for(var Me of bi(Fe))xa.call(Fe,Me)&&Ga(Oe,Me,Fe[Me]);return Oe};const Ps=Oe=>React.createElement("svg",Zo({width:449,height:204,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink"},Oe),React.createElement("title",null,"\u6CE2\u7EB9"),React.createElement("defs",null,React.createElement("linearGradient",{x1:"50%",y1:"41.532%",x2:"51.437%",y2:"65.254%",id:"water_svg__c"},React.createElement("stop",{stopColor:"#34D5A2",offset:"0%"}),React.createElement("stop",{stopColor:"#1D9F76",offset:"100%"})),React.createElement("path",{id:"water_svg__a",d:"M0 0h449v204H0z"})),React.createElement("g",{fill:"none",fillRule:"evenodd"},React.createElement("mask",{id:"water_svg__b",fill:"#fff"},React.createElement("use",{xlinkHref:"#water_svg__a"})),React.createElement("g",{mask:"url(#water_svg__b)"},React.createElement("path",{d:"M0 7.704c14.667 8 29.667 8 45 0 6.537-3.41 23.776-14.982 45 0 17 12 29 9 45 0s31-9 45 0c25 17 35 8 45 0s32.344-7.91 45 0c16 10 32 10 45 0 10.947-8.42 33.124-8.71 45 0 15 11 31.839 11.136 45 0 13-11 30-9.517 45 0s15 17 45 0v196H0v-196Z",fill:"url(#water_svg__c)",transform:"translate(-40)"}),React.createElement("path",{d:"M0 11c14.667 8 29.667 8 45 0 6.537-3.41 23.776-14.982 45 0 17 12 29 9 45 0s31-9 45 0c25 17 35 8 45 0s32.344-7.91 45 0c16 10 32 10 45 0 10.947-8.42 33.124-8.71 45 0 15 11 31.839 11.137 45 0 13-11 30-10 45 0s15 17 45 0v193H0V11Z",fill:"#38E5AE"}))));var Zs="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDQ5IiBoZWlnaHQ9IjIwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSI0MS41MzIlIiB4Mj0iNTEuNDM3JSIgeTI9IjY1LjI1NCUiIGlkPSJjIj48c3RvcCBzdG9wLWNvbG9yPSIjMzRENUEyIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzFEOUY3NiIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0iYSIgZD0iTTAgMGg0NDl2MjA0SDB6Ii8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PGcgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgNy43MDRjMTQuNjY3IDggMjkuNjY3IDggNDUgMCA2LjUzNy0zLjQxIDIzLjc3Ni0xNC45ODIgNDUgMCAxNyAxMiAyOSA5IDQ1IDBzMzEtOSA0NSAwYzI1IDE3IDM1IDggNDUgMHMzMi4zNDQtNy45MSA0NSAwYzE2IDEwIDMyIDEwIDQ1IDAgMTAuOTQ3LTguNDIgMzMuMTI0LTguNzEgNDUgMCAxNSAxMSAzMS44MzkgMTEuMTM2IDQ1IDAgMTMtMTEgMzAtOS41MTcgNDUgMHMxNSAxNyA0NSAwdjE5Nkgwdi0xOTZaIiBmaWxsPSJ1cmwoI2MpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDApIi8+PHBhdGggZD0iTTAgMTFjMTQuNjY3IDggMjkuNjY3IDggNDUgMCA2LjUzNy0zLjQxIDIzLjc3Ni0xNC45ODIgNDUgMCAxNyAxMiAyOSA5IDQ1IDBzMzEtOSA0NSAwYzI1IDE3IDM1IDggNDUgMHMzMi4zNDQtNy45MSA0NSAwYzE2IDEwIDMyIDEwIDQ1IDAgMTAuOTQ3LTguNDIgMzMuMTI0LTguNzEgNDUgMCAxNSAxMSAzMS44MzkgMTEuMTM3IDQ1IDAgMTMtMTEgMzAtMTAgNDUgMHMxNSAxNyA0NSAwdjE5M0gwVjExWiIgZmlsbD0iIzM4RTVBRSIvPjwvZz48L2c+PC9zdmc+",qs=({percentage:Oe,size:Fe=180,unit:Me="rem"})=>{const[jt,Mn]=(0,se.useState)(["",""]),[Tr,Fr]=(0,se.useState)(0),An=(0,se.useRef)(null),_t=(0,se.useRef)(null);(0,se.useEffect)(()=>(An.current&&(clearTimeout(_t.current),_t.current=setTimeout(()=>{var aa;const ca=Tr+20;ca+Fe>((aa=An.current)==null?void 0:aa.offsetWidth)-40&&Mn([...jt,""]),Fr(ca)},200)),()=>{clearTimeout(_t.current)}),[An.current,Tr]),(0,se.useEffect)(()=>(window.addEventListener("resize",Kn),()=>{window.removeEventListener("resize",Kn)}),[]);const Kn=()=>{Fr(0)},wr={width:Fe+Me,height:Fe+Me},ra=148-Fe*(Oe/100),qi=()=>se.createElement("img",{src:Zs,style:{width:`449${Me}`,height:`204${Me}`}});return se.createElement("div",{className:Yn.wave,style:wr},se.createElement("div",{className:Yn.fillWrap},se.createElement("div",{style:{fontSize:`28${Me}`,zIndex:2,color:"#fff"}},Oe,"%"),se.createElement("div",{className:Yn.svgBox,ref:An,style:{top:ra+Me,transform:`translateX(-${Tr}px)`}},jt.map((aa,ca)=>se.createElement(qi,{key:ca})))))},ml=he(22861),Cl={trapezoid:"trapezoid___qw8yM",pillarBox:"pillarBox___rGJCP",pillar1:"pillar1___uJ0zx",point:"point____XIHt",pillar2:"pillar2___pL9k5",pillar3:"pillar3___dUdZf",textBox:"textBox___isldE",text1:"text1___g5Hy9",tip:"tip___PXfJr",line:"line___A5wA_",l:"l___hfZzL",text2:"text2___u2scn",text3:"text3___WSnmy"},ec=Object.defineProperty,Rc=Object.defineProperties,Md=Object.getOwnPropertyDescriptors,Jc=Object.getOwnPropertySymbols,_d=Object.prototype.hasOwnProperty,pf=Object.prototype.propertyIsEnumerable,od=(Oe,Fe,Me)=>Fe in Oe?ec(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,$d=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))_d.call(Fe,Me)&&od(Oe,Me,Fe[Me]);if(Jc)for(var Me of Jc(Fe))pf.call(Fe,Me)&&od(Oe,Me,Fe[Me]);return Oe},Du=(Oe,Fe)=>Rc(Oe,Md(Fe)),qc=({dataSource:Oe=[]})=>{const[Fe,Me]=(0,se.useState)([]),[jt,Mn]=(0,se.useState)(0),Tr=(0,se.useRef)(String(Math.random()).slice(-6));(0,se.useEffect)(()=>{if(Oe!=null&&Oe.length){const Kn=_t(Oe),wr=Oe.map((ra,qi)=>Du($d({value:ra,lineWidth:30,pillarWidth:104+Kn[qi]},An[qi]),{from:An[qi].from+Tr.current,to:An[qi].to+Tr.current}));Me(wr),Mn(jt+1)}},[JSON.stringify(Oe)]),(0,se.useEffect)(()=>{jt>0&&Fr()},[jt]),(0,se.useEffect)(()=>(window.addEventListener("resize",Fr),()=>{window.removeEventListener("resize",Fr)}),[jt]);const Fr=()=>{const Kn=Fe.map((wr,ra)=>{const{from:qi,to:aa}=wr,ca=document.querySelector(`#${qi}`),Ra=document.querySelector(`#${aa}`),Ei=ca.getBoundingClientRect(),Si=Ra.getBoundingClientRect(),ba=Math.abs(Si.left-Ei.left);return Du($d({},wr),{lineWidth:ba})});Me(Kn)},An=[{title:"\u5B8C\u6210\u738780%\uFF5E100%",pillarTitle:"80\uFF5E100%",from:"lineStart1",to:"lineEnd1"},{title:"\u5B8C\u6210\u738760%\uFF5E79%",pillarTitle:"60\uFF5E79%",from:"lineStart2",to:"lineEnd2"},{title:"\u5B8C\u6210\u738759%\u4EE5\u4E0B",pillarTitle:"59%\u4EE5\u4E0B",from:"lineStart3",to:"lineEnd3"}];function _t(Kn){const wr=Kn.reduce((ra,qi)=>ra+qi,0);return Kn.map(ra=>ra/wr*100)}return se.createElement("div",{className:Cl.trapezoid},se.createElement("div",{className:Cl.textBox},Fe.map((Kn,wr)=>{const{value:ra,lineWidth:qi,title:aa,from:ca}=Kn,Ra=wr+1;return se.createElement("div",{key:wr,className:Cl[`text${Ra}`]},se.createElement("div",{className:Cl.tip},aa,se.createElement("span",null,ra)),se.createElement("div",{id:ca,className:Cl.line},se.createElement("div",{style:{width:qi},className:Cl.l})))})),se.createElement("div",{className:Cl.pillarBox},Fe.map((Kn,wr)=>{const{pillarWidth:ra,pillarTitle:qi,to:aa}=Kn,ca=wr+1;return se.createElement("div",{key:wr,className:Cl[`pillar${ca}`],style:{width:ra+"rem"}},se.createElement("span",null,qi),se.createElement("div",{id:aa,className:Cl.point}))})))},ss=he(59301),pd=Object.defineProperty,Bh=Object.getOwnPropertySymbols,bf=Object.prototype.hasOwnProperty,Id=Object.prototype.propertyIsEnumerable,Ae=(Oe,Fe,Me)=>Fe in Oe?pd(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,xe=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))bf.call(Fe,Me)&&Ae(Oe,Me,Fe[Me]);if(Bh)for(var Me of Bh(Fe))Id.call(Fe,Me)&&Ae(Oe,Me,Fe[Me]);return Oe},Pe=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())}),gt=({subjectId:Oe,uuid:Fe,isAll:Me})=>{const[jt,Mn]=(0,se.useState)(!1),[Tr,Fr]=(0,se.useState)({type:0,course_id:null}),[An,_t]=(0,se.useState)(!0),[Kn,wr]=(0,se.useState)(!0),[ra,qi]=(0,se.useState)([]),[aa]=(0,je.useSearchParams)(),[ca,Ra]=(0,se.useState)({graphCount:0,tagCount:0,resourceCount:0,proportionCount:0}),Ei=[{name:"",value:0,itemStyle:{color:"rgb(223,209,38)"}},{name:"",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"",value:0,itemStyle:{color:"rgb(6,110,247)"}}],[Si,ba]=(0,se.useState)({averageCompletionRate:0,averageMasteryRate:0,completionRate:[0,0,0],masteryRate:Ei});(0,se.useEffect)(()=>{jt?Sa(Tr):Fr({type:0,course_id:null})},[jt]),(0,se.useEffect)(()=>{jt&&Mn(!1)},[Fe]);const Sa=(xo,di=!1)=>Pe(void 0,null,function*(){var Ca,va,ro,Pa,rl,xl,Xo,_l,ts,ko;di?wr(!0):_t(!0);const Gr=yield(0,Ot.ZP)(Me?"/api/knowledge/v2/subject_statistics.json":"/api/knowledge/v2/knowledge_statistics.json",{method:"get",params:xe({subject_id:Oe,parentNodeUuid:Fe,labels:"\u56FE\u8C31,\u6807\u7B7E,\u8D44\u6E90",depth:-1},xo)});if((Gr==null?void 0:Gr.status)===0){let so=(Ca=Gr==null?void 0:Gr.data)==null?void 0:Ca.metricCounters;so=so||[];const Ti={graphCount:((va=so.find(Eo=>(Eo==null?void 0:Eo.name)==="\u56FE\u8C31"))==null?void 0:va.count)||0,tagCount:((ro=so.find(Eo=>(Eo==null?void 0:Eo.name)==="\u6807\u7B7E"))==null?void 0:ro.count)||0,resourceCount:((Pa=so.find(Eo=>(Eo==null?void 0:Eo.name)==="\u8D44\u6E90"))==null?void 0:Pa.count)||0,proportionCount:(rl=Gr==null?void 0:Gr.data)==null?void 0:rl.resource_rate};let oa=Object.entries((xl=Gr==null?void 0:Gr.data)==null?void 0:xl.study_grasp_hash).map(([Eo,Ss],_s)=>({name:Eo,value:Ss,itemStyle:Ei[_s].itemStyle}));const Ea={averageCompletionRate:(Xo=Gr==null?void 0:Gr.data)==null?void 0:Xo.study_complete_rate,averageMasteryRate:(_l=Gr==null?void 0:Gr.data)==null?void 0:_l.study_grasp_rate,completionRate:Object.values((ts=Gr==null?void 0:Gr.data)==null?void 0:ts.study_complete_hash),masteryRate:oa};console.log(oa,"newMasteryRate");const Yo=(ko=Gr==null?void 0:Gr.courses)==null?void 0:ko.map(Eo=>({label:Eo.name,value:Eo.id}));qi(Yo),Ra(Ti),ba(Ea)}setTimeout(()=>{_t(!1)},500),wr(!1)}),Uo=xo=>{Tr.type=xo,Fr(xe({},Tr)),(xo!==2||Tr.course_id)&&Sa(Tr,!0)},Ua=xo=>{Tr.course_id=xo,Fr(xe({},Tr)),Sa(Tr,!0)},Oa=[{name:"\u5168\u90E8",id:0},{name:"\u81EA\u4E3B\u5B66\u4E60",id:1},{name:"\u8BFE\u5802\u5B66\u4E60",id:2}];return ss.createElement(lo.Z,null,ss.createElement("div",{className:me.statistics},ss.createElement("div",{onClick:()=>Mn(!0),className:me.noUnfold},ss.createElement("img",{style:{width:"32rem",marginBottom:"4rem"},src:Se}),ss.createElement("span",null,"\u7EDF"),ss.createElement("span",null,"\u8BA1")),ss.createElement("div",{className:me.wrapBox,style:{right:jt?0:"-600rem"}},An&&ss.createElement(vt.Z,{style:{width:"100%",marginTop:"200rem"},spinning:!0}),!An&&ss.createElement(ss.Fragment,null,ss.createElement("div",{className:me.scrollBox},ss.createElement("div",{className:me.content},ss.createElement("div",{className:me.title},ss.createElement("img",{src:Qe}),ss.createElement("span",null,"\u56FE\u8C31\u7EDF\u8BA1\u5206\u6790")),ss.createElement(Lr.Z,{className:me.box,justify:"space-between"},ss.createElement("div",{className:me.left},ss.createElement("div",null,ss.createElement("span",null,"\u77E5\u8BC6\u56FE\u8C31\u6570\u91CF"),ss.createElement("b",null,ca==null?void 0:ca.graphCount)),ss.createElement("div",{style:{margin:"18rem 0"}},ss.createElement("span",null,"\u6807\u7B7E\u8282\u70B9\u6570\u91CF"),ss.createElement("b",null,ca==null?void 0:ca.tagCount)),ss.createElement("div",null,ss.createElement("span",null,"\u8D44\u6E90\u8282\u70B9\u6570\u91CF"),ss.createElement("b",null,ca==null?void 0:ca.resourceCount))),ss.createElement("div",{className:me.right},jt&&ss.createElement(qs,{percentage:ca==null?void 0:ca.proportionCount}),ss.createElement("div",{className:"c-white",style:{marginTop:"20rem",fontSize:"14rem"}},"\u5DF2\u5173\u8054\u8D44\u6E90\u7684\u6807\u7B7E\u8282\u70B9\u5360\u6BD4"))),ss.createElement("div",{style:{marginTop:"20rem"},className:me.title},ss.createElement("img",{src:ct}),ss.createElement("span",null,"\u5B66\u4E60\u7EDF\u8BA1\u5206\u6790")),ss.createElement("div",{className:me.box},aa.get("type")!=="classrooms"&&ss.createElement("div",{className:me.head},ss.createElement("span",{style:{marginRight:"10rem",fontSize:"16rem"}},"\u7EDF\u8BA1\u8303\u56F4"),ss.createElement("div",{className:me.radio},Oa.map(xo=>ss.createElement("div",{className:Tr.type===xo.id?me.active:"",key:xo.id,onClick:()=>Uo(xo.id)},ss.createElement("b",null),ss.createElement("span",null,xo.name)))),Tr.type===2&&ss.createElement(Ma.default,{className:me.select,options:ra,value:Tr==null?void 0:Tr.course_id,onChange:Ua,placeholder:"\u8BF7\u9009\u62E9",getPopupContainer:xo=>xo.parentNode,style:{width:"156rem",marginLeft:"10rem"},suffixIcon:ss.createElement("i",{className:"iconfont icon-a-bianzu11",style:{color:"#1B8565",fontSize:"16rem"}})})),ss.createElement(vt.Z,{spinning:Kn},ss.createElement("div",{className:me.average},ss.createElement("div",{className:me.li},ss.createElement("img",{src:xt,style:{marginLeft:0}}),ss.createElement("aside",{className:me.yellow},ss.createElement("div",{style:{fontSize:"16rem"}},"\u5E73\u5747\u5B8C\u6210\u7387"),ss.createElement("div",null,ss.createElement("b",{style:{fontSize:"40rem"}},Si==null?void 0:Si.averageCompletionRate),ss.createElement("span",{style:{fontSize:"20rem"}},"%")))),ss.createElement("div",{className:me.li},ss.createElement("img",{src:kt}),ss.createElement("aside",{className:me.blue},ss.createElement("div",{style:{fontSize:"16rem"}},"\u5E73\u5747\u638C\u63E1\u7387"),ss.createElement("div",null,ss.createElement("b",{style:{fontSize:"40rem"}},Si==null?void 0:Si.averageMasteryRate),ss.createElement("span",{style:{fontSize:"20rem"}},"%"))))),ss.createElement("div",{className:me.lineTitle},ss.createElement("b",null),ss.createElement("span",null,"\u5B8C\u6210\u7387"),ss.createElement("b",null)),ss.createElement("div",{className:me.echartsTwo},ss.createElement(qc,{dataSource:Si==null?void 0:Si.completionRate})),ss.createElement("div",{className:me.lineTitle,style:{marginTop:"40rem"}},ss.createElement("b",null),ss.createElement("span",null,"\u638C\u63E1\u7387"),ss.createElement("b",null)),ss.createElement("div",{className:me.echartsThree},ss.createElement(ml.Z,{dataSource:Si==null?void 0:Si.masteryRate})))))),jt&&ss.createElement("div",{onClick:()=>Mn(!1),className:me.unfold})))))},ft={statistics:"statistics___BZJje",noUnfold:"noUnfold___L4va9",wrapBox:"wrapBox___tHLW6",scrollBox:"scrollBox___m8AGu",content:"content____Gl9N",title:"title___SAaGy",top:"top___h1nbU",topLi:"topLi___Ib2Tu",bottom:"bottom___ZKnwW",bottomLi:"bottomLi___YAGiM",echarts:"echarts___M5Dkf",name:"name___XhFko",unfold:"unfold___I5om1",select:"select___TcV_B"},St="data:image/png;base64,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",zt="data:image/png;base64,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",Fn="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAsCAYAAAA5KtvpAAAAAXNSR0IArs4c6QAABFJJREFUaEPtml9MW1Ucxz+nlxbaUkYvYjdENG7RiEg6jNGQ+aIx08SE6IvZxGS+qGGPPjnj2+J8MIuJMVk00Zgg0zc1Rpm+Gf+M+GdkZKhT4gyMjnWllJWWtrf3mNPLHJcWaBmlXcMvaV96fufez/n+fuf8zjkV/a8ZBzB5R4JO7VpICHlo8A3nt6L/VWNSIttrl9UiEzAyeMz5sOg/khmTkq7aBxbfDB6r2y8OHZFBjzf7rt5Mb61ChyOcWkxrhz86KiaEggxF5Aum5INaBRaCJ9taxPBSaG8D15zQVaVwnQaao/QxlhLSxnU/1Y+RLdxP1QA7BAT8IHIzSekWjUMyBS1NUO+EuTgkUvn9lB84mwVNK4pA921c4bkFS1V/IzS4QA3AYroCwM2nBpnf14fp9RUFvRmNVLSYskIh3XryOMJIc+WZw1sKvdrAlT2kFbAzPEVGDxB5eqDi0EUDzyetSWC1UFk+oq74LPqFURrD/9AUOo8jm8n9nNwR4M/HBzDc5Q1vhwO8LvC5N5jDV5MQXVg/u1wLUe789TP8F88hpFnQIdkUYPyxATJlhlYPb/WBu97+GkUpHJ6HZIEZb3lX/qkx9vw0hJYpsBasQE807+LsE6+AkqKM1tgAeuMGgC/HYNGKyoKmFL37uw9XVXW5k3Ro/NX7PLMd3WVEtbr21kPLiuwpSuG1gLVUguCXb+JMxdcF2ErYsgHfNfIpt06M5GANl4doWyfzgT25HM3U+9h9eghP7BKbBauKi08+t9eNDg0O9uUXN5uusGdumu6v3iLT4ONCTx+RjmBeXt7/9XE8sdCmhbECPjG4rHAG6jTBy/1bANx+dhjPXIiJh54lW+8pGNJdw28z3floSTkbnoVozF4qteoC/w4wDDjxcYWAO377gsngU8g1ZltP9CIJ/23r5vfyBj/8YnLmnH1Z631Ao6dL5OrlyihsmjiyBqbTVRKMamxm4cy4XUG1LQzeZ22V1gSupMIlky45pDPw3pA9LJ11gpees/KwOhVeh/bvfyVTIbuKu+8Q3L5LcEPA1arw9z+bjI7b83DfgxrBzhsErlgOAwsJu8xqH+peKtjLBlwphVNpeP+kPQ9dTsGLB608LBtwpRTeBga2Fa6lSaumQ3r2KsRX7OtvBuAmNzR7N3AAkMnCzJz9PKvagVWpurM5/5y7qAMANUZZE1KZ69DqfH30D3slpfYQe++16uHJS3A5Yv+9PSAI3GL1Nfr7Cl8Bezst36kZmLlS2Nc08+vw3HOXfJW/ur1wu0DVBSutaOCN1s3V5rcNvNaFuAoVV121aZb/PmpzsspNiwr34i/Er93MVTtyYhHU5VohKwnY2wDqU82m7orjydXP0UsCrmbQYt8tD3g6IvdLSe5PH7VomoPunboYyy1f6ktK2TAdYRS4p+aABT+26TwihMidTPy/TM/EZcBY5HUEPUJyE8zL60gjSEk47RYc1XURu9b6P7vslVpOgNBqAAAAAElFTkSuQmCC",Ar=he.p+"static/a.d3f19668.png",lr=he.p+"static/b.ba7414bd.png",Kt=he.p+"static/c.2b6f6bd3.png",Tn=he.p+"static/d.f1216ccd.png",Ir={cylinder:"cylinder___rUBlO",cylinderBox:"cylinderBox___NurwX",cylinder1:"cylinder1___LPJD0",item1:"item1___ekrFi",item2:"item2___PuVOv",item3:"item3___x9UjL",point:"point___ZJ1ZD",cylinder2:"cylinder2___aQBbC",cylinder3:"cylinder3___lefpl",textBox:"textBox____wuhT"},Li=Object.defineProperty,Bo=Object.defineProperties,Qo=Object.getOwnPropertyDescriptors,Wo=Object.getOwnPropertySymbols,Xs=Object.prototype.hasOwnProperty,Bl=Object.prototype.propertyIsEnumerable,Il=(Oe,Fe,Me)=>Fe in Oe?Li(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,Ku=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Xs.call(Fe,Me)&&Il(Oe,Me,Fe[Me]);if(Wo)for(var Me of Wo(Fe))Bl.call(Fe,Me)&&Il(Oe,Me,Fe[Me]);return Oe},wu=(Oe,Fe)=>Bo(Oe,Qo(Fe)),td=({dataSource:Oe=[]})=>{const[Fe,Me]=(0,se.useState)([]),[jt,Mn]=(0,se.useState)(0),Tr=(0,se.useRef)(String(Math.random()).slice(-6));console.log(Oe,Fe,223),(0,se.useEffect)(()=>{if(Oe!=null&&Oe.length){const Kn=_t(Oe),wr=Oe.map((ra,qi)=>wu(Ku({value:ra,lineWidth:30,cylinderWidth:40+Kn[qi]},An[qi]),{from:An[qi].from+Tr.current,to:An[qi].to+Tr.current}));Me(wr),Mn(jt+1)}},[JSON.stringify(Oe)]),(0,se.useEffect)(()=>{jt>0&&Fr()},[jt]),(0,se.useEffect)(()=>(window.addEventListener("resize",Fr),()=>{window.removeEventListener("resize",Fr)}),[jt]);const Fr=()=>{const Kn=Fe.map((wr,ra)=>{const{from:qi,to:aa}=wr,ca=document.querySelector(`#${qi}`),Ra=document.querySelector(`#${aa}`),Ei=ca.getBoundingClientRect(),Si=Ra.getBoundingClientRect(),ba=Math.abs(Si.left-Ei.left);return wu(Ku({},wr),{lineWidth:ba})});Me(Kn)},An=[{title:"\u90E8\u5206\u638C\u63E1  ",from:"lineStart1",to:"lineEnd1"},{title:"\u5168\u90E8\u638C\u63E1  ",from:"lineStart2",to:"lineEnd2"},{title:"\u672A  \u638C  \u63E1  ",from:"lineStart3",to:"lineEnd3"}];function _t(Kn){const wr=Kn.reduce((ra,qi)=>ra+qi,0);return Kn.map(ra=>ra/wr*122)}return se.createElement("div",{className:Ir.cylinder},se.createElement("div",{className:Ir.cylinderBox},Fe.map((Kn,wr)=>{const{cylinderWidth:ra,lineWidth:qi,from:aa}=Kn,ca=wr+1;return se.createElement("div",{key:ca,className:Ir[`cylinder${ca}`],style:{width:ra+"rem"}},se.createElement("div",{className:Ir.item1}),se.createElement("div",{className:Ir.item2}),se.createElement("div",{className:Ir.item3}),se.createElement("div",{id:aa,style:{width:qi},className:Ir.point}))})),se.createElement("div",{className:Ir.textBox},Fe.map((Kn,wr)=>{const{title:ra,to:qi,value:aa}=Kn,ca=wr+1;return se.createElement("div",{key:ca,id:qi},se.createElement("span",{dangerouslySetInnerHTML:{__html:`${ra}${aa}%`}}))})))},as=he(59301),Yc=Object.defineProperty,jc=Object.getOwnPropertySymbols,ef=Object.prototype.hasOwnProperty,tf=Object.prototype.propertyIsEnumerable,wd=(Oe,Fe,Me)=>Fe in Oe?Yc(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,gf=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))ef.call(Fe,Me)&&wd(Oe,Me,Fe[Me]);if(jc)for(var Me of jc(Fe))tf.call(Fe,Me)&&wd(Oe,Me,Fe[Me]);return Oe},sh=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())}),Ld=({subjectId:Oe,uuid:Fe,isAll:Me})=>{const[jt,Mn]=(0,se.useState)(!1),[Tr,Fr]=(0,se.useState)({course_id:null}),[An,_t]=(0,se.useState)(!0),[Kn,wr]=(0,se.useState)(!0),[ra,qi]=(0,se.useState)([]),[aa]=(0,je.useSearchParams)(),[ca,Ra]=(0,se.useState)({graphCount:0,tagCount:0,resourceCount:0,proportionCount:0}),Ei=[{name:"\u5DF2\u5B8C\u6210",value:0,itemStyle:{color:"rgb(223,209,38)"}},{name:"\u5F85\u5F00\u59CB",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"\u90E8\u5206\u5B8C\u6210",value:0,itemStyle:{color:"rgb(6,110,247)"}}],[Si,ba]=(0,se.useState)({averageCompletionRate:0,averageMasteryRate:0,completionRate:Ei,masteryRate:[0,0,0],course_rank_num:0,course_rank_all_num:0,system_rank_num:0,system_rank_all_num:0});(0,se.useEffect)(()=>{jt?Sa(Tr):Fr({course_id:null})},[jt]),(0,se.useEffect)(()=>{jt&&Mn(!1)},[Fe]);const Sa=(Ua,Oa=!1)=>sh(void 0,null,function*(){var xo,di,Ca,va,ro,Pa,rl,xl,Xo,_l,ts,ko,Gr,so,Ti;Oa?wr(!0):_t(!0);const oa=yield(0,Ot.ZP)(Me?"/api/knowledge/v2/subject_statistics.json":"/api/knowledge/v2/knowledge_statistics.json",{method:"get",params:gf({subject_id:Oe,parentNodeUuid:Fe,labels:"\u56FE\u8C31,\u6807\u7B7E,\u8D44\u6E90",depth:-1},Ua)});if((oa==null?void 0:oa.status)===0){let Ea=(xo=oa==null?void 0:oa.data)==null?void 0:xo.metricCounters;Ea=Ea||[];const Yo={graphCount:((di=Ea.find(il=>(il==null?void 0:il.name)==="\u56FE\u8C31"))==null?void 0:di.count)||0,tagCount:((Ca=Ea.find(il=>(il==null?void 0:il.name)==="\u6807\u7B7E"))==null?void 0:Ca.count)||0,resourceCount:((va=Ea.find(il=>(il==null?void 0:il.name)==="\u8D44\u6E90"))==null?void 0:va.count)||0,proportionCount:(ro=oa==null?void 0:oa.data)==null?void 0:ro.resource_rate};let Eo=Object.entries((Pa=oa==null?void 0:oa.data)==null?void 0:Pa.study_complete_hash).map(([il,Ks],Kl)=>({name:Ei[Kl].name,value:Ks,itemStyle:Ei[Kl].itemStyle}));const Ss={averageCompletionRate:(rl=oa==null?void 0:oa.data)==null?void 0:rl.study_complete_rate,averageMasteryRate:(xl=oa==null?void 0:oa.data)==null?void 0:xl.study_grasp_rate,completionRate:Eo,masteryRate:Object.values((Xo=oa==null?void 0:oa.data)==null?void 0:Xo.study_grasp_hash),course_rank_num:(_l=oa==null?void 0:oa.data)==null?void 0:_l.course_rank_num,course_rank_all_num:(ts=oa==null?void 0:oa.data)==null?void 0:ts.course_rank_all_num,system_rank_num:(ko=oa==null?void 0:oa.data)==null?void 0:ko.system_rank_num,system_rank_all_num:(Gr=oa==null?void 0:oa.data)==null?void 0:Gr.system_rank_all_num},_s=(so=oa==null?void 0:oa.courses)==null?void 0:so.map(il=>({label:il.name,value:il.id}));qi(_s),Ra(Yo),ba(Ss),Oa||Fr({course_id:((Ti=_s==null?void 0:_s[0])==null?void 0:Ti.value)||null})}setTimeout(()=>{_t(!1)},500),wr(!1)}),Uo=Ua=>{Tr.course_id=Ua,Fr(gf({},Tr)),Sa(Tr,!0)};return as.createElement(lo.Z,null,as.createElement("div",{className:ft.statistics},as.createElement("div",{onClick:()=>Mn(!0),className:ft.noUnfold},as.createElement("img",{style:{width:"32rem",marginBottom:"4rem"},src:St}),as.createElement("span",null,"\u7EDF"),as.createElement("span",null,"\u8BA1")),as.createElement("div",{className:ft.wrapBox,style:{right:jt?0:"-600rem"}},An&&as.createElement(vt.Z,{style:{width:"100%",marginTop:"200rem"},spinning:!0}),!An&&as.createElement(as.Fragment,null,as.createElement("div",{className:ft.scrollBox},as.createElement("div",{className:ft.content},as.createElement("div",{className:ft.title},as.createElement("img",{src:zt}),as.createElement("span",null,"\u56FE\u8C31\u7EDF\u8BA1\u5206\u6790")),as.createElement("div",{className:ft.top},as.createElement("div",{className:ft.topLi},as.createElement("div",null,ca==null?void 0:ca.graphCount),as.createElement("div",null,"\u77E5\u8BC6\u56FE\u8C31\u6570\u91CF")),as.createElement("div",{className:ft.topLi},as.createElement("div",null,ca==null?void 0:ca.tagCount),as.createElement("div",null,"\u6807\u7B7E\u8282\u70B9\u6570\u91CF")),as.createElement("div",{className:ft.topLi},as.createElement("div",null,ca==null?void 0:ca.resourceCount),as.createElement("div",null,"\u8D44\u6E90\u8282\u70B9\u6570\u91CF"))),as.createElement("div",{style:{marginTop:"20rem"},className:ft.title},as.createElement("img",{src:Fn}),as.createElement("span",null,"\u5B66\u4E60\u7EDF\u8BA1\u5206\u6790")),as.createElement(vt.Z,{spinning:Kn},as.createElement("div",{className:ft.bottom},as.createElement("div",{className:ft.bottomLi,style:{marginTop:"82rem",marginRight:"26rem"}},aa.get("type")!=="classrooms"&&as.createElement(Ma.default,{className:ft.select,options:ra,value:Tr==null?void 0:Tr.course_id,size:"small",onChange:Uo,placeholder:"\u8BF7\u9009\u62E9",getPopupContainer:Ua=>Ua.parentNode,style:{width:"222rem"},suffixIcon:as.createElement("i",{className:"iconfont icon-a-bianzu11",style:{color:"#fff",fontSize:"12rem"}})}),as.createElement("b",{style:{fontSize:"26rem",marginTop:"5rem"}},Si==null?void 0:Si.course_rank_num),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\u8BFE\u5802\u6392\u540D"),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\uFF08\u5171",Si==null?void 0:Si.course_rank_all_num,"\u4EBA\uFF09"),as.createElement("img",{src:Ar})),as.createElement("div",{className:ft.bottomLi,style:{marginTop:"82rem"}},as.createElement("b",{style:{fontSize:"26rem",marginTop:"30rem"}},Si==null?void 0:Si.system_rank_num),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\u7CFB\u7EDF\u6392\u540D"),as.createElement("div",{style:{fontSize:"16rem",marginTop:"4rem"}},"\uFF08\u5171",Si==null?void 0:Si.system_rank_all_num,"\u4EBA\uFF09"),as.createElement("img",{src:lr})),as.createElement("div",{className:ft.bottomLi,style:{marginTop:"104rem",marginRight:"26rem"}},as.createElement("b",{style:{fontSize:"26rem",marginTop:"30rem"}},Si==null?void 0:Si.averageCompletionRate,"%"),as.createElement("div",{style:{fontSize:"14rem",marginTop:"2rem"}},"\u5E73\u5747\u5B8C\u6210\u7387"),as.createElement("img",{src:Kt})),as.createElement("div",{className:ft.bottomLi,style:{marginTop:"104rem"}},as.createElement("b",{style:{fontSize:"26rem",marginTop:"30rem"}},Si==null?void 0:Si.averageMasteryRate,"%"),as.createElement("div",{style:{fontSize:"14rem",marginTop:"2rem"}},"\u5E73\u5747\u638C\u63E1\u7387"),as.createElement("img",{src:Tn})),as.createElement("div",{className:ft.echarts},as.createElement("div",{className:ft.name},"\u5B8C\u6210\u60C5\u51B5"),as.createElement(ml.Z,{dataSource:Si==null?void 0:Si.completionRate})),as.createElement("div",{className:ft.echarts},as.createElement("div",{className:ft.name},"\u638C\u63E1\u60C5\u51B5"),as.createElement(td,{dataSource:Si==null?void 0:Si.masteryRate})))))),jt&&as.createElement("div",{onClick:()=>Mn(!1),className:ft.unfold})))))},Mf=he(59301),C0=Object.defineProperty,Tf=Object.getOwnPropertySymbols,Kd=Object.prototype.hasOwnProperty,Uf=Object.prototype.propertyIsEnumerable,zf=(Oe,Fe,Me)=>Fe in Oe?C0(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,lh=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Kd.call(Fe,Me)&&zf(Oe,Me,Fe[Me]);if(Tf)for(var Me of Tf(Fe))Uf.call(Fe,Me)&&zf(Oe,Me,Fe[Me]);return Oe},Dh=(Oe,Fe)=>{var Me={};for(var jt in Oe)Kd.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&Tf)for(var jt of Tf(Oe))Fe.indexOf(jt)<0&&Uf.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},Jh=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Hf=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,tpacti:An,settpacti:_t}=Fe,Kn=Dh(Fe,["pathsDetail","user","globalSetting","loading","dispatch","tpacti","settpacti"]),wr,ra,qi,aa,ca,Ra;const Ei=(0,je.useParams)(),[Si,ba]=(0,se.useState)(""),[Sa,Uo]=(0,se.useState)([]),[Ua]=(0,je.useSearchParams)(),[Oa,xo]=(0,se.useState)([]),[di,Ca]=(0,se.useState)(1);(0,se.useEffect)(()=>{var Pa,rl,xl,Xo,_l,ts;if((Pa=Me==null?void 0:Me.detail)!=null&&Pa.nodes&&di===1){Uo((rl=Me==null?void 0:Me.detail)==null?void 0:rl.nodes),Ua.get("uuid")?ba(Ua.get("uuid")):ba((_l=(Xo=(xl=Me==null?void 0:Me.detail)==null?void 0:xl.nodes)==null?void 0:Xo[1])==null?void 0:_l.uuid);let ko=[...(ts=Me==null?void 0:Me.detail)==null?void 0:ts.nodes];xo(ko==null?void 0:ko.splice(1)),Ca(2)}},[(wr=Me==null?void 0:Me.detail)==null?void 0:wr.nodes]),(0,se.useEffect)(()=>{var Pa,rl,xl;ba(An||((xl=(rl=(Pa=Me==null?void 0:Me.detail)==null?void 0:Pa.nodes)==null?void 0:rl[1])==null?void 0:xl.uuid))},[An]);const va=(...Pa)=>Jh(void 0,[...Pa],function*(rl={}){return yield Fr({type:"pathsDetail/getKnowledgeGraphs",payload:lh({graphable_type:Ua.get("type")==="classrooms"?"course":"subject",graphable_id:Ei==null?void 0:Ei.pathId},rl)})});function ro(){return Jh(this,null,function*(){var Pa,rl,xl,Xo;const _l=yield va({graphable_id:Ei==null?void 0:Ei.pathId});ba((rl=(Pa=_l==null?void 0:_l.nodes)==null?void 0:Pa[1])==null?void 0:rl.uuid),_t((Xo=(xl=_l==null?void 0:_l.nodes)==null?void 0:xl[1])==null?void 0:Xo.uuid)})}return Mf.createElement("div",{style:{height:"calc(100vh - 72px - 170rem)"}},(Sa==null?void 0:Sa.length)>0&&Mf.createElement("div",{className:ht.content},((ra=Sa==null?void 0:Sa[0])==null?void 0:ra.uuid)===Si&&Si&&Mf.createElement(ce,{onAddSuccess:ro,setActivated:ba,subjectId:Ei==null?void 0:Ei.pathId,settpacti:_t}),((qi=Sa==null?void 0:Sa[0])==null?void 0:qi.uuid)!==Si&&Si&&Mf.createElement(Vh,{tpacti:An,setactivied:()=>{var Pa;ba((Pa=Sa==null?void 0:Sa[0])==null?void 0:Pa.uuid)},initdata:ro,Tabsdatas:Oa,uuid:Si})),(aa=Me==null?void 0:Me.detail)!=null&&aa.can_managed?Mf.createElement(gt,{isAll:((ca=Sa==null?void 0:Sa[0])==null?void 0:ca.uuid)===Si,subjectId:Ei==null?void 0:Ei.pathId,uuid:Si}):Mf.createElement(Ld,{isAll:((Ra=Sa==null?void 0:Sa[0])==null?void 0:Ra.uuid)===Si,subjectId:Ei==null?void 0:Ei.pathId,uuid:Si}))};var qh=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(Hf),_h={TabsItemActive:"TabsItemActive___UqdaX",TabsItem:"TabsItem___L0dKD"},z0=he(84105),kh=he(59301),ng=Object.defineProperty,c0=Object.defineProperties,Lp=Object.getOwnPropertyDescriptors,B0=Object.getOwnPropertySymbols,H0=Object.prototype.hasOwnProperty,D0=Object.prototype.propertyIsEnumerable,fp=(Oe,Fe,Me)=>Fe in Oe?ng(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,R0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))H0.call(Fe,Me)&&fp(Oe,Me,Fe[Me]);if(B0)for(var Me of B0(Fe))D0.call(Fe,Me)&&fp(Oe,Me,Fe[Me]);return Oe},P0=(Oe,Fe)=>c0(Oe,Lp(Fe)),rg=(Oe,Fe)=>{var Me={};for(var jt in Oe)H0.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&B0)for(var jt of B0(Oe))Fe.indexOf(jt)<0&&D0.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me};const d0=({DataProps:Oe,isActive:Fe=!1,onClick:Me})=>kh.createElement("div",{className:`current ${_h.TabsItem} ${Fe?_h.TabsItemActive:""}`,onClick:Me},(Oe==null?void 0:Oe.name)||""),j0=Oe=>{var Fe=Oe,{pathsDetail:Me,dispatch:jt,activied:Mn,setactivied:Tr,settpacti:Fr,tpacti:An,setxxljac:_t,xxljac:Kn,TabsData:wr=[],tplist:ra=[]}=Fe,qi=rg(Fe,["pathsDetail","dispatch","activied","setactivied","settpacti","tpacti","setxxljac","xxljac","TabsData","tplist"]),aa,ca,Ra,Ei,Si;const ba=(0,se.useRef)(null),[Sa,Uo]=(0,se.useState)(0),[Ua,Oa]=(0,se.useState)(!1),xo=(0,se.useMemo)(()=>(wr==null?void 0:wr.filter(di=>![1,3,4].includes(di==null?void 0:di.key)))||[],[wr]);return(0,se.useEffect)(()=>{ba.current&&setTimeout(()=>{const di=(0,Xt.ZR)(ba.current,"rem",1,!0);Uo(di)},500)},[ba.current,Me==null?void 0:Me.detail]),(0,se.useEffect)(()=>{var di,Ca;((di=Me==null?void 0:Me.actionTabs)==null?void 0:di.key)==="\u4FEE\u6539tab\u4FE1\u606F"&&(jt({type:"pathsDetail/setActionTabs",payload:{key:""}}),Tr==null||Tr((Ca=Me==null?void 0:Me.actionTabs)==null?void 0:Ca.type),window.scrollTo({top:800,left:0,behavior:"smooth"}))},[(aa=Me==null?void 0:Me.actionTabs)==null?void 0:aa.key]),kh.createElement("div",{className:"flex c-white justify-between overflow_hidden",style:{height:Ua?"auto":"40rem",background:"#101C39",borderRadius:"22rem",backdropFilter:"blur(10rem)",fontSize:"16rem",lineHeight:"26rem"}},kh.createElement("div",{ref:ba,className:"flex flex-wrap",style:{gap:"25rem 40rem"}},(Si=((Ra=(ca=Me==null?void 0:Me.detail)==null?void 0:ca.nodes)==null?void 0:Ra.length)>1?(Ei=Me==null?void 0:Me.detail)==null?void 0:Ei.nodes.slice(1):[{isNull:!0}])==null?void 0:Si.map((di,Ca)=>{var va;return kh.createElement(d0,{key:di==null?void 0:di.uuid,DataProps:di!=null&&di.isNull?P0(R0({},di),{name:((va=wr==null?void 0:wr.find(ro=>(ro==null?void 0:ro.key)==3))==null?void 0:va.name)||(di==null?void 0:di.name)}):di,isActive:di!=null&&di.isNull?Mn==3:Mn==3&&(An?(di==null?void 0:di.uuid)==An:Ca==0),onClick:()=>{Fr==null||Fr(di==null?void 0:di.uuid),Tr==null||Tr(3)}})}),xo==null?void 0:xo.map(di=>kh.createElement(d0,{key:di==null?void 0:di.key,DataProps:di,isActive:Mn==(di==null?void 0:di.key),onClick:()=>{Tr==null||Tr(di==null?void 0:di.key)}}))),Sa>44&&kh.createElement("div",{className:"current flex text-nowrap",style:{padding:"7rem 20rem"},onClick:()=>{Oa(!Ua)}},kh.createElement("a",null,Ua?"\u6536\u8D77":"\u5C55\u5F00"," ",kh.createElement(z0.Z,{rotate:Ua?-180:0,rev:void 0}))))};var hp=(0,je.connect)(({pathsDetail:Oe})=>({pathsDetail:Oe}))(j0),Lh=he(72484),ig="data:image/png;base64,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",Cg="data:image/png;base64,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",ev=he(37426),tv=he(19150),Bg=he(55303),ag=he(92691),nv=he(99755),Dg=he(46016),rv="data:image/png;base64,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",iv=he.p+"static/nltpbg.f01aad4b.png",Tp=he.p+"static/nltpbg2.303fcb0b.png",f0={title:"title___m9Fww",bg:"bg___f9tLu"},av="data:image/png;base64,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",pp=he.p+"static/2.3612d2e5.png",Z0=he.p+"static/3.0ae7bccf.png",og=he.p+"static/4.d75cb058.png",mh=he.p+"static/5.89f1948f.png",ov=he.p+"static/6.cc2d55ef.png",sv=he.p+"static/7.3afb9435.png",lv=he.p+"static/8.5401d4a7.png",uv=Object.defineProperty,X0=Object.getOwnPropertySymbols,cv=Object.prototype.hasOwnProperty,sg=Object.prototype.propertyIsEnumerable,V0=(Oe,Fe,Me)=>Fe in Oe?uv(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,h0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))cv.call(Fe,Me)&&V0(Oe,Me,Fe[Me]);if(X0)for(var Me of X0(Fe))sg.call(Fe,Me)&&V0(Oe,Me,Fe[Me]);return Oe};const dv=({DataProps:Oe=[],baifenbi:Fe=1,pathsDetail:Me,isShow:jt,item:Mn,i:Tr})=>{const Fr=(0,je.useParams)(),[An,_t]=(0,se.useState)(0),Kn=33,wr=Math.PI/2+Tr*(Math.PI*2/(Oe==null?void 0:Oe.length)),ra=Kn*Math.cos(wr)/100,qi=Kn*Math.sin(wr)/100;return se.createElement(Bn.Z,{color:"#444FC2",title:jt?null:se.createElement("div",{style:{fontSize:`${14*Fe}rem`}},se.createElement("div",null,"\u8986\u76D6",(Mn==null?void 0:Mn.children_count)||0,"\u4E2A\u5B50\u80FD\u529B\u3001",(Mn==null?void 0:Mn.subject_knowledge_graph_count)||0,"\u4E2A\u77E5\u8BC6\u70B9"),se.createElement("div",{style:{marginTop:"10rem"}},"\u70B9\u51FB\u67E5\u770B\u8BE6\u60C5"))},se.createElement("div",{className:`flex flex-col item-center justify-center absolute ${jt?"":"current"} ${f0.title}`,onClick:()=>{jt||(0,Xt.xg)(`/knowledgegraph/${Fr==null?void 0:Fr.pathId}/abilityMap/detail/${Mn==null?void 0:Mn.id}${window.location.search}`)},onMouseOver:()=>{jt||_t(2)},onMouseOut:()=>{jt||_t(0)},style:{left:`calc(50% - ${ra*100}%)`,top:`calc(50% - ${qi*100}%)`,transform:"translate(-50%,-50%)",width:"20%",fontSize:`${(14+An)*Fe}rem`}},se.createElement("div",{style:{opacity:"0.8"}},"\u4E3B\u80FD\u529B"),se.createElement("div",{className:"multi_ellipsis1",style:{fontSize:`${18*Fe}rem`,fontWeight:500}},Mn==null?void 0:Mn.name),!(Me!=null&&Me.detail.can_managed)&&se.createElement("div",null,"\u638C\u63E1\u7387 ",Mn==null?void 0:Mn.grasp_rate," %")))},zp=({DataProps:Oe=[],className:Fe="",style:Me={},baifenbi:jt=1,pathsDetail:Mn,isShow:Tr})=>{const Fr=(0,se.useMemo)(()=>{const An=["",av,pp,Z0,og,mh,ov,sv,lv];return An==null?void 0:An[(Oe==null?void 0:Oe.length)||0]},[Oe]);return se.createElement("div",{className:`w-full h-full flex item-center justify-center relative overflow_hidden ${Fe} ${f0.bg}`,style:h0({backgroundImage:`url(${Oe!=null&&Oe.length?Tp:iv})`,backgroundSize:"auto 100%",height:"100%"},Me)},((Oe==null?void 0:Oe.length)||0)>0&&se.createElement("img",{className:`absolute ${f0.bg}`,src:Fr,style:{width:"95%",height:"95%",left:"50%",top:"50%",transform:`translate(-50%, -50%) ${[2,3,6].includes(Oe==null?void 0:Oe.length)?"rotate(90deg)":(Oe==null?void 0:Oe.length)==7?"rotate(25deg)":""}`}}),Oe==null?void 0:Oe.map((An,_t)=>se.createElement(dv,{key:_t,i:_t,item:An,DataProps:Oe,className:Fe,style:Me,baifenbi:jt,pathsDetail:Mn,isShow:Tr})),se.createElement("div",{className:"text-center"},se.createElement("div",{style:{fontSize:`${28*jt}rem`}},"\u80FD\u529B\u76EE\u6807"),se.createElement("div",{style:{fontSize:`${12*jt}rem`}},"\u70B9\u51FB\u73AF\u56FE\u67E5\u770B\u80FD\u529B\u8BE6\u60C5")))};var Q0=(0,je.connect)(({pathsDetail:Oe})=>({pathsDetail:Oe}))(zp),$h=he.p+"static/bg.a1e8d200.png",vf={ChangeBut:"ChangeBut___VXZuF",spin:"spin___YZs77"},fv=he(39794),W0=Object.defineProperty,Pg=Object.defineProperties,hv=Object.getOwnPropertyDescriptors,Sg=Object.getOwnPropertySymbols,Mg=Object.prototype.hasOwnProperty,pv=Object.prototype.propertyIsEnumerable,gp=(Oe,Fe,Me)=>Fe in Oe?W0(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,S0=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))Mg.call(Fe,Me)&&gp(Oe,Me,Fe[Me]);if(Sg)for(var Me of Sg(Fe))pv.call(Fe,Me)&&gp(Oe,Me,Fe[Me]);return Oe},Hp=(Oe,Fe)=>Pg(Oe,hv(Fe)),Rp=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Ig=({pathsDetail:Oe,dispatch:Fe})=>{var Me,jt,Mn,Tr,Fr,An,_t,Kn,wr,ra,qi,aa,ca,Ra,Ei,Si,ba,Sa,Uo,Ua;const{detail:Oa,actionTabs:xo}=Oe,di=(0,je.useParams)(),[Ca]=(0,je.useSearchParams)(),va=(0,se.useRef)(null),[ro,Pa]=(0,se.useState)({}),[,rl,xl,Xo]=(0,gn.U)(Le.Eu,{subject_id:di==null?void 0:di.pathId}),[_l,ts]=(0,se.useState)([{name:"\u638C\u63E1\u738759%\u4EE5\u4E0B",value:0,itemStyle:{color:"rgb(6,110,247)"}},{name:"\u638C\u63E1\u738760%\uFF5E79%",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"\u638C\u63E1\u738780%\uFF5E100%",value:0,itemStyle:{color:"rgb(223,209,38)"}}]),ko=[{title:"\u80FD\u529B\u76EE\u6807\u638C\u63E1\u6570",value:(Me=Xo==null?void 0:Xo.data)==null?void 0:Me.total_grasp_count,unit:"\u4E2A",img:Dg,bg:"rgba(18, 42, 159, .4)",ProgressTitle:"\u5B8C\u6210\u6574\u4F53\u80FD\u529B\u7387",percent:((jt=Xo==null?void 0:Xo.data)==null?void 0:jt.total_grasp_rate)||0,trailColor:"rgba(22, 115, 255, .1)",strokeColor:"#1673FF"},{title:"\u5DF2\u638C\u63E1\u5B50\u80FD\u529B\u6570",value:(Mn=Xo==null?void 0:Xo.data)==null?void 0:Mn.children_ability_goal_grasp_count,unit:"\u4E2A",img:rv,bg:"rgba(0, 87, 76, .4)",ProgressTitle:"\u5B8C\u6210\u5B50\u80FD\u529B\u7387",percent:((Tr=Xo==null?void 0:Xo.data)==null?void 0:Tr.children_ability_goal_grasp_rate)||0,trailColor:"rgba(50, 199, 145, .1)",strokeColor:"#32C791"},{title:"\u8D44\u6E90\u5B8C\u6210\u6570",value:(Fr=Xo==null?void 0:Xo.data)==null?void 0:Fr.resource_complete_count,unit:"\u4E2A",img:ag,bg:"rgba(108, 76, 0, .4)",ProgressTitle:"\u5B8C\u6210\u8D44\u6E90\u7387",percent:((An=Xo==null?void 0:Xo.data)==null?void 0:An.resource_complete_rate)||0,trailColor:"rgba(209, 157, 83, .1)",strokeColor:"#D19D53"},{title:"\u5DF2\u7ECF\u638C\u63E1\u77E5\u8BC6\u70B9",value:(_t=Xo==null?void 0:Xo.data)==null?void 0:_t.knowledge_grasp_count,unit:"\u4E2A",img:nv,bg:"rgba(0, 28, 106, .4)",ProgressTitle:"\u77E5\u8BC6\u70B9\u638C\u63E1\u7387",percent:((Kn=Xo==null?void 0:Xo.data)==null?void 0:Kn.knowledge_grasp_rate)||0,trailColor:"rgba(50, 199, 145, .1)",strokeColor:"#1673FF"}],Gr=(...Ti)=>Rp(void 0,[...Ti],function*(oa={}){yield xl(Hp(S0({},oa),{subject_id:di==null?void 0:di.pathId}))}),so=()=>Rp(void 0,null,function*(){Fe({type:"pathsDetail/getKnowledgeGraphs",payload:{graphable_type:Ca.get("type")==="classrooms"?"course":"subject",graphable_id:di.pathId}})});return(0,se.useEffect)(()=>{var Ti,oa;if((Xo==null?void 0:Xo.status)==0&&(Oa!=null&&Oa.can_managed)){const Ea=(oa=Object==null?void 0:Object.entries(((Ti=Xo==null?void 0:Xo.data)==null?void 0:Ti.study_grasp_hash)||{}))==null?void 0:oa.map(([Yo,Eo],Ss)=>({name:Yo,value:Eo,itemStyle:_l[Ss].itemStyle}));ts(Ea)}},[Oa==null?void 0:Oa.can_managed,Xo]),(0,se.useEffect)(()=>{ro!=null&&ro.id&&Gr({id:ro==null?void 0:ro.id})},[ro==null?void 0:ro.id]),(0,se.useEffect)(()=>{var Ti,oa,Ea;if(((Ti=Oa==null?void 0:Oa.ability_goals)==null?void 0:Ti.length)>0){const Yo=(oa=Oa==null?void 0:Oa.ability_goals)==null?void 0:oa.find(Eo=>Eo==null?void 0:Eo.is_choice);Pa(Hp(S0({},Yo),{knowledge_graph_route_id:(Ea=Xo==null?void 0:Xo.data)==null?void 0:Ea.knowledge_graph_route_id})),!(Yo!=null&&Yo.id)&&Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u5207\u6362\u80FD\u529B\u56FE\u8C31"}}})}},[Oa==null?void 0:Oa.ability_goals,(wr=Xo==null?void 0:Xo.data)==null?void 0:wr.knowledge_graph_route_id]),se.createElement(vt.Z,{spinning:rl,wrapperClassName:vf.spin,size:"large",tip:"\u6570\u636E\u7EDF\u8BA1\u4E2D\uFF0C\u8BF7\u7A0D\u540E"},((ra=Oa==null?void 0:Oa.ability_goals)==null?void 0:ra.length)>0?se.createElement("div",{className:"flex w-full c-white overflow_hidden",style:{padding:"20rem 40rem",fontSize:"16rem"}},se.createElement("div",{className:" minW-0 flex flex-col",style:{flex:"1.5",gap:"10rem"}},se.createElement("div",{className:" flex-1",style:{padding:"20rem",background:"rgba(32, 47, 79, .34)",borderRadius:"12rem"}},se.createElement("div",{className:"flex item-center gap-10px-rem"},se.createElement("div",{className:"flex item-center rounded-full text-14px-rem mr-auto",style:{background:"#101C39",padding:"0 0 0 20rem",gap:"10rem"}},se.createElement("div",{className:"c-grey-eee text-nowrap "},"\u5F53\u524D\u8DEF\u5F84"),se.createElement(Bn.Z,{title:(ro==null?void 0:ro.name)||"",placement:"topLeft"},se.createElement("div",{className:"multi_ellipsis1"},(ro==null?void 0:ro.name)||"")),se.createElement("div",{className:`current flex item-center text-nowrap ${vf.ChangeBut}`,onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u5207\u6362\u80FD\u529B\u56FE\u8C31"}}})}},se.createElement("span",{className:"iconfont icon-dingbu-qiehuanbanben",style:{fontSize:"14rem"}})," \u66F4\u6362")),(Oa==null?void 0:Oa.can_managed)&&se.createElement("div",{className:"text-12px-rem c-white flex item-center gap-10px-rem"},se.createElement("div",{className:"flex current item-center rounded-full gap-6px-rem text-nowrap",style:{background:"#202F4F",padding:"5rem 8rem"},onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"}}})}},se.createElement("span",{className:"iconfont icon-tianjiatixing",style:{fontSize:"12rem"}})," \u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"),se.createElement("div",{className:"flex current item-center rounded-full gap-6px-rem text-nowrap",style:{background:"#202F4F",padding:"5rem 8rem"},onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u7F16\u8F91\u80FD\u529B\u56FE\u8C31"}}})}},se.createElement("span",{className:"iconfont icon-bianji13",style:{fontSize:"12rem"}})," \u7F16\u8F91\u80FD\u529B\u56FE\u8C31"),se.createElement("div",{className:"flex current item-center rounded-full gap-6px-rem text-nowrap",style:{background:"#202F4F",padding:"5rem 8rem"},onClick:()=>{Bt.default.confirm({title:"\u5220\u9664\u80FD\u529B\u56FE\u8C31",icon:null,centered:!0,width:"500rem",content:se.createElement(se.Fragment,null,se.createElement("div",{className:"text-16px-rem c-black ",style:{marginBottom:"10rem"}},"\u8BF7\u786E\u8BA4\u662F\u5426\u9700\u8981\u5220\u9664\u300A",ro==null?void 0:ro.name,"\u300B\u80FD\u529B\u56FE\u8C31\uFF1F\u5220\u9664\u540E\uFF0C\u5C06\u65E0\u6CD5\u6062\u590D\uFF0C\u8BF7\u8C28\u614E\u64CD\u4F5C\u3002"),se.createElement(fv.Z,{ref:Ti=>va.current=Ti})),okText:"\u786E\u8BA4\u5220\u9664",onOk:()=>Rp(void 0,null,function*(){if(va.current.onVerify())return Promise.reject();const Ti=yield(0,Le.pf)({id:ro==null?void 0:ro.id,subject_id:di==null?void 0:di.pathId});(Ti==null?void 0:Ti.status)===0&&(Rt.ZP.success("\u5220\u9664\u6210\u529F"),so())})})}},se.createElement("span",{className:"iconfont icon-shanchu17",style:{fontSize:"12rem"}})," \u5220\u9664\u80FD\u529B\u56FE\u8C31"))),se.createElement("div",{className:"flex",style:{marginTop:"30rem",gap:"10rem"}},se.createElement("div",{className:"minW-0 flex",style:{flex:"1.5"}},[{title:"\u4E3B\u80FD\u529B\uFF08\u4E2A\uFF09",value:(qi=Xo==null?void 0:Xo.data)==null?void 0:qi.total_count,img:ig},{title:"\u5B50\u80FD\u529B\uFF08\u4E2A\uFF09",value:(aa=Xo==null?void 0:Xo.data)==null?void 0:aa.total_children_count,img:Cg}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"flex-1 minW-0 flex flex-col item-center",style:{gap:"10rem"}},se.createElement("div",{style:{fontSize:"30rem",textShadow:"0 1rem 10rem #0096FC"}},Ti==null?void 0:Ti.value),se.createElement("div",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.title),se.createElement("img",{src:Ti==null?void 0:Ti.img,width:"166rem",height:"160rem",style:{width:"166rem",height:"160rem",marginTop:"-15rem"}})))),se.createElement("div",{className:"flex-1 minW-0 flex flex-col justify-between",style:{gap:"70rem"}},[{title:"\u8986\u76D6\u77E5\u8BC6\u70B9",value:(ca=Xo==null?void 0:Xo.data)==null?void 0:ca.total_knowledge_count,unit:"\u4E2A",percent:(Ra=Xo==null?void 0:Xo.data)==null?void 0:Ra.knowledge_rate,percenttitle:"\u5360\u603B\u77E5\u8BC6\u70B9"},{title:"\u8986\u76D6\u8D44\u6E90\u6570",value:(Ei=Xo==null?void 0:Xo.data)==null?void 0:Ei.total_resource_count,unit:"\u4E2A",percent:(Si=Xo==null?void 0:Xo.data)==null?void 0:Si.resource_rate,percenttitle:"\u5360\u603B\u8D44\u6E90\u6570"}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"flex-1 minW-0 flex relative",style:{gap:"20rem"}},se.createElement("div",{className:"flex flex-col justify-between",style:{marginLeft:"40rem"}},se.createElement("div",{style:{fontSize:"14rem",whiteSpace:"nowrap"}},Ti==null?void 0:Ti.title),se.createElement("div",{style:{fontSize:"26rem",textShadow:(Ti==null?void 0:Ti.value)==0?"":"0 1rem 10rem #0096FC",opacity:(Ti==null?void 0:Ti.value)==0?.9:1}},Ti==null?void 0:Ti.value,se.createElement("span",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.unit))),se.createElement(ll.Z,{type:"dashboard",percent:Ti==null?void 0:Ti.percent,gapDegree:178,strokeWidth:10,className:"absolute",style:{right:"30rem",top:"15rem"},trailColor:"#1E2E72",strokeColor:{"0%":"#0E5FFF","50%":"#2DE1FD","100%":"#2DE1FD"},strokeLinecap:"round",format:Ea=>se.createElement("div",{className:"c-white",style:{fontSize:"12rem",textAlign:"center",marginTop:"-35rem"}},Ea,"%",se.createElement("br",null),se.createElement("br",null),Ti==null?void 0:Ti.percenttitle)})))))),se.createElement("div",{className:"flex-1",style:{padding:"20rem",background:"rgba(32, 47, 79, .34)",borderRadius:"12rem"}},se.createElement("div",{style:{marginBottom:"20rem"}},"\u4E3B\u80FD\u529B\u5B66\u4E60\u60C5\u51B5"),Oa!=null&&Oa.can_managed?se.createElement("div",{className:"flex",style:{gap:"10rem"}},se.createElement("div",{className:"minW-0 flex flex-col flex-1",style:{gap:"13rem"}},[{title:"\u5B66\u4E60\u4EBA\u6570",value:(ba=Xo==null?void 0:Xo.data)==null?void 0:ba.study_count,unit:"",img:ev,bg:"rgba(68, 95, 232, 0.4)"},{title:"\u5B66\u4E60\u5B8C\u6210\u7387",value:(Sa=Xo==null?void 0:Xo.data)==null?void 0:Sa.complete_rate,unit:"%",img:tv,bg:"rgba(182, 129, 0, .4)"},{title:"\u5B66\u4E60\u638C\u63E1\u7387",value:(Uo=Xo==null?void 0:Xo.data)==null?void 0:Uo.grasp_rate,unit:"%",img:Bg,bg:"rgba(6, 145, 127, .4)"}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"relative",style:{borderRadius:"6rem",padding:"20rem",background:Ti==null?void 0:Ti.bg}},se.createElement("div",{style:{fontSize:"14rem",color:"rgba(255,255,255,.8)"}},Ti==null?void 0:Ti.title),se.createElement("div",{style:{fontSize:"26rem"}},Ti==null?void 0:Ti.value,se.createElement("span",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.unit)),se.createElement("img",{className:"absolute",style:{right:"6rem",bottom:"6rem"},height:"35rem",src:Ti==null?void 0:Ti.img})))),se.createElement("div",{className:"flex-2 minW-0"},se.createElement(Lh.Z,{dataSource:_l,legend:{top:null,icon:"roundRect",bottom:10,left:"center",itemWidth:14,itemGap:15,textStyle:{color:"#fff"},formatter:Ti=>Ti}}))):se.createElement("div",{style:{display:"grid",gap:"20rem",gridTemplateColumns:"1fr 1fr"}},ko==null?void 0:ko.map((Ti,oa)=>se.createElement("div",{key:oa,className:"relative c-white",style:{padding:"22rem 30rem",background:Ti==null?void 0:Ti.bg,borderRadius:"6rem"}},se.createElement("img",{src:Ti==null?void 0:Ti.img,width:"43rem",height:"43rem",className:"absolute",style:{right:"22rem",top:"22rem"}}),se.createElement("div",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.title),se.createElement("div",{className:" blod",style:{marginTop:"10rem",fontSize:"26rem",lineHeight:"26rem"}},Ti==null?void 0:Ti.value,se.createElement("span",{style:{fontSize:"14rem"}},Ti==null?void 0:Ti.unit)),se.createElement("div",{style:{fontSize:"12rem",marginTop:"26rem"}},se.createElement("div",null,Ti==null?void 0:Ti.ProgressTitle,Ti==null?void 0:Ti.percent,"%"),se.createElement(ll.Z,{percent:Ti==null?void 0:Ti.percent,showInfo:!1,trailColor:Ti==null?void 0:Ti.trailColor,strokeColor:Ti==null?void 0:Ti.strokeColor,style:{marginBottom:"0",marginLeft:"0"}}))))))),se.createElement("div",{className:"flex-2 minW-0 flex item-center justify-center relative"},(Oa==null?void 0:Oa.can_managed)&&se.createElement("div",{className:"absolute flex item-center gap-16px-rem",style:{top:0,right:0}},Ca.get("type")==="classrooms"&&se.createElement("div",{className:`current flex item-center ${vf.ChangeBut}`,onClick:()=>{je.history.push(`/knowledgegraph/${di==null?void 0:di.pathId}/statistics/abilitymap/${ro==null?void 0:ro.id}?type=classrooms&tabs=5`)}},se.createElement("span",{style:{fontSize:"14rem"}},"\u6570\u636E\u7EDF\u8BA1")),se.createElement("div",{className:`current flex item-center ${vf.ChangeBut}`,onClick:()=>{(0,Xt.xg)(`/knowledgegraph/${di.pathId}/abilityMap/edit/${ro==null?void 0:ro.id}${window.location.search}`)}},se.createElement("span",{className:"iconfont icon-dingbu-qiehuanbanben",style:{fontSize:"14rem"}})," \u7F16\u8F91\u80FD\u529B\u76EE\u6807"),Ca.get("type")!=="classrooms"&&se.createElement("div",{className:`current flex item-center ${vf.ChangeBut}`,onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u53D1\u9001\u81F3\u6559\u5B66\u8BFE\u5802",params:{type:"goal"}}}})}},se.createElement("span",{className:"iconfont icon-dingbu-qiehuanbanben",style:{fontSize:"14rem"}})," \u53D1\u9001\u81F3\u8BFE\u5802")),se.createElement("img",{src:$h,className:"absolute",width:"1532rem",height:"100%",style:{left:"50%",pointerEvents:"none",transform:"translateX(-61%)"}}),se.createElement(Q0,{DataProps:((Ua=Xo==null?void 0:Xo.data)==null?void 0:Ua.ability_goals)||[],className:"c-white",style:{backgroundSize:"auto 100%",height:"710rem",width:"710rem"}}))):se.createElement("div",{className:"w-full c-white text-14px-rem flex flex-col justify-center",style:{padding:"70rem 150rem",minHeight:"100vh"}},se.createElement("div",{className:"flex item-center justify-center gap-30px-rem"},(Oa==null?void 0:Oa.can_managed)&&se.createElement("div",{className:"current rounded-full py-10px-rem px-40px-rem",style:{background:"linear-gradient( 90deg, #272B95 0%, #295BAB 100%)"},onClick:()=>{Fe({type:"pathsDetail/save",payload:{actionTabs:{key:"\u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"}}})}},"\u521B\u5EFA\u80FD\u529B\u56FE\u8C31")),se.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem mt-40px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}}," \u8BFE\u7A0B\u80FD\u529B\u56FE\u8C31\u662F\u4EC0\u4E48\uFF1F "),se.createElement("div",{className:"rounded-8px-rem py-16px-rem px-20px-rem w-full mt-20px-rem relative",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},"\u80FD\u529B\u56FE\u8C31\u901A\u8FC7\u6574\u5408\u8BFE\u7A0B\u57F9\u517B\u76EE\u6807\u4E0E\u77E5\u8BC6\u70B9\uFF0C\u6784\u5EFA\u4EE5\u80FD\u529B\u57F9\u517B\u4E3A\u6838\u5FC3\u7684\u6210\u957F\u5730\u56FE\u3002\u5B83\u6E05\u6670\u6807\u6CE8\u6BCF\u4E00\u95E8\u8BFE\u7A0B\u9700\u638C\u63E1\u7684\u6838\u5FC3\u80FD\u529B\uFF0C\u5C06\u62BD\u8C61\u7684\u77E5\u8BC6\u8F6C\u5316\u4E3A\u53EF\u91CF\u5316\u3001\u53EF\u8FFD\u8E2A\u7684\u80FD\u529B\u5750\u6807\uFF0C\u8BA9\u5B66\u4E60\u6709\u65B9\u5411\uFF0C\u6210\u957F\u6709\u8F68\u8FF9\u3002",se.createElement("img",{className:"absolute",src:he(23280),style:{width:"66rem",height:"83rem",right:"8rem",bottom:"16rem"}})),se.createElement("div",{className:"flex gap-40px-rem mt-40px-rem"},se.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},se.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(37618)}) 0 0 /100% 100% no-repeat`,width:"340rem",height:"40rem",color:"#F9F9F9"}}," \u8BFE\u7A0B\u80FD\u529B\u56FE\u8C31\u5728\u5E73\u53F0\u7684\u5E94\u7528 "),se.createElement("div",{className:"w-full flex justify-between gap-32px-rem relative"},se.createElement("img",{className:"absolute",style:{width:"97rem",height:"42rem",left:"200rem",top:"80rem"},src:he(79989)}),se.createElement("img",{className:"absolute",style:{width:"97rem",height:"42rem",right:"210rem",top:"80rem"},src:he(73486)}),[{title:"\u591A\u7EF4\u80FD\u529B\u56FE\u8C31",desc:"\u4E00\u4E2A\u8BFE\u7A0B\u4E0B\u652F\u6301\u6784\u5EFA\u591A\u4E2A\u80FD\u529B\u56FE\u8C31\uFF0C\u5B66\u751F\u53EF\u4EE5\u6839\u636E\u4E2A\u4EBA\u4E13\u4E1A\u3001\u5B66\u4E60\u60C5\u51B5\u7B49\u56E0\u7D20\uFF0C\u9009\u62E9\u4E0D\u540C\u7684\u80FD\u529B\u56FE\u8C31\u8FDB\u884C\u5B66\u4E60\u3002",img:he(4212)},{title:"\u6570\u636E\u5173\u8054",desc:"\u652F\u6301\u5C06\u5B66\u751F\u5728\u6559\u5B66\u8BFE\u5802\u3001\u77E5\u8BC6\u56FE\u8C31\u3001\u5B66\u4E60\u8DEF\u5F84\u4E2D\u7684\u5B66\u4E60\u60C5\u51B5\u8FDB\u884C\u6C47\u603B\u7EDF\u8BA1\uFF0C\u5206\u6790\u51FA\u5B66\u751F\u5728\u80FD\u529B\u56FE\u8C31\u4E2D\u7684\u638C\u63E1\u60C5\u51B5\u3002",img:he(50356)},{title:"\u80FD\u529B\u5B66\u4E60\u8DEF\u5F84",desc:"\u652F\u6301\u6839\u636E\u80FD\u529B\u56FE\u8C31\u4E2D\u7684\u4E3B\u80FD\u529B\u548C\u5B50\u80FD\u529B\u751F\u6210\u5BF9\u5E94\u5B66\u4E60\u8DEF\u5F84\uFF0C\u4FBF\u4E8E\u5B66\u751F\u6309\u7167\u5BF9\u7528\u8DEF\u5F84\u8FDB\u884C\u5B66\u4E60\u3002",img:he(40362)}].map((Ti,oa)=>se.createElement("div",{key:oa,className:`flex flex-col item-center ${oa!=1?"mt-64px-rem":""}`},se.createElement("img",{src:Ti==null?void 0:Ti.img,style:{width:"127rem",height:"119rem"}}),se.createElement("div",{className:"px-20px-rem pb-20px-rem",style:{background:`url(${he(14760)}) 0 0 / 100% 100% no-repeat`}},Ti==null?void 0:Ti.title),se.createElement("div",{className:"mt-6px-rem",style:{width:"20rem",height:"10rem",background:"#7A99DD",clipPath:"polygon(100% 0, 0 0, 50% 100%)",WebkitClipPath:"polygon(100% 0, 0 0, 50% 100%)"}}),se.createElement("div",{className:"px-20px-rem py-20px-rem mt-6px-rem rounded-8px-rem",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259",color:"rgba(255,255,255,0.8)",width:"236rem",height:"153rem"}},Ti==null?void 0:Ti.desc))))),se.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},se.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}}," \u521B\u5EFA\u80FD\u529B\u56FE\u8C31\u6CE8\u610F\u4E8B\u9879 "),se.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-10px-rem"},[{desc:se.createElement("div",{className:"flex flex-col gap-4px-rem"},se.createElement("div",{className:"text-16px-rem"},"\u80FD\u529B\u56FE\u8C31\u6784\u5EFA"),se.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u80FD\u529B\u56FE\u8C31\u57FA\u4E8E\u5B66\u4E60\u8DEF\u5F84\u548C\u77E5\u8BC6\u56FE\u8C31\u521B\u5EFA\uFF0C\u5728\u521B\u5EFA\u80FD\u529B\u56FE\u8C31\u524D\uFF0C\u9700\u521B\u5EFA\u77E5\u8BC6\u56FE\u8C31\u548C\u5B66\u4E60\u8DEF\u5F84\u3002"))},{desc:se.createElement("div",{className:"flex flex-col gap-4px-rem"},se.createElement("div",{className:"text-16px-rem"},"\u5B50\u80FD\u529B/\u4E3B\u80FD\u529B\u638C\u63E1\u5EA6\u8BA1\u7B97"),se.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},se.createElement("span",{className:"c-white"},"\u5B50\u80FD\u529B\uFF1A"),"\u6839\u636E\u5F53\u524D\u5173\u8054\u7684\u8D44\u6E90\u638C\u63E1\u8FDB\u884C\u8BA1\u7B97\uFF0C\u6240\u6709\u8D44\u6E90\u638C\u63E1\u7387\u8FBE\u5230\u8BBE\u7F6E\u6570\u503C\u540E, \u8868\u793A\u638C\u63E1\u6539\u8BE5\u80FD\u529B\uFF1B",se.createElement("br",null),se.createElement("span",{className:"c-white"},"\u4E3B\u80FD\u529B\uFF1A"),"\u6839\u636E\u8BE5\u4E3B\u80FD\u529B\u4E0B\u7684\u5B50\u80FD\u529B\u8FDB\u884C\u8BA1\u7B97\uFF0C\u6240\u6709\u5B50\u80FD\u529B\u638C\u63E1\u540E\uFF0C\u8868\u793A\u4E3B\u80FD\u529B\u638C\u63E1\u3002"))},{desc:se.createElement("div",{className:"flex flex-col gap-4px-rem"},se.createElement("div",{className:"text-16px-rem"},"\u4E3B\u80FD\u529B/\u5B50\u80FD\u529B\u6570\u91CF\u9650\u5236"),se.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u4E00\u4E2A\u80FD\u529B\u56FE\u8C31\u4E2D\u6700\u591A\u521B\u5EFA8\u4E2A\u4E3B\u80FD\u529B\uFF0C\u4E3B\u80FD\u529B\u4E0B\u4E0D\u9650\u5236\u5B50\u80FD\u529B\u6570\u91CF\uFF0C\u5B50\u80FD\u529B\u4E0B\u4E0D\u9650\u5236\u8D44\u6E90\u77E5\u8BC6\u70B9\u5173\u8054\u6570\u91CF\u3002"))}].map((Ti,oa)=>se.createElement("div",{key:oa,className:"px-16px-rem py-22px-rem w-full flex item-center gap-20px-rem rounded-8px-rem",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},se.createElement("div",{className:"text-18px-rem flex item-center justify-center rounded-4px-rem",style:{background:"rgba(48,97,208,0.2)",width:"70rem",height:"80rem"}},(oa+1).toString().padStart(2,"0")),se.createElement("div",{className:"flex-1 minW-0"},Ti==null?void 0:Ti.desc))))))),(xo==null?void 0:xo.key)=="\u5207\u6362\u80FD\u529B\u56FE\u8C31"&&se.createElement(Qs.E_,{type:"goal",open:(xo==null?void 0:xo.key)=="\u5207\u6362\u80FD\u529B\u56FE\u8C31",title:"\u9009\u62E9\u80FD\u529B\u56FE\u8C31",currentSeleteData:ro,onFinish:()=>{so()}}),((xo==null?void 0:xo.key)=="\u65B0\u5EFA\u80FD\u529B\u56FE\u8C31"||(xo==null?void 0:xo.key)=="\u7F16\u8F91\u80FD\u529B\u56FE\u8C31")&&se.createElement(Qs.DZ,{currentSeleteData:ro,onFinish:()=>{so()}}))};var vp=(0,je.connect)(({pathsDetail:Oe})=>({pathsDetail:Oe}))(Ig),Og=he(97846),Ol=he(59301),mp=Object.defineProperty,Ap=Object.getOwnPropertySymbols,M0=Object.prototype.hasOwnProperty,yp=Object.prototype.propertyIsEnumerable,jp=(Oe,Fe,Me)=>Fe in Oe?mp(Oe,Fe,{enumerable:!0,configurable:!0,writable:!0,value:Me}):Oe[Fe]=Me,gv=(Oe,Fe)=>{for(var Me in Fe||(Fe={}))M0.call(Fe,Me)&&jp(Oe,Me,Fe[Me]);if(Ap)for(var Me of Ap(Fe))yp.call(Fe,Me)&&jp(Oe,Me,Fe[Me]);return Oe},vv=(Oe,Fe)=>{var Me={};for(var jt in Oe)M0.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&Ap)for(var jt of Ap(Oe))Fe.indexOf(jt)<0&&yp.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},Zp=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});const Xp=Oe=>{var Fe=Oe,{pathsDetail:Me,user:jt,globalSetting:Mn,loading:Tr,dispatch:Fr,activied:An,setactivied:_t}=Fe,Kn=vv(Fe,["pathsDetail","user","globalSetting","loading","dispatch","activied","setactivied"]),wr,ra,qi,aa,ca,Ra,Ei,Si,ba;const{detail:Sa,actionTabs:Uo}=Me,Ua=(0,je.useParams)(),[Oa]=(0,je.useSearchParams)(),[xo,di]=(0,se.useState)([]),[Ca,va]=(0,se.useState)(),[ro,Pa]=(0,se.useState)(),[rl]=Ze.default.useForm(),[xl,Xo]=(0,se.useState)(!1),[_l,ts]=(0,se.useState)(!1),ko=(ra=(wr=Sa==null?void 0:Sa.route_nodes)==null?void 0:wr.find(oa=>oa==null?void 0:oa.is_choice))==null?void 0:ra.id;(0,se.useEffect)(()=>{Oa.get("uuid")&&va(Oa.get("uuid"))},[Oa.get("uuid")]);const Gr=[{name:"\u8BFE\u7A0B\u4FE1\u606F",key:1,content:Ol.createElement(ua,null),isshow:Oa.get("type")!=="classrooms"},{name:"\u8BFE\u7A0B\u56FE\u8C31",key:3,content:((aa=(qi=Me==null?void 0:Me.detail)==null?void 0:qi.nodes)==null?void 0:aa.length)<=1?Ol.createElement("div",{className:"w-full c-white text-14px-rem flex flex-col justify-center",style:{padding:"70rem 150rem",minHeight:"100vh"}},Ol.createElement("div",{className:"flex item-center justify-center gap-30px-rem"},((ca=Me==null?void 0:Me.detail)==null?void 0:ca.can_managed)&&Ol.createElement("div",{className:"current rounded-full py-10px-rem px-40px-rem",style:{background:"linear-gradient( 90deg, #272B95 0%, #295BAB 100%)"},onClick:()=>{ts(!0)}},"\u65B0\u5EFA\u56FE\u8C31"),((Ra=Me==null?void 0:Me.detail)==null?void 0:Ra.can_managed)&&Oa.get("type")!=="classrooms"&&Ol.createElement("div",{className:"current rounded-full py-10px-rem px-40px-rem flex item-center gap-4px-rem",style:{background:"linear-gradient( 90deg, #272B95 0%, #295BAB 100%)"},onClick:()=>Zp(void 0,null,function*(){let oa=yield(0,Ot.ZP)("/api/knowledge/v2/sync.json",{method:"post",body:{subject_id:Ua==null?void 0:Ua.pathId}});oa.status===0&&Rt.ZP.info(oa==null?void 0:oa.message)})},"\u751F\u6210\u56FE\u8C31",Ol.createElement(Bn.Z,{title:Ol.createElement("span",{className:"c-black"},"\u6839\u636E\u65E7\u7248\u77E5\u8BC6\u56FE\u8C31\u5185\u5BB9\u6216\u8BFE\u7A0B\u7AE0\u8282\u53CA\u8D44\u6E90\u5185\u5BB9\u81EA\u52A8\u751F\u6210\u77E5\u8BC6\u56FE\u8C31"),color:"#fff"},Ol.createElement(ah.Z,{style:{color:"#fff",marginLeft:5,marginTop:0},rev:void 0})))),Ol.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem mt-40px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}},"\u8BFE\u7A0B\u77E5\u8BC6\u56FE\u8C31\u662F\u4EC0\u4E48\uFF1F"),Ol.createElement("div",{className:"rounded-8px-rem py-16px-rem px-20px-rem w-full mt-20px-rem relative",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},"\u8BFE\u7A0B\u77E5\u8BC6\u56FE\u8C31\u662F\u4E00\u5F20\u667A\u80FD\u5316\u7684\u77E5\u8BC6\u5BFC\u822A\u5730\u56FE\uFF0C\u901A\u8FC7AI\u6280\u672F\u5C06\u96F6\u6563\u77E5\u8BC6\u70B9\u4E32\u8054\u6210\u903B\u8F91\u7F51\u7EDC\uFF0C\u6E05\u6670\u5C55\u73B0\u5B66\u79D1\u6838\u5FC3\u6982\u5FF5\u3001\u80FD\u529B\u5C42\u7EA7\u4E0E\u5173\u8054\u8DEF\u5F84\u3002\u5B83\u5982\u540C\u4E00\u4F4D\u201C\u8D85\u7EA7\u5BFC\u5E08\u201D\uFF0C\u4E3A\u4F60\u6307\u660E\u5B66\u4EC0\u4E48\u3001\u600E\u4E48\u5B66\u3001\u5B66\u5230\u54EA\u3002",Ol.createElement("img",{className:"absolute",src:he(23280),style:{width:"66rem",height:"83rem",right:"8rem",bottom:"16rem"}})),Ol.createElement("div",{className:"flex gap-40px-rem mt-40px-rem"},Ol.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},Ol.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(37618)}) 0 0 /100% 100% no-repeat`,width:"340rem",height:"40rem",color:"#F9F9F9"}}," \u8BFE\u7A0B\u77E5\u8BC6\u56FE\u8C31\u5728\u5E73\u53F0\u7684\u5E94\u7528 "),Ol.createElement("div",{className:"w-full flex flex-wrap justify-between",style:{background:`url(${he(30019)}) center / auto 100% no-repeat`,height:"446rem",gap:"54rem 200rem"}},[{title:"\u5B66\u4E60\u8DEF\u5F84\u751F\u6210",order:1,desc:"\u5C06\u77E5\u8BC6\u56FE\u8C31\u4E2D\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5173\u7CFB\uFF08\u5305\u542B\u3001\u524D/\u540E\u7EED\uFF09\u548C\u8282\u70B9\u6807\u7B7E\uFF08\u5982\uFF1A\u6587\u79D1/\u7406\u79D1\u3001\u57FA\u7840/\u8FDB\u9636/\u7A81\u7834\uFF09\u5FEB\u901F\u81EA\u52A8\u6784\u5EFA\u5B66\u4E60\u8DEF\u5F84\u3002"},{title:"\u80FD\u529B\u56FE\u8C31\u6784\u5EFA",order:2,desc:"\u5C06\u77E5\u8BC6\u56FE\u8C31\u4E2D\u7684\u8282\u70B9\uFF0C\u6309\u7167\u80FD\u529B\u7EF4\u5EA6\uFF0C\u6784\u5EFA\u8BFE\u7A0B\u80FD\u529B\u56FE\u8C31\uFF0C\u7528\u4E8E\u68C0\u9A8C\u5B66\u751F\u5BF9\u8BFE\u7A0B\u57F9\u517B\u80FD\u529B\u7684\u638C\u63E1\u3002"},{title:"\u8BFE\u5802\u5B66\u60C5\u5206\u6790",order:4,desc:"\u652F\u6301\u4E00\u952E\u5C06\u77E5\u8BC6\u56FE\u8C31\u53D1\u9001\u81F3\u6559\u5B66\u8BFE\u5802\uFF0C\u8BA9\u5B66\u751F\u5728\u6559\u5B66\u8BFE\u5802\u4E2D\u5B8C\u6210\u5B66\u4E60\u4EFB\u52A1\uFF0C\u5E76\u53EF\u4EE5\u6839\u636E\u5B66\u751F\u5B66\u4E60\u60C5\u51B5\u8FDB\u884C\u5B66\u60C5\u5206\u6790\u548C\u5B66\u60C5\u9884\u8B66\u3002"},{title:"\u5B66\u4E60\u8D44\u6E90\u63A8\u8350",order:3,desc:"\u5229\u7528\u77E5\u8BC6\u56FE\u8C31\u4E2D\u7684\u8282\u70B9\u5173\u7CFB\u548C\u6807\u7B7E\u5206\u7C7B\uFF0C\u57FA\u4E8E\u5B66\u751F\u5B66\u4E60\u53CA\u638C\u63E1\u5185\u5BB9\u4E3A\u5B66\u751F\u63A8\u8350\u8584\u5F31\u70B9\u3001\u63D0\u5347\u70B9\u3001\u7A81\u7834\u70B9\u8D44\u6E90\u5B66\u4E60\u3002"}].map((oa,Ea)=>Ol.createElement("div",{key:Ea,className:"py-10px-rem px-20px-rem flex flex-col gap-10px-rem rounded-8px-rem",style:{width:"234rem",height:"160rem",background:"rgba(70,99,162,0.16)",border:"1rem solid #203259",order:oa==null?void 0:oa.order}},Ol.createElement("div",{className:"text-16px-rem"},Ea+1,". ",oa==null?void 0:oa.title),Ol.createElement("div",{style:{color:"rgba(255,255,255,0.8)"}},oa==null?void 0:oa.desc))))),Ol.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-20px-rem"},Ol.createElement("div",{className:"pl-40px-rem text-20px-rem pt-2px-rem",style:{background:`url(${he(63232)}) 0 0 /100% 100% no-repeat`,width:"250rem",height:"40rem",color:"#F9F9F9"}}," \u521B\u5EFA\u77E5\u8BC6\u56FE\u8C31\u6CE8\u610F\u4E8B\u9879 "),Ol.createElement("div",{className:"flex-1 minW-0 flex flex-col gap-10px-rem"},[{desc:Ol.createElement("div",{className:"flex flex-col gap-4px-rem"},Ol.createElement("div",{className:"text-16px-rem"},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u7C7B\u578B"),Ol.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u4E3B\u8981\u5206\u4E3A\u4E24\u79CD\u7C7B\u578B\uFF1A",Ol.createElement("span",{style:{color:"#FFE698"}},"\u6807\u7B7E\u8282\u70B9\u548C\u8D44\u6E90\u8282\u70B9"),Ol.createElement("br",null),Ol.createElement("span",{className:"c-white"},"\u6807\u7B7E\u8282\u70B9\uFF1A"),"\u7528\u4E8E\u521B\u5EFA\u6587\u672C\u5185\u5BB9\uFF0C\u5982\u7AE0\u8282\u3001\u77E5\u8BC6\u70B9\u3002",Ol.createElement("br",null),Ol.createElement("span",{className:"c-white"},"\u8D44\u6E90\u8282\u70B9\uFF1A"),"\u7528\u4E8E\u521B\u5EFA\u8D44\u6E90\u5185\u5BB9\uFF0C\u53EF\u4EE5\u9009\u62E9\u5E73\u53F0\u8D44\u6E90\u3001\u672C\u5730\u4E0A\u4F20\u6587\u4EF6\u548C\u5916\u94FE\u3002",Ol.createElement("br",null)))},{desc:Ol.createElement("div",{className:"flex flex-col gap-4px-rem"},Ol.createElement("div",{className:"text-16px-rem"},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u6807\u7B7E"),Ol.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u77E5\u8BC6\u56FE\u8C31\u6807\u7B7E\u53EF\u4EE5\u7528\u6237\u81EA\u5B9A\u4E49\u6DFB\u52A0\uFF0C\u8282\u70B9\u6807\u7B7E\u4E3B\u8981\u7528\u4E8E\u7B5B\u9009\u8282\u70B9\uFF0C\u5982\u6587\u79D1/\u7406\u79D1/\u5DE5\u79D1\u3001\u7B80\u5355/\u8FDB\u9636/\u56F0\u96BE\u3002",Ol.createElement("br",null),Ol.createElement("span",{style:{color:"#FFE698"}},"\u5EFA\u8BAE\u521B\u5EFA\u56FE\u8C31\u65F6\uFF0C\u5C06\u6807\u7B7E\u540C\u6B65\u5EFA\u7ACB\uFF0C\u540E\u7EED\u5728\u521B\u5EFA\u5B66\u4E60\u8DEF\u5F84\u548C\u80FD\u529B\u56FE\u8C31\u65F6\u53EF\u4EE5\u4F7F\u7528\u3002")))},{desc:Ol.createElement("div",{className:"flex flex-col gap-4px-rem"},Ol.createElement("div",{className:"text-16px-rem"},"\u77E5\u8BC6\u56FE\u8C31\u8282\u70B9\u5173\u7CFB"),Ol.createElement("div",{className:"",style:{color:"rgba(255,255,255,0.8)"}},"\u77E5\u8BC6\u56FE\u8C31\u5173\u7CFB",Ol.createElement("span",{style:{color:"#FFE698"}},"\u6709\u5305\u542B/\u88AB\u5305\u542B\u3001\u524D\u5E8F/\u540E\u7EED\u3001\u5173\u8054\u3002"),Ol.createElement("br",null),Ol.createElement("span",{style:{color:"#FFE698"}},"\u5EFA\u8BAE\u521B\u5EFA\u56FE\u8C31\u65F6\uFF0C\u5C06\u5173\u7CFB\u540C\u6B65\u5EFA\u7ACB\uFF0C\u5728\u521B\u5EFA\u5B66\u4E60\u8DEF\u5F84\u65F6\uFF0C\u5C06\u6839\u636E\u524D\u5E8F/\u540E\u7EED\u5173\u7CFB\u751F\u6210\u5B66\u4E60\u8DEF\u5F84\u3002")))}].map((oa,Ea)=>Ol.createElement("div",{key:Ea,className:"py-22px-rem px-16px-rem w-full flex item-center gap-20px-rem rounded-8px-rem",style:{background:"rgba(70,99,162,0.16)",border:"1rem solid #203259"}},Ol.createElement("div",{className:"text-18px-rem flex item-center justify-center rounded-4px-rem",style:{background:"rgba(48,97,208,0.2)",width:"70rem",height:"80rem"}},(Ea+1).toString().padStart(2,"0")),Ol.createElement("div",{className:"flex-1 minW-0"},oa==null?void 0:oa.desc))))))):Ol.createElement(qh,{settpacti:va,tpacti:Ca}),isshow:!0},{name:"\u5B66\u4E60\u8DEF\u5F84",key:2,content:Ol.createElement(Ac,{setxxljac:Pa,xxljac:ro}),isshow:!0},{name:"\u4EA4\u6D41\u53CD\u9988",key:4,content:Ol.createElement(Zn,null),isshow:Oa.get("type")!=="classrooms"},{name:"\u80FD\u529B\u56FE\u8C31",key:5,content:Ol.createElement(vp,null),isshow:!0},{name:"\u6570\u636E\u7EDF\u8BA1",key:6,content:Ol.createElement(Og.default,{learningpathId:ko,isCompontent:!0}),isshow:Oa.get("type")=="classrooms"&&ko&&(0,ol.GJ)()}].filter(oa=>oa==null?void 0:oa.isshow);(0,se.useEffect)(()=>{var oa,Ea;if((oa=Me==null?void 0:Me.detail)!=null&&oa.nodes){let Yo=[...(Ea=Me==null?void 0:Me.detail)==null?void 0:Ea.nodes];di(Yo==null?void 0:Yo.splice(1))}},[(Ei=Me==null?void 0:Me.detail)==null?void 0:Ei.nodes]),(0,se.useEffect)(()=>Fa.Z.subscribe("create_a_knowledge_map",()=>{ts(!0)}),[]);const so=(oa={})=>{Fr({type:"pathsDetail/getKnowledgeGraphs",payload:gv({graphable_type:Oa.get("type")==="classrooms"?"course":"subject",graphable_id:Ua.pathId},oa)})},Ti=oa=>Zp(void 0,null,function*(){var Ea,Yo,Eo,Ss,_s,il,Ks;const{nodeType:Kl,description:Hl,name:Hu,tags:Wc}=oa;Xo(!0);const Gs=yield(0,Ot.ZP)("/api/knowledge/v2/add_node.json",{method:"POST",body:{label:"\u56FE\u8C31",subject_id:Ua==null?void 0:Ua.pathId,properties:{description:Hl,rootNodeUuid:(Eo=(Yo=(Ea=Me==null?void 0:Me.detail)==null?void 0:Ea.nodes)==null?void 0:Yo[0])==null?void 0:Eo.uuid,name:Hu,nodeType:Kl[0],tags:(Wc==null?void 0:Wc.join("\uFF0C"))||"",color:"1"},relationships:[{startNodeUuid:(il=(_s=(Ss=Me==null?void 0:Me.detail)==null?void 0:Ss.nodes)==null?void 0:_s[0])==null?void 0:il.uuid,type:"\u5305\u542B"}]}});(Gs==null?void 0:Gs.status)===0&&(ts(!1),va((Ks=Gs==null?void 0:Gs.data)==null?void 0:Ks.uuid),_t(3),so({graphable_id:Ua==null?void 0:Ua.pathId})),Xo(!1)});return Ol.createElement("div",{className:co.content,style:{paddingTop:"20rem"}},Ol.createElement("div",{style:{padding:"0 40rem",position:"sticky",top:0,zIndex:99}},Ol.createElement(hp,{activied:An,setactivied:_t,TabsData:Gr,tplist:xo,settpacti:va,tpacti:Ca,setxxljac:Pa,xxljac:ro})),(Uo==null?void 0:Uo.key)=="\u53D1\u9001\u81F3\u6559\u5B66\u8BFE\u5802"&&Ol.createElement(Qs.NI,{onFinish:()=>{so()},type:(Si=Uo==null?void 0:Uo.params)==null?void 0:Si.type}),Ol.createElement(Bt.default,{open:_l,centered:!0,width:"1000rem",okText:"\u4FDD\u5B58",onCancel:()=>ts(!1),cancelText:"\u53D6\u6D88",afterClose:()=>{rl.resetFields()},confirmLoading:xl,onOk:()=>rl.submit(),title:"\u65B0\u589E\u77E5\u8BC6\u56FE\u8C31"},Ol.createElement("div",{className:co.modal},Ol.createElement("div",{className:co.mHead},"\u8282\u70B9\u5C5E\u6027"),Ol.createElement(Ze.default,{form:rl,scrollToFirstError:!0,layout:"horizontal",colon:!1,size:"large",labelCol:{flex:"110rem"},onFinish:Ti,className:co.form},Ol.createElement(Ze.default.Item,{label:"\u56FE\u8C31\u540D\u79F0",name:"name",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u8282\u70B9\u540D\u79F0"},{type:"string",max:60,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},Ol.createElement(Et.default,{maxLength:60,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),Ol.createElement(Ze.default.Item,{label:"\u7B80\u4ECB",name:"description",rules:[{type:"string",max:5e3,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},Ol.createElement(Et.default.TextArea,{maxLength:5e3,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),Ol.createElement(Ze.default.Item,{className:co.mType,label:Ol.createElement("span",null,"\u56FE\u8C31\u7C7B\u578B ",Ol.createElement(Bn.Z,{title:"\u5F53\u524D\u77E5\u8BC6\u56FE\u8C31\u7684\u7C7B\u578B\uFF0C\u5982\uFF1A\u5927\u7EB2\u56FE\u8C31\u3001\u80FD\u529B\u56FE\u8C31"},Ol.createElement(ah.Z,null))),name:"nodeType",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u8282\u70B9\u7C7B\u578B"}]},Ol.createElement(ot.Z,{subjectId:Ua==null?void 0:Ua.pathId,type:1}))))),Ol.createElement("div",{className:co.content},(ba=Gr.find(oa=>oa.key===An))==null?void 0:ba.content))};var K0=(0,je.connect)(({pathsDetail:Oe,user:Fe,loading:Me,globalSetting:jt})=>({pathsDetail:Oe,user:Fe,globalSetting:jt,loading:Me.models.index}))(Xp),Vp=he(59301),Ng=Object.getOwnPropertySymbols,mv=Object.prototype.hasOwnProperty,bp=Object.prototype.propertyIsEnumerable,Fg=(Oe,Fe)=>{var Me={};for(var jt in Oe)mv.call(Oe,jt)&&Fe.indexOf(jt)<0&&(Me[jt]=Oe[jt]);if(Oe!=null&&Ng)for(var jt of Ng(Oe))Fe.indexOf(jt)<0&&bp.call(Oe,jt)&&(Me[jt]=Oe[jt]);return Me},xp=(Oe,Fe,Me)=>new Promise((jt,Mn)=>{var Tr=_t=>{try{An(Me.next(_t))}catch(Kn){Mn(Kn)}},Fr=_t=>{try{An(Me.throw(_t))}catch(Kn){Mn(Kn)}},An=_t=>_t.done?jt(_t.value):Promise.resolve(_t.value).then(Tr,Fr);An((Me=Me.apply(Oe,Fe)).next())});function Ep(Oe){const Fe=(Mn,Tr)=>{if(Mn.localName===Tr)return Mn;for(let Fr=0,An=Mn;An=An.parentNode;Fr++){if(An.localName===Tr)return An;if(An==document.documentElement)return!1}},Me=Oe.target,jt=Fe(Me,"a");if(console.log([jt],jt==null?void 0:jt.href,44),!(jt!=null&&jt.href)&&Me.tagName.toUpperCase()==="IMG"){let Mn=Me.src||Me.getAttribute("src");Mn&&(Mn==null?void 0:Mn.indexOf("/images/avatars/User"))===-1&&(Oe.stopPropagation(),Oe.preventDefault(),Fa.Z.publish("preview-image",Mn))}}const Qp=Oe=>{var Fe=Oe,{pathsDetail:Me,globalSetting:jt,loading:Mn,dispatch:Tr}=Fe,Fr=Fg(Fe,["pathsDetail","globalSetting","loading","dispatch"]);const[An]=(0,je.useSearchParams)(),_t=(0,je.useParams)(),Kn=(0,se.useRef)(),[wr,ra]=(0,se.useState)((An==null?void 0:An.get("type"))!=="classrooms"?3:1);(0,se.useEffect)(()=>{An.get("tabs")&&ra(parseInt(An.get("tabs"))||3)},[An.get("tabs")]),(0,se.useEffect)(()=>{if(Kn.current)return Kn.current.addEventListener("mousedown",Ep),()=>{var aa;(aa=Kn.current)==null||aa.removeEventListener("mousedown",Ep)}},[Kn.current]),(0,se.useEffect)(()=>{_t.pathId&&qi()},[_t.pathId]),(0,se.useEffect)(()=>(Tr({type:"globalSetting/footerToggle",payload:!1}),()=>{Tr({type:"globalSetting/footerToggle",payload:!0})}),[]);const qi=()=>xp(void 0,null,function*(){const aa=yield Tr({type:"pathsDetail/getKnowledgeGraphs",payload:{graphable_type:An.get("type")==="classrooms"?"course":"subject",graphable_id:_t.pathId}});An.get("type")!="classrooms"&&(aa!=null&&aa.id)&&An.get("token")&&(location.href=location.pathname)});return Vp.createElement(vt.Z,{spinning:!1},Vp.createElement("section",{id:"knowledgegraphDetail",className:_o.bg,style:{background:An.get("type")!=="classrooms"?"#010A23":""}},Vp.createElement(Ni,null),Vp.createElement(K0,{activied:wr,setactivied:ra})))};var G0=(0,je.connect)(({pathsDetail:Oe,loading:Fe,globalSetting:Me})=>({pathsDetail:Oe,globalSetting:Me,loading:Fe}))(Qp)},20122:function(Hn,xr,he){"use strict";he.d(xr,{Z:function(){return $t}});var se=he(59301),je={tag:"tag___aFk2e",active:"active___xFrif",tagsModal:"tagsModal___PRPSO",btn:"btn___IfO8v",modal:"modal___X3fUd",mHead:"mHead___IvIZN",body:"body___FhLrG",add:"add___YJGg_",error:"error___JoLGM"},Bt=he(8591),Rt=he(43418),Dt=he(71418),dt=he(92832),Le=he(92310),Ze=he.n(Le),qe=he(22972),It=he(43332),Et=he(59301),vt=Object.defineProperty,Ot=Object.getOwnPropertySymbols,Ye=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable,pt=(Ft,Gt,_e)=>Gt in Ft?vt(Ft,Gt,{enumerable:!0,configurable:!0,writable:!0,value:_e}):Ft[Gt]=_e,mt=(Ft,Gt)=>{for(var _e in Gt||(Gt={}))Ye.call(Gt,_e)&&pt(Ft,_e,Gt[_e]);if(Ot)for(var _e of Ot(Gt))We.call(Gt,_e)&&pt(Ft,_e,Gt[_e]);return Ft},Jt=(Ft,Gt,_e)=>new Promise((Bn,ur)=>{var fn=et=>{try{gn(_e.next(et))}catch(nn){ur(nn)}},Xt=et=>{try{gn(_e.throw(et))}catch(nn){ur(nn)}},gn=et=>et.done?Bn(et.value):Promise.resolve(et.value).then(fn,Xt);gn((_e=_e.apply(Ft,Gt)).next())}),$t=({value:Ft=[],onChange:Gt,type:_e,subjectId:Bn})=>{const[ur,fn]=(0,se.useState)(!1),[Xt,gn]=(0,se.useState)([]),[et,nn]=(0,se.useState)([]),[Ct,Ln]=(0,se.useState)([]),[Dn,xn]=(0,se.useState)(""),[Dr,oi]=(0,se.useState)(""),[yt,tt]=(0,se.useState)(!1),[Rn,fi]=(0,se.useState)(!1),li=[{background:"#6236FF",borderColor:"#9D82FF"},{background:"#6DB9FF",borderColor:"#6DB9FF"},{background:"rgba(27,175,234,0.8)",borderColor:"#68D5FF"},{background:"#C1AC15",borderColor:"#DCC51C"},{background:"#E07E37",borderColor:"#F79046"},{background:"rgba(29,94,255,0.8)",borderColor:"#6D97FE"},{background:"#E75454",borderColor:"#FE8383"},{background:"#A557D8",borderColor:"#C57AF6"},{background:"#2CA768",borderColor:"#43CC86"},{background:"#1F9269",borderColor:"#38B588"},{background:"#CA7720",borderColor:"#E99338"},{background:"rgba(224,32,32,0.8)",borderColor:"#E02020"},{background:"rgba(255,126,15,0.8)",borderColor:"#FF7E0F"},{background:"rgba(29,94,255,0.8)",borderColor:"#1D5EFF"},{background:"#2BAC8E",borderColor:"#30CB9D"},{background:"#EE5D5D",borderColor:"#FF8181"},{background:"#7E5AFE",borderColor:"#9173FA"},{background:"#3ABCEF",borderColor:"#6FD6FF"},{background:"#B132C2",borderColor:"#C57AF6"},{background:"#46A4FB",borderColor:"#72BBFF"},{background:"#C1AC15",borderColor:"#DCC51C"},{background:"#E07E37",borderColor:"#F79046"},{background:"#1D5EFF",borderColor:"#6D97FE"},{background:"#2CA768",borderColor:"#43CC86"},{background:"#A557D8",borderColor:"#C57AF6"},{background:"#1F9269",borderColor:"#38B588"},{background:"#CA7720",borderColor:"#E99338"}],In=_e===1?"\u7C7B\u578B":"\u6807\u7B7E",an=_e===1?"0":"4";(0,se.useEffect)(()=>{ur&&(Ln(Ft),Xr())},[ur]);const Xr=()=>Jt(void 0,null,function*(){fi(!0);const qn=yield(0,qe.ZP)("/api/knowledge_items.json",{method:"get",params:{subject_id:Bn,item_type:an}});(qn==null?void 0:qn.status)===0&&(gn(qn==null?void 0:qn.data),nn((qn==null?void 0:qn.data)||[])),fi(!1)}),Or=qn=>Jt(void 0,null,function*(){var On;fi(!0);const Je=(On=et==null?void 0:et.find(Ce=>Ce.name===qn))==null?void 0:On.id,Ie=yield(0,qe.ZP)(`/api/knowledge_items/${Je}.json`,{method:"delete",body:{subject_id:Bn}});if((Ie==null?void 0:Ie.status)===0){Xr(),Bt.ZP.success("\u5220\u9664\u6210\u529F");return}fi(!1)}),zn=({title:qn="",style:On={},showDelete:Je=!0,modal:Ie=!1,active:Ce=!1,showdeletes:He=!1})=>{const we=(Lt=>Lt.split("").reduce((Zt,ar)=>Zt+ar.charCodeAt(0),0))(qn)%li.length,{background:Vt,borderColor:Cn}=li[we];return Et.createElement("div",{className:Ze()(je.tag,Ce?je.active:""),onClick:()=>{Ie&&(ur===1&&Ln([qn]),ur===2&&(Ct.includes(qn)?Ln(Ct.filter(Lt=>Lt!==qn)):Ln([...Ct,qn])))},style:mt({background:Vt,borderColor:Cn},On)},Et.createElement("span",null,qn),Je&&Et.createElement("i",{style:{display:!He&&"none"},onClick:Lt=>{Lt.stopPropagation(),Ie?Or(qn):Gt(Ft.filter(Zt=>Zt!==qn))},className:"iconfont icon-shanchu5"}))},Qn=()=>{Gt([...Ct]),fn(!1)},Jn=()=>Jt(void 0,null,function*(){if(!Dn.replace(/\s+/g,"")){oi(`${In}\u4E0D\u80FD\u4E3A\u7A7A`);return}if(Xt.includes(Dn)){oi(`\u8BE5${In}\u5DF2\u5B58\u5728\uFF0C\u8BF7\u52FF\u91CD\u590D\u6DFB\u52A0\uFF01`);return}fi(!0);const qn=yield(0,qe.ZP)("/api/knowledge_items.json",{method:"post",body:{subject_id:Bn,item_type:an,name:Dn}});if((qn==null?void 0:qn.status)===0){yield Xr(),tt(!1),Bt.ZP.success("\u6DFB\u52A0\u6210\u529F");return}fi(!1)});return Et.createElement("div",{className:je.tagsModal},_e===1&&Et.createElement(Et.Fragment,null,Ft==null?void 0:Ft.map((qn,On)=>Et.createElement(zn,{key:On,title:qn,showDelete:!1,style:{marginRight:"20rem"}})),Et.createElement("div",{onClick:()=>fn(1),style:{marginBottom:"20rem"},className:je.btn},Et.createElement("i",{className:"iconfont icon-genghuanguanliyuan1"}),Ft!=null&&Ft.length?"\u66F4\u6362":"\u9009\u62E9","\u7C7B\u578B")),_e===2&&Et.createElement(Et.Fragment,null,Ft==null?void 0:Ft.map((qn,On)=>Et.createElement(zn,{key:On,title:qn})),Et.createElement("div",{onClick:()=>fn(2),className:je.btn,style:{marginBottom:"10rem"}},Et.createElement("i",{className:"iconfont icon-tianjiatixing"}),Ft!=null&&Ft.length?"\u66F4\u6362":"\u9009\u62E9","\u6807\u7B7E")),Et.createElement(Rt.default,{open:!!ur,centered:!0,width:"1000rem",okText:"\u4FDD\u5B58",onCancel:()=>fn(!1),cancelText:"\u53D6\u6D88",afterClose:()=>{tt(!1),oi(""),xn("")},onOk:Qn,title:`\u9009\u62E9${In}`},Et.createElement("div",{className:je.modal},Et.createElement(Dt.Z,{spinning:Rn},Et.createElement("div",{className:je.mHead},Et.createElement("b",null),Et.createElement("span",null,`\u8282\u70B9${In}`,"\uFF08",Xt.length,"\uFF09"),Et.createElement("div",{onClick:()=>{yt||(tt(!0),oi(""),xn(""))},className:je.btn},Et.createElement("i",{className:"iconfont icon-tianjiatixing"}),"\u6DFB\u52A0")),Et.createElement("div",{className:je.body},!(Xt!=null&&Xt.length)&&!yt&&Et.createElement(It.Z,{style:{height:"230rem"}}),Xt==null?void 0:Xt.map((qn,On)=>Et.createElement(zn,{showDelete:!(Ct!=null&&Ct.includes(qn.name)),showdeletes:!!qn.id,modal:!0,style:{cursor:"pointer",verticalAlign:"center",marginTop:"10rem",marginBottom:"10rem"},active:Ct.includes(qn.name),key:On,title:qn.name})),yt&&Et.createElement("div",{className:je.add},Et.createElement(dt.default,{style:{width:"rem"},size:"large",value:Dn,onChange:qn=>{oi(""),xn(qn.target.value)}}),Et.createElement("i",{onClick:Jn,className:"iconfont icon-dui",style:{color:"#1B8565"}}),Et.createElement("i",{onClick:()=>tt(!1),className:"iconfont icon-shanchu10",style:{color:"#9096A3"}}),!!Dr&&Et.createElement("div",{className:je.error},Dr)))))))}},35743:function(Hn,xr,he){"use strict";var se=he(59301),je=Object.defineProperty,Bt=Object.getOwnPropertySymbols,Rt=Object.prototype.hasOwnProperty,Dt=Object.prototype.propertyIsEnumerable,dt=(It,Et,vt)=>Et in It?je(It,Et,{enumerable:!0,configurable:!0,writable:!0,value:vt}):It[Et]=vt,Le=(It,Et)=>{for(var vt in Et||(Et={}))Rt.call(Et,vt)&&dt(It,vt,Et[vt]);if(Bt)for(var vt of Bt(Et))Dt.call(Et,vt)&&dt(It,vt,Et[vt]);return It};const Ze=()=>`shadow-${Math.random().toString(36).slice(2,9)}`,qe=({percentage:It,startAngle:Et=270,strokeColor:vt="#42BECD",trackColor:Ot="#e6e6e6",innerBackgroundColor:Ye="#fff",text:We="",textColor:pt="#000",textSize:mt="1rem",textPadding:Jt="28rem",outerDiameter:Qt,innerDiameter:$t,maxTextLength:Ft=6,onClick:Gt,hoverEffect:_e=!0,style:Bn})=>{const[ur,fn]=(0,se.useState)(0),[Xt,gn]=(0,se.useState)(0),[et,nn]=(0,se.useState)(!1),Ct=Or=>{var zn,Qn;const Jn=parseFloat(Or),qn=parseFloat((Qn=(zn=document.documentElement)==null?void 0:zn.style)==null?void 0:Qn.fontSize);return Jn*qn},Ln=()=>{fn(Ct(Qt)),gn(Ct($t))};(0,se.useEffect)(()=>(Ln(),window.addEventListener("resize",Ln),()=>window.removeEventListener("resize",Ln)),[Qt,$t]);const Dn=ur/2,xn=Xt/2,Dr=(ur-Xt)/2,oi=Dn-Dr,yt=2*Math.PI*oi,tt=yt-It/100*yt,Rn=`rotate(${Et} ${Dn} ${Dn})`,li=((Or,zn)=>zn&&Or.length>zn?Or.slice(0,zn-1)+"...":Or)(We,Ft),In=()=>{_e&&nn(!0)},an=()=>{nn(!1)},Xr=Ct("4rem");return se.createElement("svg",{width:ur,height:ur,viewBox:`0 0 ${ur} ${ur}`,xmlns:"http://www.w3.org/2000/svg",onClick:Gt,onMouseEnter:In,onMouseLeave:an,style:Le({cursor:Gt?"pointer":"default"},Bn)},se.createElement("circle",{cx:Dn,cy:Dn,r:xn,fill:Ye}),se.createElement("circle",{cx:Dn,cy:Dn,r:oi,fill:"none",stroke:Ot,strokeWidth:Dr}),se.createElement("circle",{cx:Dn,cy:Dn,r:oi,fill:"none",stroke:vt,strokeWidth:Dr,strokeDasharray:yt,strokeDashoffset:tt,strokeLinecap:"round",transform:Rn}),et&&se.createElement("circle",{cx:Dn,cy:Dn,r:oi+Dr/2,fill:"none",stroke:"#FA6400",strokeWidth:Ct("4rem")}),We&&se.createElement("foreignObject",{x:Dn-xn,y:Dn-xn,width:Xt,height:Xt},se.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",padding:Jt}},se.createElement("b",{style:{color:pt,fontSize:mt,textAlign:"center"},title:We},li))))};xr.Z=qe},22861:function(Hn,xr,he){"use strict";var se=he(59301),je=he(76411),Bt=he.n(je),Rt=he(48961),Dt=he.n(Rt),dt=he(59301),Le=Object.defineProperty,Ze=Object.getOwnPropertySymbols,qe=Object.prototype.hasOwnProperty,It=Object.prototype.propertyIsEnumerable,Et=(Ye,We,pt)=>We in Ye?Le(Ye,We,{enumerable:!0,configurable:!0,writable:!0,value:pt}):Ye[We]=pt,vt=(Ye,We)=>{for(var pt in We||(We={}))qe.call(We,pt)&&Et(Ye,pt,We[pt]);if(Ze)for(var pt of Ze(We))It.call(We,pt)&&Et(Ye,pt,We[pt]);return Ye};const Ot=({dataSource:Ye,height:We,labelTextColor:pt,legend:mt={}})=>{console.log("dataSource:",Ye);const Jt=(0,se.useRef)(null),Qt=(0,se.useRef)(null),[$t,Ft]=(0,se.useState)({}),[Gt,_e]=(0,se.useState)(""),[Bn,ur]=(0,se.useState)(""),fn=Ye||[{name:"\u638C\u63E1\u738780%~100%",value:1,itemStyle:{color:"rgb(223,209,38)"}},{name:"\u638C\u63D0\u738760%~79%",value:2,itemStyle:{color:"rgb(6,234,230)"}},{name:"\u638C\u63A8\u738759%\u4EE5\u4E0B",value:3,itemStyle:{color:"rgb(6,110,247)"}}];(0,se.useEffect)(()=>(gn(),window.addEventListener("resize",Xt),()=>{window.removeEventListener("resize",Xt)}),[]),(0,se.useEffect)(()=>{Ye!=null&&Ye.length&&Xt()},[Ye]);const Xt=()=>{var xn,Dr;const oi=et(fn,.8);(xn=Qt.current)==null||xn.setOption(oi),(Dr=Qt.current)==null||Dr.resize()},gn=()=>{const xn=Jt.current;Qt.current=je.init(xn);const Dr=et(fn,.8);Ft(Dr),Qt.current.setOption(Dr),Qt.current.getZr().off("mousewheel"),Dr.series.push({name:"\u638C\u63E1\u7387",type:"pie",labelLine:{length:10,length2:10},startAngle:-20,clockwise:!1,radius:["20%","50%"],center:["50%","50%"],data:fn,itemStyle:{opacity:0}}),Qt.current.setOption(Dr),Dn(Qt.current)},et=(xn,Dr)=>{let oi,yt=[],tt=0,Rn=0,fi=0,li=[],In=[],an=1-Dr;xn.sort((Or,zn)=>zn.value-Or.value);for(let Or=0;OrJn.name===Or)[0],Qn=Ln(zn.value*100,2)+"%";return`${zn.name} ${Qn}`}},mt),labelLine:{show:!0,lineStyle:{color:"#7BC0CB"}},label:{show:!0,position:"outside",rich:{b:{color:pt||"#FFF",fontSize:12,lineHeight:20},c:{fontSize:16,lineHeight:24,color:pt||"#FFF"}},formatter:`{b|{b} }{c|{c}}{b|}`},xAxis3D:{min:-1,max:1},yAxis3D:{min:-1,max:1},zAxis3D:{min:-1,max:1},grid3D:{show:!1,boxHeight:Xr,viewControl:{alpha:40,distance:300,rotateSensitivity:0,zoomSensitivity:0,panSensitivity:0,autoRotate:!1}},series:yt}},nn=(xn,Dr)=>(xn.sort((oi,yt)=>yt.pieData.value-oi.pieData.value),Dr*25/xn[0].pieData.value),Ct=(xn,Dr,oi,yt,tt,Rn)=>{let fi=(xn+Dr)/2,li=xn*Math.PI*2,In=Dr*Math.PI*2,an=fi*Math.PI*2;xn===0&&Dr===1&&(oi=!1),tt=typeof tt!="undefined"?tt:1/3;let Xr=oi?Math.cos(an)*.1:0,Or=oi?Math.sin(an)*.1:0,zn=yt?1.05:1;return{u:{min:-Math.PI,max:Math.PI*3,step:Math.PI/32},v:{min:0,max:Math.PI*2,step:Math.PI/20},x:function(Qn,Jn){return QnIn?Xr+Math.cos(In)*(1+Math.cos(Jn)*tt)*zn:Xr+Math.cos(Qn)*(1+Math.cos(Jn)*tt)*zn},y:function(Qn,Jn){return QnIn?Or+Math.sin(In)*(1+Math.cos(Jn)*tt)*zn:Or+Math.sin(Qn)*(1+Math.cos(Jn)*tt)*zn},z:function(Qn,Jn){return Qn<-Math.PI*.5?Math.sin(Qn):Qn>Math.PI*2.5?Math.sin(Qn)*Rn*.1:Math.sin(Jn)>0?1*Rn*.1:-1}}},Ln=(xn,Dr)=>{let oi=parseFloat(xn);if(isNaN(oi))return!1;oi=Math.round(xn*Math.pow(10,Dr))/Math.pow(10,Dr);let yt=oi.toString();(yt==null?void 0:yt.indexOf("."))<0&&(yt+=".");for(let Rn=yt.length-(yt==null?void 0:yt.indexOf("."));Rn<=Dr;Rn++)yt+="0";return yt},Dn=()=>{Qt.current.on("click",function(xn){if(xn.seriesName==="pie2d"){_e(xn.dataIndex);let Dr=Qt.current.getWidth()/2,oi=Qt.current.getHeight()/2;Qt.current.dispatchAction({type:"pieSelect",seriesIndex:0,dataIndex:xn.dataIndex})}}),Qt.current.on("mousemove",function(xn){}),Qt.current.on("mouseout",function(){Qt.current.dispatchAction({type:"pieUnSelect",seriesIndex:0,dataIndex:Bn}),ur("")})};return dt.createElement("div",{ref:Jt,style:{width:"100%",height:We||"500rem"}})};xr.Z=Ot},53807:function(Hn,xr,he){"use strict";he.d(xr,{Z:function(){return Oo}});var se=he(59301),je=he(63823),Bt=he(78241),Rt=he(8591),Dt=he(54580),dt=he(43428),Le=he(3113),Ze=he(43418),qe=he(92832),It=he(6848),Et=he(57809),vt=he(99313),Ot=he(5112),Ye=he(17574),We={flex_box_center:"flex_box_center___bAhU8",flex_space_between:"flex_space_between___fGcUL",flex_box_vertical_center:"flex_box_vertical_center___hqbFm",flex_box_center_end:"flex_box_center_end___h8cjt",flex_box_column:"flex_box_column___jkfSL",detailmodal:"detailmodal___KEy8k",title:"title___M0Bdn",button:"button___oEMiZ",drawer:"drawer___Pwq6m",tabstyle:"tabstyle___hGelr",items:"items___RrF7L",itemsactivite:"itemsactivite____kVzF",nodetitle:"nodetitle___UgLxl",nodeboyd:"nodeboyd___R1M87",listitem:"listitem___CjR4j",Tabs:"Tabs___gAkar",addmodal:"addmodal___KHvV4",gxcoent:"gxcoent___B8UeJ",gxtitle:"gxtitle___Ezw1C",Colortitle:"Colortitle___kChPm",gxbody:"gxbody___HmZPk",tag:"tag___b2Gak",form:"form___wY8YH",radioform:"radioform___RW7Fy",settingmodal:"settingmodal___LgbSA",body:"body___KaaXx",left:"left___BbRKH",header:"header___E8vej",treenode:"treenode___XViAn",hudong:"hudong___MzZbW",colortitle:"colortitle___PgqHg",right:"right___jzXCF",multiple:"multiple___GQEEM",settingtag:"settingtag___XVMCI",tree:"tree___zz_WU",select:"select___HL7_r",input:"input___reuVt",DetailStatistics:"DetailStatistics___v31Uq",xxrs:"xxrs___Q156g",xxrscount:"xxrscount___OdU60",righttop:"righttop___dnIBD",rightbottom:"rightbottom___B0s8j"},pt=he(99267),mt=he(43531),Jt=he(15075),Qt={tag:"tag___aXy_L",active:"active___kZOMC",tagsModal:"tagsModal___wsl_M",btn:"btn___S2nL4",modal:"modal___r3iAS",mHead:"mHead___imW9A",body:"body___fZUhx",add:"add___QHMDJ",error:"error___aJzBo"},$t=he(92310),Ft=he.n($t),Gt=he(22972),_e=he(59301),Bn=Object.defineProperty,ur=Object.getOwnPropertySymbols,fn=Object.prototype.hasOwnProperty,Xt=Object.prototype.propertyIsEnumerable,gn=(hn,Lr,tr)=>Lr in hn?Bn(hn,Lr,{enumerable:!0,configurable:!0,writable:!0,value:tr}):hn[Lr]=tr,et=(hn,Lr)=>{for(var tr in Lr||(Lr={}))fn.call(Lr,tr)&&gn(hn,tr,Lr[tr]);if(ur)for(var tr of ur(Lr))Xt.call(Lr,tr)&&gn(hn,tr,Lr[tr]);return hn},nn=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});let Ct=[{name:"\u4F5C\u4E1A",id:"zy",item_type:2},{name:"\u5B9E\u8BAD",id:"sx",item_type:2},{name:"\u6559\u6750",id:"jc",item_type:2},{name:"\u89C6\u9891",id:"sp",item_type:2},{name:"\u8BFE\u4EF6",id:"kj",item_type:2},{name:"\u8BD5\u5377",id:"sj",item_type:2},{name:"\u9898\u96C6",id:"tj",item_type:2},{name:"\u8BD5\u9898",id:"st",item_type:2}],Ln=[{name:"\u7AE0\u8282",id:"zj",item_type:1},{name:"\u77E5\u8BC6\u70B9",id:"zsd",item_type:1}];var xn=({value:hn=[],onChange:Lr,type:tr,dataSources:Oi=[],pathsDetail:Do={},showmodal:cr,containerRef:tl})=>{const ka=(0,je.useParams)(),[Vi,No]=(0,se.useState)(!1),[Nl,Aa]=(0,se.useState)([]),[yo,zi]=(0,se.useState)(),[Fs,bo]=(0,se.useState)(""),[js,kl]=(0,se.useState)(""),[Es,vl]=(0,se.useState)(""),[Is,fl]=(0,se.useState)(!1),[Gl,Ul]=(0,se.useState)(!1),[Ko,ao]=(0,se.useState)([]),[Wa,Dl]=(0,se.useState)("");(0,se.useEffect)(()=>{Vi&&lu()},[Vi]);function lu(){return nn(this,null,function*(){let Co=yield(0,Gt.ZP)("/api/knowledge_items.json",{method:"get",params:{item_type:tr,subject_id:ka==null?void 0:ka.pathId}});(Co==null?void 0:Co.status)===0&&(tr===3?Aa(Co==null?void 0:Co.data):(Aa([...Ln,...Co==null?void 0:Co.data]),ao([...Ct,...Co==null?void 0:Co.data2])))})}const mc=[{background:"#6236FF",borderColor:"#9D82FF"},{background:"#6DB9FF",borderColor:"#6DB9FF"},{background:"rgba(27,175,234,0.8)",borderColor:"#68D5FF"},{background:"#C1AC15",borderColor:"#DCC51C"},{background:"#E07E37",borderColor:"#F79046"},{background:"rgba(29,94,255,0.8)",borderColor:"#6D97FE"},{background:"#E75454",borderColor:"#FE8383"},{background:"#A557D8",borderColor:"#C57AF6"},{background:"#2CA768",borderColor:"#43CC86"},{background:"#1F9269",borderColor:"#38B588"},{background:"#CA7720",borderColor:"#E99338"},{background:"rgba(224,32,32,0.8)",borderColor:"#E02020"},{background:"rgba(255,126,15,0.8)",borderColor:"#FF7E0F"},{background:"rgba(29,94,255,0.8)",borderColor:"#1D5EFF"},{background:"#2BAC8E",borderColor:"#30CB9D"},{background:"#EE5D5D",borderColor:"#FF8181"},{background:"#7E5AFE",borderColor:"#9173FA"},{background:"#3ABCEF",borderColor:"#6FD6FF"},{background:"#B132C2",borderColor:"#C57AF6"},{background:"#46A4FB",borderColor:"#72BBFF"},{background:"#C1AC15",borderColor:"#DCC51C"},{background:"#E07E37",borderColor:"#F79046"},{background:"#1D5EFF",borderColor:"#6D97FE"},{background:"#2CA768",borderColor:"#43CC86"},{background:"#A557D8",borderColor:"#C57AF6"},{background:"#1F9269",borderColor:"#38B588"},{background:"#CA7720",borderColor:"#E99338"}],Ro="\u6807\u7B7E";(0,se.useEffect)(()=>{Aa(Oi)},[]),(0,se.useEffect)(()=>{Vi&&zi(hn)},[Vi]);const jl=({title:Co="",style:Go={},values:ou="",showDelete:Mc=!0,modal:Ai=!1,active:tu=!1})=>{const nc=(ol=>ol.split("").reduce((Po,ds)=>Po+ds.charCodeAt(0),0))(Co)%mc.length,{background:Tu,borderColor:$i}=mc[nc];return _e.createElement("div",{className:Ft()(Qt.tag,tu?Qt.active:""),onClick:()=>{var ol;if(Ai){if(Vi===1){let Po=[...Nl,...Ko];zi([...Po.filter(ds=>(ds==null?void 0:ds.id)===ou)])}Vi===2&&((ol=yo==null?void 0:yo.map(Po=>Po.id))!=null&&ol.includes(ou)?zi(yo.filter(Po=>Po.id!==ou)):zi([...yo,...Nl.filter(Po=>(Po==null?void 0:Po.id)===ou)]))}},style:et({background:Tu,borderColor:$i},Go)},_e.createElement("span",null,Co),Mc&&_e.createElement("i",{onClick:ol=>nn(void 0,null,function*(){var Po;if(ol.stopPropagation(),Ai){Aa(Nl.filter(Zl=>Zl.name!==Co)),Aa(Nl.filter(Zl=>Zl.name!==Co));let ds=yield(0,Gt.ZP)(`/api/knowledge_items/${ou}.json`,{method:"delete",body:{id:ou,subject_id:(Po=Do==null?void 0:Do.detail)==null?void 0:Po.id}});(ds==null?void 0:ds.status)===0&&lu()}else Lr(hn.filter(ds=>ds.id!==ou))}),className:"iconfont icon-shanchu5"}))},Ml=()=>{Lr(yo),No(!1)},mu=Co=>nn(void 0,null,function*(){if(!Fs.replace(/\s+/g,"")&&Co===1){vl(`${Ro}\u4E0D\u80FD\u4E3A\u7A7A`);return}if(!js.replace(/\s+/g,"")&&Co===2){Dl("\u8D44\u6E90\u4E0D\u80FD\u4E3A\u7A7A");return}if((Nl.map(ou=>ou.name).includes(Fs)||Ko.map(ou=>ou.name).includes(Fs))&&Co===1){vl(`\u8BE5${Ro}\u5DF2\u5B58\u5728\uFF0C\u8BF7\u52FF\u91CD\u590D\u6DFB\u52A0\uFF01`);return}if((Ko.map(ou=>ou.name).includes(js)||Nl.map(ou=>ou.name).includes(js))&&Co===2){Dl("\u8BE5\u8D44\u6E90\u5DF2\u5B58\u5728\uFF0C\u8BF7\u52FF\u91CD\u590D\u6DFB\u52A0\uFF01");return}let Go=yield(0,Gt.ZP)("/api/knowledge_items.json",{method:"post",body:{item_type:tr===3?3:Co,name:tr===3||Co===1?Fs:js,subject_id:ka==null?void 0:ka.pathId}});(Go==null?void 0:Go.status)===0&&lu(),Co===1&&fl(!1),Co===2&&Ul(!1)});return _e.createElement("div",{className:Qt.tagsModal},tr===5&&_e.createElement(_e.Fragment,null,hn==null?void 0:hn.map((Co,Go)=>_e.createElement(jl,{values:Co.id,key:Go,title:Co.name,showDelete:!1,style:{marginRight:"20rem",marginBottom:0}})),cr&&_e.createElement("div",{onClick:()=>No(1),style:{marginBottom:"0rem"},className:Qt.btn},_e.createElement("i",{className:"iconfont icon-genghuanguanliyuan1"}),hn!=null&&hn.length?"\u66F4\u6362":"\u9009\u62E9","\u7C7B\u578B")),tr===3&&_e.createElement(_e.Fragment,null,hn==null?void 0:hn.map((Co,Go)=>_e.createElement(jl,{values:Co.id,key:Go,title:Co.name})),cr&&_e.createElement("div",{onClick:()=>No(2),className:Qt.btn,style:{marginBottom:"10rem"}},_e.createElement("i",{className:"iconfont icon-tianjiatixing"}),hn!=null&&hn.length?"\u66F4\u6362":"\u9009\u62E9","\u6807\u7B7E")),_e.createElement(Ze.default,{open:!!Vi,centered:!0,width:"1000rem",okText:"\u4FDD\u5B58",getContainer:()=>tl.current,onCancel:()=>No(!1),cancelText:"\u53D6\u6D88",afterClose:()=>{fl(!1),Ul(!1),vl(""),bo("")},onOk:Ml,title:`\u9009\u62E9${Ro}`},_e.createElement("div",{className:Qt.modal},_e.createElement("div",{className:Qt.mHead},_e.createElement("b",null),_e.createElement("span",null,`${Ro}`,"\uFF08",Nl.length,"\uFF09"),_e.createElement("div",{onClick:()=>{fl(!0),vl(""),bo("")},className:Qt.btn},_e.createElement("i",{className:"iconfont icon-tianjiatixing"}),"\u6DFB\u52A0")),_e.createElement("div",{className:Qt.body},Nl==null?void 0:Nl.map((Co,Go)=>{var ou,Mc,Ai;return _e.createElement(jl,{showDelete:tr===3?!((ou=yo==null?void 0:yo.map(tu=>tu==null?void 0:tu.id))!=null&&ou.includes(Co==null?void 0:Co.id)):!((Mc=yo==null?void 0:yo.map(tu=>tu==null?void 0:tu.id))!=null&&Mc.includes(Co==null?void 0:Co.id))&&!((Ai=Ln.map(tu=>tu.name))!=null&&Ai.includes(Co.name)),modal:!0,style:{cursor:"pointer"},active:yo==null?void 0:yo.map(tu=>tu==null?void 0:tu.id).includes(Co==null?void 0:Co.id),key:Co==null?void 0:Co.id,values:Co==null?void 0:Co.id,title:Co==null?void 0:Co.name})}),Is&&_e.createElement("div",{className:Qt.add},_e.createElement(qe.default,{style:{width:"rem"},size:"large",value:Fs,onChange:Co=>{vl(""),bo(Co.target.value)}}),_e.createElement("i",{onClick:()=>mu(1),className:"iconfont icon-dui",style:{color:"#1B8565"}}),_e.createElement("i",{onClick:()=>fl(!1),className:"iconfont icon-shanchu10",style:{color:"#9096A3"}}),!!Es&&_e.createElement("div",{className:Qt.error},Es)))),tr===5&&_e.createElement("div",{className:Qt.modal},_e.createElement("div",{className:Qt.mHead},_e.createElement("b",null),_e.createElement("span",null,"\u8D44\u6E90","\uFF08",Ko.length,"\uFF09"),_e.createElement("div",{onClick:()=>{Ul(!0),Dl(""),kl("")},className:Qt.btn},_e.createElement("i",{className:"iconfont icon-tianjiatixing"}),"\u6DFB\u52A0")),_e.createElement("div",{className:Qt.body},Ko==null?void 0:Ko.map((Co,Go)=>{var ou,Mc;return _e.createElement(jl,{showDelete:!((ou=yo==null?void 0:yo.map(Ai=>Ai==null?void 0:Ai.id))!=null&&ou.includes(Co==null?void 0:Co.id))&&!((Mc=Ct.map(Ai=>Ai.name))!=null&&Mc.includes(Co.name)),modal:!0,style:{cursor:"pointer"},active:yo==null?void 0:yo.map(Ai=>Ai==null?void 0:Ai.id).includes(Co==null?void 0:Co.id),key:Co==null?void 0:Co.id,values:Co==null?void 0:Co.id,title:Co==null?void 0:Co.name})}),Gl&&_e.createElement("div",{className:Qt.add},_e.createElement(qe.default,{style:{width:"rem"},size:"large",value:js,onChange:Co=>{Dl(""),kl(Co.target.value)}}),_e.createElement("i",{onClick:()=>mu(2),className:"iconfont icon-dui",style:{color:"#1B8565"}}),_e.createElement("i",{onClick:()=>Ul(!1),className:"iconfont icon-shanchu10",style:{color:"#9096A3"}}),!!Wa&&_e.createElement("div",{className:Qt.error},Wa))))))},Dr=he(35783),oi=he(1710),yt=he(58421),tt=he(74451),Rn=he(59301),fi=Object.getOwnPropertySymbols,li=Object.prototype.hasOwnProperty,In=Object.prototype.propertyIsEnumerable,an=(hn,Lr)=>{var tr={};for(var Oi in hn)li.call(hn,Oi)&&Lr.indexOf(Oi)<0&&(tr[Oi]=hn[Oi]);if(hn!=null&&fi)for(var Oi of fi(hn))Lr.indexOf(Oi)<0&&In.call(hn,Oi)&&(tr[Oi]=hn[Oi]);return tr},Xr=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});let Or=[{label:"\u5B9E\u8BAD",key:"1"},{label:"\u89C6\u9891",key:"2"},{label:"\u8BFE\u4EF6",key:"3"},{label:"\u8BD5\u5377",key:"4"}];const zn=hn=>{var Lr=hn,{types:tr,globalSetting:Oi,loading:Do,dispatch:cr,pathsDetail:tl,onChange:ka,ktzykey:Vi,getother:No}=Lr,Nl=an(Lr,["types","globalSetting","loading","dispatch","pathsDetail","onChange","ktzykey","getother"]),Aa,yo,zi,Fs;let[bo,js]=(0,se.useState)({page:1,limit:10,type:tr,keyword:"",select_type:1,subject_id:"",course_id:""});const[kl,Es]=(0,se.useState)([]);(0,se.useEffect)(()=>{vl()},[tr]);function vl(){return Xr(this,null,function*(){bo.select_type===3&&(bo.subject_id="",bo.course_id=""),bo.select_type===2&&(bo.subject_id=""),bo.select_type===1&&(bo.course_id="");let Is=yield(0,Gt.ZP)("/api/paths/search_all.json",{method:"get",params:bo});(Is==null?void 0:Is.status)===0&&Es(Is)})}return Rn.createElement("div",{style:{padding:"10rem 20rem"}},Rn.createElement("div",{style:{display:"flex"}},Rn.createElement("div",null,tr==="1"&&Rn.createElement(qe.default,{placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u67E5\u8BE2",style:{width:"992rem",marginRight:"10rem",height:"40rem"},onChange:Is=>{bo.keyword=Is.target.value,bo.page=1,bo.limit=10,js(bo)}}),tr!=="1"&&Rn.createElement("div",{style:{display:"flex"}},Rn.createElement("div",{style:{width:"223rem",alignItems:"center",display:"flex",height:"40rem"}},Rn.createElement("span",{style:{width:"92rem",border:"1rem solid #DCDCDC",borderRightStyle:"none",background:"#F6F7F9",height:"40rem",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:"40rem",fontSize:"16rem",color:"#666666"}},"\u6240\u5728\u4F4D\u7F6E"),Rn.createElement(Et.default,{value:bo.select_type,onChange:Is=>{bo.select_type=Is,bo.page=1,bo.limit=10,js(bo),vl()},className:We.select,style:{width:"131rem",height:"40rem"}},Rn.createElement(Et.default.Option,{value:1},"\u5B9E\u8DF5\u8BFE\u7A0B"),Rn.createElement(Et.default.Option,{value:2},"\u6559\u5B66\u8BFE\u5802"),Rn.createElement(Et.default.Option,{value:3},"\u4E2A\u4EBA\u4E2D\u5FC3"))),bo.select_type!==3&&Rn.createElement(Et.default,{value:bo.subject_id||bo.course_id,onChange:Is=>{bo.course_id=Is,bo.subject_id=Is,bo.page=1,bo.limit=10,js(bo),vl()},className:We.select,style:{width:"270rem",marginLeft:"8rem"}},bo.select_type===1&&((Aa=kl==null?void 0:kl.subjects)==null?void 0:Aa.map(Is=>Rn.createElement(Et.default.Option,{value:Is.id},Is.name))),bo.select_type===2&&((yo=kl==null?void 0:kl.courses)==null?void 0:yo.map(Is=>Rn.createElement(Et.default.Option,{value:Is.id},Is.name)))),Rn.createElement(qe.default,{onChange:Is=>{bo.keyword=Is.target.value,bo.page=1,bo.limit=10,js(bo)},addonBefore:((zi=Or==null?void 0:Or.find(Is=>Is.key===tr))==null?void 0:zi.label)+"\u540D\u79F0",className:We.input,style:{marginLeft:"10rem",width:"486rem",height:"40rem"}}))),Rn.createElement(Le.ZP,{type:"primary",style:{height:"40rem",fontSize:"14rem",boxShadow:"none",lineHeight:"40rem",width:"108rem",padding:"0",marginLeft:"10rem"},onClick:()=>{vl()}},"\u67E5\u8BE2")),Rn.createElement(oi.default,{style:{marginTop:"10rem"},dataSource:kl==null?void 0:kl.data,pagination:!1,rowKey:Is=>Is.id,scroll:{y:"400rem"},columns:[{title:((Fs=Or==null?void 0:Or.find(Is=>Is.key===tr))==null?void 0:Fs.label)+"\u540D\u79F0",dataIndex:"name",ellipsis:!0,key:"name"},{title:tr==="1"?"\u5408\u4F5C\u8005":"\u6240\u5C5E\u6A21\u5757",dataIndex:"name",key:"name",ellipsis:!0,render:(Is,fl)=>Rn.createElement("span",null,tr==="1"?fl==null?void 0:fl.user_names:fl==null?void 0:fl.model)},{title:tr==="1"?"\u6700\u8FD1\u4FEE\u6539\u65F6\u95F4":"\u6240\u5728\u4F4D\u7F6E",dataIndex:"updated_at",ellipsis:!0,render:(Is,fl)=>Rn.createElement("span",null,tr==="1"?fl==null?void 0:fl.updated_at:fl==null?void 0:fl.stage_name)},{title:"\u64CD\u4F5C",dataIndex:"url",width:"100rem",render:(Is,fl)=>Rn.createElement("a",{onClick:()=>{(fl==null?void 0:fl.container_type)==="Video"?Ze.default.confirm({icon:null,title:"\u89C6\u9891\u64AD\u653E",centered:!0,closable:!0,footer:!1,width:600,content:Rn.createElement(tt.Z,{allow_skip:!0,src:Is})}):tr==="3"?No(Is):window.open(Is)}},"\u67E5\u770B")}],rowSelection:{type:"radio",onChange(Is,fl){ka(fl)}}}),Rn.createElement(yt.Z,{hideOnSinglePage:!0,style:{marginTop:"20rem"},total:kl==null?void 0:kl.total_count,current:bo==null?void 0:bo.page,pageSize:bo==null?void 0:bo.limit,onChange:(Is,fl)=>{bo.page=Is,bo.limit=fl,js(bo),vl()}}))};var Qn=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(zn),Jn=he(71418),qn=he(84105),On=he(68911),Je=he(59301),Ie=Object.defineProperty,Ce=Object.defineProperties,He=Object.getOwnPropertyDescriptors,it=Object.getOwnPropertySymbols,we=Object.prototype.hasOwnProperty,Vt=Object.prototype.propertyIsEnumerable,Cn=(hn,Lr,tr)=>Lr in hn?Ie(hn,Lr,{enumerable:!0,configurable:!0,writable:!0,value:tr}):hn[Lr]=tr,Lt=(hn,Lr)=>{for(var tr in Lr||(Lr={}))we.call(Lr,tr)&&Cn(hn,tr,Lr[tr]);if(it)for(var tr of it(Lr))Vt.call(Lr,tr)&&Cn(hn,tr,Lr[tr]);return hn},Zt=(hn,Lr)=>Ce(hn,He(Lr)),ar=(hn,Lr)=>{var tr={};for(var Oi in hn)we.call(hn,Oi)&&Lr.indexOf(Oi)<0&&(tr[Oi]=hn[Oi]);if(hn!=null&&it)for(var Oi of it(hn))Lr.indexOf(Oi)<0&&Vt.call(hn,Oi)&&(tr[Oi]=hn[Oi]);return tr},Xn=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const dn=hn=>{var Lr=hn,{typesdata:tr,globalSetting:Oi,loading:Do,dispatch:cr,pathsDetail:tl,onChange:ka,uuid:Vi,itemsuuid:No}=Lr,Nl=ar(Lr,["typesdata","globalSetting","loading","dispatch","pathsDetail","onChange","uuid","itemsuuid"]),Aa,yo,zi,Fs,bo,js,kl,Es,vl,Is,fl,Gl;const Ul=(0,je.useParams)();let[Ko,ao]=(0,se.useState)([]),[Wa,Dl]=(0,se.useState)(!1);const[lu,mc]=(0,se.useState)([]),[Ro,jl]=(0,se.useState)(""),[Ml,mu]=(0,se.useState)(""),[Co,Go]=(0,se.useState)([]),[ou,Mc]=(0,se.useState)(!1);let[Ai,tu]=(0,se.useState)({bh:[],qx:[],hx:[],gl:[]});(0,se.useEffect)(()=>{Pl()},[Vi]),(0,se.useEffect)(()=>{if(tr){let $i=JSON.parse(sessionStorage.getItem("typesdatajsoncopy"));tu($i)}return()=>{}},[tr]);function Pl(){return Xn(this,null,function*(){var $i,ol,Po,ds,Zl;Dl(!0);let uu=yield(0,Gt.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{nodeUuid:Vi,subject_id:Ul==null?void 0:Ul.pathId,depth:-1,relationshipFilter:"\u5305\u542B>"}});if(Dl(!1),(uu==null?void 0:uu.status)===0){mc(uu==null?void 0:uu.data);const hl=[...(0,On.fX)((ol=($i=uu==null?void 0:uu.data)==null?void 0:$i.nodes)==null?void 0:ol.map((Rl,Yl)=>{var Au,nu;return Zt(Lt({},Rl),{key:(Au=Rl==null?void 0:Rl.properties)==null?void 0:Au.uuid,title:(nu=Rl==null?void 0:Rl.properties)==null?void 0:nu.name})}),(Zl=(ds=(Po=uu==null?void 0:uu.data)==null?void 0:Po.relationships)==null?void 0:ds.filter(Rl=>Rl.type==="\u5305\u542B"||Rl.type==="\u524D\u5E8F"))==null?void 0:Zl.filter((Rl,Yl,Au)=>Yl===Au.findIndex(nu=>nu.endNodeUuid===Rl.endNodeUuid))).children||[]];Ko=hl,mu(JSON.stringify(hl)),ao(hl)}})}(0,se.useEffect)(()=>{ka(Ai)},[Ai]);function nc($i,ol,Po){for(let ds of $i)ds!=null&&ds.title.includes(ol)&&Po.push(ds),ds.children&&ds.children.length>0&&(nc(ds.children,ol,Po),Tu(ds.children,ol,Po)&&Po.push(ds))}function Tu($i,ol,Po){for(let ds of $i)if(ds!=null&&ds.title.includes(ol))return!0}return Je.createElement(Jn.Z,{spinning:Wa},Je.createElement("div",{className:We.body},Je.createElement("div",{className:We.left},Je.createElement("div",{className:We.header},Je.createElement("div",null,"\u5171",Je.createElement("span",{style:{color:"#1B8565"}},((yo=(Aa=lu==null?void 0:lu.metricCounters)==null?void 0:Aa[0])==null?void 0:yo.count)||0),"\u4E2A\u6807\u7B7E\u8282\u70B9\uFF0C",Je.createElement("span",{style:{color:"#1B8565"}},((Fs=(zi=lu==null?void 0:lu.metricCounters)==null?void 0:zi[1])==null?void 0:Fs.count)||0),"\u4E2A\u77E5\u8BC6\u8282\u70B9"),Je.createElement(qe.default.Search,{style:{width:"350rem",borderRadius:"50%"},onChange:$i=>{var ol,Po,ds,Zl;const{value:uu}=$i.target;jl(uu);let Ys=[];nc(JSON.parse(Ml),uu,Ys),Ys.push((ol=lu==null?void 0:lu.nodes)==null?void 0:ol[0]);const hl=(Po=lu==null?void 0:lu.nodes)==null?void 0:Po.filter(Au=>{var nu,xc;return((xc=(nu=Au==null?void 0:Au.properties)==null?void 0:nu.name)==null?void 0:xc.indexOf(uu))>-1}).map(Au=>{var nu;return(nu=Au==null?void 0:Au.properties)==null?void 0:nu.uuid});Go(hl);const Yl=[...(0,On.fX)(Ys,(Zl=(ds=lu==null?void 0:lu.relationships)==null?void 0:ds.filter(Au=>Au.type==="\u5305\u542B"||Au.type==="\u524D\u5E8F"))==null?void 0:Zl.filter((Au,nu,xc)=>nu===xc.findIndex(Kc=>Kc.endNodeUuid===Au.endNodeUuid)).filter(Au=>(Ys==null?void 0:Ys.map(nu=>nu==null?void 0:nu.key).includes(Au.endNodeUuid))||(Ys==null?void 0:Ys.map(nu=>nu==null?void 0:nu.key).includes(Au.startNodeUuid)))).children||[]];Ko=Yl,ao(Yl),Mc(!0)},placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22"})),Je.createElement(Ye.default,{style:{marginTop:"30rem",maxHeight:"320rem",overflow:"auto"},showLine:!0,treeData:Ko,className:We.tree,expandedKeys:Co,onExpand:$i=>{Go($i),Mc(!1)},autoExpandParent:ou,blockNode:!0,switcherIcon:Je.createElement(qn.Z,null),titleRender:$i=>{var ol,Po,ds,Zl,uu,Ys,hl,Rl,Yl,Au,nu,xc,Kc,Dc,Jl;return Je.createElement("div",{className:We.treenode,key:(ol=$i==null?void 0:$i.properties)==null?void 0:ol.uuid},Je.createElement("div",{style:{width:"50%",display:"flex",alignItems:"center"}},((Po=Ai==null?void 0:Ai.bh)==null?void 0:Po.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&Je.createElement("span",{className:We.settingtag,style:{background:"#6236ff"}},"\u5305\u542B"),((ds=Ai==null?void 0:Ai.qx)==null?void 0:ds.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&Je.createElement("span",{className:We.settingtag,style:{background:"#24A881"}},"\u524D\u7F6E"),((Zl=Ai==null?void 0:Ai.hx)==null?void 0:Zl.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&Je.createElement("span",{className:We.settingtag,style:{background:"#EC8657"}},"\u540E\u7F6E"),((uu=Ai==null?void 0:Ai.gl)==null?void 0:uu.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&Je.createElement("span",{className:We.settingtag,style:{background:"#497DFF"}},"\u5173\u8054"),Je.createElement("div",{className:We.multiple,title:$i==null?void 0:$i.title,dangerouslySetInnerHTML:{__html:(Ys=$i==null?void 0:$i.title)==null?void 0:Ys.replaceAll(Ro,`${Ro}`)},style:{width:"100%",fontSize:"14rem",color:"#000",fontWeight:400}})),Je.createElement("div",{className:We.hudong},!((hl=Ai==null?void 0:Ai.qx)!=null&&hl.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)})||(Rl=Ai==null?void 0:Ai.bh)!=null&&Rl.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)})||(Yl=Ai==null?void 0:Ai.hx)!=null&&Yl.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)})||(Au=Ai==null?void 0:Ai.gl)!=null&&Au.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&No!==((nu=$i==null?void 0:$i.properties)==null?void 0:nu.uuid)&&Je.createElement("div",null,Je.createElement("span",{onClick:()=>{var Io,fs,Gu,cl;if(!(((fs=(Io=Ai==null?void 0:Ai.bh)==null?void 0:Io.filter(Iu=>{var Mi;return(Iu==null?void 0:Iu.uuid)===((Mi=$i==null?void 0:$i.properties)==null?void 0:Mi.uuid)}))==null?void 0:fs.length)>0)){let Iu=[];Iu.push({name:(Gu=$i==null?void 0:$i.properties)==null?void 0:Gu.name,uuid:(cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid}),tu({bh:[...Iu,...Ai==null?void 0:Ai.bh],qx:Ai==null?void 0:Ai.qx,hx:Ai==null?void 0:Ai.hx,gl:Ai==null?void 0:Ai.gl})}},className:We.colortitle,style:{marginRight:"20rem"}},"\u8BBE\u4E3A\u5305\u542B"),Je.createElement("span",{onClick:()=>{var Io,fs,Gu,cl;if(!(((fs=(Io=Ai==null?void 0:Ai.qx)==null?void 0:Io.filter(Iu=>{var Mi;return(Iu==null?void 0:Iu.uuid)===((Mi=$i==null?void 0:$i.properties)==null?void 0:Mi.uuid)}))==null?void 0:fs.length)>0)){let Iu=[];Iu.push({name:(Gu=$i==null?void 0:$i.properties)==null?void 0:Gu.name,uuid:(cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid}),tu({qx:[...Iu,...Ai==null?void 0:Ai.qx],hx:Ai==null?void 0:Ai.hx,bh:Ai==null?void 0:Ai.bh,gl:Ai==null?void 0:Ai.gl})}},className:We.colortitle},"\u8BBE\u4E3A\u524D\u7F6E"),Je.createElement("span",{onClick:()=>{var Io,fs,Gu,cl;if(!(((fs=(Io=Ai==null?void 0:Ai.hx)==null?void 0:Io.filter(Iu=>{var Mi;return(Iu==null?void 0:Iu.uuid)===((Mi=$i==null?void 0:$i.properties)==null?void 0:Mi.uuid)}))==null?void 0:fs.length)>0)){let Iu=[];Iu.push({name:(Gu=$i==null?void 0:$i.properties)==null?void 0:Gu.name,uuid:(cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid}),tu({qx:Ai==null?void 0:Ai.qx,hx:[...Iu,...Ai==null?void 0:Ai.hx],bh:Ai==null?void 0:Ai.bh,gl:Ai==null?void 0:Ai.gl})}},style:{margin:"0rem 20rem"},className:We.colortitle},"\u8BBE\u4E3A\u540E\u7F6E"),Je.createElement("span",{onClick:()=>{var Io,fs,Gu,cl;if(!(((fs=(Io=Ai==null?void 0:Ai.gl)==null?void 0:Io.filter(Iu=>{var Mi;return(Iu==null?void 0:Iu.uuid)===((Mi=$i==null?void 0:$i.properties)==null?void 0:Mi.uuid)}))==null?void 0:fs.length)>0)){let Iu=[];Iu.push({name:(Gu=$i==null?void 0:$i.properties)==null?void 0:Gu.name,uuid:(cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid}),tu({qx:Ai==null?void 0:Ai.qx,hx:Ai==null?void 0:Ai.hx,gl:[...Iu,...Ai==null?void 0:Ai.gl],bh:Ai==null?void 0:Ai.bh})}},className:We.colortitle},"\u8BBE\u4E3A\u5173\u8054")),Je.createElement("span",{onClick:()=>{var Io;let fs=(Io=Ai==null?void 0:Ai.bh)==null?void 0:Io.filter(Gu=>{var cl;return Gu.uuid!==((cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid)});tu({bh:fs,hx:Ai==null?void 0:Ai.hx,qx:Ai==null?void 0:Ai.qx,gl:Ai==null?void 0:Ai.gl})}},((xc=Ai==null?void 0:Ai.bh)==null?void 0:xc.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&"\u53D6\u6D88\u5305\u542B"),Je.createElement("span",{onClick:()=>{var Io;let fs=(Io=Ai==null?void 0:Ai.qx)==null?void 0:Io.filter(Gu=>{var cl;return Gu.uuid!==((cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid)});tu({qx:fs,hx:Ai==null?void 0:Ai.hx,bh:Ai==null?void 0:Ai.bh,gl:Ai==null?void 0:Ai.gl})}},((Kc=Ai==null?void 0:Ai.qx)==null?void 0:Kc.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&"\u53D6\u6D88\u524D\u7F6E"),Je.createElement("span",{onClick:()=>{var Io;let fs=(Io=Ai==null?void 0:Ai.hx)==null?void 0:Io.filter(Gu=>{var cl;return Gu.uuid!==((cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid)});tu({qx:Ai==null?void 0:Ai.qx,hx:fs,bh:Ai==null?void 0:Ai.bh,gl:Ai==null?void 0:Ai.gl})}},((Dc=Ai==null?void 0:Ai.hx)==null?void 0:Dc.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&"\u53D6\u6D88\u540E\u7F6E"),Je.createElement("span",{onClick:()=>{var Io;let fs=(Io=Ai==null?void 0:Ai.gl)==null?void 0:Io.filter(Gu=>{var cl;return Gu.uuid!==((cl=$i==null?void 0:$i.properties)==null?void 0:cl.uuid)});tu({qx:Ai==null?void 0:Ai.qx,hx:Ai==null?void 0:Ai.hx,bh:Ai==null?void 0:Ai.bh,gl:fs})}},((Jl=Ai==null?void 0:Ai.gl)==null?void 0:Jl.find(Io=>{var fs;return(Io==null?void 0:Io.uuid)===((fs=$i==null?void 0:$i.properties)==null?void 0:fs.uuid)}))&&"\u53D6\u6D88\u5173\u8054")))}})),Je.createElement("div",{className:We.right},Je.createElement("div",{className:We.title},"\u5DF2\u5173\u8054\u5173\u7CFB"),Je.createElement("div",{style:{padding:"20rem 25rem"}},Je.createElement("div",{className:We.gxtitle},Je.createElement("div",{className:We.Colortitle,style:{background:"#6236ff"}}),Je.createElement("div",null,"\u88AB\u5305\u542B\uFF08",(bo=Ai.bh)==null?void 0:bo.length,"\uFF09")),Je.createElement("div",{className:We.gxbody},(js=Ai==null?void 0:Ai.bh)==null?void 0:js.map($i=>Je.createElement("div",{className:We.tag,style:{background:"#6236ff"}},Je.createElement("span",{style:{marginRight:"10rem"}},$i==null?void 0:$i.name)," ",Je.createElement(pt.Z,{onClick:()=>{var ol;let Po=(ol=Ai==null?void 0:Ai.bh)==null?void 0:ol.filter(ds=>ds.uuid!==$i.uuid);tu({bh:Po,hx:Ai==null?void 0:Ai.hx,qx:Ai==null?void 0:Ai.qx,gl:Ai==null?void 0:Ai.gl})}})))),Je.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},Je.createElement("div",{className:We.Colortitle,style:{background:"#24A881"}}),Je.createElement("div",null,"\u524D\u5E8F\uFF08",(kl=Ai.qx)==null?void 0:kl.length,"\uFF09")),Je.createElement("div",{className:We.gxbody},(Es=Ai==null?void 0:Ai.qx)==null?void 0:Es.map($i=>Je.createElement("div",{className:We.tag,style:{background:"#24A881"}},Je.createElement("span",{style:{marginRight:"10rem"}},$i==null?void 0:$i.name)," ",Je.createElement(pt.Z,{onClick:()=>{var ol;let Po=(ol=Ai==null?void 0:Ai.qx)==null?void 0:ol.filter(ds=>ds.uuid!==$i.uuid);tu({qx:Po,hx:Ai==null?void 0:Ai.hx,bh:Ai==null?void 0:Ai.bh,gl:Ai==null?void 0:Ai.gl})}})))),Je.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},Je.createElement("div",{className:We.Colortitle,style:{background:"#EC8657"}}),Je.createElement("div",null,"\u540E\u5E8F\uFF08",(vl=Ai.hx)==null?void 0:vl.length,"\uFF09")),Je.createElement("div",{className:We.gxbody},(Is=Ai==null?void 0:Ai.hx)==null?void 0:Is.map($i=>Je.createElement("div",{className:We.tag,style:{background:"#EC8657"}},Je.createElement("span",{style:{marginRight:"10rem"}},$i==null?void 0:$i.name)," ",Je.createElement(pt.Z,{onClick:()=>{var ol;let Po=(ol=Ai==null?void 0:Ai.hx)==null?void 0:ol.filter(ds=>ds.uuid!==$i.uuid);tu({qx:Ai==null?void 0:Ai.qx,bh:Ai==null?void 0:Ai.bh,hx:Po,gl:Ai==null?void 0:Ai.gl})}})))),Je.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},Je.createElement("div",{className:We.Colortitle,style:{background:"#497DFF"}}),Je.createElement("div",null,"\u5173\u8054\uFF08",(fl=Ai.gl)==null?void 0:fl.length,"\uFF09")),Je.createElement("div",{className:We.gxbody},(Gl=Ai==null?void 0:Ai.gl)==null?void 0:Gl.map($i=>Je.createElement("div",{className:We.tag,style:{background:"#497DFF"}},Je.createElement("span",{style:{marginRight:"10rem"}},$i==null?void 0:$i.name)," ",Je.createElement(pt.Z,{onClick:()=>{var ol;let Po=(ol=Ai==null?void 0:Ai.gl)==null?void 0:ol.filter(ds=>ds.uuid!==$i.uuid);tu({qx:Ai==null?void 0:Ai.qx,bh:Ai==null?void 0:Ai.bh,hx:Ai==null?void 0:Ai.hx,gl:Po})}}))))))))};var kr=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(dn),vi=he(59301),Un=Object.defineProperty,Pr=Object.defineProperties,Ii=Object.getOwnPropertyDescriptors,on=Object.getOwnPropertySymbols,qt=Object.prototype.hasOwnProperty,vn=Object.prototype.propertyIsEnumerable,gr=(hn,Lr,tr)=>Lr in hn?Un(hn,Lr,{enumerable:!0,configurable:!0,writable:!0,value:tr}):hn[Lr]=tr,mr=(hn,Lr)=>{for(var tr in Lr||(Lr={}))qt.call(Lr,tr)&&gr(hn,tr,Lr[tr]);if(on)for(var tr of on(Lr))vn.call(Lr,tr)&&gr(hn,tr,Lr[tr]);return hn},xi=(hn,Lr)=>Pr(hn,Ii(Lr)),Ui=(hn,Lr)=>{var tr={};for(var Oi in hn)qt.call(hn,Oi)&&Lr.indexOf(Oi)<0&&(tr[Oi]=hn[Oi]);if(hn!=null&&on)for(var Oi of on(hn))Lr.indexOf(Oi)<0&&vn.call(hn,Oi)&&(tr[Oi]=hn[Oi]);return tr},Ni=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const Fa=hn=>{var Lr=hn,{typesdata:tr,globalSetting:Oi,loading:Do,dispatch:cr,pathsDetail:tl,onChange:ka,uuid:Vi,itemsuuid:No,pathname:Nl,pathId:Aa,uuname:yo}=Lr,zi=Ui(Lr,["typesdata","globalSetting","loading","dispatch","pathsDetail","onChange","uuid","itemsuuid","pathname","pathId","uuname"]),Fs,bo,js,kl,Es,vl;const Is=(0,je.useParams)();let[fl,Gl]=(0,se.useState)([]),[Ul,Ko]=(0,se.useState)(!1);const[ao,Wa]=(0,se.useState)([]),[Dl,lu]=(0,se.useState)(""),[mc,Ro]=(0,se.useState)(""),[jl,Ml]=(0,se.useState)([]),[mu,Co]=(0,se.useState)(!1);let[Go,ou]=(0,se.useState)({bh:[],qx:[],hx:[],gl:[]});(0,se.useEffect)(()=>{Mc()},[Vi]),(0,se.useEffect)(()=>{if(tr){let Pl=JSON.parse(sessionStorage.getItem("typesdatajsoncopy"));ou(Pl)}return()=>{}},[tr]);function Mc(){return Ni(this,null,function*(){var Pl,nc,Tu,$i,ol;Ko(!0);let Po=yield(0,Gt.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{nodeUuid:Vi,subject_id:Is==null?void 0:Is.pathId,depth:-1,relationshipFilter:"\u5305\u542B>"}});if(Ko(!1),(Po==null?void 0:Po.status)===0){Wa(Po==null?void 0:Po.data);const Zl=[...(0,On.fX)((nc=(Pl=Po==null?void 0:Po.data)==null?void 0:Pl.nodes)==null?void 0:nc.map((Ys,hl)=>{var Rl,Yl;return xi(mr({},Ys),{key:(Rl=Ys==null?void 0:Ys.properties)==null?void 0:Rl.uuid,title:(Yl=Ys==null?void 0:Ys.properties)==null?void 0:Yl.name})}),(ol=($i=(Tu=Po==null?void 0:Po.data)==null?void 0:Tu.relationships)==null?void 0:$i.filter(Ys=>Ys.type==="\u5305\u542B"||Ys.type==="\u524D\u5E8F"))==null?void 0:ol.filter((Ys,hl,Rl)=>hl===Rl.findIndex(Yl=>Yl.endNodeUuid===Ys.endNodeUuid))).children||[]];fl=Zl,Ro(JSON.stringify(Zl)),Gl(Zl);let uu=JSON.parse(sessionStorage.getItem("typesdatajsoncopy"));ou(uu)}})}(0,se.useEffect)(()=>{ka(Go)},[Go]);function Ai(Pl,nc,Tu){for(let $i of Pl)$i!=null&&$i.title.includes(nc)&&Tu.push($i),$i.children&&$i.children.length>0&&(Ai($i.children,nc,Tu),tu($i.children,nc,Tu)&&Tu.push($i))}function tu(Pl,nc,Tu){for(let $i of Pl)if($i!=null&&$i.title.includes(nc))return!0}return vi.createElement(Jn.Z,{spinning:Ul},vi.createElement("div",{className:We.body},vi.createElement("div",{className:We.left},vi.createElement("div",{className:We.header},vi.createElement("div",null,"\u5171",vi.createElement("span",{style:{color:"#1B8565"}},((bo=(Fs=ao==null?void 0:ao.metricCounters)==null?void 0:Fs[0])==null?void 0:bo.count)||0),"\u4E2A\u6807\u7B7E\u8282\u70B9\uFF0C",vi.createElement("span",{style:{color:"#1B8565"}},((kl=(js=ao==null?void 0:ao.metricCounters)==null?void 0:js[1])==null?void 0:kl.count)||0),"\u4E2A\u77E5\u8BC6\u8282\u70B9"),vi.createElement(qe.default.Search,{style:{width:"350rem",borderRadius:"50%"},onChange:Pl=>{var nc,Tu,$i,ol;const{value:Po}=Pl.target;lu(Po);let ds=[];Ai(JSON.parse(mc),Po,ds),ds.push((nc=ao==null?void 0:ao.nodes)==null?void 0:nc[0]);const Zl=(Tu=ao==null?void 0:ao.nodes)==null?void 0:Tu.filter(hl=>{var Rl,Yl;return((Yl=(Rl=hl==null?void 0:hl.properties)==null?void 0:Rl.name)==null?void 0:Yl.indexOf(Po))>-1}).map(hl=>{var Rl;return(Rl=hl==null?void 0:hl.properties)==null?void 0:Rl.uuid});Ml(Zl);const Ys=[...(0,On.fX)(ds,(ol=($i=ao==null?void 0:ao.relationships)==null?void 0:$i.filter(hl=>hl.type==="\u5305\u542B"||hl.type==="\u524D\u5E8F"))==null?void 0:ol.filter((hl,Rl,Yl)=>Rl===Yl.findIndex(Au=>Au.endNodeUuid===hl.endNodeUuid)).filter(hl=>(ds==null?void 0:ds.map(Rl=>Rl==null?void 0:Rl.key).includes(hl.endNodeUuid))||(ds==null?void 0:ds.map(Rl=>Rl==null?void 0:Rl.key).includes(hl.startNodeUuid)))).children||[]];fl=Ys,Gl(Ys),Co(!0)},placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22"})),vi.createElement(Ye.default,{style:{marginTop:"30rem",maxHeight:"320rem",overflow:"auto"},showLine:!0,treeData:fl,className:We.tree,expandedKeys:jl,onExpand:Pl=>{Ml(Pl),Co(!1)},autoExpandParent:mu,blockNode:!0,switcherIcon:vi.createElement(qn.Z,null),titleRender:Pl=>{var nc,Tu,$i,ol,Po,ds,Zl,uu;return vi.createElement("div",{className:We.treenode,key:(nc=Pl==null?void 0:Pl.properties)==null?void 0:nc.uuid},vi.createElement("div",{style:{width:"50%",display:"flex",alignItems:"center"}},((Tu=Go==null?void 0:Go.bh)==null?void 0:Tu.find(Ys=>{var hl;return(Ys==null?void 0:Ys.uuid)===((hl=Pl==null?void 0:Pl.properties)==null?void 0:hl.uuid)}))&&vi.createElement("span",{className:We.settingtag,style:{background:"#6236ff"}},"\u5305\u542B"),(($i=Go==null?void 0:Go.qx)==null?void 0:$i.find(Ys=>{var hl;return(Ys==null?void 0:Ys.uuid)===((hl=Pl==null?void 0:Pl.properties)==null?void 0:hl.uuid)}))&&vi.createElement("span",{className:We.settingtag,style:{background:"#24A881"}},"\u524D\u7F6E"),((ol=Go==null?void 0:Go.hx)==null?void 0:ol.find(Ys=>{var hl;return(Ys==null?void 0:Ys.uuid)===((hl=Pl==null?void 0:Pl.properties)==null?void 0:hl.uuid)}))&&vi.createElement("span",{className:We.settingtag,style:{background:"#EC8657"}},"\u540E\u7F6E"),((Po=Go==null?void 0:Go.gl)==null?void 0:Po.find(Ys=>{var hl;return(Ys==null?void 0:Ys.uuid)===((hl=Pl==null?void 0:Pl.properties)==null?void 0:hl.uuid)}))&&vi.createElement("span",{className:We.settingtag,style:{background:"#497DFF"}},"\u5173\u8054"),vi.createElement("div",{className:We.multiple,title:Pl==null?void 0:Pl.title,dangerouslySetInnerHTML:{__html:(ds=Pl==null?void 0:Pl.title)==null?void 0:ds.replaceAll(Dl,`${Dl}`)},style:{width:"100%",fontSize:"14rem",color:"#000",fontWeight:400}})),vi.createElement("div",{className:We.hudong},vi.createElement("div",null,!((Zl=Go==null?void 0:Go.gl)!=null&&Zl.find(Ys=>{var hl;return(Ys==null?void 0:Ys.uuid)===((hl=Pl==null?void 0:Pl.properties)==null?void 0:hl.uuid)}))&&vi.createElement("span",{onClick:()=>{var Ys,hl,Rl,Yl;if(!(((hl=(Ys=Go==null?void 0:Go.gl)==null?void 0:Ys.filter(Au=>{var nu;return(Au==null?void 0:Au.uuid)===((nu=Pl==null?void 0:Pl.properties)==null?void 0:nu.uuid)}))==null?void 0:hl.length)>0)){let Au=[];Au.push({name:(Rl=Pl==null?void 0:Pl.properties)==null?void 0:Rl.name,uuid:(Yl=Pl==null?void 0:Pl.properties)==null?void 0:Yl.uuid,pathId:Aa,pathname:Nl,uuname:yo,olduuid:Vi}),ou({qx:Go==null?void 0:Go.qx,hx:Go==null?void 0:Go.hx,gl:[...Au,...Go==null?void 0:Go.gl],bh:Go==null?void 0:Go.bh})}},className:We.colortitle},"\u8BBE\u4E3A\u5173\u8054")),vi.createElement("span",{onClick:()=>{var Ys;let hl=(Ys=Go==null?void 0:Go.gl)==null?void 0:Ys.filter(Rl=>{var Yl;return Rl.uuid!==((Yl=Pl==null?void 0:Pl.properties)==null?void 0:Yl.uuid)});ou({qx:Go==null?void 0:Go.qx,hx:Go==null?void 0:Go.hx,bh:Go==null?void 0:Go.bh,gl:hl})}},((uu=Go==null?void 0:Go.gl)==null?void 0:uu.find(Ys=>{var hl;return(Ys==null?void 0:Ys.uuid)===((hl=Pl==null?void 0:Pl.properties)==null?void 0:hl.uuid)}))&&"\u53D6\u6D88\u5173\u8054")))}})),vi.createElement("div",{className:We.right},vi.createElement("div",{className:We.title},"\u5DF2\u5173\u8054\u5173\u7CFB"),vi.createElement("div",{style:{padding:"20rem 25rem"}},vi.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},vi.createElement("div",{className:We.Colortitle,style:{background:"#497DFF"}}),vi.createElement("div",null,"\u5173\u8054\uFF08",(Es=Go.gl)==null?void 0:Es.length,"\uFF09")),vi.createElement("div",{className:We.gxbody},(vl=Go==null?void 0:Go.gl)==null?void 0:vl.map(Pl=>vi.createElement("div",{className:We.tag,style:{background:"#497DFF"}},vi.createElement("span",{style:{marginRight:"10rem"}},Pl==null?void 0:Pl.name)," ",vi.createElement(pt.Z,{onClick:()=>{var nc;let Tu=(nc=Go==null?void 0:Go.gl)==null?void 0:nc.filter($i=>$i.uuid!==Pl.uuid);ou({qx:Go==null?void 0:Go.qx,bh:Go==null?void 0:Go.bh,hx:Go==null?void 0:Go.hx,gl:Tu})}}))))))))};var _o=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(Fa),co=he(89392),kn=he(10102),Yi=he(80636),ys=he(59301),$o=Object.getOwnPropertySymbols,eo=Object.prototype.hasOwnProperty,lo=Object.prototype.propertyIsEnumerable,Qr=(hn,Lr)=>{var tr={};for(var Oi in hn)eo.call(hn,Oi)&&Lr.indexOf(Oi)<0&&(tr[Oi]=hn[Oi]);if(hn!=null&&$o)for(var Oi of $o(hn))Lr.indexOf(Oi)<0&&lo.call(hn,Oi)&&(tr[Oi]=hn[Oi]);return tr},rr=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const ri=[3,2,1];let ua=null;const un=hn=>{var Lr=hn,{pathsDetail:tr,user:Oi,globalSetting:Do,loading:cr,dispatch:tl,datas:ka,items:Vi}=Lr,No=Qr(Lr,["pathsDetail","user","globalSetting","loading","dispatch","datas","items"]);const Nl=(0,se.useRef)(),Aa=(0,se.useRef)(),yo=(0,se.useRef)(null);(0,se.useEffect)(()=>{Fs()},[ka]),(0,se.useEffect)(()=>(window.addEventListener("resize",zi),()=>{window.removeEventListener("resize",zi)}),[]);function zi(){var bo,js;(js=(bo=Nl.current)==null?void 0:bo.update)==null||js.call(bo)}function Fs(){return rr(this,null,function*(){var bo,js,kl,Es,vl,Is,fl,Gl;if(((bo=ka==null?void 0:ka.nodes)==null?void 0:bo.length)>0){let Ul=(js=ka==null?void 0:ka.nodes)==null?void 0:js.filter(ao=>{var Wa;return Vi==null?void 0:Vi.includes((Wa=ao==null?void 0:ao.properties)==null?void 0:Wa.uuid)}).map(ao=>{var Wa,Dl,lu,mc,Ro,jl,Ml,mu,Co,Go,ou,Mc;return{rootNodeUuid:(Wa=ao==null?void 0:ao.properties)==null?void 0:Wa.rootNodeUuid,id:((Dl=ao==null?void 0:ao.properties)==null?void 0:Dl.uuid)+"_",name:(lu=ao==null?void 0:ao.properties)==null?void 0:lu.name,description:(mc=ao==null?void 0:ao.properties)==null?void 0:mc.description,nodeType:(Ro=ao==null?void 0:ao.properties)==null?void 0:Ro.nodeType,tags:((jl=ao==null?void 0:ao.properties)==null?void 0:jl.tags)&&((Co=(mu=(Ml=ao==null?void 0:ao.properties)==null?void 0:Ml.tags)==null?void 0:mu.split("\uFF0C"))==null?void 0:Co.map(Ai=>({name:Ai}))),colorType:parseInt((Go=ao==null?void 0:ao.properties)==null?void 0:Go.color)>3?"3":(ou=ao==null?void 0:ao.properties)==null?void 0:ou.color,activeColor:"#FA6400",size:ri[((Mc=ao==null?void 0:ao.properties)==null?void 0:Mc.color)-1]||1,shape:"circle",hide:!1,isExtendedState:!0}}),Ko=(Is=(vl=(Es=(kl=ka==null?void 0:ka.relationships)==null?void 0:kl.filter(ao=>{var Wa,Dl,lu,mc,Ro,jl;return ao.endNodeUuid!==((lu=(Dl=(Wa=ka==null?void 0:ka.nodes)==null?void 0:Wa[0])==null?void 0:Dl.properties)==null?void 0:lu.rootNodeUuid)&&ao.startNodeUuid!==((jl=(Ro=(mc=ka==null?void 0:ka.nodes)==null?void 0:mc[0])==null?void 0:Ro.properties)==null?void 0:jl.rootNodeUuid)}))==null?void 0:Es.filter(ao=>(Vi==null?void 0:Vi.includes(ao.startNodeUuid))&&(Vi==null?void 0:Vi.includes(ao.endNodeUuid))))==null?void 0:vl.filter(ao=>ao.type==="\u5305\u542B"||ao.type==="\u524D\u5E8F"||ao.type==="\u5173\u8054"))==null?void 0:Is.map(ao=>({hide:!1,id:(ao==null?void 0:ao.endNodeUuid)+"_",label:ao==null?void 0:ao.type,props:[],colorType:1,sourceRadius:32,targetRadius:32,source:(ao==null?void 0:ao.startNodeUuid)+"_",target:(ao==null?void 0:ao.endNodeUuid)+"_",value:10}));console.log("----",Ul,Ko),Nl.current=null,Aa.current.innerHTML="",Nl.current=new Yi.createContainer({containerName:"#graphRefs",width:((fl=Aa==null?void 0:Aa.current)==null?void 0:fl.clientWidth)||0,height:((Gl=Aa==null?void 0:Aa.current)==null?void 0:Gl.clientHeight)||0,toolbarData:[],clickToggle:!1,background:"#fff",isShowMask:!1,nodes:Ul,links:Ko,zoomOptions:{minScale:.2,maxScale:5},nodeMouseover:function(ao){return ao},nodeClick:function(ao){var Wa;return(Wa=Nl==null?void 0:Nl.current)==null||Wa.selectToNode(ao.id),ao},layout:{force:!1,x:20,y:60}}),Nl.current.zoomOut()}})}return ys.createElement("div",{ref:yo,style:{background:"#fff",height:"455rem"}},ys.createElement("div",{style:{width:"100%",height:"455rem"},ref:Aa,id:"graphRefs"}))};var sr=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(un),Hr="data:image/png;base64,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",hr="data:image/png;base64,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",Vr="data:image/png;base64,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",Rr="data:image/png;base64,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",qr=he(28103),Zi=he(42441),Wn=he(22861);const st=hn=>({tooltip:{trigger:"item"},legend:{top:"0%",left:"center"},series:[{name:"\u5B8C\u6210\u5360\u6BD4\u60C5\u51B5",type:"pie",radius:["40%","70%"],avoidLabelOverlap:!1,itemStyle:{borderRadius:10,borderColor:"#fff",borderWidth:2},label:{show:!1,position:"center"},emphasis:{label:{show:!0,fontSize:14,fontWeight:"bold"}},labelLine:{show:!1},data:hn}]});var Nt=he(84915),Gn=he(59301),Sr=Object.defineProperty,yr=Object.getOwnPropertySymbols,ci=Object.prototype.hasOwnProperty,ai=Object.prototype.propertyIsEnumerable,Ur=(hn,Lr,tr)=>Lr in hn?Sr(hn,Lr,{enumerable:!0,configurable:!0,writable:!0,value:tr}):hn[Lr]=tr,zr=(hn,Lr)=>{for(var tr in Lr||(Lr={}))ci.call(Lr,tr)&&Ur(hn,tr,Lr[tr]);if(yr)for(var tr of yr(Lr))ai.call(Lr,tr)&&Ur(hn,tr,Lr[tr]);return hn},ta=(hn,Lr)=>{var tr={};for(var Oi in hn)ci.call(hn,Oi)&&Lr.indexOf(Oi)<0&&(tr[Oi]=hn[Oi]);if(hn!=null&&yr)for(var Oi of yr(hn))Lr.indexOf(Oi)<0&&ai.call(hn,Oi)&&(tr[Oi]=hn[Oi]);return tr},qa=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const pi=[{name:"",value:0,itemStyle:{color:"rgb(223,209,38)"}},{name:"",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"",value:0,itemStyle:{color:"rgb(6,110,247)"}}],Mr=hn=>{var Lr=hn,{pathsDetail:tr,user:Oi,globalSetting:Do,loading:cr,dispatch:tl,uuid:ka}=Lr,Vi=ta(Lr,["pathsDetail","user","globalSetting","loading","dispatch","uuid"]),No,Nl,Aa,yo;const zi=(0,je.useParams)();let[Fs,bo]=(0,se.useState)({subject_id:zi==null?void 0:zi.pathId,course_id:"",parentNodeUuid:ka,type:1});const[js,kl]=(0,se.useState)(),[Es,vl]=(0,se.useState)([]),[Is,fl]=(0,se.useState)([]),[Gl]=(0,je.useSearchParams)();(0,se.useEffect)(()=>{Ul()},[ka]);function Ul(){return qa(this,null,function*(){var Ko,ao,Wa;let Dl=yield(0,Gt.ZP)("/api/knowledge/v2/knowledge_statistics.json",{method:"get",params:Fs});kl(Dl);let lu=Object.entries((Ko=Dl==null?void 0:Dl.data)==null?void 0:Ko.study_grasp_hash).map(([Ro,jl],Ml)=>({name:Ro,value:jl,itemStyle:pi[Ml].itemStyle})),mc=Object.entries((ao=Dl==null?void 0:Dl.data)==null?void 0:ao.study_complete_hash).map(([Ro,jl],Ml)=>({name:Ro,value:jl}));fl(mc),((Wa=lu==null?void 0:lu.filter(Ro=>(Ro==null?void 0:Ro.value)>0))==null?void 0:Wa.length)===0?vl([]):vl(lu)})}return Gn.createElement("div",{className:We.DetailStatistics},Gl.get("type")!=="classrooms"&&Gn.createElement("div",{className:We.header},Gn.createElement("span",{className:We.title},"\u7EDF\u8BA1\u8303\u56F4"),Gn.createElement(Ot.ZP.Group,{onChange:Ko=>{Fs.type=Ko.target.value,bo(zr({},Fs)),Ul()},value:Fs.type},Gn.createElement(Ot.ZP,{value:1},"\u5168\u90E8"),Gn.createElement(Ot.ZP,{value:2},"\u81EA\u4E3B\u5B66\u4E60"),Gn.createElement(Ot.ZP,{value:3},"\u8BFE\u5802\u5B66\u4E60")),(Fs==null?void 0:Fs.type)===3&&Gn.createElement(Et.default,{onChange:Ko=>{Fs.course_id=Ko,bo(zr({},Fs)),Ul()},style:{marginLeft:"-15rem",width:"148rem",height:"36rem"}},(No=js==null?void 0:js.courses)==null?void 0:No.map(Ko=>Gn.createElement(Et.default.Option,{value:Ko==null?void 0:Ko.id},Ko==null?void 0:Ko.name)))),Gn.createElement("div",{style:{marginTop:"16rem",display:"flex"}},Gn.createElement("div",{className:We.left,style:{backgroundImage:`url(${Hr}),linear-gradient(180deg, rgba(221, 233, 241, 0.4) 0%, rgba(255, 255, 255, 0.49) 100%)`}},Gn.createElement("img",{src:hr}),Gn.createElement("div",{style:{marginTop:"20rem"}},Gn.createElement("div",{className:We.xxrs},"\u5B66\u4E60\u4EBA\u6570"),Gn.createElement("div",{className:We.xxrscount},(Nl=js==null?void 0:js.data)==null?void 0:Nl.study_count))),Gn.createElement("div",{className:We.right},Gn.createElement("div",{className:We.righttop},Gn.createElement("img",{src:Vr}),Gn.createElement("div",null,Gn.createElement("div",{className:We.xxrs},"\u5B66\u4E60\u5B8C\u6210\u7387"),Gn.createElement("div",{className:We.xxrscount},(Aa=js==null?void 0:js.data)==null?void 0:Aa.study_complete_rate,"%"))),Gn.createElement("div",{className:We.rightbottom},Gn.createElement("img",{src:Rr}),Gn.createElement("div",null,Gn.createElement("div",{className:We.xxrs},"\u5B66\u4E60\u638C\u63E1\u7387"),Gn.createElement("div",{className:We.xxrscount},(yo=js==null?void 0:js.data)==null?void 0:yo.study_grasp_rate,"%"))))),Gn.createElement(qr.Z,{variant:"dashed",style:{borderColor:"#333333"},dashed:!0},"\u5B8C\u6210\u5360\u6BD4\u60C5\u51B5"),Gn.createElement(Zi.Z,{option:st(Is),style:{height:300,width:400},opts:{renderer:"svg"}}),Gn.createElement(qr.Z,{variant:"dashed",style:{borderColor:"#333333"},dashed:!0},"\u638C\u63A7\u7387"),(Es==null?void 0:Es.length)>0?Gn.createElement(Wn.Z,{labelTextColor:"#333",dataSource:Es}):Gn.createElement(Nt.J,{children:Gn.createElement("div",{style:{textAlign:"center",fontSize:"14rem"}},"\u6682\u65E0\u638C\u63A7\u7387\u6570\u636E")}))};var or=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(Mr),En=he(71347),$n=he(59301),Er=Object.defineProperty,Zr=Object.getOwnPropertySymbols,ti=Object.prototype.hasOwnProperty,Nr=Object.prototype.propertyIsEnumerable,Bi=(hn,Lr,tr)=>Lr in hn?Er(hn,Lr,{enumerable:!0,configurable:!0,writable:!0,value:tr}):hn[Lr]=tr,Zn=(hn,Lr)=>{for(var tr in Lr||(Lr={}))ti.call(Lr,tr)&&Bi(hn,tr,Lr[tr]);if(Zr)for(var tr of Zr(Lr))Nr.call(Lr,tr)&&Bi(hn,tr,Lr[tr]);return hn},Di=(hn,Lr)=>{var tr={};for(var Oi in hn)ti.call(hn,Oi)&&Lr.indexOf(Oi)<0&&(tr[Oi]=hn[Oi]);if(hn!=null&&Zr)for(var Oi of Zr(hn))Lr.indexOf(Oi)<0&&Nr.call(hn,Oi)&&(tr[Oi]=hn[Oi]);return tr},da=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const ha=[{name:"",value:0,itemStyle:{color:"rgb(223,209,38)"}},{name:"",value:0,itemStyle:{color:"rgb(6,234,230)"}},{name:"",value:0,itemStyle:{color:"rgb(6,110,247)"}}],na=hn=>{var Lr=hn,{pathsDetail:tr,user:Oi,globalSetting:Do,loading:cr,dispatch:tl,uuid:ka}=Lr,Vi=Di(Lr,["pathsDetail","user","globalSetting","loading","dispatch","uuid"]),No,Nl,Aa,yo;const zi=(0,je.useParams)();let[Fs,bo]=(0,se.useState)({subject_id:zi==null?void 0:zi.pathId,course_id:"",parentNodeUuid:ka,type:1});const[js,kl]=(0,se.useState)(),[Es,vl]=(0,se.useState)([]),[Is]=(0,je.useSearchParams)(),[fl,Gl]=(0,se.useState)([]);(0,se.useEffect)(()=>{Ul()},[ka]);function Ul(){return da(this,null,function*(){var Ko,ao,Wa;let Dl=yield(0,Gt.ZP)("/api/knowledge/v2/knowledge_statistics.json",{method:"get",params:Fs});kl(Dl);let lu=Object.entries((Ko=Dl==null?void 0:Dl.data)==null?void 0:Ko.study_grasp_hash).map(([Ro,jl],Ml)=>({name:Ro,value:jl,itemStyle:ha[Ml].itemStyle})),mc=Object.entries((ao=Dl==null?void 0:Dl.data)==null?void 0:ao.study_complete_hash).map(([Ro,jl],Ml)=>({name:Ro,value:jl}));Gl(mc),((Wa=lu==null?void 0:lu.filter(Ro=>(Ro==null?void 0:Ro.value)>0))==null?void 0:Wa.length)===0?vl([]):vl(lu)})}return $n.createElement("div",{className:We.DetailStatistics},Is.get("type")!=="classrooms"&&$n.createElement("div",{className:We.header},$n.createElement("span",{className:We.title},"\u7EDF\u8BA1\u8303\u56F4"),$n.createElement(Ot.ZP.Group,{onChange:Ko=>{Fs.type=Ko.target.value,bo(Zn({},Fs)),Ul()},value:Fs.type},$n.createElement(Ot.ZP,{value:1},"\u5168\u90E8"),$n.createElement(Ot.ZP,{value:2},"\u81EA\u4E3B\u5B66\u4E60"),$n.createElement(Ot.ZP,{value:3},"\u8BFE\u5802\u5B66\u4E60")),(Fs==null?void 0:Fs.type)===3&&$n.createElement(Et.default,{onChange:Ko=>{Fs.course_id=Ko,bo(Zn({},Fs)),Ul()},style:{marginLeft:"-15rem",width:"148rem",height:"36rem"}},(No=js==null?void 0:js.courses)==null?void 0:No.map(Ko=>$n.createElement(Et.default.Option,{value:Ko==null?void 0:Ko.id},Ko==null?void 0:Ko.name)))),$n.createElement("div",{style:{marginTop:"16rem",display:"flex"}},$n.createElement("div",{className:We.left,style:{backgroundImage:`url(${Hr}),linear-gradient(180deg, rgba(221, 233, 241, 0.4) 0%, rgba(255, 255, 255, 0.49) 100%)`}},$n.createElement("img",{src:hr}),$n.createElement("div",{style:{marginTop:"20rem"}},$n.createElement("div",{className:We.xxrs},"\u5B66\u4E60\u4EBA\u6570"),$n.createElement("div",{className:We.xxrscount},(Nl=js==null?void 0:js.data)==null?void 0:Nl.study_count))),$n.createElement("div",{className:We.right},$n.createElement("div",{className:We.righttop},$n.createElement("img",{src:Vr}),$n.createElement("div",null,$n.createElement("div",{className:We.xxrs},"\u5B66\u4E60\u5B8C\u6210\u7387"),$n.createElement("div",{className:We.xxrscount},(Aa=js==null?void 0:js.data)==null?void 0:Aa.study_complete_rate,"%"))),$n.createElement("div",{className:We.rightbottom},$n.createElement("img",{src:Rr}),$n.createElement("div",null,$n.createElement("div",{className:We.xxrs},"\u5B66\u4E60\u638C\u63E1\u7387"),$n.createElement("div",{className:We.xxrscount},(yo=js==null?void 0:js.data)==null?void 0:yo.study_grasp_rate,"%"))))),$n.createElement(qr.Z,{variant:"dashed",style:{borderColor:"#333333"},dashed:!0},"\u5B8C\u6210\u5360\u6BD4\u60C5\u51B5"),$n.createElement(Zi.Z,{option:st(fl),style:{height:300,width:400},opts:{renderer:"svg"}}),$n.createElement(qr.Z,{variant:"dashed",style:{borderColor:"#333333"},dashed:!0},"\u638C\u63A7\u7387"),(Es==null?void 0:Es.length)>0?$n.createElement(Wn.Z,{labelTextColor:"#333",dataSource:Es}):$n.createElement(En.Z,{children:$n.createElement("div",{style:{textAlign:"center",fontSize:"14rem"}},"\u6682\u65E0\u638C\u63A7\u7387\u6570\u636E")}))};var Qa=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(na),Ao=he(89504),Da=he(22315),Ma="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAXlJREFUOE/VlD1Lw1AUhp+YmkGQSnFR8AcUoSJ+LiKCqINQqIODbk51ETpaVHTyD6h/QQddXMRNRal1qLaDOhSFQicdiiKUNrkSmzQxH6WCg2a6Iec+7z3ve24kIYTMLz7SPwSmozPI2h6InroTkqQvywjOQNlm4PDczyV3yxfDT4AFa97fAmhxN/C0u9o8w6wUtYUkFdzAk1CVyC4E+x3cr7YBY7NTtZSB7DLewKF9Xa4xwAnUfU7P+wBHjjy6dgqY77a2r2MG8GV9CaQdhAhYJI8NnuYqEBgFqQ1SswawmEiCttnQIxfMdmKlD5QIXE0ZwMJKGPUjV0uqyYzNbPR6OQTBRbgct3mYX7hDiN46zr7BHq6fYGccUlEb8GFuDaFuuKbCNwtDURgFHdOQTdqA97Ewlfec75xZ99DbE6ULno8dY5MZs9r2mV/fbPQPr3kH8GZwFVXd+lE4doXyW/H7TbmdaKf0eIBWmQRamszbLNOQWxN//wf7CYUnn95U81GtAAAAAElFTkSuQmCC",es=he(58870),Fo=he(19842),Ls=he(98228),_a={flex_box_center:"flex_box_center___wU4bP",flex_space_between:"flex_space_between___ryVxe",flex_box_vertical_center:"flex_box_vertical_center___J64e0",flex_box_center_end:"flex_box_center_end___ZQTrR",flex_box_column:"flex_box_column___qYlzG",scoremodal:"scoremodal___g_fYu",selectWrapper:"selectWrapper___wbF8t",selectWrappers:"selectWrappers___bAt3m",allqingchu:"allqingchu___IczWP",title:"title___cJxdu",score:"score___W6O3r",close:"close___rZaaH",content:"content___I6bh1",items:"items___NS5if",bottom:"bottom___zStfh",yes:"yes___dvYz0",no:"no___BqowM",titlecount:"titlecount___cx4fQ",add:"add___Vazpd",search:"search___kg8ng",searchIcon:"searchIcon___CaGo3",tabWrap:"tabWrap___CAndG",previewModal:"previewModal___Ms_9O",q_title:"q_title___WfJKh"},$s=he(76154),sa={flex_box_center:"flex_box_center___nswYj",flex_space_between:"flex_space_between___fOVoM",flex_box_vertical_center:"flex_box_vertical_center___Q25Hr",flex_box_center_end:"flex_box_center_end___e8x5w",flex_box_column:"flex_box_column___TkKrN",warp:"warp___CyVTN",shixunbutton:"shixunbutton___5A5Bl",redio:"redio____F59s",redioitem:"redioitem___lpnfs",redioitemyes:"redioitemyes___LJh0a",title:"title___pmJ_X",titleyes:"titleyes___xpcjY",yestag:"yestag___DZcUj",qcount:"qcount___N4pNO",score:"score___aNTPQ",qtitle:"qtitle___E_ClM",checkbox:"checkbox___T6Xdo",checkboxitem:"checkboxitem___dfyKW",checkboxitemyes:"checkboxitemyes___Uh2au",bottom:"bottom___uZhfZ",bottomitem:"bottomitem___NElKx",left:"left___CG1Ne",right:"right___iBXmO",completion:"completion___xvAyY",content:"content___Tf9bM",items:"items___zogcz",simple:"simple___zY1bm",shixun:"shixun___AAIlJ",combination:"combination___c7Ghw",program:"program___sXFp_"},Os=he(92386),Us=he(24334);const Ns=["A\uFF0E","B\uFF0E","C\uFF0E","D\uFF0E","E\uFF0E","F\uFF0E","G\uFF0E","H\uFF0E","I\uFF0E","J\uFF0E","K\uFF0E","L\uFF0E","M\uFF0E","N\uFF0E","O\uFF0E","P\uFF0E","Q\uFF0E","R\uFF0E","S\uFF0E","T\uFF0E","U\uFF0E","V\uFF0E","W\uFF0E","X\uFF0E","Y\uFF0E","Z\uFF0E"];var Al=({qitem:hn})=>{var Lr,tr,Oi,Do,cr,tl,ka,Vi,No,Nl;return se.createElement("div",{className:sa.warp},se.createElement("div",{className:sa.mainPart},se.createElement("div",{className:sa.qcount},(hn==null?void 0:hn.question_type)===8&&se.createElement(Os.Z,{className:sa.content,showProgramFill:!0,value:(Lr=hn==null?void 0:hn.program_attr)==null?void 0:Lr.description}),(hn==null?void 0:hn.question_type)!=8&&se.createElement(Os.Z,{className:sa.qtitle,value:(hn==null?void 0:hn.name)||(hn==null?void 0:hn.title)})),((hn==null?void 0:hn.question_type)===0||(hn==null?void 0:hn.question_type)===2)&&se.createElement("div",null,(tr=hn==null?void 0:hn.choices)==null?void 0:tr.map((Aa,yo)=>se.createElement("div",{className:sa.redio},!(Aa!=null&&Aa.is_answer)&&se.createElement("span",{className:sa.redioitem}),(Aa==null?void 0:Aa.is_answer)&&se.createElement("i",{className:`${sa.redioitemyes} icon-duigou1`}),se.createElement(Os.Z,{className:Aa!=null&&Aa.is_answer?sa.titleyes:sa.title,value:Ns[yo]+(Aa==null?void 0:Aa.choice_text)}),(Aa==null?void 0:Aa.is_answer)&&se.createElement("div",{className:sa.yestag},"\u6B63\u786E\u7B54\u6848")))),(hn==null?void 0:hn.question_type)===1&&se.createElement("div",null,(Oi=hn==null?void 0:hn.choices)==null?void 0:Oi.map((Aa,yo)=>se.createElement("div",{className:sa.checkbox},!(Aa!=null&&Aa.is_answer)&&se.createElement("span",{className:sa.checkboxitem}),(Aa==null?void 0:Aa.is_answer)&&se.createElement("i",{className:`${sa.checkboxitemyes} icon-duigou1`}),se.createElement(Os.Z,{className:Aa!=null&&Aa.is_answer?sa.titleyes:sa.title,value:Ns[yo]+(Aa==null?void 0:Aa.choice_text)}),(Aa==null?void 0:Aa.is_answer)&&se.createElement("div",{className:sa.yestag},"\u6B63\u786E\u7B54\u6848")))),(hn==null?void 0:hn.question_type)===3&&se.createElement("div",{className:sa.completion},(Do=hn==null?void 0:hn.standard_answer)==null?void 0:Do.map((Aa,yo)=>{var zi;return se.createElement("div",{style:{display:"flex"}},se.createElement("span",{className:sa.title},"\u586B\u7A7A\u9879",yo+1),se.createElement("div",{className:sa.content},(zi=Aa==null?void 0:Aa.answer_text)==null?void 0:zi.map((Fs,bo)=>se.createElement("div",{className:sa.items},Fs))))})),(hn==null?void 0:hn.question_type)===4&&se.createElement("div",{className:sa.simple},se.createElement("div",{className:sa.title},"\u53C2\u8003\u7B54\u6848"),se.createElement("div",{className:"mt10",style:{fontSize:"16px"}},(cr=hn==null?void 0:hn.answer_texts)!=null&&cr[0]?se.createElement(Os.Z,{className:sa.content,value:(tl=hn==null?void 0:hn.answer_texts)==null?void 0:tl[0]}):se.createElement("div",{style:{color:"#C1C1C1"}},"\u6682\u672A\u8BBE\u7F6E~"))),(hn==null?void 0:hn.question_type)===5&&((ka=hn==null?void 0:hn.challenge_names)==null?void 0:ka.map((Aa,yo)=>se.createElement("div",{className:sa.shixun},se.createElement("span",{className:sa.qtitle},se.createElement("span",{style:{marginRight:10}},"\u7B2C",(0,On.EM)(yo+1),"\u9898"),Aa)))),(hn==null?void 0:hn.question_type)===6&&se.createElement("div",{className:sa.program},se.createElement(Os.Z,{className:sa.content,value:((Vi=hn==null?void 0:hn.program_attr)==null?void 0:Vi.description)||"- -"})),(hn==null?void 0:hn.question_type)===7&&((No=hn==null?void 0:hn.sub_item_banks)==null?void 0:No.map((Aa,yo)=>{var zi,Fs,bo,js,kl;return se.createElement("div",null,se.createElement("div",{className:sa.combination},se.createElement("span",{className:sa.qtitle},Aa==null?void 0:Aa.name)),se.createElement("div",{className:sa.warp,style:{padding:"0px",paddingTop:20}},se.createElement("div",null,((Aa==null?void 0:Aa.item_type)=="SINGLE"||(Aa==null?void 0:Aa.item_type)=="JUDGMENT")&&((zi=Aa==null?void 0:Aa.choices)==null?void 0:zi.map((Es,vl)=>se.createElement("div",{className:sa.redio},!(Es!=null&&Es.is_answer)&&se.createElement("span",{className:sa.redioitem}),(Es==null?void 0:Es.is_answer)&&se.createElement("i",{className:`${sa.redioitemyes} icon-duigou1`}),se.createElement(Os.Z,{className:Es!=null&&Es.is_answer?sa.titleyes:sa.title,value:Ns[vl]+(Es==null?void 0:Es.choice_text)}),(Es==null?void 0:Es.is_answer)&&se.createElement("div",{className:sa.yestag},"\u6B63\u786E\u7B54\u6848")))),(Aa==null?void 0:Aa.item_type)=="MULTIPLE"&&((Fs=Aa==null?void 0:Aa.choices)==null?void 0:Fs.map((Es,vl)=>se.createElement("div",{className:sa.checkbox},!(Es!=null&&Es.is_answer)&&se.createElement("span",{className:sa.checkboxitem}),(Es==null?void 0:Es.is_answer)&&se.createElement("i",{className:`${sa.checkboxitemyes} icon-duigou1`}),se.createElement(Os.Z,{className:Es!=null&&Es.is_answer?sa.titleyes:sa.title,value:Ns[vl]+(Es==null?void 0:Es.choice_text)}),(Es==null?void 0:Es.is_answer)&&se.createElement("div",{className:sa.yestag},"\u6B63\u786E\u7B54\u6848")))),(Aa==null?void 0:Aa.item_type)=="COMPLETION"&&se.createElement("div",{className:sa.completion},(bo=Aa==null?void 0:Aa.standard_answer)==null?void 0:bo.map((Es,vl)=>{var Is;return se.createElement("div",{style:{display:"flex"}},se.createElement("span",{className:sa.title},"\u586B\u7A7A\u9879",vl+1),se.createElement("div",{className:sa.content},(Is=Es==null?void 0:Es.answer_text)==null?void 0:Is.map((fl,Gl)=>se.createElement("div",{className:sa.items},fl))))})),(Aa==null?void 0:Aa.item_type)=="SUBJECTIVE"&&se.createElement("div",{className:sa.simple},se.createElement("div",{className:sa.title},"\u53C2\u8003\u7B54\u6848"),se.createElement("div",{className:"mt10",style:{fontSize:"16px"}},(js=Aa==null?void 0:Aa.answer_texts)!=null&&js[0]?se.createElement(Os.Z,{className:sa.content,value:(kl=Aa==null?void 0:Aa.answer_texts)==null?void 0:kl[0]}):se.createElement("div",{style:{color:"#C1C1C1"}},"\u6682\u672A\u8BBE\u7F6E~"))))))})),(hn==null?void 0:hn.question_type)===8&&se.createElement("div",null,se.createElement(Os.Z,{disabledFill:!0,className:sa.content,showProgramFill:!0,value:Us.Base64.decode(((Nl=hn==null?void 0:hn.program_attr)==null?void 0:Nl.code)||"")})),(hn==null?void 0:hn.question_type)===5&&se.createElement("div",{style:{background:"#F6F7F9",padding:"0px 20px",height:46,lineHeight:"46px",marginTop:40,display:"flex",alignItems:"center"}},se.createElement("div",{style:{flex:1,alignItems:"center",display:"flex"}},se.createElement("div",{style:{marginRight:30}},se.createElement("span",{style:{marginRight:10}},"\u521B\u5EFA\u8005"),se.createElement("span",{style:{color:"#000000"}},(hn==null?void 0:hn.author_name)||"- -")),se.createElement("div",{style:{marginRight:30}},se.createElement("span",{style:{marginRight:10}},"\u6240\u5C5E\u5355\u4F4D"),se.createElement("span",{style:{color:"#000000"}},(hn==null?void 0:hn.author_school_name)||"- -")),se.createElement("div",{style:{marginRight:30}},se.createElement("span",{style:{marginRight:10}},"\u5B66\u4E60\u4EBA\u6570"),se.createElement("span",{style:{color:"#000000"}},(hn==null?void 0:hn.study_count)||"0"))),se.createElement("a",{className:sa.shixunbutton,href:`/shixuns/${hn==null?void 0:hn.identifier}/challenges?exercise=true`,target:"_blank"},se.createElement("i",{onClick:()=>{},style:{marginRight:20},className:"iconfont icon-shixunkecheng mr5 "}),"\u5B9E\u8BAD\u8BE6\u60C5"))),((hn==null?void 0:hn.question_type)<=4||[6,8].includes(hn==null?void 0:hn.question_type))&&se.createElement("div",{className:sa.bottom},se.createElement("div",{className:sa.bottomitem},se.createElement("span",{className:sa.left},"\u89E3\u6790"),se.createElement("span",{className:sa.right},hn!=null&&hn.analysis?se.createElement(Os.Z,{value:hn==null?void 0:hn.analysis}):se.createElement("span",{style:{color:"#C1C1C1"}},"\u6682\u672A\u8BBE\u7F6E~"))),se.createElement("div",{className:sa.bottomitem},se.createElement("span",{className:sa.left},"\u96BE\u5EA6"),se.createElement("span",{className:sa.right},(hn==null?void 0:hn.difficulty)===1?"\u7B80\u5355":(hn==null?void 0:hn.difficulty)===2?"\u9002\u4E2D":"\u56F0\u96BE")),se.createElement("div",{className:sa.bottomitem},se.createElement("span",{className:sa.left},"\u77E5\u8BC6\u70B9"),se.createElement("span",{className:sa.right},hn!=null&&hn.tag_discipline?hn==null?void 0:hn.tag_discipline:se.createElement("span",{style:{color:"#C1C1C1"}},"\u6682\u672A\u8BBE\u7F6E~")))))},Bs=he(20428),Ho=he(94008),ll=he(61485),el=he(96609),Rs=he(50778),ui=he(59301),za=Object.defineProperty,ls=Object.defineProperties,vs=Object.getOwnPropertyDescriptors,Ms=Object.getOwnPropertySymbols,Ts=Object.prototype.hasOwnProperty,ul=Object.prototype.propertyIsEnumerable,Na=(hn,Lr,tr)=>Lr in hn?za(hn,Lr,{enumerable:!0,configurable:!0,writable:!0,value:tr}):hn[Lr]=tr,$a=(hn,Lr)=>{for(var tr in Lr||(Lr={}))Ts.call(Lr,tr)&&Na(hn,tr,Lr[tr]);if(Ms)for(var tr of Ms(Lr))ul.call(Lr,tr)&&Na(hn,tr,Lr[tr]);return hn},gl=(hn,Lr)=>ls(hn,vs(Lr)),zs=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const Xu=({setScoreShow:hn,ScoreShow:Lr,listitem:tr,onOk:Oi,isshixuns:Do,isloadings:cr,dispatch:tl,isIntelligentAssistant:ka=!1,ispptModal:Vi=!1,isChangeQuestion:No=!1,newExercisePaper:Nl,shixunsDetail:Aa})=>{var yo;let[zi,Fs]=(0,se.useState)({type:"0",page:1,updated_at:"",quotes:"",item_type:null,per_page:10,courseid:"",tag_discipline_id:null,difficulty:null,keyword:null,bigmodel:ka,is_smart_plan:Vi,group_id:[]}),[bo,js]=(0,se.useState)([]),[kl,Es]=(0,se.useState)([]),[vl,Is]=(0,se.useState)([]),[fl,Gl]=(0,se.useState)([]);const[Ul,Ko]=(0,se.useState)(!1),[ao]=Bt.default.useForm(),[Wa,Dl]=(0,se.useState)(),[lu,mc]=(0,se.useState)(!1);let[Ro,jl]=(0,se.useState)(Do);const[Ml,mu]=(0,se.useState)([]),[Co,Go]=(0,se.useState)(0),[ou,Mc]=(0,se.useState)(!0),[Ai,tu]=(0,se.useState)([]),[Pl,nc]=(0,se.useState)([]),Tu=[{name:"\u5168\u90E8",value:"",question_type:0},{name:"\u5355\u9009\u9898",value:"SINGLE",question_type:0},{name:"\u591A\u9009\u9898",value:"MULTIPLE",question_type:1},{name:"\u5224\u65AD\u9898",value:"JUDGMENT",question_type:2},{name:"\u586B\u7A7A\u9898",value:"COMPLETION",question_type:3},{name:"\u7B80\u7B54\u9898",value:"SUBJECTIVE",question_type:4},{name:"\u5B9E\u8BAD\u9898",value:"SHIXUN",question_type:5},{name:"\u7F16\u7A0B\u9898",value:"PROGRAM",question_type:6},{name:"\u7EC4\u5408\u9898",value:"COMBINATION",question_type:7},{name:"\u7A0B\u5E8F\u586B\u7A7A\u9898",value:"BPROGRAM",question_type:8}],$i=[{name:"\u5168\u90E8",value:"",question_type:0},{name:"\u5355\u9009\u9898",value:"SINGLE",question_type:0},{name:"\u591A\u9009\u9898",value:"MULTIPLE",question_type:1},{name:"\u5224\u65AD\u9898",value:"JUDGMENT",question_type:2},{name:"\u7F16\u7A0B\u9898",value:"PROGRAM",question_type:6}];let[ol,Po]=(0,se.useState)({gg:{type:"1",page:1,updated_at:"",quotes:"",item_type:null,courseid:"",per_page:10,tag_discipline_id:null,difficulty:null,keyword:null},ttgx:{type:"3",page:1,updated_at:"",quotes:"",item_type:null,per_page:10,courseid:"",tag_discipline_id:null,difficulty:null,keyword:null,group_id:[]},scj:{type:"2",page:1,updated_at:"",quotes:"",item_type:null,per_page:10,courseid:"",tag_discipline_id:null,difficulty:null,keyword:null},wcjd:{type:"0",page:1,updated_at:"",quotes:"",item_type:null,per_page:10,courseid:"",tag_discipline_id:null,difficulty:null,keyword:null,group_id:[]},yx:{type:"5",page:1,updated_at:"",quotes:"",item_type:null,per_page:10,courseid:"",tag_discipline_id:null,difficulty:null,keyword:null,group_id:null}});const ds=(0,se.useRef)(new Set),Zl=(0,se.useRef)(new Set),uu=[{name:"\u7B80\u5355",value:1},{name:"\u9002\u4E2D",value:2},{name:"\u56F0\u96BE",value:3}],Ys=[{name:"\u521D\u7EA7",value:1},{name:"\u4E2D\u7EA7",value:2},{name:"\u4E2D\u9AD8\u7EA7",value:3},{name:"\u9AD8\u7EA7",value:4}],hl=[{name:"\u672A\u53D1\u5E03",value:"unpublish"},{name:"\u9759\u9ED8\u53D1\u5E03",value:"silent_publish"},{name:"\u516C\u5F00\u53D1\u5E03",value:"public_publish"}],[Rl,Yl]=(0,se.useState)(!1),Au=()=>{ao.resetFields(),Ro=!1,jl(!1),Yl(!1),ao.submit()};(0,se.useEffect)(()=>{var Mi,Ha;(((Mi=tr==null?void 0:tr.questionIdArr)==null?void 0:Mi.length)>0||((Ha=tr==null?void 0:tr.shixun_ids)==null?void 0:Ha.length)>0)&&(Es([...tr==null?void 0:tr.questionIdArr,...tr==null?void 0:tr.shixun_ids]),Is([...tr==null?void 0:tr.questionIdArr,...tr==null?void 0:tr.shixun_ids]),mu([...tr==null?void 0:tr.shixun_ids]),Zl.current=new Set([...tr==null?void 0:tr.questionIdArr]),ds.current=new Set([...tr==null?void 0:tr.shixun_ids]))},[tr]),(0,se.useEffect)(()=>{Lr&&(ao.setFieldsValue({item_type:"",courseid:"",tag_discipline_id:null,difficulty:null,keyword:null}),ou&&Ro&&(ao.setFieldsValue({item_type:"SHIXUN"}),zi.item_type="SHIXUN",Fs($a({},zi)),Mc(!1)),nu(zi),xc(),Kc({group_id:0,page:1,per_page:20,sort_by:"updated_at",sort_direction:"desc",type:"0"}))},[Lr]),(0,se.useEffect)(()=>{Co>0&&setTimeout(()=>{Go(0)},2e3)},[Co]);function nu(Mi){return zs(this,null,function*(){var Ha,yl,Sl;if(Ko(!0),Fs($a({},Mi)),(vl==null?void 0:vl.length)<=0&&Mi.type==="5"){Gl([]),Ko(!1);return}let ru=Mi.type==="5"?vl==null?void 0:vl.filter(nt=>!Ml.includes(nt)):null,Re=Mi.type==="5"?vl==null?void 0:vl.filter(nt=>Ml.includes(nt)):null,$e=yield(0,Gt.ZP)("/api/item_banks.json",{method:"get",params:gl($a({},Mi),{discipline_id:((Ha=Mi==null?void 0:Mi.courseid)==null?void 0:Ha[0])||null,sub_discipline_id:((yl=Mi==null?void 0:Mi.courseid)==null?void 0:yl[1])||null,ids:ru,shixun_ids:Re,include_shixuns:!ka,group_id:((Sl=Mi.group_id)==null?void 0:Sl.map(nt=>nt==null?void 0:nt.value))||null,keyword:Mi.keyword?encodeURIComponent(Mi.keyword):Mi.keyword,type:Mi.type==="5"?null:Mi.type,clazz:Mi.type==="3"?"ItemBanksGroup":null,bigmodel:ka,is_smart_plan:Vi})});Gl($e),Ko(!1)})}function xc(){return zs(this,null,function*(){let Mi=yield(0,Gt.ZP)("/api/disciplines.json",{method:"get",params:{source:"question",group_id:0,group_type:zi.type==="5"?null:zi.type,clazz:"ItemBanksGroup"}});js((0,$s.L)(Mi==null?void 0:Mi.disciplines))})}function Kc(Mi){return zs(this,null,function*(){var Ha;let yl=yield(0,Gt.ZP)("/api/item_banks_groups/for_problemset.json",{method:"post",body:Mi}),Sl=[{title:"\u6839\u76EE\u5F55",id:0,pid:0,value:0,key:0,isLeaf:!1,children:(Ha=yl==null?void 0:yl.data)==null?void 0:Ha.map(ru=>({title:ru.name,id:ru.id,pid:ru.id,value:ru.id,key:ru.id,isLeaf:!ru.have_child}))}];tu(Sl)})}function Dc(Mi){return zs(this,null,function*(){var Ha,yl,Sl,ru;Ko(!0);let Re=(Ha=Mi.list)==null?void 0:Ha.filter(Yt=>!Ml.includes(Yt)),$e=(yl=Mi.list)==null?void 0:yl.filter(Yt=>Ml.includes(Yt));if(Re.length===0&&$e.length===0){Ko(!1),Gl([]);return}let nt=yield(0,Gt.ZP)("/api/item_banks.json",{method:"get",params:gl($a({},Mi),{discipline_id:((Sl=Mi==null?void 0:Mi.courseid)==null?void 0:Sl[0])||null,sub_discipline_id:((ru=Mi==null?void 0:Mi.courseid)==null?void 0:ru[1])||null,ids:Re,shixun_ids:$e,type:Mi.type==="5"?null:Mi.type,clazz:Mi.type==="3"?"ItemBanksGroup":null})});Ko(!1),Gl(nt)})}const Jl=Mi=>zs(void 0,null,function*(){const Ha=yield tl({type:"shixunsDetail/release",payload:{id:Mi}});let yl=Ha==null?void 0:Ha.tag_position,Sl=(Ha==null?void 0:Ha.evaluation_set_position)||[],ru=Ha.status;return ru===0?(Rt.ZP.success("\u53D1\u5E03\u6210\u529F"),nu(zi),!0):(ru===2?Rt.ZP.error(`\u7B2C${Sl.join(",")}\u5173\u5C1A\u672A\u5B8C\u6210\uFF0C\u65E0\u6CD5\u7533\u8BF7\u53D1\u5E03`):ru===3?Rt.ZP.error(`\u6BCF\u4E00\u4E2A\u5173\u5361\u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u6280\u80FD\u6807\u7B7E, \u7B2C${yl.join(",")}\u5173\u5C1A\u672A\u8BBE\u7F6E\u6280\u80FD\u6807\u7B7E\uFF0C\u8BF7\u8865\u5145`):Rt.ZP.error("\u5C1A\u672A\u521B\u5EFA\u4EFB\u52A1\u7684\u5B9E\u8BAD\uFF0C\u4E0D\u80FD\u7533\u8BF7\u53D1\u5E03"),!1)}),Io=Mi=>(Mi==null?void 0:Mi.shixun_tag_num)===1?"\u672A\u53D1\u5E03\u7684\u5B9E\u8DF5\u9879\u76EE\u4E0D\u80FD\u88AB\u9009\u7528\uFF0C\u8BF7\u5148\u8FDB\u884C\u53D1\u5E03":"",fs=(Mi,Ha,yl)=>Mi.map(Sl=>Sl.key===Ha?$a($a({},Sl),yl):Sl.children?gl($a({},Sl),{children:fs(Sl.children,Ha,yl)}):Sl),Gu=Mi=>zs(void 0,null,function*(){const{key:Ha}=Mi;let yl=zi.type;const Sl=yield(0,Rs.ex)({page:1,per_page:20,sort_by:"updated_at",sort_direction:"desc",group_id:Math.abs(Ha),type:yl}),{data:ru,total_count:Re}=Sl||{};Re>0&&tu($e=>fs($e,Ha,{children:ru.map(nt=>({title:nt.name,id:nt.id,pid:nt.id,value:nt.id,key:nt.id,isLeaf:!nt.have_child}))}))});function cl(Mi){console.log("----",zi),Mi==="1"&&(ol.gg=$a({},zi)),Mi==="2"&&(ol.scj=$a({},zi)),Mi==="3"&&(ol.ttgx=$a({},zi)),Mi==="0"&&(ol.wcjd=$a({},zi)),Mi==="5"&&(ol.yx=$a({},zi)),Po($a({},ol))}function Iu(){zi.type==="1"&&(zi=ol.gg),zi.type==="2"&&(zi=ol.scj),zi.type==="3"&&(zi=ol.ttgx),zi.type==="0"&&(zi=ol.wcjd),zi.type==="5"&&(zi=ol.yx),(zi==null?void 0:zi.item_type)==="SHIXUN"?(Ro=!0,jl(!0)):(Ro=!1,jl(!1)),ao.setFieldsValue($a({},zi)),Fs($a({},zi)),nu($a({},zi))}return ui.createElement("div",null,ui.createElement(Ze.default,{title:!1,footer:!1,open:Lr,width:1200,centered:!0,className:_a.scoremodal,onCancel:()=>{hn(!1)}},ui.createElement("div",{style:{display:"flex",alignItems:"center"}},ui.createElement("div",{className:_a.title},ka?"\u4EE5\u9898\u6362\u9898":"\u9898\u5E93\u9009\u9898")),ka&&ui.createElement("div",{style:{padding:10,background:"#F6F7F9",borderRadius:4,marginTop:14}},"\u6839\u636E\u73B0\u6709\u8BD5\u9898\u7684\u9898\u578B\u3001\u65B9\u5411\u3001\u77E5\u8BC6\u70B9\u3001\u96BE\u6613\u5EA6\uFF0C\u5FEB\u901F\u751F\u6210\u65B0\u7684\u8BD5\u9898\uFF0C\u589E\u52A0\u8BD5\u9898\u7684\u4E30\u5BCC\u5EA6"),ui.createElement(vt.default,{className:_a.tabWrap,activeKey:zi.type,onChange:Mi=>{Mi==="3"?(zi.show_all_share=!0,Kc({group_id:0,page:1,per_page:20,sort_by:"updated_at",sort_direction:"desc",type:"3"})):zi.show_all_share=null,Mi==="0"&&Kc({group_id:0,page:1,per_page:20,sort_by:"updated_at",sort_direction:"desc",type:"0"}),cl(zi.type),zi.type=Mi,(zi==null?void 0:zi.item_type)==="SHIXUN"&&zi.type!=="5"&&(Ro=!0,jl(!0)),Yl(!1),zi.type==="5"&&(Ro=!1,jl(!1)),Iu(),xc()},items:[{label:"\u56E2\u961F\u5171\u4EAB",key:"3"},{label:"\u6536\u85CF\u5939",key:"2"},{label:"\u6211\u521B\u5EFA\u7684",key:"0"},{label:ui.createElement("div",null,"\u5DF2\u9009",vl.length>0&&ui.createElement("span",{className:_a.titlecount},vl.length),Co>0&&ui.createElement("span",{className:_a.add},"+",Co)),key:"5"}]}),ui.createElement(Bt.default,{layout:"inline",form:ao,onValuesChange:(Mi,Ha)=>{const yl=Object.values(Ha).some(ru=>ru!==null&&ru!==""&&ru!==void 0),Sl=Ha.keyword==="";if(Yl(yl||!Sl),zi.page=1,(Ha==null?void 0:Ha.item_type)==="SHIXUN"){if(zi.type==="5"?jl(!1):jl(!0),Mi.keyword||Mi.keyword==="")return;ao.submit()}else{if(Mi!=null&&Mi.courseid&&ao.setFieldsValue({tag_discipline_id:""}),jl(!1),Mi.keyword||Mi.keyword==="")return;ao.submit()}},onFinish:Mi=>{var Ha;zi.type==="3"&&(!Mi.group_id||((Ha=Mi==null?void 0:Mi.group_id)==null?void 0:Ha.length)===0)?zi.show_all_share=!0:zi.show_all_share=null,Fs($a($a({},zi),Mi)),nu($a($a({},zi),Mi))}},ui.createElement(Bt.default.Item,{name:"item_type"},ui.createElement(Et.default,{className:_a.selectWrapper,placeholder:"\u9898\u578B",style:{width:110},size:"middle"},(Vi?$i:ka?Tu==null?void 0:Tu.filter(Mi=>Mi.question_type!==5):Tu).map(Mi=>ui.createElement(Et.default.Option,{key:Mi.value},Mi.name)))),ui.createElement(Bt.default.Item,{name:"courseid"},ui.createElement(Fo.Z,{className:_a.selectWrapper,style:{width:160},size:"middle",placeholder:"\u65B9\u5411&\u8BFE\u7A0B",options:bo})),!Ro&&ui.createElement(Bt.default.Item,{name:"tag_discipline_id"},ui.createElement(Et.default,{className:_a.selectWrapper,placeholder:"\u77E5\u8BC6\u70B9",style:{width:160},size:"middle",allowClear:!0},(yo=fl==null?void 0:fl.tag_disciplines)==null?void 0:yo.map(Mi=>ui.createElement(Et.default.Option,{key:Mi.id},Mi.name)))),ui.createElement(Bt.default.Item,{name:Ro?"diff":"difficulty"},ui.createElement(Et.default,{className:_a.selectWrapper,placeholder:"\u96BE\u5EA6",style:{width:118},size:"middle",allowClear:!0},uu.map(Mi=>ui.createElement(Et.default.Option,{key:Mi.value},Mi.name)))),Ro&&ui.createElement(Bt.default.Item,{name:"shixun_publish_status"},ui.createElement(Et.default,{className:_a.selectWrapper,placeholder:"\u5168\u90E8\u72B6\u6001",style:{width:118},size:"middle",allowClear:!0},hl.map(Mi=>ui.createElement(Et.default.Option,{key:Mi.value},Mi.name)))),(zi.type==="3"||zi.type==="0")&&!Ro&&ui.createElement(Bt.default.Item,{name:"group_id"},ui.createElement(Ls.default,{treeDataSimpleMode:!0,style:{width:118},className:_a.selectWrappers,multiple:!0,allowClear:!0,showSearch:!0,filterTreeNode:(Mi,Ha)=>Ha.title.toUpperCase().indexOf(Mi.toUpperCase())!==-1,dropdownStyle:{maxHeight:400,width:500,overflow:"auto"},placeholder:"\u8BF7\u9009\u62E9\u6587\u4EF6\u5939",treeCheckStrictly:!0,loadData:Gu,treeDefaultExpandedKeys:[0],maxTagCount:0,treeCheckable:!0,treeData:Ai})),Rl&&ui.createElement("span",{className:_a.allqingchu,onClick:Au},ui.createElement("i",{className:"iconfont icon-guanbi4"}),ui.createElement("span",null,"\u6E05\u9664\u7B5B\u9009\u6761\u4EF6")),ui.createElement(Bt.default.Item,{style:{flex:"0 0 auto",marginRight:0,marginLeft:"auto"},name:"keyword"},ui.createElement(qe.default.Search,{className:_a.search,placeholder:"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22",allowClear:!0,suffix:ui.createElement("i",{className:`iconfont icon-sousuo9 font14 ${_a.searchIcon}`,onClick:()=>ao.submit()}),onSearch:Mi=>{ao.submit()}}))),ui.createElement("div",{style:{background:"#F6F7F9",display:"flex",alignItems:"center",marginTop:18,height:40,paddingLeft:10,paddingRight:20}},ui.createElement("div",{onClick:()=>{zi.updated_at==="asc"?zi.updated_at="desc":zi.updated_at="asc",Fs(gl($a({},zi),{page:1})),nu(gl($a({},zi),{page:1}))}}," ",zi.updated_at?ui.createElement("img",{src:zi.updated_at==="asc"?Bs.Z:Ho.Z,style:{width:"15px",verticalAlign:"text-bottom"},className:"font14 mr5 c-light-primary"}):ui.createElement("i",{style:{fontSize:"14px"},className:"iconfont icon-jiangxu mr5 c-light-primary"}),"\u6309\u66F4\u65B0\u65F6\u95F4\u6392\u5E8F"),ui.createElement("div",{onClick:()=>{zi.quotes==="asc"?zi.quotes="desc":zi.quotes="asc",Fs(gl($a({},zi),{page:1})),nu(gl($a({},zi),{page:1}))},style:{marginLeft:20}}," ",zi.quotes?ui.createElement("img",{src:zi.quotes==="asc"?Bs.Z:Ho.Z,style:{width:"15px",verticalAlign:"text-bottom"},className:"font14 mr5 c-light-primary"}):ui.createElement("i",{style:{fontSize:"14px"},className:"iconfont icon-jiangxu mr5 c-light-primary"}),"\u6309\u4F7F\u7528\u6B21\u6570\u6392\u5E8F")),ui.createElement(oi.default,{style:{marginTop:2,marginBottom:20},scroll:{y:260},dataSource:(fl==null?void 0:fl.items)||(fl==null?void 0:fl.shixun_list),pagination:!1,loading:Ul,rowKey:Mi=>Mi.id,rowSelection:{type:ka||No?"radio":"checkbox",selectedRowKeys:kl,getCheckboxProps:Mi=>({disabled:Mi.shixun_tag_num===1||(Pl==null?void 0:Pl.find(Ha=>Mi.id===Ha))}),onSelect(Mi,Ha,yl){if(ka||No){Es([Mi.id]),Zl.current=new Set([Mi.id]),Go(1),Is([Mi.id]);return}if(Ha)(Ro||Mi!=null&&Mi.challenge_names)&&mu([...Ml,Mi.id]),Es([...kl,Mi.id]),Mi.identifier?ds.current.add(Mi.id):Zl.current.add(Mi.id),Go(1),Is([...vl,Mi.id]);else{Mi.identifier?ds.current.delete(Mi.id):Zl.current.delete(Mi.id);let Sl=vl.filter(ru=>ru!==Mi.id);if(Es(Sl),Is(Sl),Ro||Mi!=null&&Mi.challenge_names){let ru=Ml.filter(Re=>Re!==Mi.id);mu([...ru])}if(zi.type==="5"){Dc(gl($a({},zi),{list:[...Sl]}));return}}},onSelectAll(Mi,Ha,yl){var Sl,ru;if(Mi){const Re=yl.map(nt=>nt.id),$e=(ru=yl==null?void 0:yl.filter(nt=>nt==null?void 0:nt.challenge_names))==null?void 0:ru.map(nt=>nt.id);mu([...Ml,...$e]),Es([...kl,...Re]),Is([...vl,...Re]);for(const nt of yl)nt.identifier?ds.current.add(nt.id):Zl.current.add(nt.id)}else{const Re=yl.map(tn=>tn.id),$e=kl.filter(tn=>!Re.some(Br=>Br===tn)),nt=(Sl=yl==null?void 0:yl.filter(tn=>tn==null?void 0:tn.challenge_names))==null?void 0:Sl.map(tn=>tn.id);Es([...$e]),Is([...$e]);let Yt=Ml.filter(tn=>!nt.some(Br=>Br===tn.id));mu([...Yt]),zi.type==="5"&&Dc(gl($a({},zi),{list:[...$e]}));for(const tn of Re)tn.identifier?ds.current.delete(tn):Zl.current.delete(tn)}}},columns:[{title:"\u9898\u578B",dataIndex:"item_type",key:"item_type",render:(Mi,Ha,yl)=>{var Sl,ru;return ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("div",null,Ro||Ha!=null&&Ha.challenge_names?"\u5B9E\u8BAD\u9898":(ru=(Sl=Tu==null?void 0:Tu.filter(Re=>Re.value===Mi))==null?void 0:Sl[0])==null?void 0:ru.name))}},{title:"\u8BD5\u9898\u540D\u79F0",dataIndex:"name",width:Ro?"30%":"60%",key:"name",render:(Mi,Ha,yl)=>{var Sl;return ui.createElement("div",{style:{display:"flex",alignItems:"center"}},ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("div",{className:Ha!=null&&Ha.high_resources_consume?_a.q_title:""},ui.createElement(Os.Z,{key:1,showLines:1,showTextOnly:!0,value:Ro||Ha!=null&&Ha.challenge_names?Ha!=null&&Ha.title||Mi===null?"--":Mi:(Ha==null?void 0:Ha.item_type)=="BPROGRAM"?(Sl=Ha==null?void 0:Ha.program_attr)==null?void 0:Sl.description:Mi}))),(Ha==null?void 0:Ha.high_resources_consume)&&ui.createElement(el.Z,{type:"shixun",style:{marginLeft:10}}))}},{title:"\u521B\u5EFA\u8005",dataIndex:"author_name",key:"author_name",hidden:!Ro,render:(Mi,Ha,yl)=>{var Sl;return ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("span",null,Mi?(Sl=Mi==null?void 0:Mi.split("\u3001"))==null?void 0:Sl[0]:"- -"))}},{title:"\u6240\u5C5E\u5355\u4F4D",dataIndex:"author_school_name",key:"author_school_name",hidden:!Ro,render:(Mi,Ha,yl)=>ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("span",null,Mi||"- -"))},{title:"\u96BE\u5EA6",dataIndex:"difficulty",key:"difficulty",render:(Mi,Ha,yl)=>{var Sl,ru,Re,$e;return ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("div",null,Ro||Ha!=null&&Ha.challenge_names?(Ha==null?void 0:Ha.level)||((ru=(Sl=uu==null?void 0:uu.filter(nt=>nt.value===Mi))==null?void 0:Sl[0])==null?void 0:ru.name):($e=(Re=uu==null?void 0:uu.filter(nt=>nt.value===Mi))==null?void 0:Re[0])==null?void 0:$e.name))}},{title:"\u5173\u5361\u6570\u91CF",dataIndex:"challenges_count",key:"challenges_count",hidden:!Ro,render:(Mi,Ha,yl)=>ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("div",null,Mi||"- -"))},{title:"\u4F7F\u7528\u6B21\u6570",dataIndex:"quotes",key:"quotes",render:(Mi,Ha,yl)=>ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("div",null,Ro||Ha!=null&&Ha.challenge_names?(Ha==null?void 0:Ha.study_count)||(Ha==null?void 0:Ha.stu_num):Mi))},{title:ui.createElement("span",null,"\u53D1\u5E03\u72B6\u6001 ",ui.createElement(It.Z,{title:"\u672A\u53D1\u5E03\u7684\u5B9E\u8DF5\u9879\u76EE\u4E0D\u80FD\u88AB\u9009\u7528"},ui.createElement(ll.Z,null))),dataIndex:"shixun_tag_num_name",key:"shixun_tag_num_name",hidden:!Ro,render:(Mi,Ha,yl)=>ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("div",null,Mi||"- -"))},{title:"\u64CD\u4F5C",dataIndex:"id",key:"item_type",render:(Mi,Ha,yl)=>ui.createElement(It.Z,{title:Io(Ha)},ui.createElement("div",{style:{flex:1,textAlign:"start"}},ui.createElement("a",{onClick:()=>{var Sl,ru;Dl(gl($a({},Ha),{question_type:Ro||Ha!=null&&Ha.challenge_names?5:(ru=(Sl=Tu==null?void 0:Tu.filter(Re=>Re.value===(Ha==null?void 0:Ha.item_type)))==null?void 0:Sl[0])==null?void 0:ru.question_type})),mc(!0)}},"\u67E5\u770B"),(Ha==null?void 0:Ha.shixun_tag_num)===1&&ui.createElement("a",{style:{marginLeft:10},onClick:()=>{Ze.default.confirm({title:"\u63D0\u793A",icon:null,centered:!0,width:400,content:ui.createElement("div",null,"\u662F\u5426\u786E\u5B9A\u53D1\u5E03",ui.createElement("span",{style:{cursor:"pointer",color:"#3061D0"},onClick:()=>{window.open(`/shixuns/${Ha==null?void 0:Ha.identifier}/challenges`)}},(Ha==null?void 0:Ha.shixun_name)||"--"),"\uFF1F"),onOk:()=>zs(void 0,null,function*(){if(!Jl(Ha==null?void 0:Ha.identifier))return new Promise((Sl,ru)=>{ru()})})})}},"\u53D1\u5E03")))}].filter(Mi=>!Mi.hidden)}),ui.createElement(yt.Z,{current:zi.page,total:(fl==null?void 0:fl.items_count)||(fl==null?void 0:fl.shixuns_count),style:{marginBottom:20},defaultPageSize:zi.per_page,showTotal:Mi=>ui.createElement("span",null,"\u5171\xA0",ui.createElement("span",{style:{color:"#165DFF"}},Mi),"\xA0\u6761\u6570\u636E"),pageSize:zi.per_page,onChange:(Mi,Ha)=>{zi.page=Mi,zi.per_page=Ha,Fs($a({},zi)),nu($a({},zi))}}),ui.createElement("div",{className:_a.bottom},ui.createElement(Le.ZP,{className:_a.no,onClick:()=>{hn(!1)}},"\u53D6\u6D88"),ui.createElement(Le.ZP,{loading:cr,style:{width:cr&&75},className:_a.yes,onClick:()=>zs(void 0,null,function*(){if((vl==null?void 0:vl.length)<=0){Rt.ZP.info(ka||No?"\u8BF7\u9009\u62E9\u4E00\u9053\u8BD5\u9898":"\u5F53\u524D\u6682\u672A\u9009\u62E9\u6570\u636E");return}console.log("----",Zl.current,ds.current),Oi([...Zl.current],[...ds.current],!0,vl==null?void 0:vl.length)})},ka?"\u5F00\u59CB\u6362\u9898":"\u786E\u8BA4"))),ui.createElement(Ze.default,{open:lu,title:"\u9898\u76EE\u8BE6\u60C5",footer:!1,className:_a.previewModal,width:1e3,centered:!0,onCancel:()=>{mc(!1)},onOk:()=>{mc(!1)}},ui.createElement(Al,{qitem:Wa})))};var Su=(0,je.connect)(({shixunsDetail:hn,newExercisePaper:Lr})=>({shixunsDetail:hn,newExercisePaper:Lr}))(Xu),cc=he(59301),Ru=Object.getOwnPropertySymbols,hu=Object.prototype.hasOwnProperty,zu=Object.prototype.propertyIsEnumerable,Mu=(hn,Lr)=>{var tr={};for(var Oi in hn)hu.call(hn,Oi)&&Lr.indexOf(Oi)<0&&(tr[Oi]=hn[Oi]);if(hn!=null&&Ru)for(var Oi of Ru(hn))Lr.indexOf(Oi)<0&&zu.call(hn,Oi)&&(tr[Oi]=hn[Oi]);return tr},vc=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const yu=null;let to=null;const uo=hn=>{var Lr=hn,{pathsDetail:tr,user:Oi,globalSetting:Do,loading:cr,dispatch:tl,datas:ka,items:Vi}=Lr,No=Mu(Lr,["pathsDetail","user","globalSetting","loading","dispatch","datas","items"]);const Nl=(0,se.useRef)(),Aa=(0,se.useRef)(),yo=(0,se.useRef)(null);(0,se.useEffect)(()=>{Fs()},[ka]),(0,se.useEffect)(()=>(window.addEventListener("resize",zi),()=>{window.removeEventListener("resize",zi)}),[]);function zi(){var bo,js;(js=(bo=Nl.current)==null?void 0:bo.update)==null||js.call(bo)}function Fs(){return vc(this,null,function*(){var bo,js,kl,Es,vl,Is,fl;if((ka==null?void 0:ka.length)>0){let Gl=ka==null?void 0:ka.map(Ko=>{var ao;return{rootNodeUuid:(ao=Ko==null?void 0:Ko.properties)==null?void 0:ao.rootNodeUuid,id:Ko==null?void 0:Ko.uuid,name:Ko==null?void 0:Ko.name,activeColor:"#FA6400",shape:"circle",hide:!1,isExtendedState:!0}});Gl.push({rootNodeUuid:(bo=Vi==null?void 0:Vi.properties)==null?void 0:bo.rootNodeUuid,id:(kl=(js=Vi==null?void 0:Vi[0])==null?void 0:js.properties)==null?void 0:kl.uuid,name:(vl=(Es=Vi==null?void 0:Vi[0])==null?void 0:Es.properties)==null?void 0:vl.name,activeColor:"#FA6400",shape:"circle",hide:!1,isExtendedState:!0});let Ul=ka==null?void 0:ka.map((Ko,ao)=>{var Wa,Dl;return{hide:!1,id:ao,label:"\u5173\u8054",props:[],colorType:1,sourceRadius:32,targetRadius:32,source:(Dl=(Wa=Vi==null?void 0:Vi[0])==null?void 0:Wa.properties)==null?void 0:Dl.uuid,target:Ko==null?void 0:Ko.uuid,value:10}});console.log("----",Gl,Ul),Nl.current=null,Aa.current.innerHTML="",Nl.current=new Yi.createContainer({containerName:"#graphRefs",width:((Is=Aa==null?void 0:Aa.current)==null?void 0:Is.clientWidth)||0,height:((fl=Aa==null?void 0:Aa.current)==null?void 0:fl.clientHeight)||0,toolbarData:[],clickToggle:!1,background:"#fff",isShowMask:!1,nodes:Gl,links:Ul,zoomOptions:{minScale:.2,maxScale:5},nodeMouseover:function(Ko){return Ko},nodeClick:function(Ko){var ao;return(ao=Nl==null?void 0:Nl.current)==null||ao.selectToNode(Ko.id),Ko},layout:{force:!1,x:20,y:60}}),Nl.current.zoomOut()}})}return cc.createElement("div",{ref:yo,style:{background:"#fff",height:"455rem"}},cc.createElement("div",{style:{width:"100%",height:"455rem"},ref:Aa,id:"graphRefs"}))};var no=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(uo),bn=he(59301),ps=Object.defineProperty,al=Object.defineProperties,Vs=Object.getOwnPropertyDescriptors,$l=Object.getOwnPropertySymbols,eu=Object.prototype.hasOwnProperty,vu=Object.prototype.propertyIsEnumerable,ku=(hn,Lr,tr)=>Lr in hn?ps(hn,Lr,{enumerable:!0,configurable:!0,writable:!0,value:tr}):hn[Lr]=tr,Lu=(hn,Lr)=>{for(var tr in Lr||(Lr={}))eu.call(Lr,tr)&&ku(hn,tr,Lr[tr]);if($l)for(var tr of $l(Lr))vu.call(Lr,tr)&&ku(hn,tr,Lr[tr]);return hn},Cc=(hn,Lr)=>al(hn,Vs(Lr)),fo=(hn,Lr,tr)=>new Promise((Oi,Do)=>{var cr=Vi=>{try{ka(tr.next(Vi))}catch(No){Do(No)}},tl=Vi=>{try{ka(tr.throw(Vi))}catch(No){Do(No)}},ka=Vi=>Vi.done?Oi(Vi.value):Promise.resolve(Vi.value).then(cr,tl);ka((tr=tr.apply(hn,Lr)).next())});const Ql=[{name:"\u57FA\u672C\u4FE1\u606F",key:1},{name:"\u5B66\u4E60\u7EDF\u8BA1",key:3}];let oc=[{name:"\u4F5C\u4E1A",id:"zy",item_type:2},{name:"\u5B9E\u8BAD",id:"sx",item_type:2},{name:"\u6559\u6750",id:"jc",item_type:2},{name:"\u89C6\u9891",id:"sp",item_type:2},{name:"\u8BFE\u4EF6",id:"kj",item_type:2},{name:"\u8BD5\u5377",id:"sj",item_type:2},{name:"\u9898\u96C6",id:"tj",item_type:2},{name:"\u8BD5\u9898",id:"st",item_type:2}],us=[{name:"\u7AE0\u8282",id:"zj",item_type:1},{name:"\u77E5\u8BC6\u70B9",id:"zsd",item_type:1}];const Hs=({pathsDetail:hn,user:Lr,globalSetting:tr,loading:Oi,dispatch:Do,items:cr,showdetail:tl,setshowdetail:ka,containerRef:Vi,getData:No,setshow:Nl,Tabsdatas:Aa,uuid:yo,tpacti:zi,initdata:Fs})=>{var bo,js,kl,Es,vl,Is,fl,Gl,Ul,Ko,ao,Wa,Dl,lu,mc,Ro,jl,Ml,mu,Co,Go,ou,Mc,Ai,tu,Pl,nc,Tu,$i,ol,Po,ds,Zl,uu,Ys,hl,Rl,Yl,Au,nu,xc,Kc,Dc;const Jl=(0,je.useParams)(),[Io,fs]=(0,se.useState)(0),[Gu]=Bt.default.useForm(),[cl,Iu]=(0,se.useState)({});let[Mi,Ha]=(0,se.useState)(!1),[yl,Sl]=(0,se.useState)(!1);const[ru,Re]=(0,se.useState)(!1),[$e,nt]=(0,se.useState)("1"),[Yt,tn]=(0,se.useState)([]),[Br,Cr]=(0,se.useState)(1),[yi,gi]=(0,se.useState)(2),[Hi,Xa]=(0,se.useState)(2),[Ji,ea]=(0,se.useState)(),[fa,Ba]=(0,se.useState)();let[jr,Ci]=(0,se.useState)([]);const[ya,ns]=(0,se.useState)({}),[wo,rs]=(0,se.useState)(!1),[os,Vo]=(0,se.useState)(""),[Lo,Xl]=(0,se.useState)([]),[Qs]=(0,je.useSearchParams)(),[ni,Fl]=(0,se.useState)(!1),[iu,Ou]=(0,se.useState)([]),[bu,Ll]=(0,se.useState)([]),[Js,wl]=(0,se.useState)([]),[Vl,Uu]=(0,se.useState)(!1),[xu,cu]=(0,se.useState)(!1),[pc,Ac]=(0,se.useState)(!1),[ot,ht]=(0,se.useState)(),[Wt,cn]=(0,se.useState)("0");let[Nn,Pn]=(0,se.useState)({tags:[],tagszy:[],tagslx:[]});const[dr,pr]=(0,se.useState)([{label:"\u5B9E\u8BAD",children:bn.createElement(Qn,{getother:wa,types:"1",ktzykey:$e,onChange:jn=>{tn(jn)}}),key:"1"},{label:"\u89C6\u9891",children:bn.createElement(Qn,{getother:wa,types:"2",ktzykey:$e,onChange:jn=>{tn(jn)}}),key:"2"},{label:"\u8BFE\u4EF6",children:bn.createElement(Qn,{getother:wa,types:"3",ktzykey:$e,onChange:jn=>{tn(jn)}}),key:"3"},{label:"\u8BD5\u5377",children:bn.createElement(Qn,{getother:wa,types:"4",ktzykey:$e,onChange:jn=>{console.log("----",jn),tn(jn)}}),key:"4"}].filter(jn=>!!jn));let[ir,_r]=(0,se.useState)([]),[Wr,Jr]=(0,se.useState)([]);const[Qi,Xi]=(0,se.useState)(0),[Wi,pa]=(0,se.useState)(0),[la,Ta]=(0,se.useState)([]),[hi,Ia]=(0,se.useState)({bh:[],qx:[],hx:[],gl:[]}),[So,hs]=(0,se.useState)({bh:[],qx:[],hx:[],gl:[]}),jo=jn=>{var $r,pe;return(0,Gt.ZP)("/api/subject_knowledge/create_study.json",{method:"post",body:{subject_id:Jl==null?void 0:Jl.pathId,uuid:(($r=jn==null?void 0:jn.items)==null?void 0:$r.uuid)||((pe=jn==null?void 0:jn.items)==null?void 0:pe.id)}}),Do({type:"userDetail/logWatchHistory",payload:Lu({},jn)})},ms={maxCount:1,fileList:jr,accept:((js=(bo=cl==null?void 0:cl.label)==null?void 0:bo[0])==null?void 0:js.name)==="\u89C6\u9891"?".mp4":"",withCredentials:!0,beforeUpload:jn=>{var $r,pe;if(!(jn.type==="video/mp4")&&((pe=($r=cl==null?void 0:cl.label)==null?void 0:$r[0])==null?void 0:pe.name)==="\u89C6\u9891")return Rt.ZP.error("\u53EA\u80FD\u4E0A\u4F20\u89C6\u9891"),Dt.default.LIST_IGNORE},action:`${Dr.Z.API_SERVER}/api/attachments.json`,onChange:jn=>{Ci(jn==null?void 0:jn.fileList)}};function nl(){return fo(this,null,function*(){var jn,$r,pe,Ee,Be;let ke=yield(0,Gt.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{depth:1,subject_id:Jl==null?void 0:Jl.pathId}});if((ke==null?void 0:ke.status)===0){Xi(yo);const Ke=[...(Be=(Ee=(jn=ke==null?void 0:ke.data)==null?void 0:jn.nodes)==null?void 0:Ee.splice(1,(pe=($r=ke==null?void 0:ke.data)==null?void 0:$r.nodes)==null?void 0:pe.length))==null?void 0:Be.map(Ue=>{var ut,at,Pt;return Lu({label:(ut=Ue==null?void 0:Ue.properties)==null?void 0:ut.name,children:bn.createElement(kr,{onChange:bt=>{sessionStorage.setItem("typesdatajsoncopy",JSON.stringify(bt))},itemsuuid:cr==null?void 0:cr.uuid,uuid:(at=Ue==null?void 0:Ue.properties)==null?void 0:at.uuid,typesdata:hi}),key:(Pt=Ue==null?void 0:Ue.properties)==null?void 0:Pt.uuid},Ue)})];ir=Ke,_r(Ke),sessionStorage.setItem("typesdatajson",JSON.stringify(hi)),sessionStorage.setItem("typesdatajsoncopy",JSON.stringify(hi)),Ha(!0)}})}function ho(){return fo(this,null,function*(){var jn,$r,pe,Ee;let Be=yield(0,Gt.ZP)(`/api/users/${(jn=Lr==null?void 0:Lr.userInfo)==null?void 0:jn.login}/subjects.json`,{method:"get",params:{page:1,per_page:800,category:"manage",sort_by:"updated_at",sort_direction:"desc"}});if(Be){let ke=($r=Be==null?void 0:Be.subjects)==null?void 0:$r.filter(Ke=>{var Ue;return(Ke==null?void 0:Ke.identifier)!=((Ue=hn==null?void 0:hn.detail)==null?void 0:Ue.identifier)});ht(ke),is((pe=ke==null?void 0:ke[0])==null?void 0:pe.identifier,(Ee=ke==null?void 0:ke[0])==null?void 0:Ee.name)}})}function is(jn,$r){return fo(this,null,function*(){var pe,Ee,Be,ke,Ke,Ue,ut,at,Pt;let bt=yield(0,Gt.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{depth:1,subject_id:jn}});if((bt==null?void 0:bt.status)===0){Xi(((ke=(Be=(Ee=(pe=bt==null?void 0:bt.data)==null?void 0:pe.nodes)==null?void 0:Ee[1])==null?void 0:Be.properties)==null?void 0:ke.uuid)||"");const Ht=[...(Pt=(at=(Ke=bt==null?void 0:bt.data)==null?void 0:Ke.nodes)==null?void 0:at.splice(1,(ut=(Ue=bt==null?void 0:bt.data)==null?void 0:Ue.nodes)==null?void 0:ut.length))==null?void 0:Pt.map(ln=>{var rn,Vn,sn,mn;return Lu({label:(rn=ln==null?void 0:ln.properties)==null?void 0:rn.name,children:bn.createElement(_o,{onChange:Sn=>{sessionStorage.setItem("typesdatajsoncopy",JSON.stringify(Sn))},itemsuuid:cr==null?void 0:cr.uuid,pathId:jn,pathname:$r,uuname:(Vn=ln==null?void 0:ln.properties)==null?void 0:Vn.name,uuid:(sn=ln==null?void 0:ln.properties)==null?void 0:sn.uuid,typesdata:So}),key:(mn=ln==null?void 0:ln.properties)==null?void 0:mn.uuid},ln)})];ir=Ht,_r(Ht),sessionStorage.setItem("typesdatajson",JSON.stringify(So)),sessionStorage.setItem("typesdatajsoncopy",JSON.stringify(So)),Sl(!0)}})}function po(){return fo(this,null,function*(){var jn;let $r=yield(0,Gt.ZP)("/api/knowledge_items.json",{method:"get",params:{item_type:3,subject_id:Jl==null?void 0:Jl.pathId}});($r==null?void 0:$r.status)===0&&(Nn.tags=$r==null?void 0:$r.data,Pn(Lu({},Nn)));let pe=yield(0,Gt.ZP)("/api/knowledge_items.json",{method:"get",params:{item_type:5,subject_id:Jl==null?void 0:Jl.pathId}});(pe==null?void 0:pe.status)===0&&(Nn.tagszy=[...oc,...pe==null?void 0:pe.data2],Nn.tagslx=[...us,...pe==null?void 0:pe.data],Pn(Lu({},Nn)));let Ee=yield(0,Gt.ZP)("/api/knowledge/v2/get_container_type.json",{method:"get",params:{url:cr==null?void 0:cr.resourceUrl,item_banks_group_ids:cr==null?void 0:cr.itemBanksGroupIds}});if(Vo(""),wl([]),localStorage.setItem("container_type_tupu",Ee==null?void 0:Ee.container_type),(cr==null?void 0:cr.nodeType)==="\u89C6\u9891"&&(((jn=Ee==null?void 0:Ee.attachment)==null?void 0:jn.file_type)==="video"||(Ee==null?void 0:Ee.container_type)==="video")&&Vo(Ee==null?void 0:Ee.id),(cr==null?void 0:cr.resourceOrigin)===1&&(cr==null?void 0:cr.nodeType)!=="\u9898\u96C6"){let Be={url:cr==null?void 0:cr.resourceUrl,name:Ee==null?void 0:Ee.name,id:Ee==null?void 0:Ee.examination_bank_id,questionIdArr:Ee==null?void 0:Ee.item_bank_ids,shixun_ids:Ee==null?void 0:Ee.shixun_ids};tn([Be])}(cr==null?void 0:cr.resourceOrigin)===1&&(cr==null?void 0:cr.nodeType)==="\u9898\u96C6"&&wl(Ee==null?void 0:Ee.item_banks_groups),(cr==null?void 0:cr.resourceOrigin)===2&&Ci([{uid:"123",name:Ee==null?void 0:Ee.name,response:{id:"123",url:cr==null?void 0:cr.resourceUrl}}])})}function wa(jn){return fo(this,null,function*(){var $r,pe;let Ee=yield(0,Gt.ZP)("/api/knowledge/v2/get_container_type.json",{method:"get",params:{url:jn}});(Ee==null?void 0:Ee.status)===0&&((Ee==null?void 0:Ee.container_type)==="att"?ns({url:Dr.Z.API_SERVER+(($r=Ee==null?void 0:Ee.attachment)==null?void 0:$r.url),file_type:(pe=Ee==null?void 0:Ee.attachment)==null?void 0:pe.file_type}):window.open(jn))})}function Ya(){return fo(this,null,function*(){let jn=yield(0,Gt.ZP)("/api/knowledge/v2/item_bank_groups.json",{method:"get",params:{subject_id:Jl==null?void 0:Jl.pathId}});(jn==null?void 0:jn.status)===0&&Ou(jn==null?void 0:jn.data)})}function Ds(){return fo(this,null,function*(){var jn,$r,pe,Ee,Be,ke,Ke,Ue,ut,at;let Pt=yield(0,Gt.ZP)("/api/knowledge/v2/get_node_detail.json",{method:"get",params:{nodeUuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),parentNodeUuids:Aa==null?void 0:Aa.map(bt=>bt==null?void 0:bt.uuid).join(),depth:1,relationshipFilter:">",subgraphDepth:"-1",subgraphRelationshipFilter:"\u5305\u542B>",subject_id:Jl==null?void 0:Jl.pathId}});if((Pt==null?void 0:Pt.status)===0){Ta((jn=Pt==null?void 0:Pt.data)==null?void 0:jn.nodes);let bt=(pe=($r=Pt==null?void 0:Pt.data)==null?void 0:$r.nodes)==null?void 0:pe.filter(ln=>{var rn;return((rn=ln==null?void 0:ln.properties)==null?void 0:rn.uuid)===(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id)});ea(bt),Ba((Ee=Pt==null?void 0:Pt.data)==null?void 0:Ee.relationships);const Ht=[...(ke=(Be=Pt==null?void 0:Pt.data)==null?void 0:Be.graphNodeMappings)==null?void 0:ke.map((ln,rn)=>{var Vn;return{label:`${ln==null?void 0:ln.parentNodeName}\uFF08${(Vn=ln==null?void 0:ln.childNodeUuids)==null?void 0:Vn.length}\uFF09`,children:bn.createElement(sr,{datas:Pt==null?void 0:Pt.data,items:ln==null?void 0:ln.childNodeUuids}),key:rn}})];(Ue=(Ke=bt==null?void 0:bt[0])==null?void 0:Ke.properties)!=null&&Ue.pathSetting&&hs(JSON.parse((at=(ut=bt==null?void 0:bt[0])==null?void 0:ut.properties)==null?void 0:at.pathSetting)),pa(0),Wr=Ht,Jr(Ht)}})}(0,se.useEffect)(()=>{tl&&(Ds(),po())},[tl,cr]);const bl=(...jn)=>fo(void 0,[...jn],function*($r={}){return yield Do({type:"pathsDetail/getKnowledgeGraphs",payload:Lu({graphable_type:Qs.get("type")==="classrooms"?"course":"subject",graphable_id:Jl==null?void 0:Jl.pathId},$r)})});return bn.createElement(Da.Z,null,bn.createElement("div",null,tl&&bn.createElement(dt.Z,{open:tl,width:"700rem",maskStyle:{background:"#000",opacity:"0.1"},keyboard:!0,maskClosable:!0,closable:!1,rootClassName:We.drawer,getContainer:()=>Vi.current,onClose:()=>{ka(!1),Vo("")}},bn.createElement("div",{className:We.detailmodal},bn.createElement("div",null,bn.createElement("span",{className:We.title},"\u8282\u70B9\u8BE6\u60C5"),((kl=hn==null?void 0:hn.detail)==null?void 0:kl.can_managed)&&yo!=="\u5B66\u4E60\u8DEF\u5F84"&&(cr==null?void 0:cr.colorType)!=="1"&&bn.createElement("i",{className:"iconfont icon-bianji-moren",onClick:()=>fo(void 0,null,function*(){var jn,$r,pe,Ee,Be,ke,Ke,Ue,ut,at;fs(3),ka(!1);let Pt={name:cr.name,description:cr.description,label:(($r=(jn=Ji==null?void 0:Ji[0])==null?void 0:jn.labels)==null?void 0:$r[1])==="\u8D44\u6E90"?(pe=Nn==null?void 0:Nn.tagszy)==null?void 0:pe.filter(sn=>(sn==null?void 0:sn.name)===(cr==null?void 0:cr.nodeType)):(Ee=Nn==null?void 0:Nn.tagslx)==null?void 0:Ee.filter(sn=>(sn==null?void 0:sn.name)===(cr==null?void 0:cr.nodeType)),tag:(Be=Nn==null?void 0:Nn.tags)==null?void 0:Be.filter(sn=>{var mn,Sn;return(Sn=(mn=cr==null?void 0:cr.tags)==null?void 0:mn.map(wn=>wn==null?void 0:wn.name))==null?void 0:Sn.includes(sn==null?void 0:sn.name)}),resourceOrigin:cr.resourceOrigin,url:(cr==null?void 0:cr.resourceOrigin)===3?cr==null?void 0:cr.resourceUrl:""},bt=(ke=fa==null?void 0:fa.filter(sn=>(sn==null?void 0:sn.type)==="\u88AB\u5305\u542B"&&(sn==null?void 0:sn.startNodeUuid)===((cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id))))==null?void 0:ke.map(sn=>{var mn,Sn;return{uuid:sn==null?void 0:sn.endNodeUuid,name:(Sn=(mn=la==null?void 0:la.find(wn=>{var wt;return((wt=wn==null?void 0:wn.properties)==null?void 0:wt.uuid)===(sn==null?void 0:sn.endNodeUuid)}))==null?void 0:mn.properties)==null?void 0:Sn.name}}),Ht=(Ke=fa==null?void 0:fa.filter(sn=>(sn==null?void 0:sn.type)==="\u5305\u542B"&&(sn==null?void 0:sn.startNodeUuid)===((cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id))))==null?void 0:Ke.map(sn=>{var mn,Sn;return{uuid:sn==null?void 0:sn.endNodeUuid,name:(Sn=(mn=la==null?void 0:la.find(wn=>{var wt;return((wt=wn==null?void 0:wn.properties)==null?void 0:wt.uuid)===(sn==null?void 0:sn.endNodeUuid)}))==null?void 0:mn.properties)==null?void 0:Sn.name}});Xl(Ht);let ln=(Ue=fa==null?void 0:fa.filter(sn=>(sn==null?void 0:sn.type)==="\u524D\u5E8F"&&(sn==null?void 0:sn.startNodeUuid)===((cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id))))==null?void 0:Ue.map(sn=>{var mn,Sn;return{uuid:sn==null?void 0:sn.endNodeUuid,name:(Sn=(mn=la==null?void 0:la.find(wn=>{var wt;return((wt=wn==null?void 0:wn.properties)==null?void 0:wt.uuid)===(sn==null?void 0:sn.endNodeUuid)}))==null?void 0:mn.properties)==null?void 0:Sn.name}}),rn=(ut=fa==null?void 0:fa.filter(sn=>(sn==null?void 0:sn.type)==="\u540E\u5E8F"&&(sn==null?void 0:sn.startNodeUuid)===((cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id))))==null?void 0:ut.map(sn=>{var mn,Sn;return{uuid:sn==null?void 0:sn.endNodeUuid,name:(Sn=(mn=la==null?void 0:la.find(wn=>{var wt;return((wt=wn==null?void 0:wn.properties)==null?void 0:wt.uuid)===(sn==null?void 0:sn.endNodeUuid)}))==null?void 0:mn.properties)==null?void 0:Sn.name}}),Vn=(at=fa==null?void 0:fa.filter(sn=>((sn==null?void 0:sn.type)==="\u5173\u8054"||(sn==null?void 0:sn.type)==="\u88AB\u5173\u8054")&&(sn==null?void 0:sn.startNodeUuid)===((cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id))))==null?void 0:at.map(sn=>{var mn,Sn;return{uuid:sn==null?void 0:sn.endNodeUuid,name:(Sn=(mn=la==null?void 0:la.find(wn=>{var wt;return((wt=wn==null?void 0:wn.properties)==null?void 0:wt.uuid)===(sn==null?void 0:sn.endNodeUuid)}))==null?void 0:mn.properties)==null?void 0:Sn.name}});Ia({bh:bt,qx:ln,hx:rn,gl:Vn}),cr!=null&&cr.pathSetting&&hs(JSON.parse(cr==null?void 0:cr.pathSetting)),Gu.setFieldsValue(Pt),Iu(Pt)}),style:{color:"#1B8565",marginLeft:10,cursor:"pointer"}})),bn.createElement("div",{style:{display:"flex",alignItems:"center"}},(cr==null?void 0:cr.colorType)!=="1"&&((Es=hn==null?void 0:hn.detail)==null?void 0:Es.can_managed)&&yo!=="\u5B66\u4E60\u8DEF\u5F84"&&bn.createElement(Le.ZP,{type:"primary",className:We.button,onClick:(0,co.debounce)(()=>fo(void 0,null,function*(){var jn,$r;let pe=yield(0,Gt.ZP)("/api/knowledge/v2/get_node.json",{method:"get",params:{nodeUuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),subject_id:Jl==null?void 0:Jl.pathId,depth:1,relationshipFilter:"\u88AB\u5305\u542B>"}});if((pe==null?void 0:pe.status)===0){let Ee=($r=(jn=pe==null?void 0:pe.data)==null?void 0:jn.nodes)==null?void 0:$r.filter(ke=>{var Ke;return((Ke=ke==null?void 0:ke.properties)==null?void 0:Ke.uuid)!==((cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id))}),Be=Ee==null?void 0:Ee.map(ke=>{var Ke,Ue;return{name:(Ke=ke==null?void 0:ke.properties)==null?void 0:Ke.name,uuid:(Ue=ke==null?void 0:ke.properties)==null?void 0:Ue.uuid}});hi.bh=Be,Ia(hi),fs(1),ka(!1),tn([]),wl([]),Ci([])}}),500)},"\u589E\u52A0\u540C\u7EA7\u8282\u70B9"),((vl=hn==null?void 0:hn.detail)==null?void 0:vl.can_managed)&&yo!=="\u5B66\u4E60\u8DEF\u5F84"&&bn.createElement(Le.ZP,{type:"primary",className:We.button,onClick:()=>{var jn,$r;(($r=(jn=hi==null?void 0:hi.bh)==null?void 0:jn.filter(pe=>(pe==null?void 0:pe.uuid)===(cr==null?void 0:cr.id)))==null?void 0:$r.length)>0||hi.bh.push({name:cr==null?void 0:cr.name,uuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id)}),fs(2),ka(!1),tn([]),wl([]),Ci([])}},"\u589E\u52A0\u5B50\u7EA7\u8282\u70B9"),((Is=hn==null?void 0:hn.detail)==null?void 0:Is.can_managed)&&yo!=="\u5B66\u4E60\u8DEF\u5F84"&&bn.createElement(Le.ZP,{className:We.button,onClick:()=>{let jn="";Ze.default.confirm({title:"\u63D0\u793A",icon:null,centered:!0,getContainer:Vi.current,content:bn.createElement("div",null,bn.createElement("p",null,"\u5220\u9664\u8282\u70B9\u4F1A\u540C\u6B65\u5220\u9664\u5F53\u524D\u8282\u70B9\u7684\u5B50\u7EA7\u8282\u70B9\uFF0C\u8BF7\u5728\u4E0B\u65B9\u8F93\u5165\u6846\u8F93\u5165",bn.createElement("span",{style:{color:"red"}},"\u201C\u786E\u8BA4\u5220\u9664\u201D")),bn.createElement(qe.default,{onChange:$r=>{jn=$r.target.value}})),onOk:()=>fo(void 0,null,function*(){if(jn!=="\u786E\u8BA4\u5220\u9664")return Rt.ZP.info("\u8BF7\u8F93\u5165\u786E\u8BA4\u5220\u9664"),Promise.reject();if(jn==="\u786E\u8BA4\u5220\u9664"){let $r=yield(0,Gt.ZP)("/api/knowledge/v2/del_node.json",{method:"post",body:{uuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),subject_id:Jl==null?void 0:Jl.pathId}});($r==null?void 0:$r.status)===0&&(Rt.ZP.info("\u5220\u9664\u6210\u529F"),bl({graphable_id:Jl==null?void 0:Jl.pathId}),(cr==null?void 0:cr.colorType)!=="1"?(Nl(!1),No()):Fs(),ka(!1))}})})}},"\u5220\u9664\u8282\u70B9"),((fl=hn==null?void 0:hn.detail)==null?void 0:fl.can_managed)&&yo==="\u5B66\u4E60\u8DEF\u5F84"&&Qs.get("type")==="classrooms"&&bn.createElement(Le.ZP,{type:"primary",className:We.button,onClick:()=>{Ze.default.confirm({title:"\u63D0\u793A",icon:null,centered:!0,getContainer:Vi.current,okText:"\u786E\u8BA4\u540C\u6B65",content:bn.createElement("div",null,"\u8BE5\u8282\u70B9\u4E0B\u5171",bn.createElement("span",{className:"c-light-primary"},cr==null?void 0:cr.currentResourceTotal),"\u4E2A\u8D44\u6E90\uFF0C\u786E\u8BA4\u540C\u6B65\u540E\uFF0C\u8FD9\u4E9B\u8D44\u6E90\u5C06\u6309\u7167\u7C7B\u578B\u5206\u522B\u53D1\u9001\u5230\u8BFE\u5802\u5B9E\u9A8C\u3001\u56FE\u6587\u4F5C\u4E1A\u3001\u5728\u7EBF\u8003\u8BD5\u3001\u89C6\u9891\u76F4\u64AD\u3001\u6559\u5B66\u8D44\u6599\u6A21\u5757\u4E2D\uFF0C\u53EF\u524D\u5F80\u5BF9\u5E94\u6A21\u5757\u8FDB\u884C\u8D44\u6E90\u53D1\u5E03\u7B49\u64CD\u4F5C\u3002"),onOk:()=>fo(void 0,null,function*(){const jn=yield(0,Gt.ZP)("/api/subject_knowledge/send_to_course",{method:"post",body:{id:cr==null?void 0:cr.resourceid,subject_id:Jl==null?void 0:Jl.pathId}});(jn==null?void 0:jn.status)===0&&Rt.ZP.success("\u64CD\u4F5C\u6210\u529F")})})}},"\u540C\u6B65\u8D44\u6E90\u5230\u8BFE\u5802"),bn.createElement(pt.Z,{onClick:()=>{ka(!1)},style:{marginLeft:"10rem",fontSize:"16rem",color:"#979797"}}))),bn.createElement("div",{className:We.tabstyle},Ql==null?void 0:Ql.map(jn=>bn.createElement("div",{onClick:()=>{Cr(jn.key)},className:Br===(jn==null?void 0:jn.key)?We.itemsactivite:We.items},jn==null?void 0:jn.name))),Br===1&&bn.createElement("div",null,bn.createElement("div",{className:We.nodetitle},yi===1&&bn.createElement(mt.Z,{onClick:()=>gi(2)}),yi===2&&bn.createElement(Jt.Z,{onClick:()=>gi(1)}),bn.createElement("span",{style:{marginLeft:"10rem",fontSize:"16rem",color:"#1B8565"}},"\u8282\u70B9\u5C5E\u6027")),yi===2&&bn.createElement("div",{className:We.nodeboyd},bn.createElement("div",{className:We.listitem,style:{marginTop:"0rem"}},bn.createElement("label",null,"\u8282\u70B9\u540D\u79F0"),bn.createElement("span",null,cr==null?void 0:cr.name)),bn.createElement("div",{className:We.listitem},bn.createElement("label",null,"\u8282\u70B9\u7B80\u4ECB"),bn.createElement("pre",null,(cr==null?void 0:cr.description)||"\u6682\u65E0")),bn.createElement("div",{className:We.listitem},bn.createElement("label",null,"\u8282\u70B9\u7C7B\u578B"),bn.createElement("div",null,(cr==null?void 0:cr.nodeType)&&bn.createElement(xn,{containerRef:Vi,type:5,value:[{name:cr==null?void 0:cr.nodeType}],pathsDetail:hn,showmodal:!1,dataSources:[]})," ")),bn.createElement("div",{className:We.listitem},bn.createElement("label",null,"\u8282\u70B9\u6807\u7B7E"),bn.createElement("span",null,((Gl=cr==null?void 0:cr.tags)==null?void 0:Gl.length)>0&&bn.createElement(xn,{containerRef:Vi,type:5,pathsDetail:hn,value:cr==null?void 0:cr.tags,showmodal:!1,dataSources:[]}))),(cr==null?void 0:cr.nodeType)==="\u89C6\u9891"&&(cr==null?void 0:cr.resourceOrigin)!==3&&os&&bn.createElement("div",{style:{height:"300rem",marginTop:"20rem"}},bn.createElement(tt.Z,{allow_skip:!0,videoId:os,toLog:!0,src:cr==null?void 0:cr.resourceUrl,logWatchHistory:jn=>jo(Cc(Lu({},jn),{container_type:localStorage.getItem("container_type_tupu"),items:cr}))})),(cr==null?void 0:cr.resourceOrigin)===3&&bn.createElement("div",{style:{display:"flex",marginTop:"20rem",alignItems:"center"}},bn.createElement("span",{style:{color:"#1B8565",fontSize:"16rem"}},cr==null?void 0:cr.resourceUrl),bn.createElement(Le.ZP,{style:{height:"40rem",padding:"0rem 10rem",fontSize:"14rem",marginLeft:"10rem"},onClick:()=>fo(void 0,null,function*(){let jn=yield(0,Gt.ZP)("/api/subject_knowledge/create_study.json",{method:"post",body:{subject_id:Jl==null?void 0:Jl.pathId,uuid:cr==null?void 0:cr.uuid}});window.open(cr==null?void 0:cr.resourceUrl)}),type:"primary"},"\u524D\u5F80\u67E5\u770B")),(cr==null?void 0:cr.nodeType)==="\u9898\u96C6"&&(Js==null?void 0:Js.map(jn=>bn.createElement("div",{style:{display:"flex",alignItems:"center",marginTop:"10rem"}},bn.createElement(It.Z,{title:jn==null?void 0:jn.name},bn.createElement("span",{className:We.multiple,style:{color:"#1B8565",fontSize:"16rem",maxWidth:"80%"}},jn==null?void 0:jn.name)),bn.createElement("div",{style:{marginLeft:"10rem",padding:"0rem 10rem",fontSize:"12rem",background:"#F6F7F9",color:"#909D99",borderRadius:"20rem"}},"\u8BD5\u9898\u6570 ",jn==null?void 0:jn.count)))),(cr==null?void 0:cr.nodeType)!="\u89C6\u9891"&&(cr==null?void 0:cr.nodeType)!="\u9898\u96C6"&&(cr!=null&&cr.resourceOrigin)&&[1,2].includes(cr==null?void 0:cr.resourceOrigin)?bn.createElement("div",{style:{display:"flex",marginTop:"20rem",alignItems:"center"}},bn.createElement("span",{style:{color:"#1B8565",fontSize:"16rem"}},(cr==null?void 0:cr.resourceOrigin)===1?(Ul=Yt==null?void 0:Yt[0])==null?void 0:Ul.name:(Ko=jr==null?void 0:jr[0])==null?void 0:Ko.name),(0,kn.JA)()&&((cr==null?void 0:cr.nodeType)==="\u8BD5\u5377"||(cr==null?void 0:cr.nodeType)==="\u8BD5\u9898")?"":bn.createElement(Le.ZP,{style:{height:"40rem",padding:"0rem 10rem",fontSize:"14rem",marginLeft:"10rem"},onClick:()=>fo(void 0,null,function*(){wa(cr==null?void 0:cr.resourceUrl);let jn=yield(0,Gt.ZP)("/api/subject_knowledge/create_study.json",{method:"post",body:{subject_id:Jl==null?void 0:Jl.pathId,uuid:cr==null?void 0:cr.uuid}})}),type:"primary"},"\u524D\u5F80\u67E5\u770B"),((cr==null?void 0:cr.nodeType)==="\u8BD5\u5377"||(cr==null?void 0:cr.nodeType)==="\u8BD5\u9898")&&(cr==null?void 0:cr.resourceOrigin)===1&&bn.createElement(Le.ZP,{style:{height:"40rem",padding:"0rem 10rem",fontSize:"14rem",marginLeft:"10rem"},onClick:()=>fo(void 0,null,function*(){var jn,$r;const pe=yield(0,es.Mb)({categoryId:(jn=Yt==null?void 0:Yt[0])==null?void 0:jn.id});pe!=null&&pe.exercise_id&&(0,On.xg)(`/classrooms/coursesId/exercise/${pe.exercise_id}/${($r=Lr.userInfo)==null?void 0:$r.login}/initate_answer`)}),type:"primary"},"\u6A21\u62DF\u8003\u8BD5")):""),bn.createElement("div",{className:We.nodetitle},Hi===1&&bn.createElement(mt.Z,{onClick:()=>Xa(2)}),Hi===2&&bn.createElement(Jt.Z,{onClick:()=>Xa(1)}),bn.createElement("span",{style:{marginLeft:"10rem",fontSize:"16rem",color:"#1B8565"}},"\u8282\u70B9\u5173\u7CFB"),bn.createElement("div",{style:{flex:1,textAlign:"end"}},bn.createElement(Et.default,{style:{minWidth:"100rem"},value:Wt,onChange:jn=>{var $r;if(cn(jn),jn==0)Ds();else{let pe=($r=So==null?void 0:So.gl)==null?void 0:$r.filter(Be=>(Be==null?void 0:Be.pathId)==jn);const Ee=[...pe==null?void 0:pe.map((Be,ke)=>({label:`${Be==null?void 0:Be.uuname}\uFF08${pe==null?void 0:pe.filter(Ke=>Ke.olduuid=Be==null?void 0:Be.olduuid).length}\uFF09`,children:bn.createElement(no,{items:Ji,datas:pe==null?void 0:pe.filter(Ke=>Ke.olduuid=Be==null?void 0:Be.olduuid)}),key:ke,items:pe==null?void 0:pe.filter(Ke=>Ke.olduuid=Be==null?void 0:Be.olduuid)}))];pa(0),Wr=Ee,Jr(Ee)}}},bn.createElement(Et.default.Option,{value:"0"},"\u672C\u8BFE\u7A0B"),(ao=So==null?void 0:So.gl)==null?void 0:ao.map(jn=>bn.createElement(Et.default.Option,{value:jn==null?void 0:jn.pathId},jn==null?void 0:jn.uuname))))),Hi===2&&bn.createElement("div",{className:We.nodeboyd,style:{padding:0,minHeight:"530rem"}},bn.createElement(vt.default,{className:We.Tabs,activeKey:Wi,destroyInactiveTabPane:!0,onChange:jn=>{pa(parseInt(jn))},type:"card",items:Wr}))),Br===3&&bn.createElement("div",null,(0,kn.JA)()?bn.createElement(Qa,{uuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id)}):bn.createElement(or,{uuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id)}))),bn.createElement(Ze.default,{title:bn.createElement("span",{style:{fontSize:"18rem",color:"#000"}},Io===3?"\u7F16\u8F91":"\u521B\u5EFA","\u8282\u70B9"),centered:!0,destroyOnClose:!0,width:"1200rem",open:Io>0,getContainer:()=>Vi.current,onCancel:()=>{fs(0),Gu.resetFields(),Ia({qx:[],bh:[],hx:[],gl:[]}),hs({qx:[],bh:[],hx:[],gl:[]}),Ci([]),Iu({}),tn([]),wl([])},okButtonProps:{loading:wo},onOk:()=>{Gu.submit()}},bn.createElement("div",{className:We.addmodal},bn.createElement("div",{className:We.title},"\u8282\u70B9\u5C5E\u6027"),bn.createElement(Bt.default,{className:We.form,labelCol:{flex:"92rem"},layout:"horizontal",form:Gu,colon:!1,onValuesChange:(jn,$r)=>{var pe,Ee,Be,ke;Iu(Lu({},$r)),($r==null?void 0:$r.resourceOrigin)!==1&&tn([]),((Ee=(pe=$r==null?void 0:$r.label)==null?void 0:pe[0])==null?void 0:Ee.name)!=="\u9898\u96C6"&&wl([]),((ke=(Be=$r==null?void 0:$r.label)==null?void 0:Be[0])==null?void 0:ke.item_type)!==2&&(tn([]),Ci([]),wl([]),Gu.setFieldsValue({resourceOrigin:0,url:""}))},onFinish:(0,co.debounce)(jn=>fo(void 0,null,function*(){var $r,pe,Ee,Be,ke,Ke,Ue,ut,at,Pt,bt,Ht,ln,rn,Vn,sn,mn,Sn,wn,wt,Kr,Pi,ja,wi,Ka,vo,mo,ii,Ki,Mo,fr,er,Fi,_i,La,ki,ma,To,go,ia,As,Ws,Vu,du,Yu,sc,_u,dc,Nc,gd;if((($r=hi==null?void 0:hi.bh)==null?void 0:$r.length)===0){Rt.ZP.warning("\u8282\u70B9\u5305\u542B\u5173\u7CFB\u4E0D\u80FD\u4E3A\u7A7A");return}if((jn==null?void 0:jn.resourceOrigin)===0){Rt.ZP.warning("\u8BF7\u9009\u62E9\u8D44\u6E90\u7C7B\u578B");return}if((jn==null?void 0:jn.resourceOrigin)===1&&(Yt==null?void 0:Yt.length)<=0&&((pe=jn==null?void 0:jn.label[0])==null?void 0:pe.name)!=="\u9898\u96C6"){Rt.ZP.warning("\u8BF7\u9009\u62E9\u5BF9\u5E94\u8D44\u6E90");return}if((jn==null?void 0:jn.resourceOrigin)===1&&(Js==null?void 0:Js.length)<=0&&((Ee=jn==null?void 0:jn.label[0])==null?void 0:Ee.name)==="\u9898\u96C6"){Rt.ZP.warning("\u8BF7\u9009\u62E9\u5BF9\u5E94\u8D44\u6E90");return}if((jn==null?void 0:jn.resourceOrigin)===2&&(jr==null?void 0:jr.length)===0){Rt.ZP.warning("\u8BF7\u4E0A\u4F20\u6587\u4EF6");return}rs(!0);let Ic=Io===3?"/api/knowledge/v2/mod_node.json":"/api/knowledge/v2/add_node.json",fd=Io===3?{subject_id:Jl==null?void 0:Jl.pathId,properties:{description:jn.description,rootNodeUuid:cr==null?void 0:cr.rootNodeUuid,name:jn.name,uuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),nodeType:(Be=jn==null?void 0:jn.label[0])==null?void 0:Be.name,tags:((Ke=(ke=jn.tag)==null?void 0:ke.map(hc=>hc==null?void 0:hc.name))==null?void 0:Ke.join("\uFF0C"))||"",color:cr==null?void 0:cr.color,resourceOrigin:jn.resourceOrigin,resourceUrl:jn.resourceOrigin===3?jn.url:jn.resourceOrigin===2?((at=(ut=(Ue=jr==null?void 0:jr[0])==null?void 0:Ue.response)==null?void 0:ut.url)==null?void 0:at.indexOf("educoder.net"))>-1?(bt=(Pt=jr==null?void 0:jr[0])==null?void 0:Pt.response)==null?void 0:bt.url:((Ht=tr==null?void 0:tr.setting)==null?void 0:Ht.public_bucket_host)+((rn=(ln=jr==null?void 0:jr[0])==null?void 0:ln.response)==null?void 0:rn.url):(Vn=Yt==null?void 0:Yt[0])==null?void 0:Vn.url,container_type:((sn=jn==null?void 0:jn.label[0])==null?void 0:sn.name)==="\u9898\u96C6"?"ItemBanksGroup":(jn.resourceOrigin===1||jn.resourceOrigin===2)&&((mn=Yt==null?void 0:Yt[0])==null?void 0:mn.container_type)||((wn=(Sn=jr==null?void 0:jr[0])==null?void 0:Sn.response)==null?void 0:wn.container_type),container_id:(jn.resourceOrigin===1||jn.resourceOrigin===2)&&((wt=Yt==null?void 0:Yt[0])==null?void 0:wt.container_id)||((Pi=(Kr=jr==null?void 0:jr[0])==null?void 0:Kr.response)==null?void 0:Pi.container_id),itemBanksGroupIds:Js==null?void 0:Js.map(hc=>hc==null?void 0:hc.group_id).toString(),pathSetting:JSON.stringify(So)},subgraphNodeUuid:zi,relationships:[...(ja=hi.bh)==null?void 0:ja.map(hc=>({startNodeUuid:hc.uuid,endNodeUuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),type:"\u5305\u542B"})),...Lo==null?void 0:Lo.map(hc=>({endNodeUuid:hc.uuid,startNodeUuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),type:"\u5305\u542B"})),...(wi=hi.qx)==null?void 0:wi.map(hc=>({endNodeUuid:hc.uuid,startNodeUuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),type:"\u524D\u5E8F"})),...(Ka=hi.hx)==null?void 0:Ka.map(hc=>({endNodeUuid:hc.uuid,startNodeUuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),type:"\u540E\u5E8F"})),...(vo=hi.gl)==null?void 0:vo.map(hc=>({startNodeUuid:hc.uuid,endNodeUuid:(cr==null?void 0:cr.keys)||(cr==null?void 0:cr.id),type:"\u5173\u8054"}))]}:{label:((mo=jn==null?void 0:jn.label[0])==null?void 0:mo.item_type)===1?"\u6807\u7B7E":"\u8D44\u6E90",subject_id:Jl==null?void 0:Jl.pathId,properties:{description:jn.description,rootNodeUuid:cr==null?void 0:cr.rootNodeUuid,name:jn.name,nodeType:(ii=jn==null?void 0:jn.label[0])==null?void 0:ii.name,tags:((Mo=(Ki=jn.tag)==null?void 0:Ki.map(hc=>hc==null?void 0:hc.name))==null?void 0:Mo.join("\uFF0C"))||"",color:Io===1?"2":parseInt(cr==null?void 0:cr.colorType)+1+"",resourceOrigin:jn.resourceOrigin,resourceUrl:jn.resourceOrigin===3?jn.url:jn.resourceOrigin===2?((Fi=(er=(fr=jr==null?void 0:jr[0])==null?void 0:fr.response)==null?void 0:er.url)==null?void 0:Fi.indexOf("educoder.net"))>-1?(La=(_i=jr==null?void 0:jr[0])==null?void 0:_i.response)==null?void 0:La.url:((ki=tr==null?void 0:tr.setting)==null?void 0:ki.public_bucket_host)+((To=(ma=jr==null?void 0:jr[0])==null?void 0:ma.response)==null?void 0:To.url):(go=Yt==null?void 0:Yt[0])==null?void 0:go.url,container_type:((ia=jn==null?void 0:jn.label[0])==null?void 0:ia.name)==="\u9898\u96C6"?"ItemBanksGroup":(jn.resourceOrigin===1||jn.resourceOrigin===2)&&((As=Yt==null?void 0:Yt[0])==null?void 0:As.container_type)||((Vu=(Ws=jr==null?void 0:jr[0])==null?void 0:Ws.response)==null?void 0:Vu.container_type),container_id:(jn.resourceOrigin===1||jn.resourceOrigin===2)&&((du=Yt==null?void 0:Yt[0])==null?void 0:du.container_id)||((sc=(Yu=jr==null?void 0:jr[0])==null?void 0:Yu.response)==null?void 0:sc.container_id),itemBanksGroupIds:Js==null?void 0:Js.map(hc=>hc==null?void 0:hc.group_id).toString(),pathSetting:JSON.stringify(So)},subgraphNodeUuid:zi,relationships:[...(_u=hi.bh)==null?void 0:_u.map(hc=>({startNodeUuid:hc.uuid,type:"\u5305\u542B"})),...(dc=hi.qx)==null?void 0:dc.map(hc=>({startNodeUuid:hc.uuid,type:"\u524D\u5E8F"})),...(Nc=hi.hx)==null?void 0:Nc.map(hc=>({endNodeUuid:hc.uuid,type:"\u540E\u5E8F"})),...(gd=hi.gl)==null?void 0:gd.map(hc=>({startNodeUuid:hc.uuid,type:"\u5173\u8054"}))]};const yd=yield(0,Gt.ZP)(Ic,{method:"POST",body:fd});rs(!1),(yd==null?void 0:yd.status)===0&&(bl({graphable_id:Jl==null?void 0:Jl.pathId}),Rt.ZP.info(Io===3?"\u7F16\u8F91\u6210\u529F":"\u521B\u5EFA\u6210\u529F"),fs(0),Nl(!1),No(),Gu.resetFields(),Ci([]),Iu({}),tn([]),wl([]),Ia({qx:[],hx:[],bh:[],gl:[]}))}),500),size:"large"},bn.createElement(Bt.default.Item,{label:"\u8282\u70B9\u540D\u79F0",name:"name",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u8282\u70B9\u540D\u79F0"},{type:"string",max:200,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},bn.createElement(qe.default,{maxLength:200,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),bn.createElement(Bt.default.Item,{label:"\u8282\u70B9\u7B80\u4ECB",name:"description",rules:[{type:"string",max:5e3,message:"\u8F93\u5165\u8D85\u9650\uFF0C\u8BF7\u7F29\u51CF\u5B57\u7B26\u6570"},{type:"string",whitespace:!0,message:"\u5185\u5BB9\u4E0D\u80FD\u5168\u4E3A\u7A7A\u683C"}]},bn.createElement(qe.default.TextArea,{maxLength:5e3,showCount:!0,placeholder:"\u8BF7\u8F93\u5165"})),bn.createElement(Bt.default.Item,{label:"\u8282\u70B9\u7C7B\u578B",name:"label",style:{marginBottom:"0rem"},rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u8282\u70B9\u7C7B\u578B"}]},bn.createElement(xn,{containerRef:Vi,type:5,pathsDetail:hn,showmodal:Io!==3,dataSources:[]})),((Dl=(Wa=cl==null?void 0:cl.label)==null?void 0:Wa[0])==null?void 0:Dl.item_type)===2&&bn.createElement(Bt.default.Item,{label:" ",name:"resourceOrigin",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u8D44\u6E90\u7C7B\u578B"}]},bn.createElement(Ot.ZP.Group,{className:We.radioform},bn.createElement(Ot.ZP,{value:1},"\u9009\u62E9\u5E73\u53F0\u8D44\u6E90"),((mc=(lu=cl==null?void 0:cl.label)==null?void 0:lu[0])==null?void 0:mc.name)!=="\u9898\u96C6"&&bn.createElement(Ot.ZP,{value:2},"\u4E0A\u4F20\u6587\u4EF6"),((jl=(Ro=cl==null?void 0:cl.label)==null?void 0:Ro[0])==null?void 0:jl.name)!=="\u9898\u96C6"&&bn.createElement(Ot.ZP,{value:3},"\u5916\u94FE"))),(cl==null?void 0:cl.resourceOrigin)===1&&((mu=(Ml=cl==null?void 0:cl.label)==null?void 0:Ml[0])==null?void 0:mu.item_type)===2&&bn.createElement(Bt.default.Item,{label:" ",name:""},bn.createElement(Le.ZP,{onClick:()=>{var jn,$r,pe,Ee,Be,ke,Ke,Ue;(($r=(jn=cl==null?void 0:cl.label)==null?void 0:jn[0])==null?void 0:$r.name)==="\u9898\u96C6"?(Fl(!0),Ll(Js),Ya()):((Ee=(pe=cl==null?void 0:cl.label)==null?void 0:pe[0])==null?void 0:Ee.name)==="\u8BD5\u9898"?Uu(!0):(Re(!0),nt(((ke=(Be=cl==null?void 0:cl.label)==null?void 0:Be[0])==null?void 0:ke.name)==="\u89C6\u9891"?"2":((Ue=(Ke=cl==null?void 0:cl.label)==null?void 0:Ke[0])==null?void 0:Ue.name)==="\u8BD5\u5377"?"4":"1"))},type:"primary",style:{height:"40rem",lineHeight:"40rem",padding:"0rem 32rem",boxShadow:"none"}},((Go=(Co=cl==null?void 0:cl.label)==null?void 0:Co[0])==null?void 0:Go.name)==="\u9898\u96C6"?"\u9009\u62E9\u9898\u96C6":"\u9009\u62E9\u8D44\u6E90"),(Yt==null?void 0:Yt.length)>0&&bn.createElement("div",{style:{color:"#1B8565",marginTop:"5rem",fontSize:"16rem",display:"flex",alignItems:"center"}},bn.createElement("div",{className:We.multiple,title:(ou=Yt==null?void 0:Yt[0])==null?void 0:ou.name},((Mc=Yt==null?void 0:Yt[0])==null?void 0:Mc.name)||Gu.getFieldValue("name")+"\uFF08"+((Ai=Yt==null?void 0:Yt[0])==null?void 0:Ai.question_count)+"\uFF09"),bn.createElement("i",{style:{fontSize:"16rem",cursor:"pointer",marginLeft:"10rem"},onClick:()=>{tn([])},className:"iconfont icon-shanchu12"})," "),(Js==null?void 0:Js.length)>0&&(Js==null?void 0:Js.map(jn=>bn.createElement("div",{style:{color:"#1B8565",marginTop:"5rem",fontSize:"16rem",display:"flex",alignItems:"center"}},bn.createElement("div",{className:We.multiple,title:jn==null?void 0:jn.name},jn==null?void 0:jn.name),bn.createElement("i",{style:{fontSize:"16rem",cursor:"pointer",marginLeft:"10rem"},onClick:()=>{wl(Js==null?void 0:Js.filter($r=>($r==null?void 0:$r.group_id)!==(jn==null?void 0:jn.group_id)))},className:"iconfont icon-shanchu12"})," ")))),(cl==null?void 0:cl.resourceOrigin)===2&&((Pl=(tu=cl==null?void 0:cl.label)==null?void 0:tu[0])==null?void 0:Pl.item_type)===2&&bn.createElement(Bt.default.Item,{label:" ",name:"file",shouldUpdate:!0},bn.createElement(Dt.default,Lu({},ms),bn.createElement(Le.ZP,{type:"primary",style:{height:"40rem",lineHeight:"40rem",padding:"0rem 32rem",boxShadow:"none"}},"\u4E0A\u4F20\u6587\u4EF6"))),(cl==null?void 0:cl.resourceOrigin)===3&&((Tu=(nc=cl==null?void 0:cl.label)==null?void 0:nc[0])==null?void 0:Tu.item_type)===2&&bn.createElement(Bt.default.Item,{label:" ",name:"url"},bn.createElement(Bt.default.Item,{label:"\u5916\u94FE\u94FE\u63A5",name:"url",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5916\u94FE"}]},bn.createElement(qe.default,{style:{height:"40rem"}}))),bn.createElement(Bt.default.Item,{label:"\u8282\u70B9\u6807\u7B7E",name:"tag"},bn.createElement(xn,{containerRef:Vi,type:3,pathsDetail:hn,showmodal:!0,dataSources:[]})))),bn.createElement("div",{className:We.addmodal,style:{marginTop:"20rem"}},bn.createElement("div",{className:We.title},bn.createElement("span",null,"\u8282\u70B9\u5173\u7CFB"),bn.createElement("div",null,bn.createElement("span",{style:{cursor:"pointer"},onClick:()=>{ho()}},"\u5173\u8054\u5176\u4ED6\u8BFE\u7A0B"),bn.createElement("span",{style:{cursor:"pointer",marginLeft:20},onClick:()=>{nl()}},"\u5173\u7CFB\u8BBE\u7F6E"))),bn.createElement("div",{className:We.gxcoent,style:{padding:"20rem 25rem"}},bn.createElement("div",{className:We.gxtitle},bn.createElement("div",{className:We.Colortitle,style:{background:"#6236ff"}}),bn.createElement("div",null,"\u88AB\u5305\u542B\uFF08",($i=hi.bh)==null?void 0:$i.length,"\uFF09")),bn.createElement("div",{className:We.gxbody},(ol=hi==null?void 0:hi.bh)==null?void 0:ol.map(jn=>bn.createElement("div",{className:We.tag,style:{background:"#6236ff"}},bn.createElement("span",{style:{marginRight:"10rem"}},jn==null?void 0:jn.name)," ",bn.createElement(pt.Z,{onClick:()=>{var $r;let pe=($r=hi==null?void 0:hi.bh)==null?void 0:$r.filter(Ee=>Ee.uuid!==jn.uuid);Ia({bh:pe,hx:hi==null?void 0:hi.hx,qx:hi==null?void 0:hi.qx,gl:hi==null?void 0:hi.gl})}})))),bn.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},bn.createElement("div",{className:We.Colortitle,style:{background:"#24A881"}}),bn.createElement("div",null,"\u524D\u5E8F\uFF08",(Po=hi.qx)==null?void 0:Po.length,"\uFF09")),bn.createElement("div",{className:We.gxbody},(ds=hi==null?void 0:hi.qx)==null?void 0:ds.map(jn=>bn.createElement("div",{className:We.tag,style:{background:"#24A881"}},bn.createElement("span",{style:{marginRight:"10rem"}},jn==null?void 0:jn.name)," ",bn.createElement(pt.Z,{onClick:()=>{var $r;let pe=($r=hi==null?void 0:hi.qx)==null?void 0:$r.filter(Ee=>Ee.uuid!==jn.uuid);Ia({qx:pe,bh:hi==null?void 0:hi.bh,hx:hi==null?void 0:hi.hx,gl:hi==null?void 0:hi.gl})}})))),bn.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},bn.createElement("div",{className:We.Colortitle,style:{background:"#EC8657"}}),bn.createElement("div",null,"\u540E\u5E8F\uFF08",(Zl=hi.hx)==null?void 0:Zl.length,"\uFF09")),bn.createElement("div",{className:We.gxbody},(uu=hi==null?void 0:hi.hx)==null?void 0:uu.map(jn=>bn.createElement("div",{className:We.tag,style:{background:"#EC8657"}},bn.createElement("span",{style:{marginRight:"10rem"}},jn==null?void 0:jn.name)," ",bn.createElement(pt.Z,{onClick:()=>{var $r;let pe=($r=hi==null?void 0:hi.hx)==null?void 0:$r.filter(Ee=>Ee.uuid!==jn.uuid);Ia({qx:hi==null?void 0:hi.qx,bh:hi==null?void 0:hi.bh,hx:pe,gl:hi==null?void 0:hi.gl})}})))),bn.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},bn.createElement("div",{className:We.Colortitle,style:{background:"#497DFF"}}),bn.createElement("div",null,"\u5173\u8054\uFF08",(Ys=hi.gl)==null?void 0:Ys.length,"\uFF09")),bn.createElement("div",{className:We.gxbody},(hl=hi==null?void 0:hi.gl)==null?void 0:hl.map(jn=>bn.createElement("div",{className:We.tag,style:{background:"#497DFF"}},bn.createElement("span",{style:{marginRight:"10rem"}},jn==null?void 0:jn.name)," ",bn.createElement(pt.Z,{onClick:()=>{var $r;let pe=($r=hi==null?void 0:hi.gl)==null?void 0:$r.filter(Ee=>Ee.uuid!==jn.uuid);Ia({qx:hi==null?void 0:hi.qx,hx:hi==null?void 0:hi.hx,bh:hi==null?void 0:hi.bh,gl:pe})}})))),bn.createElement("div",{className:We.gxtitle,style:{marginTop:"30rem"}},bn.createElement("div",{className:We.Colortitle,style:{background:"#497DFF"}}),bn.createElement("div",null,"\u5176\u4ED6\u8BFE\u7A0B\u5173\u8054\uFF08",(Rl=So.gl)==null?void 0:Rl.length,"\uFF09")),bn.createElement("div",{className:We.gxbody},(Yl=So==null?void 0:So.gl)==null?void 0:Yl.map(jn=>bn.createElement("div",{className:We.tag,style:{background:"#497DFF"}},bn.createElement("span",{style:{marginRight:"10rem"}},jn==null?void 0:jn.name)," ",bn.createElement(pt.Z,{onClick:()=>{var $r;let pe=($r=So==null?void 0:So.gl)==null?void 0:$r.filter(Ee=>Ee.uuid!==jn.uuid);hs({qx:hi==null?void 0:hi.qx,hx:hi==null?void 0:hi.hx,bh:hi==null?void 0:hi.bh,gl:pe})}}))))))),bn.createElement(Ze.default,{title:"\u9009\u62E9\u9898\u96C6",open:ni,destroyOnClose:!0,centered:!0,getContainer:()=>Vi.current,width:"1200rem",onOk:()=>{if((bu==null?void 0:bu.length)<=0){Rt.ZP.info("\u8BF7\u9009\u62E9\u9898\u96C6");return}wl(bu),Fl(!1)},onCancel:()=>{Ll([]),Fl(!1)}},bn.createElement(Ye.default,{checkable:!0,style:{margin:20,maxHeight:400,overflow:"auto"},blockNode:!0,checkStrictly:!0,checkedKeys:bu==null?void 0:bu.map(jn=>jn==null?void 0:jn.group_id),onCheck:(jn,$r)=>{Ll($r==null?void 0:$r.checkedNodes)},treeData:iu,fieldNames:{key:"group_id",title:"name"},titleRender:jn=>bn.createElement("div",{style:{display:"flex",alignItems:"center",paddingRight:"14px"}},bn.createElement(It.Z,{title:jn==null?void 0:jn.name},bn.createElement("div",{className:We.multiple,style:{display:"flex",alignItems:"center",maxWidth:"80%"}},bn.createElement("img",{src:Ma,style:{marginRight:10}}),bn.createElement("span",null,jn==null?void 0:jn.name))),bn.createElement("div",{style:{padding:"0rem 10rem",fontSize:"12rem",background:"#F6F7F9",color:"#909D99",borderRadius:"20rem"}},"\u8BD5\u9898\u6570 ",jn==null?void 0:jn.count))})),bn.createElement(Ze.default,{title:"\u9009\u62E9\u5E73\u53F0\u8D44\u6E90",open:ru,destroyOnClose:!0,centered:!0,getContainer:()=>Vi.current,width:"1200rem",onOk:()=>{Re(!1)},onCancel:()=>{Re(!1),Io!==3&&tn([]),nt("1")}},bn.createElement("div",{className:We.settingmodal},bn.createElement(vt.default,{className:We.Tabs,activeKey:$e,destroyInactiveTabPane:!0,onChange:jn=>{nt(jn)},type:"card",items:((nu=(Au=cl==null?void 0:cl.label)==null?void 0:Au[0])==null?void 0:nu.name)==="\u89C6\u9891"?dr.filter(jn=>(jn==null?void 0:jn.label)==="\u89C6\u9891"):((Kc=(xc=cl==null?void 0:cl.label)==null?void 0:xc[0])==null?void 0:Kc.name)==="\u8BD5\u5377"?dr.filter(jn=>(jn==null?void 0:jn.label)==="\u8BD5\u5377"):dr.filter(jn=>(jn==null?void 0:jn.label)!=="\u89C6\u9891")}))),Vl&&bn.createElement(Su,{setScoreShow:Uu,isshixuns:xu,ScoreShow:Vl,listitem:Yt==null?void 0:Yt[0],isloadings:pc,onOk:(jn,$r,pe,Ee)=>fo(void 0,null,function*(){Ac(!0);let Be={item_bank_ids:jn,shixun_ids:$r,name:Gu.getFieldValue("name")+"\uFF08"+(parseInt(jn.length)+parseInt($r.length))+"\u9053\uFF09",subject_id:Jl==null?void 0:Jl.pathId};Ac(!1);let ke=yield(0,Gt.ZP)("/api/knowledge/v2/create_by_knowledge.json",{method:"post",body:Be});if((ke==null?void 0:ke.status)===0){Uu(!1);let Ke={container_id:ke==null?void 0:ke.container_id,container_type:ke==null?void 0:ke.container_type,url:ke==null?void 0:ke.resourceUrl,question_count:ke==null?void 0:ke.question_count,questionIdArr:jn,shixun_ids:$r};tn([Ke])}})}),bn.createElement(Ao.Z,{close:!0,style:{zIndex:1300,background:"rgba(1, 10, 35, 0.5)"},data:ya==null?void 0:ya.url,type:ya==null?void 0:ya.file_type,disabledDownload:!0,onClose:()=>ns({})}),bn.createElement(Ze.default,{title:"\u5173\u7CFB\u8BBE\u7F6E",open:Mi,destroyOnClose:!0,centered:!0,getContainer:()=>Vi.current,width:"1200rem",onCancel:()=>{Ha(!1);let jn=JSON.parse(sessionStorage.getItem("typesdatajson"));Ia(jn)},onOk:()=>{let jn=JSON.parse(sessionStorage.getItem("typesdatajsoncopy"));Ia(jn),Ha(!1)}},bn.createElement("div",{className:We.settingmodal},bn.createElement(vt.default,{className:We.Tabs,activeKey:Qi,destroyInactiveTabPane:!0,onChange:jn=>{Xi(jn)},type:"card",items:ir}))),bn.createElement(Ze.default,{title:"\u8BFE\u7A0B\u5173\u7CFB\u8BBE\u7F6E",open:yl,destroyOnClose:!0,centered:!0,getContainer:()=>Vi.current,width:"1200rem",onCancel:()=>{Sl(!1);let jn=JSON.parse(sessionStorage.getItem("typesdatajson"));hs(jn)},onOk:()=>{let jn=JSON.parse(sessionStorage.getItem("typesdatajsoncopy"));hs(jn),Sl(!1)}},bn.createElement("div",null,bn.createElement("label",null,"\u5B9E\u8DF5\u8BFE\u7A0B\uFF1A"),bn.createElement(Et.default,{defaultValue:(Dc=ot==null?void 0:ot[0])==null?void 0:Dc.identifier,style:{width:300,marginBottom:20},onChange:(jn,$r)=>{is(jn,$r==null?void 0:$r.children)}},ot==null?void 0:ot.map(jn=>bn.createElement(Et.default.Option,{value:jn==null?void 0:jn.identifier},jn==null?void 0:jn.name)))),bn.createElement("div",{className:We.settingmodal},(ir==null?void 0:ir.length)==0&&bn.createElement(En.Z,{customText:"\u5F53\u524D\u8BFE\u7A0B\u4E0B\u6682\u65E0\u56FE\u8C31"}),(ir==null?void 0:ir.length)>0&&bn.createElement(vt.default,{className:We.Tabs,activeKey:Qi,destroyInactiveTabPane:!0,onChange:jn=>{Xi(jn)},type:"card",items:ir})))))};var Oo=(0,je.connect)(({pathsDetail:hn,user:Lr,loading:tr,globalSetting:Oi})=>({pathsDetail:hn,user:Lr,globalSetting:Oi,loading:tr.models.index}))(Hs)},97846:function(Hn,xr,he){"use strict";he.r(xr),he.d(xr,{KNOWLEDGELEARNINGDETAIL:function(){return Jn},default:function(){return On}});var se=he(59301),je=he(63823),Bt=he.p+"static/nav.8f5feceb.png",Rt=he(74732),Dt=he(26358),dt=he(16033),Le=he(82670),Ze=he(16122),qe=he(362),It=he(61834),Et=he(8451),vt=he(17149),Ot="data:image/png;base64,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",Ye=he(87620),We=he(64813),pt=he(87017),mt=he(40181),Jt=he(48289),Qt=he(6848),$t=he(8591),Ft=he(71418),Gt=he(1710),_e=he(93948),Bn=he(84583),ur=he(24385),fn=he(42441),Xt=he(76411),gn=he(66649),et=he.n(gn),nn=he(5873),Ct=he(71347),Ln=he(63596),Dn=he(11134),xn=he(35783),Dr=he(68911),oi=he(28162),yt=he(22315),tt=Object.defineProperty,Rn=Object.defineProperties,fi=Object.getOwnPropertyDescriptors,li=Object.getOwnPropertySymbols,In=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,Xr=(Je,Ie,Ce)=>Ie in Je?tt(Je,Ie,{enumerable:!0,configurable:!0,writable:!0,value:Ce}):Je[Ie]=Ce,Or=(Je,Ie)=>{for(var Ce in Ie||(Ie={}))In.call(Ie,Ce)&&Xr(Je,Ce,Ie[Ce]);if(li)for(var Ce of li(Ie))an.call(Ie,Ce)&&Xr(Je,Ce,Ie[Ce]);return Je},zn=(Je,Ie)=>Rn(Je,fi(Ie)),Qn=(Je,Ie,Ce)=>new Promise((He,it)=>{var we=Lt=>{try{Cn(Ce.next(Lt))}catch(Zt){it(Zt)}},Vt=Lt=>{try{Cn(Ce.throw(Lt))}catch(Zt){it(Zt)}},Cn=Lt=>Lt.done?He(Lt.value):Promise.resolve(Lt.value).then(we,Vt);Cn((Ce=Ce.apply(Je,Ie)).next())}),Jn=(Je=>(Je.KNOWLEDGE="1",Je.RESOURCE="2",Je.STUDENT="3",Je))(Jn||{});const qn=({dispatch:Je,pathsDetail:Ie,learningpathId:Ce,isCompontent:He})=>{var it,we,Vt,Cn,Lt,Zt,ar,Xn,dn,kr,vi,Un,Pr,Ii,on;const{detail:qt,actionTabs:vn}=Ie,[gr,mr]=(0,se.useState)((0,je.useParams)()),xi=new URLSearchParams(window.location.search),[Ui,Ni]=(0,se.useState)({}),[Fa,_o]=(0,se.useState)("good"),[,co,kn,Yi]=(0,Ln.U)(Dn.b,{subject_id:gr==null?void 0:gr.pathId,id:gr==null?void 0:gr.learningpathId}),[,ys,$o,eo]=(0,Ln.U)(Dn.S$,{subject_id:gr==null?void 0:gr.pathId,id:gr==null?void 0:gr.learningpathId}),[lo,Qr]=(0,se.useState)({page:1,limit:10,type:"1",keyword:""}),{pxToRoot:rr,rootFontSize:ri}=(0,oi.Z)(),ua=(0,se.useMemo)(()=>{var Wn,st;const Nt=((st=(Wn=Yi==null?void 0:Yi.data)==null?void 0:Wn.route_study_info)==null?void 0:st.study_grasp_hash)||[],Gn=Nt==null?void 0:Nt.reduce((ai=0,Ur)=>ai+((Ur==null?void 0:Ur.value)||0),0),Sr=["#37AD83","#0374EA","#F29533","#EE5D5D","#A4C8FC"],yr=Nt.map((ai,Ur)=>zn(Or({},ai),{color:Sr[Ur]})),ci={title:[{text:"\u5404\u9636\u6BB5\u638C\u63E1\u7387\u5360\u6BD4",left:"center",top:"middle",textStyle:{color:"#A4C8FC",fontWeight:"normal",fontSize:rr(12)}}],tooltip:{appendToBody:!0,trigger:"item",position:"right",formatter:({color:ai,value:Ur,name:zr,percent:ta})=>`
    \u638C\u63E1\u7387${zr}
    diff --git a/p__knowledgegraph__SanD__index.44d4e422.async.js b/p__knowledgegraph__SanD__index.62290c9f.async.js similarity index 99% rename from p__knowledgegraph__SanD__index.44d4e422.async.js rename to p__knowledgegraph__SanD__index.62290c9f.async.js index dbb752c273..470c93b7f1 100644 --- a/p__knowledgegraph__SanD__index.44d4e422.async.js +++ b/p__knowledgegraph__SanD__index.62290c9f.async.js @@ -1,4 +1,4 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[6979],{40001:function(Ke,ct,y){"use strict";y.d(ct,{Z:function(){return $}});var T=y(54476),C=y(59301),S={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"},F=S,R=y(85221),L=function(b,P){return C.createElement(R.Z,(0,T.Z)({},b,{ref:P,icon:F}))},A=C.forwardRef(L),$=A},84105:function(Ke,ct,y){"use strict";y.d(ct,{Z:function(){return $}});var T=y(54476),C=y(59301),S={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"},F=S,R=y(85221),L=function(b,P){return C.createElement(R.Z,(0,T.Z)({},b,{ref:P,icon:F}))},A=C.forwardRef(L),$=A},73331:function(Ke,ct,y){"use strict";y.d(ct,{Z:function(){return $}});var T=y(54476),C=y(59301),S={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z"}},{tag:"path",attrs:{d:"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z"}}]},name:"eye-invisible",theme:"outlined"},F=S,R=y(85221),L=function(b,P){return C.createElement(R.Z,(0,T.Z)({},b,{ref:P,icon:F}))},A=C.forwardRef(L),$=A},15277:function(Ke,ct,y){"use strict";y.d(ct,{Z:function(){return $}});var T=y(54476),C=y(59301),S={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"},F=S,R=y(85221),L=function(b,P){return C.createElement(R.Z,(0,T.Z)({},b,{ref:P,icon:F}))},A=C.forwardRef(L),$=A},47472:function(Ke,ct,y){"use strict";y.d(ct,{Z:function(){return $}});var T=y(54476),C=y(59301),S={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"},F=S,R=y(85221),L=function(b,P){return C.createElement(R.Z,(0,T.Z)({},b,{ref:P,icon:F}))},A=C.forwardRef(L),$=A},13722:function(Ke){(function(y,T){Ke.exports=T()})(typeof self!="undefined"?self:this,function(){return function(ct){var y={};function T(C){if(y[C])return y[C].exports;var S=y[C]={i:C,l:!1,exports:{}};return ct[C].call(S.exports,S,S.exports,T),S.l=!0,S.exports}return T.m=ct,T.c=y,T.d=function(C,S,F){T.o(C,S)||Object.defineProperty(C,S,{configurable:!1,enumerable:!0,get:F})},T.n=function(C){var S=C&&C.__esModule?function(){return C.default}:function(){return C};return T.d(S,"a",S),S},T.o=function(C,S){return Object.prototype.hasOwnProperty.call(C,S)},T.p="",T(T.s=5)}([function(ct,y){function T(C,S,F,R){return R===void 0&&(R="height"),F==="center"?(C[R]+S[R])/2:C.height}ct.exports={assign:Object.assign,getHeight:T}},function(ct,y,T){var C=T(3),S=function(){function F(L,A){A===void 0&&(A={});var $=this;$.options=A,$.rootNode=C(L,A)}var R=F.prototype;return R.execute=function(){throw new Error("please override this method")},F}();ct.exports=S},function(ct,y,T){var C=T(4),S=["LR","RL","TB","BT","H","V"],F=["LR","RL","H"],R=function(_){return F.indexOf(_)>-1},L=S[0];ct.exports=function($,_,b){var P=_.direction||L;if(_.isHorizontal=R(P),P&&S.indexOf(P)===-1)throw new TypeError("Invalid direction: "+P);if(P===S[0])b($,_);else if(P===S[1])b($,_),$.right2left();else if(P===S[2])b($,_);else if(P===S[3])b($,_),$.bottom2top();else if(P===S[4]||P===S[5]){var D=C($,_),H=D.left,Y=D.right;b(H,_),b(Y,_),_.isHorizontal?H.right2left():H.bottom2top(),Y.translate(H.x-Y.x,H.y-Y.y),$.x=H.x,$.y=Y.y;var et=$.getBoundingBox();_.isHorizontal?et.top<0&&$.translate(0,-et.top):et.left<0&&$.translate(-et.left,0)}var jt=_.fixedRoot;return jt===void 0&&(jt=!0),jt&&$.translate(-($.x+$.width/2+$.hgap),-($.y+$.height/2+$.vgap)),A($,_),$};function A($,_){if(_.radial){var b=_.isHorizontal?["x","y"]:["y","x"],P=b[0],D=b[1],H={x:1/0,y:1/0},Y={x:-1/0,y:-1/0},et=0;$.DFTraverse(function(ft){et++;var Dt=ft.x,tt=ft.y;H.x=Math.min(H.x,Dt),H.y=Math.min(H.y,tt),Y.x=Math.max(Y.x,Dt),Y.y=Math.max(Y.y,tt)});var jt=Y[D]-H[D];if(jt===0)return;var ot=Math.PI*2/et;$.DFTraverse(function(ft){var Dt=(ft[D]-H[D])/jt*(Math.PI*2-ot)+ot,tt=ft[P]-$[P];ft.x=Math.cos(Dt)*tt,ft.y=Math.sin(Dt)*tt})}}},function(ct,y,T){var C=T(0),S=18,F=S*2,R=S,L={getId:function(b){return b.id||b.name},getPreH:function(b){return b.preH||0},getPreV:function(b){return b.preV||0},getHGap:function(b){return b.hgap||R},getVGap:function(b){return b.vgap||R},getChildren:function(b){return b.children},getHeight:function(b){return b.height||F},getWidth:function(b){var P=b.label||" ";return b.width||P.split("").length*S}};function A(_,b){var P=this;if(P.vgap=P.hgap=0,_ instanceof A)return _;P.data=_;var D=b.getHGap(_),H=b.getVGap(_);return P.preH=b.getPreH(_),P.preV=b.getPreV(_),P.width=b.getWidth(_),P.height=b.getHeight(_),P.width+=P.preH,P.height+=P.preV,P.id=b.getId(_),P.x=P.y=0,P.depth=0,P.children||(P.children=[]),P.addGap(D,H),P}C.assign(A.prototype,{isRoot:function(){return this.depth===0},isLeaf:function(){return this.children.length===0},addGap:function(b,P){var D=this;D.hgap+=b,D.vgap+=P,D.width+=2*b,D.height+=2*P},eachNode:function(b){for(var P=this,D=[P],H;H=D.shift();)b(H),D=H.children.concat(D)},DFTraverse:function(b){this.eachNode(b)},BFTraverse:function(b){for(var P=this,D=[P],H;H=D.shift();)b(H),D=D.concat(H.children)},getBoundingBox:function(){var b={left:Number.MAX_VALUE,top:Number.MAX_VALUE,width:0,height:0};return this.eachNode(function(P){b.left=Math.min(b.left,P.x),b.top=Math.min(b.top,P.y),b.width=Math.max(b.width,P.x+P.width),b.height=Math.max(b.height,P.y+P.height)}),b},translate:function(b,P){b===void 0&&(b=0),P===void 0&&(P=0),this.eachNode(function(D){D.x+=b,D.y+=P,D.x+=D.preH,D.y+=D.preV})},right2left:function(){var b=this,P=b.getBoundingBox();b.eachNode(function(D){D.x=D.x-(D.x-P.left)*2-D.width}),b.translate(P.width,0)},bottom2top:function(){var b=this,P=b.getBoundingBox();b.eachNode(function(D){D.y=D.y-(D.y-P.top)*2-D.height}),b.translate(0,P.height)}});function $(_,b,P){b===void 0&&(b={}),b=C.assign({},L,b);var D=new A(_,b),H=[D],Y;if(!P&&!_.collapsed){for(;Y=H.shift();)if(!Y.data.collapsed){var et=b.getChildren(Y.data),jt=et?et.length:0;if(Y.children=new Array(jt),et&&jt)for(var ot=0;otG.low&&(G=G.nxt);var Pe=Rt+rt.prelim+rt.w-($t+At.prelim);Pe>0&&($t+=Pe,H(w,K,G.index,Pe));var Xt=jt(rt),ne=jt(At);Xt<=ne&&(rt=et(rt),rt!==null&&(Rt+=rt.mod)),Xt>=ne&&(At=Y(At),At!==null&&($t+=At.mod))}!rt&&At?ot(w,K,At,$t):rt&&!At&&ft(w,K,rt,Rt)}function H(w,K,G,rt){w.c[K].mod+=rt,w.c[K].msel+=rt,w.c[K].mser+=rt,Q(w,K,G,rt)}function Y(w){return w.cs===0?w.tl:w.c[0]}function et(w){return w.cs===0?w.tr:w.c[w.cs-1]}function jt(w){return w.y+w.h}function ot(w,K,G,rt){var Rt=w.c[0].el;Rt.tl=G;var At=rt-G.mod-w.c[0].msel;Rt.mod+=At,Rt.prelim-=At,w.c[0].el=w.c[K].el,w.c[0].msel=w.c[K].msel}function ft(w,K,G,rt){var Rt=w.c[K].er;Rt.tr=G;var At=rt-G.mod-w.c[K].mser;Rt.mod+=At,Rt.prelim-=At,w.c[K].er=w.c[K-1].er,w.c[K].mser=w.c[K-1].mser}function Dt(w){w.prelim=(w.c[0].prelim+w.c[0].mod+w.c[w.cs-1].mod+w.c[w.cs-1].prelim+w.c[w.cs-1].w)/2-w.w/2}function tt(w,K){K+=w.mod,w.x=w.prelim+K,M(w);for(var G=0;G=G.low;)G=G.nxt;return{low:w,index:K,nxt:G}}L(A,_);var I=T.fromNode(A,_);return b(I),tt(I,0),R(I,A,_),F(A,_),A}},function(ct,y,T){function C(P,D){P.prototype=Object.create(D.prototype),P.prototype.constructor=P,S(P,D)}function S(P,D){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(H,Y){return H.__proto__=Y,H},S(P,D)}var F=T(1),R=T(9),L=T(2),A=T(0),$=function(P){function D(){return P.apply(this,arguments)||this}C(D,P);var H=D.prototype;return H.execute=function(){var et=this;return et.rootNode.width=0,L(et.rootNode,et.options,R)},D}(F),_={};function b(P,D){return D=A.assign({},_,D),new $(P,D).execute()}ct.exports=b},function(ct,y,T){var C=T(0);function S(L,A){L===void 0&&(L=0),A===void 0&&(A=[]);var $=this;$.x=$.y=0,$.leftChild=$.rightChild=null,$.height=0,$.children=A}var F={isHorizontal:!0,nodeSep:20,nodeSize:20,rankSep:200,subTreeSep:10};function R(L,A,$){$?(A.x=L.x,A.y=L.y):(A.x=L.y,A.y=L.x),L.children.forEach(function(_,b){R(_,A.children[b],$)})}ct.exports=function(L,A){A===void 0&&(A={}),A=C.assign({},F,A);var $=0;function _(Y){if(!Y)return null;Y.width=0,Y.depth&&Y.depth>$&&($=Y.depth);var et=Y.children,jt=et.length,ot=new S(Y.height,[]);return et.forEach(function(ft,Dt){var tt=_(ft);ot.children.push(tt),Dt===0&&(ot.leftChild=tt),Dt===jt-1&&(ot.rightChild=tt)}),ot.originNode=Y,ot.isLeaf=Y.isLeaf(),ot}function b(Y){if(Y.isLeaf||Y.children.length===0)Y.drawingDepth=$;else{var et=Y.children.map(function(ot){return b(ot)}),jt=Math.min.apply(null,et);Y.drawingDepth=jt-1}return Y.drawingDepth}var P;function D(Y){Y.x=Y.drawingDepth*A.rankSep,Y.isLeaf?(Y.y=0,P&&(Y.y=P.y+P.height+A.nodeSep,Y.originNode.parent!==P.originNode.parent&&(Y.y+=A.subTreeSep)),P=Y):(Y.children.forEach(function(et){D(et)}),Y.y=(Y.leftChild.y+Y.rightChild.y)/2)}var H=_(L);return b(H),D(H),R(H,L,A.isHorizontal),L}},function(ct,y,T){function C(H,Y){H.prototype=Object.create(Y.prototype),H.prototype.constructor=H,S(H,Y)}function S(H,Y){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(et,jt){return et.__proto__=jt,et},S(H,Y)}var F=T(1),R=T(11),L=T(4),A=T(0),$=["LR","RL","H"],_=$[0],b=function(H){function Y(){return H.apply(this,arguments)||this}C(Y,H);var et=Y.prototype;return et.execute=function(){var ot=this,ft=ot.options,Dt=ot.rootNode;ft.isHorizontal=!0;var tt=ft.indent,Q=tt===void 0?20:tt,M=ft.dropCap,v=M===void 0?!0:M,I=ft.direction,w=I===void 0?_:I,K=ft.align;if(w&&$.indexOf(w)===-1)throw new TypeError("Invalid direction: "+w);if(w===$[0])R(Dt,Q,v,K);else if(w===$[1])R(Dt,Q,v,K),Dt.right2left();else if(w===$[2]){var G=L(Dt,ft),rt=G.left,Rt=G.right;R(rt,Q,v,K),rt.right2left(),R(Rt,Q,v,K);var At=rt.getBoundingBox();Rt.translate(At.width,0),Dt.x=Rt.x-Dt.width/2}return Dt},Y}(F),P={};function D(H,Y){return Y=A.assign({},P,Y),new b(H,Y).execute()}ct.exports=D},function(ct,y,T){var C=T(0);function S(F,R,L,A,$){var _=(typeof L=="function"?L(F):L)*F.depth;if(!A)try{if(F.id===F.parent.children[0].id){F.x+=_,F.y=R?R.y:0;return}}catch(D){}if(F.x+=_,R){if(F.y=R.y+C.getHeight(R,F,$),R.parent&&F.parent.id!==R.parent.id){var b=R.parent,P=b.y+C.getHeight(b,F,$);F.y=P>F.y?P:F.y}}else F.y=0}ct.exports=function(F,R,L,A){var $=null;F.eachNode(function(_){S(_,$,R,L,A),$=_})}},function(ct,y,T){function C(P,D){P.prototype=Object.create(D.prototype),P.prototype.constructor=P,S(P,D)}function S(P,D){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(H,Y){return H.__proto__=Y,H},S(P,D)}var F=T(1),R=T(13),L=T(2),A=T(0),$=function(P){function D(){return P.apply(this,arguments)||this}C(D,P);var H=D.prototype;return H.execute=function(){var et=this;return L(et.rootNode,et.options,R)},D}(F),_={};function b(P,D){return D=A.assign({},_,D),new $(P,D).execute()}ct.exports=b},function(ct,y,T){var C=T(0);function S(L,A){var $=0;return L.children.length?L.children.forEach(function(_){$+=S(_,A)}):$=L.height,L._subTreeSep=A.getSubTreeSep(L.data),L.totalHeight=Math.max(L.height,$)+2*L._subTreeSep,L.totalHeight}function F(L){var A=L.children,$=A.length;if($){A.forEach(function(Y){F(Y)});var _=A[0],b=A[$-1],P=b.y-_.y+b.height,D=0;if(A.forEach(function(Y){D+=Y.totalHeight}),P>L.height)L.y=_.y+P/2-L.height/2;else if(A.length!==1||L.height>D){var H=L.y+(L.height-P)/2-_.y;A.forEach(function(Y){Y.translate(0,H)})}else L.y=(_.y+_.height/2+b.y+b.height/2)/2-L.height/2}}var R={getSubTreeSep:function(){return 0}};ct.exports=function(L,A){A===void 0&&(A={}),A=C.assign({},R,A),L.parent={x:0,width:0,height:0,y:0},L.BFTraverse(function($){$.x=$.parent.x+$.parent.width}),L.parent=null,S(L,A),L.startY=0,L.y=L.totalHeight/2-L.height/2,L.eachNode(function($){var _=$.children,b=_.length;if(b){var P=_[0];if(P.startY=$.startY+$._subTreeSep,b===1)P.y=$.y+$.height/2-P.height/2;else{P.y=P.startY+P.totalHeight/2-P.height/2;for(var D=1;Do.length)&&(t=o.length);for(var e=0,n=Array(t);e-1},L=S[0];ct.exports=function($,_,b){var P=_.direction||L;if(_.isHorizontal=R(P),P&&S.indexOf(P)===-1)throw new TypeError("Invalid direction: "+P);if(P===S[0])b($,_);else if(P===S[1])b($,_),$.right2left();else if(P===S[2])b($,_);else if(P===S[3])b($,_),$.bottom2top();else if(P===S[4]||P===S[5]){var D=C($,_),H=D.left,Y=D.right;b(H,_),b(Y,_),_.isHorizontal?H.right2left():H.bottom2top(),Y.translate(H.x-Y.x,H.y-Y.y),$.x=H.x,$.y=Y.y;var et=$.getBoundingBox();_.isHorizontal?et.top<0&&$.translate(0,-et.top):et.left<0&&$.translate(-et.left,0)}var jt=_.fixedRoot;return jt===void 0&&(jt=!0),jt&&$.translate(-($.x+$.width/2+$.hgap),-($.y+$.height/2+$.vgap)),A($,_),$};function A($,_){if(_.radial){var b=_.isHorizontal?["x","y"]:["y","x"],P=b[0],D=b[1],H={x:1/0,y:1/0},Y={x:-1/0,y:-1/0},et=0;$.DFTraverse(function(ft){et++;var Dt=ft.x,tt=ft.y;H.x=Math.min(H.x,Dt),H.y=Math.min(H.y,tt),Y.x=Math.max(Y.x,Dt),Y.y=Math.max(Y.y,tt)});var jt=Y[D]-H[D];if(jt===0)return;var ot=Math.PI*2/et;$.DFTraverse(function(ft){var Dt=(ft[D]-H[D])/jt*(Math.PI*2-ot)+ot,tt=ft[P]-$[P];ft.x=Math.cos(Dt)*tt,ft.y=Math.sin(Dt)*tt})}}},function(ct,y,T){var C=T(0),S=18,F=S*2,R=S,L={getId:function(b){return b.id||b.name},getPreH:function(b){return b.preH||0},getPreV:function(b){return b.preV||0},getHGap:function(b){return b.hgap||R},getVGap:function(b){return b.vgap||R},getChildren:function(b){return b.children},getHeight:function(b){return b.height||F},getWidth:function(b){var P=b.label||" ";return b.width||P.split("").length*S}};function A(_,b){var P=this;if(P.vgap=P.hgap=0,_ instanceof A)return _;P.data=_;var D=b.getHGap(_),H=b.getVGap(_);return P.preH=b.getPreH(_),P.preV=b.getPreV(_),P.width=b.getWidth(_),P.height=b.getHeight(_),P.width+=P.preH,P.height+=P.preV,P.id=b.getId(_),P.x=P.y=0,P.depth=0,P.children||(P.children=[]),P.addGap(D,H),P}C.assign(A.prototype,{isRoot:function(){return this.depth===0},isLeaf:function(){return this.children.length===0},addGap:function(b,P){var D=this;D.hgap+=b,D.vgap+=P,D.width+=2*b,D.height+=2*P},eachNode:function(b){for(var P=this,D=[P],H;H=D.shift();)b(H),D=H.children.concat(D)},DFTraverse:function(b){this.eachNode(b)},BFTraverse:function(b){for(var P=this,D=[P],H;H=D.shift();)b(H),D=D.concat(H.children)},getBoundingBox:function(){var b={left:Number.MAX_VALUE,top:Number.MAX_VALUE,width:0,height:0};return this.eachNode(function(P){b.left=Math.min(b.left,P.x),b.top=Math.min(b.top,P.y),b.width=Math.max(b.width,P.x+P.width),b.height=Math.max(b.height,P.y+P.height)}),b},translate:function(b,P){b===void 0&&(b=0),P===void 0&&(P=0),this.eachNode(function(D){D.x+=b,D.y+=P,D.x+=D.preH,D.y+=D.preV})},right2left:function(){var b=this,P=b.getBoundingBox();b.eachNode(function(D){D.x=D.x-(D.x-P.left)*2-D.width}),b.translate(P.width,0)},bottom2top:function(){var b=this,P=b.getBoundingBox();b.eachNode(function(D){D.y=D.y-(D.y-P.top)*2-D.height}),b.translate(0,P.height)}});function $(_,b,P){b===void 0&&(b={}),b=C.assign({},L,b);var D=new A(_,b),H=[D],Y;if(!P&&!_.collapsed){for(;Y=H.shift();)if(!Y.data.collapsed){var et=b.getChildren(Y.data),jt=et?et.length:0;if(Y.children=new Array(jt),et&&jt)for(var ot=0;otG.low&&(G=G.nxt);var Pe=Rt+rt.prelim+rt.w-($t+At.prelim);Pe>0&&($t+=Pe,H(w,K,G.index,Pe));var Xt=jt(rt),ne=jt(At);Xt<=ne&&(rt=et(rt),rt!==null&&(Rt+=rt.mod)),Xt>=ne&&(At=Y(At),At!==null&&($t+=At.mod))}!rt&&At?ot(w,K,At,$t):rt&&!At&&ft(w,K,rt,Rt)}function H(w,K,G,rt){w.c[K].mod+=rt,w.c[K].msel+=rt,w.c[K].mser+=rt,Q(w,K,G,rt)}function Y(w){return w.cs===0?w.tl:w.c[0]}function et(w){return w.cs===0?w.tr:w.c[w.cs-1]}function jt(w){return w.y+w.h}function ot(w,K,G,rt){var Rt=w.c[0].el;Rt.tl=G;var At=rt-G.mod-w.c[0].msel;Rt.mod+=At,Rt.prelim-=At,w.c[0].el=w.c[K].el,w.c[0].msel=w.c[K].msel}function ft(w,K,G,rt){var Rt=w.c[K].er;Rt.tr=G;var At=rt-G.mod-w.c[K].mser;Rt.mod+=At,Rt.prelim-=At,w.c[K].er=w.c[K-1].er,w.c[K].mser=w.c[K-1].mser}function Dt(w){w.prelim=(w.c[0].prelim+w.c[0].mod+w.c[w.cs-1].mod+w.c[w.cs-1].prelim+w.c[w.cs-1].w)/2-w.w/2}function tt(w,K){K+=w.mod,w.x=w.prelim+K,M(w);for(var G=0;G=G.low;)G=G.nxt;return{low:w,index:K,nxt:G}}L(A,_);var I=T.fromNode(A,_);return b(I),tt(I,0),R(I,A,_),F(A,_),A}},function(ct,y,T){function C(P,D){P.prototype=Object.create(D.prototype),P.prototype.constructor=P,S(P,D)}function S(P,D){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(H,Y){return H.__proto__=Y,H},S(P,D)}var F=T(1),R=T(9),L=T(2),A=T(0),$=function(P){function D(){return P.apply(this,arguments)||this}C(D,P);var H=D.prototype;return H.execute=function(){var et=this;return et.rootNode.width=0,L(et.rootNode,et.options,R)},D}(F),_={};function b(P,D){return D=A.assign({},_,D),new $(P,D).execute()}ct.exports=b},function(ct,y,T){var C=T(0);function S(L,A){L===void 0&&(L=0),A===void 0&&(A=[]);var $=this;$.x=$.y=0,$.leftChild=$.rightChild=null,$.height=0,$.children=A}var F={isHorizontal:!0,nodeSep:20,nodeSize:20,rankSep:200,subTreeSep:10};function R(L,A,$){$?(A.x=L.x,A.y=L.y):(A.x=L.y,A.y=L.x),L.children.forEach(function(_,b){R(_,A.children[b],$)})}ct.exports=function(L,A){A===void 0&&(A={}),A=C.assign({},F,A);var $=0;function _(Y){if(!Y)return null;Y.width=0,Y.depth&&Y.depth>$&&($=Y.depth);var et=Y.children,jt=et.length,ot=new S(Y.height,[]);return et.forEach(function(ft,Dt){var tt=_(ft);ot.children.push(tt),Dt===0&&(ot.leftChild=tt),Dt===jt-1&&(ot.rightChild=tt)}),ot.originNode=Y,ot.isLeaf=Y.isLeaf(),ot}function b(Y){if(Y.isLeaf||Y.children.length===0)Y.drawingDepth=$;else{var et=Y.children.map(function(ot){return b(ot)}),jt=Math.min.apply(null,et);Y.drawingDepth=jt-1}return Y.drawingDepth}var P;function D(Y){Y.x=Y.drawingDepth*A.rankSep,Y.isLeaf?(Y.y=0,P&&(Y.y=P.y+P.height+A.nodeSep,Y.originNode.parent!==P.originNode.parent&&(Y.y+=A.subTreeSep)),P=Y):(Y.children.forEach(function(et){D(et)}),Y.y=(Y.leftChild.y+Y.rightChild.y)/2)}var H=_(L);return b(H),D(H),R(H,L,A.isHorizontal),L}},function(ct,y,T){function C(H,Y){H.prototype=Object.create(Y.prototype),H.prototype.constructor=H,S(H,Y)}function S(H,Y){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(et,jt){return et.__proto__=jt,et},S(H,Y)}var F=T(1),R=T(11),L=T(4),A=T(0),$=["LR","RL","H"],_=$[0],b=function(H){function Y(){return H.apply(this,arguments)||this}C(Y,H);var et=Y.prototype;return et.execute=function(){var ot=this,ft=ot.options,Dt=ot.rootNode;ft.isHorizontal=!0;var tt=ft.indent,Q=tt===void 0?20:tt,M=ft.dropCap,v=M===void 0?!0:M,I=ft.direction,w=I===void 0?_:I,K=ft.align;if(w&&$.indexOf(w)===-1)throw new TypeError("Invalid direction: "+w);if(w===$[0])R(Dt,Q,v,K);else if(w===$[1])R(Dt,Q,v,K),Dt.right2left();else if(w===$[2]){var G=L(Dt,ft),rt=G.left,Rt=G.right;R(rt,Q,v,K),rt.right2left(),R(Rt,Q,v,K);var At=rt.getBoundingBox();Rt.translate(At.width,0),Dt.x=Rt.x-Dt.width/2}return Dt},Y}(F),P={};function D(H,Y){return Y=A.assign({},P,Y),new b(H,Y).execute()}ct.exports=D},function(ct,y,T){var C=T(0);function S(F,R,L,A,$){var _=(typeof L=="function"?L(F):L)*F.depth;if(!A)try{if(F.id===F.parent.children[0].id){F.x+=_,F.y=R?R.y:0;return}}catch(D){}if(F.x+=_,R){if(F.y=R.y+C.getHeight(R,F,$),R.parent&&F.parent.id!==R.parent.id){var b=R.parent,P=b.y+C.getHeight(b,F,$);F.y=P>F.y?P:F.y}}else F.y=0}ct.exports=function(F,R,L,A){var $=null;F.eachNode(function(_){S(_,$,R,L,A),$=_})}},function(ct,y,T){function C(P,D){P.prototype=Object.create(D.prototype),P.prototype.constructor=P,S(P,D)}function S(P,D){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(H,Y){return H.__proto__=Y,H},S(P,D)}var F=T(1),R=T(13),L=T(2),A=T(0),$=function(P){function D(){return P.apply(this,arguments)||this}C(D,P);var H=D.prototype;return H.execute=function(){var et=this;return L(et.rootNode,et.options,R)},D}(F),_={};function b(P,D){return D=A.assign({},_,D),new $(P,D).execute()}ct.exports=b},function(ct,y,T){var C=T(0);function S(L,A){var $=0;return L.children.length?L.children.forEach(function(_){$+=S(_,A)}):$=L.height,L._subTreeSep=A.getSubTreeSep(L.data),L.totalHeight=Math.max(L.height,$)+2*L._subTreeSep,L.totalHeight}function F(L){var A=L.children,$=A.length;if($){A.forEach(function(Y){F(Y)});var _=A[0],b=A[$-1],P=b.y-_.y+b.height,D=0;if(A.forEach(function(Y){D+=Y.totalHeight}),P>L.height)L.y=_.y+P/2-L.height/2;else if(A.length!==1||L.height>D){var H=L.y+(L.height-P)/2-_.y;A.forEach(function(Y){Y.translate(0,H)})}else L.y=(_.y+_.height/2+b.y+b.height/2)/2-L.height/2}}var R={getSubTreeSep:function(){return 0}};ct.exports=function(L,A){A===void 0&&(A={}),A=C.assign({},R,A),L.parent={x:0,width:0,height:0,y:0},L.BFTraverse(function($){$.x=$.parent.x+$.parent.width}),L.parent=null,S(L,A),L.startY=0,L.y=L.totalHeight/2-L.height/2,L.eachNode(function($){var _=$.children,b=_.length;if(b){var P=_[0];if(P.startY=$.startY+$._subTreeSep,b===1)P.y=$.y+$.height/2-P.height/2;else{P.y=P.startY+P.totalHeight/2-P.height/2;for(var D=1;Do.length)&&(t=o.length);for(var e=0,n=Array(t);e0&&arguments[0]!==void 0?arguments[0]:"",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"rgba(255, 255, 255, 1)";return b(this,t),e=_(this,t,[new G.SpriteMaterial]),e._text="".concat(n),e._textHeight=i,e._color=s,e._backgroundColor=!1,e._padding=0,e._borderWidth=0,e._borderRadius=0,e._borderColor="white",e._offsetX=0,e._offsetY=0,e._strokeWidth=0,e._strokeColor="white",e._fontFace="system-ui",e._fontSize=90,e._fontWeight="normal",e._canvas=document.createElement("canvas"),e._genCanvas(),e}return Y(t,o),D(t,[{key:"text",get:function(){return this._text},set:function(n){this._text=n,this._genCanvas()}},{key:"textHeight",get:function(){return this._textHeight},set:function(n){this._textHeight=n,this._genCanvas()}},{key:"color",get:function(){return this._color},set:function(n){this._color=n,this._genCanvas()}},{key:"backgroundColor",get:function(){return this._backgroundColor},set:function(n){this._backgroundColor=n,this._genCanvas()}},{key:"padding",get:function(){return this._padding},set:function(n){this._padding=n,this._genCanvas()}},{key:"borderWidth",get:function(){return this._borderWidth},set:function(n){this._borderWidth=n,this._genCanvas()}},{key:"borderRadius",get:function(){return this._borderRadius},set:function(n){this._borderRadius=n,this._genCanvas()}},{key:"borderColor",get:function(){return this._borderColor},set:function(n){this._borderColor=n,this._genCanvas()}},{key:"offsetX",get:function(){return this._offsetX},set:function(n){this._offsetX=n,this._genCanvas()}},{key:"offsetY",get:function(){return this._offsetY},set:function(n){this._offsetY=n,this._genCanvas()}},{key:"fontFace",get:function(){return this._fontFace},set:function(n){this._fontFace=n,this._genCanvas()}},{key:"fontSize",get:function(){return this._fontSize},set:function(n){this._fontSize=n,this._genCanvas()}},{key:"fontWeight",get:function(){return this._fontWeight},set:function(n){this._fontWeight=n,this._genCanvas()}},{key:"strokeWidth",get:function(){return this._strokeWidth},set:function(n){this._strokeWidth=n,this._genCanvas()}},{key:"strokeColor",get:function(){return this._strokeColor},set:function(n){this._strokeColor=n,this._genCanvas()}},{key:"_genCanvas",value:function(){var n=this,i=this._canvas,s=i.getContext("2d"),r=1/this.textHeight,a=Array.isArray(this.borderWidth)?this.borderWidth:[this.borderWidth,this.borderWidth],l=a.map(function(q){return q*n.fontSize*r}),c=Array.isArray(this.borderRadius)?this.borderRadius:[this.borderRadius,this.borderRadius,this.borderRadius,this.borderRadius],d=c.map(function(q){return q*n.fontSize*r}),u=Array.isArray(this.padding)?this.padding:[this.padding,this.padding],h=u.map(function(q){return q*n.fontSize*r}),f=[this.offsetX,this.offsetY].map(function(q){return q*n.fontSize*r}),g=this.text.split(` `),p="".concat(this.fontWeight," ").concat(this.fontSize,"px ").concat(this.fontFace);s.font=p;var m=Math.max.apply(Math,v(g.map(function(q){return s.measureText(q).width}))),E=this.fontSize*g.length,x=m+l[0]*2+h[0]*2,O=E+l[1]*2+h[1]*2;if(i.width=x+Math.abs(f[0]),i.height=O+Math.abs(f[1]),s.translate.apply(s,v(f.map(function(q){return Math.max(0,q)}))),this.borderWidth){if(s.strokeStyle=this.borderColor,l[0]){var j=l[0]/2;s.lineWidth=l[0],s.beginPath(),s.moveTo(j,d[0]),s.lineTo(j,O-d[3]),s.moveTo(x-j,d[1]),s.lineTo(x-j,O-d[2]),s.stroke()}if(l[1]){var X=l[1]/2;s.lineWidth=l[1],s.beginPath(),s.moveTo(Math.max(l[0],d[0]),X),s.lineTo(x-Math.max(l[0],d[1]),X),s.moveTo(Math.max(l[0],d[3]),O-X),s.lineTo(x-Math.max(l[0],d[2]),O-X),s.stroke()}if(this.borderRadius){var U=Math.max.apply(Math,v(l)),V=U/2;s.lineWidth=U,s.beginPath(),[!!d[0]&&[d[0],V,V,d[0]],!!d[1]&&[x-d[1],x-V,V,d[1]],!!d[2]&&[x-d[2],x-V,O-V,O-d[2]],!!d[3]&&[d[3],V,O-V,O-d[3]]].filter(function(q){return q}).forEach(function(q){var Lt=M(q,4),Nt=Lt[0],Tt=Lt[1],St=Lt[2],kt=Lt[3];s.moveTo(Nt,St),s.quadraticCurveTo(Tt,St,Tt,kt)}),s.stroke()}}this.backgroundColor&&(s.fillStyle=this.backgroundColor,this.borderRadius?(s.beginPath(),s.moveTo(l[0],d[0]),[[l[0],d[0],x-d[1],l[1],l[1],l[1]],[x-l[0],x-l[0],x-l[0],l[1],d[1],O-d[2]],[x-l[0],x-d[2],d[3],O-l[1],O-l[1],O-l[1]],[l[0],l[0],l[0],O-l[1],O-d[3],d[0]]].forEach(function(q){var Lt=M(q,6),Nt=Lt[0],Tt=Lt[1],St=Lt[2],kt=Lt[3],rn=Lt[4],pt=Lt[5];s.quadraticCurveTo(Nt,kt,Tt,rn),s.lineTo(St,pt)}),s.closePath(),s.fill()):s.fillRect(l[0],l[1],x-l[0]*2,O-l[1]*2)),s.translate.apply(s,v(l)),s.translate.apply(s,v(h)),s.font=p,s.fillStyle=this.color,s.textBaseline="bottom";var k=this.strokeWidth>0;k&&(s.lineWidth=this.strokeWidth*this.fontSize/10,s.strokeStyle=this.strokeColor),g.forEach(function(q,Lt){var Nt=(m-s.measureText(q).width)/2,Tt=(Lt+1)*n.fontSize;k&&s.strokeText(q,Nt,Tt),s.fillText(q,Nt,Tt)}),this.material.map&&this.material.map.dispose();var yt=this.material.map=new G.CanvasTexture(i);yt.colorSpace=G.SRGBColorSpace;var zt=this.textHeight*g.length+a[1]*2+u[1]*2+Math.abs(this.offsetY);this.scale.set(zt*i.width/i.height,zt,0)}},{key:"clone",value:function(){return new this.constructor(this.text,this.textHeight,this.color).copy(this)}},{key:"copy",value:function(n){return G.Sprite.prototype.copy.call(this,n),this.color=n.color,this.backgroundColor=n.backgroundColor,this.padding=n.padding,this.borderWidth=n.borderWidth,this.borderColor=n.borderColor,this.offsetX=n.offsetX,this.offsetY=n.offsetY,this.fontFace=n.fontFace,this.fontSize=n.fontSize,this.fontWeight=n.fontWeight,this.strokeWidth=n.strokeWidth,this.strokeColor=n.strokeColor,this}}])}(G.Sprite),Rt=y(78241),At=y(3113),$t=y(8591),Pe=y(43418),Xt=y(5112),ne=y(92832),Et=y(57809),lt=y(63823),Mt=y(22972),Ot=y(68911),wt={rightopen:"rightopen___cs_vm",rightmodal:"rightmodal___MNsxT",rname:"rname___QGxLy",topradios:"topradios___si9En",topradio:"topradio___kGT57",bocent:"bocent___yMEuU",bctitle:"bctitle___Pll_D",btcent:"btcent___aHH1B",bctitles:"bctitles___UC1Yp"},nt=y(66623),Kt=y(18178),It=y(76075),xt=y(62099),dt=y(93785);const Oe={duration:500},Ye={duration:1e3,easing:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",iterations:1,fill:"both"},Ce={CHANGE:"change"};var pe;(function(o){o.NodeAdded="NodeAdded",o.NodeUpdated="NodeUpdated",o.NodeRemoved="NodeRemoved",o.EdgeAdded="EdgeAdded",o.EdgeUpdated="EdgeUpdated",o.EdgeRemoved="EdgeRemoved",o.ComboAdded="ComboAdded",o.ComboUpdated="ComboUpdated",o.ComboRemoved="ComboRemoved"})(pe||(pe={}));var be;(function(o){o.DRAW="draw",o.COLLAPSE="collapse",o.EXPAND="expand",o.TRANSFORM="transform"})(be||(be={}));var oe;(function(o){o.CLICK="canvas:click",o.DBLCLICK="canvas:dblclick",o.POINTER_OVER="canvas:pointerover",o.POINTER_LEAVE="canvas:pointerleave",o.POINTER_ENTER="canvas:pointerenter",o.POINTER_MOVE="canvas:pointermove",o.POINTER_OUT="canvas:pointerout",o.POINTER_DOWN="canvas:pointerdown",o.POINTER_UP="canvas:pointerup",o.CONTEXT_MENU="canvas:contextmenu",o.DRAG_START="canvas:dragstart",o.DRAG="canvas:drag",o.DRAG_END="canvas:dragend",o.DRAG_ENTER="canvas:dragenter",o.DRAG_OVER="canvas:dragover",o.DRAG_LEAVE="canvas:dragleave",o.DROP="canvas:drop",o.WHEEL="canvas:wheel"})(oe||(oe={}));var J;(function(o){o.CLICK="combo:click",o.DBLCLICK="combo:dblclick",o.POINTER_OVER="combo:pointerover",o.POINTER_LEAVE="combo:pointerleave",o.POINTER_ENTER="combo:pointerenter",o.POINTER_MOVE="combo:pointermove",o.POINTER_OUT="combo:pointerout",o.POINTER_DOWN="combo:pointerdown",o.POINTER_UP="combo:pointerup",o.CONTEXT_MENU="combo:contextmenu",o.DRAG_START="combo:dragstart",o.DRAG="combo:drag",o.DRAG_END="combo:dragend",o.DRAG_ENTER="combo:dragenter",o.DRAG_OVER="combo:dragover",o.DRAG_LEAVE="combo:dragleave",o.DROP="combo:drop"})(J||(J={}));var B;(function(o){o.CLICK="click",o.DBLCLICK="dblclick",o.POINTER_OVER="pointerover",o.POINTER_LEAVE="pointerleave",o.POINTER_ENTER="pointerenter",o.POINTER_MOVE="pointermove",o.POINTER_OUT="pointerout",o.POINTER_DOWN="pointerdown",o.POINTER_UP="pointerup",o.CONTEXT_MENU="contextmenu",o.DRAG_START="dragstart",o.DRAG="drag",o.DRAG_END="dragend",o.DRAG_ENTER="dragenter",o.DRAG_OVER="dragover",o.DRAG_LEAVE="dragleave",o.DROP="drop",o.KEY_DOWN="keydown",o.KEY_UP="keyup",o.WHEEL="wheel"})(B||(B={}));var gt;(function(o){o.KEY_DOWN="keydown",o.KEY_UP="keyup"})(gt||(gt={}));var at;(function(o){o.CLICK="edge:click",o.DBLCLICK="edge:dblclick",o.POINTER_OVER="edge:pointerover",o.POINTER_LEAVE="edge:pointerleave",o.POINTER_ENTER="edge:pointerenter",o.POINTER_MOVE="edge:pointermove",o.POINTER_OUT="edge:pointerout",o.POINTER_DOWN="edge:pointerdown",o.POINTER_UP="edge:pointerup",o.CONTEXT_MENU="edge:contextmenu",o.DRAG_ENTER="edge:dragenter",o.DRAG_OVER="edge:dragover",o.DRAG_LEAVE="edge:dragleave",o.DROP="edge:drop"})(at||(at={}));var W;(function(o){o.BEFORE_CANVAS_INIT="beforecanvasinit",o.AFTER_CANVAS_INIT="aftercanvasinit",o.BEFORE_SIZE_CHANGE="beforesizechange",o.AFTER_SIZE_CHANGE="aftersizechange",o.BEFORE_ELEMENT_CREATE="beforeelementcreate",o.AFTER_ELEMENT_CREATE="afterelementcreate",o.BEFORE_ELEMENT_UPDATE="beforeelementupdate",o.AFTER_ELEMENT_UPDATE="afterelementupdate",o.BEFORE_ELEMENT_DESTROY="beforeelementdestroy",o.AFTER_ELEMENT_DESTROY="afterelementdestroy",o.BEFORE_ELEMENT_TRANSLATE="beforeelementtranslate",o.AFTER_ELEMENT_TRANSLATE="afterelementtranslate",o.BEFORE_DRAW="beforedraw",o.AFTER_DRAW="afterdraw",o.BEFORE_RENDER="beforerender",o.AFTER_RENDER="afterrender",o.BEFORE_ANIMATE="beforeanimate",o.AFTER_ANIMATE="afteranimate",o.BEFORE_LAYOUT="beforelayout",o.AFTER_LAYOUT="afterlayout",o.BEFORE_STAGE_LAYOUT="beforestagelayout",o.AFTER_STAGE_LAYOUT="afterstagelayout",o.BEFORE_TRANSFORM="beforetransform",o.AFTER_TRANSFORM="aftertransform",o.BATCH_START="batchstart",o.BATCH_END="batchend",o.BEFORE_DESTROY="beforedestroy",o.AFTER_DESTROY="afterdestroy",o.BEFORE_RENDERER_CHANGE="beforerendererchange",o.AFTER_RENDERER_CHANGE="afterrendererchange"})(W||(W={}));var mt;(function(o){o.UNDO="undo",o.REDO="redo",o.CANCEL="cancel",o.ADD="add",o.CLEAR="clear",o.CHANGE="change"})(mt||(mt={}));var vt;(function(o){o.CLICK="node:click",o.DBLCLICK="node:dblclick",o.POINTER_OVER="node:pointerover",o.POINTER_LEAVE="node:pointerleave",o.POINTER_ENTER="node:pointerenter",o.POINTER_MOVE="node:pointermove",o.POINTER_OUT="node:pointerout",o.POINTER_DOWN="node:pointerdown",o.POINTER_UP="node:pointerup",o.CONTEXT_MENU="node:contextmenu",o.DRAG_START="node:dragstart",o.DRAG="node:drag",o.DRAG_END="node:dragend",o.DRAG_ENTER="node:dragenter",o.DRAG_OVER="node:dragover",o.DRAG_LEAVE="node:dragleave",o.DROP="node:drop"})(vt||(vt={}));const st="combo",Pt="tree";var ht;(function(o){o.NODE="node",o.EDGE="edge",o.COMBO="combo",o.THEME="theme",o.PALETTE="palette",o.LAYOUT="layout",o.BEHAVIOR="behavior",o.PLUGIN="plugin",o.ANIMATION="animation",o.TRANSFORM="transform",o.SHAPE="shape"})(ht||(ht={}));const Vt={animation:{},behavior:{},combo:{},edge:{},layout:{},node:{},palette:{},theme:{},plugin:{},transform:{},shape:{}};function bt(o,t){var e;const n=(e=Vt[o])===null||e===void 0?void 0:e[t];if(n)return n}function Yt(o){return EXTENSION_REGISTRY[o]}const _t="5.0.27",Qt="G6";function Zt(o){return`[${Qt} v${_t}] ${o}`}const Wt={mute:!1,debug:o=>{!Wt.mute&&console.debug(Zt(o))},info:o=>{!Wt.mute&&console.info(Zt(o))},warn:o=>{!Wt.mute&&console.warn(Zt(o))},error:o=>{!Wt.mute&&console.error(Zt(o))}};function ue(o){const{theme:t}=o;if(!t)return{};const e=bt(ht.THEME,t);return e||(Wt.warn(`The theme of ${t} is not registered.`),{})}function se(o,t){if(Array.isArray(o)&&o.length===0)return null;const e=Array.isArray(o)?o[0]:o,n=Array.isArray(o)?o.slice(1):t||[];return new Proxy(e,{get(i,s){return typeof i[s]=="function"&&!["onframe","onfinish"].includes(s)?(...r)=>{i[s](...r),n.forEach(a=>{var l;return(l=a[s])===null||l===void 0?void 0:l.call(a,...r)})}:s==="finished"?Promise.all([e.finished,...n.map(r=>r.finished)]):Reflect.get(i,s)},set(i,s,r){return["onframe","onfinish"].includes(s)||n.forEach(a=>{a[s]=r}),Reflect.set(i,s,r)}})}function We(o){const t=o.reduce((n,i)=>(Object.entries(i).forEach(([s,r])=>{n[s]===void 0?n[s]=[r]:n[s].push(r)}),n),{});Object.entries(t).forEach(([n,i])=>{(i.length!==o.length||i.some(s=>(0,It.Z)(s))||i.every(s=>!["sourceNode","targetNode","childrenNode"].includes(n)&&(0,xt.Z)(s,i[0])))&&delete t[n]});const e=Object.entries(t).reduce((n,[i,s])=>(s.forEach((r,a)=>{n[a]?n[a][i]=r:n[a]={[i]:r}}),n),[]);return o.length!==0&&e.length===0&&e.push({_:0},{_:0}),e}function He(o){switch(o){case"opacity":return 1;case"x":case"y":case"z":case"zIndex":return 0;case"visibility":return"visible";case"collapsed":return!1;case"states":return[];default:return}}function pn(o,t){const{animation:e}=o;if(e===!1||t===!1)return!1;const n=Object.assign({},Oe);return(0,dt.Z)(e)&&Object.assign(n,e),(0,dt.Z)(t)&&Object.assign(n,t),n}function In(o){if(typeof o=="string"){const t=bt(ht.ANIMATION,o);return t||(Wt.warn(`The animation of ${o} is not registered.`),[])}return o}function en(o,t,e,n){var i,s;const{animation:r}=o,a=(i=o==null?void 0:o[t])===null||i===void 0?void 0:i.animation;if(a===!1)return[];const l=a==null?void 0:a[e];if(l===!1)return[];if(r===!1||n===!1)return[];const c=(s=ue(o)[t])===null||s===void 0?void 0:s.animation,d=(h=[])=>In(h).map(f=>Object.assign(Object.assign(Object.assign(Object.assign({},Ye),(0,dt.Z)(r)&&r),f),(0,dt.Z)(n)&&n));if(l)return d(l);if(!c)return[];const u=c[e];return u===!1?[]:d(u)}function Cn(o,t,e,n){if(Array.isArray(n)){let s=!1;const r=n.map(a=>a[0]==="translate"?(s=!0,["translate",o,t]):a[0]==="translate3d"?(s=!0,["translate3d",o,t,e]):a);return s||r.splice(0,0,e===0?["translate",o,t]:["translate3d",o,t,e]),r}const i=n?n.replace(/translate(3d)?\([^)]*\)/g,""):"";return e===0?`translate(${o}, ${t})${i}`:`translate3d(${o}, ${t}, ${e})${i}`}var mn=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i{if(!e.length)return null;const[n,i]=t,s=c=>{var d;if(c){const u=o.getShape(c);if(!u)return null;const h=`get${(0,Kt.Z)(c)}Style`,f=((d=o==null?void 0:o[h])===null||d===void 0?void 0:d.bind(o))||(m=>m),g=(f==null?void 0:f(n))||{},p=(f==null?void 0:f(i))||{};return{shape:u,fromStyle:g,toStyle:p}}else return{shape:o,fromStyle:n,toStyle:i}};let r;const a=e.map(c=>{var{fields:d,shape:u,states:h}=c,f=mn(c,["fields","shape","states"]);const g=s(u);if(!g)return null;const{shape:p,fromStyle:m,toStyle:E}=g,x=[{},{}];if(d.forEach(j=>{var X,U;Object.assign(x[0],{[j]:(X=m[j])!==null&&X!==void 0?X:He(j)}),Object.assign(x[1],{[j]:(U=E[j])!==null&&U!==void 0?U:He(j)})}),x.some(j=>Object.keys(j).some(X=>["x","y","z"].includes(X)))){const{x:j=0,y:X=0,z:U=0,transform:V=""}=p.attributes||{};x.forEach(k=>{k.transform=Cn(k.x||j,k.y||X,k.z||U,V)})}const O=p.animate(We(x),f);return u===void 0&&(r=O),O}).filter(Boolean),l=r||(a==null?void 0:a[0]);return l?se(l,a.filter(c=>c!==c)):null},Bn=[{fields:["opacity"]}],Xn=[{fields:["x","y"]}],An=[{fields:["x","y"]}],ri=An,ci=[{fields:["sourceNode","targetNode"]}],Fn=ci,ei=[{fields:["childrenNode","x","y"]}],_n=ei,ni=[{fields:["childrenNode","x","y"]}];var Ht=y(71018),Pn=y(15610),ii=y(62199),vn=y(37547);function di(o){return"source"in o&&"target"in o}function Mi(o){return o.length===2}function Ri(o){return o.length===3}function gi(o){return o instanceof Float32Array?!0:Array.isArray(o)&&(o.length===2||o.length===3)?o.every(t=>typeof t=="number"):!1}function Ge(o,t,e){return o>=t&&o<=e}function me(o=0){if(Array.isArray(o)){const[t=0,e=t,n=t,i=e]=o;return[t,e,n,i]}return[o,o,o,o]}function cn(o=0){const t=me(o);return t[0]+t[2]}function Dn(o=0){const t=me(o);return t[1]+t[3]}function fn(o){return o.max[0]-o.min[0]}function dn(o){return o.max[1]-o.min[1]}function Z(o){return[fn(o),dn(o)]}function N(o,t){const e=gi(o)?ut(o):o.getShape("key").getBounds();return t?it(e,t):e}function ut(o){const[t,e,n=0]=o,i=new nt.mN;return i.setMinMax([t,e,n],[t,e,n]),i}function it(o,t){const[e,n,i,s]=me(t),[r,a,l]=o.min,[c,d,u]=o.max,h=new nt.mN;return h.setMinMax([r-s,a-e,l],[c+n,d+i,u]),h}function Ft(o){if(o.length===0)return new nt.mN;if(o.length===1)return o[0];const t=new nt.mN;t.setMinMax(o[0].min,o[0].max);for(let e=1;e=r&&i<=l&&n>=a&&s<=c}function Bt(o,t){return Ge(o[0],t.min[0],t.max[0])&&Ge(o[1],t.min[1],t.max[1])}function Jt(o,t,e=!1){const{min:[n,i],max:[s,r]}=t,a=(o[1]===i||o[1]===r)&&(e||Ge(o[0],n,s)),l=(o[0]===n||o[0]===s)&&(e||Ge(o[1],i,r));return a||l}function ie(o,t){return!Bt(o,t)}function ce(o,t){const{center:e}=t;return o[0]===e[0]&&o[1]===e[1]}function ye(o,t){const[e,n]=o,[i,s]=t.min,[r,a]=t.max,l=e-i,c=r-e,d=n-s,u=a-n,h=Math.min(l,c,d,u);return h===l?"left":h===c?"right":h===d?"top":h===u?"bottom":"left"}function te(o,t){const e=(0,vn.Z)(o);if(Bt(o,t))switch(ye(o,t)){case"left":e[0]=t.min[0];break;case"right":e[0]=t.max[0];break;case"top":e[1]=t.min[1];break;case"bottom":e[1]=t.max[1];break}else{const[n,i]=o,[s,r]=t.min,[a,l]=t.max;e[0]=Ge(n,s,a)?n:n{var n;switch(e.type){case"degree":{const i=new Map;return(n=o.nodes)===null||n===void 0||n.forEach(s=>{const r=t(z(s),e.direction).length;i.set(z(s),r)}),i}case"betweenness":return Ze(o,e.directed,e.weightPropertyName);case"closeness":return Ie(o,e.directed,e.weightPropertyName);case"eigenvector":return qt(o,e.directed);case"pagerank":return Mn(o,e.epsilon,e.linkProb);default:return Sn(o)}},Sn=o=>{var t;const e=new Map;return(t=o.nodes)===null||t===void 0||t.forEach(n=>{e.set(z(n),0)}),e},Ze=(o,t,e)=>{const n=Sn(o),{nodes:i=[]}=o;return i.forEach(s=>{i.forEach(r=>{if(s!==r){const{allPath:a}=(0,ze.ni)(o,z(s),z(r),t,e),l=a.length;a.flat().forEach(c=>{c!==z(s)&&c!==z(r)&&n.set(c,n.get(c)+1/l)})}})}),n},Ie=(o,t,e)=>{const n=new Map,{nodes:i=[]}=o;return i.forEach(s=>{const r=i.reduce((a,l)=>{if(s!==l){const{length:c}=(0,ze.ni)(o,z(s),z(l),t,e);a+=c}return a},0);n.set(z(s),1/r)}),n},Mn=(o,t,e)=>{var n;const i=new Map,s=(0,ze.EF)(o,t,e);return(n=o.nodes)===null||n===void 0||n.forEach(r=>{i.set(z(r),s[z(r)])}),i},qt=(o,t)=>{const{nodes:e=[]}=o,n=he(o,t),i=xe(n,e.length),s=new Map;return e.forEach((r,a)=>{s.set(z(r),i[a])}),s},he=(o,t)=>{const{nodes:e=[],edges:n=[]}=o,i=Array(e.length).fill(null).map(()=>Array(e.length).fill(0));return n.forEach(({source:s,target:r})=>{const a=e.findIndex(c=>z(c)===s),l=e.findIndex(c=>z(c)===r);t?i[a][l]=1:(i[a][l]=1,i[l][a]=1)}),i},xe=(o,t,e=100,n=1e-6)=>{let i=Array(t).fill(1),s=1/0;for(let r=0;rn;r++){const a=Array(t).fill(0);for(let c=0;cc+d*d,0));for(let c=0;cc+(d-i[u])*d,0)),i=a}return i};function Te(o,t,e,n=xt.Z){const i=new Map(o.map(h=>[e(h),h])),s=new Map(t.map(h=>[e(h),h])),r=new Set(i.keys()),a=new Set(s.keys()),l=[],c=[],d=[],u=[];return a.forEach(h=>{r.has(h)?n(i.get(h),s.get(h))?u.push(s.get(h)):c.push(s.get(h)):l.push(s.get(h))}),r.forEach(h=>{a.has(h)||d.push(i.get(h))}),{enter:l,exit:d,keep:u,update:c}}const un=new WeakMap;function gn(o,t,e=!1,n){if(t===void 0)return;const i=(s,r=t)=>{const a=(l=r)=>s.childNodes.forEach(c=>i(c,l));if(n&&!n(s))return a();if(!e&&s===o)o.style.visibility=t,un.delete(o),a(t);else{un.has(s)||un.set(s,s.style.visibility);const l=r==="hidden"||yn(s)==="hidden"?"hidden":"visible";s.style.visibility=l,a(l)}};i(o)}function yn(o){return un.has(o)?un.get(o):o.style.visibility}function Tn(o,t,e){const n={},i=s=>(s in n||(n[s]=0),`${t}-${s}-${n[s]++}`);return e.map(s=>typeof s=="string"?{type:s,key:i(s)}:typeof s=="function"?s.call(o):s.key?s:Object.assign(Object.assign({},s),{key:i(s.type)}))}class Xe{constructor(t){this.extensions=[],this.extensionMap={},this.context=t}setExtensions(t){const e=Tn(this.context.graph,this.category,t),{enter:n,update:i,exit:s,keep:r}=Te(this.extensions,e,a=>a.key);this.createExtensions(n),this.updateExtensions([...i,...r]),this.destroyExtensions(s),this.extensions=e}createExtension(t){const{category:e}=this,{key:n,type:i}=t,s=bt(e,i);if(!s)return Wt.warn(`The extension ${i} of ${e} is not registered.`);const r=new s(this.context,t);this.extensionMap[n]=r}createExtensions(t){t.forEach(e=>this.createExtension(e))}updateExtension(t){const{key:e}=t,n=this.extensionMap[e];n&&n.update(t)}updateExtensions(t){t.forEach(e=>this.updateExtension(e))}destroyExtension(t){const e=this.extensionMap[t];e&&(e.destroy(),delete this.extensionMap[t])}destroyExtensions(t){t.forEach(({key:e})=>this.destroyExtension(e))}destroy(){Object.values(this.extensionMap).forEach(t=>t.destroy()),this.context={},this.extensions=[],this.extensionMap={}}}class Le{constructor(t,e){this.events=[],this.destroyed=!1,this.context=t,this.options=e}update(t){this.options=Object.assign(this.options,t)}destroy(){this.context={},this.options={},this.destroyed=!0}}class Me extends Le{}class qe extends Me{constructor(t,e){super(t,Object.assign({},qe.defaultOptions,e)),this.isOverlapping=(n,i)=>i.some(s=>n.intersects(s)),this.occupiedBounds=[],this.detectLabelCollision=n=>{const i=this.context.viewport,s={show:[],hide:[]};return this.occupiedBounds=[],n.forEach(r=>{const a=r.getShape("label").getRenderBounds();i.isInViewport(a,!0)&&!this.isOverlapping(a,this.occupiedBounds)?(s.show.push(r),this.occupiedBounds.push(it(a,this.options.padding))):s.hide.push(r)}),s},this.hideLabelIfExceedViewport=(n,i)=>{const{exit:s}=Te(n,i,r=>r.id);s==null||s.forEach(this.hideLabel)},this.nodeCentralities=new Map,this.sortNodesByCentrality=(n,i)=>{const{model:s}=this.context,r=s.getData(),a=s.getRelatedEdgesData.bind(s);return n.map(c=>(this.nodeCentralities.has(c.id)||(this.nodeCentralities=ln(r,a,i)),{node:c,centrality:this.nodeCentralities.get(c.id)})).sort((c,d)=>d.centrality-c.centrality).map(c=>c.node)},this.sortLabelElementsInView=n=>{const{sort:i,sortNode:s,sortCombo:r,sortEdge:a}=this.options,{model:l}=this.context;if((0,Ht.Z)(i))return n.sort((p,m)=>i(l.getElementDataById(p.id),l.getElementDataById(m.id)));const{node:c=[],edge:d=[],combo:u=[]}=(0,Pn.Z)(n,p=>p.type),h=(0,Ht.Z)(r)?u.sort((p,m)=>r(...l.getComboData([p.id,m.id]))):u,f=(0,Ht.Z)(s)?c.sort((p,m)=>s(...l.getNodeData([p.id,m.id]))):this.sortNodesByCentrality(c,s),g=(0,Ht.Z)(a)?d.sort((p,m)=>a(...l.getEdgeData([p.id,m.id]))):d;return[...h,...f,...g]},this.labelElementsInView=[],this.onToggleVisibility=n=>{if(!this.validate(n)){this.hiddenElements.size>0&&(this.hiddenElements.forEach(this.showLabel),this.hiddenElements.clear());return}const i=this.getLabelElementsInView();this.hideLabelIfExceedViewport(this.labelElementsInView,i),this.labelElementsInView=i;const s=this.sortLabelElementsInView(this.labelElementsInView),{show:r,hide:a}=this.detectLabelCollision(s);for(let l=r.length-1;l>=0;l--)this.showLabel(r[l]);a.forEach(this.hideLabel)},this.hiddenElements=new Map,this.hideLabel=n=>{const i=n.getShape("label");i&&gn(i,"hidden"),this.hiddenElements.set(n.id,n)},this.showLabel=n=>{const i=n.getShape("label");i&&gn(i,"visible"),n.toFront(),this.hiddenElements.delete(n.id)},this.onTransform=(0,ii.Z)(this.onToggleVisibility,this.options.throttle,{leading:!0}),this.bindEvents()}update(t){this.unbindEvents(),super.update(t),this.bindEvents(),this.onToggleVisibility({})}get labelElements(){const e=Object.values(this.context.element.elementMap).filter(n=>n.isVisible()&&n.getShape("label"));return Object.fromEntries(e.map(n=>[n.id,n]))}getLabelElementsInView(){const t=this.context.viewport;return Object.values(this.labelElements).filter(e=>t.isInViewport(e.getShape("key").getRenderBounds()))}bindEvents(){const{graph:t}=this.context;t.on(W.AFTER_DRAW,this.onToggleVisibility),t.on(W.AFTER_LAYOUT,this.onToggleVisibility),t.on(W.AFTER_TRANSFORM,this.onTransform)}unbindEvents(){const{graph:t}=this.context;t.off(W.AFTER_DRAW,this.onToggleVisibility),t.off(W.AFTER_LAYOUT,this.onToggleVisibility),t.off(W.AFTER_TRANSFORM,this.onTransform)}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}destroy(){this.unbindEvents(),super.destroy()}}qe.defaultOptions={enable:!0,throttle:100,padding:0,sortNode:{type:"degree"}};var kn=y(23343);const Qn=[0,0,0];function ae(o,t){return o.map((e,n)=>e+t[n])}function Qe(o,t){return o.map((e,n)=>e-t[n])}function nn(o,t){return typeof t=="number"?o.map(e=>e*t):o.map((e,n)=>e*t[n])}function Ln(o,t){return typeof t=="number"?o.map(e=>e/t):o.map((e,n)=>e/t[n])}function ji(o,t){return o.reduce((e,n,i)=>e+n*t[i],0)}function Fe(o,t){const e=Hn(o),n=Hn(t);return[e[1]*n[2]-e[2]*n[1],e[2]*n[0]-e[0]*n[2],e[0]*n[1]-e[1]*n[0]]}function fe(o,t){return o.map(e=>e*t)}function re(o,t){return Math.sqrt(o.reduce((e,n,i)=>e+Math.pow(n-t[i]||0,2),0))}function hn(o,t){return o.reduce((e,n,i)=>e+Math.abs(n-t[i]),0)}function Je(o){const t=o.reduce((e,n)=>e+Math.pow(n,2),0);return o.map(e=>e/Math.sqrt(t))}function bn(o,t,e=!1){const n=o[0]*t[1]-o[1]*t[0];let i=Math.acos(nn(o,t).reduce((s,r)=>s+r,0)/(re(o,Qn)*re(t,Qn)));return e&&n<0&&(i=2*Math.PI-i),i}function on(o,t){return o.every((e,n)=>e===t[n])}function wn(o,t=!0){return t?[-o[1],o[0]]:[o[1],-o[0]]}function Jn(o,t){return o.map(e=>e%t)}function Rn(o){return[o[0],o[1]]}function Hn(o){return Mi(o)?[o[0],o[1],0]:o}function ee(o){const[t,e]=o;return!t&&!e?0:Math.atan2(e,t)}function Ut(o,t){const[e,n]=o,[i,s]=t,r=Qe(e,n),a=Qe(i,s);return Fe(r,a).every(l=>l===0)}function Ee(o,t,e=!1){if(Ut(o,t))return;const[n,i]=o,[s,r]=t,a=((n[0]-s[0])*(s[1]-r[1])-(n[1]-s[1])*(s[0]-r[0]))/((n[0]-i[0])*(s[1]-r[1])-(n[1]-i[1])*(s[0]-r[0])),l=r[0]-s[0]?(n[0]-s[0]+a*(i[0]-n[0]))/(r[0]-s[0]):(n[1]-s[1]+a*(i[1]-n[1]))/(r[1]-s[1]);if(!(!e&&(!Ge(a,0,1)||!Ge(l,0,1))))return[n[0]+a*(i[0]-n[0]),n[1]+a*(i[1]-n[1])]}function Ne(o){if(Array.isArray(o))return Ge(o[0],0,1)&&Ge(o[1],0,1)?o:[.5,.5];const t=o.split("-"),e=t.includes("left")?0:t.includes("right")?1:.5,n=t.includes("top")?0:t.includes("bottom")?1:.5;return[e,n]}function $e(o){const{x:t=0,y:e=0,z:n=0}=o.style||{};return[+t,+e,+n]}function zi(o){const{x:t,y:e,z:n}=o.style||{};return t!==void 0||e!==void 0||n!==void 0}function ai(o,t){const[e,n]=t,{min:i,max:s}=o;return[i[0]+e*(s[0]-i[0]),i[1]+n*(s[1]-i[1])]}function jn(o,t="center"){const e=Ne(t);return ai(o,e)}function Ii(o,t){const e=parseAnchor(t);return ai(o,e)}const yi=o=>{const[t,e]=o;return{left:Math.min(t[0],e[0]),right:Math.max(t[0],e[0]),top:Math.min(t[1],e[1]),bottom:Math.max(t[1],e[1])}};function En(o){var t;return[o.x,o.y,(t=o.z)!==null&&t!==void 0?t:0]}function qn(o){var t;return{x:o[0],y:o[1],z:(t=o[2])!==null&&t!==void 0?t:0}}function Si(o){return o.sort((t,e)=>t[0]-e[0]||t[1]-e[1])}function Ki(o){const t=new Set;return o.filter(e=>{const n=e.join(",");return t.has(n)?!1:(t.add(n),!0)})}function Bi(o,t=0){return o.map(e=>parseFloat(e.toFixed(t)))}function wi(o,t,e,n=!1){if((0,xt.Z)(o,t))return o;const i=n?Qe(o,t):Qe(t,o),s=Je(i),r=[s[0]*e,s[1]*e];return ae(Rn(o),r)}function so(o,t){return o[1]===t[1]}function ro(o,t){return o[0]===t[0]}function Wi(o,t){return so(o,t)||ro(o,t)}function mo(o,t,e){return Ut([o,t],[t,e])}function Zi(o,t){return[2*t[0]-o[0],2*t[1]-o[1]]}function No(o,t,e,n=!0,i=!1){for(let s=0;ss!=f>s&&i<(h-d)*(s-u)/(f-u)+d&&(r=!r)}return r}function vo(o,t,e=!1){const n=jn(t,"center"),i=[jn(t,"left-top"),jn(t,"right-top"),jn(t,"right-bottom"),jn(t,"left-bottom")];return No(o,n,i,!1,e).point}function Yi(o,t,e=!1){const n=t.center,i=e?Zi(o,n):o,s=Qe(i,t.center),r=Math.atan2(s[1],s[0]);if(isNaN(r))return n;const a=fn(t)/2,l=dn(t)/2,c=n[0]+a*Math.cos(r),d=n[1]+l*Math.sin(r);return[c,d]}function Po(o,t){let e=1/0,n=[o[0],t[0]];return o.forEach(i=>{t.forEach(s=>{const r=re(i,s);r{const s=To(o,i);s1?d=1:d<0&&(d=0);const u=e+d*l,h=n+d*c;return[u,h]}function bo(o){const t=o.reduce((e,n)=>ae(e,n),[0,0]);return Ln(t,o.length)}function de(o,t=!0){const e=bo(o);return o.sort(([n,i],[s,r])=>{const a=Math.atan2(i-e[1],n-e[0]),l=Math.atan2(r-e[1],s-e[0]);return t?l-a:a-l})}function _e(o,t){return[o,[o[0],t[1]],t,[t[0],o[1]]]}var ve=y(71879);const Ae=o=>o.map(t=>(0,ve.Z)(t)?t.toLocaleLowerCase():t);class xn{constructor(t){this.map=new Map,this.recordKey=new Set,this.onKeyDown=e=>{e!=null&&e.key&&(this.recordKey.add(e.key),this.trigger(e))},this.onKeyUp=e=>{e!=null&&e.key&&this.recordKey.delete(e.key)},this.onWheel=e=>{this.triggerExtendKey(B.WHEEL,e)},this.onDrag=e=>{this.triggerExtendKey(B.DRAG,e)},this.onFocus=()=>{this.recordKey.clear()},this.emitter=t,this.bindEvents()}bind(t,e){t.length!==0&&this.map.set(t,e)}unbind(t,e){this.map.forEach((n,i)=>{(0,xt.Z)(i,t)&&(!e||e===n)&&this.map.delete(i)})}unbindAll(){this.map.clear()}match(t){const e=Ae(Array.from(this.recordKey)).sort(),n=Ae(t).sort();return(0,xt.Z)(e,n)}bindEvents(){const{emitter:t}=this;t.on(B.KEY_DOWN,this.onKeyDown),t.on(B.KEY_UP,this.onKeyUp),t.on(B.WHEEL,this.onWheel),t.on(B.DRAG,this.onDrag),window.addEventListener("focus",this.onFocus)}trigger(t){this.map.forEach((e,n)=>{this.match(n)&&e(t)})}triggerExtendKey(t,e){this.map.forEach((n,i)=>{i.includes(t)&&(0,xt.Z)(Array.from(this.recordKey),i.filter(s=>s!==t))&&n(e)})}destroy(){this.unbindAll(),this.emitter.off(B.KEY_DOWN,this.onKeyDown),this.emitter.off(B.KEY_UP,this.onKeyUp),this.emitter.off(B.WHEEL,this.onWheel),this.emitter.off(B.DRAG,this.onDrag),window.removeEventListener("blur",this.onFocus)}}class On extends Me{constructor(t,e){super(t,(0,kn.Z)({},On.defaultOptions,e)),this.shortcut=new xn(t.graph),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.clearStates=this.clearStates.bind(this),this.bindEvents()}onPointerDown(t){if(!this.validate(t)||!this.isKeydown()||this.startPoint)return;const{canvas:e,graph:n}=this.context,i=Object.assign({},this.options.style);this.options.style.lineWidth&&(i.lineWidth=+this.options.style.lineWidth/n.getZoom()),this.rectShape=new nt.UL({id:"g6-brush-select",style:i}),e.appendChild(this.rectShape),this.startPoint=[t.canvas.x,t.canvas.y]}onPointerMove(t){var e;if(!this.startPoint)return;const{immediately:n,mode:i}=this.options;this.endPoint=Ni(t),(e=this.rectShape)===null||e===void 0||e.attr({x:Math.min(this.endPoint[0],this.startPoint[0]),y:Math.min(this.endPoint[1],this.startPoint[1]),width:Math.abs(this.endPoint[0]-this.startPoint[0]),height:Math.abs(this.endPoint[1]-this.startPoint[1])}),n&&i==="default"&&this.updateElementsStates(_e(this.startPoint,this.endPoint))}onPointerUp(t){if(this.startPoint){if(!this.endPoint){this.clearBrush();return}this.endPoint=Ni(t),this.updateElementsStates(_e(this.startPoint,this.endPoint)),this.clearBrush()}}clearStates(){this.endPoint||this.clearElementsStates()}clearElementsStates(){const{graph:t}=this.context,e=Object.values(t.getData()).reduce((n,i)=>Object.assign({},n,i.reduce((s,r)=>(s[z(r)]=[],s),{})),{});t.setElementState(e,this.options.animation)}updateElementsStates(t){const{graph:e}=this.context,{enableElements:n,state:i,mode:s,onSelect:r}=this.options,a=this.selector(e,t,n);let l={};switch(s){case"union":a.forEach(c=>{l[c]=[...e.getElementState(c),i]});break;case"diff":a.forEach(c=>{const d=e.getElementState(c);l[c]=d.includes(i)?d.filter(u=>u!==i):[...d,i]});break;case"intersect":a.forEach(c=>{const d=e.getElementState(c);l[c]=d.includes(i)?[i]:[]});break;case"default":default:a.forEach(c=>{l[c]=[i]});break}(0,Ht.Z)(r)&&(l=r(l)),e.setElementState(l,this.options.animation)}selector(t,e,n){if(!n||n.length===0)return[];const i=[],s=t.getData();if(n.forEach(r=>{s[`${r}s`].forEach(a=>{const l=z(a);t.getElementVisibility(l)!=="hidden"&&Ao(t.getElementPosition(l),e)&&i.push(l)})}),n.includes("edge")){const r=s.edges;r==null||r.forEach(a=>{const{source:l,target:c}=a;i.includes(l)&&i.includes(c)&&i.push(z(a))})}return i}clearBrush(){var t;(t=this.rectShape)===null||t===void 0||t.remove(),this.rectShape=void 0,this.startPoint=void 0,this.endPoint=void 0}isKeydown(){const{trigger:t}=this.options,e=Array.isArray(t)?t:[t];return this.shortcut.match(e.filter(n=>n!=="drag"))}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}bindEvents(){const{graph:t}=this.context;t.on(B.POINTER_DOWN,this.onPointerDown),t.on(B.POINTER_MOVE,this.onPointerMove),t.on(B.POINTER_UP,this.onPointerUp),t.on(oe.CLICK,this.clearStates)}unbindEvents(){const{graph:t}=this.context;t.off(B.POINTER_DOWN,this.onPointerDown),t.off(B.POINTER_MOVE,this.onPointerMove),t.off(B.POINTER_UP,this.onPointerUp),t.off(oe.CLICK,this.clearStates)}update(t){this.unbindEvents(),this.options=(0,kn.Z)(this.options,t),this.bindEvents()}destroy(){this.unbindEvents(),super.destroy()}}On.defaultOptions={animation:!1,enable:!0,enableElements:["node","combo","edge"],immediately:!1,mode:"default",state:"selected",trigger:["shift"],style:{width:0,height:0,lineWidth:1,fill:"#1677FF",stroke:"#1677FF",fillOpacity:.1,zIndex:2,pointerEvents:"none"}};const Ni=o=>[o.canvas.x,o.canvas.y],oi=.8,bi=["node","edge","combo"];function Wn(o,t,e,n,i=0){n==="TB"&&t(o,i);const s=e(o);if(s)for(const r of s)Wn(r,t,e,n,i+1);n==="BT"&&t(o,i)}function to(o,t,e){const n=[[o,0]];for(;n.length;){const[i,s]=n.shift();t(i,s);const r=e(i);if(r)for(const a of r)n.push([a,s+1])}}function Eo(o,t,e,n,i="both"){if(t==="combo"||t==="node")return xo(o,e,n,i);const s=o.getEdgeData(e);if(!s)return[];const r=xo(o,s.source,n-1,i),a=xo(o,s.target,n-1,i);return Array.from(new Set([...r,...a,e]))}function xo(o,t,e,n="both"){const i=new Set,s=new Set,r=new Set;return to(t,(a,l)=>{l>e||(r.add(a),o.getRelatedEdgesData(a,n).forEach(c=>{const d=z(c);!s.has(d)&&lo.getRelatedEdgesData(a,n).map(l=>l.source===a?l.target:l.source).filter(l=>i.has(l)?!1:(i.add(l),!0))),Array.from(r)}function Lo(o){return o.states||[]}var Hi=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class Ai extends Me{constructor(t,e){super(t,Object.assign({},Ai.defaultOptions,e)),this.onClickSelect=n=>Hi(this,void 0,void 0,function*(){var i,s;this.validate(n)&&(yield this.updateState(n),(s=(i=this.options).onClick)===null||s===void 0||s.call(i,n))}),this.onClickCanvas=n=>Hi(this,void 0,void 0,function*(){var i,s;this.validate(n)&&(yield this.clearState(),(s=(i=this.options).onClick)===null||s===void 0||s.call(i,n))}),this.shortcut=new xn(t.graph),this.bindEvents()}bindEvents(){const{graph:t}=this.context;this.unbindEvents(),bi.forEach(e=>{t.on(`${e}:${B.CLICK}`,this.onClickSelect)}),t.on(oe.CLICK,this.onClickCanvas)}get isMultipleSelect(){const{multiple:t,trigger:e}=this.options;return t&&this.shortcut.match(e)}getNeighborIds(t){const{target:e,targetType:n}=t,{graph:i}=this.context,{degree:s}=this.options;return Eo(i,n,e.id,typeof s=="function"?s(t):s).filter(r=>r!==e.id)}updateState(t){return Hi(this,void 0,void 0,function*(){const{state:e,unselectedState:n,neighborState:i,animation:s}=this.options;if(!e&&!i&&!n)return;const{target:r}=t,{graph:a}=this.context,l=a.getElementData(r.id),c=Lo(l).includes(e)?"unselect":"select",d={},u=this.isMultipleSelect,h=[r.id],f=this.getNeighborIds(t);if(u)if(Object.assign(d,this.getDataStates()),c==="select"){const g=(p,m)=>{p.forEach(E=>{const x=new Set(a.getElementState(E));x.add(m),x.delete(n),d[E]=Array.from(x)})};g(h,e),g(f,i),n&&Object.keys(d).forEach(p=>{const m=d[p];!m.includes(e)&&!m.includes(i)&&!m.includes(n)&&d[p].push(n)})}else{const g=d[r.id];d[r.id]=g.filter(p=>p!==e&&p!==i),g.includes(n)||d[r.id].push(n),f.forEach(p=>{d[p]=d[p].filter(m=>m!==i),d[p].includes(e)||d[p].push(n)})}else if(c==="select"){Object.assign(d,this.getClearStates(!!n));const g=(p,m)=>{p.forEach(E=>{d[E]||(d[E]=a.getElementState(E)),d[E].push(m)})};g(h,e),g(f,i),n&&Object.keys(d).forEach(p=>{!h.includes(p)&&!f.includes(p)&&d[p].push(n)})}else Object.assign(d,this.getClearStates());yield a.setElementState(d,s)})}getDataStates(){const{graph:t}=this.context,{nodes:e,edges:n,combos:i}=t.getData(),s={};return[...e,...n,...i].forEach(r=>{s[z(r)]=Lo(r)}),s}getClearStates(t=!1){const{graph:e}=this.context,{state:n,unselectedState:i,neighborState:s}=this.options,r=new Set([n,i,s]),{nodes:a,edges:l,combos:c}=e.getData(),d={};return[...a,...l,...c].forEach(u=>{const h=Lo(u),f=h.filter(g=>!r.has(g));(t||f.length!==h.length)&&(d[z(u)]=f)}),d}clearState(){return Hi(this,void 0,void 0,function*(){const{graph:t}=this.context;yield t.setElementState(this.getClearStates(),this.options.animation)})}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}unbindEvents(){const{graph:t}=this.context;bi.forEach(e=>{t.off(`${e}:${B.CLICK}`,this.onClickSelect)}),t.off(oe.CLICK,this.onClickCanvas)}destroy(){this.unbindEvents(),super.destroy()}}Ai.defaultOptions={animation:!0,enable:!0,multiple:!1,trigger:["shift"],state:"selected",neighborState:"selected",unselectedState:void 0,degree:0};function Oi(o){var t;return!!(!((t=o.style)===null||t===void 0)&&t.collapsed)}var ti=y(5759),So=y(37004),wr=y(45642);function wo(o,t){if(!o.startsWith(t))return!1;const e=o[t.length];return e>="A"&&e<="Z"}function us(o,t){return`${t}${(0,Kt.Z)(o)}`}function hs(o,t,e=!0){if(!t||!wo(o,t))return o;const n=o.slice(t.length);return e?(0,wr.Z)(n):n}function Vn(o,t){const e=Object.entries(o).reduce((n,[i,s])=>(i==="className"||i==="class"||wo(i,t)&&Object.assign(n,{[hs(i,t)]:s}),n),{});if("opacity"in o){const n=us("opacity",t),i=o.opacity;if(n in o){const s=o[n];Object.assign(e,{opacity:i*s})}else Object.assign(e,{opacity:i})}return e}function Xo(o,t){const e=t.length;return Object.keys(o).reduce((n,i)=>{if(i.startsWith(t)){const s=i.slice(e);n[s]=o[i]}return n},{})}function _o(o,t){const e=typeof t=="string"?[t]:t,n={};return Object.keys(o).forEach(i=>{e.find(s=>i.startsWith(s))||(n[i]=o[i])}),n}function Or(o,t,e){return Object.entries(o).reduce((n,[i,s])=>(wo(i,t)?n[us(hs(i,t,!1),e)]=s:n[i]=s,n),{})}function Pi(o=0){if(typeof o=="number")return[o,o,o];const[t,e=t,n=t]=o;return[t,e,n]}var fs=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);itypeof s=="function"?[i,s.call(n,e)]:[i,s]))}function si(o,t){const e=(o==null?void 0:o.style)||{},n=(t==null?void 0:t.style)||{};return Object.assign({},o,t,{style:Object.assign({},e,n)})}function Cr(o){const{x:t,y:e,z:n,class:i,className:s,transform:r,transformOrigin:a,context:l,zIndex:c,visibility:d}=o;return fs(o,["x","y","z","class","className","transform","transformOrigin","context","zIndex","visibility"])}const Qo=new WeakMap;function Ti(o,t,e){Qo.has(o)||Qo.set(o,{});const n=Qo.get(o);if(!n[t])return n[t]=e,!0;const i=n[t];return jo(i,e)?!1:(n[t]=e,!0)}const jo=(o,t,e=2)=>{if(typeof o!="object"||typeof t!="object")return o===t;const n=Object.keys(o),i=Object.keys(t);if(n.length!==i.length)return!1;for(const s of n){const r=o[s],a=t[s];if(e>1&&typeof r=="object"&&typeof a=="object"){if(!jo(r,a,e-1))return!1}else if(r!==a)return!1}return!0};function sn(o,t){const e=Pi(o);let n={};return t.text&&!t.fontSize&&(n={fontSize:Math.min(...e)*.5}),t.src&&(!t.width||!t.height)&&(n={width:e[0]*.5,height:e[1]*.5}),n}function ke(o){if(o)return typeof o=="string"||typeof o=="function"||Array.isArray(o)?{type:"group",field:t=>t.id,color:o,invert:!1}:o}function ui(o,t){if(!t)return{};const{type:e,color:n,field:i,invert:s}=t,r=l=>{const c=typeof n=="string"?bt("palette",n):n;if(typeof c=="function"){const d={};return l.forEach(([u,h])=>{d[u]=c(s?1-h:h)}),d}else if(Array.isArray(c)){const d=s?[...c].reverse():c,u={};return l.forEach(([h,f])=>{u[h]=d[f%c.length]}),u}return{}},a=(l,c)=>{var d;return typeof l=="string"?(d=c.data)===null||d===void 0?void 0:d[l]:l==null?void 0:l(c)};if(e==="group"){const l=(0,Pn.Z)(o,h=>{if(!i)return"default";const f=a(i,h);return f?String(f):"default"}),c=Object.keys(l),d=r(c.map((h,f)=>[h,f])),u={};return Object.entries(l).forEach(([h,f])=>{f.forEach(g=>{u[z(g)]=d[h]})}),u}else if(e==="value"){const[l,c]=o.reduce(([u,h],f)=>{const g=a(i,f);if(typeof g!="number")throw new Error(Zt(`Palette field ${i} is not a number`));return[Math.min(u,g),Math.max(h,g)]},[1/0,-1/0]),d=c-l;return r(o.map(u=>[u.id,(a(i,u)-l)/d]))}}function pi(o){const t=typeof o=="string"?bt("palette",o):o;if(typeof t!="function")return t}function Un(o,t){let e=2*o;return typeof t=="string"?e=o*Number(t.replace("%",""))/100:typeof t=="number"&&(e=t),isNaN(e)&&(e=2*o),e}function Ei(o,t,e=1,n=!1){const i=n?e:1,s=(o.max[0]-o.min[0])*i;return Un(s,t)}function $i(o,t,e=1){const n=re(o[0],o[1])*e;return Un(n,t)}var Gi=y(86977);class Li extends nt.b_{constructor(t){super(t),this.shapeMap={},this.animateMap={},this.transformPosition(this.attributes),this.render(this.attributes,this),this.setVisibility(),this.bindEvents()}get parsedAttributes(){return this.attributes}upsert(t,e,n,i,s){var r,a,l,c,d,u,h,f;const g=this.shapeMap[t];if(n===!1){g&&((r=s==null?void 0:s.beforeDestroy)===null||r===void 0||r.call(s,g),i.removeChild(g),delete this.shapeMap[t],(a=s==null?void 0:s.afterDestroy)===null||a===void 0||a.call(s,g));return}const p=typeof e=="string"?bt(ht.SHAPE,e):e;if(!p)throw new Error(Zt(`Shape ${e} not found`));if(!g||g.destroyed||!(g instanceof p)){g&&((l=s==null?void 0:s.beforeDestroy)===null||l===void 0||l.call(s,g),g==null||g.destroy(),(c=s==null?void 0:s.afterDestroy)===null||c===void 0||c.call(s,g)),(d=s==null?void 0:s.beforeCreate)===null||d===void 0||d.call(s);const m=new p({className:t,style:n});return i.appendChild(m),this.shapeMap[t]=m,(u=s==null?void 0:s.afterCreate)===null||u===void 0||u.call(s,m),m}return(h=s==null?void 0:s.beforeUpdate)===null||h===void 0||h.call(s,g),Zr(g,n),(f=s==null?void 0:s.afterUpdate)===null||f===void 0||f.call(s,g),g}transformPosition(t){if("x"in t||"y"in t||"z"in t){const{x:e=0,y:n=0,z:i=0,transform:s}=t;this.style.transform=Cn(+e,+n,+i,s)}}update(t={}){const e=Object.assign({},this.attributes,t);this.attr(e),this.render(e,this),this.transformPosition(e),this.setVisibility()}bindEvents(){}getGraphicStyle(t){return Cr(t)}get compositeShapes(){return[["badges","badge-"],["ports","port-"]]}animate(t,e){if(t.length===0)return null;const n=[];if(t[0].x!==void 0||t[0].y!==void 0||t[0].z!==void 0){const{x:s=0,y:r=0,z:a=0}=this.attributes;t.forEach(l=>{const{x:c=s,y:d=r,z:u=a}=l;Object.assign(l,{transform:u?[["translate3d",c,d,u]]:[["translate",c,d]]})})}const i=super.animate(t,e);if(i&&(eo(this,i),n.push(i)),Array.isArray(t)&&t.length>0){const s=["transform","transformOrigin","x","y","z","zIndex"];if(Object.keys(t[0]).some(r=>!s.includes(r))){Object.entries(this.shapeMap).forEach(([a,l])=>{const c=`get${(0,Kt.Z)(a)}Style`,d=this[c];if((0,Ht.Z)(d)){const u=t.map(f=>d.call(this,Object.assign(Object.assign({},this.attributes),f))),h=l.animate(We(u),e);h&&(eo(l,h),n.push(h))}});const r=(a,l)=>{if(!(0,Gi.Z)(a)){const c=`get${(0,Kt.Z)(l)}Style`,d=this[c];if((0,Ht.Z)(d)){const u=t.map(h=>d.call(this,Object.assign(Object.assign({},this.attributes),h)));Object.entries(u[0]).map(([h])=>{const f=u.map(p=>p[h]),g=a[h];if(g){const p=g.animate(We(f),e);p&&(eo(g,p),n.push(p))}})}}};this.compositeShapes.forEach(([a,l])=>{const c=Xo(this.shapeMap,l);r(c,a)})}}return se(n)}getShape(t){return this.shapeMap[t]}setVisibility(){const{visibility:t}=this.attributes;gn(this,t,!0)}destroy(){this.shapeMap={},this.animateMap={},super.destroy()}}function eo(o,t){t==null||t.finished.then(()=>{const e=o.activeAnimations.findIndex(n=>n===t);e>-1&&o.activeAnimations.splice(e,1)})}var no=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i{e.push([i===0?"M":"L",...n])}),t&&e.push(["Z"]),e}const ua={M:["x","y"],m:["dx","dy"],H:["x"],h:["dx"],V:["y"],v:["dy"],L:["x","y"],l:["dx","dy"],Z:[],z:[],C:["x1","y1","x2","y2","x","y"],c:["dx1","dy1","dx2","dy2","dx","dy"],S:["x2","y2","x","y"],s:["dx2","dy2","dx","dy"],Q:["x1","y1","x","y"],q:["dx1","dy1","dx","dy"],T:["x","y"],t:["dx","dy"],A:["rx","ry","rotation","large-arc","sweep","x","y"],a:["rx","ry","rotation","large-arc","sweep","dx","dy"]};function Nc(o){const t=o.replace(/[\n\r]/g,"").replace(/-/g," -").replace(/(\d*\.)(\d+)(?=\.)/g,"$1$2 ").trim().split(/\s*,|\s+/),e=[];let n="",i={};for(;t.length>0;){let s=t.shift();s in ua?n=s:t.unshift(s),i={type:n},ua[n].forEach(l=>{s=t.shift(),i[l]=s}),n==="M"?n="L":n==="m"&&(n="l");const[r,...a]=Object.values(i);e.push([r,...a.map(Number)])}return e}function Ac(o){const t=[];return(typeof o=="string"?Nc(o):o).forEach(n=>{const i=n[0];if(i==="Z"){t.push(t[0]);return}if(i!=="A")for(let s=1;s{if(o.length<2)return[["M",0,0],["L",0,0]];const t=o[0],e=o[1],n=o[o.length-1],i=o[o.length-2];o.unshift(i,n),o.push(t,e);const s=[["M",n[0],n[1]]];for(let r=1;r{const m=g,E=d[(p+1)%d.length];return(0,xt.Z)(m,E)?null:[m,E]}).filter(Boolean),h=Go([a,l],u),f=yo([a,l],h);if(f&&h&&(c.transform=[["translate",f[0]+e,f[1]+n]],r)){const g=Math.atan((h[0][1]-h[1][1])/(h[0][0]-h[1][0]));c.transform.push(["rotate",g/Math.PI*180]),c.textAlign="center",(t==="right"||t==="left")&&(g>0?c.textBaseline=t==="right"?"bottom":"top":c.textBaseline=t==="right"?"top":"bottom")}return c}var Tc=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i{n!=null&&n.children.length&&n.children.forEach(i=>{t.push(i),e(i)})};return e(o),t}function _c(o){const t=[];let e=o.parentNode;for(;e;)t.push(e),e=e.parentNode;return t}class Dr extends nt.Ee{constructor(t){super(t),this.onMounted=()=>{this.handleRadius()},this.onAttrModified=()=>{this.handleRadius()},Bo=this,this.isMutationObserved=!0,this.addEventListener(nt.Dk.MOUNTED,this.onMounted),this.addEventListener(nt.Dk.ATTR_MODIFIED,this.onAttrModified)}handleRadius(){const{radius:t,clipPath:e,width:n=0,height:i=0}=this.attributes;if(t&&n&&i){const[s,r]=this.getBounds().min,a={x:s,y:r,radius:t,width:n,height:i};if(e)Object.assign(this.parsedStyle.clipPath.style,a);else{const l=new nt.UL({style:a});this.style.clipPath=l}}else e&&(this.style.clipPath=null)}}const Mr=new WeakMap;let Bo=null;const Rr=o=>{if(Bo&&_c(Bo).includes(o)){const t=Mr.get(o);t?t.includes(Bo)||t.push(Bo):Mr.set(o,[Bo])}},Ir=o=>{const t=Mr.get(o);t&&t.forEach(e=>e.handleRadius())};class fa extends Li{constructor(t){super(t)}isImage(){const{src:t}=this.attributes;return!!t}getIconStyle(t=this.attributes){const{width:e=0,height:n=0}=t,i=this.getGraphicStyle(t);return this.isImage()?Object.assign({x:-e/2,y:-n/2},i):Object.assign({textBaseline:"middle",textAlign:"center"},i)}render(t=this.attributes,e=this){this.upsert("icon",this.isImage()?Dr:nt.xv,this.getIconStyle(t),e)}}class ga extends Li{get context(){return this.attributes.context}get parsedAttributes(){return this.attributes}onframe(){}animate(t,e){const n=super.animate(t,e);return n&&(n.onframe=()=>this.onframe(),n.finished.then(()=>this.onframe())),n}}var ps=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i{i[u]=!1}),t.badge===!1||!(!((e=t.badges)===null||e===void 0)&&e.length))return i;const{badges:s=[],badgePalette:r,opacity:a=1}=t,l=ps(t,["badges","badgePalette","opacity"]),c=pi(r),d=Vn(this.getGraphicStyle(l),"badge");return s.forEach((u,h)=>{i[h]=Object.assign(Object.assign({backgroundFill:c?c[h%(c==null?void 0:c.length)]:void 0,opacity:a},d),this.getBadgeStyle(u))}),i}getBadgeStyle(t){const e=this.getShape("key"),{placement:n="top",offsetX:i,offsetY:s}=t,r=ps(t,["placement","offsetX","offsetY"]),a=_a(e.getLocalBounds(),n,i,s,!0);return Object.assign(Object.assign({},a),r)}getPortsStyle(t){var e;const n=this.getPorts(),i={};if(Object.keys(n).forEach(a=>{i[a]=!1}),t.port===!1||!(!((e=t.ports)===null||e===void 0)&&e.length))return i;const s=Vn(this.getGraphicStyle(t),"port"),{ports:r=[]}=t;return r.forEach((a,l)=>{const c=a.key||l,d=Object.assign(Object.assign({},s),a);if(Pa(d))i[c]=!1;else{const[u,h]=this.getPortXY(t,a);i[c]=Object.assign({transform:[["translate",u,h]]},d)}}),i}getPortXY(t,e){const{placement:n="left"}=e,i=this.getShape("key");return jr(jc(this.context,i),n)}getPorts(){return Xo(this.shapeMap,"port-")}getCenter(){return this.getShape("key").getBounds().center}getIntersectPoint(t,e=!1){const n=this.getShape("key").getBounds();return vo(t,n,e)}drawHaloShape(t,e){const n=this.getHaloStyle(t);if(!Ti(this,"halo",n))return;const i=this.getShape("key");this.upsert("halo",i.constructor,n,e)}drawIconShape(t,e){const n=this.getIconStyle(t);Ti(this,"icon",n)&&(this.upsert("icon",fa,n,e),Rr(this))}drawBadgeShapes(t,e){const n=this.getBadgesStyle(t);Object.keys(n).forEach(i=>{const s=n[i];Ti(this,`badge-${i}`,s)&&this.upsert(`badge-${i}`,zo,s,e)})}drawPortShapes(t,e){const n=this.getPortsStyle(t);Object.keys(n).forEach(i=>{const s=n[i],r=`port-${i}`;Ti(this,r,s)&&this.upsert(r,nt.Cd,s,e)})}drawLabelShape(t,e){const n=this.getLabelStyle(t);Ti(this,"label",n)&&this.upsert("label",Xi,n,e)}_drawKeyShape(t,e){return this.drawKeyShape(t,e)}render(t=this.parsedAttributes,e=this){this._drawKeyShape(t,e),this.getShape("key")&&(this.drawHaloShape(t,e),this.drawIconShape(t,e),this.drawBadgeShapes(t,e),this.drawLabelShape(t,e),this.drawPortShapes(t,e))}update(t){super.update(t),t&&("x"in t||"y"in t||"z"in t)&&Ir(this)}onframe(){this.drawBadgeShapes(this.parsedAttributes,this),this.drawLabelShape(this.parsedAttributes,this)}}Qi.defaultStyleProps={x:0,y:0,size:32,droppable:!0,draggable:!0,port:!0,ports:[],portZIndex:2,portLinkToCenter:!1,badge:!0,badges:[],badgeZIndex:3,halo:!1,haloDroppable:!1,haloLineDash:0,haloLineWidth:12,haloStrokeOpacity:.25,haloPointerEvents:"none",haloZIndex:-1,icon:!0,iconZIndex:1,label:!0,labelIsBillboard:!0,labelMaxWidth:"200%",labelPlacement:"bottom",labelWordWrap:!1,labelZIndex:0};function jc(o,t){if(!o)return t.getLocalBounds();const e=o.canvas.getLayer(),n=t.cloneNode();gn(n,"hidden"),e.appendChild(n);const i=n.getLocalBounds();return e.removeChild(n),i}class Oo extends Qi{constructor(t){super(si({style:Oo.defaultStyleProps},t))}drawKeyShape(t,e){return this.upsert("key",nt.Cd,this.getKeyStyle(t),e)}getKeyStyle(t){const e=super.getKeyStyle(t);return Object.assign(Object.assign({},e),{r:Math.min(...this.getSize(t))/2})}getIconStyle(t){const e=super.getIconStyle(t),{r:n}=this.getShape("key").attributes,i=n*2*oi;return e?Object.assign({width:i,height:i},e):!1}getIntersectPoint(t,e=!1){const n=this.getShape("key").getBounds();return Yi(t,n,e)}}Oo.defaultStyleProps={size:32};class ms extends Qi{constructor(t){super(t)}get parsedAttributes(){return this.attributes}drawKeyShape(t,e){return this.upsert("key",nt.mg,this.getKeyStyle(t),e)}getKeyStyle(t){const e=super.getKeyStyle(t);return Object.assign(Object.assign({},e),{points:this.getPoints(t)})}getIntersectPoint(t,e=!1){var n,i;const{points:s}=this.getShape("key").attributes,r=[+(((n=this.attributes)===null||n===void 0?void 0:n.x)||0),+(((i=this.attributes)===null||i===void 0?void 0:i.y)||0)];return No(t,r,s,!0,e).point}}class zc extends ms{constructor(t){super(t)}getPoints(t){const[e,n]=this.getSize(t);return Ad(e,n)}}var ge=y(1933),Bc=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i(0,ge.Z)(u)?{value:u}:u),s=Vn(this.getGraphicStyle(t),"donut"),r=pi(t.donutPalette);if(!r)return;const a=i.reduce((u,h)=>{var f;return u+((f=h.value)!==null&&f!==void 0?f:0)},0),l=this.parseOuterR(),c=this.parseInnerR();let d=0;i.forEach((u,h)=>{const{value:f=0,color:g=r[h%r.length]}=u,p=Bc(u,["value","color"]),m=(a===0?1/i.length:f/a)*360;this.upsert(`round${h}`,nt.y$,Object.assign(Object.assign(Object.assign({},s),{d:Fc(l,c,d,d+m),fill:g}),p),e),d+=m})}render(t,e=this){super.render(t,e),this.drawDonutShape(t,e)}}vs.defaultStyleProps={innerR:"50%",donuts:[],donutPalette:"tableau"};const ys=(o,t,e,n)=>[o+Math.sin(n)*e,t-Math.cos(n)*e],Zc=(o,t,e,n)=>n<=0||e<=n?[["M",o-e,t],["A",e,e,0,1,1,o+e,t],["A",e,e,0,1,1,o-e,t],["Z"]]:[["M",o-e,t],["A",e,e,0,1,1,o+e,t],["A",e,e,0,1,1,o-e,t],["Z"],["M",o+n,t],["A",n,n,0,1,0,o-n,t],["A",n,n,0,1,0,o+n,t],["Z"]],$c=(o,t,e,n,i,s)=>{const[r,a]=[i/360*2*Math.PI,s/360*2*Math.PI],l=[ys(o,t,n,r),ys(o,t,e,r),ys(o,t,e,a),ys(o,t,n,a)],c=a-r>Math.PI?1:0;return[["M",l[0][0],l[0][1]],["L",l[1][0],l[1][1]],["A",e,e,0,c,1,l[2][0],l[2][1]],["L",l[3][0],l[3][1]],["A",n,n,0,c,0,l[0][0],l[0][1]],["Z"]]},Fc=(o=0,t=0,e,n)=>{const[i,s]=[0,0];return Math.abs(e-n)%360<1e-6?Zc(i,s,o,t):$c(i,s,o,t,e,n)};class bs extends Qi{constructor(t){super(si({style:bs.defaultStyleProps},t))}drawKeyShape(t,e){return this.upsert("key",nt.Pj,this.getKeyStyle(t),e)}getKeyStyle(t){const e=super.getKeyStyle(t),[n,i]=this.getSize(t);return Object.assign(Object.assign({},e),{rx:n/2,ry:i/2})}getIconStyle(t){const e=super.getIconStyle(t),{rx:n,ry:i}=this.getShape("key").attributes,s=Math.min(+n,+i)*2*oi;return e?Object.assign({width:s,height:s},e):!1}getIntersectPoint(t,e=!1){const n=this.getShape("key").getBounds();return Yi(t,n,e)}}bs.defaultStyleProps={size:[45,35]};class kc extends ms{constructor(t){super(t)}getOuterR(t){return t.outerR||Math.min(...this.getSize(t))/2}getPoints(t){return Td(this.getOuterR(t))}getIconStyle(t){const e=super.getIconStyle(t),n=this.getOuterR(t)*oi;return e?Object.assign({width:n,height:n},e):!1}}var qo=y(7316),Co=y(84502),Kn=y(49527),Wc=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i{const n=this.context.canvas,i=n.context.renderingContext.root.ownerDocument.defaultView;this.normalizeToPointerEvent(e,i).forEach(r=>{const a=this.bootstrapEvent(this.rootPointerEvent,r,i,e);(0,So.Z)(n.context.eventService,"mappingTable.pointerupoutside",[]),n.context.eventService.mapEvent(a)})}}get eventService(){return this.context.canvas.context.eventService}get events(){return[B.CLICK,B.POINTER_DOWN,B.POINTER_MOVE,B.POINTER_UP,B.POINTER_OVER,B.POINTER_LEAVE]}getDomElement(){return this.getShape("key").getDomElement()}getKeyStyle(t){const e=(0,Co.Z)(t,["dx","dy","innerHTML","pointerEvents","cursor"]),{dx:n=0,dy:i=0}=e,s=Wc(e,["dx","dy"]),[r,a]=this.getSize(t);return Object.assign(Object.assign({x:n,y:i},s),{width:r,height:a})}drawKeyShape(t,e){const n=this.getKeyStyle(t),{x:i,y:s,width:r=0,height:a=0}=n,l=this.upsert("key-container",nt.UL,{x:i,y:s,width:r,height:a,opacity:0},e);return this.upsert("key",nt.k9,n,l)}connectedCallback(){if(!(this.context.canvas.getRenderer("main")instanceof qo.Th))return;const n=this.getDomElement();this.events.forEach(i=>{n.addEventListener(i,this.forwardEvents)})}attributeChangedCallback(t,e,n){t==="zIndex"&&e!==n&&(this.getDomElement().style.zIndex=n)}destroy(){const t=this.getDomElement();this.events.forEach(e=>{t.removeEventListener(e,this.forwardEvents)}),super.destroy()}normalizeToPointerEvent(t,e){const n=[];if(e.isTouchEvent(t))for(let i=0;ie.element.getElement(a)).filter(Boolean);if(s.length===0){const a=new nt.mN,{x:l=0,y:c=0,size:d}=t,[u,h]=Pi(d);return a.setMinMax([l-u/2,c-h/2,0],[l+u/2,c+h/2,0]),a}const r=Ft(s.map(a=>a.getBounds()));return i?it(r,i):r}drawCollapsedMarkerShape(t,e){const n=this.getCollapsedMarkerStyle(t);Ti(this,"collapsedMarker",n)&&(this.upsert("collapsed-marker",fa,n,e),Rr(this))}getCollapsedMarkerStyle(t){if(!t.collapsed||!t.collapsedMarker)return!1;const e=Vn(this.getGraphicStyle(t),"collapsedMarker"),{type:n}=e,i=ma(e,["type"]),s=this.getShape("key"),[r,a]=jn(s.getLocalBounds(),"center"),l=Object.assign(Object.assign({},i),{x:r,y:a});if(n){const c=this.getCollapsedMarkerText(n,t);Object.assign(l,{text:c})}return l}getCollapsedMarkerText(t,e){const{context:n,childrenData:i=[]}=e,{model:s}=n;return t==="descendant-count"?s.getDescendantsData(this.id).length.toString():t==="child-count"?i.length.toString():t==="node-count"?s.getDescendantsData(this.id).filter(r=>s.getElementType(z(r))==="node").length.toString():(0,Ht.Z)(t)?t(i):""}getComboZIndex(t){return(this.context.model.getAncestorsData(this.id,st)||[]).length}getComboPosition(t){const{x:e=0,y:n=0,collapsed:i,context:s,childrenData:r=[]}=t;if(r.length===0)return[+e,+n,0];if(i){const{model:a}=s,l=a.getDescendantsData(this.id).filter(c=>!a.isCombo(z(c)));if(l.length>0&&l.some(zi)){const c=l.reduce((d,u)=>ae(d,$e(u)),[0,0,0]);return Ln(c,l.length)}return[+e,+n,0]}return this.getContentBBox(t).center}getComboStyle(t){const{zIndex:e=this.getComboZIndex(t)}=t,[n,i]=this.getComboPosition(t);return{x:n,y:i,transform:[["translate",n,i]],zIndex:e}}updateComboPosition(t){const e=this.getComboStyle(t);Object.assign(this.style,e);const{x:n,y:i}=e;this.context.model.syncComboDatum({id:this.id,style:{x:n,y:i}}),Ir(this)}render(t,e=this){super.render(t,e),this.drawCollapsedMarkerShape(t,e)}update(t={}){super.update(t),this.updateComboPosition(this.parsedAttributes)}onframe(){super.onframe(),this.attributes.collapsed||this.updateComboPosition(this.parsedAttributes),this.drawKeyShape(this.parsedAttributes,this)}animate(t,e){const n=super.animate(this.attributes.collapsed?t:t.map(i=>{var{x:s,y:r,z:a,transform:l}=i,c=ma(i,["x","y","z","transform"]);return c}),e);return n&&new Proxy(n,{set:(i,s,r)=>(s==="currentTime"&&Promise.resolve().then(()=>this.onframe()),Reflect.set(i,s,r))})}}Zo.defaultStyleProps={childrenNode:[],droppable:!0,draggable:!0,collapsed:!1,collapsedSize:32,collapsedMarker:!0,collapsedMarkerZIndex:1,collapsedMarkerFontSize:12,collapsedMarkerTextAlign:"center",collapsedMarkerTextBaseline:"middle",collapsedMarkerType:"child-count"};class Uc extends Zo{constructor(t){super(t)}drawKeyShape(t,e){return this.upsert("key",nt.Cd,this.getKeyStyle(t),e)}getKeyStyle(t){const{collapsed:e}=t,n=super.getKeyStyle(t),[i]=this.getKeySize(t);return Object.assign(Object.assign(Object.assign({},n),e&&Vn(n,"collapsed")),{r:i/2})}getCollapsedKeySize(t){const[e,n]=Pi(t.collapsedSize),i=Math.max(e,n)/2;return[i*2,i*2,0]}getExpandedKeySize(t){const e=this.getContentBBox(t),[n,i]=Z(e),s=Math.sqrt(Math.pow(n,2)+Math.pow(i,2))/2;return[s*2,s*2,0]}getIntersectPoint(t,e=!1){const n=this.getShape("key").getBounds();return Yi(t,n,e)}}class Kc extends Zo{constructor(t){super(t)}drawKeyShape(t,e){return this.upsert("key",nt.UL,this.getKeyStyle(t),e)}getKeyStyle(t){const e=super.getKeyStyle(t),[n,i]=this.getKeySize(t);return Object.assign(Object.assign(Object.assign({},e),t.collapsed&&Vn(e,"collapsed")),{width:n,height:i,x:-n/2,y:-i/2})}}var Yc=y(47182);const Gc={padding:10};function va(o,t,e,n,i,s){const{padding:r}=Object.assign(Gc,s),a=N(e,r),l=N(n,r),c=[o,...i,t];let d=null;const u=[];for(let h=0,f=c.length;hs?"N":"S":n===s?e>i?"W":"E":null}function Nr(o,t){return t==="N"||t==="S"?dn(o):fn(o)}function ba(o,t,e){const n=[o[0],t[1]],i=[t[0],o[1]],s=Ci(o,n),r=Ci(o,i),a=e?Xc[e]:null,l=s===e||s!==a&&r!==e?n:i;return{points:[l],direction:Ci(l,t)}}function ws(o,t,e){if(ce(o,e)){const n=ts(o,t,e);return{points:[n],direction:Ci(n,t)}}else{const n=te(o,e),s=["left","right"].includes(ye(o,e))?[t[0],n[1]]:[n[0],t[1]];return{points:[s],direction:Ci(s,t)}}}function Ea(o,t,e,n){const i=ce(t,e)?t:te(t,e),s=[[i[0],o[1]],[o[0],i[1]]],r=s.filter(l=>ie(l,e)&&!Jt(l,e,!0)),a=r.filter(l=>Ci(l,o)!==n);if(a.length>0){const l=a.find(c=>Ci(o,c)===n)||a[0];return{points:[l],direction:Ci(l,t)}}else{const l=(0,Yc.Z)(s,r)[0],c=wi(t,l,Nr(e,n)/2);return{points:[ts(c,o,e),c],direction:Ci(c,t)}}}function Qc(o,t,e,n){let i=ws(o,t,e);const s=Hn(i.points[0]);if(Bt(s,n)){i=ws(t,o,n);const r=Hn(i.points[0]);if(Bt(r,e)){const a=wi(o,s,Nr(e,Ci(o,s))/2),l=wi(t,r,Nr(n,Ci(t,r))/2),c=[(a[0]+l[0])/2,(a[1]+l[1])/2],d=ws(o,c,e),u=Ea(c,t,n,d.direction);i.points=[d.points[0],u.points[0]],i.direction=u.direction}}return i}function Ar(o,t,e,n,i){const r=Ft([e,n]),a=re(t,r.center)>re(o,r.center),[l,c]=a?[t,o]:[o,t],d=dn(r)+fn(r);let u;if(i){const g=[l[0]+d*Math.cos(ya[i]),l[1]+d*Math.sin(ya[i])];u=wi(te(g,r),g,.01)}else u=wi(te(l,r),l,-.01);let h=ts(u,c,r),f=[Bi(u,2),Bi(h,2)];if((0,xt.Z)(Bi(u),Bi(h))){const g=bn(Qe(u,l),[1,0,0])+Math.PI/2;h=[c[0]+d*Math.cos(g),c[1]+d*Math.sin(g),0],h=Bi(wi(te(h,r),c,-.01),2);const p=ts(u,h,r);f=[u,p,h]}return{points:a?f.reverse():f,direction:Ci(a?u:h,t)}}function ts(o,t,e){let n=[o[0],t[1]];return Bt(n,e)&&(n=[t[0],o[1]]),n}function xa(o,t,e,n,i){let l=typeof t=="number"?t:.5;t==="start"&&(l=0),t==="end"&&(l=.99);const c=En(o.getPoint(l)),d=En(o.getPoint(l+.01));let u=t==="start"?"left":t==="end"?"right":"center";if(so(c,d)||!e){const[E,x]=Sa(o,l,n,i);return{transform:[["translate",E,x]],textAlign:u}}let h=Math.atan2(d[1]-c[1],d[0]-c[0]);d[0]{const c=s[l-1]||n,d=s[l+1]||i;if(!mo(c,a,d)&&t){const[u,h]=nd(c,a,d,t);r.push(["L",u[0],u[1]],["Q",a[0],a[1],h[0],h[1]],["L",h[0],h[1]])}else r.push(["L",a[0],a[1]])}),r.push(["L",i[0],i[1]]),e&&r.push(["Z"]),r}function nd(o,t,e,n){const i=hn(o,t),s=hn(e,t),r=Math.min(n,Math.min(i,s)/2),a=[t[0]-r/i*(t[0]-o[0]),t[1]-r/i*(t[1]-o[1])],l=[t[0]-r/s*(t[0]-e[0]),t[1]-r/s*(t[1]-e[1])];return[a,l]}const id=o=>{const t=Math.PI/2,e=dn(o)/2,n=fn(o)/2,i=Math.atan2(e,n)/2,s=Math.atan2(n,e)/2;return{top:[-t-s,-t+s],"top-right":[-t+s,-i],"right-top":[-t+s,-i],right:[-i,i],"bottom-right":[i,t-s],"right-bottom":[i,t-s],bottom:[t-s,t+s],"bottom-left":[t+s,Math.PI-i],"left-bottom":[t+s,Math.PI-i],left:[Math.PI-i,Math.PI+i],"top-left":[Math.PI+i,-t-s],"left-top":[Math.PI+i,-t-s]}};function Oa(o,t,e,n,i){const s=N(o),r=o.getCenter();let a=n&&lo(n),l=i&&lo(i);if(!a||!l){const c=id(s),d=c[t][0],u=c[t][1],[h,f]=Z(s),g=Math.max(h,f),p=ae(r,[g*Math.cos(d),g*Math.sin(d),0]),m=ae(r,[g*Math.cos(u),g*Math.sin(u),0]);a=Br(o,p),l=Br(o,m),e||([a,l]=[l,a])}return[a,l]}function od(o,t,e,n,i,s){const r=o.getPorts()[i||s],a=o.getPorts()[s||i];let[l,c]=Oa(o,t,e,r,a);const d=sd(o,l,c,n);return r&&(l=ns(r,d[0])),a&&(c=ns(a,d[d.length-1])),wa(l,c,d)}function sd(o,t,e,n){const i=o.getCenter();if((0,xt.Z)(t,e)){const s=Qe(t,i),r=[n*Math.sign(s[0])||n/2,n*Math.sign(s[1])||-n/2,0];return[ae(t,r),ae(e,nn(r,[1,-1,1]))]}return[wi(i,t,re(i,t)+n),wi(i,e,re(i,e)+n)]}function rd(o,t,e,n,i,s,r){const a=zr(o),l=a[s||r],c=a[r||s];let[d,u]=Oa(o,e,n,l,c);const h=ad(o,d,u,i);return l&&(d=ns(l,h[0])),c&&(u=ns(c,h[h.length-1])),Tr([d,...h,u],t)}function ad(o,t,e,n){const i=[],s=N(o);if((0,xt.Z)(t,e))switch(ye(t,s)){case"left":i.push([t[0]-n,t[1]]),i.push([t[0]-n,t[1]+n]),i.push([t[0],t[1]+n]);break;case"right":i.push([t[0]+n,t[1]]),i.push([t[0]+n,t[1]+n]),i.push([t[0],t[1]+n]);break;case"top":i.push([t[0],t[1]-n]),i.push([t[0]+n,t[1]-n]),i.push([t[0]+n,t[1]]);break;case"bottom":i.push([t[0],t[1]+n]),i.push([t[0]+n,t[1]+n]),i.push([t[0]+n,t[1]]);break}else{const r=ye(t,s),a=ye(e,s);if(r===a){const l=r;let c,d;switch(l){case"left":c=Math.min(t[0],e[0])-n,i.push([c,t[1]]),i.push([c,e[1]]);break;case"right":c=Math.max(t[0],e[0])+n,i.push([c,t[1]]),i.push([c,e[1]]);break;case"top":d=Math.min(t[1],e[1])-n,i.push([t[0],d]),i.push([e[0],d]);break;case"bottom":d=Math.max(t[1],e[1])+n,i.push([t[0],d]),i.push([e[0],d]);break}}else{const l=(h,f)=>({left:[f[0]-n,f[1]],right:[f[0]+n,f[1]],top:[f[0],f[1]-n],bottom:[f[0],f[1]+n]})[h],c=l(r,t),d=l(a,e),u=ts(c,d,s);i.push(c,u,d)}}return i}function Lr(o,t){const e=new Set,n=new Set,i=new Set;return o.forEach(s=>{t(s).forEach(a=>{e.add(a),o.includes(a.source)&&o.includes(a.target)?n.add(a):i.add(a)})}),{edges:Array.from(e),internal:Array.from(n),external:Array.from(i)}}function Ca(o,t){const e=[];let n=o;for(;n;){e.push(n);const i=t(z(n));if(i)n=i;else break}if(e.some(i=>{var s;return(s=i.style)===null||s===void 0?void 0:s.collapsed})){const i=e.reverse().findIndex(Oi);return e[i]||e.at(-1)}return o}function ld(o,t){return t||(o<4?10:o===4?12:o*2.5)}const cd=(o,t)=>{const e=Math.max(o,t)/2;return[["M",-o/2,0],["A",e,e,0,1,0,2*e-o/2,0],["A",e,e,0,1,0,-o/2,0],["Z"]]},Da=(o,t)=>[["M",-o/2,0],["L",o/2,-t/2],["L",o/2,t/2],["Z"]],dd=(o,t)=>[["M",-o/2,0],["L",0,-t/2],["L",o/2,0],["L",0,t/2],["Z"]],ud=(o,t)=>[["M",-o/2,0],["L",o/2,-t/2],["L",4*o/5-o/2,0],["L",o/2,t/2],["Z"]],hd=(o,t)=>[["M",-o/2,-t/2],["L",o/2,-t/2],["L",o/2,t/2],["L",-o/2,t/2],["Z"]],fd=(o,t)=>{const e=o/2,n=o/7,i=o-n;return[["M",-e,0],["L",0,-t/2],["L",0,t/2],["Z"],["M",i-e,-t/2],["L",i+n-e,-t/2],["L",i+n-e,t/2],["L",i-e,t/2],["Z"]]},gd=(o,t)=>[["M",o/2,-t/2],["L",-o/2,0],["L",o/2,0],["L",-o/2,0],["L",o/2,t/2]];var Os=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i(s==="currentTime"&&Promise.resolve().then(()=>this.onframe()),Reflect.set(i,s,r))})}}ao.defaultStyleProps={badge:!0,badgeOffsetX:0,badgeOffsetY:0,badgePlacement:"suffix",isBillboard:!0,label:!0,labelAutoRotate:!0,labelIsBillboard:!0,labelMaxWidth:"80%",labelOffsetX:4,labelOffsetY:0,labelPlacement:"center",labelTextBaseline:"middle",labelWordWrap:!1,halo:!1,haloDroppable:!1,haloLineDash:0,haloLineWidth:12,haloPointerEvents:"none",haloStrokeOpacity:.25,haloZIndex:-1,loop:!0,startArrow:!1,startArrowLineDash:0,startArrowLineJoin:"round",startArrowLineWidth:1,startArrowTransformOrigin:"center",startArrowType:"vee",endArrow:!1,endArrowLineDash:0,endArrowLineJoin:"round",endArrowLineWidth:1,endArrowTransformOrigin:"center",endArrowType:"vee",loopPlacement:"top",loopClockwise:!0};class Do extends ao{constructor(t){super(si({style:Do.defaultStyleProps},t))}getKeyPath(t){const[e,n]=this.getEndpoints(t),{controlPoints:i,curvePosition:s,curveOffset:r}=t,a=this.getControlPoints(e,n,td(s),qc(r),i);return wa(e,n,a)}getControlPoints(t,e,n,i,s){return(s==null?void 0:s.length)===2?s:[Pr(t,e,n[0],i[0]),Pr(t,e,n[1],i[1])]}}Do.defaultStyleProps={curvePosition:.5,curveOffset:20};class Cs extends Do{constructor(t){super(si({style:Cs.defaultStyleProps},t))}getControlPoints(t,e,n,i){const s=e[0]-t[0];return[[t[0]+s*n[0]+i[0],t[1]],[e[0]-s*n[1]+i[1],e[1]]]}}Cs.defaultStyleProps={curvePosition:[.5,.5],curveOffset:[0,0]};class Ds extends Do{constructor(t){super(si({style:Ds.defaultStyleProps},t))}get ref(){return this.context.model.getRootsData()[0]}getEndpoints(t){if(this.sourceNode.id===this.ref.id)return super.getEndpoints(t);const e=$e(this.ref),n=this.sourceNode.getIntersectPoint(e,!0),i=this.targetNode.getIntersectPoint(e);return[n,i]}toRadialCoordinate(t){const e=$e(this.ref),n=re(t,e),i=ee(Qe(t,e));return[n,i]}getControlPoints(t,e,n,i){const[s,r]=this.toRadialCoordinate(t),[a]=this.toRadialCoordinate(e),l=a-s;return[[t[0]+(l*n[0]+i[0])*Math.cos(r),t[1]+(l*n[0]+i[0])*Math.sin(r)],[e[0]-(l*n[1]-i[0])*Math.cos(r),e[1]-(l*n[1]-i[0])*Math.sin(r)]]}}Ds.defaultStyleProps={curvePosition:.5,curveOffset:20};class Ms extends Do{constructor(t){super(si({style:Ms.defaultStyleProps},t))}getControlPoints(t,e,n,i){const s=e[1]-t[1];return[[t[0],t[1]+s*n[0]+i[0]],[e[0],e[1]-s*n[1]+i[1]]]}}Ms.defaultStyleProps={curvePosition:[.5,.5],curveOffset:[0,0]};class Rs extends ao{constructor(t){super(si({style:Rs.defaultStyleProps},t))}getKeyPath(t){const[e,n]=this.getEndpoints(t);return[["M",e[0],e[1]],["L",n[0],n[1]]]}}Rs.defaultStyleProps={};const pd={enableObstacleAvoidance:!1,offset:10,maxAllowedDirectionChange:Math.PI/2,maximumLoops:3e3,gridSize:5,startDirections:["top","right","bottom","left"],endDirections:["top","right","bottom","left"],directionMap:{right:{stepX:1,stepY:0},left:{stepX:-1,stepY:0},bottom:{stepX:0,stepY:1},top:{stepX:0,stepY:-1}},penalties:{0:0,90:0},distFunc:hn},oo=o=>`${Math.round(o[0])}|||${Math.round(o[1])}`;function Mo(o,t){const e=n=>Math.round(n/t);return(0,ge.Z)(o)?e(o):o.map(e)}function md(o,t){const e=Math.abs(o-t);return e>Math.PI?2*Math.PI-e:e}function Ma(o,t){const e=t[0]-o[0],n=t[1]-o[1];return!e&&!n?0:Math.atan2(n,e)}function Ra(o,t,e,n){const i=Ma(o,t),s=e[oo(o)],a=Ma(s||n,o);return md(a,i)}const vd=(o,t)=>{const{offset:e,gridSize:n}=t,i={};return o.forEach(s=>{if(!s||s.destroyed||!s.isVisible())return;const r=it(s.getRenderBounds(),e);for(let a=Mo(r.min[0],n);a<=Mo(r.max[0],n);a+=1)for(let l=Mo(r.min[1],n);l<=Mo(r.max[1],n);l+=1)i[`${a}|||${l}`]=!0}),i};function Ia(o,t,e){return Math.min(...t.map(n=>e(o,n)))}function yd(o,t,e){let n=o[0],i=e(o[0],t);for(let s=0;s{if(!t)return[o];const{directionMap:i,offset:s}=n,r=it(t.getRenderBounds(),s),a=Object.keys(i).reduce((l,c)=>{if(e.includes(c)){const d=i[c],[u,h]=Z(r),f=[o[0]+d.stepX*u,o[1]+d.stepY*h],g=we(r);for(let p=0;pMo(l,n.gridSize))},bd=(o,t,e,n,i,s,r)=>{const a=[];let l=[s[0]===n[0]?n[0]:o[0]*r,s[1]===n[1]?n[1]:o[1]*r];a.unshift(l);let c=o,d=t[oo(c)];for(;d;){const f=d,g=c;Ra(f,g,t,e)&&(l=[f[0]===g[0]?l[0]:f[0]*r,f[1]===g[1]?l[1]:f[1]*r],a.unshift(l)),d=t[oo(f)],c=f}const u=i.map(f=>[f[0]*r,f[1]*r]),h=yd(u,l,hn);return a.unshift(h),a};function Ed(o,t,e,n){const i=Rn(o.getCenter()),s=Rn(t.getCenter()),r=Object.assign(pd,n),{gridSize:a}=r,l=r.enableObstacleAvoidance?e:[o,t],c=vd(l,r),d=Mo(i,a),u=Mo(s,a),h=Na(i,o,r.startDirections,r),f=Na(s,t,r.endDirections,r);h.forEach(k=>delete c[oo(k)]),f.forEach(k=>delete c[oo(k)]);const g={},p={},m={},E={},x={},O=new xd;for(let k=0;koo(k));let X=r.maximumLoops,U,V=1/0;for(const[k,yt]of Object.entries(g))x[k]<=V&&(V=x[k],U=yt);for(;Object.keys(g).length>0&&X>0;){const k=O.minId(!1);if(k)U=g[k];else break;const yt=oo(U);if(j.includes(yt))return bd(U,m,d,s,h,u,a);delete g[yt],O.remove(yt),p[yt]=!0;for(const zt of Object.values(r.directionMap)){const q=ae(U,[zt.stepX,zt.stepY]),Lt=oo(q);if(p[Lt])continue;const Nt=Ra(U,q,m,d);if(Nt>r.maxAllowedDirectionChange||c[Lt])continue;g[Lt]||(g[Lt]=q);const Tt=r.penalties[Nt],St=r.distFunc(U,q)+(isNaN(Tt)?a:Tt),kt=E[yt]+St,rn=E[Lt];rn&&kt>=rn||(m[Lt]=U,E[Lt]=kt,x[Lt]=kt+Ia(q,f,r.distFunc),O.add({id:Lt,value:x[Lt]}))}X-=1}return[]}class xd{constructor(){this.arr=[],this.map={},this.arr=[],this.map={}}_innerAdd(t,e){let n=0,i=e-1;for(;i-n>1;){const s=Math.floor((n+i)/2);if(this.arr[s].value>t.value)i=s;else if(this.arr[s].value=0;e--)this.map[this.arr[e].id]?t=this.arr[e].id:this.arr.splice(e,1);return t}_findFirstId(){for(;this.arr.length;){const t=this.arr.shift();if(this.map[t.id])return t.id}}minId(t){return t?this._clearAndGetMinId():this._findFirstId()}}class Is extends ao{constructor(t){super(si({style:Is.defaultStyleProps},t))}getControlPoints(t){const{router:e}=t,{sourceNode:n,targetNode:i}=this,[s,r]=this.getEndpoints(t,!1);let a=[];if(!e)a=t.controlPoints;else if(e.type==="shortest-path"){const l=this.context.element.getNodes();a=Ed(n,i,l,e),a.length||(a=va(s,r,n,i,t.controlPoints,{padding:e.offset}))}else e.type==="orth"&&(a=va(s,r,n,i,t.controlPoints,e));return a}getPoints(t){const e=this.getControlPoints(t),[n,i]=this.getEndpoints(t,!0,e);return[n,...e,i]}getKeyPath(t){const e=this.getPoints(t);return Tr(e,t.radius)}getLoopPath(t){const{sourcePort:e,targetPort:n,radius:i}=t,s=this.sourceNode,r=N(s),a=Math.max(fn(r),dn(r))/4,{placement:l,clockwise:c,dist:d=a}=Vn(this.getGraphicStyle(t),"loop");return rd(s,i,l,c,d,e,n)}}Is.defaultStyleProps={radius:0,controlPoints:[],router:!1};class Ns extends ao{constructor(t){super(si({style:Ns.defaultStyleProps},t))}getKeyPath(t){const{curvePosition:e,curveOffset:n}=t,[i,s]=this.getEndpoints(t),r=t.controlPoint||Pr(i,s,e,n);return ed(i,s,r)}}Ns.defaultStyleProps={curvePosition:.5,curveOffset:30};function es(o){return o instanceof Qi&&o.type==="node"}function Aa(o){return o instanceof ao}function _r(o){return o instanceof Zo}function Sd(o){return es(o)||Aa(o)||_r(o)}function wd(o,t){return!o||!t?!1:o===t}const Od={top:[.5,0],right:[1,.5],bottom:[.5,1],left:[0,.5],default:[.5,.5]};function jr(o,t,e=Od,n=!0){const i=[.5,.5],s=(0,ve.Z)(t)?(0,ti.Z)(e,t.toLocaleLowerCase(),i):t;if(!n&&(0,ve.Z)(t))return s;const[r,a]=s||i;return[o.min[0]+fn(o)*r,o.min[1]+dn(o)*a]}function zr(o){if(!o)return{};const t=o.getPorts();return(o.attributes.ports||[]).forEach((n,i)=>{var s;const{key:r,placement:a}=n;Pa(n)&&(t[s=r||i]||(t[s]=jn(o.getShape("key").getBounds(),a)))}),t}function Pa(o){const{r:t}=o;return!t||Number(t)===0}function lo(o){return gi(o)?o:o.getPosition()}function Cd(o,t,e,n){const i=Ta(o,t,e,n),s=Ta(t,o,n,e);return[i,s]}function Ta(o,t,e,n){const i=zr(o);if(e)return i[e];const s=Object.values(i);if(s.length===0)return;const r=s.map(c=>lo(c)),a=Dd(t,n),[l]=Po(r,a);return s.find(c=>lo(c)===l)}function Dd(o,t){const e=zr(o);if(t)return[lo(e[t])];const n=Object.values(e);return n.length>0?n.map(i=>lo(i)):[o.getCenter()]}function La(o,t){return _r(o)||es(o)?Br(o,t):ns(o,t)}function ns(o,t){if(!o||!t)return[0,0,0];if(gi(o))return o;if(o.attributes.linkToCenter)return o.getPosition();const e=gi(t)?t:es(t)?t.getCenter():t.getPosition();return Yi(e,o.getBounds())}function Br(o,t){if(!o||!t)return[0,0,0];const e=gi(t)?t:es(t)?t.getCenter():t.getPosition();return o.getIntersectPoint(e)||o.getCenter()}function _a(o,t="bottom",e=0,n=0,i=!1){const s=t.split("-"),[r,a]=jn(o,t),l=s.includes("left")?"right":s.includes("right")?"left":"center";let c=s.includes("top")?"bottom":s.includes("bottom")?"top":"middle";return i&&(c=c==="top"?"bottom":c==="bottom"?"top":c),{transform:[["translate",r+e,a+n]],textBaseline:c,textAlign:l}}function Md(o,t){return[[0,-o],[t*Math.cos(3*Math.PI/10),-t*Math.sin(3*Math.PI/10)],[o*Math.cos(Math.PI/10),-o*Math.sin(Math.PI/10)],[t*Math.cos(Math.PI/10),t*Math.sin(Math.PI/10)],[o*Math.cos(3*Math.PI/10),o*Math.sin(3*Math.PI/10)],[0,t],[-o*Math.cos(3*Math.PI/10),o*Math.sin(3*Math.PI/10)],[-t*Math.cos(Math.PI/10),t*Math.sin(Math.PI/10)],[-o*Math.cos(Math.PI/10),-o*Math.sin(Math.PI/10)],[-t*Math.cos(3*Math.PI/10),-t*Math.sin(3*Math.PI/10)]]}function Rd(o,t){const e={};return e.top=[0,-o],e.left=[-o*Math.cos(Math.PI/10),-o*Math.sin(Math.PI/10)],e["left-bottom"]=[-o*Math.cos(3*Math.PI/10),o*Math.sin(3*Math.PI/10)],e.bottom=[0,t],e["right-bottom"]=[o*Math.cos(3*Math.PI/10),o*Math.sin(3*Math.PI/10)],e.right=e.default=[o*Math.cos(Math.PI/10),-o*Math.sin(Math.PI/10)],e}function Id(o,t,e){const n=t/2,i=o/2,s={up:[[-i,n],[i,n],[0,-n]],left:[[-i,0],[i,n],[i,-n]],right:[[-i,n],[-i,-n],[i,0]],down:[[-i,-n],[i,-n],[0,n]]};return s[e]||s.up}function Nd(o,t,e){const n=t/2,i=o/2,s={};return e==="down"?(s.bottom=s.default=[0,n],s.right=[i,-n],s.left=[-i,-n]):e==="left"?(s.top=[i,-n],s.bottom=[i,n],s.left=s.default=[-i,0]):e==="right"?(s.top=[-i,-n],s.bottom=[-i,n],s.right=s.default=[i,0]):(s.left=[-i,n],s.top=s.default=[0,-n],s.right=[i,n]),s}function z0(o,t){return[[o/2,-t/2],[o/2,t/2],[-o/2,t/2],[-o/2,-t/2]]}function Ad(o,t){return[[0,-t/2],[o/2,0],[0,t/2],[-o/2,0]]}function Pd(o){return(0,ti.Z)(o,["style","visibility"])!=="hidden"}function Zr(o,t){"update"in o?o.update(t):o.attr(t)}function Td(o){return[[0,o],[o*Math.sqrt(3)/2,o/2],[o*Math.sqrt(3)/2,-o/2],[0,-o],[-o*Math.sqrt(3)/2,-o/2],[-o*Math.sqrt(3)/2,o/2]]}function Ld(o){(0,So.Z)(o,"__to_be_destroyed__",!0)}function As(o){return(0,ti.Z)(o,"__to_be_destroyed__",!1)}var _d=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class Ps extends Me{constructor(t,e){super(t,Object.assign({},Ps.defaultOptions,e)),this.onCollapseExpand=n=>_d(this,void 0,void 0,function*(){if(!this.validate(n))return;const{target:i}=n;if(!Sd(i))return;const s=i.id,{model:r,graph:a}=this.context,l=r.getElementDataById(s);if(!l)return!1;const{onCollapse:c,onExpand:d,animation:u}=this.options;Oi(l)?(yield a.expandElement(s,u),d==null||d(s)):(yield a.collapseElement(s,u),c==null||c(s))}),this.bindEvents()}update(t){this.unbindEvents(),super.update(t),this.bindEvents()}bindEvents(){const{graph:t}=this.context,{trigger:e}=this.options;t.on(`node:${e}`,this.onCollapseExpand),t.on(`combo:${e}`,this.onCollapseExpand)}unbindEvents(){const{graph:t}=this.context,{trigger:e}=this.options;t.off(`node:${e}`,this.onCollapseExpand),t.off(`combo:${e}`,this.onCollapseExpand)}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}destroy(){this.unbindEvents(),super.destroy()}}Ps.defaultOptions={enable:!0,animation:!0,trigger:B.DBLCLICK};var jd=y(63178),Ts=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};const zd="g6-create-edge-assist-edge-id",Ls="g6-create-edge-assist-node-id";class _s extends Me{constructor(t,e){super(t,Object.assign({},_s.defaultOptions,e)),this.drop=n=>Ts(this,void 0,void 0,function*(){const{targetType:i}=n;["combo","node"].includes(i)&&this.source?yield this.handleCreateEdge(n):yield this.cancelEdge()}),this.handleCreateEdge=n=>Ts(this,void 0,void 0,function*(){var i,s,r;if(!this.validate(n))return;const{graph:a,canvas:l,batch:c,element:d}=this.context,{style:u}=this.options;if(this.source){this.createEdge(n),yield this.cancelEdge();return}c.startBatch(),l.setCursor("crosshair"),this.source=this.getSelectedNodeIDs([n.target.id])[0];const h=a.getElementData(this.source);a.addNodeData([{id:Ls,style:{visibility:"hidden",ports:[{key:"port-1",placement:[.5,.5]}],x:(i=h.style)===null||i===void 0?void 0:i.x,y:(s=h.style)===null||s===void 0?void 0:s.y}}]),a.addEdgeData([{id:zd,source:this.source,target:Ls,style:Object.assign({pointerEvents:"none"},u)}]),yield(r=d.draw({animation:!1}))===null||r===void 0?void 0:r.finished}),this.updateAssistEdge=n=>Ts(this,void 0,void 0,function*(){var i;if(!this.source)return;const{model:s,element:r}=this.context;s.translateNodeTo(Ls,[n.canvas.x,n.canvas.y]),yield(i=r.draw({animation:!1,silence:!0}))===null||i===void 0?void 0:i.finished}),this.createEdge=n=>{var i,s;const{graph:r}=this.context,{style:a,onFinish:l,onCreate:c}=this.options;if(((i=n.target)===null||i===void 0?void 0:i.id)===void 0||this.source===void 0)return;const u=(s=this.getSelectedNodeIDs([n.target.id]))===null||s===void 0?void 0:s[0],h=`${this.source}-${u}-${(0,jd.Z)()}`,f=c({id:h,source:this.source,target:u,style:a});r.addEdgeData([f]),l(f)},this.cancelEdge=()=>Ts(this,void 0,void 0,function*(){var n;if(!this.source)return;const{graph:i,element:s,batch:r}=this.context;i.removeNodeData([Ls]),this.source=void 0,yield(n=s.draw({animation:!1}))===null||n===void 0?void 0:n.finished,r.endBatch()}),this.bindEvents()}update(t){super.update(t),this.bindEvents()}bindEvents(){const{graph:t}=this.context,{trigger:e}=this.options;this.unbindEvents(),e==="click"?(t.on(vt.CLICK,this.handleCreateEdge),t.on(J.CLICK,this.handleCreateEdge),t.on(oe.CLICK,this.cancelEdge),t.on(at.CLICK,this.cancelEdge)):(t.on(vt.DRAG_START,this.handleCreateEdge),t.on(J.DRAG_START,this.handleCreateEdge),t.on(B.POINTER_UP,this.drop)),t.on(B.POINTER_MOVE,this.updateAssistEdge)}getSelectedNodeIDs(t){return Array.from(new Set(this.context.graph.getElementDataByState("node",this.options.state).map(e=>e.id).concat(t)))}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}unbindEvents(){const{graph:t}=this.context;t.off(vt.CLICK,this.handleCreateEdge),t.off(J.CLICK,this.handleCreateEdge),t.off(oe.CLICK,this.cancelEdge),t.off(at.CLICK,this.cancelEdge),t.off(vt.DRAG_START,this.handleCreateEdge),t.off(J.DRAG_START,this.handleCreateEdge),t.off(B.POINTER_UP,this.drop),t.off(B.POINTER_MOVE,this.updateAssistEdge)}destroy(){this.unbindEvents(),super.destroy()}}_s.defaultOptions={animation:!0,enable:!0,style:{},trigger:"drag",onCreate:o=>o,onFinish:()=>{}};var js=y(78431),ja=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class zs extends Me{constructor(t,e){super(t,Object.assign({},zs.defaultOptions,e)),this.isDragging=!1,this.onDragStart=n=>{this.validate(n)&&(this.isDragging=!0,this.context.canvas.setCursor("grabbing"))},this.onDrag=n=>{if(!this.isDragging)return;const{x:i,y:s}=n.movement;i|s&&this.translate([i,s],!1)},this.onDragEnd=()=>{var n,i;this.isDragging=!1,this.context.canvas.setCursor(this.defaultCursor),(i=(n=this.options).onFinish)===null||i===void 0||i.call(n)},this.invokeOnFinish=(0,js.Z)(()=>{var n,i;(i=(n=this.options).onFinish)===null||i===void 0||i.call(n)},300),this.shortcut=new xn(t.graph),this.bindEvents(),this.defaultCursor=this.context.canvas.getConfig().cursor||"default"}update(t){this.unbindEvents(),super.update(t),this.bindEvents()}bindEvents(){const{trigger:t}=this.options;if((0,dt.Z)(t)){const{up:e=[],down:n=[],left:i=[],right:s=[]}=t;this.shortcut.bind(e,r=>this.onTranslate([0,1],r)),this.shortcut.bind(n,r=>this.onTranslate([0,-1],r)),this.shortcut.bind(i,r=>this.onTranslate([1,0],r)),this.shortcut.bind(s,r=>this.onTranslate([-1,0],r))}else{const{graph:e}=this.context;e.on(B.DRAG_START,this.onDragStart),e.on(B.DRAG,this.onDrag),e.on(B.DRAG_END,this.onDragEnd)}}onTranslate(t,e){return ja(this,void 0,void 0,function*(){if(!this.validate(e))return;const{sensitivity:n}=this.options,i=n*-1;yield this.translate(nn(t,i),this.options.animation),this.invokeOnFinish()})}translate(t,e){return ja(this,void 0,void 0,function*(){t=this.clampByDirection(t),t=this.clampByRange(t),yield this.context.graph.translateBy(t,e)})}clampByDirection([t,e]){const{direction:n}=this.options;return n==="x"?e=0:n==="y"&&(t=0),[t,e]}clampByRange([t,e]){const{viewport:n,canvas:i}=this.context,[s,r]=i.getSize(),[a,l,c,d]=me(this.options.range),u=[r*a,s*l,r*c,s*d],h=it(ut(n.getCanvasCenter()),u),f=Qe(n.getViewportCenter(),[t,e,0]);if(!Bt(f,h)){const{min:[g,p],max:[m,E]}=h;(f[0]0||f[0]>m&&t<0)&&(t=0),(f[1]0||f[1]>E&&e<0)&&(e=0)}return[t,e]}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return typeof e=="function"?e(t):!!e}unbindEvents(){this.shortcut.unbindAll();const{graph:t}=this.context;t.off(B.DRAG_START,this.onDragStart),t.off(B.DRAG,this.onDrag),t.off(B.DRAG_END,this.onDragEnd)}destroy(){this.shortcut.destroy(),this.unbindEvents(),this.context.canvas.setCursor(this.defaultCursor),super.destroy()}}zs.defaultOptions={enable:o=>"targetType"in o?o.targetType==="canvas":!0,sensitivity:10,direction:"both",range:1/0};var za=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class is extends Me{constructor(t,e){super(t,Object.assign({},is.defaultOptions,e)),this.enable=!1,this.enableElements=["node","combo"],this.target=[],this.shadowOrigin=[0,0],this.hiddenEdges=[],this.isDragging=!1,this.onDrop=n=>za(this,void 0,void 0,function*(){var i;if(this.options.dropEffect!=="link")return;const{model:s,element:r}=this.context,a=n.target.id;this.target.forEach(l=>{const c=s.getParentData(l,st);c&&z(c)===a&&s.refreshComboData(a),s.setParent(l,a,st)}),yield(i=r==null?void 0:r.draw({animation:!0}))===null||i===void 0?void 0:i.finished}),this.setCursor=n=>{if(this.isDragging)return;const{type:i}=n,{canvas:s}=this.context,{cursor:r}=this.options;i===B.POINTER_ENTER?s.setCursor((r==null?void 0:r.grab)||"grab"):s.setCursor((r==null?void 0:r.default)||"default")},this.onDragStart=this.onDragStart.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragEnd=this.onDragEnd.bind(this),this.onDrop=this.onDrop.bind(this),this.bindEvents()}update(t){this.unbindEvents(),super.update(t),this.bindEvents()}bindEvents(){const{graph:t,canvas:e}=this.context,n=e.getLayer().getContextService().$canvas;n&&(n.addEventListener("blur",this.onDragEnd),n.addEventListener("contextmenu",this.onDragEnd)),this.enableElements.forEach(i=>{t.on(`${i}:${B.DRAG_START}`,this.onDragStart),t.on(`${i}:${B.DRAG}`,this.onDrag),t.on(`${i}:${B.DRAG_END}`,this.onDragEnd),t.on(`${i}:${B.POINTER_ENTER}`,this.setCursor),t.on(`${i}:${B.POINTER_LEAVE}`,this.setCursor)}),["link"].includes(this.options.dropEffect)&&(t.on(J.DROP,this.onDrop),t.on(oe.DROP,this.onDrop))}getSelectedNodeIDs(t){return Array.from(new Set(this.context.graph.getElementDataByState("node",this.options.state).map(e=>e.id).concat(t)))}getDelta(t){const e=this.context.graph.getZoom();return Ln([t.dx,t.dy],e)}onDragStart(t){var e;if(this.enable=this.validate(t),!this.enable)return;const{batch:n,canvas:i}=this.context;i.setCursor(((e=this.options.cursor)===null||e===void 0?void 0:e.grabbing)||"grabbing"),this.isDragging=!0,n.startBatch(),this.target=this.getSelectedNodeIDs([t.target.id]),this.hideEdge(),this.context.graph.frontElement(this.target),this.options.shadow&&this.createShadow(this.target)}onDrag(t){if(!this.enable)return;const e=this.getDelta(t);this.options.shadow?this.moveShadow(e):this.moveElement(this.target,e)}onDragEnd(){var t,e,n;if(this.enable=!1,this.options.shadow){if(!this.shadow)return;this.shadow.style.visibility="hidden";const{x:r=0,y:a=0}=this.shadow.attributes,[l,c]=Qe([+r,+a],this.shadowOrigin);this.moveElement(this.target,[l,c])}this.showEdges(),(e=(t=this.options).onFinish)===null||e===void 0||e.call(t,this.target);const{batch:i,canvas:s}=this.context;i.endBatch(),s.setCursor(((n=this.options.cursor)===null||n===void 0?void 0:n.grab)||"grab"),this.isDragging=!1,this.target=[]}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}moveElement(t,e){return za(this,void 0,void 0,function*(){const{graph:n,model:i}=this.context,{dropEffect:s}=this.options;s==="move"&&t.forEach(r=>i.refreshComboData(r)),n.translateElementBy(Object.fromEntries(t.map(r=>[r,e])),!1)})}moveShadow(t){if(!this.shadow)return;const{x:e=0,y:n=0}=this.shadow.attributes,[i,s]=t;this.shadow.attr({x:+e+i,y:+n+s})}createShadow(t){const e=Vn(this.options,"shadow"),n=Ft(t.map(c=>this.context.element.getElement(c).getBounds())),[i,s]=n.min;this.shadowOrigin=[i,s];const[r,a]=Z(n),l={width:r,height:a,x:i,y:s};this.shadow?this.shadow.attr(Object.assign(Object.assign(Object.assign({},e),l),{visibility:"visible"})):(this.shadow=new nt.UL({style:Object.assign(Object.assign(Object.assign({$layer:"transient"},e),l),{pointerEvents:"none"})}),this.context.canvas.appendChild(this.shadow))}showEdges(){this.options.shadow||this.hiddenEdges.length===0||(this.context.graph.showElement(this.hiddenEdges),this.hiddenEdges=[])}hideEdge(){const{hideEdge:t,shadow:e}=this.options;if(t==="none"||e)return;const{graph:n}=this.context;t==="all"?this.hiddenEdges=n.getEdgeData().map(z):this.hiddenEdges=Array.from(new Set(this.target.map(i=>n.getRelatedEdgesData(i,t).map(z)).flat())),n.hideElement(this.hiddenEdges)}unbindEvents(){const{graph:t,canvas:e}=this.context,n=e.getLayer().getContextService().$canvas;n&&(n.removeEventListener("blur",this.onDragEnd),n.removeEventListener("contextmenu",this.onDragEnd)),this.enableElements.forEach(i=>{t.off(`${i}:${B.DRAG_START}`,this.onDragStart),t.off(`${i}:${B.DRAG}`,this.onDrag),t.off(`${i}:${B.DRAG_END}`,this.onDragEnd),t.off(`${i}:${B.POINTER_ENTER}`,this.setCursor),t.off(`${i}:${B.POINTER_LEAVE}`,this.setCursor)}),t.off(`combo:${B.DROP}`,this.onDrop),t.off(`canvas:${B.DROP}`,this.onDrop)}destroy(){var t;this.unbindEvents(),(t=this.shadow)===null||t===void 0||t.destroy(),super.destroy()}}is.defaultOptions={animation:!0,enable:o=>["node","combo"].includes(o.targetType),dropEffect:"move",state:"selected",hideEdge:"none",shadow:!1,shadowZIndex:100,shadowFill:"#F3F9FF",shadowFillOpacity:.5,shadowStroke:"#1890FF",shadowStrokeOpacity:.9,shadowLineDash:[5,5],cursor:{default:"default",grab:"grab",grabbing:"grabbing"}};var li=y(67469);class Ba{constructor(t,e){this.context=t,this.options=e||{}}}var Bd=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})},Zd=function(o,t){var e={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&t.indexOf(n)<0&&(e[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(o);i{const s=i.data._isCombo?n.combos:n.nodes,{x:r,y:a,z:l=0}=i.data;s==null||s.push({id:i.id,style:{x:r,y:a,z:l}})}),e.forEach(i=>{const{id:s,source:r,target:a,data:{points:l=[],controlPoints:c=l.slice(1,l.length-1)}}=i;n.edges.push({id:s,source:r,target:a,style:Object.assign({},c!=null&&c.length?{controlPoints:c.map(En)}:{})})}),n}function Fd(o,t){class e extends Ba{constructor(i,s){if(super(i,s),this.instance=new o({}),this.id=this.instance.id,"stop"in this.instance&&"tick"in this.instance){const r=this.instance;this.stop=r.stop.bind(r),this.tick=a=>{const l=r.tick(a);return Bs(l)}}}execute(i,s){return Bd(this,void 0,void 0,function*(){return Bs(yield this.instance.execute(this.graphData2LayoutModel(i),this.transformOptions((0,kn.Z)({},this.options,s))))})}transformOptions(i){const{onTick:s}=i;return s&&(i.onTick=r=>s(Bs(r))),i}graphData2LayoutModel(i){const{nodes:s=[],edges:r=[],combos:a=[]}=i,l=s.map(f=>{const g=z(f),{data:p,style:m,combo:E}=f,x=Zd(f,["data","style","combo"]),O={id:g,data:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},p),{data:p}),E?{parentId:E}:{}),{style:m}),x)};return m!=null&&m.x&&Object.assign(O.data,{x:m.x}),m!=null&&m.y&&Object.assign(O.data,{y:m.y}),m!=null&&m.z&&Object.assign(O.data,{z:m.z}),O}),c=new Map(l.map(f=>[f.id,f])),d=r.filter(f=>{const{source:g,target:p}=f;return c.has(g)&&c.has(p)}).map(f=>{const{source:g,target:p,data:m,style:E}=f;return{id:z(f),source:g,target:p,data:Object.assign({},m),style:Object.assign({},E)}}),u=a.map(f=>({id:z(f),data:Object.assign({_isCombo:!0},f.data),style:Object.assign({},f.style)})),h=new li.k({nodes:[...l,...u],edges:d});return t.model.model.hasTreeStructure(st)&&(h.attachTreeStructure(st),l.forEach(f=>{const g=t.model.model.getParent(f.id,st);g&&h.hasNode(g.id)&&h.setParent(f.id,g.id,st)})),h}}return e}function $r(o,t,...e){if(t in o)return o[t](...e);if("instance"in o){const n=o.instance;if(t in n)return n[t](...e)}return null}function Za(o,t){if(t in o)return o[t];if("instance"in o){const e=o.instance;if(t in e)return e[t]}return null}var kd=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class Wd extends is{get forceLayoutInstance(){return this.context.layout.getLayoutInstance().find(t=>["d3-force","d3-force-3d"].includes(t==null?void 0:t.id))}validate(t){return this.context.layout?this.forceLayoutInstance?super.validate(t):(Wt.warn("DragElementForce only works with d3-force or d3-force-3d layout"),!1):!1}moveElement(t,e){return kd(this,void 0,void 0,function*(){const n=this.forceLayoutInstance;this.context.graph.getNodeData(t).forEach((i,s)=>{const{x:r=0,y:a=0}=i.style||{};n&&$r(n,"setFixedPosition",t[s],[...ae([+r,+a],e)])})})}onDragStart(t){if(this.enable=this.validate(t),!this.enable)return;this.target=this.getSelectedNodeIDs([t.target.id]),this.hideEdge(),this.context.graph.frontElement(this.target);const e=this.forceLayoutInstance;e&&Za(e,"simulation").alphaTarget(.3).restart(),this.context.graph.getNodeData(this.target).forEach(n=>{const{x:i=0,y:s=0}=n.style||{};e&&$r(e,"setFixedPosition",z(n),[+i,+s])})}onDrag(t){if(!this.enable)return;const e=this.getDelta(t);this.moveElement(this.target,e)}onDragEnd(){const t=this.forceLayoutInstance;t&&Za(t,"simulation").alphaTarget(0),this.context.graph.getNodeData(this.target).forEach(e=>{t&&$r(t,"setFixedPosition",z(e),[null,null,null])})}}var $a=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class Zs extends Me{constructor(t,e){super(t,Object.assign({},Zs.defaultOptions,e)),this.isZoomEvent=n=>!!(n.data&&"scale"in n.data),this.relatedEdgeToUpdate=new Set,this.zoom=this.context.graph.getZoom(),this.fixElementSize=n=>$a(this,void 0,void 0,function*(){if(!this.validate(n))return;const{graph:i}=this.context,{state:s,nodeFilter:r,edgeFilter:a,comboFilter:l}=this.options,c=(s?i.getElementDataByState("node",s):i.getNodeData()).filter(r),d=(s?i.getElementDataByState("edge",s):i.getEdgeData()).filter(a),u=(s?i.getElementDataByState("combo",s):i.getComboData()).filter(l),h=this.isZoomEvent(n)?this.zoom=Math.max(.01,Math.min(n.data.scale,10)):this.zoom,f=[...c,...u];f.length>0&&f.forEach(g=>this.fixNodeLike(g,h)),this.updateRelatedEdges(),d.length>0&&d.forEach(g=>this.fixEdge(g,h))}),this.cachedStyles=new Map,this.getOriginalFieldValue=(n,i,s)=>{var r;const a=this.cachedStyles.get(n)||[],l=((r=a.find(c=>c.shape===i))===null||r===void 0?void 0:r.style)||{};return s in l||(l[s]=i.attributes[s],this.cachedStyles.set(n,[...a.filter(c=>c.shape!==i),{shape:i,style:l}])),l[s]},this.scaleEntireElement=(n,i,s)=>{i.setLocalScale(1/s);const r=this.cachedStyles.get(n)||[];r.push({shape:i}),this.cachedStyles.set(n,r)},this.scaleSpecificShapes=(n,i,s)=>{const r=Lc(n);(Array.isArray(s)?s:[s]).forEach(l=>{const{shape:c,fields:d}=l,u=typeof c=="function"?c(r):n.getShape(c);if(u){if(!d){this.scaleEntireElement(n.id,u,i);return}d.forEach(h=>{const f=this.getOriginalFieldValue(n.id,u,h);(0,ge.Z)(f)&&(u.style[h]=f/i)})}})},this.skipIfExceedViewport=n=>{const{viewport:i}=this.context;return!(i!=null&&i.isInViewport(n.getRenderBounds(),!1,30))},this.fixNodeLike=(n,i)=>{const s=z(n),{element:r,model:a}=this.context,l=r.getElement(s);if(!l||this.skipIfExceedViewport(l))return;a.getRelatedEdgesData(s).forEach(u=>this.relatedEdgeToUpdate.add(z(u)));const d=this.options[l.type];if(!d){this.scaleEntireElement(s,l,i);return}this.scaleSpecificShapes(l,i,d)},this.fixEdge=(n,i)=>{const s=z(n),r=this.context.element.getElement(s);if(!r||this.skipIfExceedViewport(r))return;const a=this.options.edge;if(!a){r.style.transformOrigin="center",this.scaleEntireElement(s,r,i);return}this.scaleSpecificShapes(r,i,a)},this.updateRelatedEdges=()=>{const{element:n}=this.context;this.relatedEdgeToUpdate.size>0&&this.relatedEdgeToUpdate.forEach(i=>{const s=n.getElement(i);s==null||s.update({})}),this.relatedEdgeToUpdate.clear()},this.resetTransform=()=>$a(this,void 0,void 0,function*(){this.options.reset?this.restoreCachedStyles():this.fixElementSize({data:{scale:this.zoom}})}),this.bindEvents()}restoreCachedStyles(){if(this.cachedStyles.size>0){this.cachedStyles.forEach(i=>{i.forEach(({shape:s,style:r})=>{if((0,Gi.Z)(r))s.setLocalScale(1);else{if(this.options.state)return;Object.entries(r).forEach(([a,l])=>s.style[a]=l)}})});const{graph:t,element:e}=this.context,n=Object.keys(Object.fromEntries(this.cachedStyles)).filter(i=>i&&t.getElementType(i)==="node");if(n.length>0){const i=new Set;n.forEach(s=>{t.getRelatedEdgesData(s).forEach(r=>i.add(z(r)))}),i.forEach(s=>{const r=e==null?void 0:e.getElement(s);r==null||r.update({})})}}}bindEvents(){const{graph:t}=this.context;t.on(W.AFTER_DRAW,this.resetTransform),t.on(W.AFTER_TRANSFORM,this.fixElementSize)}unbindEvents(){const{graph:t}=this.context;t.off(W.AFTER_DRAW,this.resetTransform),t.off(W.AFTER_TRANSFORM,this.fixElementSize)}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}destroy(){this.unbindEvents(),super.destroy()}}Zs.defaultOptions={enable:o=>o.data.scale<1,nodeFilter:()=>!0,edgeFilter:()=>!0,comboFilter:()=>!0,edge:[{shape:"key",fields:["lineWidth"]},{shape:"halo",fields:["lineWidth"]},{shape:"label"}],reset:!1};var Hd=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class $s extends Me{constructor(t,e){super(t,Object.assign({},$s.defaultOptions,e)),this.focus=n=>Hd(this,void 0,void 0,function*(){if(!this.validate(n))return;const{graph:i}=this.context;yield i.focusElement(n.target.id,this.options.animation)}),this.bindEvents()}bindEvents(){const{graph:t}=this.context;this.unbindEvents(),bi.forEach(e=>{t.on(`${e}:${B.CLICK}`,this.focus)})}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}unbindEvents(){const{graph:t}=this.context;bi.forEach(e=>{t.off(`${e}:${B.CLICK}`,this.focus)})}destroy(){this.unbindEvents(),super.destroy()}}$s.defaultOptions={animation:{easing:"ease-in",duration:500},enable:!0};class Fs extends Me{constructor(t,e){super(t,Object.assign({},Fs.defaultOptions,e)),this.isFrozen=!1,this.toggleFrozen=n=>{this.isFrozen=n.type==="dragstart"},this.hoverElement=n=>{if(!this.validate(n))return;const i=n.type===B.POINTER_ENTER;this.updateElementsState(n,i);const{onHover:s,onHoverEnd:r}=this.options;i?s==null||s(n):r==null||r(n)},this.updateElementsState=(n,i)=>{if(!this.options.state&&!this.options.inactiveState)return;const{graph:s}=this.context,{state:r,animation:a,inactiveState:l}=this.options,c=this.getActiveIds(n),d={};if(r&&Object.assign(d,this.getElementsState(c,r,i)),l){const u=Be(s.getData(),!0).filter(h=>!c.includes(h));Object.assign(d,this.getElementsState(u,l,i))}s.setElementState(d,a)},this.getElementsState=(n,i,s)=>{const{graph:r}=this.context,a={};return n.forEach(l=>{const c=r.getElementState(l);s?a[l]=c.includes(i)?c:[...c,i]:a[l]=c.filter(d=>d!==i)}),a},this.bindEvents()}bindEvents(){const{graph:t}=this.context;this.unbindEvents(),bi.forEach(n=>{t.on(`${n}:${B.POINTER_ENTER}`,this.hoverElement),t.on(`${n}:${B.POINTER_LEAVE}`,this.hoverElement)});const e=this.context.canvas.document;e.addEventListener(`${B.DRAG_START}`,this.toggleFrozen),e.addEventListener(`${B.DRAG_END}`,this.toggleFrozen)}getActiveIds(t){const{graph:e}=this.context,{degree:n,direction:i}=this.options,s=t.target.id;return n?Eo(e,t.targetType,s,typeof n=="function"?n(t):n,i):[s]}validate(t){if(this.destroyed||this.isFrozen||As(t.target)||this.context.graph.isCollapsingExpanding)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}unbindEvents(){const{graph:t}=this.context;bi.forEach(n=>{t.off(`${n}:${B.POINTER_ENTER}`,this.hoverElement),t.off(`${n}:${B.POINTER_LEAVE}`,this.hoverElement)});const e=this.context.canvas.document;e.removeEventListener(`${B.DRAG_START}`,this.toggleFrozen),e.removeEventListener(`${B.DRAG_END}`,this.toggleFrozen)}destroy(){this.unbindEvents(),super.destroy()}}Fs.defaultOptions={animation:!1,enable:!0,degree:0,direction:"both",state:"active",inactiveState:void 0};class Vd extends On{onPointerDown(t){if(!super.validate(t)||!super.isKeydown()||this.points)return;const{canvas:e}=this.context;this.pathShape=new nt.y$({id:"g6-lasso-select",style:this.options.style}),e.appendChild(this.pathShape),this.points=[Ni(t)]}onPointerMove(t){var e;if(!this.points)return;const{immediately:n,mode:i}=this.options;this.points.push(Ni(t)),(e=this.pathShape)===null||e===void 0||e.setAttribute("d",Ic(this.points)),n&&i==="default"&&this.points.length>2&&super.updateElementsStates(this.points)}onPointerUp(){if(this.points){if(this.points.length<2){this.clearLasso();return}super.updateElementsStates(this.points),this.clearLasso()}}clearLasso(){var t;(t=this.pathShape)===null||t===void 0||t.remove(),this.pathShape=void 0,this.points=void 0}}class ks extends Me{constructor(t,e){super(t,Object.assign({},ks.defaultOptions,e)),this.hiddenShapes=[],this.isVisible=!0,this.setElementsVisibility=(n,i,s)=>{n.filter(Boolean).forEach(r=>{i==="hidden"&&!r.isVisible()?this.hiddenShapes.push(r):i==="visible"&&this.hiddenShapes.includes(r)?this.hiddenShapes.splice(this.hiddenShapes.indexOf(r),1):gn(r,i,!1,s)})},this.filterShapes=(n,i)=>{if((0,Ht.Z)(i))return r=>!i(n,r);const s=i==null?void 0:i[n];return r=>r.className?!(s!=null&&s.includes(r.className)):!0},this.hideShapes=n=>{if(!this.validate(n)||!this.isVisible)return;const{element:i}=this.context,{shapes:s={}}=this.options;this.setElementsVisibility(i.getNodes(),"hidden",this.filterShapes("node",s)),this.setElementsVisibility(i.getEdges(),"hidden",this.filterShapes("edge",s)),this.setElementsVisibility(i.getCombos(),"hidden",this.filterShapes("combo",s)),this.isVisible=!1},this.showShapes=(0,js.Z)(n=>{if(!this.validate(n)||this.isVisible)return;const{element:i}=this.context;this.setElementsVisibility(i.getNodes(),"visible"),this.setElementsVisibility(i.getEdges(),"visible"),this.setElementsVisibility(i.getCombos(),"visible"),this.isVisible=!0},this.options.debounce),this.bindEvents()}bindEvents(){const{graph:t}=this.context;t.on(W.BEFORE_TRANSFORM,this.hideShapes),t.on(W.AFTER_TRANSFORM,this.showShapes)}unbindEvents(){const{graph:t}=this.context;t.off(W.BEFORE_TRANSFORM,this.hideShapes),t.off(W.AFTER_TRANSFORM,this.showShapes)}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}update(t){this.unbindEvents(),super.update(t),this.bindEvents()}destroy(){this.unbindEvents(),super.destroy()}}ks.defaultOptions={enable:!0,debounce:200,shapes:o=>o==="node"};var Fa=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class Ws extends Me{constructor(t,e){super(t,Object.assign({},Ws.defaultOptions,e)),this.onWheel=n=>Fa(this,void 0,void 0,function*(){this.options.preventDefault&&n.preventDefault();const i=n.deltaX,s=n.deltaY;yield this.scroll([-i,-s],n)}),this.shortcut=new xn(t.graph),this.bindEvents()}update(t){super.update(t),this.bindEvents()}bindEvents(){var t,e;const{trigger:n}=this.options;if(this.shortcut.unbindAll(),(0,dt.Z)(n)){(t=this.graphDom)===null||t===void 0||t.removeEventListener(B.WHEEL,this.onWheel);const{up:i=[],down:s=[],left:r=[],right:a=[]}=n;this.shortcut.bind(i,l=>this.scroll([0,-10],l)),this.shortcut.bind(s,l=>this.scroll([0,10],l)),this.shortcut.bind(r,l=>this.scroll([-10,0],l)),this.shortcut.bind(a,l=>this.scroll([10,0],l))}else(e=this.graphDom)===null||e===void 0||e.addEventListener(B.WHEEL,this.onWheel,{passive:!1})}get graphDom(){return this.context.graph.getCanvas().getContextService().getDomElement()}formatDisplacement(t){const{sensitivity:e}=this.options;return t=nn(t,e),t=this.clampByDirection(t),t=this.clampByRange(t),t}clampByDirection([t,e]){const{direction:n}=this.options;return n==="x"?e=0:n==="y"&&(t=0),[t,e]}clampByRange([t,e]){const{viewport:n,canvas:i}=this.context,[s,r]=i.getSize(),[a,l,c,d]=me(this.options.range),u=[r*a,s*l,r*c,s*d],h=it(ut(n.getCanvasCenter()),u),f=Qe(n.getViewportCenter(),[t,e,0]);if(!Bt(f,h)){const{min:[g,p],max:[m,E]}=h;(f[0]0||f[0]>m&&t<0)&&(t=0),(f[1]0||f[1]>E&&e<0)&&(e=0)}return[t,e]}scroll(t,e){return Fa(this,void 0,void 0,function*(){if(!this.validate(e))return;const{onFinish:n}=this.options,i=this.context.graph,s=this.formatDisplacement(t);yield i.translateBy(s,!1),n==null||n()})}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}destroy(){var t;this.shortcut.destroy(),(t=this.graphDom)===null||t===void 0||t.removeEventListener(B.WHEEL,this.onWheel),super.destroy()}}Ws.defaultOptions={enable:!0,sensitivity:1,preventDefault:!0,range:1/0};var ka=y(70208),Wa=function(o,t,e,n){function i(s){return s instanceof e?s:new e(function(r){r(s)})}return new(e||(e=Promise))(function(s,r){function a(d){try{c(n.next(d))}catch(u){r(u)}}function l(d){try{c(n.throw(d))}catch(u){r(u)}}function c(d){d.done?s(d.value):i(d.value).then(a,l)}c((n=n.apply(o,t||[])).next())})};class Hs extends Me{constructor(t,e){super(t,Object.assign({},Hs.defaultOptions,e)),this.zoom=(n,i,s)=>Wa(this,void 0,void 0,function*(){if(!this.validate(i))return;const{graph:r}=this.context;let a;"viewport"in i&&(a=En(i.viewport));const{sensitivity:l,onFinish:c}=this.options,d=1+(0,ka.Z)(n,-50,50)*l/100,u=r.getZoom();yield r.zoomTo(u*d,s,a),c==null||c()}),this.onReset=()=>Wa(this,void 0,void 0,function*(){yield this.context.graph.zoomTo(1,this.options.animation)}),this.preventDefault=n=>{this.options.preventDefault&&n.preventDefault()},this.shortcut=new xn(t.graph),this.bindEvents()}update(t){super.update(t),this.bindEvents()}bindEvents(){var t;const{trigger:e}=this.options;if(this.shortcut.unbindAll(),Array.isArray(e)&&((t=this.context.canvas.getContainer())===null||t===void 0||t.addEventListener(B.WHEEL,this.preventDefault),this.shortcut.bind([...e,B.WHEEL],n=>{const{deltaX:i,deltaY:s}=n;this.zoom(-(s!=null?s:i),n,!1)})),typeof e=="object"){const{zoomIn:n=[],zoomOut:i=[],reset:s=[]}=e;this.shortcut.bind(n,r=>this.zoom(10,r,this.options.animation)),this.shortcut.bind(i,r=>this.zoom(-10,r,this.options.animation)),this.shortcut.bind(s,this.onReset)}}validate(t){if(this.destroyed)return!1;const{enable:e}=this.options;return(0,Ht.Z)(e)?e(t):!!e}destroy(){var t;this.shortcut.destroy(),(t=this.context.canvas.getContainer())===null||t===void 0||t.removeEventListener(B.WHEEL,this.preventDefault),super.destroy()}}Hs.defaultOptions={animation:{duration:200},enable:!0,sensitivity:1,trigger:[],preventDefault:!0};var Vs=y(13722),Se=y(80813);const Ud=(o,t)=>{if(o!=="next"&&o!=="prev")return t},Ha=o=>{o.prev.next=o.next,o.next.prev=o.prev,delete o.next,delete o.prev};class Kd{constructor(){const t={};t.prev=t,t.next=t.prev,this.shortcut=t}dequeue(){const t=this.shortcut,e=t.prev;if(e&&e!==t)return Ha(e),e}enqueue(t){const e=this.shortcut;t.prev&&t.next&&Ha(t),t.next=e.next,e.next.prev=t,e.next=t,t.prev=e}toString(){const t=[],e=this.shortcut;let n=e.prev;for(;n!==e;)t.push(JSON.stringify(n,Ud)),n=n==null?void 0:n.prev;return`[${t.join(", ")}]`}}class Yd extends Kd{}const Gd=()=>1,Xd=(o,t)=>{var e;if(o.getAllNodes().length<=1)return[];const n=Jd(o,t||Gd);return(e=Qd(n.graph,n.buckets,n.zeroIdx).map(s=>o.getRelatedEdges(s.v,"out").filter(({target:r})=>r===s.w)))===null||e===void 0?void 0:e.flat()},Qd=(o,t,e)=>{let n=[];const i=t[t.length-1],s=t[0];let r;for(;o.getAllNodes().length;){for(;r=s.dequeue();)Fr(o,t,e,r);for(;r=i.dequeue();)Fr(o,t,e,r);if(o.getAllNodes().length){for(let a=t.length-2;a>0;--a)if(r=t[a].dequeue(),r){n=n.concat(Fr(o,t,e,r,!0));break}}}return n},Fr=(o,t,e,n,i)=>{var s,r;const a=[];return o.hasNode(n.v)&&((s=o.getRelatedEdges(n.v,"in"))===null||s===void 0||s.forEach(l=>{const c=l.data.weight,d=o.getNode(l.source);i&&a.push({v:l.source,w:l.target,in:0,out:0}),d.data.out===void 0&&(d.data.out=0),d.data.out-=c,kr(t,e,Object.assign({v:d.id},d.data))}),(r=o.getRelatedEdges(n.v,"out"))===null||r===void 0||r.forEach(l=>{const c=l.data.weight,d=l.target,u=o.getNode(d);u.data.in===void 0&&(u.data.in=0),u.data.in-=c,kr(t,e,Object.assign({v:u.id},u.data))}),o.removeNode(n.v)),i?a:void 0},Jd=(o,t)=>{const e=new li.k;let n=0,i=0;o.getAllNodes().forEach(l=>{e.addNode({id:l.id,data:{v:l.id,in:0,out:0}})}),o.getAllEdges().forEach(l=>{const c=e.getRelatedEdges(l.source,"out").find(u=>u.target===l.target),d=(t==null?void 0:t(l))||1;c?e.updateEdgeData(c==null?void 0:c.id,Object.assign(Object.assign({},c.data),{weight:c.data.weight+d})):e.addEdge({id:l.id,source:l.source,target:l.target,data:{weight:d}}),i=Math.max(i,e.getNode(l.source).data.out+=d),n=Math.max(n,e.getNode(l.target).data.in+=d)});const s=[],r=i+n+3;for(let l=0;l{kr(s,a,Object.assign({v:l.id},e.getNode(l.id).data))}),{buckets:s,zeroIdx:a,graph:e}},kr=(o,t,e)=>{e.out?e.in?o[e.out-e.in+t].enqueue(e):o[o.length-1].enqueue(e):o[0].enqueue(e)},qd=(o,t)=>{const n=t==="greedy"?Xd(o,(i=>s=>s.data.weight||1)(o)):tu(o);n==null||n.forEach(i=>{const s=i.data;o.removeEdge(i.id),s.forwardName=i.data.name,s.reversed=!0,o.addEdge({id:i.id,source:i.target,target:i.source,data:Object.assign({},s)})})},tu=o=>{const t=[],e={},n={},i=s=>{n[s]||(n[s]=!0,e[s]=!0,o.getRelatedEdges(s,"out").forEach(r=>{e[r.target]?t.push(r):i(r.target)}),delete e[s])};return o.getAllNodes().forEach(s=>i(s.id)),t},eu=o=>{o.getAllEdges().forEach(t=>{const e=t.data;if(e.reversed){o.removeEdge(t.id);const n=e.forwardName;delete e.reversed,delete e.forwardName,o.addEdge({id:t.id,source:t.target,target:t.source,data:Object.assign(Object.assign({},e),{forwardName:n})})}})},nu=(o,t)=>Number(o)-Number(t),$o=(o,t,e,n)=>{let i;do i=`${n}${Math.random()}`;while(o.hasNode(i));return e.dummy=t,o.addNode({id:i,data:e}),i},iu=o=>{const t=new li.k;return o.getAllNodes().forEach(e=>{t.addNode(Object.assign({},e))}),o.getAllEdges().forEach(e=>{const n=t.getRelatedEdges(e.source,"out").find(i=>i.target===e.target);n?t.updateEdgeData(n==null?void 0:n.id,Object.assign(Object.assign({},n.data),{weight:n.data.weight+e.data.weight||0,minlen:Math.max(n.data.minlen,e.data.minlen||1)})):t.addEdge({id:e.id,source:e.source,target:e.target,data:{weight:e.data.weight||0,minlen:e.data.minlen||1}})}),t},Va=o=>{const t=new li.k;return o.getAllNodes().forEach(e=>{o.getChildren(e.id).length||t.addNode(Object.assign({},e))}),o.getAllEdges().forEach(e=>{t.addEdge(e)}),t},Ua=(o,t)=>o==null?void 0:o.reduce((e,n,i)=>(e[n]=t[i],e),{}),$0=o=>{const t={};return o.getAllNodes().forEach(e=>{const n={};o.getRelatedEdges(e.id,"out").forEach(i=>{n[i.target]=(n[i.target]||0)+(i.data.weight||0)}),t[e.id]=n}),t},F0=o=>{const t=o.getAllNodes(),e=t.map(n=>{const i={};return o.getRelatedEdges(n.id,"in").forEach(s=>{i[s.source]=(i[s.source]||0)+s.data.weight}),i});return Ua(t.map(n=>n.id),e)},Ka=(o,t)=>{const e=Number(o.x),n=Number(o.y),i=Number(t.x)-e,s=Number(t.y)-n;let r=Number(o.width)/2,a=Number(o.height)/2;if(!i&&!s)return{x:0,y:0};let l,c;return Math.abs(s)*r>Math.abs(i)*a?(s<0&&(a=-a),l=a*i/s,c=a):(i<0&&(r=-r),l=r,c=r*s/i),{x:e+l,y:n+c}},os=o=>{const t=[],e=Ga(o)+1;for(let n=0;n{const i=n.data.rank;i!==void 0&&t[i]&&t[i].push(n.id)});for(let n=0;nnu(o.getNode(i).data.order,o.getNode(s).data.order));return t},ou=o=>{const t=o.getAllNodes().filter(n=>n.data.rank!==void 0).map(n=>n.data.rank),e=Math.min(...t);o.getAllNodes().forEach(n=>{n.data.hasOwnProperty("rank")&&e!==1/0&&(n.data.rank-=e)})},su=(o,t=0)=>{const e=o.getAllNodes(),n=e.filter(a=>a.data.rank!==void 0).map(a=>a.data.rank),i=Math.min(...n),s=[];e.forEach(a=>{const l=(a.data.rank||0)-i;s[l]||(s[l]=[]),s[l].push(a.id)});let r=0;for(let a=0;a{const d=o.getNode(c);d&&(d.data.rank=d.data.rank||0,d.data.rank+=r)}))}},Ya=(o,t,e,n)=>{const i={width:0,height:0};return(0,ge.Z)(e)&&(0,ge.Z)(n)&&(i.rank=e,i.order=n),$o(o,"border",i,t)},Ga=o=>{let t;return o.getAllNodes().forEach(e=>{const n=e.data.rank;n!==void 0&&(t===void 0||n>t)&&(t=n)}),t||(t=0),t},ru=(o,t)=>{const e={lhs:[],rhs:[]};return o==null||o.forEach(n=>{t(n)?e.lhs.push(n):e.rhs.push(n)}),e},Wr=(o,t)=>o.reduce((e,n)=>{const i=t(e),s=t(n);return i>s?n:e}),Xa=(o,t,e,n,i,s)=>{n.includes(t.id)||(n.push(t.id),e||s.push(t.id),i(t.id).forEach(r=>Xa(o,r,e,n,i,s)),e&&s.push(t.id))},Qa=(o,t,e,n)=>{const i=Array.isArray(t)?t:[t],s=l=>n?o.getSuccessors(l):o.getNeighbors(l),r=[],a=[];return i.forEach(l=>{if(o.hasNode(l.id))Xa(o,l,e==="post",a,s,r);else throw new Error(`Graph does not have node: ${l}`)}),r},au=o=>{const t=e=>{const n=o.getChildren(e),i=o.getNode(e);if(n!=null&&n.length&&n.forEach(s=>t(s.id)),i.data.hasOwnProperty("minRank")){i.data.borderLeft=[],i.data.borderRight=[];for(let s=i.data.minRank,r=i.data.maxRank+1;st(e.id))},Ja=(o,t,e,n,i,s)=>{const r={rank:s,borderType:t,width:0,height:0},a=i.data[t][s-1],l=$o(o,"border",r,e);i.data[t][s]=l,o.setParent(l,n),a&&o.addEdge({id:`e${Math.random()}`,source:a,target:l,data:{weight:1}})},lu=(o,t)=>{const e=t.toLowerCase();(e==="lr"||e==="rl")&&qa(o)},cu=(o,t)=>{const e=t.toLowerCase();(e==="bt"||e==="rl")&&du(o),(e==="lr"||e==="rl")&&(uu(o),qa(o))},qa=o=>{o.getAllNodes().forEach(t=>{tl(t)}),o.getAllEdges().forEach(t=>{tl(t)})},tl=o=>{const t=o.data.width;o.data.width=o.data.height,o.data.height=t},du=o=>{o.getAllNodes().forEach(t=>{Hr(t.data)}),o.getAllEdges().forEach(t=>{var e;(e=t.data.points)===null||e===void 0||e.forEach(n=>Hr(n)),t.data.hasOwnProperty("y")&&Hr(t.data)})},Hr=o=>{o!=null&&o.y&&(o.y=-o.y)},uu=o=>{o.getAllNodes().forEach(t=>{Vr(t.data)}),o.getAllEdges().forEach(t=>{var e;(e=t.data.points)===null||e===void 0||e.forEach(n=>Vr(n)),t.data.hasOwnProperty("x")&&Vr(t.data)})},Vr=o=>{const t=o.x;o.x=o.y,o.y=t},hu=o=>{const t=$o(o,"root",{},"_root"),e=fu(o);let n=Math.max(...Object.values(e));Math.abs(n)===1/0&&(n=1);const i=n-1,s=2*i+1;o.getAllEdges().forEach(a=>{a.data.minlen*=s});const r=gu(o)+1;return o.getRoots().forEach(a=>{el(o,t,s,r,i,e,a.id)}),{nestingRoot:t,nodeRankFactor:s}},el=(o,t,e,n,i,s,r)=>{const a=o.getChildren(r);if(!(a!=null&&a.length)){r!==t&&o.addEdge({id:`e${Math.random()}`,source:t,target:r,data:{weight:0,minlen:e}});return}const l=Ya(o,"_bt"),c=Ya(o,"_bb"),d=o.getNode(r);o.setParent(l,r),d.data.borderTop=l,o.setParent(c,r),d.data.borderBottom=c,a==null||a.forEach(u=>{el(o,t,e,n,i,s,u.id);const h=u.data.borderTop?u.data.borderTop:u.id,f=u.data.borderBottom?u.data.borderBottom:u.id,g=u.data.borderTop?n:2*n,p=h!==f?1:i-s[r]+1;o.addEdge({id:`e${Math.random()}`,source:l,target:h,data:{minlen:p,weight:g,nestingEdge:!0}}),o.addEdge({id:`e${Math.random()}`,source:f,target:c,data:{minlen:p,weight:g,nestingEdge:!0}})}),o.getParent(r)||o.addEdge({id:`e${Math.random()}`,source:t,target:l,data:{weight:0,minlen:i+s[r]}})},fu=o=>{const t={},e=(n,i)=>{const s=o.getChildren(n);s==null||s.forEach(r=>e(r.id,i+1)),t[n]=i};return o.getRoots().forEach(n=>e(n.id,1)),t},gu=o=>{let t=0;return o.getAllEdges().forEach(e=>{t+=e.data.weight}),t},pu=(o,t)=>{t&&o.removeNode(t),o.getAllEdges().forEach(e=>{e.data.nestingEdge&&o.removeEdge(e.id)})},mu="edge",nl="edge-label",vu=(o,t)=>{o.getAllEdges().forEach(e=>yu(o,e,t))},yu=(o,t,e)=>{let n=t.source,i=o.getNode(n).data.rank;const s=t.target,r=o.getNode(s).data.rank,a=t.data.labelRank;if(r===i+1)return;o.removeEdge(t.id);let l,c,d;for(d=0,++i;i{t.forEach(e=>{let n=o.getNode(e);const{data:i}=n,s=i.originalEdge;let r;s&&o.addEdge(s);let a=e;for(;n.data.dummy;)r=o.getSuccessors(a)[0],o.removeNode(a),s.data.points.push({x:n.data.x,y:n.data.y}),n.data.dummy===nl&&(s.data.x=n.data.x,s.data.y=n.data.y,s.data.width=n.data.width,s.data.height=n.data.height),a=r.id,n=o.getNode(a)})},Eu=(o,t,e)=>{const n={};let i;e==null||e.forEach(s=>{let r=o.getParent(s),a,l;for(;r;){if(a=o.getParent(r.id),a?(l=n[a.id],n[a.id]=r.id):(l=i,i=r.id),l&&l!==r.id){t.hasNode(l)||t.addNode({id:l,data:{}}),t.hasNode(r.id)||t.addNode({id:r.id,data:{}}),t.hasEdge(`e${l}-${r.id}`)||t.addEdge({id:`e${l}-${r.id}`,source:l,target:r.id,data:{}});return}r=a}})},xu=(o,t,e)=>{const n=Su(o),i=new li.k({tree:[{id:n,children:[],data:{}}]});return o.getAllNodes().forEach(s=>{const r=o.getParent(s.id);(s.data.rank===t||s.data.minRank<=t&&t<=s.data.maxRank)&&(i.hasNode(s.id)||i.addNode(Object.assign({},s)),r!=null&&r.id&&!i.hasNode(r==null?void 0:r.id)&&i.addNode(Object.assign({},r)),i.setParent(s.id,(r==null?void 0:r.id)||n),o.getRelatedEdges(s.id,e).forEach(a=>{const l=a.source===s.id?a.target:a.source;i.hasNode(l)||i.addNode(Object.assign({},o.getNode(l)));const c=i.getRelatedEdges(l,"out").find(({target:u})=>u===s.id),d=c!==void 0?c.data.weight:0;c?i.updateEdgeData(c.id,Object.assign(Object.assign({},c.data),{weight:a.data.weight+d})):i.addEdge({id:a.id,source:l,target:s.id,data:{weight:a.data.weight+d}})}),s.data.hasOwnProperty("minRank")&&i.updateNodeData(s.id,Object.assign(Object.assign({},s.data),{borderLeft:s.data.borderLeft[t],borderRight:s.data.borderRight[t]})))}),i},Su=o=>{let t;for(;o.hasNode(t=`_root${Math.random()}`););return t},wu=(o,t,e)=>{const n=Ua(e,e.map((d,u)=>u)),s=t.map(d=>{const u=o.getRelatedEdges(d,"out").map(h=>({pos:n[h.target]||0,weight:h.data.weight}));return u==null?void 0:u.sort((h,f)=>h.pos-f.pos)}).flat().filter(d=>d!==void 0);let r=1;for(;r{if(d){let u=d.pos+r;l[u]+=d.weight;let h=0;for(;u>0;)u%2&&(h+=l[u+1]),u=u-1>>1,l[u]+=d.weight;c+=d.weight*h}}),c},il=(o,t)=>{let e=0;for(let n=1;n<(t==null?void 0:t.length);n+=1)e+=wu(o,t[n-1],t[n]);return e},ol=o=>{const t={},e=o.getAllNodes(),n=e.map(c=>{var d;return(d=c.data.rank)!==null&&d!==void 0?d:-1/0}),i=Math.max(...n),s=[];for(let c=0;co.getNode(c.id).data.rank-o.getNode(d.id).data.rank),l=r.filter(c=>o.getNode(c.id).data.fixorder!==void 0).sort((c,d)=>o.getNode(c.id).data.fixorder-o.getNode(d.id).data.fixorder);return l==null||l.forEach(c=>{isNaN(o.getNode(c.id).data.rank)||s[o.getNode(c.id).data.rank].push(c.id),t[c.id]=!0}),r==null||r.forEach(c=>o.dfsTree(c.id,d=>{if(t.hasOwnProperty(d.id))return!0;t[d.id]=!0,isNaN(d.data.rank)||s[d.data.rank].push(d.id)})),s},Ou=(o,t)=>t.map(e=>{const n=o.getRelatedEdges(e,"in");if(!(n!=null&&n.length))return{v:e};const i={sum:0,weight:0};return n==null||n.forEach(s=>{const r=o.getNode(s.source);i.sum+=s.data.weight*r.data.order,i.weight+=s.data.weight}),{v:e,barycenter:i.sum/i.weight,weight:i.weight}}),Cu=(o,t)=>{var e,n,i;const s={};o==null||o.forEach((a,l)=>{s[a.v]={i:l,indegree:0,in:[],out:[],vs:[a.v]};const c=s[a.v];a.barycenter!==void 0&&(c.barycenter=a.barycenter,c.weight=a.weight)}),(e=t.getAllEdges())===null||e===void 0||e.forEach(a=>{const l=s[a.source],c=s[a.target];l!==void 0&&c!==void 0&&(c.indegree++,l.out.push(s[a.target]))});const r=(i=(n=Object.values(s)).filter)===null||i===void 0?void 0:i.call(n,a=>!a.indegree);return Du(r)},Du=o=>{var t,e;const n=[],i=l=>c=>{c.merged||(c.barycenter===void 0||l.barycenter===void 0||c.barycenter>=l.barycenter)&&Mu(l,c)},s=l=>c=>{c.in.push(l),--c.indegree===0&&o.push(c)};for(;o!=null&&o.length;){const l=o.pop();n.push(l),(t=l.in.reverse())===null||t===void 0||t.forEach(c=>i(l)(c)),(e=l.out)===null||e===void 0||e.forEach(c=>s(l)(c))}const r=n.filter(l=>!l.merged),a=["vs","i","barycenter","weight"];return r.map(l=>{const c={};return a==null||a.forEach(d=>{l[d]!==void 0&&(c[d]=l[d])}),c})},Mu=(o,t)=>{var e;let n=0,i=0;o.weight&&(n+=o.barycenter*o.weight,i+=o.weight),t.weight&&(n+=t.barycenter*t.weight,i+=t.weight),o.vs=(e=t.vs)===null||e===void 0?void 0:e.concat(o.vs),o.barycenter=n/i,o.weight=i,o.i=Math.min(t.i,o.i),t.merged=!0};var Ru=Cu;const Iu=(o,t,e,n)=>{const i=ru(o,h=>{const f=h.hasOwnProperty("fixorder")&&!isNaN(h.fixorder);return n?!f&&h.hasOwnProperty("barycenter"):f||h.hasOwnProperty("barycenter")}),s=i.lhs,r=i.rhs.sort((h,f)=>-h.i- -f.i),a=[];let l=0,c=0,d=0;s==null||s.sort(Nu(!!t,!!e)),d=sl(a,r,d),s==null||s.forEach(h=>{var f;d+=(f=h.vs)===null||f===void 0?void 0:f.length,a.push(h.vs),l+=h.barycenter*h.weight,c+=h.weight,d=sl(a,r,d)});const u={vs:a.flat()};return c&&(u.barycenter=l/c,u.weight=c),u},sl=(o,t,e)=>{let n=e,i;for(;t.length&&(i=t[t.length-1]).i<=n;)t.pop(),o==null||o.push(i.vs),n++;return n},Nu=(o,t)=>(e,n)=>{if(e.fixorder!==void 0&&n.fixorder!==void 0)return e.fixorder-n.fixorder;if(e.barycentern.barycenter)return 1;if(t&&e.order!==void 0&&n.order!==void 0){if(e.ordern.order)return 1}return o?n.i-e.i:e.i-n.i},rl=(o,t,e,n,i,s)=>{var r,a,l,c;let d=o.getChildren(t).map(x=>x.id);const u=o.getNode(t),h=u?u.data.borderLeft:void 0,f=u?u.data.borderRight:void 0,g={};h&&(d=d==null?void 0:d.filter(x=>x!==h&&x!==f));const p=Ou(o,d||[]);p==null||p.forEach(x=>{var O;if(!((O=o.getChildren(x.v))===null||O===void 0)&&O.length){const j=rl(o,x.v,e,n,s);g[x.v]=j,j.hasOwnProperty("barycenter")&&Pu(x,j)}});const m=Ru(p,e);Au(m,g),(r=m.filter(x=>x.vs.length>0))===null||r===void 0||r.forEach(x=>{const O=o.getNode(x.vs[0]);O&&(x.fixorder=O.data.fixorder,x.order=O.data.order)});const E=Iu(m,n,i,s);if(h&&(E.vs=[h,E.vs,f].flat(),!((a=o.getPredecessors(h))===null||a===void 0)&&a.length)){const x=o.getNode(((l=o.getPredecessors(h))===null||l===void 0?void 0:l[0].id)||""),O=o.getNode(((c=o.getPredecessors(f))===null||c===void 0?void 0:c[0].id)||"");E.hasOwnProperty("barycenter")||(E.barycenter=0,E.weight=0),E.barycenter=(E.barycenter*E.weight+x.data.order+O.data.order)/(E.weight+2),E.weight+=2}return E},Au=(o,t)=>{o==null||o.forEach(e=>{var n;const i=(n=e.vs)===null||n===void 0?void 0:n.map(s=>t[s]?t[s].vs:s);e.vs=i.flat()})},Pu=(o,t)=>{o.barycenter!==void 0?(o.barycenter=(o.barycenter*o.weight+t.barycenter*t.weight)/(o.weight+t.weight),o.weight+=t.weight):(o.barycenter=t.barycenter,o.weight=t.weight)},Tu=(o,t)=>{const e=Ga(o),n=[],i=[];for(let d=1;d-1;d--)i.push(d);const s=al(o,n,"in"),r=al(o,i,"out");let a=ol(o);Ur(o,a);let l=Number.POSITIVE_INFINITY,c;for(let d=0,u=0;u<4;++d,++u){ll(d%2?s:r,d%4>=2,!1,t),a=os(o);const h=il(o,a);h=2,!0,t),a=os(o);const h=il(o,a);ht.map(n=>xu(o,n,e)),ll=(o,t,e,n)=>{const i=new li.k;o==null||o.forEach(s=>{var r;const a=s.getRoots()[0].id,l=rl(s,a,i,t,e,n);for(let c=0;c<((r=l.vs)===null||r===void 0?void 0:r.length);c++){const d=s.getNode(l.vs[c]);d&&(d.data.order=c)}Eu(s,i,l.vs)})},Ur=(o,t)=>{t==null||t.forEach(e=>{e==null||e.forEach((n,i)=>{o.getNode(n).data.order=i})})},Lu=(o,t)=>{const n=o.getAllNodes().filter(r=>{var a;return!(!((a=o.getChildren(r.id))===null||a===void 0)&&a.length)}).map(r=>r.data.rank),i=Math.max(...n),s=[];for(let r=0;r{const a=o.getNode(r);!a||a.data.dummy||isNaN(a.data.rank)||(a.data.fixorder=s[a.data.rank].length,s[a.data.rank].push(r))})},_u=o=>{const t={};let e=0;const n=i=>{const s=e;o.getChildren(i).forEach(r=>n(r.id)),t[i]={low:s,lim:e++}};return o.getRoots().forEach(i=>n(i.id)),t},ju=(o,t,e,n)=>{var i,s;const r=[],a=[],l=Math.min(t[e].low,t[n].low),c=Math.max(t[e].lim,t[n].lim);let d,u;d=e;do d=(i=o.getParent(d))===null||i===void 0?void 0:i.id,r.push(d);while(d&&(t[d].low>l||c>t[d].lim));for(u=d,d=n;d&&d!==u;)a.push(d),d=(s=o.getParent(d))===null||s===void 0?void 0:s.id;return{lca:u,path:r.concat(a.reverse())}},zu=(o,t)=>{const e=_u(o);t.forEach(n=>{var i,s;let r=n,a=o.getNode(r);const l=a.data.originalEdge;if(!l)return;const c=ju(o,e,l.source,l.target),d=c.path,u=c.lca;let h=0,f=d[h],g=!0;for(;r!==l.target;){if(a=o.getNode(r),g){for(;f!==u&&((i=o.getNode(f))===null||i===void 0?void 0:i.data.maxRank){const e={},n=(i,s)=>{let r=0,a=0;const l=i.length,c=s==null?void 0:s[(s==null?void 0:s.length)-1];return s==null||s.forEach((d,u)=>{var h;const f=Bu(o,d),g=f?o.getNode(f.id).data.order:l;(f||d===c)&&((h=s.slice(a,u+1))===null||h===void 0||h.forEach(p=>{var m;(m=o.getPredecessors(p))===null||m===void 0||m.forEach(E=>{var x;const O=o.getNode(E.id),j=O.data.order;(j{const e={};function n(a,l,c,d,u){var h,f;let g;for(let p=l;p{const E=o.getNode(m.id);E.data.dummy&&(E.data.orderu)&&ul(e,m.id,g)}))}function i(a){return JSON.stringify(a.slice(1))}function s(a,l){const c=i(a);l.get(c)||(n(...a),l.set(c,!0))}const r=(a,l)=>{let c=-1,d,u=0;const h=new Map;return l==null||l.forEach((f,g)=>{var p;if(((p=o.getNode(f))===null||p===void 0?void 0:p.data.dummy)==="border"){const m=o.getPredecessors(f)||[];m.length&&(d=o.getNode(m[0].id).data.order,s([l,u,g,c,d],h),u=g,c=d)}s([l,u,l.length,d,a.length],h)}),l};return t!=null&&t.length&&t.reduce(r),e},Bu=(o,t)=>{var e,n;if(!((e=o.getNode(t))===null||e===void 0)&&e.data.dummy)return(n=o.getPredecessors(t))===null||n===void 0?void 0:n.find(i=>o.getNode(i.id).data.dummy)},ul=(o,t,e)=>{let n=t,i=e;if(n>i){const r=n;n=i,i=r}let s=o[n];s||(o[n]=s={}),s[i]=!0},Zu=(o,t,e)=>{let n=t,i=e;if(n>i){const s=t;n=i,i=s}return!!o[n]},hl=(o,t,e,n)=>{const i={},s={},r={};return t==null||t.forEach(a=>{a==null||a.forEach((l,c)=>{i[l]=l,s[l]=l,r[l]=c})}),t==null||t.forEach(a=>{let l=-1;a==null||a.forEach(c=>{let d=n(c).map(u=>u.id);if(d.length){d=d.sort((h,f)=>r[h]-r[f]);const u=(d.length-1)/2;for(let h=Math.floor(u),f=Math.ceil(u);h<=f;++h){const g=d[h];s[c]===c&&l{var a;const l={},c=$u(o,t,e,i,s,r),d=r?"borderLeft":"borderRight",u=(g,p)=>{let m=c.getAllNodes(),E=m.pop();const x={};for(;E;)x[E.id]?g(E.id):(x[E.id]=!0,m.push(E),m=m.concat(p(E.id))),E=m.pop()},h=g=>{l[g]=(c.getRelatedEdges(g,"in")||[]).reduce((p,m)=>Math.max(p,(l[m.source]||0)+m.data.weight),0)},f=g=>{const p=(c.getRelatedEdges(g,"out")||[]).reduce((E,x)=>Math.min(E,(l[x.target]||0)-x.data.weight),Number.POSITIVE_INFINITY),m=o.getNode(g);p!==Number.POSITIVE_INFINITY&&m.data.borderType!==d&&(l[g]=Math.max(l[g],p))};return u(h,c.getPredecessors.bind(c)),u(f,c.getSuccessors.bind(c)),(a=Object.values(n))===null||a===void 0||a.forEach(g=>{l[g]=l[e[g]]}),l},$u=(o,t,e,n,i,s)=>{const r=new li.k,a=Fu(n,i,s);return t==null||t.forEach(l=>{let c;l==null||l.forEach(d=>{const u=e[d];if(r.hasNode(u)||r.addNode({id:u,data:{}}),c){const h=e[c],f=r.getRelatedEdges(h,"out").find(g=>g.target===u);f?r.updateEdgeData(f.id,Object.assign(Object.assign({},f.data),{weight:Math.max(a(o,d,c),f.data.weight||0)})):r.addEdge({id:`e${Math.random()}`,source:h,target:u,data:{weight:Math.max(a(o,d,c),0)}})}c=d})}),r},gl=(o,t)=>Wr(Object.values(t),e=>{var n;let i=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;return(n=Object.keys(e))===null||n===void 0||n.forEach(r=>{const a=e[r],l=ku(o,r)/2;i=Math.max(a+l,i),s=Math.min(a-l,s)}),i-s});function pl(o,t){const e=Object.values(t),n=Math.min(...e),i=Math.max(...e);["u","d"].forEach(s=>{["l","r"].forEach(r=>{const a=s+r,l=o[a];let c;if(l===t)return;const d=Object.values(l);c=r==="l"?n-Math.min(...d):i-Math.max(...d),c&&(o[a]={},Object.keys(l).forEach(u=>{o[a][u]=l[u]+c}))})})}const ml=(o,t)=>{const e={};return Object.keys(o.ul).forEach(n=>{if(t)e[n]=o[t.toLowerCase()][n];else{const i=Object.values(o).map(s=>s[n]);e[n]=(i[0]+i[1])/2}}),e},k0=(o,t)=>{const{align:e,nodesep:n=0,edgesep:i=0}=t||{},s=buildLayerMatrix(o),r=Object.assign(cl(o,s),dl(o,s)),a={};let l;["u","d"].forEach(d=>{l=d==="u"?s:Object.values(s).reverse(),["l","r"].forEach(u=>{u==="r"&&(l=l.map(p=>Object.values(p).reverse()));const h=(d==="u"?o.getPredecessors:o.getSuccessors).bind(o),f=hl(o,l,r,h),g=fl(o,l,f.root,f.align,n,i,u==="r");u==="r"&&Object.keys(g).forEach(p=>{g[p]=-g[p]}),a[d+u]=g})});const c=gl(o,a);return pl(a,c),ml(a,e)},Fu=(o,t,e)=>(n,i,s)=>{const r=n.getNode(i),a=n.getNode(s);let l=0,c=0;if(l+=r.data.width/2,r.data.hasOwnProperty("labelpos"))switch((r.data.labelpos||"").toLowerCase()){case"l":c=-r.data.width/2;break;case"r":c=r.data.width/2;break}if(c&&(l+=e?c:-c),c=0,l+=(r.data.dummy?t:o)/2,l+=(a.data.dummy?t:o)/2,l+=a.data.width/2,a.data.labelpos)switch((a.data.labelpos||"").toLowerCase()){case"l":c=a.data.width/2;break;case"r":c=-a.data.width/2;break}return c&&(l+=e?c:-c),c=0,l},ku=(o,t)=>o.getNode(t).data.width||0,Wu=(o,t)=>{const{ranksep:e=0}=t||{},n=os(o);let i=0;n==null||n.forEach(s=>{const r=s.map(l=>o.getNode(l).data.height),a=Math.max(...r,0);s==null||s.forEach(l=>{o.getNode(l).data.y=i+a/2}),i+=a+e})},Hu=(o,t)=>{const{align:e,nodesep:n=0,edgesep:i=0}=t||{},s=os(o),r=Object.assign(cl(o,s),dl(o,s)),a={};let l=[];["u","d"].forEach(d=>{l=d==="u"?s:Object.values(s).reverse(),["l","r"].forEach(u=>{u==="r"&&(l=l.map(p=>Object.values(p).reverse()));const h=(d==="u"?o.getPredecessors:o.getSuccessors).bind(o),f=hl(o,l,r,h),g=fl(o,l,f.root,f.align,n,i,u==="r");u==="r"&&Object.keys(g).forEach(p=>g[p]=-g[p]),a[d+u]=g})});const c=gl(o,a);return c&&pl(a,c),ml(a,e)},Vu=(o,t)=>{var e;const n=Va(o);Wu(n,t);const i=Hu(n,t);(e=Object.keys(i))===null||e===void 0||e.forEach(s=>{n.getNode(s).data.x=i[s]})},vl=o=>{const t={},e=n=>{var i;const s=o.getNode(n);if(!s)return 0;if(t[n])return s.data.rank;t[n]=!0;let r;return(i=o.getRelatedEdges(n,"out"))===null||i===void 0||i.forEach(a=>{const l=e(a.target),c=a.data.minlen,d=l-c;d&&(r===void 0||do.getRelatedEdges(n.id,"in").length===0).forEach(n=>e(n.id))},Uu=o=>{const t={};let e;const n=r=>{var a;const l=o.getNode(r);if(!l)return 0;if(t[r])return l.data.rank;t[r]=!0;let c;return(a=o.getRelatedEdges(r,"out"))===null||a===void 0||a.forEach(d=>{const u=n(d.target),h=d.data.minlen,f=u-h;f&&(c===void 0||fo.getRelatedEdges(r.id,"in").length===0).forEach(r=>{r&&n(r.id)}),e===void 0&&(e=0);const i={},s=(r,a)=>{var l;const c=o.getNode(r),d=isNaN(c.data.layer)?a:c.data.layer;(c.data.rank===void 0||c.data.rank{s(u.target,d+u.data.minlen)}))};o.getAllNodes().forEach(r=>{const a=r.data;a&&(isNaN(a.layer)?a.rank-=e:s(r.id,a.layer))})},co=(o,t)=>o.getNode(t.target).data.rank-o.getNode(t.source).data.rank-t.data.minlen,Ku=o=>{const t=new li.k({tree:[]}),e=o.getAllNodes()[0],n=o.getAllNodes().length;t.addNode(e);let i,s;for(;Yu(t,o){const e=n=>{t.getRelatedEdges(n,"both").forEach(i=>{const s=i.source,r=n===s?i.target:s;!o.hasNode(r)&&!co(t,i)&&(o.addNode({id:r,data:{}}),o.addEdge({id:i.id,source:n,target:r,data:{}}),e(r))})};return o.getAllNodes().forEach(n=>e(n.id)),o.getAllNodes().length},Gu=o=>{const t=new li.k({tree:[]}),e=o.getAllNodes()[0],n=o.getAllNodes().length;t.addNode(e);let i,s;for(;Xu(t,o){const e=n=>{var i;(i=t.getRelatedEdges(n,"both"))===null||i===void 0||i.forEach(s=>{const r=s.source,a=n===r?s.target:r;!o.hasNode(a)&&(t.getNode(a).data.layer!==void 0||!co(t,s))&&(o.addNode({id:a,data:{}}),o.addEdge({id:s.id,source:n,target:a,data:{}}),e(a))})};return o.getAllNodes().forEach(n=>e(n.id)),o.getAllNodes().length},yl=(o,t)=>Wr(t.getAllEdges(),e=>o.hasNode(e.source)!==o.hasNode(e.target)?co(t,e):1/0),bl=(o,t,e)=>{o.getAllNodes().forEach(n=>{const i=t.getNode(n.id);i.data.rank||(i.data.rank=0),i.data.rank+=e})},Qu=o=>{const t=iu(o);vl(t);const e=Ku(t);xl(e),El(e,t);let n,i;for(;n=th(e);)i=eh(e,t,n),nh(e,t,n,i)},El=(o,t)=>{let e=Qa(o,o.getAllNodes(),"post",!1);e=e.slice(0,(e==null?void 0:e.length)-1),e.forEach(n=>{Ju(o,t,n)})},Ju=(o,t,e)=>{const i=o.getNode(e).data.parent,s=o.getRelatedEdges(e,"both").find(r=>r.target===i||r.source===i);s.data.cutvalue=qu(o,t,e)},qu=(o,t,e)=>{const i=o.getNode(e).data.parent;let s=!0,r=t.getRelatedEdges(e,"out").find(l=>l.target===i),a=0;return r||(s=!1,r=t.getRelatedEdges(i,"out").find(l=>l.target===e)),a=r.data.weight,t.getRelatedEdges(e,"both").forEach(l=>{const c=l.source===e,d=c?l.target:l.source;if(d!==i){const u=c===s,h=l.data.weight;if(a+=u?h:-h,oh(o,e,d)){const f=o.getRelatedEdges(e,"both").find(g=>g.source===d||g.target===d).data.cutvalue;a+=u?-f:f}}}),a},xl=(o,t=o.getAllNodes()[0].id)=>{Sl(o,{},1,t)},Sl=(o,t,e,n,i)=>{var s;const r=e;let a=e;const l=o.getNode(n);return t[n]=!0,(s=o.getNeighbors(n))===null||s===void 0||s.forEach(c=>{t[c.id]||(a=Sl(o,t,a,c.id,n))}),l.data.low=r,l.data.lim=a++,i?l.data.parent=i:delete l.data.parent,a},th=o=>o.getAllEdges().find(t=>t.data.cutvalue<0),eh=(o,t,e)=>{let n=e.source,i=e.target;t.getRelatedEdges(n,"out").find(d=>d.target===i)||(n=e.target,i=e.source);const s=o.getNode(n),r=o.getNode(i);let a=s,l=!1;s.data.lim>r.data.lim&&(a=r,l=!0);const c=t.getAllEdges().filter(d=>l===wl(o.getNode(d.source),a)&&l!==wl(o.getNode(d.target),a));return Wr(c,d=>co(t,d))},nh=(o,t,e,n)=>{const i=o.getRelatedEdges(e.source,"both").find(s=>s.source===e.target||s.target===e.target);i&&o.removeEdge(i.id),o.addEdge({id:`e${Math.random()}`,source:n.source,target:n.target,data:{}}),xl(o),El(o,t),ih(o,t)},ih=(o,t)=>{const e=o.getAllNodes().find(i=>!i.data.parent);let n=Qa(o,e,"pre",!1);n=n.slice(1),n.forEach(i=>{const s=o.getNode(i).data.parent;let r=t.getRelatedEdges(i,"out").find(l=>l.target===s),a=!1;!r&&t.hasNode(s)&&(r=t.getRelatedEdges(s,"out").find(l=>l.target===i),a=!0),t.getNode(i).data.rank=(t.hasNode(s)&&t.getNode(s).data.rank||0)+(a?r==null?void 0:r.data.minlen:-(r==null?void 0:r.data.minlen))})},oh=(o,t,e)=>o.getRelatedEdges(t,"both").find(n=>n.source===e||n.target===e),wl=(o,t)=>t.data.low<=o.data.lim&&o.data.lim<=t.data.lim,sh=(o,t)=>{switch(t){case"network-simplex":ah(o);break;case"tight-tree":Ol(o);break;case"longest-path":rh(o);break;default:Ol(o)}},rh=vl,Ol=o=>{Uu(o),Gu(o)},ah=o=>{Qu(o)},lh=(o,t)=>{const{edgeLabelSpace:e,keepNodeOrder:n,prevGraph:i,rankdir:s,ranksep:r}=t;!n&&i&&dh(o,i);const a=mh(o);e&&(t.ranksep=vh(a,{rankdir:s,ranksep:r}));let l;try{l=ch(a,t)}catch(c){if(c.message==="Not possible to find intersection inside of the rectangle"){console.error(`The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure: diff --git a/umi.66beb657.js b/umi.46462ac1.js similarity index 99% rename from umi.66beb657.js rename to umi.46462ac1.js index a0fe0d1f0e..1d93fadaa6 100644 --- a/umi.66beb657.js +++ b/umi.46462ac1.js @@ -1480,6 +1480,6 @@ Schedule: ${Q.map(at=>Bu(at))} pos: ${this.timelinePos}`),se.length&&this.log(`R `).split(` `),K=[],se=t?qs(t.baseTime,t.timescale):0;let de="00:00.000",xe=0,ke=0,Re,at=!0;j.oncue=function(it){const Xt=n[s];let ar=n.ccOffset;const lr=(xe-se)/9e4;if(Xt!=null&&Xt.new&&(ke!==void 0?ar=n.ccOffset=Xt.start:Il(n,s,lr)),lr){if(!t){Re=new Error("Missing initPTS for VTT MPEGTS");return}ar=lr-n.presentationOffset}const Ar=it.endTime-it.startTime,zr=Wo((it.startTime+ar-ke)*9e4,_*9e4)/9e4;it.startTime=Math.max(zr,0),it.endTime=Math.max(zr+Ar,0);const vn=it.text.trim();it.text=decodeURIComponent(encodeURIComponent(vn)),it.id||(it.id=sf(it.startTime,it.endTime,vn)),it.endTime>0&&K.push(it)},j.onparsingerror=function(it){Re=it},j.onflush=function(){if(Re){I(Re);return}w(K)},Q.forEach(it=>{if(at)if(Jo(it,"X-TIMESTAMP-MAP=")){at=!1,it.slice(16).split(",").forEach(Xt=>{Jo(Xt,"LOCAL:")?de=Xt.slice(6):Jo(Xt,"MPEGTS:")&&(xe=parseInt(Xt.slice(7)))});try{ke=Sf(de)/1e3}catch(Xt){Re=Xt}return}else it===""&&(at=!1);j.parse(it+` `)}),j.flush()}const eu="stpp.ttml.im1t",Af=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Cf=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,of={left:"start",center:"center",right:"end",start:"start",end:"end"};function Bc(k,t,n,s){const _=lt(new Uint8Array(k),["mdat"]);if(_.length===0){s(new Error("Could not parse IMSC1 mdat"));return}const w=_.map(j=>q(j)),I=bu(t.baseTime,1,t.timescale);try{w.forEach(j=>n(Bf(j,I)))}catch(j){s(j)}}function Bf(k,t){const _=new DOMParser().parseFromString(k,"text/xml").getElementsByTagName("tt")[0];if(!_)throw new Error("Invalid ttml");const w={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},I=Object.keys(w).reduce((de,xe)=>(de[xe]=_.getAttribute(`ttp:${xe}`)||w[xe],de),{}),j=_.getAttribute("xml:space")!=="preserve",Q=Zf(Nc(_,"styling","style")),K=Zf(Nc(_,"layout","region")),se=Nc(_,"body","[begin]");return[].map.call(se,de=>{const xe=Yf(de,j);if(!xe||!de.hasAttribute("begin"))return null;const ke=uf(de.getAttribute("begin"),I),Re=uf(de.getAttribute("dur"),I);let at=uf(de.getAttribute("end"),I);if(ke===null)throw Wf(de);if(at===null){if(Re===null)throw Wf(de);at=ke+Re}const it=new Ef(ke-t,at-t,xe);it.id=sf(it.startTime,it.endTime,it.text);const Xt=K[de.getAttribute("region")],ar=Q[de.getAttribute("style")],lr=Nf(Xt,ar,Q),{textAlign:Ar}=lr;if(Ar){const zr=of[Ar];zr&&(it.lineAlign=zr),it.align=Ar}return v(it,lr),it}).filter(de=>de!==null)}function Nc(k,t,n){const s=k.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(n)):[]}function Zf(k){return k.reduce((t,n)=>{const s=n.getAttribute("xml:id");return s&&(t[s]=n),t},{})}function Yf(k,t){return[].slice.call(k.childNodes).reduce((n,s,_)=>{var w;return s.nodeName==="br"&&_?n+` -`:(w=s.childNodes)!=null&&w.length?Yf(s,t):t?n+s.textContent.trim().replace(/\s+/g," "):n+s.textContent},"")}function Nf(k,t,n){const s="http://www.w3.org/ns/ttml#styling";let _=null;const w=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],I=k!=null&&k.hasAttribute("style")?k.getAttribute("style"):null;return I&&n.hasOwnProperty(I)&&(_=n[I]),w.reduce((j,Q)=>{const K=Xf(t,s,Q)||Xf(k,s,Q)||Xf(_,s,Q);return K&&(j[Q]=K),j},{})}function Xf(k,t,n){return k&&k.hasAttributeNS(t,n)?k.getAttributeNS(t,n):null}function Wf(k){return new Error(`Could not parse ttml timestamp ${k}`)}function uf(k,t){if(!k)return null;let n=Mf(k);return n===null&&(Af.test(k)?n=id(k,t):Cf.test(k)&&(n=Hf(k,t))),n}function id(k,t){const n=Af.exec(k),s=(n[4]|0)+(n[5]|0)/t.subFrameRate;return(n[1]|0)*3600+(n[2]|0)*60+(n[3]|0)+s/t.frameRate}function Hf(k,t){const n=Cf.exec(k),s=Number(n[1]);switch(n[2]){case"h":return s*3600;case"m":return s*60;case"ms":return s*1e3;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}class jf{constructor(t,n){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=t,this.trackName=n}dispatchCue(){this.startTime!==null&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)}newCue(t,n,s){(this.startTime===null||this.startTime>t)&&(this.startTime=t),this.endTime=n,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}class ad{constructor(t){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=y(),this.captionsProperties=void 0,this.hls=t,this.config=t.config,this.Cues=t.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},t.on(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(u.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(u.FRAG_LOADING,this.onFragLoading,this),t.on(u.FRAG_LOADED,this.onFragLoaded,this),t.on(u.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.on(u.FRAG_DECRYPTED,this.onFragDecrypted,this),t.on(u.INIT_PTS_FOUND,this.onInitPtsFound,this),t.on(u.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.on(u.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:t}=this;t.off(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(u.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(u.FRAG_LOADING,this.onFragLoading,this),t.off(u.FRAG_LOADED,this.onFragLoaded,this),t.off(u.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.off(u.FRAG_DECRYPTED,this.onFragDecrypted,this),t.off(u.INIT_PTS_FOUND,this.onInitPtsFound,this),t.off(u.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.off(u.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){const t=new jf(this,"textTrack1"),n=new jf(this,"textTrack2"),s=new jf(this,"textTrack3"),_=new jf(this,"textTrack4");this.cea608Parser1=new yl(1,t,n),this.cea608Parser2=new yl(3,s,_)}addCues(t,n,s,_,w){let I=!1;for(let j=w.length;j--;){const Q=w[j],K=Gf(Q[0],Q[1],n,s);if(K>=0&&(Q[0]=Math.min(Q[0],n),Q[1]=Math.max(Q[1],s),I=!0,K/(s-n)>.5))return}if(I||w.push([n,s]),this.config.renderTextTracksNatively){const j=this.captionsTracks[t];this.Cues.newCue(j,n,s,_)}else{const j=this.Cues.newCue(null,n,s,_);this.hls.trigger(u.CUES_PARSED,{type:"captions",cues:j,track:t})}}onInitPtsFound(t,{frag:n,id:s,initPTS:_,timescale:w,trackId:I}){const{unparsedVttFrags:j}=this;s===o.MAIN&&(this.initPTS[n.cc]={baseTime:_,timescale:w,trackId:I}),j.length&&(this.unparsedVttFrags=[],j.forEach(Q=>{this.initPTS[Q.frag.cc]?this.onFragLoaded(u.FRAG_LOADED,Q):this.hls.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:Q.frag,error:new Error("Subtitle discontinuity domain does not match main")})}))}getExistingTrack(t,n){const{media:s}=this;if(s)for(let _=0;_{Js(_[w]),delete _[w]}),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=y(),this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:t}=this;if(!t)return;const n=t.textTracks;if(n)for(let s=0;sw.textCodec===eu);if(this.config.enableWebVTT||_&&this.config.enableIMSC1){if(Of(this.tracks,s)){this.tracks=s;return}if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const I=this.media,j=I?rc(I.textTracks):null;if(this.tracks.forEach((Q,K)=>{let se;if(j){let de=null;for(let xe=0;xeK!==null).map(K=>K.label);Q.length&&this.hls.logger.warn(`Media element contains unused subtitle tracks: ${Q.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const I=this.tracks.map(j=>({label:j.name,kind:j.type.toLowerCase(),default:j.default,subtitleTrack:j}));this.hls.trigger(u.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:I})}}}onManifestLoaded(t,n){this.config.enableCEA708Captions&&n.captions&&n.captions.forEach(s=>{const _=/(?:CC|SERVICE)([1-4])/.exec(s.instreamId);if(!_)return;const w=`textTrack${_[1]}`,I=this.captionsProperties[w];I&&(I.label=s.name,s.lang&&(I.languageCode=s.lang),I.media=s)})}closedCaptionsForLevel(t){const n=this.hls.levels[t.level];return n==null?void 0:n.attrs["CLOSED-CAPTIONS"]}onFragLoading(t,n){if(this.enabled&&n.frag.type===o.MAIN){var s,_;const{cea608Parser1:w,cea608Parser2:I,lastSn:j}=this,{cc:Q,sn:K}=n.frag,se=(s=(_=n.part)==null?void 0:_.index)!=null?s:-1;w&&I&&(K!==j+1||K===j&&se!==this.lastPartIndex+1||Q!==this.lastCc)&&(w.reset(),I.reset()),this.lastCc=Q,this.lastSn=K,this.lastPartIndex=se}}onFragLoaded(t,n){const{frag:s,payload:_}=n;if(s.type===o.SUBTITLE)if(_.byteLength){const w=s.decryptdata,I="stats"in n;if(w==null||!w.encrypted||I){const j=this.tracks[s.level],Q=this.vttCCs;Q[s.cc]||(Q[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),j&&j.textCodec===eu?this._parseIMSC1(s,_):this._parseVTTs(n)}}else this.hls.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(t,n){const s=this.hls;Bc(n,this.initPTS[t.cc],_=>{this._appendCues(_,t.level),s.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})},_=>{s.logger.log(`Failed to parse IMSC1: ${_}`),s.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,error:_})})}_parseVTTs(t){var n;const{frag:s,payload:_}=t,{initPTS:w,unparsedVttFrags:I}=this,j=w.length-1;if(!w[s.cc]&&j===-1){I.push(t);return}const Q=this.hls,K=(n=s.initSegment)!=null&&n.data?Qt(s.initSegment.data,new Uint8Array(_)).buffer:_;Fc(K,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,se=>{this._appendCues(se,s.level),Q.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})},se=>{const de=se.message==="Missing initPTS for VTT MPEGTS";de?I.push(t):this._fallbackToIMSC1(s,_),Q.logger.log(`Failed to parse VTT cue: ${se}`),!(de&&j>s.cc)&&Q.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:se})})}_fallbackToIMSC1(t,n){const s=this.tracks[t.level];s.textCodec||Bc(n,this.initPTS[t.cc],()=>{s.textCodec=eu,this._parseIMSC1(t,n)},()=>{s.textCodec="wvtt"})}_appendCues(t,n){const s=this.hls;if(this.config.renderTextTracksNatively){const _=this.textTracks[n];if(!_||_.mode==="disabled")return;t.forEach(w=>Ks(_,w))}else{const _=this.tracks[n];if(!_)return;const w=_.default?"default":"subtitles"+n;s.trigger(u.CUES_PARSED,{type:"subtitles",cues:t,track:w})}}onFragDecrypted(t,n){const{frag:s}=n;s.type===o.SUBTITLE&&this.onFragLoaded(u.FRAG_LOADED,n)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(t,n){if(!this.enabled||!this.config.enableCEA708Captions)return;const{frag:s,samples:_}=n;if(!(s.type===o.MAIN&&this.closedCaptionsForLevel(s)==="NONE"))for(let w=0;w<_.length;w++){const I=_[w].bytes;if(I){this.cea608Parser1||this.initCea608Parsers();const j=this.extractCea608Data(I);this.cea608Parser1.addData(_[w].pts,j[0]),this.cea608Parser2.addData(_[w].pts,j[1])}}}onBufferFlushing(t,{startOffset:n,endOffset:s,endOffsetSubtitles:_,type:w}){const{media:I}=this;if(!(!I||I.currentTimecu(j[Q],n,s))}if(this.config.renderTextTracksNatively&&n===0&&_!==void 0){const{textTracks:j}=this;Object.keys(j).forEach(Q=>cu(j[Q],n,_))}}}extractCea608Data(t){const n=[[],[]],s=t[0]&31;let _=2;for(let w=0;w=16?Q--:Q++;const ke=fl(K.trim()),Re=sf(t,n,ke);k!=null&&(de=k.cues)!=null&&de.getCueById(Re)||(I=new se(t,n,ke),I.id=Re,I.line=xe+1,I.align="left",I.position=10+Math.min(80,Math.floor(Q*8/32)*10),_.push(I))}return k&&_.length&&(_.sort((xe,ke)=>xe.line==="auto"||ke.line==="auto"?0:xe.line>8&&ke.line>8?ke.line-xe.line:xe.line-ke.line),_.forEach(xe=>Ks(k,xe))),_}};function ge(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(k){}return!1}const De=/(\d+)-(\d+)\/(\d+)/;class rt{constructor(t){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=t.fetchSetup||gn,this.controller=new self.AbortController,this.stats=new z}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var t;this.abortInternal(),(t=this.callbacks)!=null&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(t,n,s){const _=this.stats;if(_.loading.start)throw new Error("Loader can only be used once.");_.loading.start=self.performance.now();const w=Ht(t,this.controller.signal),I=t.responseType==="arraybuffer",j=I?"byteLength":"length",{maxTimeToFirstByteMs:Q,maxLoadTimeMs:K}=n.loadPolicy;this.context=t,this.config=n,this.callbacks=s,this.request=this.fetchSetup(t,w),self.clearTimeout(this.requestTimeout),n.timeout=Q&&r(Q)?Q:K,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(_,t,this.response))},n.timeout),(ho(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then(de=>{var xe;this.response=this.loader=de;const ke=Math.max(self.performance.now(),_.loading.start);if(self.clearTimeout(this.requestTimeout),n.timeout=K,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(_,t,this.response))},K-(ke-_.loading.start)),!de.ok){const{status:at,statusText:it}=de;throw new ki(it||"fetch, bad network response",at,de)}_.loading.first=ke,_.total=Lr(de.headers)||_.total;const Re=(xe=this.callbacks)==null?void 0:xe.onProgress;return Re&&r(n.highWaterMark)?this.loadProgressively(de,_,t,n.highWaterMark,Re):I?de.arrayBuffer():t.responseType==="json"?de.json():de.text()}).then(de=>{var xe,ke;const Re=this.response;if(!Re)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),_.loading.end=Math.max(self.performance.now(),_.loading.first);const at=de[j];at&&(_.loaded=_.total=at);const it={url:Re.url,data:de,code:Re.status},Xt=(xe=this.callbacks)==null?void 0:xe.onProgress;Xt&&!r(n.highWaterMark)&&Xt(_,t,de,Re),(ke=this.callbacks)==null||ke.onSuccess(it,_,t,Re)}).catch(de=>{var xe;if(self.clearTimeout(this.requestTimeout),_.aborted)return;const ke=de&&de.code||0,Re=de?de.message:null;(xe=this.callbacks)==null||xe.onError({code:ke,text:Re},t,de?de.details:null,_)})}getCacheAge(){let t=null;if(this.response){const n=this.response.headers.get("age");t=n?parseFloat(n):null}return t}getResponseHeader(t){return this.response?this.response.headers.get(t):null}loadProgressively(t,n,s,_=0,w){const I=new Sr,j=t.body.getReader(),Q=()=>j.read().then(K=>{if(K.done)return I.dataLength&&w(n,s,I.flush().buffer,t),Promise.resolve(new ArrayBuffer(0));const se=K.value,de=se.length;return n.loaded+=de,de<_||I.dataLength?(I.push(se),I.dataLength>=_&&w(n,s,I.flush().buffer,t)):w(n,s,se.buffer,t),Q()}).catch(()=>Promise.reject());return Q()}}function Ht(k,t){const n={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(v({},k.headers))};return k.rangeEnd&&n.headers.set("Range","bytes="+k.rangeStart+"-"+String(k.rangeEnd-1)),n}function dr(k){const t=De.exec(k);if(t)return parseInt(t[2])-parseInt(t[1])+1}function Lr(k){const t=k.get("Content-Range");if(t){const s=dr(t);if(r(s))return s}const n=k.get("Content-Length");if(n)return parseInt(n)}function gn(k,t){return new self.Request(k.url,t)}class ki extends Error{constructor(t,n,s){super(t),this.code=void 0,this.details=void 0,this.code=n,this.details=s}}const Ua=/^age:\s*[\d.]+\s*$/im;class Vn{constructor(t){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=t&&t.xhrSetup||null,this.stats=new z,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const t=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),t&&(t.onreadystatechange=null,t.onprogress=null,t.readyState!==4&&(this.stats.aborted=!0,t.abort()))}abort(){var t;this.abortInternal(),(t=this.callbacks)!=null&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(t,n,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=t,this.config=n,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:t,context:n}=this;if(!t||!n)return;const s=this.loader=new self.XMLHttpRequest,_=this.stats;_.loading.first=0,_.loaded=0,_.aborted=!1;const w=this.xhrSetup;w?Promise.resolve().then(()=>{if(!(this.loader!==s||this.stats.aborted))return w(s,n.url)}).catch(I=>{if(!(this.loader!==s||this.stats.aborted))return s.open("GET",n.url,!0),w(s,n.url)}).then(()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,n,t)}).catch(I=>{var j;(j=this.callbacks)==null||j.onError({code:s.status,text:I.message},n,s,_)}):this.openAndSendXhr(s,n,t)}openAndSendXhr(t,n,s){t.readyState||t.open("GET",n.url,!0);const _=n.headers,{maxTimeToFirstByteMs:w,maxLoadTimeMs:I}=s.loadPolicy;if(_)for(const j in _)t.setRequestHeader(j,_[j]);n.rangeEnd&&t.setRequestHeader("Range","bytes="+n.rangeStart+"-"+(n.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=n.responseType,self.clearTimeout(this.requestTimeout),s.timeout=w&&r(w)?w:I,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),t.send()}readystatechange(){const{context:t,loader:n,stats:s}=this;if(!t||!n)return;const _=n.readyState,w=this.config;if(!s.aborted&&_>=2&&(s.loading.first===0&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),w.timeout!==w.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),w.timeout=w.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),w.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),_===4)){self.clearTimeout(this.requestTimeout),n.onreadystatechange=null,n.onprogress=null;const K=n.status,se=n.responseType==="text"?n.responseText:null;if(K>=200&&K<300){const Re=se!=null?se:n.response;if(Re!=null){var I,j;s.loading.end=Math.max(self.performance.now(),s.loading.first);const at=n.responseType==="arraybuffer"?Re.byteLength:Re.length;s.loaded=s.total=at,s.bwEstimate=s.total*8e3/(s.loading.end-s.loading.first);const it=(I=this.callbacks)==null?void 0:I.onProgress;it&&it(s,t,Re,n);const Xt={url:n.responseURL,data:Re,code:K};(j=this.callbacks)==null||j.onSuccess(Xt,s,t,n);return}}const de=w.loadPolicy.errorRetry,xe=s.retry,ke={url:t.url,data:void 0,code:K};if(ct(de,xe,!1,ke))this.retry(de);else{var Q;$.error(`${K} while loading ${t.url}`),(Q=this.callbacks)==null||Q.onError({code:K,text:n.statusText},t,n,s)}}}loadtimeout(){if(!this.config)return;const t=this.config.loadPolicy.timeoutRetry,n=this.stats.retry;if(ct(t,n,!0))this.retry(t);else{var s;$.warn(`timeout while loading ${(s=this.context)==null?void 0:s.url}`);const _=this.callbacks;_&&(this.abortInternal(),_.onTimeout(this.stats,this.context,this.loader))}}retry(t){const{context:n,stats:s}=this;this.retryDelay=qn(t,s.retry),s.retry++,$.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${n==null?void 0:n.url}, retrying ${s.retry}/${t.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(t){const n=this.stats;n.loaded=t.loaded,t.lengthComputable&&(n.total=t.total)}getCacheAge(){let t=null;if(this.loader&&Ua.test(this.loader.getAllResponseHeaders())){const n=this.loader.getResponseHeader("age");t=n?parseFloat(n):null}return t}getResponseHeader(t){return this.loader&&new RegExp(`^${t}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(t):null}}const fa={maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null},za=b(b({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:Number.POSITIVE_INFINITY,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,startOnSegmentBoundary:!1,maxBufferSize:60*1e3*1e3,maxFragLookUpTolerance:.25,maxBufferHole:.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,ignorePlaylistParsingErrors:!1,loader:Vn,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:me,bufferController:Mo,capLevelController:Bl,errorController:$r,fpsController:Fo,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:pu,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,useMediaCapabilities:!0,preserveManualLevelOnError:!1,certLoadPolicy:{default:fa},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:3e4,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},Ra()),{},{subtitleStreamController:Pl,subtitleTrackController:Lc,timelineController:ad,audioStreamController:Lo,audioTrackController:wl,emeController:tn,cmcdController:P,contentSteeringController:L,interstitialsController:wf});function Ra(){return{cueHandler:U,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function sn(k,t,n){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(t.liveMaxLatencyDurationCount!==void 0&&(t.liveSyncDurationCount===void 0||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(t.liveMaxLatencyDuration!==void 0&&(t.liveSyncDuration===void 0||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=Ur(k),_=["manifest","level","frag"],w=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return _.forEach(I=>{const j=`${I==="level"?"playlist":I}LoadPolicy`,Q=t[j]===void 0,K=[];w.forEach(se=>{const de=`${I}Loading${se}`,xe=t[de];if(xe!==void 0&&Q){K.push(de);const ke=s[j].default;switch(t[j]={default:ke},se){case"TimeOut":ke.maxLoadTimeMs=xe,ke.maxTimeToFirstByteMs=xe;break;case"MaxRetry":ke.errorRetry.maxNumRetry=xe,ke.timeoutRetry.maxNumRetry=xe;break;case"RetryDelay":ke.errorRetry.retryDelayMs=xe,ke.timeoutRetry.retryDelayMs=xe;break;case"MaxRetryTimeout":ke.errorRetry.maxRetryDelayMs=xe,ke.timeoutRetry.maxRetryDelayMs=xe;break}}}),K.length&&n.warn(`hls.js config: "${K.join('", "')}" setting(s) are deprecated, use "${j}": ${zi(t[j])}`)}),b(b({},s),t)}function Ur(k){return k&&typeof k=="object"?Array.isArray(k)?k.map(Ur):Object.keys(k).reduce((t,n)=>(t[n]=Ur(k[n]),t),{}):k}function an(k,t){const n=k.loader;n!==rt&&n!==Vn?(t.log("[config]: Custom loader detected, cannot enable progressive streaming"),k.progressive=!1):ge()&&(k.loader=rt,k.progressive=!0,k.enableSoftwareAES=!0,t.log("[config]: Progressive streaming enabled, using FetchLoader"))}const On=2,zn=.1,Xa=.05,Ki=100;class Qa extends to{constructor(t,n){super("gap-controller",t.logger),this.hls=void 0,this.fragmentTracker=void 0,this.media=null,this.mediaSource=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.buffered={},this.lastCurrentTime=0,this.ended=0,this.waiting=0,this.onMediaPlaying=()=>{this.ended=0,this.waiting=0},this.onMediaWaiting=()=>{var s;(s=this.media)!=null&&s.seeking||(this.waiting=self.performance.now(),this.tick())},this.onMediaEnded=()=>{if(this.hls){var s;this.ended=((s=this.media)==null?void 0:s.currentTime)||1,this.hls.trigger(u.MEDIA_ENDED,{stalled:!1})}},this.hls=t,this.fragmentTracker=n,this.registerListeners()}registerListeners(){const{hls:t}=this;t&&(t.on(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.BUFFER_APPENDED,this.onBufferAppended,this))}unregisterListeners(){const{hls:t}=this;t&&(t.off(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.BUFFER_APPENDED,this.onBufferAppended,this))}destroy(){super.destroy(),this.unregisterListeners(),this.media=this.hls=this.fragmentTracker=null,this.mediaSource=void 0}onMediaAttached(t,n){this.setInterval(Ki),this.mediaSource=n.mediaSource;const s=this.media=n.media;ja(s,"playing",this.onMediaPlaying),ja(s,"waiting",this.onMediaWaiting),ja(s,"ended",this.onMediaEnded)}onMediaDetaching(t,n){this.clearInterval();const{media:s}=this;s&&(fs(s,"playing",this.onMediaPlaying),fs(s,"waiting",this.onMediaWaiting),fs(s,"ended",this.onMediaEnded),this.media=null),this.mediaSource=void 0}onBufferAppended(t,n){this.buffered=n.timeRanges}get hasBuffered(){return Object.keys(this.buffered).length>0}tick(){var t;if(!((t=this.media)!=null&&t.readyState)||!this.hasBuffered)return;const n=this.media.currentTime;this.poll(n,this.lastCurrentTime),this.lastCurrentTime=n}poll(t,n){var s,_;const w=(s=this.hls)==null?void 0:s.config;if(!w)return;const I=this.media;if(!I)return;const{seeking:j}=I,Q=this.seeking&&!j,K=!this.seeking&&j,se=I.paused&&!j||I.ended||I.playbackRate===0;if(this.seeking=j,t!==n){n&&(this.ended=0),this.moved=!0,j||(this.nudgeRetry=0,w.nudgeOnVideoHole&&!se&&t>n&&this.nudgeOnVideoHole(t,n)),this.waiting===0&&this.stallResolved(t);return}if(K||Q){Q&&this.stallResolved(t);return}if(se){this.nudgeRetry=0,this.stallResolved(t),!this.ended&&I.ended&&this.hls&&(this.ended=t||1,this.hls.trigger(u.MEDIA_ENDED,{stalled:!1}));return}if(!mi.getBuffered(I).length){this.nudgeRetry=0;return}const de=mi.bufferInfo(I,t,0),xe=de.nextStart||0,ke=this.fragmentTracker;if(j&&ke&&this.hls){const vn=ms(this.hls.inFlightFragments,t),Zr=de.len>On,fn=!xe||vn||xe-t>On&&!ke.getPartialFragment(t);if(Zr||fn)return;this.moved=!1}const Re=(_=this.hls)==null?void 0:_.latestLevelDetails;if(!this.moved&&this.stalled!==null&&ke){if(!(de.len>0)&&!xe)return;const Zr=Math.max(xe,de.start||0)-t,ln=!!(Re!=null&&Re.live)?Re.targetduration*2:On,Qr=Kl(t,ke);if(Zr>0&&(Zr<=ln||Qr)){I.paused||this._trySkipBufferHole(Qr);return}}const at=w.detectStallWithCurrentTimeMs,it=self.performance.now(),Xt=this.waiting;let ar=this.stalled;if(ar===null)if(Xt>0&&it-Xt=at||Xt)&&this.hls){var Ar;if(((Ar=this.mediaSource)==null?void 0:Ar.readyState)==="ended"&&!(Re!=null&&Re.live)&&Math.abs(t-((Re==null?void 0:Re.edge)||0))<1){if(this.ended)return;this.ended=t||1,this.hls.trigger(u.MEDIA_ENDED,{stalled:!0});return}if(this._reportStall(de),!this.media||!this.hls)return}const zr=mi.bufferInfo(I,t,w.maxBufferHole);this._tryFixBufferStall(zr,lr,t)}stallResolved(t){const n=this.stalled;if(n&&this.hls&&(this.stalled=null,this.stallReported)){const s=self.performance.now()-n;this.log(`playback not stuck anymore @${t}, after ${Math.round(s)}ms`),this.stallReported=!1,this.waiting=0,this.hls.trigger(u.STALL_RESOLVED,{})}}nudgeOnVideoHole(t,n){var s;const _=this.buffered.video;if(this.hls&&this.media&&this.fragmentTracker&&(s=this.buffered.audio)!=null&&s.length&&_&&_.length>1&&t>_.end(0)){const w=mi.bufferedInfo(mi.timeRangesToArray(this.buffered.audio),t,0);if(w.len>1&&n>=w.start){const I=mi.timeRangesToArray(_),j=mi.bufferedInfo(I,n,0).bufferedIndex;if(j>-1&&jj)&&se-K<1&&t-K<2){const de=new Error(`nudging playhead to flush pipeline after video hole. currentTime: ${t} hole: ${K} -> ${se} buffered index: ${Q}`);this.warn(de.message),this.media.currentTime+=1e-6;let xe=Kl(t,this.fragmentTracker);xe&&"fragment"in xe?xe=xe.fragment:xe||(xe=void 0);const ke=mi.bufferInfo(this.media,t,0);this.hls.trigger(u.ERROR,{type:c.MEDIA_ERROR,details:f.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:de,reason:de.message,frag:xe,buffer:ke.len,bufferInfo:ke})}}}}}_tryFixBufferStall(t,n,s){var _,w;const{fragmentTracker:I,media:j}=this,Q=(_=this.hls)==null?void 0:_.config;if(!j||!I||!Q)return;const K=(w=this.hls)==null?void 0:w.latestLevelDetails,se=Kl(s,I);if((se||K!=null&&K.live&&s1&&t.len>Q.maxBufferHole||t.nextStart&&(t.nextStart-sQ.highBufferWatchdogPeriod*1e3||this.waiting)&&(this.warn("Trying to nudge playhead over buffer-hole"),this._tryNudgeBuffer(t))}adjacentTraversal(t,n){const s=this.fragmentTracker,_=t.nextStart;if(s&&_){const w=s.getFragAtPos(n,o.MAIN),I=s.getFragAtPos(_,o.MAIN);if(w&&I)return I.sn-w.sn<2}return!1}_reportStall(t){const{hls:n,media:s,stallReported:_,stalled:w}=this;if(!_&&w!==null&&s&&n){this.stallReported=!0;const I=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${zi(t)})`);this.warn(I.message),n.trigger(u.ERROR,{type:c.MEDIA_ERROR,details:f.BUFFER_STALLED_ERROR,fatal:!1,error:I,buffer:t.len,bufferInfo:t,stalled:{start:w}})}}_trySkipBufferHole(t){var n;const{fragmentTracker:s,media:_}=this,w=(n=this.hls)==null?void 0:n.config;if(!_||!s||!w)return 0;const I=_.currentTime,j=mi.bufferInfo(_,I,0),Q=I0&&j.len<1&&_.readyState<3,xe=Q-I;if(xe>0&&(se||de)){if(xe>w.maxBufferHole){let Re=!1;if(I===0){const at=s.getAppendedFrag(0,o.MAIN);at&&Q{const k=od();try{k&&new k(0,Number.POSITIVE_INFINITY,"")}catch(t){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();class Sd{constructor(t){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.removeCues=!0,this.assetCue=void 0,this.onEventCueEnter=()=>{this.hls&&this.hls.trigger(u.EVENT_CUE_ENTER,{})},this.hls=t,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=this.onEventCueEnter=null}_registerListeners(){const{hls:t}=this;t&&(t.on(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.on(u.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(u.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}_unregisterListeners(){const{hls:t}=this;t&&(t.off(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.off(u.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(u.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}onMediaAttaching(t,n){var s;this.media=n.media,((s=n.overrides)==null?void 0:s.cueRemoval)===!1&&(this.removeCues=!1)}onMediaAttached(){var t;const n=(t=this.hls)==null?void 0:t.latestLevelDetails;n&&this.updateDateRangeCues(n)}onMediaDetaching(t,n){this.media=null,!n.transferMedia&&(this.id3Track&&(this.removeCues&&Js(this.id3Track,this.onEventCueEnter),this.id3Track=null),this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(t){const n=this.getID3Track(t.textTracks);return n.mode="hidden",n}getID3Track(t){if(this.media){for(let n=0;ned&&(de=ed),de-se<=0&&(de=se+sd);for(let ke=0;kese.type===yn.audioId3&&Q:_==="video"?K=se=>se.type===yn.emsg&&j:K=se=>se.type===yn.audioId3&&Q||se.type===yn.emsg&&j,cu(w,n,s,K)}}onLevelUpdated(t,{details:n}){this.updateDateRangeCues(n,!0)}onLevelPtsUpdated(t,n){Math.abs(n.drift)>.01&&this.updateDateRangeCues(n.details)}updateDateRangeCues(t,n){if(!this.hls||!this.media)return;const{assetPlayerId:s,timelineOffset:_,enableDateRangeMetadataCues:w,interstitialsController:I}=this.hls.config;if(!w)return;const j=od();if(s&&_&&!I){const{fragmentStart:at,fragmentEnd:it}=t;let Xt=this.assetCue;Xt?(Xt.startTime=at,Xt.endTime=it):j&&(Xt=this.assetCue=ud(j,at,it,{assetPlayerId:this.hls.config.assetPlayerId},"hlsjs.interstitial.asset"),Xt&&(Xt.id=s,this.id3Track||(this.id3Track=this.createTrack(this.media)),this.id3Track.addCue(Xt),Xt.addEventListener("enter",this.onEventCueEnter)))}if(!t.hasProgramDateTime)return;const{id3Track:Q}=this,{dateRanges:K}=t,se=Object.keys(K);let de=this.dateRangeCuesAppended;if(Q&&n){var xe;if((xe=Q.cues)!=null&&xe.length){const at=Object.keys(de).filter(it=>!se.includes(it));for(let it=at.length;it--;){var ke;const Xt=at[it],ar=(ke=de[Xt])==null?void 0:ke.cues;delete de[Xt],ar&&Object.keys(ar).forEach(lr=>{const Ar=ar[lr];if(Ar){Ar.removeEventListener("enter",this.onEventCueEnter);try{Q.removeCue(Ar)}catch(zr){}}})}}else de=this.dateRangeCuesAppended={}}const Re=t.fragments[t.fragments.length-1];if(!(se.length===0||!r(Re==null?void 0:Re.programDateTime))){this.id3Track||(this.id3Track=this.createTrack(this.media));for(let at=0;at{if(Si!==Xt.id){const qi=K[Si];if(qi.class===Xt.class&&qi.startDate>Xt.startDate&&(!kn||Xt.startDate.01&&(Si.startTime=ar,Si.endTime=vn);else if(j){let qi=Xt.attr[kn];jo(kn)&&(qi=G(qi));const Ji=ud(j,ar,vn,{key:kn,data:qi},yn.dateRange);Ji&&(Ji.id=it,this.id3Track.addCue(Ji),Ar[kn]=Ji,I&&(kn==="X-ASSET-LIST"||kn==="X-ASSET-URL")&&Ji.addEventListener("enter",this.onEventCueEnter))}}de[it]={cues:Ar,dateRange:Xt,durationKnown:zr}}}}}class Ad{constructor(t){this.hls=void 0,this.config=void 0,this.media=null,this.currentTime=0,this.stallCount=0,this._latency=null,this._targetLatencyUpdated=!1,this.onTimeupdate=()=>{const{media:n}=this,s=this.levelDetails;if(!n||!s)return;this.currentTime=n.currentTime;const _=this.computeLatency();if(_===null)return;this._latency=_;const{lowLatencyMode:w,maxLiveSyncPlaybackRate:I}=this.config;if(!w||I===1||!s.live)return;const j=this.targetLatency;if(j===null)return;const Q=_-j,K=Math.min(this.maxLatency,j+s.targetduration);if(Q.05&&this.forwardBufferLength>1){const de=Math.min(2,Math.max(1,I)),xe=Math.round(2/(1+Math.exp(-.75*Q-this.edgeStalled))*20)/20,ke=Math.min(de,Math.max(1,xe));this.changeMediaPlaybackRate(n,ke)}else n.playbackRate!==1&&n.playbackRate!==0&&this.changeMediaPlaybackRate(n,1)},this.hls=t,this.config=t.config,this.registerListeners()}get levelDetails(){var t;return((t=this.hls)==null?void 0:t.latestLevelDetails)||null}get latency(){return this._latency||0}get maxLatency(){const{config:t}=this;if(t.liveMaxLatencyDuration!==void 0)return t.liveMaxLatencyDuration;const n=this.levelDetails;return n?t.liveMaxLatencyDurationCount*n.targetduration:0}get targetLatency(){const t=this.levelDetails;if(t===null||this.hls===null)return null;const{holdBack:n,partHoldBack:s,targetduration:_}=t,{liveSyncDuration:w,liveSyncDurationCount:I,lowLatencyMode:j}=this.config,Q=this.hls.userConfig;let K=j&&s||n;(this._targetLatencyUpdated||Q.liveSyncDuration||Q.liveSyncDurationCount||K===0)&&(K=w!==void 0?w:I*_);const se=_;return K+Math.min(this.stallCount*this.config.liveSyncOnStallIncrease,se)}set targetLatency(t){this.stallCount=0,this.config.liveSyncDuration=t,this._targetLatencyUpdated=!0}get liveSyncPosition(){const t=this.estimateLiveEdge(),n=this.targetLatency;if(t===null||n===null)return null;const s=this.levelDetails;if(s===null)return null;const _=s.edge,w=t-n-this.edgeStalled,I=_-s.totalduration,j=_-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(I,w),j)}get drift(){const t=this.levelDetails;return t===null?1:t.drift}get edgeStalled(){const t=this.levelDetails;if(t===null)return 0;const n=(this.config.lowLatencyMode&&t.partTarget||t.targetduration)*3;return Math.max(t.age-n,0)}get forwardBufferLength(){const{media:t}=this,n=this.levelDetails;if(!t||!n)return 0;const s=t.buffered.length;return(s?t.buffered.end(s-1):n.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.hls=null}registerListeners(){const{hls:t}=this;t&&(t.on(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(u.ERROR,this.onError,this))}unregisterListeners(){const{hls:t}=this;t&&(t.off(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(u.ERROR,this.onError,this))}onMediaAttached(t,n){this.media=n.media,this.media.addEventListener("timeupdate",this.onTimeupdate)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)}onManifestLoading(){this._latency=null,this.stallCount=0}onLevelUpdated(t,{details:n}){n.advanced&&this.onTimeupdate(),!n.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)}onError(t,n){var s;n.details===f.BUFFER_STALLED_ERROR&&(this.stallCount++,this.hls&&(s=this.levelDetails)!=null&&s.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))}changeMediaPlaybackRate(t,n){var s,_;t.playbackRate!==n&&((s=this.hls)==null||s.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(_=this.targetLatency)==null?void 0:_.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${t.playbackRate} to ${n}`),t.playbackRate=n)}estimateLiveEdge(){const t=this.levelDetails;return t===null?null:t.edge+t.age}computeLatency(){const t=this.estimateLiveEdge();return t===null?null:t-this.currentTime}}class Cd extends pc{constructor(t,n){super(t,"level-controller"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=n,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(u.LEVEL_LOADED,this.onLevelLoaded,this),t.on(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(u.FRAG_BUFFERED,this.onFragBuffered,this),t.on(u.ERROR,this.onError,this)}_unregisterListeners(){const{hls:t}=this;t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(u.LEVEL_LOADED,this.onLevelLoaded,this),t.off(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(u.FRAG_BUFFERED,this.onFragBuffered,this),t.off(u.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach(n=>{n.loadError=0,n.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(t,n){this.resetLevels()}onManifestLoaded(t,n){const s=this.hls.config.preferManagedMediaSource,_=[],w={},I={};let j=!1,Q=!1,K=!1;n.levels.forEach(se=>{const de=se.attrs;let{audioCodec:xe,videoCodec:ke}=se;xe&&(se.audioCodec=xe=ht(xe,s)||void 0),ke&&(ke=se.videoCodec=er(ke));const{width:Re,height:at,unknownCodecs:it}=se,Xt=(it==null?void 0:it.length)||0;if(j||(j=!!(Re&&at)),Q||(Q=!!ke),K||(K=!!xe),Xt||xe&&!this.isAudioSupported(xe)||ke&&!this.isVideoSupported(ke)){this.log(`Some or all CODECS not supported "${de.CODECS}"`);return}const{CODECS:ar,"FRAME-RATE":lr,"HDCP-LEVEL":Ar,"PATHWAY-ID":zr,RESOLUTION:vn,"VIDEO-RANGE":Zr}=de,ln=`${`${zr||"."}-`}${se.bitrate}-${vn}-${lr}-${ar}-${Zr}-${Ar}`;if(w[ln])if(w[ln].uri!==se.url&&!se.attrs["PATHWAY-ID"]){const Qr=I[ln]+=1;se.attrs["PATHWAY-ID"]=new Array(Qr+1).join(".");const kn=this.createLevel(se);w[ln]=kn,_.push(kn)}else w[ln].addGroupId("audio",de.AUDIO),w[ln].addGroupId("text",de.SUBTITLES);else{const Qr=this.createLevel(se);w[ln]=Qr,I[ln]=1,_.push(Qr)}}),this.filterAndSortMediaOptions(_,n,j,Q,K)}createLevel(t){const n=new pi(t),s=t.supplemental;if(s!=null&&s.videoCodec&&!this.isVideoSupported(s.videoCodec)){const _=new Error(`SUPPLEMENTAL-CODECS not supported "${s.videoCodec}"`);this.log(_.message),n.supportedResult=Bt(_,[])}return n}isAudioSupported(t){return Ae(t,"audio",this.hls.config.preferManagedMediaSource)}isVideoSupported(t){return Ae(t,"video",this.hls.config.preferManagedMediaSource)}filterAndSortMediaOptions(t,n,s,_,w){var I;let j=[],Q=[],K=t;const se=((I=n.stats)==null?void 0:I.parsing)||{};if((s||_)&&w&&(K=K.filter(({videoCodec:ar,videoRange:lr,width:Ar,height:zr})=>(!!ar||!!(Ar&&zr))&&Bi(lr))),K.length===0){Promise.resolve().then(()=>{if(this.hls){let ar="no level with compatible codecs found in manifest",lr=ar;n.levels.length&&(lr=`one or more CODECS in variant not supported: ${zi(n.levels.map(zr=>zr.attrs.CODECS).filter((zr,vn,Zr)=>Zr.indexOf(zr)===vn))}`,this.warn(lr),ar+=` (${lr})`);const Ar=new Error(ar);this.hls.trigger(u.ERROR,{type:c.MEDIA_ERROR,details:f.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:n.url,error:Ar,reason:lr})}}),se.end=performance.now();return}n.audioTracks&&(j=n.audioTracks.filter(ar=>!ar.audioCodec||this.isAudioSupported(ar.audioCodec)),hd(j)),n.subtitles&&(Q=n.subtitles,hd(Q));const de=K.slice(0);K.sort((ar,lr)=>{if(ar.attrs["HDCP-LEVEL"]!==lr.attrs["HDCP-LEVEL"])return(ar.attrs["HDCP-LEVEL"]||"")>(lr.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&ar.height!==lr.height)return ar.height-lr.height;if(ar.frameRate!==lr.frameRate)return ar.frameRate-lr.frameRate;if(ar.videoRange!==lr.videoRange)return ii.indexOf(ar.videoRange)-ii.indexOf(lr.videoRange);if(ar.videoCodec!==lr.videoCodec){const Ar=et(ar.videoCodec),zr=et(lr.videoCodec);if(Ar!==zr)return zr-Ar}if(ar.uri===lr.uri&&ar.codecSet!==lr.codecSet){const Ar=yt(ar.codecSet),zr=yt(lr.codecSet);if(Ar!==zr)return zr-Ar}return ar.averageBitrate!==lr.averageBitrate?ar.averageBitrate-lr.averageBitrate:0});let xe=de[0];if(this.steering&&(K=this.steering.filterParsedLevels(K),K.length!==de.length)){for(let ar=0;arAr&&Ar===this.hls.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=zr)}break}const Re=w&&!_,at=this.hls.config,it=!!(at.audioStreamController&&at.audioTrackController),Xt={levels:K,audioTracks:j,subtitleTracks:Q,sessionData:n.sessionData,sessionKeys:n.sessionKeys,firstLevel:this._firstLevel,stats:n.stats,audio:w,video:_,altAudio:it&&!Re&&j.some(ar=>!!ar.url)};se.end=performance.now(),this.hls.trigger(u.MANIFEST_PARSED,Xt)}get levels(){return this._levels.length===0?null:this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(t){const n=this._levels;if(n.length===0)return;if(t<0||t>=n.length){const se=new Error("invalid level idx"),de=t<0;if(this.hls.trigger(u.ERROR,{type:c.OTHER_ERROR,details:f.LEVEL_SWITCH_ERROR,level:t,fatal:de,error:se,reason:se.message}),de)return;t=Math.min(t,n.length-1)}const s=this.currentLevelIndex,_=this.currentLevel,w=_?_.attrs["PATHWAY-ID"]:void 0,I=n[t],j=I.attrs["PATHWAY-ID"];if(this.currentLevelIndex=t,this.currentLevel=I,s===t&&_&&w===j)return;this.log(`Switching to level ${t} (${I.height?I.height+"p ":""}${I.videoRange?I.videoRange+" ":""}${I.codecSet?I.codecSet+" ":""}@${I.bitrate})${j?" with Pathway "+j:""} from level ${s}${w?" with Pathway "+w:""}`);const Q={level:t,attrs:I.attrs,details:I.details,bitrate:I.bitrate,averageBitrate:I.averageBitrate,maxBitrate:I.maxBitrate,realBitrate:I.realBitrate,width:I.width,height:I.height,codecSet:I.codecSet,audioCodec:I.audioCodec,videoCodec:I.videoCodec,audioGroups:I.audioGroups,subtitleGroups:I.subtitleGroups,loaded:I.loaded,loadError:I.loadError,fragmentError:I.fragmentError,name:I.name,id:I.id,uri:I.uri,url:I.url,urlId:0,audioGroupIds:I.audioGroupIds,textGroupIds:I.textGroupIds};this.hls.trigger(u.LEVEL_SWITCHING,Q);const K=I.details;if(!K||K.live){const se=this.switchParams(I.uri,_==null?void 0:_.details,K);this.loadPlaylist(se)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(t){this.manualLevelIndex=t,this._startLevel===void 0&&(this._startLevel=t),t!==-1&&(this.level=t)}get firstLevel(){return this._firstLevel}set firstLevel(t){this._firstLevel=t}get startLevel(){if(this._startLevel===void 0){const t=this.hls.config.startLevel;return t!==void 0?t:this.hls.firstAutoLevel}return this._startLevel}set startLevel(t){this._startLevel=t}get pathways(){return this.steering?this.steering.pathways():[]}get pathwayPriority(){return this.steering?this.steering.pathwayPriority:null}set pathwayPriority(t){if(this.steering){const n=this.steering.pathways(),s=t.filter(_=>n.indexOf(_)!==-1);if(t.length<1){this.warn(`pathwayPriority ${t} should contain at least one pathway from list: ${n}`);return}this.steering.pathwayPriority=s}}onError(t,n){n.fatal||!n.context||n.context.type===h.LEVEL&&n.context.level===this.level&&this.checkRetry(n)}onFragBuffered(t,{frag:n}){if(n!==void 0&&n.type===o.MAIN){const s=n.elementaryStreams;if(!Object.keys(s).some(w=>!!s[w]))return;const _=this._levels[n.level];_!=null&&_.loadError&&(this.log(`Resetting level error count of ${_.loadError} on frag buffered`),_.loadError=0)}}onLevelLoaded(t,n){var s;const{level:_,details:w}=n,I=n.levelInfo;if(!I){var j;this.warn(`Invalid level index ${_}`),(j=n.deliveryDirectives)!=null&&j.skip&&(w.deltaUpdateFailed=!0);return}if(I===this.currentLevel||n.withoutMultiVariant){I.fragmentError===0&&(I.loadError=0);let Q=I.details;Q===n.details&&Q.advanced&&(Q=void 0),this.playlistLoaded(_,n,Q)}else(s=n.deliveryDirectives)!=null&&s.skip&&(w.deltaUpdateFailed=!0)}loadPlaylist(t){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel)&&this.scheduleLoading(this.currentLevel,t)}loadingPlaylist(t,n){super.loadingPlaylist(t,n);const s=this.getUrlWithDirectives(t.uri,n),_=this.currentLevelIndex,w=t.attrs["PATHWAY-ID"],I=t.details,j=I==null?void 0:I.age;this.log(`Loading level index ${_}${(n==null?void 0:n.msn)!==void 0?" at sn "+n.msn+" part "+n.part:""}${w?" Pathway "+w:""}${j&&I.live?" age "+j.toFixed(1)+(I.type?" "+I.type||0:""):""} ${s}`),this.hls.trigger(u.LEVEL_LOADING,{url:s,level:_,levelInfo:t,pathwayId:t.attrs["PATHWAY-ID"],id:0,deliveryDirectives:n||null})}get nextLoadLevel(){return this.manualLevelIndex!==-1?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(t){this.level=t,this.manualLevelIndex===-1&&(this.hls.nextAutoLevel=t)}removeLevel(t){var n;if(this._levels.length===1)return;const s=this._levels.filter((w,I)=>I!==t?!0:(this.steering&&this.steering.removeLevel(w),w===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,w.details&&w.details.fragments.forEach(j=>j.level=-1)),!1));hs(s),this._levels=s,this.currentLevelIndex>-1&&(n=this.currentLevel)!=null&&n.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.manualLevelIndex>-1&&(this.manualLevelIndex=this.currentLevelIndex);const _=s.length-1;this._firstLevel=Math.min(this._firstLevel,_),this._startLevel&&(this._startLevel=Math.min(this._startLevel,_)),this.hls.trigger(u.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(t,{levels:n}){this._levels=n}checkMaxAutoUpdated(){const{autoLevelCapping:t,maxAutoLevel:n,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==n&&(this._maxAutoLevel=n,this.hls.trigger(u.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:n,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function hd(k){const t={};k.forEach(n=>{const s=n.groupId||"";n.id=t[s]=t[s]||0,t[s]++})}function pd(){return self.SourceBuffer||self.WebKitSourceBuffer}function md(){if(!oe())return!1;const t=pd();return!t||t.prototype&&typeof t.prototype.appendBuffer=="function"&&typeof t.prototype.remove=="function"}function Td(){if(!md())return!1;const k=oe();return typeof(k==null?void 0:k.isTypeSupported)=="function"&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some(t=>k.isTypeSupported(je(t,"video")))||["mp4a.40.2","fLaC"].some(t=>k.isTypeSupported(je(t,"audio"))))}function Pd(){var k;const t=pd();return typeof(t==null||(k=t.prototype)==null?void 0:k.changeType)=="function"}const vd=100;class _d extends jt{constructor(t,n,s){super(t,n,s,"stream-controller",o.MAIN),this.audioCodecSwap=!1,this.level=-1,this._forceStartLoad=!1,this._hasEnoughToStart=!1,this.altAudio=0,this.audioOnly=!1,this.fragPlaying=null,this.fragLastKbps=0,this.couldBacktrack=!1,this.backtrackFragment=null,this.audioCodecSwitch=!1,this.videoBuffer=null,this.onMediaPlaying=()=>{this.tick()},this.onMediaSeeked=()=>{const _=this.media,w=_?_.currentTime:null;if(w===null||!r(w)||(this.log(`Media seeked to ${w.toFixed(3)}`),!this.getBufferedFrag(w)))return;const I=this.getFwdBufferInfoAtPos(_,w,o.MAIN,0);if(I===null||I.len===0){this.warn(`Main forward buffer length at ${w} on "seeked" event ${I?I.len:"empty"})`);return}this.tick()},this.registerListeners()}registerListeners(){super.registerListeners();const{hls:t}=this;t.on(u.MANIFEST_PARSED,this.onManifestParsed,this),t.on(u.LEVEL_LOADING,this.onLevelLoading,this),t.on(u.LEVEL_LOADED,this.onLevelLoaded,this),t.on(u.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),t.on(u.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),t.on(u.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),t.on(u.BUFFER_CREATED,this.onBufferCreated,this),t.on(u.BUFFER_FLUSHED,this.onBufferFlushed,this),t.on(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(u.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){super.unregisterListeners();const{hls:t}=this;t.off(u.MANIFEST_PARSED,this.onManifestParsed,this),t.off(u.LEVEL_LOADED,this.onLevelLoaded,this),t.off(u.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),t.off(u.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),t.off(u.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),t.off(u.BUFFER_CREATED,this.onBufferCreated,this),t.off(u.BUFFER_FLUSHED,this.onBufferFlushed,this),t.off(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(u.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this.onMediaPlaying=this.onMediaSeeked=null,this.unregisterListeners(),super.onHandlerDestroying()}startLoad(t,n){if(this.levels){const{lastCurrentTime:s,hls:_}=this;if(this.stopLoad(),this.setInterval(vd),this.level=-1,!this.startFragRequested){let w=_.startLevel;w===-1&&(_.config.testBandwidth&&this.levels.length>1?(w=0,this.bitrateTest=!0):w=_.firstAutoLevel),_.nextLoadLevel=w,this.level=_.loadLevel,this._hasEnoughToStart=!!n}s>0&&t===-1&&!n&&(this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`),t=s),this.state=Ie.IDLE,this.nextLoadPosition=this.lastCurrentTime=t+this.timelineOffset,this.startPosition=n?-1:t,this.tick()}else this._forceStartLoad=!0,this.state=Ie.STOPPED}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Ie.WAITING_LEVEL:{const{levels:t,level:n}=this,s=t==null?void 0:t[n],_=s==null?void 0:s.details;if(_&&(!_.live||this.levelLastLoaded===s&&!this.waitForLive(s))){if(this.waitForCdnTuneIn(_))break;this.state=Ie.IDLE;break}else if(this.hls.nextLoadLevel!==this.level){this.state=Ie.IDLE;break}break}case Ie.FRAG_LOADING_WAITING_RETRY:this.checkRetryDate();break}this.state===Ie.IDLE&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){var t;super.onTickEnd(),(t=this.media)!=null&&t.readyState&&this.media.seeking===!1&&(this.lastCurrentTime=this.media.currentTime),this.checkFragmentChanged()}doTickIdle(){const{hls:t,levelLastLoaded:n,levels:s,media:_}=this;if(n===null||!_&&!this.primaryPrefetch&&(this.startFragRequested||!t.config.startFragPrefetch)||this.altAudio&&this.audioOnly)return;const w=this.buffering?t.nextLoadLevel:t.loadLevel;if(!(s!=null&&s[w]))return;const I=s[w],j=this.getMainFwdBufferInfo();if(j===null)return;const Q=this.getLevelDetails();if(Q&&this._streamEnded(j,Q)){const at={};this.altAudio===2&&(at.type="video"),this.hls.trigger(u.BUFFER_EOS,at),this.state=Ie.ENDED;return}if(!this.buffering)return;t.loadLevel!==w&&t.manualLevel===-1&&this.log(`Adapting to level ${w} from level ${this.level}`),this.level=t.nextLoadLevel=w;const K=I.details;if(!K||this.state===Ie.WAITING_LEVEL||this.waitForLive(I)){this.level=w,this.state=Ie.WAITING_LEVEL,this.startFragRequested=!1;return}const se=j.len,de=this.getMaxBufferLength(I.maxBitrate);if(se>=de)return;this.backtrackFragment&&this.backtrackFragment.start>j.end&&(this.backtrackFragment=null);const xe=this.backtrackFragment?this.backtrackFragment.start:j.end;let ke=this.getNextFragment(xe,K);if(this.couldBacktrack&&!this.fragPrevious&&ke&&we(ke)&&this.fragmentTracker.getState(ke)!==pn.OK){var Re;const it=((Re=this.backtrackFragment)!=null?Re:ke).sn-K.startSN,Xt=K.fragments[it-1];Xt&&ke.cc===Xt.cc&&(ke=Xt,this.fragmentTracker.removeFragment(Xt))}else this.backtrackFragment&&j.len&&(this.backtrackFragment=null);if(ke&&this.isLoopLoading(ke,xe)){if(!ke.gap){const it=this.audioOnly&&!this.altAudio?ne.AUDIO:ne.VIDEO,Xt=(it===ne.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;Xt&&this.afterBufferFlushed(Xt,it,o.MAIN)}ke=this.getNextFragmentLoopLoading(ke,K,j,o.MAIN,de)}ke&&(ke.initSegment&&!ke.initSegment.data&&!this.bitrateTest&&(ke=ke.initSegment),this.loadFragment(ke,I,xe))}loadFragment(t,n,s){const _=this.fragmentTracker.getState(t);_===pn.NOT_LOADED||_===pn.PARTIAL?we(t)?this.bitrateTest?(this.log(`Fragment ${t.sn} of level ${t.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(t,n)):super.loadFragment(t,n,s):this._loadInitSegment(t,n):this.clearTrackerIfNeeded(t)}getBufferedFrag(t){return this.fragmentTracker.getBufferedFrag(t,o.MAIN)}followingBufferedFrag(t){return t?this.getBufferedFrag(t.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:t,media:n}=this;if(n!=null&&n.readyState){let s;const _=this.getAppendedFrag(n.currentTime);_&&_.start>1&&this.flushMainBuffer(0,_.start-1);const w=this.getLevelDetails();if(w!=null&&w.live){const j=this.getMainFwdBufferInfo();if(!j||j.len=I-n.maxFragLookUpTolerance&&w<=j;if(_!==null&&s.duration>_&&(w<_||!Q)){const se=n.liveMaxLatencyDuration!==void 0?n.liveMaxLatencyDuration:n.liveMaxLatencyDurationCount*t.targetduration;if((!Q&&s.readyState<4||w{this.hls&&this.hls.trigger(u.AUDIO_TRACK_SWITCHED,n)}),s.trigger(u.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null});return}s.trigger(u.AUDIO_TRACK_SWITCHED,n)}}onAudioTrackSwitched(t,n){const s=ut(n.url,this.hls);if(s){const _=this.videoBuffer;_&&this.mediaBuffer!==_&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=_)}this.altAudio=s?2:0,this.tick()}onBufferCreated(t,n){const s=n.tracks;let _,w,I=!1;for(const j in s){const Q=s[j];if(Q.id==="main"){if(w=j,_=Q,j==="video"){const K=s[j];K&&(this.videoBuffer=K.buffer)}}else I=!0}I&&_?(this.log(`Alternate track found, use ${w}.buffered to schedule main fragment loading`),this.mediaBuffer=_.buffer):this.mediaBuffer=this.media}onFragBuffered(t,n){const{frag:s,part:_}=n,w=s.type===o.MAIN;if(w){if(this.fragContextChanged(s)){this.warn(`Fragment ${s.sn}${_?" p: "+_.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),this.state===Ie.PARSED&&(this.state=Ie.IDLE);return}const j=_?_.stats:s.stats;this.fragLastKbps=Math.round(8*j.total/(j.buffering.end-j.loading.first)),we(s)&&(this.fragPrevious=s),this.fragBufferedComplete(s,_)}const I=this.media;I&&(!this._hasEnoughToStart&&mi.getBuffered(I).length&&(this._hasEnoughToStart=!0,this.seekToStartPos()),w&&this.tick())}get hasEnoughToStart(){return this._hasEnoughToStart}onError(t,n){var s;if(n.fatal){this.state=Ie.ERROR;return}switch(n.details){case f.FRAG_GAP:case f.FRAG_PARSING_ERROR:case f.FRAG_DECRYPT_ERROR:case f.FRAG_LOAD_ERROR:case f.FRAG_LOAD_TIMEOUT:case f.KEY_LOAD_ERROR:case f.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(o.MAIN,n);break;case f.LEVEL_LOAD_ERROR:case f.LEVEL_LOAD_TIMEOUT:case f.LEVEL_PARSING_ERROR:!n.levelRetry&&this.state===Ie.WAITING_LEVEL&&((s=n.context)==null?void 0:s.type)===h.LEVEL&&(this.state=Ie.IDLE);break;case f.BUFFER_ADD_CODEC_ERROR:case f.BUFFER_APPEND_ERROR:if(n.parent!=="main")return;this.reduceLengthAndFlushBuffer(n)&&this.resetLoadingState();break;case f.BUFFER_FULL_ERROR:if(n.parent!=="main")return;this.reduceLengthAndFlushBuffer(n)&&(!this.config.interstitialsController&&this.config.assetPlayerId?this._hasEnoughToStart=!0:this.flushMainBuffer(0,Number.POSITIVE_INFINITY));break;case f.INTERNAL_EXCEPTION:this.recoverWorkerError(n);break}}onFragLoadEmergencyAborted(){this.state=Ie.IDLE,this._hasEnoughToStart||(this.startFragRequested=!1,this.nextLoadPosition=this.lastCurrentTime),this.tickImmediate()}onBufferFlushed(t,{type:n}){if(n!==ne.AUDIO||!this.altAudio){const s=(n===ne.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;s&&(this.afterBufferFlushed(s,n,o.MAIN),this.tick())}}onLevelsUpdated(t,n){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level,this.level===-1&&this.resetWhenMissingContext(this.fragCurrent)),this.levels=n.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:t}=this;if(!t)return;const n=t.currentTime;let s=this.startPosition;if(s>=0&&n0&&(Q{const{hls:_}=this,w=s==null?void 0:s.frag;if(!w||this.fragContextChanged(w))return;n.fragmentError=0,this.state=Ie.IDLE,this.startFragRequested=!1,this.bitrateTest=!1;const I=w.stats;I.parsing.start=I.parsing.end=I.buffering.start=I.buffering.end=self.performance.now(),_.trigger(u.FRAG_LOADED,s),w.bitrateTest=!1}).catch(s=>{this.state===Ie.STOPPED||this.state===Ie.ERROR||(this.warn(s),this.resetFragmentLoading(t))})}_handleTransmuxComplete(t){const n=this.playlistType,{hls:s}=this,{remuxResult:_,chunkMeta:w}=t,I=this.getCurrentContext(w);if(!I){this.resetWhenMissingContext(w);return}const{frag:j,part:Q,level:K}=I,{video:se,text:de,id3:xe,initSegment:ke}=_,{details:Re}=K,at=this.altAudio?void 0:_.audio;if(this.fragContextChanged(j)){this.fragmentTracker.removeFragment(j);return}if(this.state=Ie.PARSING,ke){const it=ke.tracks;if(it){const Ar=j.initSegment||j;if(this.unhandledEncryptionError(ke,j))return;this._bufferInitSegment(K,it,Ar,w),s.trigger(u.FRAG_PARSING_INIT_SEGMENT,{frag:Ar,id:n,tracks:it})}const Xt=ke.initPTS,ar=ke.timescale,lr=this.initPTS[j.cc];if(r(Xt)&&(!lr||lr.baseTime!==Xt||lr.timescale!==ar)){const Ar=ke.trackId;this.initPTS[j.cc]={baseTime:Xt,timescale:ar,trackId:Ar},s.trigger(u.INIT_PTS_FOUND,{frag:j,id:n,initPTS:Xt,timescale:ar,trackId:Ar})}}if(se&&Re){at&&se.type==="audiovideo"&&this.logMuxedErr(j);const it=Re.fragments[j.sn-1-Re.startSN],Xt=j.sn===Re.startSN,ar=!it||j.cc>it.cc;if(_.independent!==!1){const{startPTS:lr,endPTS:Ar,startDTS:zr,endDTS:vn}=se;if(Q)Q.elementaryStreams[se.type]={startPTS:lr,endPTS:Ar,startDTS:zr,endDTS:vn};else if(se.firstKeyFrame&&se.independent&&w.id===1&&!ar&&(this.couldBacktrack=!0),se.dropped&&se.independent){const Zr=this.getMainFwdBufferInfo(),fn=(Zr?Zr.end:this.getLoadPosition())+this.config.maxBufferHole,ln=se.firstKeyFramePTS?se.firstKeyFramePTS:lr;if(!Xt&&fnOn&&(j.gap=!0);j.setElementaryStreamInfo(se.type,lr,Ar,zr,vn),this.backtrackFragment&&(this.backtrackFragment=j),this.bufferFragmentData(se,j,Q,w,Xt||ar)}else if(Xt||ar)j.gap=!0;else{this.backtrack(j);return}}if(at){const{startPTS:it,endPTS:Xt,startDTS:ar,endDTS:lr}=at;Q&&(Q.elementaryStreams[ne.AUDIO]={startPTS:it,endPTS:Xt,startDTS:ar,endDTS:lr}),j.setElementaryStreamInfo(ne.AUDIO,it,Xt,ar,lr),this.bufferFragmentData(at,j,Q,w)}if(Re&&xe!=null&&xe.samples.length){const it={id:n,frag:j,details:Re,samples:xe.samples};s.trigger(u.FRAG_PARSING_METADATA,it)}if(Re&&de){const it={id:n,frag:j,details:Re,samples:de.samples};s.trigger(u.FRAG_PARSING_USERDATA,it)}}logMuxedErr(t){this.warn(`${we(t)?"Media":"Init"} segment with muxed audiovideo where only video expected: ${t.url}`)}_bufferInitSegment(t,n,s,_){if(this.state!==Ie.PARSING)return;this.audioOnly=!!n.audio&&!n.video,this.altAudio&&!this.audioOnly&&(delete n.audio,n.audiovideo&&this.logMuxedErr(s));const{audio:w,video:I,audiovideo:j}=n;if(w){const K=t.audioCodec;let se=on(w.codec,K);se==="mp4a"&&(se="mp4a.40.5");const de=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){se&&(se.indexOf("mp4a.40.5")!==-1?se="mp4a.40.2":se="mp4a.40.5");const xe=w.metadata;xe&&"channelCount"in xe&&(xe.channelCount||1)!==1&&de.indexOf("firefox")===-1&&(se="mp4a.40.5")}se&&se.indexOf("mp4a.40.5")!==-1&&de.indexOf("android")!==-1&&w.container!=="audio/mpeg"&&(se="mp4a.40.2",this.log(`Android: force audio codec to ${se}`)),K&&K!==se&&this.log(`Swapping manifest audio codec "${K}" for "${se}"`),w.levelCodec=se,w.id=o.MAIN,this.log(`Init audio buffer, container:${w.container}, codecs[selected/level/parsed]=[${se||""}/${K||""}/${w.codec}]`),delete n.audiovideo}if(I){I.levelCodec=t.videoCodec,I.id=o.MAIN;const K=I.codec;if((K==null?void 0:K.length)===4)switch(K){case"hvc1":case"hev1":I.codec="hvc1.1.6.L120.90";break;case"av01":I.codec="av01.0.04M.08";break;case"avc1":I.codec="avc1.42e01e";break}this.log(`Init video buffer, container:${I.container}, codecs[level/parsed]=[${t.videoCodec||""}/${K}]${I.codec!==K?" parsed-corrected="+I.codec:""}${I.supplemental?" supplemental="+I.supplemental:""}`),delete n.audiovideo}j&&(this.log(`Init audiovideo buffer, container:${j.container}, codecs[level/parsed]=[${t.codecs}/${j.codec}]`),delete n.video,delete n.audio);const Q=Object.keys(n);if(Q.length){if(this.hls.trigger(u.BUFFER_CODECS,n),!this.hls)return;Q.forEach(K=>{const de=n[K].initSegment;de!=null&&de.byteLength&&this.hls.trigger(u.BUFFER_APPENDING,{type:K,data:de,frag:s,part:null,chunkMeta:_,parent:s.type})})}this.tickImmediate()}getMainFwdBufferInfo(){const t=this.mediaBuffer&&this.altAudio===2?this.mediaBuffer:this.media;return this.getFwdBufferInfo(t,o.MAIN)}get maxBufferLength(){const{levels:t,level:n}=this,s=t==null?void 0:t[n];return s?this.getMaxBufferLength(s.maxBitrate):this.config.maxBufferLength}backtrack(t){this.couldBacktrack=!0,this.backtrackFragment=t,this.resetTransmuxer(),this.flushBufferGap(t),this.fragmentTracker.removeFragment(t),this.fragPrevious=null,this.nextLoadPosition=t.start,this.state=Ie.IDLE}checkFragmentChanged(){const t=this.media;let n=null;if(t&&t.readyState>1&&t.seeking===!1){const s=t.currentTime;if(mi.isBuffered(t,s)?n=this.getAppendedFrag(s):mi.isBuffered(t,s+.1)&&(n=this.getAppendedFrag(s+.1)),n){this.backtrackFragment=null;const _=this.fragPlaying,w=n.level;(!_||n.sn!==_.sn||_.level!==w)&&(this.fragPlaying=n,this.hls.trigger(u.FRAG_CHANGED,{frag:n}),(!_||_.level!==w)&&this.hls.trigger(u.LEVEL_SWITCHED,{level:w}))}}}get nextLevel(){const t=this.nextBufferedFrag;return t?t.level:-1}get currentFrag(){var t;if(this.fragPlaying)return this.fragPlaying;const n=((t=this.media)==null?void 0:t.currentTime)||this.lastCurrentTime;return r(n)?this.getAppendedFrag(n):null}get currentProgramDateTime(){var t;const n=((t=this.media)==null?void 0:t.currentTime)||this.lastCurrentTime;if(r(n)){const s=this.getLevelDetails(),_=this.currentFrag||(s?hr(null,s.fragments,n):null);if(_){const w=_.programDateTime;if(w!==null){const I=w+(n-_.start)*1e3;return new Date(I)}}}return null}get currentLevel(){const t=this.currentFrag;return t?t.level:-1}get nextBufferedFrag(){const t=this.currentFrag;return t?this.followingBufferedFrag(t):null}get forceStartLoad(){return this._forceStartLoad}}class Id extends R{constructor(t,n){super("key-loader",n),this.config=void 0,this.keyIdToKeyInfo={},this.emeController=null,this.config=t}abort(t){for(const s in this.keyIdToKeyInfo){const _=this.keyIdToKeyInfo[s].loader;if(_){var n;if(t&&t!==((n=_.context)==null?void 0:n.frag.type))return;_.abort()}}}detach(){for(const t in this.keyIdToKeyInfo){const n=this.keyIdToKeyInfo[t];(n.mediaKeySessionContext||n.decryptdata.isCommonEncryption)&&delete this.keyIdToKeyInfo[t]}}destroy(){this.detach();for(const t in this.keyIdToKeyInfo){const n=this.keyIdToKeyInfo[t].loader;n&&n.destroy()}this.keyIdToKeyInfo={}}createKeyLoadError(t,n=f.KEY_LOAD_ERROR,s,_,w){return new ra({type:c.NETWORK_ERROR,details:n,fatal:!1,frag:t,response:w,error:s,networkDetails:_})}loadClear(t,n,s){if(this.emeController&&this.config.emeEnabled&&!this.emeController.getSelectedKeySystemFormats().length){if(n.length)for(let _=0,w=n.length;_{if(!this.emeController)return;I.setKeyFormat(j);const Q=Ko(j);if(Q)return this.emeController.getKeySystemAccess([Q])})}if(this.config.requireKeySystemAccessOnStart){const _=nu(this.config);if(_.length)return this.emeController.getKeySystemAccess(_)}}return null}load(t){return!t.decryptdata&&t.encrypted&&this.emeController&&this.config.emeEnabled?this.emeController.selectKeySystemFormat(t).then(n=>this.loadInternal(t,n)):this.loadInternal(t)}loadInternal(t,n){var s,_;n&&t.setKeyFormat(n);const w=t.decryptdata;if(!w){const K=new Error(n?`Expected frag.decryptdata to be defined after setting format ${n}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(this.createKeyLoadError(t,f.KEY_LOAD_ERROR,K))}const I=w.uri;if(!I)return Promise.reject(this.createKeyLoadError(t,f.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${I}"`)));const j=ld(w);let Q=this.keyIdToKeyInfo[j];if((s=Q)!=null&&s.decryptdata.key)return w.key=Q.decryptdata.key,Promise.resolve({frag:t,keyInfo:Q});if(this.emeController&&(_=Q)!=null&&_.keyLoadPromise)switch(this.emeController.getKeyStatus(Q.decryptdata)){case"usable":case"usable-in-future":return Q.keyLoadPromise.then(se=>{const{keyInfo:de}=se;return w.key=de.decryptdata.key,{frag:t,keyInfo:de}})}switch(this.log(`${this.keyIdToKeyInfo[j]?"Rel":"L"}oading${w.keyId?" keyId: "+Y(w.keyId):""} URI: ${w.uri} from ${t.type} ${t.level}`),Q=this.keyIdToKeyInfo[j]={decryptdata:w,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},w.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return w.keyFormat==="identity"?this.loadKeyHTTP(Q,t):this.loadKeyEME(Q,t);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(Q,t);default:return Promise.reject(this.createKeyLoadError(t,f.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${w.method}"`)))}}loadKeyEME(t,n){const s={frag:n,keyInfo:t};if(this.emeController&&this.config.emeEnabled){var _;if(!t.decryptdata.keyId&&(_=n.initSegment)!=null&&_.data){const I=Ct(n.initSegment.data);if(I.length){let j=I[0];j.some(Q=>Q!==0)?(this.log(`Using keyId found in init segment ${Y(j)}`),Ao.setKeyIdForUri(t.decryptdata.uri,j)):(j=Ao.addKeyIdForUri(t.decryptdata.uri),this.log(`Generating keyId to patch media ${Y(j)}`)),t.decryptdata.keyId=j}}if(!t.decryptdata.keyId&&!we(n))return Promise.resolve(s);const w=this.emeController.loadKey(s);return(t.keyLoadPromise=w.then(I=>(t.mediaKeySessionContext=I,s))).catch(I=>{throw t.keyLoadPromise=null,"data"in I&&(I.data.frag=n),I})}return Promise.resolve(s)}loadKeyHTTP(t,n){const s=this.config,_=s.loader,w=new _(s);return n.keyLoader=t.loader=w,t.keyLoadPromise=new Promise((I,j)=>{const Q={keyInfo:t,frag:n,responseType:"arraybuffer",url:t.decryptdata.uri},K=s.keyLoadPolicy.default,se={loadPolicy:K,timeout:K.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},de={onSuccess:(xe,ke,Re,at)=>{const{frag:it,keyInfo:Xt}=Re,ar=ld(Xt.decryptdata);if(!it.decryptdata||Xt!==this.keyIdToKeyInfo[ar])return j(this.createKeyLoadError(it,f.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),at));Xt.decryptdata.key=it.decryptdata.key=new Uint8Array(xe.data),it.keyLoader=null,Xt.loader=null,I({frag:it,keyInfo:Xt})},onError:(xe,ke,Re,at)=>{this.resetLoader(ke),j(this.createKeyLoadError(n,f.KEY_LOAD_ERROR,new Error(`HTTP Error ${xe.code} loading key ${xe.text}`),Re,b({url:Q.url,data:void 0},xe)))},onTimeout:(xe,ke,Re)=>{this.resetLoader(ke),j(this.createKeyLoadError(n,f.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),Re))},onAbort:(xe,ke,Re)=>{this.resetLoader(ke),j(this.createKeyLoadError(n,f.INTERNAL_ABORTED,new Error("key loading aborted"),Re))}};w.load(Q,se,de)})}resetLoader(t){const{frag:n,keyInfo:s,url:_}=t,w=s.loader;n.keyLoader===w&&(n.keyLoader=null,s.loader=null);const I=ld(s.decryptdata)||_;delete this.keyIdToKeyInfo[I],w&&w.destroy()}}function ld(k){if(k.keyFormat!==_s.FAIRPLAY){const t=k.keyId;if(t)return Y(t)}return k.uri}function gd(k){const{type:t}=k;switch(t){case h.AUDIO_TRACK:return o.AUDIO;case h.SUBTITLE_TRACK:return o.SUBTITLE;default:return o.MAIN}}function cd(k,t){let n=k.url;return(n===void 0||n.indexOf("data:")===0)&&(n=t.url),n}class td{constructor(t){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=t,this.registerListeners()}startLoad(t){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:t}=this;t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.LEVEL_LOADING,this.onLevelLoading,this),t.on(u.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.on(u.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),t.on(u.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){const{hls:t}=this;t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.LEVEL_LOADING,this.onLevelLoading,this),t.off(u.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.off(u.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),t.off(u.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(t){const n=this.hls.config,s=n.pLoader,_=n.loader,w=s||_,I=new w(n);return this.loaders[t.type]=I,I}getInternalLoader(t){return this.loaders[t.type]}resetInternalLoader(t){this.loaders[t]&&delete this.loaders[t]}destroyInternalLoaders(){for(const t in this.loaders){const n=this.loaders[t];n&&n.destroy(),this.resetInternalLoader(t)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(t,n){const{url:s}=n;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:h.MANIFEST,url:s,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(t,n){const{id:s,level:_,pathwayId:w,url:I,deliveryDirectives:j,levelInfo:Q}=n;this.load({id:s,level:_,pathwayId:w,responseType:"text",type:h.LEVEL,url:I,deliveryDirectives:j,levelOrTrack:Q})}onAudioTrackLoading(t,n){const{id:s,groupId:_,url:w,deliveryDirectives:I,track:j}=n;this.load({id:s,groupId:_,level:null,responseType:"text",type:h.AUDIO_TRACK,url:w,deliveryDirectives:I,levelOrTrack:j})}onSubtitleTrackLoading(t,n){const{id:s,groupId:_,url:w,deliveryDirectives:I,track:j}=n;this.load({id:s,groupId:_,level:null,responseType:"text",type:h.SUBTITLE_TRACK,url:w,deliveryDirectives:I,levelOrTrack:j})}onLevelsUpdated(t,n){const s=this.loaders[h.LEVEL];if(s){const _=s.context;_&&!n.levels.some(w=>w===_.levelOrTrack)&&(s.abort(),delete this.loaders[h.LEVEL])}}load(t){var n;const s=this.hls.config;let _=this.getInternalLoader(t);if(_){const K=this.hls.logger,se=_.context;if(se&&se.levelOrTrack===t.levelOrTrack&&(se.url===t.url||se.deliveryDirectives&&!t.deliveryDirectives)){se.url===t.url?K.log(`[playlist-loader]: ignore ${t.url} ongoing request`):K.log(`[playlist-loader]: ignore ${t.url} in favor of ${se.url}`);return}K.log(`[playlist-loader]: aborting previous loader for type: ${t.type}`),_.abort()}let w;if(t.type===h.MANIFEST?w=s.manifestLoadPolicy.default:w=v({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),_=this.createInternalLoader(t),r((n=t.deliveryDirectives)==null?void 0:n.part)){let K;if(t.type===h.LEVEL&&t.level!==null?K=this.hls.levels[t.level].details:t.type===h.AUDIO_TRACK&&t.id!==null?K=this.hls.audioTracks[t.id].details:t.type===h.SUBTITLE_TRACK&&t.id!==null&&(K=this.hls.subtitleTracks[t.id].details),K){const se=K.partTarget,de=K.targetduration;if(se&&de){const xe=Math.max(se*3,de*.8)*1e3;w=v({},w,{maxTimeToFirstByteMs:Math.min(xe,w.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(xe,w.maxTimeToFirstByteMs)})}}}const I=w.errorRetry||w.timeoutRetry||{},j={loadPolicy:w,timeout:w.maxLoadTimeMs,maxRetry:I.maxNumRetry||0,retryDelay:I.retryDelayMs||0,maxRetryDelay:I.maxRetryDelayMs||0},Q={onSuccess:(K,se,de,xe)=>{const ke=this.getInternalLoader(de);this.resetInternalLoader(de.type);const Re=K.data;se.parsing.start=performance.now(),su.isMediaPlaylist(Re)||de.type!==h.MANIFEST?this.handleTrackOrLevelPlaylist(K,se,de,xe||null,ke):this.handleMasterPlaylist(K,se,de,xe)},onError:(K,se,de,xe)=>{this.handleNetworkError(se,de,!1,K,xe)},onTimeout:(K,se,de)=>{this.handleNetworkError(se,de,!0,void 0,K)}};_.load(t,j,Q)}checkAutostartLoad(){if(!this.hls)return;const{config:{autoStartLoad:t,startPosition:n},forceStartLoad:s}=this.hls;(t||s)&&(this.hls.logger.log(`${t?"auto":"force"} startLoad with configured startPosition ${n}`),this.hls.startLoad(n))}handleMasterPlaylist(t,n,s,_){const w=this.hls,I=t.data,j=cd(t,s),Q=su.parseMasterPlaylist(I,j);if(Q.playlistParsingError){n.parsing.end=performance.now(),this.handleManifestParsingError(t,s,Q.playlistParsingError,_,n);return}const{contentSteering:K,levels:se,sessionData:de,sessionKeys:xe,startTimeOffset:ke,variableList:Re}=Q;this.variableList=Re,se.forEach(ar=>{const{unknownCodecs:lr}=ar;if(lr){const{preferManagedMediaSource:Ar}=this.hls.config;let{audioCodec:zr,videoCodec:vn}=ar;for(let Zr=lr.length;Zr--;){const fn=lr[Zr];Ae(fn,"audio",Ar)?(ar.audioCodec=zr=zr?`${zr},${fn}`:fn,Gt.audio[zr.substring(0,4)]=2,lr.splice(Zr,1)):Ae(fn,"video",Ar)&&(ar.videoCodec=vn=vn?`${vn},${fn}`:fn,Gt.video[vn.substring(0,4)]=2,lr.splice(Zr,1))}}});const{AUDIO:at=[],SUBTITLES:it,"CLOSED-CAPTIONS":Xt}=su.parseMasterPlaylistMedia(I,j,Q);at.length&&!at.some(lr=>!lr.url)&&se[0].audioCodec&&!se[0].attrs.AUDIO&&(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),at.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new Zi({}),bitrate:0,url:""})),w.trigger(u.MANIFEST_LOADED,{levels:se,audioTracks:at,subtitles:it,captions:Xt,contentSteering:K,url:j,stats:n,networkDetails:_,sessionData:de,sessionKeys:xe,startTimeOffset:ke,variableList:Re})}handleTrackOrLevelPlaylist(t,n,s,_,w){const I=this.hls,{id:j,level:Q,type:K}=s,se=cd(t,s),de=r(Q)?Q:r(j)?j:0,xe=gd(s),ke=su.parseLevelPlaylist(t.data,se,de,xe,0,this.variableList);if(K===h.MANIFEST){const Re={attrs:new Zi({}),bitrate:0,details:ke,name:"",url:se};ke.requestScheduled=n.loading.start+Pi(ke,0),I.trigger(u.MANIFEST_LOADED,{levels:[Re],audioTracks:[],url:se,stats:n,networkDetails:_,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}n.parsing.end=performance.now(),s.levelDetails=ke,this.handlePlaylistLoaded(ke,t,n,s,_,w)}handleManifestParsingError(t,n,s,_,w){this.hls.trigger(u.ERROR,{type:c.NETWORK_ERROR,details:f.MANIFEST_PARSING_ERROR,fatal:n.type===h.MANIFEST,url:t.url,err:s,error:s,reason:s.message,response:t,context:n,networkDetails:_,stats:w})}handleNetworkError(t,n,s=!1,_,w){let I=`A network ${s?"timeout":"error"+(_?" (status "+_.code+")":"")} occurred while loading ${t.type}`;t.type===h.LEVEL?I+=`: ${t.level} id: ${t.id}`:(t.type===h.AUDIO_TRACK||t.type===h.SUBTITLE_TRACK)&&(I+=` id: ${t.id} group-id: "${t.groupId}"`);const j=new Error(I);this.hls.logger.warn(`[playlist-loader]: ${I}`);let Q=f.UNKNOWN,K=!1;const se=this.getInternalLoader(t);switch(t.type){case h.MANIFEST:Q=s?f.MANIFEST_LOAD_TIMEOUT:f.MANIFEST_LOAD_ERROR,K=!0;break;case h.LEVEL:Q=s?f.LEVEL_LOAD_TIMEOUT:f.LEVEL_LOAD_ERROR,K=!1;break;case h.AUDIO_TRACK:Q=s?f.AUDIO_TRACK_LOAD_TIMEOUT:f.AUDIO_TRACK_LOAD_ERROR,K=!1;break;case h.SUBTITLE_TRACK:Q=s?f.SUBTITLE_TRACK_LOAD_TIMEOUT:f.SUBTITLE_LOAD_ERROR,K=!1;break}se&&this.resetInternalLoader(t.type);const de={type:c.NETWORK_ERROR,details:Q,fatal:K,url:t.url,loader:se,context:t,error:j,networkDetails:n,stats:w};if(_){const xe=(n==null?void 0:n.url)||t.url;de.response=b({url:xe,data:void 0},_)}this.hls.trigger(u.ERROR,de)}handlePlaylistLoaded(t,n,s,_,w,I){const j=this.hls,{type:Q,level:K,levelOrTrack:se,id:de,groupId:xe,deliveryDirectives:ke}=_,Re=cd(n,_),at=gd(_);let it=typeof _.level=="number"&&at===o.MAIN?K:void 0;const Xt=t.playlistParsingError;if(Xt){if(this.hls.logger.warn(`${Xt} ${t.url}`),!j.config.ignorePlaylistParsingErrors){j.trigger(u.ERROR,{type:c.NETWORK_ERROR,details:f.LEVEL_PARSING_ERROR,fatal:!1,url:Re,error:Xt,reason:Xt.message,response:n,context:_,level:it,parent:at,networkDetails:w,stats:s});return}t.playlistParsingError=null}if(!t.fragments.length){const ar=t.playlistParsingError=new Error("No Segments found in Playlist");j.trigger(u.ERROR,{type:c.NETWORK_ERROR,details:f.LEVEL_EMPTY_ERROR,fatal:!1,url:Re,error:ar,reason:ar.message,response:n,context:_,level:it,parent:at,networkDetails:w,stats:s});return}switch(t.live&&I&&(I.getCacheAge&&(t.ageHeader=I.getCacheAge()||0),(!I.getCacheAge||isNaN(t.ageHeader))&&(t.ageHeader=0)),Q){case h.MANIFEST:case h.LEVEL:if(it){if(!se)it=0;else if(se!==j.levels[it]){const ar=j.levels.indexOf(se);ar>-1&&(it=ar)}}j.trigger(u.LEVEL_LOADED,{details:t,levelInfo:se||j.levels[0],level:it||0,id:de||0,stats:s,networkDetails:w,deliveryDirectives:ke,withoutMultiVariant:Q===h.MANIFEST});break;case h.AUDIO_TRACK:j.trigger(u.AUDIO_TRACK_LOADED,{details:t,track:se,id:de||0,groupId:xe||"",stats:s,networkDetails:w,deliveryDirectives:ke});break;case h.SUBTITLE_TRACK:j.trigger(u.SUBTITLE_TRACK_LOADED,{details:t,track:se,id:de||0,groupId:xe||"",stats:s,networkDetails:w,deliveryDirectives:ke});break}}}class Pf{static get version(){return ai}static isMSESupported(){return md()}static isSupported(){return Td()}static getMediaSource(){return oe()}static get Events(){return u}static get MetadataSchema(){return yn}static get ErrorTypes(){return c}static get ErrorDetails(){return f}static get DefaultConfig(){return Pf.defaultConfig?Pf.defaultConfig:za}static set DefaultConfig(t){Pf.defaultConfig=t}constructor(t={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new ri,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._url=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;const n=this.logger=V(t.debug||!1,"Hls instance",t.assetPlayerId),s=this.config=sn(Pf.DefaultConfig,t,n);this.userConfig=t,s.progressive&&an(s,n);const{abrController:_,bufferController:w,capLevelController:I,errorController:j,fpsController:Q}=s,K=new j(this),se=this.abrController=new _(this),de=new Ci(this),xe=s.interstitialsController,ke=xe?this.interstitialsController=new xe(this,Pf):null,Re=this.bufferController=new w(this,de),at=this.capLevelController=new I(this),it=new Q(this),Xt=new td(this),ar=s.contentSteeringController,lr=ar?new ar(this):null,Ar=this.levelController=new Cd(this,lr),zr=new Sd(this),vn=new Id(this.config,this.logger),Zr=this.streamController=new _d(this,de,vn),fn=this.gapController=new Qa(this,de);at.setStreamController(Zr),it.setStreamController(Zr);const ln=[Xt,Ar,Zr];ke&&ln.splice(1,0,ke),lr&&ln.splice(1,0,lr),this.networkControllers=ln;const Qr=[se,Re,fn,at,it,zr,de];this.audioTrackController=this.createController(s.audioTrackController,ln);const kn=s.audioStreamController;kn&&ln.push(this.audioStreamController=new kn(this,de,vn)),this.subtitleTrackController=this.createController(s.subtitleTrackController,ln);const Si=s.subtitleStreamController;Si&&ln.push(this.subtititleStreamController=new Si(this,de,vn)),this.createController(s.timelineController,Qr),vn.emeController=this.emeController=this.createController(s.emeController,Qr),this.cmcdController=this.createController(s.cmcdController,Qr),this.latencyController=this.createController(Ad,Qr),this.coreComponents=Qr,ln.push(K);const qi=K.onErrorOut;typeof qi=="function"&&this.on(u.ERROR,qi,K),this.on(u.MANIFEST_LOADED,Xt.onManifestLoaded,Xt)}createController(t,n){if(t){const s=new t(this);return n&&n.push(s),s}return null}on(t,n,s=this){this._emitter.on(t,n,s)}once(t,n,s=this){this._emitter.once(t,n,s)}removeAllListeners(t){this._emitter.removeAllListeners(t)}off(t,n,s=this,_){this._emitter.off(t,n,s,_)}listeners(t){return this._emitter.listeners(t)}emit(t,n,s){return this._emitter.emit(t,n,s)}trigger(t,n){if(this.config.debug)return this.emit(t,t,n);try{return this.emit(t,t,n)}catch(s){if(this.logger.error("An internal error happened while handling event "+t+'. Error message: "'+s.message+'". Here is a stacktrace:',s),!this.triggeringException){this.triggeringException=!0;const _=t===u.ERROR;this.trigger(u.ERROR,{type:c.OTHER_ERROR,details:f.INTERNAL_EXCEPTION,fatal:_,event:t,error:s}),this.triggeringException=!1}}return!1}listenerCount(t){return this._emitter.listenerCount(t)}destroy(){this.logger.log("destroy"),this.trigger(u.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach(n=>n.destroy()),this.networkControllers.length=0,this.coreComponents.forEach(n=>n.destroy()),this.coreComponents.length=0;const t=this.config;t.xhrSetup=t.fetchSetup=void 0,this.userConfig=null}attachMedia(t){if(!t||"media"in t&&!t.media){const w=new Error(`attachMedia failed: invalid argument (${t})`);this.trigger(u.ERROR,{type:c.OTHER_ERROR,details:f.ATTACH_MEDIA_ERROR,fatal:!0,error:w});return}this.logger.log("attachMedia"),this._media&&(this.logger.warn("media must be detached before attaching"),this.detachMedia());const n="media"in t,s=n?t.media:t,_=n?t:{media:s};this._media=s,this.trigger(u.MEDIA_ATTACHING,_)}detachMedia(){this.logger.log("detachMedia"),this.trigger(u.MEDIA_DETACHING,{}),this._media=null}transferMedia(){this._media=null;const t=this.bufferController.transferMedia();return this.trigger(u.MEDIA_DETACHING,{transferMedia:t}),t}loadSource(t){this.stopLoad();const n=this.media,s=this._url,_=this._url=W.buildAbsoluteURL(self.location.href,t,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${_}`),n&&s&&(s!==_||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(n)),this.trigger(u.MANIFEST_LOADING,{url:t})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(t=-1,n){this.logger.log(`startLoad(${t+(n?", ":"")})`),this.started=!0,this.resumeBuffering();for(let s=0;s{t.resumeBuffering&&t.resumeBuffering()}))}pauseBuffering(){this.bufferingEnabled&&(this.logger.log("pause buffering"),this.networkControllers.forEach(t=>{t.pauseBuffering&&t.pauseBuffering()}))}get inFlightFragments(){const t={[o.MAIN]:this.streamController.inFlightFrag};return this.audioStreamController&&(t[o.AUDIO]=this.audioStreamController.inFlightFrag),this.subtititleStreamController&&(t[o.SUBTITLE]=this.subtititleStreamController.inFlightFrag),t}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");const t=this._media,n=t==null?void 0:t.currentTime;this.detachMedia(),t&&(this.attachMedia(t),n&&this.startLoad(n))}removeLevel(t){this.levelController.removeLevel(t)}get sessionId(){let t=this._sessionId;return t||(t=this._sessionId=Jc()),t}get levels(){const t=this.levelController.levels;return t||[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(t){this.logger.log(`set currentLevel:${t}`),this.levelController.manualLevel=t,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(t){this.logger.log(`set nextLevel:${t}`),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(t){this.logger.log(`set loadLevel:${t}`),this.levelController.manualLevel=t}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(t){this.levelController.nextLoadLevel=t}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(t){this.logger.log(`set firstLevel:${t}`),this.levelController.firstLevel=t}get startLevel(){const t=this.levelController.startLevel;return t===-1&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:t}set startLevel(t){this.logger.log(`set startLevel:${t}`),t!==-1&&(t=Math.max(t,this.minAutoLevel)),this.levelController.startLevel=t}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(t){const n=!!t;n!==this.config.capLevelToPlayerSize&&(n?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=n)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimate():NaN}set bandwidthEstimate(t){this.abrController.resetEstimator(t)}get abrEwmaDefaultEstimate(){const{bwEstimator:t}=this.abrController;return t?t.defaultEstimate:NaN}get ttfbEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimateTTFB():NaN}set autoLevelCapping(t){this._autoLevelCapping!==t&&(this.logger.log(`set autoLevelCapping:${t}`),this._autoLevelCapping=t,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(t){Yr(t)&&this._maxHdcpLevel!==t&&(this._maxHdcpLevel=t,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return this.levelController.manualLevel===-1}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:t,config:{minAutoBitrate:n}}=this;if(!t)return 0;const s=t.length;for(let _=0;_=n)return _;return 0}get maxAutoLevel(){const{levels:t,autoLevelCapping:n,maxHdcpLevel:s}=this;let _;if(n===-1&&t!=null&&t.length?_=t.length-1:_=n,s)for(let w=_;w--;){const I=t[w].attrs["HDCP-LEVEL"];if(I&&I<=s)return w}return _}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(t){this.abrController.nextAutoLevel=t}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(t){var n;return((n=this.audioTrackController)==null?void 0:n.setAudioOption(t))||null}setSubtitleOption(t){var n;return((n=this.subtitleTrackController)==null?void 0:n.setSubtitleOption(t))||null}get allAudioTracks(){const t=this.audioTrackController;return t?t.allAudioTracks:[]}get audioTracks(){const t=this.audioTrackController;return t?t.audioTracks:[]}get audioTrack(){const t=this.audioTrackController;return t?t.audioTrack:-1}set audioTrack(t){const n=this.audioTrackController;n&&(n.audioTrack=t)}get allSubtitleTracks(){const t=this.subtitleTrackController;return t?t.allSubtitleTracks:[]}get subtitleTracks(){const t=this.subtitleTrackController;return t?t.subtitleTracks:[]}get subtitleTrack(){const t=this.subtitleTrackController;return t?t.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(t){const n=this.subtitleTrackController;n&&(n.subtitleTrack=t)}get subtitleDisplay(){const t=this.subtitleTrackController;return t?t.subtitleDisplay:!1}set subtitleDisplay(t){const n=this.subtitleTrackController;n&&(n.subtitleDisplay=t)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(t){this.config.lowLatencyMode=t}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}set targetLatency(t){this.latencyController.targetLatency=t}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(t){this.levelController.pathwayPriority=t}get bufferedToEnd(){var t;return!!((t=this.bufferController)!=null&&t.bufferedToEnd)}get interstitialsManager(){var t;return((t=this.interstitialsController)==null?void 0:t.interstitialsManager)||null}getMediaDecodingInfo(t,n=this.allAudioTracks){const s=Ia(n);return br(t,s,navigator.mediaCapabilities)}}Pf.defaultConfig=void 0},53280:function(d,g,e){"use strict";e.d(g,{D:function(){return i}});function r(l,c,f){var u=f||{},h=u.noTrailing,o=h===void 0?!1:h,a=u.noLeading,x=a===void 0?!1:a,p=u.debounceMode,v=p===void 0?void 0:p,m,b=!1,A=0;function O(){m&&clearTimeout(m)}function R(T){var M=T||{},F=M.upcomingOnly,N=F===void 0?!1:F;O(),b=!N}function S(){for(var T=arguments.length,M=new Array(T),F=0;Fl?x?(A=Date.now(),o||(m=setTimeout(v?$:V,l))):V():o!==!0&&(m=setTimeout(v?$:V,v===void 0?l-H:l))}return S.cancel=R,S}function i(l,c,f){var u=f||{},h=u.atBegin,o=h===void 0?!1:h;return r(l,c,{debounceMode:o!==!1})}}},__webpack_module_cache__={};function __webpack_require__(d){var g=__webpack_module_cache__[d];if(g!==void 0)return g.exports;var e=__webpack_module_cache__[d]={id:d,loaded:!1,exports:{}};return __webpack_modules__[d].call(e.exports,e,e.exports,__webpack_require__),e.loaded=!0,e.exports}__webpack_require__.m=__webpack_modules__,function(){__webpack_require__.amdO={}}(),function(){__webpack_require__.n=function(d){var g=d&&d.__esModule?function(){return d.default}:function(){return d};return __webpack_require__.d(g,{a:g}),g}}(),function(){var d=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},g;__webpack_require__.t=function(e,r){if(r&1&&(e=this(e)),r&8||typeof e=="object"&&e&&(r&4&&e.__esModule||r&16&&typeof e.then=="function"))return e;var i=Object.create(null);__webpack_require__.r(i);var l={};g=g||[null,d({}),d([]),d(d)];for(var c=r&2&&e;typeof c=="object"&&!~g.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach(function(f){l[f]=function(){return e[f]}});return l.default=function(){return e},__webpack_require__.d(i,l),i}}(),function(){__webpack_require__.d=function(d,g){for(var e in g)__webpack_require__.o(g,e)&&!__webpack_require__.o(d,e)&&Object.defineProperty(d,e,{enumerable:!0,get:g[e]})}}(),function(){__webpack_require__.f={},__webpack_require__.e=function(d){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(g,e){return __webpack_require__.f[e](d,g),g},[]))}}(),function(){__webpack_require__.u=function(d){return""+({26:"p__Classrooms__Lists__Graduation__Tasks__Edit__index",65:"p__StudentEffectivenessAnalysis__index",67:"p__Message__index",109:"p__Classrooms__Lists__ShixunHomeworks__Detail__components__CodeReview__Detail__index",119:"p__User__ThemeChange__Paths",174:"p__OnlineDevice__DeviceInfo__InfoList__Details__index",195:"p__Classrooms__Lists__GroupHomework__Detail__index",201:"p__Classrooms__ThemeChange__Students",264:"p__User__Detail__Order__pages__orderPay__index",292:"p__Classrooms__Lists__Exercise__Add__index",337:"p__Paperlibrary__Random__PreviewEdit__index",479:"p__Classrooms__Lists__GroupHomework__EditWork__index",485:"p__Question__AddOrEdit__BatchAdd__index",508:"p__Forums__Detail__id",518:"p__Shixuns__Detail__Settings__ThemeChange__index",532:"p__ExcellentCourse__index",533:"p__Classrooms__Lists__Video__Statistics__Detail__index",547:"p__Account__index",556:"p__User__Detail__Order__pages__invoice__index",559:"layouts__virtualDetail__index",570:"p__Home__Detail__OnlineNum__index",576:"p__Account__Profile__Edit__index",643:"p__Classrooms__Lists__Polls__QuestionnaireInfo__index",680:"p__Innovation__index",700:"p__tasks__Jupyter__index",737:"p__Classrooms__Lists__CommonHomework__Detail__components__CodeReview__Detail__index",799:"p__User__Detail__Topics__Poll__Detail__index",879:"p__User__ThemeChange__AccountInfo",895:"p__Classrooms__Lists__Video__Items__videoInfo__index",900:"p__User__ThemeChange__Classrooms",906:"p__User__ThemeChange__CareerCertification",919:"p__knowledgegraph__Statistics__LearningPath__index",921:"p__Classrooms__Lists__Exercise__CodeDetails__index",928:"p__RestFul__Edit__index",1006:"p__RestFul__index",1043:"p__Classrooms__Lists__Graduation__Tasks__index",1045:"p__virtualSpaces__Lists__Knowledge__AddAndEdit__index",1048:"p__Classrooms__Lists__ProgramHomework__Detail__Ranking__index",1070:"p__Innovation__PublicMirror__index",1077:"p__User__ThemeTwoLogin__index",1211:"p__Classrooms__Lists__CommonHomework__EditWork__index",1253:"p__Graduations__Lists__Gradingsummary__index",1257:"p__Classrooms__Lists__ResourceRecommend__index",1276:"p__MoopCases__Success__index",1343:"p__User__Detail__ResourceAllocation__index",1423:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeAnswer__index",1427:"p__Classrooms__Lists__Statistics__index",1443:"p__EffectivenessAnalysis__index",1450:"p__Classrooms__Lists__ShixunHomeworks__Commitsummary__index",1461:"p__Graduations__Lists__Topics__index",1470:"p__User__Register__index",1475:"p__Shixuns__Detail__Dataset__JupyterData__index",1477:"p__Classrooms__ThemeChange__Assistant",1482:"p__Classrooms__Lists__Graduation__Topics__Edit__index",1512:"p__Classrooms__Lists__Exercise__AnswerCheck__index",1520:"p__Engineering__Lists__StudentList__index",1545:"p__Paperlibrary__Random__ExchangeFromProblemSet__index",1578:"p__Classrooms__Lists__Graduation__Topics__Detail__index",1581:"p__Problemset__Preview__index",1582:"p__Classrooms__Lists__GroupHomework__Add__index",1651:"p__Paths__ThemeChange__Statistics",1657:"p__Shixuns__Edit__body__Level__Challenges__EditQuestion__index",1660:"p__User__QQLogin__index",1674:"p__Classrooms__ClassicCases__index",1678:"p__Classrooms__ThemeChange__Attachment",1691:"p__OnlineMessageCenter__MessageCenterManage__index",1713:"p__virtualSpaces__Lists__Settings__index",1717:"layouts__index",1727:"p__Classrooms__Lists__CourseGroup__NotList__index",1754:"p__Classrooms__ThemeChange__Video",1783:"p__virtualSpaces__Lists__Experiment__index",1798:"p__Classrooms__ThemeChange__GroupHomework",1799:"p__Competitions__Entered__Assembly__TeamDateil",1831:"p__Graduations__Index__index",1836:"p__Classrooms__Lists__Attendance__Webview__Teacher__index",1855:"p__MoopCases__InfoPanel__index",1880:"p__User__Detail__Order__pages__apply__index",1897:"p__User__ThemeChange__ClassManagement",1939:"p__User__Detail__Order__index",1953:"p__Problemset__NewItem__index",1962:"p__Classrooms__Lists__Engineering__index",1993:"p__Shixuns__Detail__Dataset__ThemeChange__index",2045:"p__Engineering__Lists__TeacherList__index",2099:"p__Paperlibrary__ThemeChange__index",2102:"p__Classrooms__Lists__Board__Edit__index",2130:"p__Shixuns__Detail__Repository__UploadFile__ThemeChange__index",2141:"p__Shixuns__Detail__Split__index",2203:"p__Classrooms__ThemeChange__ShixunHomeworks",2216:"p__DataSet__Index__index",2240:"p__User__Detail__Videos__Upload__index",2281:"p__Paths__ThemeChange__Detail",2300:"p__Api__index",2303:"p__Classrooms__Lists__CommonHomework__Comment__index",2307:"p__Report__index",2338:"p__Classrooms__Lists__CommonHomework__Review__index",2339:"p__virtualSpaces__Lists__Plan__Detail__index",2396:"p__User__Detail__ResourcesCenter__index",2404:"p__Classrooms__Lists__Template__teacher__index",2412:"p__User__Detail__Videos__index",2425:"p__Classrooms__Lists__Board__Detail__index",2441:"layouts__LaboratoryLayouts__index",2443:"p__Graduations__Lists__StageModule__index",2476:"p__Colleges__index",2501:"p__Search__index",2524:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Detail__index",2539:"p__Graduations__Review__index",2548:"p__Engineering__Norm__Detail__index",2570:"p__Competitions__Detail__index",2603:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Add__index",2641:"p__Property__Procurement__index",2659:"p__User__Detail__UserPortrait__index",2707:"p__Innovation__MyDataSet__index",2748:"p__Property__index",2806:"p__User__Detail__Topics__Exercise__Detail__index",2819:"p__Classrooms__Lists__Template__detail__index",2823:"p__Engineering__Navigation__Home__index",2829:"p__Messages__Private__index",2862:"p__User__ThemeChange__ExperImentImg",2865:"p__Innovation__MyMirror__index",2884:"p__Classrooms__Lists__ProgramHomework__Comment__index",3006:"p__Engineering__index",3086:"p__Shixuns__Detail__ForkList__ThemeChange__index",3141:"p__Innovation__Detail__index",3157:"p__User__Detail__ExperImentImg__Add__index",3183:"p__Engineering__Lists__GraduationIndex__index",3212:"p__MoopCases__index",3247:"p__Paperlibrary__See__index",3260:"p__Paperlibrary__Add__index",3276:"p__Classrooms__Lists__Statistics__UserportraitStatistics__index",3282:"p__OnlineDevice__DigitalSigns__index",3317:"p__Classrooms__Lists__Graduation__Topics__Add__index",3391:"p__Classrooms__Lists__ProgramHomework__Detail__components__CodeReview__Detail__index",3433:"p__Classrooms__Lists__Exercise__Sumup__Edit__index",3442:"p__Classrooms__Lists__Board__Add__index",3443:"p__knowledgegraph__Statistics__AbilityMap__Detail",3447:"p__User__Detail__Order__pages__orderInformation__index",3451:"p__Classrooms__Lists__Statistics__StudentStatistics__Detail__index",3509:"p__HttpStatus__SixActivities",3581:"p__Shixuns__Detail__Collaborators__ThemeChange__index",3585:"p__Classrooms__Lists__Statistics__StudentSituation__index",3589:"p__knowledgegraph__Statistics__index",3668:"p__Classrooms__Lists__CommonHomework__Detail__index",3685:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Edit__index",3747:"p__virtualSpaces__Lists__Homepage__index",3784:"p__Paperlibrary__Random__Detail__index",3831:"p__User__ThemeChange__VirtualSpaces",3862:"p__HttpStatus__403",3873:"p__virtualSpaces__Lists__Lesson__index",3910:"p__HttpStatus__introduction",3951:"p__Classrooms__Lists__ProgramHomework__Detail__index",4017:"p__Classrooms__Lists__PlaceholderPage__index",4030:"p__Classrooms__Lists__ProgramHomework__AddAndEdit__index",4048:"p__Forums__ThemeChange__index",4056:"p__IntrainCourse__index",4058:"p__Demo__index",4078:"p__Messages__Tidings__index",4093:"p__Classrooms__Lists__Attendance__Detail__index",4105:"p__Classrooms__Lists__Exercise__Answer__index",4144:"p__Problemset__Preview__New__index",4164:"p__Classrooms__Lists__Exercise__Detail__index",4216:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Edit__index",4217:"p__Classrooms__Lists__Video__Statistics__index",4227:"p__Paths__Overview__index",4259:"p__User__Detail__Order__pages__result__index",4264:"p__Forums__New__index",4297:"p__Classrooms__ThemeChange__Polls",4339:"p__knowledgegraph__Statistics__PathAtlas__Detail",4420:"p__knowledgegraph__index",4449:"p__Competitions__Exports__index",4492:"p__Graduations__Lists__StudentSelection__index",4496:"p__HttpStatus__HpcCourse",4498:"p__Shixuns__Edit__body__Level__Challenges__NewPractice__index",4504:"p__virtualSpaces__Lists__Survey__index",4514:"p__Account__Results__index",4520:"p__Account__Secure__index",4546:"p__Engineering__Lists__TrainingProgram__Add__index",4565:"p__HttpStatus__500",4572:"p__Classrooms__Lists__ExportList__index",4599:"p__Problemset__index",4610:"p__User__Detail__LearningPath__index",4621:"p__Administration__Profession__index",4662:"p__Classrooms__Lists__GroupHomework__Review__index",4715:"p__virtualSpaces__Lists__Material__Detail__index",4736:"p__User__Detail__Projects__index",4741:"p__Problems__OjForm__NewEdit__index",4757:"p__virtualSpaces__Lists__Workplace__index",4766:"p__Administration__index",4770:"p__Classrooms__Lists__ProgramHomework__Detail__answer__index",4795:"p__Classrooms__Lists__Graduation__Tasks__Add__index",4800:"p__Engineering__Lists__GraduatedMatrix__index",4806:"p__OnlineDevice__FaultLibrary__index",4889:"p__Classrooms__Lists__Exercise__ImitateAnswer__index",4928:"p__Classrooms__Lists__LearningPath__index",4973:"p__Engineering__Evaluate__List__index",4994:"p__Problems__OjForm__index",5022:"p__Graduations__Lists__Settings__index",5043:"p__User__Detail__Topics__Poll__Edit__index",5048:"p__Classrooms__Lists__Graduation__Topics__index",5096:"p__Shixuns__Detail__AuditSituation__index",5111:"p__Terminal__index",5117:"p__User__ThemeChange__Certificate",5125:"p__Classrooms__Lists__Exercise__DetailedAnalysis__index",5148:"p__Classrooms__Lists__Polls__Answer__index",5165:"p__User__ThemeChange__Topics",5176:"p__User__Detail__Videos__Protocol__index",5177:"p__Classrooms__ThemeChange__Teachers",5179:"p__Administration__Student__Edit__index",5186:"p__Classrooms__Overview__index",5230:"p__Shixuns__Detail__Repository__AddFile__ThemeChange__index",5238:"p__virtualSpaces__Lists__Material__index",5297:"p__Classrooms__Lists__Exercise__Detail__components__DuplicateChecking__CheckDetail__index",5307:"p__Shixuns__ThemeChange__New",5319:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Detail__index",5330:"p__Classrooms__ThemeChange__ShixunHomeworksComment",5335:"p__Engineering__Lists__CourseMatrix__index",5357:"p__Engineering__Lists__TrainingProgram__Edit__index",5359:"p__Messages__Detail__index",5382:"p__DataSet__Detail__index",5402:"p__User__Detail__Topics__Detail__index",5466:"p__Classrooms__ThemeChange__LiveVideo",5518:"p__Classrooms__Lists__Template__index",5549:"p__Shixuns__New__CreateImg__index",5572:"p__Paths__HigherVocationalEducation__index",5573:"p__Shixuns__Detail__Merge__index",5624:"p__Graduations__Lists__Index__index",5650:"p__Competitions__Update__index",5694:"p__Classrooms__ThemeChange__ShixunHomeworksDetail",5705:"p__virtualSpaces__Lists__Construction__index",5729:"p__Help__Index",5775:"p__Engineering__Lists__Document__index",5776:"p__User__ThemeChange__RealNameCertification",5786:"layouts__LoginAndRegister__index",5798:"p__Classrooms__Lists__Video__Statistics__UserDetail__index",5800:"p__User__ThemeChange__Competitions",5816:"p__Paperlibrary__Random__Edit__index",5888:"p__Classrooms__Lists__CommonHomework__Add__index",5891:"p__virtualSpaces__Lists__Resources__index",5894:"p__Shixuns__Detail__Repository__Commit__ThemeChange__index",5902:"p__Classrooms__Lists__Exercise__Sumup__index",5915:"p__knowledgegraph__Detail__Statistics__index",5972:"layouts__user__index",5992:"p__Classrooms__Lists__Exercise__ReviewGroup__index",6029:"p__Administration__Student__index",6034:"p__HttpStatus__UserAgents",6063:"p__Graduations__Lists__Personmanage__index",6069:"p__virtualSpaces__Lists__Lesson__Detail__index",6080:"p__Paths__ThemeChange__New",6127:"p__Classrooms__Lists__ProgramHomework__Ranking__index",6170:"p__HttpStatus__downloadStudent",6185:"p__Classrooms__ThemeChange__Announcement",6205:"p__Classrooms__ThemeChange__VideoUpload",6265:"p__virtualSpaces__Lists__Discussion__index",6270:"p__MyProblem__index",6282:"p__Classrooms__ThemeChange__ProgramHomework",6328:"p__Shixuns__Edit__body__Warehouse__index",6366:"p__Innovation__PublicProject__index",6434:"p__User__Detail__Order__pages__records__index",6444:"p__Video__Detail__id",6451:"p__Shixuns__Detail__RankingList__ThemeChange__index",6452:"p__Innovation__PublicDataSet__index",6531:"p__HttpStatus__404",6583:"p__User__Detail__Classrooms__index",6587:"p__User__Detail__Videos__Protocol__resource",6634:"p__Innovation__Tasks__index",6637:"p__Shixuns__Detail__Repository__ThemeChange__index",6651:"p__Engineering__Evaluate__Detail__index",6682:"p__User__ThemeChange__Shixuns",6685:"p__Classrooms__Index__index",6729:"p__Classrooms__Lists__GroupHomework__Edit__index",6741:"p__Engineering__Norm__List__index",6776:"p__Classrooms__ThemeChange__Exercise",6784:"p__Innovation__Edit__index",6788:"p__Home__Detail__ShixunContext__Detail__index",6789:"p__Classrooms__ThemeChange__index",6796:"p__virtualSpaces__Lists__Announcement__Detail__index",6806:"p__OnlineDevice__DeviceInfo__index",6820:"p__User__Detail__Topics__Normal__index",6882:"p__Classrooms__New__StartClass__index",6904:"p__MoopCases__FormPanel__index",6913:"p__Question__AddOrEdit__index",6963:"p__Classrooms__Lists__Engineering__Detail__index",6979:"p__knowledgegraph__SanD__index",7042:"p__knowledgegraph__Statistics__LearningPath__Detail",7043:"p__User__Detail__Topics__Exercise__Edit__index",7045:"p__Classrooms__Lists__CommonHomework__SubmitWork__index",7052:"p__OnlineDevice__DeviceInfo__InfoList__Edit__index",7058:"p__virtualSpaces__Lists__Survey__Detail__index",7062:"layouts__SimpleLayouts",7099:"p__Competitions__ThemeChange__index",7178:"p__User__BindAccount__index",7182:"p__User__ResetPassword__index",7224:"p__StatsDashboard__index",7242:"p__Innovation__MyProject__index",7260:"p__Account__Certification__index",7289:"p__tasks__ThemeChange__index",7322:"layouts__ThemeChange__ShixunDetail",7323:"p__Classrooms__ThemeChange__New",7329:"p__Classrooms__ThemeChange__Attendance",7333:"p__User__WechatLogin__index",7395:"p__Classrooms__Lists__Statistics__StudentDetail__index",7402:"p__User__ThemeChange__OtherResources",7460:"p__Question__OjProblem__index",7465:"p__OnlineDevice__DeviceInfo__InfoList__ReservationInfo__index",7477:"p__virtualSpaces__Lists__Announcement__index",7482:"p__Classrooms__Lists__Exercise__Notice__index",7527:"p__MyProblem__RecordDetail__index",7545:"p__Graduations__Lists__Archives__index",7560:"p__Administration__College__index",7589:"p__virtualSpaces__Lists__DigitalTopics__index",7614:"p__Shixuns__Edit__body__Level__Challenges__RankingSetting__index",7622:"p__Classrooms__Lists__Polls__Detail__index",7670:"p__OnlineReservation__ReservationInfo__index",7745:"p__OnlineDevice__DeviceType__index",7806:"p__Classrooms__Lists__Statistics__StatisticsQuality__index",7823:"p__OnlineMessageCenter__OffSiteConfig__index",7835:"p__Problemset__ThemeChange__index",7855:"p__User__Detail__ResourcesCenter__Detail__index",7857:"p__Shixuns__Edit__body__Level__Challenges__NewQuestion__index",7883:"p__Classrooms__Lists__Exercise__WrongAnswer__index",7884:"p__Shixuns__Exports__index",7901:"p__Guidance__ThemeChange",7922:"p__Classrooms__Lists__CourseGroup__Detail__index",8062:"p__User__Detail__Topicbank__index",8072:"p__Classrooms__Lists__GroupHomework__SubmitWork__index",8085:"p__Classrooms__Lists__Exercise__Review__index",8115:"p__User__ThemeChange__DataSet",8116:"p__LaboratoryList__index",8121:"p__OnlineDevice__DeviceType__Details__index",8137:"p__knowledgegraph__Statistics__PathAtlas__index",8143:"layouts__GraduationsDetail__index",8145:"p__User__ThemeChange__ClassManagementItem",8155:"p__Shixuns__Overview__index",8217:"p__User__ThemeChange__AccountInfoEdit",8234:"p__OnlineDevice__DeviceLabel__index",8237:"p__User__Detail__Order__pages__view__index",8241:"p__virtualSpaces__Lists__Plan__index",8286:"p__User__ThemeChange__ExperImentImgDetail",8332:"p__User__ThemeChange__Detail",8340:"p__Classrooms__Lists__Attendance__Webview__Student__index",8365:"p__Home__Detail__ShixunContext__index",8398:"p__virtualSpaces__Lists__Resources__Detail__index",8431:"p__Classrooms__Lists__Exercise__Export__index",8435:"p__Classrooms__Lists__Attendance__index",8447:"p__virtualSpaces__Lists__Knowledge__index",8458:"p__Classrooms__ThemeChange__CommonHomework",8479:"p__User__ThemeChange__TeachGroup",8517:"p__User__Detail__Topics__Group__index",8552:"p__Shixuns__ThemeChange__index",8563:"p__virtualSpaces__Lists__Discussion__Detail__index",8579:"p__Competitions__ThemeChange__Edit",8639:"p__Forums__Index__redirect",8665:"p__Engineering__Lists__TrainingObjectives__index",8688:"p__Shixuns__Detail__Repository__index",8689:"p__Classrooms__Lists__Statistics__VideoStatistics__index",8723:"p__Classrooms__Lists__Polls__Edit__index",8787:"p__Competitions__Entered__index",8823:"p__knowledgegraph__Detail__id",8827:"p__Classrooms__Lists__OnlineLearning__index",8866:"p__index",8882:"p__Classrooms__Lists__Graduation__Tasks__Detail__index",8885:"p__Classrooms__Lists__Statistics__StudentStatistics__index",8965:"p__Shixuns__Detail__Discuss__ThemeChange__index",8999:"p__Three__index",9039:"p__Classrooms__ThemeChange__CourseGroup",9076:"p__Account__Binding__index",9172:"p__DeviceOperationMonitoring__index",9205:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeSetting__index",9366:"p__User__Login__index",9391:"p__Engineering__Lists__CurseSetting__index",9404:"monaco-editor",9406:"p__Classrooms__ThemeChange__Board",9416:"p__Graduations__Lists__Tasks__index",9417:"p__Shixuns__ThemeOne__Detail__SkillTags__index",9449:"p__Shixuns__ThemeChange__Detail",9487:"p__LargeScreen__index",9489:"p__Engineering__Lists__CourseList__index",9507:"p__User__Detail__ResourceGuarantee__index",9511:"p__Shixuns__ThemeChange__Edit",9595:"p__knowledgegraph__Statistics__AbilityMap__index",9647:"p__Question__Index__index",9649:"p__Engineering__Lists__TrainingProgram__index",9674:"p__Shixuns__New__ImagePreview__index",9677:"p__virtualSpaces__Lists__Announcement__AddAndEdit__index",9695:"p__Classrooms__Lists__Polls__Add__index",9715:"p__Classrooms__Lists__CommonHomework__Edit__index",9716:"p__Question__OjProblem__RecordDetail__index",9785:"p__Classrooms__Lists__Template__student__index",9788:"p__Account__Profile__index",9814:"p__Shixuns__Detail__Challenges__ThemeChange__index",9891:"p__User__Detail__Videos__Success__index",9906:"p__Paths__ThemeChange__index",9921:"p__Classrooms__ExamList__index",9922:"p__Classrooms__Lists__Statistics__StudentVideo__index",9944:"p__Classrooms__Lists__Video__Statistics__StudentDetail__index"}[d]||d)+"."+{26:"9da948a3",65:"fce7161d",67:"f6413054",109:"4e714a8c",119:"f7819fbd",174:"97da1099",195:"fe6cad8a",201:"04a5c31e",264:"3390cfa6",292:"2acb7f7a",316:"1f60ada6",337:"4e896d50",354:"d4d139cf",479:"d05f4186",485:"8f07e30f",508:"73d3a271",518:"feb8630a",532:"218b8268",533:"3da229bb",547:"2f8a80be",552:"4f3a4ae9",556:"97ad128d",559:"ab033e09",570:"2b4db38d",576:"fbed9e6d",629:"44a1d9a5",643:"6dff706d",671:"4a609b8d",680:"0b7c0913",700:"3d083755",737:"aa5047fd",741:"ac5fd360",799:"254d273d",879:"36302850",895:"6324e034",900:"19fe4fa9",906:"e68f8ae2",919:"2f4b59e3",921:"bba73d26",928:"08301ff7",981:"24da50c7",1006:"067f32e5",1043:"65dfcbac",1045:"9ca3311c",1048:"cd8878d0",1070:"d1932608",1077:"0723c809",1144:"c90eccaf",1154:"8cb80842",1211:"53b421f6",1253:"ab89871d",1257:"447b1c4a",1262:"1dc81e16",1274:"5f6ea65a",1276:"27157560",1311:"75c68e94",1343:"7de03b03",1423:"f3636156",1427:"a74b8e51",1443:"d956fce9",1450:"533b80cc",1461:"6972274c",1462:"fcf08abc",1470:"ab5ac9d3",1475:"572540f0",1477:"7b2b1b1d",1482:"1b8aab97",1512:"a8cc7f6c",1520:"c0e2532e",1545:"be16e5a1",1578:"6f282245",1581:"5f63cdea",1582:"88dca318",1646:"e6e27b60",1651:"5801fff2",1657:"3506f99d",1660:"9c627a4a",1673:"535b65f3",1674:"8f2cd4eb",1678:"27927f9e",1691:"3c74f8ac",1713:"ed29400e",1717:"27ee6cb5",1727:"b4c62af9",1754:"5782da85",1783:"0e961a7a",1798:"6d7daa23",1799:"c55ef14f",1831:"66c5a90d",1836:"c4282af9",1855:"0cb81f1b",1859:"64f8ff5d",1880:"3925f003",1897:"4fc652fe",1939:"e6613234",1953:"c2369a90",1962:"6f90e556",1993:"6fbf0b30",2011:"59d51f98",2045:"7b5917aa",2099:"d27e99e6",2102:"50fdd11c",2130:"ff73a1db",2141:"95b6f946",2203:"fa04f9d2",2216:"b3fd2576",2240:"7a66a3e0",2249:"f4830452",2281:"25459009",2300:"5d8729b1",2303:"7cb957ab",2307:"ad428eba",2338:"ac41ef9b",2339:"a434e613",2386:"192e235c",2396:"6dd90de8",2404:"3fc0ca5b",2412:"f056b967",2425:"0cf2b9fa",2441:"8e42844b",2443:"04c11c3e",2476:"3b339157",2494:"68080a87",2501:"e7914e3a",2524:"4fb9413b",2538:"de4a3723",2539:"8c806b2f",2548:"94040635",2570:"3c914523",2594:"e87d3761",2603:"443157c9",2641:"a0e9d2ef",2659:"62d9f46b",2667:"a93bd2ac",2707:"22234bb7",2718:"667ce8fa",2748:"2ca46c9f",2806:"6e8d120d",2819:"c59072aa",2823:"d27d3254",2829:"957b88a9",2837:"54a82605",2862:"a589b449",2865:"e782c6da",2884:"693f98fa",2946:"0ac58989",2969:"ab3357d7",3006:"5130ce1a",3086:"b4d1f7d6",3133:"9bf3f89c",3141:"6f4cd08a",3157:"b43660c0",3183:"e1ed91b1",3198:"8e655451",3212:"5644616f",3247:"6dc95c87",3260:"c64b7a27",3276:"5f95dd04",3282:"99d412c9",3295:"c0e091b7",3317:"f3015958",3391:"bedb23a8",3433:"8fff10b2",3442:"2423fda4",3443:"34803cdc",3447:"da9e2c31",3451:"b129112b",3509:"1c9d3cf0",3550:"3dc83156",3581:"99cd4f92",3585:"11ee1f3c",3589:"af764a62",3668:"b61a2a51",3685:"a2146b31",3697:"481a10d9",3747:"336af11a",3754:"e293b243",3777:"d5b0f2f1",3784:"9517302c",3805:"9dbcb95e",3831:"886ad9e3",3862:"b153edbd",3873:"89055ef2",3885:"f87f7f15",3910:"c0d8794f",3951:"8ec4f657",3987:"5cecd51b",4014:"27a8e97c",4017:"d120f222",4030:"0beadc47",4048:"af744caa",4056:"f7986c88",4058:"2c64b641",4078:"691865cb",4088:"236723f3",4093:"8b2af871",4105:"9320e140",4144:"cb1d0e83",4164:"ab6598ef",4216:"03837388",4217:"b5224c2d",4227:"6830300d",4259:"2ee46ba6",4264:"c5d2bd8c",4297:"46633134",4339:"322e7f75",4347:"ce21ef2e",4354:"140899b7",4360:"cf5efa52",4420:"4b912094",4449:"a6fc15dc",4492:"797d2b6d",4496:"2dc8865d",4498:"257bbb71",4504:"dbd40737",4514:"27dec796",4520:"6d429726",4546:"07b07e37",4565:"9e328f15",4572:"fe4ccc96",4599:"bf7c8093",4610:"67dbf512",4621:"ed47ff99",4628:"ece2c60c",4650:"ccf388d9",4662:"1bd9bcac",4685:"c33f1528",4715:"1a169db8",4736:"59cc9972",4741:"b7e44de9",4757:"04bc5d79",4766:"b848873d",4770:"e08e8664",4790:"619413e4",4795:"ddd43430",4797:"a24e92db",4800:"9d49e113",4806:"9ba1d545",4850:"1edda4b7",4889:"8cc48aa5",4928:"f6b285f7",4973:"8725d7bd",4994:"8db0e666",5022:"25caa783",5043:"4eb750fd",5048:"485b714f",5060:"85dafcc6",5096:"ac21d043",5111:"3d416697",5117:"71bec3e2",5125:"9961dc89",5136:"8602b802",5148:"4ce8ec33",5165:"e6cd1b25",5176:"465f897f",5177:"4b0cc5d5",5179:"c09c0aeb",5186:"3b5c4ef0",5230:"0f837bd9",5238:"373850bf",5290:"5dabcdc2",5297:"16d6011c",5307:"f841bbef",5319:"5cb55729",5321:"1163c84e",5330:"8eef29a2",5335:"c5d4407c",5354:"7ae70604",5357:"339e8074",5359:"061f97ae",5382:"1d880a40",5402:"87a06dcd",5416:"454536b7",5434:"38b302a6",5466:"b5317363",5494:"d89549c4",5518:"271d91c6",5549:"60e4edfd",5572:"8d1c69ba",5573:"0e62dfab",5624:"7a26138e",5631:"e00d3d36",5650:"f2ef6d38",5679:"4a090bef",5694:"83373d46",5705:"13618fe0",5729:"d4e4abde",5764:"e0d7e586",5775:"c625bb9f",5776:"20ef6991",5786:"34433514",5798:"9d486139",5800:"5adf26e3",5816:"d8b735b8",5876:"5eded409",5888:"18244663",5891:"ac55866e",5894:"717d8131",5902:"25f37fe1",5911:"84a8d8dc",5915:"d2278374",5961:"94da4d70",5968:"b7e31a98",5972:"10e4f85e",5992:"3759e4a7",6029:"9fd98023",6034:"da4c4d66",6045:"d268f87f",6047:"3ce45acd",6063:"759b2e04",6069:"26c259e2",6080:"73fad05b",6126:"99519171",6127:"472b43c6",6170:"9eea0d62",6185:"09923e6c",6205:"70a91606",6265:"f8168ef8",6270:"d45a88d7",6282:"2f88e266",6328:"4d6ed96d",6366:"97d9abbb",6378:"7f3a946a",6411:"afa800ee",6434:"83243f16",6444:"422a340a",6451:"19373ab6",6452:"be7ee759",6531:"3055f847",6583:"e650a5f8",6587:"55e03305",6634:"3e69dc26",6637:"6db41ef5",6651:"ab56e004",6682:"afd05bbd",6685:"f0ab0271",6729:"2c6f8d49",6741:"656447ab",6774:"59d4d618",6776:"678face5",6784:"2973d48e",6788:"f3099933",6789:"b4227022",6796:"78a452ff",6806:"ba049831",6820:"2e2a11d9",6882:"85f117f6",6904:"34a143ec",6913:"27a50bdf",6939:"ec221a4b",6963:"e0016fa2",6979:"44d4e422",7042:"fea632a1",7043:"2f71e97c",7045:"3056b902",7052:"02291fe8",7058:"baa42037",7062:"51a95f49",7084:"46ccce72",7099:"a96e6627",7156:"e7466006",7178:"8d78196e",7182:"a2c9297c",7224:"d417082d",7242:"3b54303b",7260:"242074c4",7289:"39ca4d2d",7311:"965e9a35",7322:"1e6212f8",7323:"52132b73",7329:"cbd00436",7333:"f8452755",7365:"1005464f",7395:"94da7749",7402:"8beca4e4",7460:"f44827ef",7465:"9a1311d3",7477:"70431cae",7482:"5b581069",7527:"feeaf322",7545:"550e5fc2",7560:"a872cde2",7589:"f348ba3c",7591:"c8233ce9",7614:"feb7faeb",7622:"d4e63dac",7670:"454f24ec",7686:"4fcec9f9",7706:"c2a79e40",7745:"6d753ed4",7762:"e2c4dc5b",7806:"a4e36106",7823:"8352cbf7",7835:"77cd4b75",7855:"bf368e17",7857:"24358654",7883:"80ba98ce",7884:"2a5cf3b8",7901:"a0e574c9",7922:"359ecc76",7964:"29aed9a1",7978:"5c11d803",8062:"0ac9a13a",8072:"4ed458ca",8085:"baf477fb",8089:"d536b13a",8115:"5a36561e",8116:"1e557819",8121:"d96452b6",8137:"d46b97a2",8143:"f65287c9",8145:"030bc56f",8155:"d2019583",8161:"83c5fa9a",8217:"69d18a20",8234:"f17ded5f",8237:"51dd08d9",8241:"a0ff35a2",8286:"cbc2f9e4",8302:"55794970",8332:"4321aebe",8340:"5978a0f5",8350:"07df8a75",8365:"8001cb8a",8398:"327fdb69",8431:"f9b9abd6",8435:"29ffda57",8447:"de0855ec",8458:"e09a0f9f",8479:"ddce32af",8517:"a0dcb393",8518:"b4d893eb",8552:"4345e02a",8561:"333e8ec9",8563:"f308d359",8579:"90b4d2f9",8639:"c3c9f9e2",8665:"b704a55d",8688:"d36849c6",8689:"5ad258fb",8723:"c444e203",8737:"ce7dad23",8776:"0ad26240",8787:"85b80be0",8823:"1cb42ecf",8827:"2d35621d",8842:"9f25a3e2",8866:"0ed0d0b1",8882:"b9678022",8885:"8df00f61",8898:"d002bcd8",8909:"94c963ef",8920:"7f82440c",8949:"df530e54",8963:"790aecdd",8965:"63b30d4f",8999:"6866e559",9039:"d282baba",9076:"e91cbfb1",9104:"bbcb2345",9113:"a60ab188",9172:"299e6d5b",9205:"7b533392",9252:"0d791a59",9260:"f163e60e",9366:"d050b664",9391:"68a8bc9f",9404:"9fcc3d3e",9406:"fe616d50",9416:"8881f2f6",9417:"1925b424",9449:"9d323225",9487:"e398da38",9489:"12bf3245",9507:"95b2efe3",9511:"47873eee",9554:"ed358e7b",9559:"f794af19",9595:"8f16bc67",9647:"c1cbf3a4",9649:"7853109b",9674:"a254ea29",9677:"1e7f79f7",9695:"93ce67be",9715:"6cb2cddf",9716:"16230602",9785:"f8a4325a",9788:"eb1221ef",9814:"322e9319",9891:"cb4f34be",9895:"b8e31ff2",9906:"298a171d",9921:"c8a87865",9922:"d22b5c39",9928:"5989f5e0",9944:"95a65c12",9950:"74f6dfb2",9951:"b4d5df6f",9968:"17466785"}[d]+".async.js"}}(),function(){__webpack_require__.miniCssF=function(d){return""+({26:"p__Classrooms__Lists__Graduation__Tasks__Edit__index",65:"p__StudentEffectivenessAnalysis__index",67:"p__Message__index",109:"p__Classrooms__Lists__ShixunHomeworks__Detail__components__CodeReview__Detail__index",119:"p__User__ThemeChange__Paths",174:"p__OnlineDevice__DeviceInfo__InfoList__Details__index",195:"p__Classrooms__Lists__GroupHomework__Detail__index",201:"p__Classrooms__ThemeChange__Students",264:"p__User__Detail__Order__pages__orderPay__index",292:"p__Classrooms__Lists__Exercise__Add__index",337:"p__Paperlibrary__Random__PreviewEdit__index",479:"p__Classrooms__Lists__GroupHomework__EditWork__index",485:"p__Question__AddOrEdit__BatchAdd__index",508:"p__Forums__Detail__id",518:"p__Shixuns__Detail__Settings__ThemeChange__index",532:"p__ExcellentCourse__index",533:"p__Classrooms__Lists__Video__Statistics__Detail__index",547:"p__Account__index",556:"p__User__Detail__Order__pages__invoice__index",559:"layouts__virtualDetail__index",576:"p__Account__Profile__Edit__index",643:"p__Classrooms__Lists__Polls__QuestionnaireInfo__index",680:"p__Innovation__index",700:"p__tasks__Jupyter__index",737:"p__Classrooms__Lists__CommonHomework__Detail__components__CodeReview__Detail__index",799:"p__User__Detail__Topics__Poll__Detail__index",879:"p__User__ThemeChange__AccountInfo",895:"p__Classrooms__Lists__Video__Items__videoInfo__index",900:"p__User__ThemeChange__Classrooms",906:"p__User__ThemeChange__CareerCertification",919:"p__knowledgegraph__Statistics__LearningPath__index",921:"p__Classrooms__Lists__Exercise__CodeDetails__index",928:"p__RestFul__Edit__index",1006:"p__RestFul__index",1043:"p__Classrooms__Lists__Graduation__Tasks__index",1045:"p__virtualSpaces__Lists__Knowledge__AddAndEdit__index",1048:"p__Classrooms__Lists__ProgramHomework__Detail__Ranking__index",1070:"p__Innovation__PublicMirror__index",1077:"p__User__ThemeTwoLogin__index",1211:"p__Classrooms__Lists__CommonHomework__EditWork__index",1253:"p__Graduations__Lists__Gradingsummary__index",1257:"p__Classrooms__Lists__ResourceRecommend__index",1276:"p__MoopCases__Success__index",1343:"p__User__Detail__ResourceAllocation__index",1423:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeAnswer__index",1427:"p__Classrooms__Lists__Statistics__index",1443:"p__EffectivenessAnalysis__index",1450:"p__Classrooms__Lists__ShixunHomeworks__Commitsummary__index",1461:"p__Graduations__Lists__Topics__index",1470:"p__User__Register__index",1475:"p__Shixuns__Detail__Dataset__JupyterData__index",1477:"p__Classrooms__ThemeChange__Assistant",1482:"p__Classrooms__Lists__Graduation__Topics__Edit__index",1512:"p__Classrooms__Lists__Exercise__AnswerCheck__index",1520:"p__Engineering__Lists__StudentList__index",1545:"p__Paperlibrary__Random__ExchangeFromProblemSet__index",1578:"p__Classrooms__Lists__Graduation__Topics__Detail__index",1581:"p__Problemset__Preview__index",1582:"p__Classrooms__Lists__GroupHomework__Add__index",1651:"p__Paths__ThemeChange__Statistics",1657:"p__Shixuns__Edit__body__Level__Challenges__EditQuestion__index",1674:"p__Classrooms__ClassicCases__index",1678:"p__Classrooms__ThemeChange__Attachment",1691:"p__OnlineMessageCenter__MessageCenterManage__index",1713:"p__virtualSpaces__Lists__Settings__index",1717:"layouts__index",1727:"p__Classrooms__Lists__CourseGroup__NotList__index",1754:"p__Classrooms__ThemeChange__Video",1783:"p__virtualSpaces__Lists__Experiment__index",1798:"p__Classrooms__ThemeChange__GroupHomework",1831:"p__Graduations__Index__index",1836:"p__Classrooms__Lists__Attendance__Webview__Teacher__index",1855:"p__MoopCases__InfoPanel__index",1880:"p__User__Detail__Order__pages__apply__index",1897:"p__User__ThemeChange__ClassManagement",1939:"p__User__Detail__Order__index",1953:"p__Problemset__NewItem__index",1962:"p__Classrooms__Lists__Engineering__index",1993:"p__Shixuns__Detail__Dataset__ThemeChange__index",2045:"p__Engineering__Lists__TeacherList__index",2099:"p__Paperlibrary__ThemeChange__index",2102:"p__Classrooms__Lists__Board__Edit__index",2130:"p__Shixuns__Detail__Repository__UploadFile__ThemeChange__index",2141:"p__Shixuns__Detail__Split__index",2203:"p__Classrooms__ThemeChange__ShixunHomeworks",2216:"p__DataSet__Index__index",2240:"p__User__Detail__Videos__Upload__index",2281:"p__Paths__ThemeChange__Detail",2303:"p__Classrooms__Lists__CommonHomework__Comment__index",2307:"p__Report__index",2338:"p__Classrooms__Lists__CommonHomework__Review__index",2339:"p__virtualSpaces__Lists__Plan__Detail__index",2396:"p__User__Detail__ResourcesCenter__index",2404:"p__Classrooms__Lists__Template__teacher__index",2412:"p__User__Detail__Videos__index",2425:"p__Classrooms__Lists__Board__Detail__index",2441:"layouts__LaboratoryLayouts__index",2443:"p__Graduations__Lists__StageModule__index",2476:"p__Colleges__index",2501:"p__Search__index",2524:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Detail__index",2539:"p__Graduations__Review__index",2548:"p__Engineering__Norm__Detail__index",2570:"p__Competitions__Detail__index",2603:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Add__index",2641:"p__Property__Procurement__index",2659:"p__User__Detail__UserPortrait__index",2707:"p__Innovation__MyDataSet__index",2748:"p__Property__index",2806:"p__User__Detail__Topics__Exercise__Detail__index",2819:"p__Classrooms__Lists__Template__detail__index",2823:"p__Engineering__Navigation__Home__index",2829:"p__Messages__Private__index",2862:"p__User__ThemeChange__ExperImentImg",2865:"p__Innovation__MyMirror__index",2884:"p__Classrooms__Lists__ProgramHomework__Comment__index",3006:"p__Engineering__index",3086:"p__Shixuns__Detail__ForkList__ThemeChange__index",3141:"p__Innovation__Detail__index",3157:"p__User__Detail__ExperImentImg__Add__index",3183:"p__Engineering__Lists__GraduationIndex__index",3212:"p__MoopCases__index",3247:"p__Paperlibrary__See__index",3260:"p__Paperlibrary__Add__index",3276:"p__Classrooms__Lists__Statistics__UserportraitStatistics__index",3282:"p__OnlineDevice__DigitalSigns__index",3317:"p__Classrooms__Lists__Graduation__Topics__Add__index",3391:"p__Classrooms__Lists__ProgramHomework__Detail__components__CodeReview__Detail__index",3433:"p__Classrooms__Lists__Exercise__Sumup__Edit__index",3442:"p__Classrooms__Lists__Board__Add__index",3443:"p__knowledgegraph__Statistics__AbilityMap__Detail",3447:"p__User__Detail__Order__pages__orderInformation__index",3451:"p__Classrooms__Lists__Statistics__StudentStatistics__Detail__index",3509:"p__HttpStatus__SixActivities",3581:"p__Shixuns__Detail__Collaborators__ThemeChange__index",3585:"p__Classrooms__Lists__Statistics__StudentSituation__index",3668:"p__Classrooms__Lists__CommonHomework__Detail__index",3685:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Edit__index",3747:"p__virtualSpaces__Lists__Homepage__index",3784:"p__Paperlibrary__Random__Detail__index",3831:"p__User__ThemeChange__VirtualSpaces",3873:"p__virtualSpaces__Lists__Lesson__index",3910:"p__HttpStatus__introduction",3951:"p__Classrooms__Lists__ProgramHomework__Detail__index",4030:"p__Classrooms__Lists__ProgramHomework__AddAndEdit__index",4048:"p__Forums__ThemeChange__index",4056:"p__IntrainCourse__index",4078:"p__Messages__Tidings__index",4093:"p__Classrooms__Lists__Attendance__Detail__index",4105:"p__Classrooms__Lists__Exercise__Answer__index",4144:"p__Problemset__Preview__New__index",4164:"p__Classrooms__Lists__Exercise__Detail__index",4216:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Edit__index",4217:"p__Classrooms__Lists__Video__Statistics__index",4227:"p__Paths__Overview__index",4259:"p__User__Detail__Order__pages__result__index",4264:"p__Forums__New__index",4297:"p__Classrooms__ThemeChange__Polls",4339:"p__knowledgegraph__Statistics__PathAtlas__Detail",4420:"p__knowledgegraph__index",4449:"p__Competitions__Exports__index",4492:"p__Graduations__Lists__StudentSelection__index",4496:"p__HttpStatus__HpcCourse",4498:"p__Shixuns__Edit__body__Level__Challenges__NewPractice__index",4504:"p__virtualSpaces__Lists__Survey__index",4514:"p__Account__Results__index",4520:"p__Account__Secure__index",4546:"p__Engineering__Lists__TrainingProgram__Add__index",4572:"p__Classrooms__Lists__ExportList__index",4599:"p__Problemset__index",4610:"p__User__Detail__LearningPath__index",4621:"p__Administration__Profession__index",4662:"p__Classrooms__Lists__GroupHomework__Review__index",4715:"p__virtualSpaces__Lists__Material__Detail__index",4736:"p__User__Detail__Projects__index",4741:"p__Problems__OjForm__NewEdit__index",4757:"p__virtualSpaces__Lists__Workplace__index",4766:"p__Administration__index",4770:"p__Classrooms__Lists__ProgramHomework__Detail__answer__index",4795:"p__Classrooms__Lists__Graduation__Tasks__Add__index",4800:"p__Engineering__Lists__GraduatedMatrix__index",4806:"p__OnlineDevice__FaultLibrary__index",4889:"p__Classrooms__Lists__Exercise__ImitateAnswer__index",4928:"p__Classrooms__Lists__LearningPath__index",4973:"p__Engineering__Evaluate__List__index",4994:"p__Problems__OjForm__index",5022:"p__Graduations__Lists__Settings__index",5043:"p__User__Detail__Topics__Poll__Edit__index",5048:"p__Classrooms__Lists__Graduation__Topics__index",5096:"p__Shixuns__Detail__AuditSituation__index",5111:"p__Terminal__index",5117:"p__User__ThemeChange__Certificate",5125:"p__Classrooms__Lists__Exercise__DetailedAnalysis__index",5148:"p__Classrooms__Lists__Polls__Answer__index",5165:"p__User__ThemeChange__Topics",5176:"p__User__Detail__Videos__Protocol__index",5177:"p__Classrooms__ThemeChange__Teachers",5179:"p__Administration__Student__Edit__index",5186:"p__Classrooms__Overview__index",5230:"p__Shixuns__Detail__Repository__AddFile__ThemeChange__index",5238:"p__virtualSpaces__Lists__Material__index",5297:"p__Classrooms__Lists__Exercise__Detail__components__DuplicateChecking__CheckDetail__index",5307:"p__Shixuns__ThemeChange__New",5319:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Detail__index",5330:"p__Classrooms__ThemeChange__ShixunHomeworksComment",5335:"p__Engineering__Lists__CourseMatrix__index",5357:"p__Engineering__Lists__TrainingProgram__Edit__index",5359:"p__Messages__Detail__index",5382:"p__DataSet__Detail__index",5402:"p__User__Detail__Topics__Detail__index",5466:"p__Classrooms__ThemeChange__LiveVideo",5518:"p__Classrooms__Lists__Template__index",5549:"p__Shixuns__New__CreateImg__index",5572:"p__Paths__HigherVocationalEducation__index",5573:"p__Shixuns__Detail__Merge__index",5624:"p__Graduations__Lists__Index__index",5650:"p__Competitions__Update__index",5694:"p__Classrooms__ThemeChange__ShixunHomeworksDetail",5705:"p__virtualSpaces__Lists__Construction__index",5729:"p__Help__Index",5775:"p__Engineering__Lists__Document__index",5776:"p__User__ThemeChange__RealNameCertification",5786:"layouts__LoginAndRegister__index",5798:"p__Classrooms__Lists__Video__Statistics__UserDetail__index",5800:"p__User__ThemeChange__Competitions",5816:"p__Paperlibrary__Random__Edit__index",5888:"p__Classrooms__Lists__CommonHomework__Add__index",5891:"p__virtualSpaces__Lists__Resources__index",5894:"p__Shixuns__Detail__Repository__Commit__ThemeChange__index",5915:"p__knowledgegraph__Detail__Statistics__index",5972:"layouts__user__index",5992:"p__Classrooms__Lists__Exercise__ReviewGroup__index",6029:"p__Administration__Student__index",6063:"p__Graduations__Lists__Personmanage__index",6069:"p__virtualSpaces__Lists__Lesson__Detail__index",6080:"p__Paths__ThemeChange__New",6127:"p__Classrooms__Lists__ProgramHomework__Ranking__index",6185:"p__Classrooms__ThemeChange__Announcement",6205:"p__Classrooms__ThemeChange__VideoUpload",6265:"p__virtualSpaces__Lists__Discussion__index",6270:"p__MyProblem__index",6282:"p__Classrooms__ThemeChange__ProgramHomework",6328:"p__Shixuns__Edit__body__Warehouse__index",6366:"p__Innovation__PublicProject__index",6434:"p__User__Detail__Order__pages__records__index",6444:"p__Video__Detail__id",6451:"p__Shixuns__Detail__RankingList__ThemeChange__index",6452:"p__Innovation__PublicDataSet__index",6583:"p__User__Detail__Classrooms__index",6587:"p__User__Detail__Videos__Protocol__resource",6634:"p__Innovation__Tasks__index",6637:"p__Shixuns__Detail__Repository__ThemeChange__index",6651:"p__Engineering__Evaluate__Detail__index",6682:"p__User__ThemeChange__Shixuns",6685:"p__Classrooms__Index__index",6729:"p__Classrooms__Lists__GroupHomework__Edit__index",6741:"p__Engineering__Norm__List__index",6776:"p__Classrooms__ThemeChange__Exercise",6784:"p__Innovation__Edit__index",6789:"p__Classrooms__ThemeChange__index",6796:"p__virtualSpaces__Lists__Announcement__Detail__index",6806:"p__OnlineDevice__DeviceInfo__index",6820:"p__User__Detail__Topics__Normal__index",6882:"p__Classrooms__New__StartClass__index",6904:"p__MoopCases__FormPanel__index",6913:"p__Question__AddOrEdit__index",6963:"p__Classrooms__Lists__Engineering__Detail__index",6979:"p__knowledgegraph__SanD__index",7042:"p__knowledgegraph__Statistics__LearningPath__Detail",7043:"p__User__Detail__Topics__Exercise__Edit__index",7045:"p__Classrooms__Lists__CommonHomework__SubmitWork__index",7052:"p__OnlineDevice__DeviceInfo__InfoList__Edit__index",7058:"p__virtualSpaces__Lists__Survey__Detail__index",7062:"layouts__SimpleLayouts",7099:"p__Competitions__ThemeChange__index",7178:"p__User__BindAccount__index",7182:"p__User__ResetPassword__index",7224:"p__StatsDashboard__index",7242:"p__Innovation__MyProject__index",7260:"p__Account__Certification__index",7289:"p__tasks__ThemeChange__index",7322:"layouts__ThemeChange__ShixunDetail",7323:"p__Classrooms__ThemeChange__New",7329:"p__Classrooms__ThemeChange__Attendance",7395:"p__Classrooms__Lists__Statistics__StudentDetail__index",7402:"p__User__ThemeChange__OtherResources",7460:"p__Question__OjProblem__index",7465:"p__OnlineDevice__DeviceInfo__InfoList__ReservationInfo__index",7477:"p__virtualSpaces__Lists__Announcement__index",7482:"p__Classrooms__Lists__Exercise__Notice__index",7527:"p__MyProblem__RecordDetail__index",7545:"p__Graduations__Lists__Archives__index",7560:"p__Administration__College__index",7589:"p__virtualSpaces__Lists__DigitalTopics__index",7614:"p__Shixuns__Edit__body__Level__Challenges__RankingSetting__index",7622:"p__Classrooms__Lists__Polls__Detail__index",7670:"p__OnlineReservation__ReservationInfo__index",7745:"p__OnlineDevice__DeviceType__index",7806:"p__Classrooms__Lists__Statistics__StatisticsQuality__index",7823:"p__OnlineMessageCenter__OffSiteConfig__index",7835:"p__Problemset__ThemeChange__index",7855:"p__User__Detail__ResourcesCenter__Detail__index",7857:"p__Shixuns__Edit__body__Level__Challenges__NewQuestion__index",7883:"p__Classrooms__Lists__Exercise__WrongAnswer__index",7884:"p__Shixuns__Exports__index",7901:"p__Guidance__ThemeChange",7922:"p__Classrooms__Lists__CourseGroup__Detail__index",8062:"p__User__Detail__Topicbank__index",8072:"p__Classrooms__Lists__GroupHomework__SubmitWork__index",8085:"p__Classrooms__Lists__Exercise__Review__index",8115:"p__User__ThemeChange__DataSet",8116:"p__LaboratoryList__index",8121:"p__OnlineDevice__DeviceType__Details__index",8137:"p__knowledgegraph__Statistics__PathAtlas__index",8143:"layouts__GraduationsDetail__index",8145:"p__User__ThemeChange__ClassManagementItem",8155:"p__Shixuns__Overview__index",8217:"p__User__ThemeChange__AccountInfoEdit",8234:"p__OnlineDevice__DeviceLabel__index",8237:"p__User__Detail__Order__pages__view__index",8241:"p__virtualSpaces__Lists__Plan__index",8286:"p__User__ThemeChange__ExperImentImgDetail",8332:"p__User__ThemeChange__Detail",8398:"p__virtualSpaces__Lists__Resources__Detail__index",8431:"p__Classrooms__Lists__Exercise__Export__index",8435:"p__Classrooms__Lists__Attendance__index",8447:"p__virtualSpaces__Lists__Knowledge__index",8458:"p__Classrooms__ThemeChange__CommonHomework",8479:"p__User__ThemeChange__TeachGroup",8517:"p__User__Detail__Topics__Group__index",8552:"p__Shixuns__ThemeChange__index",8563:"p__virtualSpaces__Lists__Discussion__Detail__index",8579:"p__Competitions__ThemeChange__Edit",8665:"p__Engineering__Lists__TrainingObjectives__index",8688:"p__Shixuns__Detail__Repository__index",8689:"p__Classrooms__Lists__Statistics__VideoStatistics__index",8723:"p__Classrooms__Lists__Polls__Edit__index",8787:"p__Competitions__Entered__index",8823:"p__knowledgegraph__Detail__id",8827:"p__Classrooms__Lists__OnlineLearning__index",8866:"p__index",8882:"p__Classrooms__Lists__Graduation__Tasks__Detail__index",8885:"p__Classrooms__Lists__Statistics__StudentStatistics__index",8965:"p__Shixuns__Detail__Discuss__ThemeChange__index",8999:"p__Three__index",9039:"p__Classrooms__ThemeChange__CourseGroup",9076:"p__Account__Binding__index",9172:"p__DeviceOperationMonitoring__index",9205:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeSetting__index",9366:"p__User__Login__index",9391:"p__Engineering__Lists__CurseSetting__index",9404:"monaco-editor",9406:"p__Classrooms__ThemeChange__Board",9416:"p__Graduations__Lists__Tasks__index",9449:"p__Shixuns__ThemeChange__Detail",9487:"p__LargeScreen__index",9489:"p__Engineering__Lists__CourseList__index",9507:"p__User__Detail__ResourceGuarantee__index",9511:"p__Shixuns__ThemeChange__Edit",9595:"p__knowledgegraph__Statistics__AbilityMap__index",9647:"p__Question__Index__index",9649:"p__Engineering__Lists__TrainingProgram__index",9674:"p__Shixuns__New__ImagePreview__index",9677:"p__virtualSpaces__Lists__Announcement__AddAndEdit__index",9695:"p__Classrooms__Lists__Polls__Add__index",9715:"p__Classrooms__Lists__CommonHomework__Edit__index",9716:"p__Question__OjProblem__RecordDetail__index",9785:"p__Classrooms__Lists__Template__student__index",9788:"p__Account__Profile__index",9814:"p__Shixuns__Detail__Challenges__ThemeChange__index",9891:"p__User__Detail__Videos__Success__index",9906:"p__Paths__ThemeChange__index",9921:"p__Classrooms__ExamList__index",9922:"p__Classrooms__Lists__Statistics__StudentVideo__index",9944:"p__Classrooms__Lists__Video__Statistics__StudentDetail__index"}[d]||d)+"."+{26:"91ed81ab",65:"b255d7cc",67:"249d60ed",109:"1a7fc455",119:"5a5d8480",174:"a243523d",195:"8bc56a44",201:"749be0d6",264:"5fd9b3fc",292:"61445bf5",337:"a41a57cd",479:"bba9e475",485:"d63578fe",508:"82593858",518:"a22ced2d",532:"1e2e38ec",533:"308bfa22",547:"5581debc",556:"0e9c5cde",559:"c49aa5ba",576:"e4f97d42",643:"22ded693",680:"e67e9e01",700:"6d428944",737:"98eb2f74",799:"b1dec428",879:"64e845d8",895:"ad846737",900:"5db55ef3",906:"d2399d94",919:"898b0443",921:"30cc7e9b",928:"0277270a",1006:"2263131d",1043:"e8c0878b",1045:"bce697db",1048:"dafc3f4f",1070:"e67e9e01",1077:"d7030788",1211:"bdb8faab",1253:"a97ebbb0",1257:"2c6cc63e",1276:"bbc6eeec",1343:"e4e2ebc7",1423:"5c4a76fc",1427:"3d93dfaa",1443:"0260258d",1450:"1edcc2ed",1461:"82857f62",1470:"183c9793",1475:"01717533",1477:"08b9f795",1482:"d159af07",1512:"f3653a35",1520:"f7300d0e",1545:"0da47095",1578:"efcb0bdc",1581:"efffd7c0",1582:"8e45b6ff",1651:"55e4f704",1657:"49a2443a",1674:"fdbc1e05",1678:"c99d5f02",1691:"a441e134",1713:"a4a3dbd7",1717:"10201060",1727:"4eec53ba",1754:"1f751b14",1783:"4b6779fc",1798:"d4c3f3eb",1831:"12095e09",1836:"5f0d3f7f",1855:"b92cccb4",1859:"03cdfb68",1880:"29bc2b98",1897:"35d10918",1939:"164385ec",1953:"d6d2346f",1962:"84e145fa",1993:"7cc7cf77",2045:"dcfad42d",2099:"95e6fde2",2102:"ec61f9f0",2130:"50dfcc51",2141:"5eb2f330",2203:"1115c2b7",2216:"90f34d3c",2240:"e7cce869",2281:"6a84a8a4",2303:"5a9dc2b1",2307:"b2c54321",2338:"9f251b40",2339:"bf4c6e3d",2396:"1234f229",2404:"08d36549",2412:"4490ba2a",2425:"47b23ee4",2441:"1dcd2073",2443:"2f614807",2476:"cf85a190",2501:"2441982c",2524:"6e1463fc",2539:"43c55c4d",2548:"75182034",2570:"ecab12cb",2603:"0277270a",2641:"8118465b",2659:"f6071a36",2707:"cabcb16e",2748:"4d47bb3f",2806:"066a1e3c",2819:"9455b08a",2823:"a13b21fb",2829:"a5909474",2862:"67c37a4e",2865:"6ef3cf6b",2884:"405c2ef9",3006:"7fce4e74",3086:"d0ebac07",3141:"bca89c81",3157:"d0ba1925",3183:"b2253f40",3212:"ad1521c1",3247:"50105eb7",3260:"21b54427",3276:"7bbb651d",3282:"17b4bc50",3317:"137440b7",3391:"f0e498fe",3433:"9a871026",3442:"bdf7849c",3443:"898b0443",3447:"1653d818",3451:"e3a31387",3509:"70043ca5",3581:"5877448c",3585:"5f288e7b",3668:"1a8ed604",3685:"5356e3de",3747:"c50b2b70",3784:"c81d4a51",3831:"4987c55d",3873:"9b32f93d",3910:"658d457f",3951:"9b11b034",4030:"d3df931a",4048:"5d227dab",4056:"10eacfff",4078:"aa54548e",4093:"7d2dbef2",4105:"7f9d4513",4144:"f10aa199",4164:"4751b387",4216:"0277270a",4217:"387bf824",4227:"79c3b323",4259:"ebd953ac",4264:"36917df0",4297:"0d7e3efe",4339:"9de29759",4420:"d1920d14",4449:"e68d8d58",4492:"9fd5ba05",4496:"77babddd",4498:"e1d76eaf",4504:"b05222a6",4514:"887bdbb6",4520:"e86d61a1",4546:"4101a1f2",4572:"70e5675d",4599:"6327db8f",4610:"687005a6",4621:"4c789bfa",4662:"30b29314",4715:"cf749061",4736:"aa2d53d9",4741:"c51f7784",4757:"73b754d2",4766:"b5df5a8e",4770:"674b2d2a",4795:"939f9f81",4800:"f50302a4",4806:"5d5d7b52",4889:"a91da64a",4928:"7c2ece62",4973:"129c56e8",4994:"a8674b97",5022:"81b1b86b",5043:"247e6954",5048:"aa08c681",5096:"4f6a4d00",5111:"5d09a39a",5117:"4358a2fb",5125:"57501e4a",5148:"572faeac",5165:"dc6d9bc6",5176:"9c49e7fa",5177:"b612c017",5179:"699b44a8",5186:"30047116",5230:"94dfecf3",5238:"694000a4",5297:"5426028f",5307:"5e9c4598",5319:"34217c3f",5330:"5b911c36",5335:"fec6fd9f",5357:"1fbb7d24",5359:"b254a598",5382:"28b79a42",5402:"68063d1e",5466:"90694dbb",5518:"9f425be3",5549:"39285664",5572:"c945fbf2",5573:"6ecf393c",5624:"685b3a03",5650:"f8f63f4b",5694:"3d9d34f2",5705:"df6bf207",5729:"46f9b5d4",5775:"8945cad2",5776:"e07b4b49",5786:"37a81eaa",5798:"ce1cf7da",5800:"f214b296",5816:"e88b4cdd",5888:"193a7f8f",5891:"2f4cf052",5894:"4faa35bb",5915:"bc9c3e69",5972:"79479731",5992:"419f5d2f",6029:"3f8b2a62",6063:"2c0a986c",6069:"5e1528e7",6080:"24b84084",6127:"f31505a8",6185:"4617aa93",6205:"6eef461f",6265:"ab7c4ade",6270:"5496b206",6282:"37b2b2dd",6328:"de2b9d62",6366:"079fc2d8",6434:"c5a95b1e",6444:"fd46d237",6451:"949d91e5",6452:"50a6d310",6583:"56bd7407",6587:"9c49e7fa",6634:"440b7a61",6637:"cd627031",6651:"b07fe216",6682:"d2765c91",6685:"cc9a5255",6729:"aea3b7f5",6741:"b838eb14",6776:"e7f1be47",6784:"1affe817",6789:"bb555561",6796:"88ef2b35",6806:"f8d24f6b",6820:"cebdf1cf",6882:"c2d2eada",6904:"44afaa9b",6913:"739202fe",6963:"84e145fa",6979:"a619b685",7042:"898b0443",7043:"25478869",7045:"48f6fc4c",7052:"ff439e75",7058:"7c5ff3cf",7062:"566c9e00",7099:"1b3891e9",7178:"6e47d75d",7182:"183c9793",7224:"7caf9754",7242:"4f353f61",7260:"2c380d56",7289:"03d0df5f",7322:"f372c040",7323:"3e11a2bc",7329:"4677c004",7395:"ff574c5d",7402:"c3bf3e69",7460:"dedd2038",7465:"3d1cb8a8",7477:"b45b8d42",7482:"c37a3f01",7527:"a4765b7e",7545:"88c2815e",7560:"d82e43ca",7589:"5abfc7e4",7614:"de9ee12f",7622:"79b56687",7670:"5f70d151",7745:"ad084cfa",7806:"80b7b1d6",7823:"32b9fee9",7835:"28d790d7",7855:"d9440df4",7857:"13a29416",7883:"93cf27b2",7884:"1ca6cde0",7901:"505c3349",7922:"49f2762f",8062:"8e384b9f",8072:"540f746b",8085:"a1cadc76",8115:"47861430",8116:"9e0f18a2",8121:"9377e9f7",8137:"66f37f26",8143:"baf130b5",8145:"0eefaae0",8155:"d345abd7",8217:"000115b7",8234:"06d980e9",8237:"cc24fd46",8241:"c8299739",8286:"4b01dd59",8332:"a10509a3",8398:"7bb61fdd",8431:"289b326c",8435:"c54dbac3",8447:"9c541ee4",8458:"ddd4164b",8479:"ef522a60",8517:"cccfddad",8552:"208da293",8563:"b1f16cfe",8579:"58108aeb",8665:"c52575bc",8688:"c044db56",8689:"38303690",8723:"77277ca8",8787:"121de108",8823:"75b63dcd",8827:"14015163",8866:"70a2d775",8882:"f3e42f72",8885:"de905169",8965:"f169309d",8999:"448aa22f",9039:"4e72f6be",9076:"6a501148",9172:"16a4b74b",9205:"49a3e67d",9366:"4f511490",9391:"c4736e2f",9404:"d8cf04f7",9406:"df76000e",9416:"bc1cc3b9",9449:"81d55bec",9487:"a73f5679",9489:"ee2bb5b7",9507:"af07d346",9511:"c5e68cf8",9595:"898b0443",9647:"bea72042",9649:"00fb4211",9674:"5f24eb80",9677:"18c220c4",9695:"7288e7ae",9715:"b6c6645f",9716:"a5750e0d",9785:"08d36549",9788:"781a4d20",9814:"9f959c59",9891:"512a9301",9906:"c603619a",9921:"e0db9101",9922:"33690872",9944:"1ba31055"}[d]+".chunk.css"}}(),function(){__webpack_require__.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(d){if(typeof window=="object")return window}}()}(),function(){__webpack_require__.hmd=function(d){return d=Object.create(d),d.children||(d.children=[]),Object.defineProperty(d,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+d.id)}}),d}}(),function(){__webpack_require__.o=function(d,g){return Object.prototype.hasOwnProperty.call(d,g)}}(),function(){var d={};__webpack_require__.l=function(g,e,r,i){if(d[g]){d[g].push(e);return}var l,c;if(r!==void 0)for(var f=document.getElementsByTagName("script"),u=0;u{const K=Xf(t,s,Q)||Xf(k,s,Q)||Xf(_,s,Q);return K&&(j[Q]=K),j},{})}function Xf(k,t,n){return k&&k.hasAttributeNS(t,n)?k.getAttributeNS(t,n):null}function Wf(k){return new Error(`Could not parse ttml timestamp ${k}`)}function uf(k,t){if(!k)return null;let n=Mf(k);return n===null&&(Af.test(k)?n=id(k,t):Cf.test(k)&&(n=Hf(k,t))),n}function id(k,t){const n=Af.exec(k),s=(n[4]|0)+(n[5]|0)/t.subFrameRate;return(n[1]|0)*3600+(n[2]|0)*60+(n[3]|0)+s/t.frameRate}function Hf(k,t){const n=Cf.exec(k),s=Number(n[1]);switch(n[2]){case"h":return s*3600;case"m":return s*60;case"ms":return s*1e3;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}class jf{constructor(t,n){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=t,this.trackName=n}dispatchCue(){this.startTime!==null&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)}newCue(t,n,s){(this.startTime===null||this.startTime>t)&&(this.startTime=t),this.endTime=n,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}class ad{constructor(t){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=y(),this.captionsProperties=void 0,this.hls=t,this.config=t.config,this.Cues=t.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},t.on(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(u.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(u.FRAG_LOADING,this.onFragLoading,this),t.on(u.FRAG_LOADED,this.onFragLoaded,this),t.on(u.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.on(u.FRAG_DECRYPTED,this.onFragDecrypted,this),t.on(u.INIT_PTS_FOUND,this.onInitPtsFound,this),t.on(u.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.on(u.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:t}=this;t.off(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(u.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(u.FRAG_LOADING,this.onFragLoading,this),t.off(u.FRAG_LOADED,this.onFragLoaded,this),t.off(u.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.off(u.FRAG_DECRYPTED,this.onFragDecrypted,this),t.off(u.INIT_PTS_FOUND,this.onInitPtsFound,this),t.off(u.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.off(u.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){const t=new jf(this,"textTrack1"),n=new jf(this,"textTrack2"),s=new jf(this,"textTrack3"),_=new jf(this,"textTrack4");this.cea608Parser1=new yl(1,t,n),this.cea608Parser2=new yl(3,s,_)}addCues(t,n,s,_,w){let I=!1;for(let j=w.length;j--;){const Q=w[j],K=Gf(Q[0],Q[1],n,s);if(K>=0&&(Q[0]=Math.min(Q[0],n),Q[1]=Math.max(Q[1],s),I=!0,K/(s-n)>.5))return}if(I||w.push([n,s]),this.config.renderTextTracksNatively){const j=this.captionsTracks[t];this.Cues.newCue(j,n,s,_)}else{const j=this.Cues.newCue(null,n,s,_);this.hls.trigger(u.CUES_PARSED,{type:"captions",cues:j,track:t})}}onInitPtsFound(t,{frag:n,id:s,initPTS:_,timescale:w,trackId:I}){const{unparsedVttFrags:j}=this;s===o.MAIN&&(this.initPTS[n.cc]={baseTime:_,timescale:w,trackId:I}),j.length&&(this.unparsedVttFrags=[],j.forEach(Q=>{this.initPTS[Q.frag.cc]?this.onFragLoaded(u.FRAG_LOADED,Q):this.hls.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:Q.frag,error:new Error("Subtitle discontinuity domain does not match main")})}))}getExistingTrack(t,n){const{media:s}=this;if(s)for(let _=0;_{Js(_[w]),delete _[w]}),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=y(),this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:t}=this;if(!t)return;const n=t.textTracks;if(n)for(let s=0;sw.textCodec===eu);if(this.config.enableWebVTT||_&&this.config.enableIMSC1){if(Of(this.tracks,s)){this.tracks=s;return}if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const I=this.media,j=I?rc(I.textTracks):null;if(this.tracks.forEach((Q,K)=>{let se;if(j){let de=null;for(let xe=0;xeK!==null).map(K=>K.label);Q.length&&this.hls.logger.warn(`Media element contains unused subtitle tracks: ${Q.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const I=this.tracks.map(j=>({label:j.name,kind:j.type.toLowerCase(),default:j.default,subtitleTrack:j}));this.hls.trigger(u.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:I})}}}onManifestLoaded(t,n){this.config.enableCEA708Captions&&n.captions&&n.captions.forEach(s=>{const _=/(?:CC|SERVICE)([1-4])/.exec(s.instreamId);if(!_)return;const w=`textTrack${_[1]}`,I=this.captionsProperties[w];I&&(I.label=s.name,s.lang&&(I.languageCode=s.lang),I.media=s)})}closedCaptionsForLevel(t){const n=this.hls.levels[t.level];return n==null?void 0:n.attrs["CLOSED-CAPTIONS"]}onFragLoading(t,n){if(this.enabled&&n.frag.type===o.MAIN){var s,_;const{cea608Parser1:w,cea608Parser2:I,lastSn:j}=this,{cc:Q,sn:K}=n.frag,se=(s=(_=n.part)==null?void 0:_.index)!=null?s:-1;w&&I&&(K!==j+1||K===j&&se!==this.lastPartIndex+1||Q!==this.lastCc)&&(w.reset(),I.reset()),this.lastCc=Q,this.lastSn=K,this.lastPartIndex=se}}onFragLoaded(t,n){const{frag:s,payload:_}=n;if(s.type===o.SUBTITLE)if(_.byteLength){const w=s.decryptdata,I="stats"in n;if(w==null||!w.encrypted||I){const j=this.tracks[s.level],Q=this.vttCCs;Q[s.cc]||(Q[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),j&&j.textCodec===eu?this._parseIMSC1(s,_):this._parseVTTs(n)}}else this.hls.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(t,n){const s=this.hls;Bc(n,this.initPTS[t.cc],_=>{this._appendCues(_,t.level),s.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})},_=>{s.logger.log(`Failed to parse IMSC1: ${_}`),s.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,error:_})})}_parseVTTs(t){var n;const{frag:s,payload:_}=t,{initPTS:w,unparsedVttFrags:I}=this,j=w.length-1;if(!w[s.cc]&&j===-1){I.push(t);return}const Q=this.hls,K=(n=s.initSegment)!=null&&n.data?Qt(s.initSegment.data,new Uint8Array(_)).buffer:_;Fc(K,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,se=>{this._appendCues(se,s.level),Q.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})},se=>{const de=se.message==="Missing initPTS for VTT MPEGTS";de?I.push(t):this._fallbackToIMSC1(s,_),Q.logger.log(`Failed to parse VTT cue: ${se}`),!(de&&j>s.cc)&&Q.trigger(u.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:se})})}_fallbackToIMSC1(t,n){const s=this.tracks[t.level];s.textCodec||Bc(n,this.initPTS[t.cc],()=>{s.textCodec=eu,this._parseIMSC1(t,n)},()=>{s.textCodec="wvtt"})}_appendCues(t,n){const s=this.hls;if(this.config.renderTextTracksNatively){const _=this.textTracks[n];if(!_||_.mode==="disabled")return;t.forEach(w=>Ks(_,w))}else{const _=this.tracks[n];if(!_)return;const w=_.default?"default":"subtitles"+n;s.trigger(u.CUES_PARSED,{type:"subtitles",cues:t,track:w})}}onFragDecrypted(t,n){const{frag:s}=n;s.type===o.SUBTITLE&&this.onFragLoaded(u.FRAG_LOADED,n)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(t,n){if(!this.enabled||!this.config.enableCEA708Captions)return;const{frag:s,samples:_}=n;if(!(s.type===o.MAIN&&this.closedCaptionsForLevel(s)==="NONE"))for(let w=0;w<_.length;w++){const I=_[w].bytes;if(I){this.cea608Parser1||this.initCea608Parsers();const j=this.extractCea608Data(I);this.cea608Parser1.addData(_[w].pts,j[0]),this.cea608Parser2.addData(_[w].pts,j[1])}}}onBufferFlushing(t,{startOffset:n,endOffset:s,endOffsetSubtitles:_,type:w}){const{media:I}=this;if(!(!I||I.currentTimecu(j[Q],n,s))}if(this.config.renderTextTracksNatively&&n===0&&_!==void 0){const{textTracks:j}=this;Object.keys(j).forEach(Q=>cu(j[Q],n,_))}}}extractCea608Data(t){const n=[[],[]],s=t[0]&31;let _=2;for(let w=0;w=16?Q--:Q++;const ke=fl(K.trim()),Re=sf(t,n,ke);k!=null&&(de=k.cues)!=null&&de.getCueById(Re)||(I=new se(t,n,ke),I.id=Re,I.line=xe+1,I.align="left",I.position=10+Math.min(80,Math.floor(Q*8/32)*10),_.push(I))}return k&&_.length&&(_.sort((xe,ke)=>xe.line==="auto"||ke.line==="auto"?0:xe.line>8&&ke.line>8?ke.line-xe.line:xe.line-ke.line),_.forEach(xe=>Ks(k,xe))),_}};function ge(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(k){}return!1}const De=/(\d+)-(\d+)\/(\d+)/;class rt{constructor(t){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=t.fetchSetup||gn,this.controller=new self.AbortController,this.stats=new z}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var t;this.abortInternal(),(t=this.callbacks)!=null&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(t,n,s){const _=this.stats;if(_.loading.start)throw new Error("Loader can only be used once.");_.loading.start=self.performance.now();const w=Ht(t,this.controller.signal),I=t.responseType==="arraybuffer",j=I?"byteLength":"length",{maxTimeToFirstByteMs:Q,maxLoadTimeMs:K}=n.loadPolicy;this.context=t,this.config=n,this.callbacks=s,this.request=this.fetchSetup(t,w),self.clearTimeout(this.requestTimeout),n.timeout=Q&&r(Q)?Q:K,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(_,t,this.response))},n.timeout),(ho(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then(de=>{var xe;this.response=this.loader=de;const ke=Math.max(self.performance.now(),_.loading.start);if(self.clearTimeout(this.requestTimeout),n.timeout=K,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(_,t,this.response))},K-(ke-_.loading.start)),!de.ok){const{status:at,statusText:it}=de;throw new ki(it||"fetch, bad network response",at,de)}_.loading.first=ke,_.total=Lr(de.headers)||_.total;const Re=(xe=this.callbacks)==null?void 0:xe.onProgress;return Re&&r(n.highWaterMark)?this.loadProgressively(de,_,t,n.highWaterMark,Re):I?de.arrayBuffer():t.responseType==="json"?de.json():de.text()}).then(de=>{var xe,ke;const Re=this.response;if(!Re)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),_.loading.end=Math.max(self.performance.now(),_.loading.first);const at=de[j];at&&(_.loaded=_.total=at);const it={url:Re.url,data:de,code:Re.status},Xt=(xe=this.callbacks)==null?void 0:xe.onProgress;Xt&&!r(n.highWaterMark)&&Xt(_,t,de,Re),(ke=this.callbacks)==null||ke.onSuccess(it,_,t,Re)}).catch(de=>{var xe;if(self.clearTimeout(this.requestTimeout),_.aborted)return;const ke=de&&de.code||0,Re=de?de.message:null;(xe=this.callbacks)==null||xe.onError({code:ke,text:Re},t,de?de.details:null,_)})}getCacheAge(){let t=null;if(this.response){const n=this.response.headers.get("age");t=n?parseFloat(n):null}return t}getResponseHeader(t){return this.response?this.response.headers.get(t):null}loadProgressively(t,n,s,_=0,w){const I=new Sr,j=t.body.getReader(),Q=()=>j.read().then(K=>{if(K.done)return I.dataLength&&w(n,s,I.flush().buffer,t),Promise.resolve(new ArrayBuffer(0));const se=K.value,de=se.length;return n.loaded+=de,de<_||I.dataLength?(I.push(se),I.dataLength>=_&&w(n,s,I.flush().buffer,t)):w(n,s,se.buffer,t),Q()}).catch(()=>Promise.reject());return Q()}}function Ht(k,t){const n={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(v({},k.headers))};return k.rangeEnd&&n.headers.set("Range","bytes="+k.rangeStart+"-"+String(k.rangeEnd-1)),n}function dr(k){const t=De.exec(k);if(t)return parseInt(t[2])-parseInt(t[1])+1}function Lr(k){const t=k.get("Content-Range");if(t){const s=dr(t);if(r(s))return s}const n=k.get("Content-Length");if(n)return parseInt(n)}function gn(k,t){return new self.Request(k.url,t)}class ki extends Error{constructor(t,n,s){super(t),this.code=void 0,this.details=void 0,this.code=n,this.details=s}}const Ua=/^age:\s*[\d.]+\s*$/im;class Vn{constructor(t){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=t&&t.xhrSetup||null,this.stats=new z,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const t=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),t&&(t.onreadystatechange=null,t.onprogress=null,t.readyState!==4&&(this.stats.aborted=!0,t.abort()))}abort(){var t;this.abortInternal(),(t=this.callbacks)!=null&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(t,n,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=t,this.config=n,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:t,context:n}=this;if(!t||!n)return;const s=this.loader=new self.XMLHttpRequest,_=this.stats;_.loading.first=0,_.loaded=0,_.aborted=!1;const w=this.xhrSetup;w?Promise.resolve().then(()=>{if(!(this.loader!==s||this.stats.aborted))return w(s,n.url)}).catch(I=>{if(!(this.loader!==s||this.stats.aborted))return s.open("GET",n.url,!0),w(s,n.url)}).then(()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,n,t)}).catch(I=>{var j;(j=this.callbacks)==null||j.onError({code:s.status,text:I.message},n,s,_)}):this.openAndSendXhr(s,n,t)}openAndSendXhr(t,n,s){t.readyState||t.open("GET",n.url,!0);const _=n.headers,{maxTimeToFirstByteMs:w,maxLoadTimeMs:I}=s.loadPolicy;if(_)for(const j in _)t.setRequestHeader(j,_[j]);n.rangeEnd&&t.setRequestHeader("Range","bytes="+n.rangeStart+"-"+(n.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=n.responseType,self.clearTimeout(this.requestTimeout),s.timeout=w&&r(w)?w:I,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),t.send()}readystatechange(){const{context:t,loader:n,stats:s}=this;if(!t||!n)return;const _=n.readyState,w=this.config;if(!s.aborted&&_>=2&&(s.loading.first===0&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),w.timeout!==w.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),w.timeout=w.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),w.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),_===4)){self.clearTimeout(this.requestTimeout),n.onreadystatechange=null,n.onprogress=null;const K=n.status,se=n.responseType==="text"?n.responseText:null;if(K>=200&&K<300){const Re=se!=null?se:n.response;if(Re!=null){var I,j;s.loading.end=Math.max(self.performance.now(),s.loading.first);const at=n.responseType==="arraybuffer"?Re.byteLength:Re.length;s.loaded=s.total=at,s.bwEstimate=s.total*8e3/(s.loading.end-s.loading.first);const it=(I=this.callbacks)==null?void 0:I.onProgress;it&&it(s,t,Re,n);const Xt={url:n.responseURL,data:Re,code:K};(j=this.callbacks)==null||j.onSuccess(Xt,s,t,n);return}}const de=w.loadPolicy.errorRetry,xe=s.retry,ke={url:t.url,data:void 0,code:K};if(ct(de,xe,!1,ke))this.retry(de);else{var Q;$.error(`${K} while loading ${t.url}`),(Q=this.callbacks)==null||Q.onError({code:K,text:n.statusText},t,n,s)}}}loadtimeout(){if(!this.config)return;const t=this.config.loadPolicy.timeoutRetry,n=this.stats.retry;if(ct(t,n,!0))this.retry(t);else{var s;$.warn(`timeout while loading ${(s=this.context)==null?void 0:s.url}`);const _=this.callbacks;_&&(this.abortInternal(),_.onTimeout(this.stats,this.context,this.loader))}}retry(t){const{context:n,stats:s}=this;this.retryDelay=qn(t,s.retry),s.retry++,$.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${n==null?void 0:n.url}, retrying ${s.retry}/${t.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(t){const n=this.stats;n.loaded=t.loaded,t.lengthComputable&&(n.total=t.total)}getCacheAge(){let t=null;if(this.loader&&Ua.test(this.loader.getAllResponseHeaders())){const n=this.loader.getResponseHeader("age");t=n?parseFloat(n):null}return t}getResponseHeader(t){return this.loader&&new RegExp(`^${t}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(t):null}}const fa={maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null},za=b(b({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:Number.POSITIVE_INFINITY,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,startOnSegmentBoundary:!1,maxBufferSize:60*1e3*1e3,maxFragLookUpTolerance:.25,maxBufferHole:.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,ignorePlaylistParsingErrors:!1,loader:Vn,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:me,bufferController:Mo,capLevelController:Bl,errorController:$r,fpsController:Fo,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:pu,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,useMediaCapabilities:!0,preserveManualLevelOnError:!1,certLoadPolicy:{default:fa},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:3e4,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},Ra()),{},{subtitleStreamController:Pl,subtitleTrackController:Lc,timelineController:ad,audioStreamController:Lo,audioTrackController:wl,emeController:tn,cmcdController:P,contentSteeringController:L,interstitialsController:wf});function Ra(){return{cueHandler:U,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function sn(k,t,n){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(t.liveMaxLatencyDurationCount!==void 0&&(t.liveSyncDurationCount===void 0||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(t.liveMaxLatencyDuration!==void 0&&(t.liveSyncDuration===void 0||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=Ur(k),_=["manifest","level","frag"],w=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return _.forEach(I=>{const j=`${I==="level"?"playlist":I}LoadPolicy`,Q=t[j]===void 0,K=[];w.forEach(se=>{const de=`${I}Loading${se}`,xe=t[de];if(xe!==void 0&&Q){K.push(de);const ke=s[j].default;switch(t[j]={default:ke},se){case"TimeOut":ke.maxLoadTimeMs=xe,ke.maxTimeToFirstByteMs=xe;break;case"MaxRetry":ke.errorRetry.maxNumRetry=xe,ke.timeoutRetry.maxNumRetry=xe;break;case"RetryDelay":ke.errorRetry.retryDelayMs=xe,ke.timeoutRetry.retryDelayMs=xe;break;case"MaxRetryTimeout":ke.errorRetry.maxRetryDelayMs=xe,ke.timeoutRetry.maxRetryDelayMs=xe;break}}}),K.length&&n.warn(`hls.js config: "${K.join('", "')}" setting(s) are deprecated, use "${j}": ${zi(t[j])}`)}),b(b({},s),t)}function Ur(k){return k&&typeof k=="object"?Array.isArray(k)?k.map(Ur):Object.keys(k).reduce((t,n)=>(t[n]=Ur(k[n]),t),{}):k}function an(k,t){const n=k.loader;n!==rt&&n!==Vn?(t.log("[config]: Custom loader detected, cannot enable progressive streaming"),k.progressive=!1):ge()&&(k.loader=rt,k.progressive=!0,k.enableSoftwareAES=!0,t.log("[config]: Progressive streaming enabled, using FetchLoader"))}const On=2,zn=.1,Xa=.05,Ki=100;class Qa extends to{constructor(t,n){super("gap-controller",t.logger),this.hls=void 0,this.fragmentTracker=void 0,this.media=null,this.mediaSource=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.buffered={},this.lastCurrentTime=0,this.ended=0,this.waiting=0,this.onMediaPlaying=()=>{this.ended=0,this.waiting=0},this.onMediaWaiting=()=>{var s;(s=this.media)!=null&&s.seeking||(this.waiting=self.performance.now(),this.tick())},this.onMediaEnded=()=>{if(this.hls){var s;this.ended=((s=this.media)==null?void 0:s.currentTime)||1,this.hls.trigger(u.MEDIA_ENDED,{stalled:!1})}},this.hls=t,this.fragmentTracker=n,this.registerListeners()}registerListeners(){const{hls:t}=this;t&&(t.on(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.BUFFER_APPENDED,this.onBufferAppended,this))}unregisterListeners(){const{hls:t}=this;t&&(t.off(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.BUFFER_APPENDED,this.onBufferAppended,this))}destroy(){super.destroy(),this.unregisterListeners(),this.media=this.hls=this.fragmentTracker=null,this.mediaSource=void 0}onMediaAttached(t,n){this.setInterval(Ki),this.mediaSource=n.mediaSource;const s=this.media=n.media;ja(s,"playing",this.onMediaPlaying),ja(s,"waiting",this.onMediaWaiting),ja(s,"ended",this.onMediaEnded)}onMediaDetaching(t,n){this.clearInterval();const{media:s}=this;s&&(fs(s,"playing",this.onMediaPlaying),fs(s,"waiting",this.onMediaWaiting),fs(s,"ended",this.onMediaEnded),this.media=null),this.mediaSource=void 0}onBufferAppended(t,n){this.buffered=n.timeRanges}get hasBuffered(){return Object.keys(this.buffered).length>0}tick(){var t;if(!((t=this.media)!=null&&t.readyState)||!this.hasBuffered)return;const n=this.media.currentTime;this.poll(n,this.lastCurrentTime),this.lastCurrentTime=n}poll(t,n){var s,_;const w=(s=this.hls)==null?void 0:s.config;if(!w)return;const I=this.media;if(!I)return;const{seeking:j}=I,Q=this.seeking&&!j,K=!this.seeking&&j,se=I.paused&&!j||I.ended||I.playbackRate===0;if(this.seeking=j,t!==n){n&&(this.ended=0),this.moved=!0,j||(this.nudgeRetry=0,w.nudgeOnVideoHole&&!se&&t>n&&this.nudgeOnVideoHole(t,n)),this.waiting===0&&this.stallResolved(t);return}if(K||Q){Q&&this.stallResolved(t);return}if(se){this.nudgeRetry=0,this.stallResolved(t),!this.ended&&I.ended&&this.hls&&(this.ended=t||1,this.hls.trigger(u.MEDIA_ENDED,{stalled:!1}));return}if(!mi.getBuffered(I).length){this.nudgeRetry=0;return}const de=mi.bufferInfo(I,t,0),xe=de.nextStart||0,ke=this.fragmentTracker;if(j&&ke&&this.hls){const vn=ms(this.hls.inFlightFragments,t),Zr=de.len>On,fn=!xe||vn||xe-t>On&&!ke.getPartialFragment(t);if(Zr||fn)return;this.moved=!1}const Re=(_=this.hls)==null?void 0:_.latestLevelDetails;if(!this.moved&&this.stalled!==null&&ke){if(!(de.len>0)&&!xe)return;const Zr=Math.max(xe,de.start||0)-t,ln=!!(Re!=null&&Re.live)?Re.targetduration*2:On,Qr=Kl(t,ke);if(Zr>0&&(Zr<=ln||Qr)){I.paused||this._trySkipBufferHole(Qr);return}}const at=w.detectStallWithCurrentTimeMs,it=self.performance.now(),Xt=this.waiting;let ar=this.stalled;if(ar===null)if(Xt>0&&it-Xt=at||Xt)&&this.hls){var Ar;if(((Ar=this.mediaSource)==null?void 0:Ar.readyState)==="ended"&&!(Re!=null&&Re.live)&&Math.abs(t-((Re==null?void 0:Re.edge)||0))<1){if(this.ended)return;this.ended=t||1,this.hls.trigger(u.MEDIA_ENDED,{stalled:!0});return}if(this._reportStall(de),!this.media||!this.hls)return}const zr=mi.bufferInfo(I,t,w.maxBufferHole);this._tryFixBufferStall(zr,lr,t)}stallResolved(t){const n=this.stalled;if(n&&this.hls&&(this.stalled=null,this.stallReported)){const s=self.performance.now()-n;this.log(`playback not stuck anymore @${t}, after ${Math.round(s)}ms`),this.stallReported=!1,this.waiting=0,this.hls.trigger(u.STALL_RESOLVED,{})}}nudgeOnVideoHole(t,n){var s;const _=this.buffered.video;if(this.hls&&this.media&&this.fragmentTracker&&(s=this.buffered.audio)!=null&&s.length&&_&&_.length>1&&t>_.end(0)){const w=mi.bufferedInfo(mi.timeRangesToArray(this.buffered.audio),t,0);if(w.len>1&&n>=w.start){const I=mi.timeRangesToArray(_),j=mi.bufferedInfo(I,n,0).bufferedIndex;if(j>-1&&jj)&&se-K<1&&t-K<2){const de=new Error(`nudging playhead to flush pipeline after video hole. currentTime: ${t} hole: ${K} -> ${se} buffered index: ${Q}`);this.warn(de.message),this.media.currentTime+=1e-6;let xe=Kl(t,this.fragmentTracker);xe&&"fragment"in xe?xe=xe.fragment:xe||(xe=void 0);const ke=mi.bufferInfo(this.media,t,0);this.hls.trigger(u.ERROR,{type:c.MEDIA_ERROR,details:f.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:de,reason:de.message,frag:xe,buffer:ke.len,bufferInfo:ke})}}}}}_tryFixBufferStall(t,n,s){var _,w;const{fragmentTracker:I,media:j}=this,Q=(_=this.hls)==null?void 0:_.config;if(!j||!I||!Q)return;const K=(w=this.hls)==null?void 0:w.latestLevelDetails,se=Kl(s,I);if((se||K!=null&&K.live&&s1&&t.len>Q.maxBufferHole||t.nextStart&&(t.nextStart-sQ.highBufferWatchdogPeriod*1e3||this.waiting)&&(this.warn("Trying to nudge playhead over buffer-hole"),this._tryNudgeBuffer(t))}adjacentTraversal(t,n){const s=this.fragmentTracker,_=t.nextStart;if(s&&_){const w=s.getFragAtPos(n,o.MAIN),I=s.getFragAtPos(_,o.MAIN);if(w&&I)return I.sn-w.sn<2}return!1}_reportStall(t){const{hls:n,media:s,stallReported:_,stalled:w}=this;if(!_&&w!==null&&s&&n){this.stallReported=!0;const I=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${zi(t)})`);this.warn(I.message),n.trigger(u.ERROR,{type:c.MEDIA_ERROR,details:f.BUFFER_STALLED_ERROR,fatal:!1,error:I,buffer:t.len,bufferInfo:t,stalled:{start:w}})}}_trySkipBufferHole(t){var n;const{fragmentTracker:s,media:_}=this,w=(n=this.hls)==null?void 0:n.config;if(!_||!s||!w)return 0;const I=_.currentTime,j=mi.bufferInfo(_,I,0),Q=I0&&j.len<1&&_.readyState<3,xe=Q-I;if(xe>0&&(se||de)){if(xe>w.maxBufferHole){let Re=!1;if(I===0){const at=s.getAppendedFrag(0,o.MAIN);at&&Q{const k=od();try{k&&new k(0,Number.POSITIVE_INFINITY,"")}catch(t){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();class Sd{constructor(t){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.removeCues=!0,this.assetCue=void 0,this.onEventCueEnter=()=>{this.hls&&this.hls.trigger(u.EVENT_CUE_ENTER,{})},this.hls=t,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=this.onEventCueEnter=null}_registerListeners(){const{hls:t}=this;t&&(t.on(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.on(u.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(u.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}_unregisterListeners(){const{hls:t}=this;t&&(t.off(u.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.off(u.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(u.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}onMediaAttaching(t,n){var s;this.media=n.media,((s=n.overrides)==null?void 0:s.cueRemoval)===!1&&(this.removeCues=!1)}onMediaAttached(){var t;const n=(t=this.hls)==null?void 0:t.latestLevelDetails;n&&this.updateDateRangeCues(n)}onMediaDetaching(t,n){this.media=null,!n.transferMedia&&(this.id3Track&&(this.removeCues&&Js(this.id3Track,this.onEventCueEnter),this.id3Track=null),this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(t){const n=this.getID3Track(t.textTracks);return n.mode="hidden",n}getID3Track(t){if(this.media){for(let n=0;ned&&(de=ed),de-se<=0&&(de=se+sd);for(let ke=0;kese.type===yn.audioId3&&Q:_==="video"?K=se=>se.type===yn.emsg&&j:K=se=>se.type===yn.audioId3&&Q||se.type===yn.emsg&&j,cu(w,n,s,K)}}onLevelUpdated(t,{details:n}){this.updateDateRangeCues(n,!0)}onLevelPtsUpdated(t,n){Math.abs(n.drift)>.01&&this.updateDateRangeCues(n.details)}updateDateRangeCues(t,n){if(!this.hls||!this.media)return;const{assetPlayerId:s,timelineOffset:_,enableDateRangeMetadataCues:w,interstitialsController:I}=this.hls.config;if(!w)return;const j=od();if(s&&_&&!I){const{fragmentStart:at,fragmentEnd:it}=t;let Xt=this.assetCue;Xt?(Xt.startTime=at,Xt.endTime=it):j&&(Xt=this.assetCue=ud(j,at,it,{assetPlayerId:this.hls.config.assetPlayerId},"hlsjs.interstitial.asset"),Xt&&(Xt.id=s,this.id3Track||(this.id3Track=this.createTrack(this.media)),this.id3Track.addCue(Xt),Xt.addEventListener("enter",this.onEventCueEnter)))}if(!t.hasProgramDateTime)return;const{id3Track:Q}=this,{dateRanges:K}=t,se=Object.keys(K);let de=this.dateRangeCuesAppended;if(Q&&n){var xe;if((xe=Q.cues)!=null&&xe.length){const at=Object.keys(de).filter(it=>!se.includes(it));for(let it=at.length;it--;){var ke;const Xt=at[it],ar=(ke=de[Xt])==null?void 0:ke.cues;delete de[Xt],ar&&Object.keys(ar).forEach(lr=>{const Ar=ar[lr];if(Ar){Ar.removeEventListener("enter",this.onEventCueEnter);try{Q.removeCue(Ar)}catch(zr){}}})}}else de=this.dateRangeCuesAppended={}}const Re=t.fragments[t.fragments.length-1];if(!(se.length===0||!r(Re==null?void 0:Re.programDateTime))){this.id3Track||(this.id3Track=this.createTrack(this.media));for(let at=0;at{if(Si!==Xt.id){const qi=K[Si];if(qi.class===Xt.class&&qi.startDate>Xt.startDate&&(!kn||Xt.startDate.01&&(Si.startTime=ar,Si.endTime=vn);else if(j){let qi=Xt.attr[kn];jo(kn)&&(qi=G(qi));const Ji=ud(j,ar,vn,{key:kn,data:qi},yn.dateRange);Ji&&(Ji.id=it,this.id3Track.addCue(Ji),Ar[kn]=Ji,I&&(kn==="X-ASSET-LIST"||kn==="X-ASSET-URL")&&Ji.addEventListener("enter",this.onEventCueEnter))}}de[it]={cues:Ar,dateRange:Xt,durationKnown:zr}}}}}class Ad{constructor(t){this.hls=void 0,this.config=void 0,this.media=null,this.currentTime=0,this.stallCount=0,this._latency=null,this._targetLatencyUpdated=!1,this.onTimeupdate=()=>{const{media:n}=this,s=this.levelDetails;if(!n||!s)return;this.currentTime=n.currentTime;const _=this.computeLatency();if(_===null)return;this._latency=_;const{lowLatencyMode:w,maxLiveSyncPlaybackRate:I}=this.config;if(!w||I===1||!s.live)return;const j=this.targetLatency;if(j===null)return;const Q=_-j,K=Math.min(this.maxLatency,j+s.targetduration);if(Q.05&&this.forwardBufferLength>1){const de=Math.min(2,Math.max(1,I)),xe=Math.round(2/(1+Math.exp(-.75*Q-this.edgeStalled))*20)/20,ke=Math.min(de,Math.max(1,xe));this.changeMediaPlaybackRate(n,ke)}else n.playbackRate!==1&&n.playbackRate!==0&&this.changeMediaPlaybackRate(n,1)},this.hls=t,this.config=t.config,this.registerListeners()}get levelDetails(){var t;return((t=this.hls)==null?void 0:t.latestLevelDetails)||null}get latency(){return this._latency||0}get maxLatency(){const{config:t}=this;if(t.liveMaxLatencyDuration!==void 0)return t.liveMaxLatencyDuration;const n=this.levelDetails;return n?t.liveMaxLatencyDurationCount*n.targetduration:0}get targetLatency(){const t=this.levelDetails;if(t===null||this.hls===null)return null;const{holdBack:n,partHoldBack:s,targetduration:_}=t,{liveSyncDuration:w,liveSyncDurationCount:I,lowLatencyMode:j}=this.config,Q=this.hls.userConfig;let K=j&&s||n;(this._targetLatencyUpdated||Q.liveSyncDuration||Q.liveSyncDurationCount||K===0)&&(K=w!==void 0?w:I*_);const se=_;return K+Math.min(this.stallCount*this.config.liveSyncOnStallIncrease,se)}set targetLatency(t){this.stallCount=0,this.config.liveSyncDuration=t,this._targetLatencyUpdated=!0}get liveSyncPosition(){const t=this.estimateLiveEdge(),n=this.targetLatency;if(t===null||n===null)return null;const s=this.levelDetails;if(s===null)return null;const _=s.edge,w=t-n-this.edgeStalled,I=_-s.totalduration,j=_-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(I,w),j)}get drift(){const t=this.levelDetails;return t===null?1:t.drift}get edgeStalled(){const t=this.levelDetails;if(t===null)return 0;const n=(this.config.lowLatencyMode&&t.partTarget||t.targetduration)*3;return Math.max(t.age-n,0)}get forwardBufferLength(){const{media:t}=this,n=this.levelDetails;if(!t||!n)return 0;const s=t.buffered.length;return(s?t.buffered.end(s-1):n.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.hls=null}registerListeners(){const{hls:t}=this;t&&(t.on(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(u.ERROR,this.onError,this))}unregisterListeners(){const{hls:t}=this;t&&(t.off(u.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(u.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(u.ERROR,this.onError,this))}onMediaAttached(t,n){this.media=n.media,this.media.addEventListener("timeupdate",this.onTimeupdate)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)}onManifestLoading(){this._latency=null,this.stallCount=0}onLevelUpdated(t,{details:n}){n.advanced&&this.onTimeupdate(),!n.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)}onError(t,n){var s;n.details===f.BUFFER_STALLED_ERROR&&(this.stallCount++,this.hls&&(s=this.levelDetails)!=null&&s.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))}changeMediaPlaybackRate(t,n){var s,_;t.playbackRate!==n&&((s=this.hls)==null||s.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(_=this.targetLatency)==null?void 0:_.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${t.playbackRate} to ${n}`),t.playbackRate=n)}estimateLiveEdge(){const t=this.levelDetails;return t===null?null:t.edge+t.age}computeLatency(){const t=this.estimateLiveEdge();return t===null?null:t-this.currentTime}}class Cd extends pc{constructor(t,n){super(t,"level-controller"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=n,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(u.LEVEL_LOADED,this.onLevelLoaded,this),t.on(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(u.FRAG_BUFFERED,this.onFragBuffered,this),t.on(u.ERROR,this.onError,this)}_unregisterListeners(){const{hls:t}=this;t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(u.LEVEL_LOADED,this.onLevelLoaded,this),t.off(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(u.FRAG_BUFFERED,this.onFragBuffered,this),t.off(u.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach(n=>{n.loadError=0,n.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(t,n){this.resetLevels()}onManifestLoaded(t,n){const s=this.hls.config.preferManagedMediaSource,_=[],w={},I={};let j=!1,Q=!1,K=!1;n.levels.forEach(se=>{const de=se.attrs;let{audioCodec:xe,videoCodec:ke}=se;xe&&(se.audioCodec=xe=ht(xe,s)||void 0),ke&&(ke=se.videoCodec=er(ke));const{width:Re,height:at,unknownCodecs:it}=se,Xt=(it==null?void 0:it.length)||0;if(j||(j=!!(Re&&at)),Q||(Q=!!ke),K||(K=!!xe),Xt||xe&&!this.isAudioSupported(xe)||ke&&!this.isVideoSupported(ke)){this.log(`Some or all CODECS not supported "${de.CODECS}"`);return}const{CODECS:ar,"FRAME-RATE":lr,"HDCP-LEVEL":Ar,"PATHWAY-ID":zr,RESOLUTION:vn,"VIDEO-RANGE":Zr}=de,ln=`${`${zr||"."}-`}${se.bitrate}-${vn}-${lr}-${ar}-${Zr}-${Ar}`;if(w[ln])if(w[ln].uri!==se.url&&!se.attrs["PATHWAY-ID"]){const Qr=I[ln]+=1;se.attrs["PATHWAY-ID"]=new Array(Qr+1).join(".");const kn=this.createLevel(se);w[ln]=kn,_.push(kn)}else w[ln].addGroupId("audio",de.AUDIO),w[ln].addGroupId("text",de.SUBTITLES);else{const Qr=this.createLevel(se);w[ln]=Qr,I[ln]=1,_.push(Qr)}}),this.filterAndSortMediaOptions(_,n,j,Q,K)}createLevel(t){const n=new pi(t),s=t.supplemental;if(s!=null&&s.videoCodec&&!this.isVideoSupported(s.videoCodec)){const _=new Error(`SUPPLEMENTAL-CODECS not supported "${s.videoCodec}"`);this.log(_.message),n.supportedResult=Bt(_,[])}return n}isAudioSupported(t){return Ae(t,"audio",this.hls.config.preferManagedMediaSource)}isVideoSupported(t){return Ae(t,"video",this.hls.config.preferManagedMediaSource)}filterAndSortMediaOptions(t,n,s,_,w){var I;let j=[],Q=[],K=t;const se=((I=n.stats)==null?void 0:I.parsing)||{};if((s||_)&&w&&(K=K.filter(({videoCodec:ar,videoRange:lr,width:Ar,height:zr})=>(!!ar||!!(Ar&&zr))&&Bi(lr))),K.length===0){Promise.resolve().then(()=>{if(this.hls){let ar="no level with compatible codecs found in manifest",lr=ar;n.levels.length&&(lr=`one or more CODECS in variant not supported: ${zi(n.levels.map(zr=>zr.attrs.CODECS).filter((zr,vn,Zr)=>Zr.indexOf(zr)===vn))}`,this.warn(lr),ar+=` (${lr})`);const Ar=new Error(ar);this.hls.trigger(u.ERROR,{type:c.MEDIA_ERROR,details:f.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:n.url,error:Ar,reason:lr})}}),se.end=performance.now();return}n.audioTracks&&(j=n.audioTracks.filter(ar=>!ar.audioCodec||this.isAudioSupported(ar.audioCodec)),hd(j)),n.subtitles&&(Q=n.subtitles,hd(Q));const de=K.slice(0);K.sort((ar,lr)=>{if(ar.attrs["HDCP-LEVEL"]!==lr.attrs["HDCP-LEVEL"])return(ar.attrs["HDCP-LEVEL"]||"")>(lr.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&ar.height!==lr.height)return ar.height-lr.height;if(ar.frameRate!==lr.frameRate)return ar.frameRate-lr.frameRate;if(ar.videoRange!==lr.videoRange)return ii.indexOf(ar.videoRange)-ii.indexOf(lr.videoRange);if(ar.videoCodec!==lr.videoCodec){const Ar=et(ar.videoCodec),zr=et(lr.videoCodec);if(Ar!==zr)return zr-Ar}if(ar.uri===lr.uri&&ar.codecSet!==lr.codecSet){const Ar=yt(ar.codecSet),zr=yt(lr.codecSet);if(Ar!==zr)return zr-Ar}return ar.averageBitrate!==lr.averageBitrate?ar.averageBitrate-lr.averageBitrate:0});let xe=de[0];if(this.steering&&(K=this.steering.filterParsedLevels(K),K.length!==de.length)){for(let ar=0;arAr&&Ar===this.hls.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=zr)}break}const Re=w&&!_,at=this.hls.config,it=!!(at.audioStreamController&&at.audioTrackController),Xt={levels:K,audioTracks:j,subtitleTracks:Q,sessionData:n.sessionData,sessionKeys:n.sessionKeys,firstLevel:this._firstLevel,stats:n.stats,audio:w,video:_,altAudio:it&&!Re&&j.some(ar=>!!ar.url)};se.end=performance.now(),this.hls.trigger(u.MANIFEST_PARSED,Xt)}get levels(){return this._levels.length===0?null:this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(t){const n=this._levels;if(n.length===0)return;if(t<0||t>=n.length){const se=new Error("invalid level idx"),de=t<0;if(this.hls.trigger(u.ERROR,{type:c.OTHER_ERROR,details:f.LEVEL_SWITCH_ERROR,level:t,fatal:de,error:se,reason:se.message}),de)return;t=Math.min(t,n.length-1)}const s=this.currentLevelIndex,_=this.currentLevel,w=_?_.attrs["PATHWAY-ID"]:void 0,I=n[t],j=I.attrs["PATHWAY-ID"];if(this.currentLevelIndex=t,this.currentLevel=I,s===t&&_&&w===j)return;this.log(`Switching to level ${t} (${I.height?I.height+"p ":""}${I.videoRange?I.videoRange+" ":""}${I.codecSet?I.codecSet+" ":""}@${I.bitrate})${j?" with Pathway "+j:""} from level ${s}${w?" with Pathway "+w:""}`);const Q={level:t,attrs:I.attrs,details:I.details,bitrate:I.bitrate,averageBitrate:I.averageBitrate,maxBitrate:I.maxBitrate,realBitrate:I.realBitrate,width:I.width,height:I.height,codecSet:I.codecSet,audioCodec:I.audioCodec,videoCodec:I.videoCodec,audioGroups:I.audioGroups,subtitleGroups:I.subtitleGroups,loaded:I.loaded,loadError:I.loadError,fragmentError:I.fragmentError,name:I.name,id:I.id,uri:I.uri,url:I.url,urlId:0,audioGroupIds:I.audioGroupIds,textGroupIds:I.textGroupIds};this.hls.trigger(u.LEVEL_SWITCHING,Q);const K=I.details;if(!K||K.live){const se=this.switchParams(I.uri,_==null?void 0:_.details,K);this.loadPlaylist(se)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(t){this.manualLevelIndex=t,this._startLevel===void 0&&(this._startLevel=t),t!==-1&&(this.level=t)}get firstLevel(){return this._firstLevel}set firstLevel(t){this._firstLevel=t}get startLevel(){if(this._startLevel===void 0){const t=this.hls.config.startLevel;return t!==void 0?t:this.hls.firstAutoLevel}return this._startLevel}set startLevel(t){this._startLevel=t}get pathways(){return this.steering?this.steering.pathways():[]}get pathwayPriority(){return this.steering?this.steering.pathwayPriority:null}set pathwayPriority(t){if(this.steering){const n=this.steering.pathways(),s=t.filter(_=>n.indexOf(_)!==-1);if(t.length<1){this.warn(`pathwayPriority ${t} should contain at least one pathway from list: ${n}`);return}this.steering.pathwayPriority=s}}onError(t,n){n.fatal||!n.context||n.context.type===h.LEVEL&&n.context.level===this.level&&this.checkRetry(n)}onFragBuffered(t,{frag:n}){if(n!==void 0&&n.type===o.MAIN){const s=n.elementaryStreams;if(!Object.keys(s).some(w=>!!s[w]))return;const _=this._levels[n.level];_!=null&&_.loadError&&(this.log(`Resetting level error count of ${_.loadError} on frag buffered`),_.loadError=0)}}onLevelLoaded(t,n){var s;const{level:_,details:w}=n,I=n.levelInfo;if(!I){var j;this.warn(`Invalid level index ${_}`),(j=n.deliveryDirectives)!=null&&j.skip&&(w.deltaUpdateFailed=!0);return}if(I===this.currentLevel||n.withoutMultiVariant){I.fragmentError===0&&(I.loadError=0);let Q=I.details;Q===n.details&&Q.advanced&&(Q=void 0),this.playlistLoaded(_,n,Q)}else(s=n.deliveryDirectives)!=null&&s.skip&&(w.deltaUpdateFailed=!0)}loadPlaylist(t){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel)&&this.scheduleLoading(this.currentLevel,t)}loadingPlaylist(t,n){super.loadingPlaylist(t,n);const s=this.getUrlWithDirectives(t.uri,n),_=this.currentLevelIndex,w=t.attrs["PATHWAY-ID"],I=t.details,j=I==null?void 0:I.age;this.log(`Loading level index ${_}${(n==null?void 0:n.msn)!==void 0?" at sn "+n.msn+" part "+n.part:""}${w?" Pathway "+w:""}${j&&I.live?" age "+j.toFixed(1)+(I.type?" "+I.type||0:""):""} ${s}`),this.hls.trigger(u.LEVEL_LOADING,{url:s,level:_,levelInfo:t,pathwayId:t.attrs["PATHWAY-ID"],id:0,deliveryDirectives:n||null})}get nextLoadLevel(){return this.manualLevelIndex!==-1?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(t){this.level=t,this.manualLevelIndex===-1&&(this.hls.nextAutoLevel=t)}removeLevel(t){var n;if(this._levels.length===1)return;const s=this._levels.filter((w,I)=>I!==t?!0:(this.steering&&this.steering.removeLevel(w),w===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,w.details&&w.details.fragments.forEach(j=>j.level=-1)),!1));hs(s),this._levels=s,this.currentLevelIndex>-1&&(n=this.currentLevel)!=null&&n.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.manualLevelIndex>-1&&(this.manualLevelIndex=this.currentLevelIndex);const _=s.length-1;this._firstLevel=Math.min(this._firstLevel,_),this._startLevel&&(this._startLevel=Math.min(this._startLevel,_)),this.hls.trigger(u.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(t,{levels:n}){this._levels=n}checkMaxAutoUpdated(){const{autoLevelCapping:t,maxAutoLevel:n,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==n&&(this._maxAutoLevel=n,this.hls.trigger(u.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:n,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function hd(k){const t={};k.forEach(n=>{const s=n.groupId||"";n.id=t[s]=t[s]||0,t[s]++})}function pd(){return self.SourceBuffer||self.WebKitSourceBuffer}function md(){if(!oe())return!1;const t=pd();return!t||t.prototype&&typeof t.prototype.appendBuffer=="function"&&typeof t.prototype.remove=="function"}function Td(){if(!md())return!1;const k=oe();return typeof(k==null?void 0:k.isTypeSupported)=="function"&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some(t=>k.isTypeSupported(je(t,"video")))||["mp4a.40.2","fLaC"].some(t=>k.isTypeSupported(je(t,"audio"))))}function Pd(){var k;const t=pd();return typeof(t==null||(k=t.prototype)==null?void 0:k.changeType)=="function"}const vd=100;class _d extends jt{constructor(t,n,s){super(t,n,s,"stream-controller",o.MAIN),this.audioCodecSwap=!1,this.level=-1,this._forceStartLoad=!1,this._hasEnoughToStart=!1,this.altAudio=0,this.audioOnly=!1,this.fragPlaying=null,this.fragLastKbps=0,this.couldBacktrack=!1,this.backtrackFragment=null,this.audioCodecSwitch=!1,this.videoBuffer=null,this.onMediaPlaying=()=>{this.tick()},this.onMediaSeeked=()=>{const _=this.media,w=_?_.currentTime:null;if(w===null||!r(w)||(this.log(`Media seeked to ${w.toFixed(3)}`),!this.getBufferedFrag(w)))return;const I=this.getFwdBufferInfoAtPos(_,w,o.MAIN,0);if(I===null||I.len===0){this.warn(`Main forward buffer length at ${w} on "seeked" event ${I?I.len:"empty"})`);return}this.tick()},this.registerListeners()}registerListeners(){super.registerListeners();const{hls:t}=this;t.on(u.MANIFEST_PARSED,this.onManifestParsed,this),t.on(u.LEVEL_LOADING,this.onLevelLoading,this),t.on(u.LEVEL_LOADED,this.onLevelLoaded,this),t.on(u.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),t.on(u.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),t.on(u.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),t.on(u.BUFFER_CREATED,this.onBufferCreated,this),t.on(u.BUFFER_FLUSHED,this.onBufferFlushed,this),t.on(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(u.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){super.unregisterListeners();const{hls:t}=this;t.off(u.MANIFEST_PARSED,this.onManifestParsed,this),t.off(u.LEVEL_LOADED,this.onLevelLoaded,this),t.off(u.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),t.off(u.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),t.off(u.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),t.off(u.BUFFER_CREATED,this.onBufferCreated,this),t.off(u.BUFFER_FLUSHED,this.onBufferFlushed,this),t.off(u.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(u.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this.onMediaPlaying=this.onMediaSeeked=null,this.unregisterListeners(),super.onHandlerDestroying()}startLoad(t,n){if(this.levels){const{lastCurrentTime:s,hls:_}=this;if(this.stopLoad(),this.setInterval(vd),this.level=-1,!this.startFragRequested){let w=_.startLevel;w===-1&&(_.config.testBandwidth&&this.levels.length>1?(w=0,this.bitrateTest=!0):w=_.firstAutoLevel),_.nextLoadLevel=w,this.level=_.loadLevel,this._hasEnoughToStart=!!n}s>0&&t===-1&&!n&&(this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`),t=s),this.state=Ie.IDLE,this.nextLoadPosition=this.lastCurrentTime=t+this.timelineOffset,this.startPosition=n?-1:t,this.tick()}else this._forceStartLoad=!0,this.state=Ie.STOPPED}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Ie.WAITING_LEVEL:{const{levels:t,level:n}=this,s=t==null?void 0:t[n],_=s==null?void 0:s.details;if(_&&(!_.live||this.levelLastLoaded===s&&!this.waitForLive(s))){if(this.waitForCdnTuneIn(_))break;this.state=Ie.IDLE;break}else if(this.hls.nextLoadLevel!==this.level){this.state=Ie.IDLE;break}break}case Ie.FRAG_LOADING_WAITING_RETRY:this.checkRetryDate();break}this.state===Ie.IDLE&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){var t;super.onTickEnd(),(t=this.media)!=null&&t.readyState&&this.media.seeking===!1&&(this.lastCurrentTime=this.media.currentTime),this.checkFragmentChanged()}doTickIdle(){const{hls:t,levelLastLoaded:n,levels:s,media:_}=this;if(n===null||!_&&!this.primaryPrefetch&&(this.startFragRequested||!t.config.startFragPrefetch)||this.altAudio&&this.audioOnly)return;const w=this.buffering?t.nextLoadLevel:t.loadLevel;if(!(s!=null&&s[w]))return;const I=s[w],j=this.getMainFwdBufferInfo();if(j===null)return;const Q=this.getLevelDetails();if(Q&&this._streamEnded(j,Q)){const at={};this.altAudio===2&&(at.type="video"),this.hls.trigger(u.BUFFER_EOS,at),this.state=Ie.ENDED;return}if(!this.buffering)return;t.loadLevel!==w&&t.manualLevel===-1&&this.log(`Adapting to level ${w} from level ${this.level}`),this.level=t.nextLoadLevel=w;const K=I.details;if(!K||this.state===Ie.WAITING_LEVEL||this.waitForLive(I)){this.level=w,this.state=Ie.WAITING_LEVEL,this.startFragRequested=!1;return}const se=j.len,de=this.getMaxBufferLength(I.maxBitrate);if(se>=de)return;this.backtrackFragment&&this.backtrackFragment.start>j.end&&(this.backtrackFragment=null);const xe=this.backtrackFragment?this.backtrackFragment.start:j.end;let ke=this.getNextFragment(xe,K);if(this.couldBacktrack&&!this.fragPrevious&&ke&&we(ke)&&this.fragmentTracker.getState(ke)!==pn.OK){var Re;const it=((Re=this.backtrackFragment)!=null?Re:ke).sn-K.startSN,Xt=K.fragments[it-1];Xt&&ke.cc===Xt.cc&&(ke=Xt,this.fragmentTracker.removeFragment(Xt))}else this.backtrackFragment&&j.len&&(this.backtrackFragment=null);if(ke&&this.isLoopLoading(ke,xe)){if(!ke.gap){const it=this.audioOnly&&!this.altAudio?ne.AUDIO:ne.VIDEO,Xt=(it===ne.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;Xt&&this.afterBufferFlushed(Xt,it,o.MAIN)}ke=this.getNextFragmentLoopLoading(ke,K,j,o.MAIN,de)}ke&&(ke.initSegment&&!ke.initSegment.data&&!this.bitrateTest&&(ke=ke.initSegment),this.loadFragment(ke,I,xe))}loadFragment(t,n,s){const _=this.fragmentTracker.getState(t);_===pn.NOT_LOADED||_===pn.PARTIAL?we(t)?this.bitrateTest?(this.log(`Fragment ${t.sn} of level ${t.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(t,n)):super.loadFragment(t,n,s):this._loadInitSegment(t,n):this.clearTrackerIfNeeded(t)}getBufferedFrag(t){return this.fragmentTracker.getBufferedFrag(t,o.MAIN)}followingBufferedFrag(t){return t?this.getBufferedFrag(t.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:t,media:n}=this;if(n!=null&&n.readyState){let s;const _=this.getAppendedFrag(n.currentTime);_&&_.start>1&&this.flushMainBuffer(0,_.start-1);const w=this.getLevelDetails();if(w!=null&&w.live){const j=this.getMainFwdBufferInfo();if(!j||j.len=I-n.maxFragLookUpTolerance&&w<=j;if(_!==null&&s.duration>_&&(w<_||!Q)){const se=n.liveMaxLatencyDuration!==void 0?n.liveMaxLatencyDuration:n.liveMaxLatencyDurationCount*t.targetduration;if((!Q&&s.readyState<4||w{this.hls&&this.hls.trigger(u.AUDIO_TRACK_SWITCHED,n)}),s.trigger(u.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null});return}s.trigger(u.AUDIO_TRACK_SWITCHED,n)}}onAudioTrackSwitched(t,n){const s=ut(n.url,this.hls);if(s){const _=this.videoBuffer;_&&this.mediaBuffer!==_&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=_)}this.altAudio=s?2:0,this.tick()}onBufferCreated(t,n){const s=n.tracks;let _,w,I=!1;for(const j in s){const Q=s[j];if(Q.id==="main"){if(w=j,_=Q,j==="video"){const K=s[j];K&&(this.videoBuffer=K.buffer)}}else I=!0}I&&_?(this.log(`Alternate track found, use ${w}.buffered to schedule main fragment loading`),this.mediaBuffer=_.buffer):this.mediaBuffer=this.media}onFragBuffered(t,n){const{frag:s,part:_}=n,w=s.type===o.MAIN;if(w){if(this.fragContextChanged(s)){this.warn(`Fragment ${s.sn}${_?" p: "+_.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),this.state===Ie.PARSED&&(this.state=Ie.IDLE);return}const j=_?_.stats:s.stats;this.fragLastKbps=Math.round(8*j.total/(j.buffering.end-j.loading.first)),we(s)&&(this.fragPrevious=s),this.fragBufferedComplete(s,_)}const I=this.media;I&&(!this._hasEnoughToStart&&mi.getBuffered(I).length&&(this._hasEnoughToStart=!0,this.seekToStartPos()),w&&this.tick())}get hasEnoughToStart(){return this._hasEnoughToStart}onError(t,n){var s;if(n.fatal){this.state=Ie.ERROR;return}switch(n.details){case f.FRAG_GAP:case f.FRAG_PARSING_ERROR:case f.FRAG_DECRYPT_ERROR:case f.FRAG_LOAD_ERROR:case f.FRAG_LOAD_TIMEOUT:case f.KEY_LOAD_ERROR:case f.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(o.MAIN,n);break;case f.LEVEL_LOAD_ERROR:case f.LEVEL_LOAD_TIMEOUT:case f.LEVEL_PARSING_ERROR:!n.levelRetry&&this.state===Ie.WAITING_LEVEL&&((s=n.context)==null?void 0:s.type)===h.LEVEL&&(this.state=Ie.IDLE);break;case f.BUFFER_ADD_CODEC_ERROR:case f.BUFFER_APPEND_ERROR:if(n.parent!=="main")return;this.reduceLengthAndFlushBuffer(n)&&this.resetLoadingState();break;case f.BUFFER_FULL_ERROR:if(n.parent!=="main")return;this.reduceLengthAndFlushBuffer(n)&&(!this.config.interstitialsController&&this.config.assetPlayerId?this._hasEnoughToStart=!0:this.flushMainBuffer(0,Number.POSITIVE_INFINITY));break;case f.INTERNAL_EXCEPTION:this.recoverWorkerError(n);break}}onFragLoadEmergencyAborted(){this.state=Ie.IDLE,this._hasEnoughToStart||(this.startFragRequested=!1,this.nextLoadPosition=this.lastCurrentTime),this.tickImmediate()}onBufferFlushed(t,{type:n}){if(n!==ne.AUDIO||!this.altAudio){const s=(n===ne.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;s&&(this.afterBufferFlushed(s,n,o.MAIN),this.tick())}}onLevelsUpdated(t,n){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level,this.level===-1&&this.resetWhenMissingContext(this.fragCurrent)),this.levels=n.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:t}=this;if(!t)return;const n=t.currentTime;let s=this.startPosition;if(s>=0&&n0&&(Q{const{hls:_}=this,w=s==null?void 0:s.frag;if(!w||this.fragContextChanged(w))return;n.fragmentError=0,this.state=Ie.IDLE,this.startFragRequested=!1,this.bitrateTest=!1;const I=w.stats;I.parsing.start=I.parsing.end=I.buffering.start=I.buffering.end=self.performance.now(),_.trigger(u.FRAG_LOADED,s),w.bitrateTest=!1}).catch(s=>{this.state===Ie.STOPPED||this.state===Ie.ERROR||(this.warn(s),this.resetFragmentLoading(t))})}_handleTransmuxComplete(t){const n=this.playlistType,{hls:s}=this,{remuxResult:_,chunkMeta:w}=t,I=this.getCurrentContext(w);if(!I){this.resetWhenMissingContext(w);return}const{frag:j,part:Q,level:K}=I,{video:se,text:de,id3:xe,initSegment:ke}=_,{details:Re}=K,at=this.altAudio?void 0:_.audio;if(this.fragContextChanged(j)){this.fragmentTracker.removeFragment(j);return}if(this.state=Ie.PARSING,ke){const it=ke.tracks;if(it){const Ar=j.initSegment||j;if(this.unhandledEncryptionError(ke,j))return;this._bufferInitSegment(K,it,Ar,w),s.trigger(u.FRAG_PARSING_INIT_SEGMENT,{frag:Ar,id:n,tracks:it})}const Xt=ke.initPTS,ar=ke.timescale,lr=this.initPTS[j.cc];if(r(Xt)&&(!lr||lr.baseTime!==Xt||lr.timescale!==ar)){const Ar=ke.trackId;this.initPTS[j.cc]={baseTime:Xt,timescale:ar,trackId:Ar},s.trigger(u.INIT_PTS_FOUND,{frag:j,id:n,initPTS:Xt,timescale:ar,trackId:Ar})}}if(se&&Re){at&&se.type==="audiovideo"&&this.logMuxedErr(j);const it=Re.fragments[j.sn-1-Re.startSN],Xt=j.sn===Re.startSN,ar=!it||j.cc>it.cc;if(_.independent!==!1){const{startPTS:lr,endPTS:Ar,startDTS:zr,endDTS:vn}=se;if(Q)Q.elementaryStreams[se.type]={startPTS:lr,endPTS:Ar,startDTS:zr,endDTS:vn};else if(se.firstKeyFrame&&se.independent&&w.id===1&&!ar&&(this.couldBacktrack=!0),se.dropped&&se.independent){const Zr=this.getMainFwdBufferInfo(),fn=(Zr?Zr.end:this.getLoadPosition())+this.config.maxBufferHole,ln=se.firstKeyFramePTS?se.firstKeyFramePTS:lr;if(!Xt&&fnOn&&(j.gap=!0);j.setElementaryStreamInfo(se.type,lr,Ar,zr,vn),this.backtrackFragment&&(this.backtrackFragment=j),this.bufferFragmentData(se,j,Q,w,Xt||ar)}else if(Xt||ar)j.gap=!0;else{this.backtrack(j);return}}if(at){const{startPTS:it,endPTS:Xt,startDTS:ar,endDTS:lr}=at;Q&&(Q.elementaryStreams[ne.AUDIO]={startPTS:it,endPTS:Xt,startDTS:ar,endDTS:lr}),j.setElementaryStreamInfo(ne.AUDIO,it,Xt,ar,lr),this.bufferFragmentData(at,j,Q,w)}if(Re&&xe!=null&&xe.samples.length){const it={id:n,frag:j,details:Re,samples:xe.samples};s.trigger(u.FRAG_PARSING_METADATA,it)}if(Re&&de){const it={id:n,frag:j,details:Re,samples:de.samples};s.trigger(u.FRAG_PARSING_USERDATA,it)}}logMuxedErr(t){this.warn(`${we(t)?"Media":"Init"} segment with muxed audiovideo where only video expected: ${t.url}`)}_bufferInitSegment(t,n,s,_){if(this.state!==Ie.PARSING)return;this.audioOnly=!!n.audio&&!n.video,this.altAudio&&!this.audioOnly&&(delete n.audio,n.audiovideo&&this.logMuxedErr(s));const{audio:w,video:I,audiovideo:j}=n;if(w){const K=t.audioCodec;let se=on(w.codec,K);se==="mp4a"&&(se="mp4a.40.5");const de=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){se&&(se.indexOf("mp4a.40.5")!==-1?se="mp4a.40.2":se="mp4a.40.5");const xe=w.metadata;xe&&"channelCount"in xe&&(xe.channelCount||1)!==1&&de.indexOf("firefox")===-1&&(se="mp4a.40.5")}se&&se.indexOf("mp4a.40.5")!==-1&&de.indexOf("android")!==-1&&w.container!=="audio/mpeg"&&(se="mp4a.40.2",this.log(`Android: force audio codec to ${se}`)),K&&K!==se&&this.log(`Swapping manifest audio codec "${K}" for "${se}"`),w.levelCodec=se,w.id=o.MAIN,this.log(`Init audio buffer, container:${w.container}, codecs[selected/level/parsed]=[${se||""}/${K||""}/${w.codec}]`),delete n.audiovideo}if(I){I.levelCodec=t.videoCodec,I.id=o.MAIN;const K=I.codec;if((K==null?void 0:K.length)===4)switch(K){case"hvc1":case"hev1":I.codec="hvc1.1.6.L120.90";break;case"av01":I.codec="av01.0.04M.08";break;case"avc1":I.codec="avc1.42e01e";break}this.log(`Init video buffer, container:${I.container}, codecs[level/parsed]=[${t.videoCodec||""}/${K}]${I.codec!==K?" parsed-corrected="+I.codec:""}${I.supplemental?" supplemental="+I.supplemental:""}`),delete n.audiovideo}j&&(this.log(`Init audiovideo buffer, container:${j.container}, codecs[level/parsed]=[${t.codecs}/${j.codec}]`),delete n.video,delete n.audio);const Q=Object.keys(n);if(Q.length){if(this.hls.trigger(u.BUFFER_CODECS,n),!this.hls)return;Q.forEach(K=>{const de=n[K].initSegment;de!=null&&de.byteLength&&this.hls.trigger(u.BUFFER_APPENDING,{type:K,data:de,frag:s,part:null,chunkMeta:_,parent:s.type})})}this.tickImmediate()}getMainFwdBufferInfo(){const t=this.mediaBuffer&&this.altAudio===2?this.mediaBuffer:this.media;return this.getFwdBufferInfo(t,o.MAIN)}get maxBufferLength(){const{levels:t,level:n}=this,s=t==null?void 0:t[n];return s?this.getMaxBufferLength(s.maxBitrate):this.config.maxBufferLength}backtrack(t){this.couldBacktrack=!0,this.backtrackFragment=t,this.resetTransmuxer(),this.flushBufferGap(t),this.fragmentTracker.removeFragment(t),this.fragPrevious=null,this.nextLoadPosition=t.start,this.state=Ie.IDLE}checkFragmentChanged(){const t=this.media;let n=null;if(t&&t.readyState>1&&t.seeking===!1){const s=t.currentTime;if(mi.isBuffered(t,s)?n=this.getAppendedFrag(s):mi.isBuffered(t,s+.1)&&(n=this.getAppendedFrag(s+.1)),n){this.backtrackFragment=null;const _=this.fragPlaying,w=n.level;(!_||n.sn!==_.sn||_.level!==w)&&(this.fragPlaying=n,this.hls.trigger(u.FRAG_CHANGED,{frag:n}),(!_||_.level!==w)&&this.hls.trigger(u.LEVEL_SWITCHED,{level:w}))}}}get nextLevel(){const t=this.nextBufferedFrag;return t?t.level:-1}get currentFrag(){var t;if(this.fragPlaying)return this.fragPlaying;const n=((t=this.media)==null?void 0:t.currentTime)||this.lastCurrentTime;return r(n)?this.getAppendedFrag(n):null}get currentProgramDateTime(){var t;const n=((t=this.media)==null?void 0:t.currentTime)||this.lastCurrentTime;if(r(n)){const s=this.getLevelDetails(),_=this.currentFrag||(s?hr(null,s.fragments,n):null);if(_){const w=_.programDateTime;if(w!==null){const I=w+(n-_.start)*1e3;return new Date(I)}}}return null}get currentLevel(){const t=this.currentFrag;return t?t.level:-1}get nextBufferedFrag(){const t=this.currentFrag;return t?this.followingBufferedFrag(t):null}get forceStartLoad(){return this._forceStartLoad}}class Id extends R{constructor(t,n){super("key-loader",n),this.config=void 0,this.keyIdToKeyInfo={},this.emeController=null,this.config=t}abort(t){for(const s in this.keyIdToKeyInfo){const _=this.keyIdToKeyInfo[s].loader;if(_){var n;if(t&&t!==((n=_.context)==null?void 0:n.frag.type))return;_.abort()}}}detach(){for(const t in this.keyIdToKeyInfo){const n=this.keyIdToKeyInfo[t];(n.mediaKeySessionContext||n.decryptdata.isCommonEncryption)&&delete this.keyIdToKeyInfo[t]}}destroy(){this.detach();for(const t in this.keyIdToKeyInfo){const n=this.keyIdToKeyInfo[t].loader;n&&n.destroy()}this.keyIdToKeyInfo={}}createKeyLoadError(t,n=f.KEY_LOAD_ERROR,s,_,w){return new ra({type:c.NETWORK_ERROR,details:n,fatal:!1,frag:t,response:w,error:s,networkDetails:_})}loadClear(t,n,s){if(this.emeController&&this.config.emeEnabled&&!this.emeController.getSelectedKeySystemFormats().length){if(n.length)for(let _=0,w=n.length;_{if(!this.emeController)return;I.setKeyFormat(j);const Q=Ko(j);if(Q)return this.emeController.getKeySystemAccess([Q])})}if(this.config.requireKeySystemAccessOnStart){const _=nu(this.config);if(_.length)return this.emeController.getKeySystemAccess(_)}}return null}load(t){return!t.decryptdata&&t.encrypted&&this.emeController&&this.config.emeEnabled?this.emeController.selectKeySystemFormat(t).then(n=>this.loadInternal(t,n)):this.loadInternal(t)}loadInternal(t,n){var s,_;n&&t.setKeyFormat(n);const w=t.decryptdata;if(!w){const K=new Error(n?`Expected frag.decryptdata to be defined after setting format ${n}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(this.createKeyLoadError(t,f.KEY_LOAD_ERROR,K))}const I=w.uri;if(!I)return Promise.reject(this.createKeyLoadError(t,f.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${I}"`)));const j=ld(w);let Q=this.keyIdToKeyInfo[j];if((s=Q)!=null&&s.decryptdata.key)return w.key=Q.decryptdata.key,Promise.resolve({frag:t,keyInfo:Q});if(this.emeController&&(_=Q)!=null&&_.keyLoadPromise)switch(this.emeController.getKeyStatus(Q.decryptdata)){case"usable":case"usable-in-future":return Q.keyLoadPromise.then(se=>{const{keyInfo:de}=se;return w.key=de.decryptdata.key,{frag:t,keyInfo:de}})}switch(this.log(`${this.keyIdToKeyInfo[j]?"Rel":"L"}oading${w.keyId?" keyId: "+Y(w.keyId):""} URI: ${w.uri} from ${t.type} ${t.level}`),Q=this.keyIdToKeyInfo[j]={decryptdata:w,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},w.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return w.keyFormat==="identity"?this.loadKeyHTTP(Q,t):this.loadKeyEME(Q,t);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(Q,t);default:return Promise.reject(this.createKeyLoadError(t,f.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${w.method}"`)))}}loadKeyEME(t,n){const s={frag:n,keyInfo:t};if(this.emeController&&this.config.emeEnabled){var _;if(!t.decryptdata.keyId&&(_=n.initSegment)!=null&&_.data){const I=Ct(n.initSegment.data);if(I.length){let j=I[0];j.some(Q=>Q!==0)?(this.log(`Using keyId found in init segment ${Y(j)}`),Ao.setKeyIdForUri(t.decryptdata.uri,j)):(j=Ao.addKeyIdForUri(t.decryptdata.uri),this.log(`Generating keyId to patch media ${Y(j)}`)),t.decryptdata.keyId=j}}if(!t.decryptdata.keyId&&!we(n))return Promise.resolve(s);const w=this.emeController.loadKey(s);return(t.keyLoadPromise=w.then(I=>(t.mediaKeySessionContext=I,s))).catch(I=>{throw t.keyLoadPromise=null,"data"in I&&(I.data.frag=n),I})}return Promise.resolve(s)}loadKeyHTTP(t,n){const s=this.config,_=s.loader,w=new _(s);return n.keyLoader=t.loader=w,t.keyLoadPromise=new Promise((I,j)=>{const Q={keyInfo:t,frag:n,responseType:"arraybuffer",url:t.decryptdata.uri},K=s.keyLoadPolicy.default,se={loadPolicy:K,timeout:K.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},de={onSuccess:(xe,ke,Re,at)=>{const{frag:it,keyInfo:Xt}=Re,ar=ld(Xt.decryptdata);if(!it.decryptdata||Xt!==this.keyIdToKeyInfo[ar])return j(this.createKeyLoadError(it,f.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),at));Xt.decryptdata.key=it.decryptdata.key=new Uint8Array(xe.data),it.keyLoader=null,Xt.loader=null,I({frag:it,keyInfo:Xt})},onError:(xe,ke,Re,at)=>{this.resetLoader(ke),j(this.createKeyLoadError(n,f.KEY_LOAD_ERROR,new Error(`HTTP Error ${xe.code} loading key ${xe.text}`),Re,b({url:Q.url,data:void 0},xe)))},onTimeout:(xe,ke,Re)=>{this.resetLoader(ke),j(this.createKeyLoadError(n,f.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),Re))},onAbort:(xe,ke,Re)=>{this.resetLoader(ke),j(this.createKeyLoadError(n,f.INTERNAL_ABORTED,new Error("key loading aborted"),Re))}};w.load(Q,se,de)})}resetLoader(t){const{frag:n,keyInfo:s,url:_}=t,w=s.loader;n.keyLoader===w&&(n.keyLoader=null,s.loader=null);const I=ld(s.decryptdata)||_;delete this.keyIdToKeyInfo[I],w&&w.destroy()}}function ld(k){if(k.keyFormat!==_s.FAIRPLAY){const t=k.keyId;if(t)return Y(t)}return k.uri}function gd(k){const{type:t}=k;switch(t){case h.AUDIO_TRACK:return o.AUDIO;case h.SUBTITLE_TRACK:return o.SUBTITLE;default:return o.MAIN}}function cd(k,t){let n=k.url;return(n===void 0||n.indexOf("data:")===0)&&(n=t.url),n}class td{constructor(t){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=t,this.registerListeners()}startLoad(t){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:t}=this;t.on(u.MANIFEST_LOADING,this.onManifestLoading,this),t.on(u.LEVEL_LOADING,this.onLevelLoading,this),t.on(u.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.on(u.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),t.on(u.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){const{hls:t}=this;t.off(u.MANIFEST_LOADING,this.onManifestLoading,this),t.off(u.LEVEL_LOADING,this.onLevelLoading,this),t.off(u.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.off(u.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),t.off(u.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(t){const n=this.hls.config,s=n.pLoader,_=n.loader,w=s||_,I=new w(n);return this.loaders[t.type]=I,I}getInternalLoader(t){return this.loaders[t.type]}resetInternalLoader(t){this.loaders[t]&&delete this.loaders[t]}destroyInternalLoaders(){for(const t in this.loaders){const n=this.loaders[t];n&&n.destroy(),this.resetInternalLoader(t)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(t,n){const{url:s}=n;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:h.MANIFEST,url:s,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(t,n){const{id:s,level:_,pathwayId:w,url:I,deliveryDirectives:j,levelInfo:Q}=n;this.load({id:s,level:_,pathwayId:w,responseType:"text",type:h.LEVEL,url:I,deliveryDirectives:j,levelOrTrack:Q})}onAudioTrackLoading(t,n){const{id:s,groupId:_,url:w,deliveryDirectives:I,track:j}=n;this.load({id:s,groupId:_,level:null,responseType:"text",type:h.AUDIO_TRACK,url:w,deliveryDirectives:I,levelOrTrack:j})}onSubtitleTrackLoading(t,n){const{id:s,groupId:_,url:w,deliveryDirectives:I,track:j}=n;this.load({id:s,groupId:_,level:null,responseType:"text",type:h.SUBTITLE_TRACK,url:w,deliveryDirectives:I,levelOrTrack:j})}onLevelsUpdated(t,n){const s=this.loaders[h.LEVEL];if(s){const _=s.context;_&&!n.levels.some(w=>w===_.levelOrTrack)&&(s.abort(),delete this.loaders[h.LEVEL])}}load(t){var n;const s=this.hls.config;let _=this.getInternalLoader(t);if(_){const K=this.hls.logger,se=_.context;if(se&&se.levelOrTrack===t.levelOrTrack&&(se.url===t.url||se.deliveryDirectives&&!t.deliveryDirectives)){se.url===t.url?K.log(`[playlist-loader]: ignore ${t.url} ongoing request`):K.log(`[playlist-loader]: ignore ${t.url} in favor of ${se.url}`);return}K.log(`[playlist-loader]: aborting previous loader for type: ${t.type}`),_.abort()}let w;if(t.type===h.MANIFEST?w=s.manifestLoadPolicy.default:w=v({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),_=this.createInternalLoader(t),r((n=t.deliveryDirectives)==null?void 0:n.part)){let K;if(t.type===h.LEVEL&&t.level!==null?K=this.hls.levels[t.level].details:t.type===h.AUDIO_TRACK&&t.id!==null?K=this.hls.audioTracks[t.id].details:t.type===h.SUBTITLE_TRACK&&t.id!==null&&(K=this.hls.subtitleTracks[t.id].details),K){const se=K.partTarget,de=K.targetduration;if(se&&de){const xe=Math.max(se*3,de*.8)*1e3;w=v({},w,{maxTimeToFirstByteMs:Math.min(xe,w.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(xe,w.maxTimeToFirstByteMs)})}}}const I=w.errorRetry||w.timeoutRetry||{},j={loadPolicy:w,timeout:w.maxLoadTimeMs,maxRetry:I.maxNumRetry||0,retryDelay:I.retryDelayMs||0,maxRetryDelay:I.maxRetryDelayMs||0},Q={onSuccess:(K,se,de,xe)=>{const ke=this.getInternalLoader(de);this.resetInternalLoader(de.type);const Re=K.data;se.parsing.start=performance.now(),su.isMediaPlaylist(Re)||de.type!==h.MANIFEST?this.handleTrackOrLevelPlaylist(K,se,de,xe||null,ke):this.handleMasterPlaylist(K,se,de,xe)},onError:(K,se,de,xe)=>{this.handleNetworkError(se,de,!1,K,xe)},onTimeout:(K,se,de)=>{this.handleNetworkError(se,de,!0,void 0,K)}};_.load(t,j,Q)}checkAutostartLoad(){if(!this.hls)return;const{config:{autoStartLoad:t,startPosition:n},forceStartLoad:s}=this.hls;(t||s)&&(this.hls.logger.log(`${t?"auto":"force"} startLoad with configured startPosition ${n}`),this.hls.startLoad(n))}handleMasterPlaylist(t,n,s,_){const w=this.hls,I=t.data,j=cd(t,s),Q=su.parseMasterPlaylist(I,j);if(Q.playlistParsingError){n.parsing.end=performance.now(),this.handleManifestParsingError(t,s,Q.playlistParsingError,_,n);return}const{contentSteering:K,levels:se,sessionData:de,sessionKeys:xe,startTimeOffset:ke,variableList:Re}=Q;this.variableList=Re,se.forEach(ar=>{const{unknownCodecs:lr}=ar;if(lr){const{preferManagedMediaSource:Ar}=this.hls.config;let{audioCodec:zr,videoCodec:vn}=ar;for(let Zr=lr.length;Zr--;){const fn=lr[Zr];Ae(fn,"audio",Ar)?(ar.audioCodec=zr=zr?`${zr},${fn}`:fn,Gt.audio[zr.substring(0,4)]=2,lr.splice(Zr,1)):Ae(fn,"video",Ar)&&(ar.videoCodec=vn=vn?`${vn},${fn}`:fn,Gt.video[vn.substring(0,4)]=2,lr.splice(Zr,1))}}});const{AUDIO:at=[],SUBTITLES:it,"CLOSED-CAPTIONS":Xt}=su.parseMasterPlaylistMedia(I,j,Q);at.length&&!at.some(lr=>!lr.url)&&se[0].audioCodec&&!se[0].attrs.AUDIO&&(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),at.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new Zi({}),bitrate:0,url:""})),w.trigger(u.MANIFEST_LOADED,{levels:se,audioTracks:at,subtitles:it,captions:Xt,contentSteering:K,url:j,stats:n,networkDetails:_,sessionData:de,sessionKeys:xe,startTimeOffset:ke,variableList:Re})}handleTrackOrLevelPlaylist(t,n,s,_,w){const I=this.hls,{id:j,level:Q,type:K}=s,se=cd(t,s),de=r(Q)?Q:r(j)?j:0,xe=gd(s),ke=su.parseLevelPlaylist(t.data,se,de,xe,0,this.variableList);if(K===h.MANIFEST){const Re={attrs:new Zi({}),bitrate:0,details:ke,name:"",url:se};ke.requestScheduled=n.loading.start+Pi(ke,0),I.trigger(u.MANIFEST_LOADED,{levels:[Re],audioTracks:[],url:se,stats:n,networkDetails:_,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}n.parsing.end=performance.now(),s.levelDetails=ke,this.handlePlaylistLoaded(ke,t,n,s,_,w)}handleManifestParsingError(t,n,s,_,w){this.hls.trigger(u.ERROR,{type:c.NETWORK_ERROR,details:f.MANIFEST_PARSING_ERROR,fatal:n.type===h.MANIFEST,url:t.url,err:s,error:s,reason:s.message,response:t,context:n,networkDetails:_,stats:w})}handleNetworkError(t,n,s=!1,_,w){let I=`A network ${s?"timeout":"error"+(_?" (status "+_.code+")":"")} occurred while loading ${t.type}`;t.type===h.LEVEL?I+=`: ${t.level} id: ${t.id}`:(t.type===h.AUDIO_TRACK||t.type===h.SUBTITLE_TRACK)&&(I+=` id: ${t.id} group-id: "${t.groupId}"`);const j=new Error(I);this.hls.logger.warn(`[playlist-loader]: ${I}`);let Q=f.UNKNOWN,K=!1;const se=this.getInternalLoader(t);switch(t.type){case h.MANIFEST:Q=s?f.MANIFEST_LOAD_TIMEOUT:f.MANIFEST_LOAD_ERROR,K=!0;break;case h.LEVEL:Q=s?f.LEVEL_LOAD_TIMEOUT:f.LEVEL_LOAD_ERROR,K=!1;break;case h.AUDIO_TRACK:Q=s?f.AUDIO_TRACK_LOAD_TIMEOUT:f.AUDIO_TRACK_LOAD_ERROR,K=!1;break;case h.SUBTITLE_TRACK:Q=s?f.SUBTITLE_TRACK_LOAD_TIMEOUT:f.SUBTITLE_LOAD_ERROR,K=!1;break}se&&this.resetInternalLoader(t.type);const de={type:c.NETWORK_ERROR,details:Q,fatal:K,url:t.url,loader:se,context:t,error:j,networkDetails:n,stats:w};if(_){const xe=(n==null?void 0:n.url)||t.url;de.response=b({url:xe,data:void 0},_)}this.hls.trigger(u.ERROR,de)}handlePlaylistLoaded(t,n,s,_,w,I){const j=this.hls,{type:Q,level:K,levelOrTrack:se,id:de,groupId:xe,deliveryDirectives:ke}=_,Re=cd(n,_),at=gd(_);let it=typeof _.level=="number"&&at===o.MAIN?K:void 0;const Xt=t.playlistParsingError;if(Xt){if(this.hls.logger.warn(`${Xt} ${t.url}`),!j.config.ignorePlaylistParsingErrors){j.trigger(u.ERROR,{type:c.NETWORK_ERROR,details:f.LEVEL_PARSING_ERROR,fatal:!1,url:Re,error:Xt,reason:Xt.message,response:n,context:_,level:it,parent:at,networkDetails:w,stats:s});return}t.playlistParsingError=null}if(!t.fragments.length){const ar=t.playlistParsingError=new Error("No Segments found in Playlist");j.trigger(u.ERROR,{type:c.NETWORK_ERROR,details:f.LEVEL_EMPTY_ERROR,fatal:!1,url:Re,error:ar,reason:ar.message,response:n,context:_,level:it,parent:at,networkDetails:w,stats:s});return}switch(t.live&&I&&(I.getCacheAge&&(t.ageHeader=I.getCacheAge()||0),(!I.getCacheAge||isNaN(t.ageHeader))&&(t.ageHeader=0)),Q){case h.MANIFEST:case h.LEVEL:if(it){if(!se)it=0;else if(se!==j.levels[it]){const ar=j.levels.indexOf(se);ar>-1&&(it=ar)}}j.trigger(u.LEVEL_LOADED,{details:t,levelInfo:se||j.levels[0],level:it||0,id:de||0,stats:s,networkDetails:w,deliveryDirectives:ke,withoutMultiVariant:Q===h.MANIFEST});break;case h.AUDIO_TRACK:j.trigger(u.AUDIO_TRACK_LOADED,{details:t,track:se,id:de||0,groupId:xe||"",stats:s,networkDetails:w,deliveryDirectives:ke});break;case h.SUBTITLE_TRACK:j.trigger(u.SUBTITLE_TRACK_LOADED,{details:t,track:se,id:de||0,groupId:xe||"",stats:s,networkDetails:w,deliveryDirectives:ke});break}}}class Pf{static get version(){return ai}static isMSESupported(){return md()}static isSupported(){return Td()}static getMediaSource(){return oe()}static get Events(){return u}static get MetadataSchema(){return yn}static get ErrorTypes(){return c}static get ErrorDetails(){return f}static get DefaultConfig(){return Pf.defaultConfig?Pf.defaultConfig:za}static set DefaultConfig(t){Pf.defaultConfig=t}constructor(t={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new ri,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._url=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;const n=this.logger=V(t.debug||!1,"Hls instance",t.assetPlayerId),s=this.config=sn(Pf.DefaultConfig,t,n);this.userConfig=t,s.progressive&&an(s,n);const{abrController:_,bufferController:w,capLevelController:I,errorController:j,fpsController:Q}=s,K=new j(this),se=this.abrController=new _(this),de=new Ci(this),xe=s.interstitialsController,ke=xe?this.interstitialsController=new xe(this,Pf):null,Re=this.bufferController=new w(this,de),at=this.capLevelController=new I(this),it=new Q(this),Xt=new td(this),ar=s.contentSteeringController,lr=ar?new ar(this):null,Ar=this.levelController=new Cd(this,lr),zr=new Sd(this),vn=new Id(this.config,this.logger),Zr=this.streamController=new _d(this,de,vn),fn=this.gapController=new Qa(this,de);at.setStreamController(Zr),it.setStreamController(Zr);const ln=[Xt,Ar,Zr];ke&&ln.splice(1,0,ke),lr&&ln.splice(1,0,lr),this.networkControllers=ln;const Qr=[se,Re,fn,at,it,zr,de];this.audioTrackController=this.createController(s.audioTrackController,ln);const kn=s.audioStreamController;kn&&ln.push(this.audioStreamController=new kn(this,de,vn)),this.subtitleTrackController=this.createController(s.subtitleTrackController,ln);const Si=s.subtitleStreamController;Si&&ln.push(this.subtititleStreamController=new Si(this,de,vn)),this.createController(s.timelineController,Qr),vn.emeController=this.emeController=this.createController(s.emeController,Qr),this.cmcdController=this.createController(s.cmcdController,Qr),this.latencyController=this.createController(Ad,Qr),this.coreComponents=Qr,ln.push(K);const qi=K.onErrorOut;typeof qi=="function"&&this.on(u.ERROR,qi,K),this.on(u.MANIFEST_LOADED,Xt.onManifestLoaded,Xt)}createController(t,n){if(t){const s=new t(this);return n&&n.push(s),s}return null}on(t,n,s=this){this._emitter.on(t,n,s)}once(t,n,s=this){this._emitter.once(t,n,s)}removeAllListeners(t){this._emitter.removeAllListeners(t)}off(t,n,s=this,_){this._emitter.off(t,n,s,_)}listeners(t){return this._emitter.listeners(t)}emit(t,n,s){return this._emitter.emit(t,n,s)}trigger(t,n){if(this.config.debug)return this.emit(t,t,n);try{return this.emit(t,t,n)}catch(s){if(this.logger.error("An internal error happened while handling event "+t+'. Error message: "'+s.message+'". Here is a stacktrace:',s),!this.triggeringException){this.triggeringException=!0;const _=t===u.ERROR;this.trigger(u.ERROR,{type:c.OTHER_ERROR,details:f.INTERNAL_EXCEPTION,fatal:_,event:t,error:s}),this.triggeringException=!1}}return!1}listenerCount(t){return this._emitter.listenerCount(t)}destroy(){this.logger.log("destroy"),this.trigger(u.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach(n=>n.destroy()),this.networkControllers.length=0,this.coreComponents.forEach(n=>n.destroy()),this.coreComponents.length=0;const t=this.config;t.xhrSetup=t.fetchSetup=void 0,this.userConfig=null}attachMedia(t){if(!t||"media"in t&&!t.media){const w=new Error(`attachMedia failed: invalid argument (${t})`);this.trigger(u.ERROR,{type:c.OTHER_ERROR,details:f.ATTACH_MEDIA_ERROR,fatal:!0,error:w});return}this.logger.log("attachMedia"),this._media&&(this.logger.warn("media must be detached before attaching"),this.detachMedia());const n="media"in t,s=n?t.media:t,_=n?t:{media:s};this._media=s,this.trigger(u.MEDIA_ATTACHING,_)}detachMedia(){this.logger.log("detachMedia"),this.trigger(u.MEDIA_DETACHING,{}),this._media=null}transferMedia(){this._media=null;const t=this.bufferController.transferMedia();return this.trigger(u.MEDIA_DETACHING,{transferMedia:t}),t}loadSource(t){this.stopLoad();const n=this.media,s=this._url,_=this._url=W.buildAbsoluteURL(self.location.href,t,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${_}`),n&&s&&(s!==_||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(n)),this.trigger(u.MANIFEST_LOADING,{url:t})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(t=-1,n){this.logger.log(`startLoad(${t+(n?", ":"")})`),this.started=!0,this.resumeBuffering();for(let s=0;s{t.resumeBuffering&&t.resumeBuffering()}))}pauseBuffering(){this.bufferingEnabled&&(this.logger.log("pause buffering"),this.networkControllers.forEach(t=>{t.pauseBuffering&&t.pauseBuffering()}))}get inFlightFragments(){const t={[o.MAIN]:this.streamController.inFlightFrag};return this.audioStreamController&&(t[o.AUDIO]=this.audioStreamController.inFlightFrag),this.subtititleStreamController&&(t[o.SUBTITLE]=this.subtititleStreamController.inFlightFrag),t}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");const t=this._media,n=t==null?void 0:t.currentTime;this.detachMedia(),t&&(this.attachMedia(t),n&&this.startLoad(n))}removeLevel(t){this.levelController.removeLevel(t)}get sessionId(){let t=this._sessionId;return t||(t=this._sessionId=Jc()),t}get levels(){const t=this.levelController.levels;return t||[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(t){this.logger.log(`set currentLevel:${t}`),this.levelController.manualLevel=t,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(t){this.logger.log(`set nextLevel:${t}`),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(t){this.logger.log(`set loadLevel:${t}`),this.levelController.manualLevel=t}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(t){this.levelController.nextLoadLevel=t}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(t){this.logger.log(`set firstLevel:${t}`),this.levelController.firstLevel=t}get startLevel(){const t=this.levelController.startLevel;return t===-1&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:t}set startLevel(t){this.logger.log(`set startLevel:${t}`),t!==-1&&(t=Math.max(t,this.minAutoLevel)),this.levelController.startLevel=t}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(t){const n=!!t;n!==this.config.capLevelToPlayerSize&&(n?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=n)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimate():NaN}set bandwidthEstimate(t){this.abrController.resetEstimator(t)}get abrEwmaDefaultEstimate(){const{bwEstimator:t}=this.abrController;return t?t.defaultEstimate:NaN}get ttfbEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimateTTFB():NaN}set autoLevelCapping(t){this._autoLevelCapping!==t&&(this.logger.log(`set autoLevelCapping:${t}`),this._autoLevelCapping=t,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(t){Yr(t)&&this._maxHdcpLevel!==t&&(this._maxHdcpLevel=t,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return this.levelController.manualLevel===-1}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:t,config:{minAutoBitrate:n}}=this;if(!t)return 0;const s=t.length;for(let _=0;_=n)return _;return 0}get maxAutoLevel(){const{levels:t,autoLevelCapping:n,maxHdcpLevel:s}=this;let _;if(n===-1&&t!=null&&t.length?_=t.length-1:_=n,s)for(let w=_;w--;){const I=t[w].attrs["HDCP-LEVEL"];if(I&&I<=s)return w}return _}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(t){this.abrController.nextAutoLevel=t}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(t){var n;return((n=this.audioTrackController)==null?void 0:n.setAudioOption(t))||null}setSubtitleOption(t){var n;return((n=this.subtitleTrackController)==null?void 0:n.setSubtitleOption(t))||null}get allAudioTracks(){const t=this.audioTrackController;return t?t.allAudioTracks:[]}get audioTracks(){const t=this.audioTrackController;return t?t.audioTracks:[]}get audioTrack(){const t=this.audioTrackController;return t?t.audioTrack:-1}set audioTrack(t){const n=this.audioTrackController;n&&(n.audioTrack=t)}get allSubtitleTracks(){const t=this.subtitleTrackController;return t?t.allSubtitleTracks:[]}get subtitleTracks(){const t=this.subtitleTrackController;return t?t.subtitleTracks:[]}get subtitleTrack(){const t=this.subtitleTrackController;return t?t.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(t){const n=this.subtitleTrackController;n&&(n.subtitleTrack=t)}get subtitleDisplay(){const t=this.subtitleTrackController;return t?t.subtitleDisplay:!1}set subtitleDisplay(t){const n=this.subtitleTrackController;n&&(n.subtitleDisplay=t)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(t){this.config.lowLatencyMode=t}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}set targetLatency(t){this.latencyController.targetLatency=t}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(t){this.levelController.pathwayPriority=t}get bufferedToEnd(){var t;return!!((t=this.bufferController)!=null&&t.bufferedToEnd)}get interstitialsManager(){var t;return((t=this.interstitialsController)==null?void 0:t.interstitialsManager)||null}getMediaDecodingInfo(t,n=this.allAudioTracks){const s=Ia(n);return br(t,s,navigator.mediaCapabilities)}}Pf.defaultConfig=void 0},53280:function(d,g,e){"use strict";e.d(g,{D:function(){return i}});function r(l,c,f){var u=f||{},h=u.noTrailing,o=h===void 0?!1:h,a=u.noLeading,x=a===void 0?!1:a,p=u.debounceMode,v=p===void 0?void 0:p,m,b=!1,A=0;function O(){m&&clearTimeout(m)}function R(T){var M=T||{},F=M.upcomingOnly,N=F===void 0?!1:F;O(),b=!N}function S(){for(var T=arguments.length,M=new Array(T),F=0;Fl?x?(A=Date.now(),o||(m=setTimeout(v?$:V,l))):V():o!==!0&&(m=setTimeout(v?$:V,v===void 0?l-H:l))}return S.cancel=R,S}function i(l,c,f){var u=f||{},h=u.atBegin,o=h===void 0?!1:h;return r(l,c,{debounceMode:o!==!1})}}},__webpack_module_cache__={};function __webpack_require__(d){var g=__webpack_module_cache__[d];if(g!==void 0)return g.exports;var e=__webpack_module_cache__[d]={id:d,loaded:!1,exports:{}};return __webpack_modules__[d].call(e.exports,e,e.exports,__webpack_require__),e.loaded=!0,e.exports}__webpack_require__.m=__webpack_modules__,function(){__webpack_require__.amdO={}}(),function(){__webpack_require__.n=function(d){var g=d&&d.__esModule?function(){return d.default}:function(){return d};return __webpack_require__.d(g,{a:g}),g}}(),function(){var d=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},g;__webpack_require__.t=function(e,r){if(r&1&&(e=this(e)),r&8||typeof e=="object"&&e&&(r&4&&e.__esModule||r&16&&typeof e.then=="function"))return e;var i=Object.create(null);__webpack_require__.r(i);var l={};g=g||[null,d({}),d([]),d(d)];for(var c=r&2&&e;typeof c=="object"&&!~g.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach(function(f){l[f]=function(){return e[f]}});return l.default=function(){return e},__webpack_require__.d(i,l),i}}(),function(){__webpack_require__.d=function(d,g){for(var e in g)__webpack_require__.o(g,e)&&!__webpack_require__.o(d,e)&&Object.defineProperty(d,e,{enumerable:!0,get:g[e]})}}(),function(){__webpack_require__.f={},__webpack_require__.e=function(d){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(g,e){return __webpack_require__.f[e](d,g),g},[]))}}(),function(){__webpack_require__.u=function(d){return""+({26:"p__Classrooms__Lists__Graduation__Tasks__Edit__index",65:"p__StudentEffectivenessAnalysis__index",67:"p__Message__index",109:"p__Classrooms__Lists__ShixunHomeworks__Detail__components__CodeReview__Detail__index",119:"p__User__ThemeChange__Paths",174:"p__OnlineDevice__DeviceInfo__InfoList__Details__index",195:"p__Classrooms__Lists__GroupHomework__Detail__index",201:"p__Classrooms__ThemeChange__Students",264:"p__User__Detail__Order__pages__orderPay__index",292:"p__Classrooms__Lists__Exercise__Add__index",337:"p__Paperlibrary__Random__PreviewEdit__index",479:"p__Classrooms__Lists__GroupHomework__EditWork__index",485:"p__Question__AddOrEdit__BatchAdd__index",508:"p__Forums__Detail__id",518:"p__Shixuns__Detail__Settings__ThemeChange__index",532:"p__ExcellentCourse__index",533:"p__Classrooms__Lists__Video__Statistics__Detail__index",547:"p__Account__index",556:"p__User__Detail__Order__pages__invoice__index",559:"layouts__virtualDetail__index",570:"p__Home__Detail__OnlineNum__index",576:"p__Account__Profile__Edit__index",643:"p__Classrooms__Lists__Polls__QuestionnaireInfo__index",680:"p__Innovation__index",700:"p__tasks__Jupyter__index",737:"p__Classrooms__Lists__CommonHomework__Detail__components__CodeReview__Detail__index",799:"p__User__Detail__Topics__Poll__Detail__index",879:"p__User__ThemeChange__AccountInfo",895:"p__Classrooms__Lists__Video__Items__videoInfo__index",900:"p__User__ThemeChange__Classrooms",906:"p__User__ThemeChange__CareerCertification",919:"p__knowledgegraph__Statistics__LearningPath__index",921:"p__Classrooms__Lists__Exercise__CodeDetails__index",928:"p__RestFul__Edit__index",1006:"p__RestFul__index",1043:"p__Classrooms__Lists__Graduation__Tasks__index",1045:"p__virtualSpaces__Lists__Knowledge__AddAndEdit__index",1048:"p__Classrooms__Lists__ProgramHomework__Detail__Ranking__index",1070:"p__Innovation__PublicMirror__index",1077:"p__User__ThemeTwoLogin__index",1211:"p__Classrooms__Lists__CommonHomework__EditWork__index",1253:"p__Graduations__Lists__Gradingsummary__index",1257:"p__Classrooms__Lists__ResourceRecommend__index",1276:"p__MoopCases__Success__index",1343:"p__User__Detail__ResourceAllocation__index",1423:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeAnswer__index",1427:"p__Classrooms__Lists__Statistics__index",1443:"p__EffectivenessAnalysis__index",1450:"p__Classrooms__Lists__ShixunHomeworks__Commitsummary__index",1461:"p__Graduations__Lists__Topics__index",1470:"p__User__Register__index",1475:"p__Shixuns__Detail__Dataset__JupyterData__index",1477:"p__Classrooms__ThemeChange__Assistant",1482:"p__Classrooms__Lists__Graduation__Topics__Edit__index",1512:"p__Classrooms__Lists__Exercise__AnswerCheck__index",1520:"p__Engineering__Lists__StudentList__index",1545:"p__Paperlibrary__Random__ExchangeFromProblemSet__index",1578:"p__Classrooms__Lists__Graduation__Topics__Detail__index",1581:"p__Problemset__Preview__index",1582:"p__Classrooms__Lists__GroupHomework__Add__index",1651:"p__Paths__ThemeChange__Statistics",1657:"p__Shixuns__Edit__body__Level__Challenges__EditQuestion__index",1660:"p__User__QQLogin__index",1674:"p__Classrooms__ClassicCases__index",1678:"p__Classrooms__ThemeChange__Attachment",1691:"p__OnlineMessageCenter__MessageCenterManage__index",1713:"p__virtualSpaces__Lists__Settings__index",1717:"layouts__index",1727:"p__Classrooms__Lists__CourseGroup__NotList__index",1754:"p__Classrooms__ThemeChange__Video",1783:"p__virtualSpaces__Lists__Experiment__index",1798:"p__Classrooms__ThemeChange__GroupHomework",1799:"p__Competitions__Entered__Assembly__TeamDateil",1831:"p__Graduations__Index__index",1836:"p__Classrooms__Lists__Attendance__Webview__Teacher__index",1855:"p__MoopCases__InfoPanel__index",1880:"p__User__Detail__Order__pages__apply__index",1897:"p__User__ThemeChange__ClassManagement",1939:"p__User__Detail__Order__index",1953:"p__Problemset__NewItem__index",1962:"p__Classrooms__Lists__Engineering__index",1993:"p__Shixuns__Detail__Dataset__ThemeChange__index",2045:"p__Engineering__Lists__TeacherList__index",2099:"p__Paperlibrary__ThemeChange__index",2102:"p__Classrooms__Lists__Board__Edit__index",2130:"p__Shixuns__Detail__Repository__UploadFile__ThemeChange__index",2141:"p__Shixuns__Detail__Split__index",2203:"p__Classrooms__ThemeChange__ShixunHomeworks",2216:"p__DataSet__Index__index",2240:"p__User__Detail__Videos__Upload__index",2281:"p__Paths__ThemeChange__Detail",2300:"p__Api__index",2303:"p__Classrooms__Lists__CommonHomework__Comment__index",2307:"p__Report__index",2338:"p__Classrooms__Lists__CommonHomework__Review__index",2339:"p__virtualSpaces__Lists__Plan__Detail__index",2396:"p__User__Detail__ResourcesCenter__index",2404:"p__Classrooms__Lists__Template__teacher__index",2412:"p__User__Detail__Videos__index",2425:"p__Classrooms__Lists__Board__Detail__index",2441:"layouts__LaboratoryLayouts__index",2443:"p__Graduations__Lists__StageModule__index",2476:"p__Colleges__index",2501:"p__Search__index",2524:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Detail__index",2539:"p__Graduations__Review__index",2548:"p__Engineering__Norm__Detail__index",2570:"p__Competitions__Detail__index",2603:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Add__index",2641:"p__Property__Procurement__index",2659:"p__User__Detail__UserPortrait__index",2707:"p__Innovation__MyDataSet__index",2748:"p__Property__index",2806:"p__User__Detail__Topics__Exercise__Detail__index",2819:"p__Classrooms__Lists__Template__detail__index",2823:"p__Engineering__Navigation__Home__index",2829:"p__Messages__Private__index",2862:"p__User__ThemeChange__ExperImentImg",2865:"p__Innovation__MyMirror__index",2884:"p__Classrooms__Lists__ProgramHomework__Comment__index",3006:"p__Engineering__index",3086:"p__Shixuns__Detail__ForkList__ThemeChange__index",3141:"p__Innovation__Detail__index",3157:"p__User__Detail__ExperImentImg__Add__index",3183:"p__Engineering__Lists__GraduationIndex__index",3212:"p__MoopCases__index",3247:"p__Paperlibrary__See__index",3260:"p__Paperlibrary__Add__index",3276:"p__Classrooms__Lists__Statistics__UserportraitStatistics__index",3282:"p__OnlineDevice__DigitalSigns__index",3317:"p__Classrooms__Lists__Graduation__Topics__Add__index",3391:"p__Classrooms__Lists__ProgramHomework__Detail__components__CodeReview__Detail__index",3433:"p__Classrooms__Lists__Exercise__Sumup__Edit__index",3442:"p__Classrooms__Lists__Board__Add__index",3443:"p__knowledgegraph__Statistics__AbilityMap__Detail",3447:"p__User__Detail__Order__pages__orderInformation__index",3451:"p__Classrooms__Lists__Statistics__StudentStatistics__Detail__index",3509:"p__HttpStatus__SixActivities",3581:"p__Shixuns__Detail__Collaborators__ThemeChange__index",3585:"p__Classrooms__Lists__Statistics__StudentSituation__index",3589:"p__knowledgegraph__Statistics__index",3668:"p__Classrooms__Lists__CommonHomework__Detail__index",3685:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Edit__index",3747:"p__virtualSpaces__Lists__Homepage__index",3784:"p__Paperlibrary__Random__Detail__index",3831:"p__User__ThemeChange__VirtualSpaces",3862:"p__HttpStatus__403",3873:"p__virtualSpaces__Lists__Lesson__index",3910:"p__HttpStatus__introduction",3951:"p__Classrooms__Lists__ProgramHomework__Detail__index",4017:"p__Classrooms__Lists__PlaceholderPage__index",4030:"p__Classrooms__Lists__ProgramHomework__AddAndEdit__index",4048:"p__Forums__ThemeChange__index",4056:"p__IntrainCourse__index",4058:"p__Demo__index",4078:"p__Messages__Tidings__index",4093:"p__Classrooms__Lists__Attendance__Detail__index",4105:"p__Classrooms__Lists__Exercise__Answer__index",4144:"p__Problemset__Preview__New__index",4164:"p__Classrooms__Lists__Exercise__Detail__index",4216:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Edit__index",4217:"p__Classrooms__Lists__Video__Statistics__index",4227:"p__Paths__Overview__index",4259:"p__User__Detail__Order__pages__result__index",4264:"p__Forums__New__index",4297:"p__Classrooms__ThemeChange__Polls",4339:"p__knowledgegraph__Statistics__PathAtlas__Detail",4420:"p__knowledgegraph__index",4449:"p__Competitions__Exports__index",4492:"p__Graduations__Lists__StudentSelection__index",4496:"p__HttpStatus__HpcCourse",4498:"p__Shixuns__Edit__body__Level__Challenges__NewPractice__index",4504:"p__virtualSpaces__Lists__Survey__index",4514:"p__Account__Results__index",4520:"p__Account__Secure__index",4546:"p__Engineering__Lists__TrainingProgram__Add__index",4565:"p__HttpStatus__500",4572:"p__Classrooms__Lists__ExportList__index",4599:"p__Problemset__index",4610:"p__User__Detail__LearningPath__index",4621:"p__Administration__Profession__index",4662:"p__Classrooms__Lists__GroupHomework__Review__index",4715:"p__virtualSpaces__Lists__Material__Detail__index",4736:"p__User__Detail__Projects__index",4741:"p__Problems__OjForm__NewEdit__index",4757:"p__virtualSpaces__Lists__Workplace__index",4766:"p__Administration__index",4770:"p__Classrooms__Lists__ProgramHomework__Detail__answer__index",4795:"p__Classrooms__Lists__Graduation__Tasks__Add__index",4800:"p__Engineering__Lists__GraduatedMatrix__index",4806:"p__OnlineDevice__FaultLibrary__index",4889:"p__Classrooms__Lists__Exercise__ImitateAnswer__index",4928:"p__Classrooms__Lists__LearningPath__index",4973:"p__Engineering__Evaluate__List__index",4994:"p__Problems__OjForm__index",5022:"p__Graduations__Lists__Settings__index",5043:"p__User__Detail__Topics__Poll__Edit__index",5048:"p__Classrooms__Lists__Graduation__Topics__index",5096:"p__Shixuns__Detail__AuditSituation__index",5111:"p__Terminal__index",5117:"p__User__ThemeChange__Certificate",5125:"p__Classrooms__Lists__Exercise__DetailedAnalysis__index",5148:"p__Classrooms__Lists__Polls__Answer__index",5165:"p__User__ThemeChange__Topics",5176:"p__User__Detail__Videos__Protocol__index",5177:"p__Classrooms__ThemeChange__Teachers",5179:"p__Administration__Student__Edit__index",5186:"p__Classrooms__Overview__index",5230:"p__Shixuns__Detail__Repository__AddFile__ThemeChange__index",5238:"p__virtualSpaces__Lists__Material__index",5297:"p__Classrooms__Lists__Exercise__Detail__components__DuplicateChecking__CheckDetail__index",5307:"p__Shixuns__ThemeChange__New",5319:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Detail__index",5330:"p__Classrooms__ThemeChange__ShixunHomeworksComment",5335:"p__Engineering__Lists__CourseMatrix__index",5357:"p__Engineering__Lists__TrainingProgram__Edit__index",5359:"p__Messages__Detail__index",5382:"p__DataSet__Detail__index",5402:"p__User__Detail__Topics__Detail__index",5466:"p__Classrooms__ThemeChange__LiveVideo",5518:"p__Classrooms__Lists__Template__index",5549:"p__Shixuns__New__CreateImg__index",5572:"p__Paths__HigherVocationalEducation__index",5573:"p__Shixuns__Detail__Merge__index",5624:"p__Graduations__Lists__Index__index",5650:"p__Competitions__Update__index",5694:"p__Classrooms__ThemeChange__ShixunHomeworksDetail",5705:"p__virtualSpaces__Lists__Construction__index",5729:"p__Help__Index",5775:"p__Engineering__Lists__Document__index",5776:"p__User__ThemeChange__RealNameCertification",5786:"layouts__LoginAndRegister__index",5798:"p__Classrooms__Lists__Video__Statistics__UserDetail__index",5800:"p__User__ThemeChange__Competitions",5816:"p__Paperlibrary__Random__Edit__index",5888:"p__Classrooms__Lists__CommonHomework__Add__index",5891:"p__virtualSpaces__Lists__Resources__index",5894:"p__Shixuns__Detail__Repository__Commit__ThemeChange__index",5902:"p__Classrooms__Lists__Exercise__Sumup__index",5915:"p__knowledgegraph__Detail__Statistics__index",5972:"layouts__user__index",5992:"p__Classrooms__Lists__Exercise__ReviewGroup__index",6029:"p__Administration__Student__index",6034:"p__HttpStatus__UserAgents",6063:"p__Graduations__Lists__Personmanage__index",6069:"p__virtualSpaces__Lists__Lesson__Detail__index",6080:"p__Paths__ThemeChange__New",6127:"p__Classrooms__Lists__ProgramHomework__Ranking__index",6170:"p__HttpStatus__downloadStudent",6185:"p__Classrooms__ThemeChange__Announcement",6205:"p__Classrooms__ThemeChange__VideoUpload",6265:"p__virtualSpaces__Lists__Discussion__index",6270:"p__MyProblem__index",6282:"p__Classrooms__ThemeChange__ProgramHomework",6328:"p__Shixuns__Edit__body__Warehouse__index",6366:"p__Innovation__PublicProject__index",6434:"p__User__Detail__Order__pages__records__index",6444:"p__Video__Detail__id",6451:"p__Shixuns__Detail__RankingList__ThemeChange__index",6452:"p__Innovation__PublicDataSet__index",6531:"p__HttpStatus__404",6583:"p__User__Detail__Classrooms__index",6587:"p__User__Detail__Videos__Protocol__resource",6634:"p__Innovation__Tasks__index",6637:"p__Shixuns__Detail__Repository__ThemeChange__index",6651:"p__Engineering__Evaluate__Detail__index",6682:"p__User__ThemeChange__Shixuns",6685:"p__Classrooms__Index__index",6729:"p__Classrooms__Lists__GroupHomework__Edit__index",6741:"p__Engineering__Norm__List__index",6776:"p__Classrooms__ThemeChange__Exercise",6784:"p__Innovation__Edit__index",6788:"p__Home__Detail__ShixunContext__Detail__index",6789:"p__Classrooms__ThemeChange__index",6796:"p__virtualSpaces__Lists__Announcement__Detail__index",6806:"p__OnlineDevice__DeviceInfo__index",6820:"p__User__Detail__Topics__Normal__index",6882:"p__Classrooms__New__StartClass__index",6904:"p__MoopCases__FormPanel__index",6913:"p__Question__AddOrEdit__index",6963:"p__Classrooms__Lists__Engineering__Detail__index",6979:"p__knowledgegraph__SanD__index",7042:"p__knowledgegraph__Statistics__LearningPath__Detail",7043:"p__User__Detail__Topics__Exercise__Edit__index",7045:"p__Classrooms__Lists__CommonHomework__SubmitWork__index",7052:"p__OnlineDevice__DeviceInfo__InfoList__Edit__index",7058:"p__virtualSpaces__Lists__Survey__Detail__index",7062:"layouts__SimpleLayouts",7099:"p__Competitions__ThemeChange__index",7178:"p__User__BindAccount__index",7182:"p__User__ResetPassword__index",7224:"p__StatsDashboard__index",7242:"p__Innovation__MyProject__index",7260:"p__Account__Certification__index",7289:"p__tasks__ThemeChange__index",7322:"layouts__ThemeChange__ShixunDetail",7323:"p__Classrooms__ThemeChange__New",7329:"p__Classrooms__ThemeChange__Attendance",7333:"p__User__WechatLogin__index",7395:"p__Classrooms__Lists__Statistics__StudentDetail__index",7402:"p__User__ThemeChange__OtherResources",7460:"p__Question__OjProblem__index",7465:"p__OnlineDevice__DeviceInfo__InfoList__ReservationInfo__index",7477:"p__virtualSpaces__Lists__Announcement__index",7482:"p__Classrooms__Lists__Exercise__Notice__index",7527:"p__MyProblem__RecordDetail__index",7545:"p__Graduations__Lists__Archives__index",7560:"p__Administration__College__index",7589:"p__virtualSpaces__Lists__DigitalTopics__index",7614:"p__Shixuns__Edit__body__Level__Challenges__RankingSetting__index",7622:"p__Classrooms__Lists__Polls__Detail__index",7670:"p__OnlineReservation__ReservationInfo__index",7745:"p__OnlineDevice__DeviceType__index",7806:"p__Classrooms__Lists__Statistics__StatisticsQuality__index",7823:"p__OnlineMessageCenter__OffSiteConfig__index",7835:"p__Problemset__ThemeChange__index",7855:"p__User__Detail__ResourcesCenter__Detail__index",7857:"p__Shixuns__Edit__body__Level__Challenges__NewQuestion__index",7883:"p__Classrooms__Lists__Exercise__WrongAnswer__index",7884:"p__Shixuns__Exports__index",7901:"p__Guidance__ThemeChange",7922:"p__Classrooms__Lists__CourseGroup__Detail__index",8062:"p__User__Detail__Topicbank__index",8072:"p__Classrooms__Lists__GroupHomework__SubmitWork__index",8085:"p__Classrooms__Lists__Exercise__Review__index",8115:"p__User__ThemeChange__DataSet",8116:"p__LaboratoryList__index",8121:"p__OnlineDevice__DeviceType__Details__index",8137:"p__knowledgegraph__Statistics__PathAtlas__index",8143:"layouts__GraduationsDetail__index",8145:"p__User__ThemeChange__ClassManagementItem",8155:"p__Shixuns__Overview__index",8217:"p__User__ThemeChange__AccountInfoEdit",8234:"p__OnlineDevice__DeviceLabel__index",8237:"p__User__Detail__Order__pages__view__index",8241:"p__virtualSpaces__Lists__Plan__index",8286:"p__User__ThemeChange__ExperImentImgDetail",8332:"p__User__ThemeChange__Detail",8340:"p__Classrooms__Lists__Attendance__Webview__Student__index",8365:"p__Home__Detail__ShixunContext__index",8398:"p__virtualSpaces__Lists__Resources__Detail__index",8431:"p__Classrooms__Lists__Exercise__Export__index",8435:"p__Classrooms__Lists__Attendance__index",8447:"p__virtualSpaces__Lists__Knowledge__index",8458:"p__Classrooms__ThemeChange__CommonHomework",8479:"p__User__ThemeChange__TeachGroup",8517:"p__User__Detail__Topics__Group__index",8552:"p__Shixuns__ThemeChange__index",8563:"p__virtualSpaces__Lists__Discussion__Detail__index",8579:"p__Competitions__ThemeChange__Edit",8639:"p__Forums__Index__redirect",8665:"p__Engineering__Lists__TrainingObjectives__index",8688:"p__Shixuns__Detail__Repository__index",8689:"p__Classrooms__Lists__Statistics__VideoStatistics__index",8723:"p__Classrooms__Lists__Polls__Edit__index",8787:"p__Competitions__Entered__index",8823:"p__knowledgegraph__Detail__id",8827:"p__Classrooms__Lists__OnlineLearning__index",8866:"p__index",8882:"p__Classrooms__Lists__Graduation__Tasks__Detail__index",8885:"p__Classrooms__Lists__Statistics__StudentStatistics__index",8965:"p__Shixuns__Detail__Discuss__ThemeChange__index",8999:"p__Three__index",9039:"p__Classrooms__ThemeChange__CourseGroup",9076:"p__Account__Binding__index",9172:"p__DeviceOperationMonitoring__index",9205:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeSetting__index",9366:"p__User__Login__index",9391:"p__Engineering__Lists__CurseSetting__index",9404:"monaco-editor",9406:"p__Classrooms__ThemeChange__Board",9416:"p__Graduations__Lists__Tasks__index",9417:"p__Shixuns__ThemeOne__Detail__SkillTags__index",9449:"p__Shixuns__ThemeChange__Detail",9487:"p__LargeScreen__index",9489:"p__Engineering__Lists__CourseList__index",9507:"p__User__Detail__ResourceGuarantee__index",9511:"p__Shixuns__ThemeChange__Edit",9595:"p__knowledgegraph__Statistics__AbilityMap__index",9647:"p__Question__Index__index",9649:"p__Engineering__Lists__TrainingProgram__index",9674:"p__Shixuns__New__ImagePreview__index",9677:"p__virtualSpaces__Lists__Announcement__AddAndEdit__index",9695:"p__Classrooms__Lists__Polls__Add__index",9715:"p__Classrooms__Lists__CommonHomework__Edit__index",9716:"p__Question__OjProblem__RecordDetail__index",9785:"p__Classrooms__Lists__Template__student__index",9788:"p__Account__Profile__index",9814:"p__Shixuns__Detail__Challenges__ThemeChange__index",9891:"p__User__Detail__Videos__Success__index",9906:"p__Paths__ThemeChange__index",9921:"p__Classrooms__ExamList__index",9922:"p__Classrooms__Lists__Statistics__StudentVideo__index",9944:"p__Classrooms__Lists__Video__Statistics__StudentDetail__index"}[d]||d)+"."+{26:"9da948a3",65:"fce7161d",67:"f6413054",109:"4e714a8c",119:"f7819fbd",174:"97da1099",195:"fe6cad8a",201:"04a5c31e",264:"3390cfa6",292:"2acb7f7a",316:"1f60ada6",337:"4e896d50",354:"d4d139cf",479:"d05f4186",485:"8f07e30f",508:"73d3a271",518:"feb8630a",532:"218b8268",533:"3da229bb",547:"2f8a80be",552:"4f3a4ae9",556:"97ad128d",559:"ab033e09",570:"2b4db38d",576:"fbed9e6d",629:"44a1d9a5",643:"6dff706d",671:"4a609b8d",680:"0b7c0913",700:"3d083755",737:"aa5047fd",741:"ac5fd360",799:"254d273d",879:"36302850",895:"6324e034",900:"19fe4fa9",906:"e68f8ae2",919:"2f4b59e3",921:"bba73d26",928:"08301ff7",981:"24da50c7",1006:"067f32e5",1043:"65dfcbac",1045:"9ca3311c",1048:"cd8878d0",1070:"d1932608",1077:"565cb188",1144:"c90eccaf",1154:"8cb80842",1211:"53b421f6",1253:"ab89871d",1257:"447b1c4a",1262:"1dc81e16",1274:"5f6ea65a",1276:"27157560",1311:"75c68e94",1343:"7de03b03",1423:"f3636156",1427:"a74b8e51",1443:"d956fce9",1450:"533b80cc",1461:"6972274c",1462:"fcf08abc",1470:"ab5ac9d3",1475:"572540f0",1477:"7b2b1b1d",1482:"1b8aab97",1512:"a8cc7f6c",1520:"c0e2532e",1545:"be16e5a1",1578:"6f282245",1581:"5f63cdea",1582:"88dca318",1646:"e6e27b60",1651:"5801fff2",1657:"3506f99d",1660:"9c627a4a",1673:"535b65f3",1674:"8f2cd4eb",1678:"27927f9e",1691:"3c74f8ac",1713:"ed29400e",1717:"27ee6cb5",1727:"b4c62af9",1754:"5782da85",1783:"0e961a7a",1798:"6d7daa23",1799:"c55ef14f",1831:"66c5a90d",1836:"c4282af9",1855:"0cb81f1b",1859:"64f8ff5d",1880:"3925f003",1897:"4fc652fe",1939:"e6613234",1953:"c2369a90",1962:"6f90e556",1993:"6fbf0b30",2011:"59d51f98",2045:"7b5917aa",2099:"d27e99e6",2102:"50fdd11c",2130:"ff73a1db",2141:"95b6f946",2203:"fa04f9d2",2216:"b3fd2576",2240:"7a66a3e0",2249:"f4830452",2281:"25459009",2300:"5d8729b1",2303:"7cb957ab",2307:"ad428eba",2338:"ac41ef9b",2339:"a434e613",2386:"192e235c",2396:"6dd90de8",2404:"3fc0ca5b",2412:"f056b967",2425:"0cf2b9fa",2441:"8e42844b",2443:"04c11c3e",2476:"3b339157",2494:"68080a87",2501:"e7914e3a",2524:"4fb9413b",2538:"de4a3723",2539:"8c806b2f",2548:"94040635",2570:"3c914523",2594:"e87d3761",2603:"443157c9",2641:"a0e9d2ef",2659:"62d9f46b",2667:"a93bd2ac",2707:"22234bb7",2718:"667ce8fa",2748:"2ca46c9f",2806:"6e8d120d",2819:"c59072aa",2823:"d27d3254",2829:"957b88a9",2837:"54a82605",2862:"a589b449",2865:"e782c6da",2884:"693f98fa",2946:"0ac58989",2969:"ab3357d7",3006:"5130ce1a",3086:"b4d1f7d6",3133:"9bf3f89c",3141:"6f4cd08a",3157:"b43660c0",3183:"e1ed91b1",3198:"8e655451",3212:"5644616f",3247:"6dc95c87",3260:"c64b7a27",3276:"5f95dd04",3282:"99d412c9",3295:"c0e091b7",3317:"f3015958",3391:"bedb23a8",3433:"8fff10b2",3442:"2423fda4",3443:"34803cdc",3447:"da9e2c31",3451:"b129112b",3509:"1c9d3cf0",3550:"3dc83156",3581:"99cd4f92",3585:"11ee1f3c",3589:"af764a62",3668:"b61a2a51",3685:"a2146b31",3697:"481a10d9",3747:"336af11a",3754:"e293b243",3777:"d5b0f2f1",3784:"9517302c",3805:"9dbcb95e",3831:"886ad9e3",3862:"b153edbd",3873:"89055ef2",3885:"f87f7f15",3910:"c0d8794f",3951:"8ec4f657",3987:"5cecd51b",4014:"27a8e97c",4017:"d120f222",4030:"0beadc47",4048:"af744caa",4056:"f7986c88",4058:"2c64b641",4078:"691865cb",4088:"236723f3",4093:"8b2af871",4105:"9320e140",4144:"cb1d0e83",4164:"ab6598ef",4216:"03837388",4217:"b5224c2d",4227:"6830300d",4259:"2ee46ba6",4264:"c5d2bd8c",4297:"46633134",4339:"322e7f75",4347:"ce21ef2e",4354:"140899b7",4360:"cf5efa52",4420:"4b912094",4449:"a6fc15dc",4492:"797d2b6d",4496:"2dc8865d",4498:"257bbb71",4504:"dbd40737",4514:"27dec796",4520:"6d429726",4546:"07b07e37",4565:"9e328f15",4572:"fe4ccc96",4599:"bf7c8093",4610:"67dbf512",4621:"ed47ff99",4628:"ece2c60c",4650:"ccf388d9",4662:"1bd9bcac",4685:"c33f1528",4715:"1a169db8",4736:"59cc9972",4741:"b7e44de9",4757:"04bc5d79",4766:"b848873d",4770:"e08e8664",4790:"619413e4",4795:"ddd43430",4797:"a24e92db",4800:"9d49e113",4806:"9ba1d545",4850:"1edda4b7",4889:"8cc48aa5",4928:"f6b285f7",4973:"8725d7bd",4994:"8db0e666",5022:"25caa783",5043:"4eb750fd",5048:"485b714f",5060:"85dafcc6",5096:"ac21d043",5111:"3d416697",5117:"71bec3e2",5125:"9961dc89",5136:"8602b802",5148:"4ce8ec33",5165:"e6cd1b25",5176:"465f897f",5177:"4b0cc5d5",5179:"c09c0aeb",5186:"3b5c4ef0",5230:"0f837bd9",5238:"373850bf",5290:"5dabcdc2",5297:"16d6011c",5307:"f841bbef",5319:"5cb55729",5321:"1163c84e",5330:"8eef29a2",5335:"c5d4407c",5354:"7ae70604",5357:"339e8074",5359:"061f97ae",5382:"1d880a40",5402:"87a06dcd",5416:"454536b7",5434:"38b302a6",5466:"b5317363",5494:"d89549c4",5518:"271d91c6",5549:"60e4edfd",5572:"8d1c69ba",5573:"0e62dfab",5624:"7a26138e",5631:"e00d3d36",5650:"f2ef6d38",5679:"4a090bef",5694:"83373d46",5705:"13618fe0",5729:"d4e4abde",5764:"e0d7e586",5775:"c625bb9f",5776:"20ef6991",5786:"34433514",5798:"9d486139",5800:"5adf26e3",5816:"d8b735b8",5876:"5eded409",5888:"18244663",5891:"ac55866e",5894:"717d8131",5902:"25f37fe1",5911:"84a8d8dc",5915:"d2278374",5961:"94da4d70",5968:"b7e31a98",5972:"10e4f85e",5992:"3759e4a7",6029:"9fd98023",6034:"da4c4d66",6045:"d268f87f",6047:"3ce45acd",6063:"759b2e04",6069:"26c259e2",6080:"73fad05b",6126:"99519171",6127:"472b43c6",6170:"9eea0d62",6185:"09923e6c",6205:"70a91606",6232:"caeab1cd",6265:"f8168ef8",6270:"d45a88d7",6282:"2f88e266",6328:"4d6ed96d",6366:"97d9abbb",6378:"7f3a946a",6411:"afa800ee",6434:"83243f16",6444:"422a340a",6451:"19373ab6",6452:"be7ee759",6531:"3055f847",6583:"e650a5f8",6587:"55e03305",6634:"3e69dc26",6637:"6db41ef5",6651:"ab56e004",6682:"afd05bbd",6685:"f0ab0271",6729:"2c6f8d49",6741:"656447ab",6774:"59d4d618",6776:"678face5",6784:"2973d48e",6788:"f3099933",6789:"b4227022",6796:"78a452ff",6806:"ba049831",6820:"2e2a11d9",6882:"85f117f6",6904:"34a143ec",6913:"27a50bdf",6939:"ec221a4b",6963:"e0016fa2",6979:"62290c9f",7042:"fea632a1",7043:"2f71e97c",7045:"3056b902",7052:"02291fe8",7058:"baa42037",7062:"51a95f49",7084:"46ccce72",7099:"a96e6627",7156:"e7466006",7178:"8d78196e",7182:"a2c9297c",7224:"d417082d",7242:"3b54303b",7260:"242074c4",7289:"39ca4d2d",7311:"965e9a35",7322:"1e6212f8",7323:"52132b73",7329:"cbd00436",7333:"f8452755",7365:"1005464f",7395:"94da7749",7402:"8beca4e4",7460:"f44827ef",7465:"9a1311d3",7477:"70431cae",7482:"5b581069",7527:"feeaf322",7545:"550e5fc2",7560:"a872cde2",7589:"f348ba3c",7591:"c8233ce9",7614:"feb7faeb",7622:"d4e63dac",7670:"454f24ec",7686:"4fcec9f9",7706:"c2a79e40",7745:"6d753ed4",7762:"e2c4dc5b",7806:"a4e36106",7823:"8352cbf7",7835:"77cd4b75",7855:"bf368e17",7857:"24358654",7883:"80ba98ce",7884:"2a5cf3b8",7901:"a0e574c9",7922:"359ecc76",7964:"29aed9a1",7978:"5c11d803",8062:"0ac9a13a",8072:"4ed458ca",8085:"baf477fb",8089:"d536b13a",8115:"5a36561e",8116:"1e557819",8121:"d96452b6",8137:"d46b97a2",8143:"f65287c9",8145:"030bc56f",8155:"d2019583",8161:"83c5fa9a",8217:"69d18a20",8234:"f17ded5f",8237:"51dd08d9",8241:"a0ff35a2",8286:"cbc2f9e4",8302:"55794970",8332:"4321aebe",8340:"5978a0f5",8350:"07df8a75",8365:"8001cb8a",8398:"327fdb69",8431:"f9b9abd6",8435:"29ffda57",8447:"de0855ec",8458:"e09a0f9f",8479:"ddce32af",8517:"a0dcb393",8518:"b4d893eb",8552:"4345e02a",8561:"333e8ec9",8563:"f308d359",8579:"90b4d2f9",8639:"c3c9f9e2",8665:"b704a55d",8688:"d36849c6",8689:"5ad258fb",8723:"c444e203",8737:"ce7dad23",8776:"0ad26240",8787:"85b80be0",8823:"b30b5556",8827:"2d35621d",8842:"9f25a3e2",8866:"0ed0d0b1",8882:"b9678022",8885:"8df00f61",8898:"d002bcd8",8909:"94c963ef",8920:"7f82440c",8949:"df530e54",8963:"790aecdd",8965:"63b30d4f",8999:"6866e559",9039:"d282baba",9076:"e91cbfb1",9104:"bbcb2345",9113:"a60ab188",9172:"299e6d5b",9205:"7b533392",9252:"0d791a59",9260:"f163e60e",9366:"d050b664",9391:"68a8bc9f",9404:"9fcc3d3e",9406:"fe616d50",9416:"8881f2f6",9417:"1925b424",9449:"9d323225",9487:"e398da38",9489:"12bf3245",9507:"95b2efe3",9511:"47873eee",9554:"ed358e7b",9559:"f794af19",9595:"8f16bc67",9647:"c1cbf3a4",9649:"7853109b",9674:"a254ea29",9677:"1e7f79f7",9695:"93ce67be",9715:"6cb2cddf",9716:"16230602",9785:"f8a4325a",9788:"eb1221ef",9814:"322e9319",9891:"cb4f34be",9895:"b8e31ff2",9906:"298a171d",9921:"c8a87865",9922:"d22b5c39",9928:"5989f5e0",9944:"95a65c12",9950:"74f6dfb2",9968:"17466785"}[d]+".async.js"}}(),function(){__webpack_require__.miniCssF=function(d){return""+({26:"p__Classrooms__Lists__Graduation__Tasks__Edit__index",65:"p__StudentEffectivenessAnalysis__index",67:"p__Message__index",109:"p__Classrooms__Lists__ShixunHomeworks__Detail__components__CodeReview__Detail__index",119:"p__User__ThemeChange__Paths",174:"p__OnlineDevice__DeviceInfo__InfoList__Details__index",195:"p__Classrooms__Lists__GroupHomework__Detail__index",201:"p__Classrooms__ThemeChange__Students",264:"p__User__Detail__Order__pages__orderPay__index",292:"p__Classrooms__Lists__Exercise__Add__index",337:"p__Paperlibrary__Random__PreviewEdit__index",479:"p__Classrooms__Lists__GroupHomework__EditWork__index",485:"p__Question__AddOrEdit__BatchAdd__index",508:"p__Forums__Detail__id",518:"p__Shixuns__Detail__Settings__ThemeChange__index",532:"p__ExcellentCourse__index",533:"p__Classrooms__Lists__Video__Statistics__Detail__index",547:"p__Account__index",556:"p__User__Detail__Order__pages__invoice__index",559:"layouts__virtualDetail__index",576:"p__Account__Profile__Edit__index",643:"p__Classrooms__Lists__Polls__QuestionnaireInfo__index",680:"p__Innovation__index",700:"p__tasks__Jupyter__index",737:"p__Classrooms__Lists__CommonHomework__Detail__components__CodeReview__Detail__index",799:"p__User__Detail__Topics__Poll__Detail__index",879:"p__User__ThemeChange__AccountInfo",895:"p__Classrooms__Lists__Video__Items__videoInfo__index",900:"p__User__ThemeChange__Classrooms",906:"p__User__ThemeChange__CareerCertification",919:"p__knowledgegraph__Statistics__LearningPath__index",921:"p__Classrooms__Lists__Exercise__CodeDetails__index",928:"p__RestFul__Edit__index",1006:"p__RestFul__index",1043:"p__Classrooms__Lists__Graduation__Tasks__index",1045:"p__virtualSpaces__Lists__Knowledge__AddAndEdit__index",1048:"p__Classrooms__Lists__ProgramHomework__Detail__Ranking__index",1070:"p__Innovation__PublicMirror__index",1077:"p__User__ThemeTwoLogin__index",1211:"p__Classrooms__Lists__CommonHomework__EditWork__index",1253:"p__Graduations__Lists__Gradingsummary__index",1257:"p__Classrooms__Lists__ResourceRecommend__index",1276:"p__MoopCases__Success__index",1343:"p__User__Detail__ResourceAllocation__index",1423:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeAnswer__index",1427:"p__Classrooms__Lists__Statistics__index",1443:"p__EffectivenessAnalysis__index",1450:"p__Classrooms__Lists__ShixunHomeworks__Commitsummary__index",1461:"p__Graduations__Lists__Topics__index",1470:"p__User__Register__index",1475:"p__Shixuns__Detail__Dataset__JupyterData__index",1477:"p__Classrooms__ThemeChange__Assistant",1482:"p__Classrooms__Lists__Graduation__Topics__Edit__index",1512:"p__Classrooms__Lists__Exercise__AnswerCheck__index",1520:"p__Engineering__Lists__StudentList__index",1545:"p__Paperlibrary__Random__ExchangeFromProblemSet__index",1578:"p__Classrooms__Lists__Graduation__Topics__Detail__index",1581:"p__Problemset__Preview__index",1582:"p__Classrooms__Lists__GroupHomework__Add__index",1651:"p__Paths__ThemeChange__Statistics",1657:"p__Shixuns__Edit__body__Level__Challenges__EditQuestion__index",1674:"p__Classrooms__ClassicCases__index",1678:"p__Classrooms__ThemeChange__Attachment",1691:"p__OnlineMessageCenter__MessageCenterManage__index",1713:"p__virtualSpaces__Lists__Settings__index",1717:"layouts__index",1727:"p__Classrooms__Lists__CourseGroup__NotList__index",1754:"p__Classrooms__ThemeChange__Video",1783:"p__virtualSpaces__Lists__Experiment__index",1798:"p__Classrooms__ThemeChange__GroupHomework",1831:"p__Graduations__Index__index",1836:"p__Classrooms__Lists__Attendance__Webview__Teacher__index",1855:"p__MoopCases__InfoPanel__index",1880:"p__User__Detail__Order__pages__apply__index",1897:"p__User__ThemeChange__ClassManagement",1939:"p__User__Detail__Order__index",1953:"p__Problemset__NewItem__index",1962:"p__Classrooms__Lists__Engineering__index",1993:"p__Shixuns__Detail__Dataset__ThemeChange__index",2045:"p__Engineering__Lists__TeacherList__index",2099:"p__Paperlibrary__ThemeChange__index",2102:"p__Classrooms__Lists__Board__Edit__index",2130:"p__Shixuns__Detail__Repository__UploadFile__ThemeChange__index",2141:"p__Shixuns__Detail__Split__index",2203:"p__Classrooms__ThemeChange__ShixunHomeworks",2216:"p__DataSet__Index__index",2240:"p__User__Detail__Videos__Upload__index",2281:"p__Paths__ThemeChange__Detail",2303:"p__Classrooms__Lists__CommonHomework__Comment__index",2307:"p__Report__index",2338:"p__Classrooms__Lists__CommonHomework__Review__index",2339:"p__virtualSpaces__Lists__Plan__Detail__index",2396:"p__User__Detail__ResourcesCenter__index",2404:"p__Classrooms__Lists__Template__teacher__index",2412:"p__User__Detail__Videos__index",2425:"p__Classrooms__Lists__Board__Detail__index",2441:"layouts__LaboratoryLayouts__index",2443:"p__Graduations__Lists__StageModule__index",2476:"p__Colleges__index",2501:"p__Search__index",2524:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Detail__index",2539:"p__Graduations__Review__index",2548:"p__Engineering__Norm__Detail__index",2570:"p__Competitions__Detail__index",2603:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Add__index",2641:"p__Property__Procurement__index",2659:"p__User__Detail__UserPortrait__index",2707:"p__Innovation__MyDataSet__index",2748:"p__Property__index",2806:"p__User__Detail__Topics__Exercise__Detail__index",2819:"p__Classrooms__Lists__Template__detail__index",2823:"p__Engineering__Navigation__Home__index",2829:"p__Messages__Private__index",2862:"p__User__ThemeChange__ExperImentImg",2865:"p__Innovation__MyMirror__index",2884:"p__Classrooms__Lists__ProgramHomework__Comment__index",3006:"p__Engineering__index",3086:"p__Shixuns__Detail__ForkList__ThemeChange__index",3141:"p__Innovation__Detail__index",3157:"p__User__Detail__ExperImentImg__Add__index",3183:"p__Engineering__Lists__GraduationIndex__index",3212:"p__MoopCases__index",3247:"p__Paperlibrary__See__index",3260:"p__Paperlibrary__Add__index",3276:"p__Classrooms__Lists__Statistics__UserportraitStatistics__index",3282:"p__OnlineDevice__DigitalSigns__index",3317:"p__Classrooms__Lists__Graduation__Topics__Add__index",3391:"p__Classrooms__Lists__ProgramHomework__Detail__components__CodeReview__Detail__index",3433:"p__Classrooms__Lists__Exercise__Sumup__Edit__index",3442:"p__Classrooms__Lists__Board__Add__index",3443:"p__knowledgegraph__Statistics__AbilityMap__Detail",3447:"p__User__Detail__Order__pages__orderInformation__index",3451:"p__Classrooms__Lists__Statistics__StudentStatistics__Detail__index",3509:"p__HttpStatus__SixActivities",3581:"p__Shixuns__Detail__Collaborators__ThemeChange__index",3585:"p__Classrooms__Lists__Statistics__StudentSituation__index",3668:"p__Classrooms__Lists__CommonHomework__Detail__index",3685:"p__knowledgegraph__Detail__components__Content__components__AbilityMap__Edit__index",3747:"p__virtualSpaces__Lists__Homepage__index",3784:"p__Paperlibrary__Random__Detail__index",3831:"p__User__ThemeChange__VirtualSpaces",3873:"p__virtualSpaces__Lists__Lesson__index",3910:"p__HttpStatus__introduction",3951:"p__Classrooms__Lists__ProgramHomework__Detail__index",4030:"p__Classrooms__Lists__ProgramHomework__AddAndEdit__index",4048:"p__Forums__ThemeChange__index",4056:"p__IntrainCourse__index",4078:"p__Messages__Tidings__index",4093:"p__Classrooms__Lists__Attendance__Detail__index",4105:"p__Classrooms__Lists__Exercise__Answer__index",4144:"p__Problemset__Preview__New__index",4164:"p__Classrooms__Lists__Exercise__Detail__index",4216:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Edit__index",4217:"p__Classrooms__Lists__Video__Statistics__index",4227:"p__Paths__Overview__index",4259:"p__User__Detail__Order__pages__result__index",4264:"p__Forums__New__index",4297:"p__Classrooms__ThemeChange__Polls",4339:"p__knowledgegraph__Statistics__PathAtlas__Detail",4420:"p__knowledgegraph__index",4449:"p__Competitions__Exports__index",4492:"p__Graduations__Lists__StudentSelection__index",4496:"p__HttpStatus__HpcCourse",4498:"p__Shixuns__Edit__body__Level__Challenges__NewPractice__index",4504:"p__virtualSpaces__Lists__Survey__index",4514:"p__Account__Results__index",4520:"p__Account__Secure__index",4546:"p__Engineering__Lists__TrainingProgram__Add__index",4572:"p__Classrooms__Lists__ExportList__index",4599:"p__Problemset__index",4610:"p__User__Detail__LearningPath__index",4621:"p__Administration__Profession__index",4662:"p__Classrooms__Lists__GroupHomework__Review__index",4715:"p__virtualSpaces__Lists__Material__Detail__index",4736:"p__User__Detail__Projects__index",4741:"p__Problems__OjForm__NewEdit__index",4757:"p__virtualSpaces__Lists__Workplace__index",4766:"p__Administration__index",4770:"p__Classrooms__Lists__ProgramHomework__Detail__answer__index",4795:"p__Classrooms__Lists__Graduation__Tasks__Add__index",4800:"p__Engineering__Lists__GraduatedMatrix__index",4806:"p__OnlineDevice__FaultLibrary__index",4889:"p__Classrooms__Lists__Exercise__ImitateAnswer__index",4928:"p__Classrooms__Lists__LearningPath__index",4973:"p__Engineering__Evaluate__List__index",4994:"p__Problems__OjForm__index",5022:"p__Graduations__Lists__Settings__index",5043:"p__User__Detail__Topics__Poll__Edit__index",5048:"p__Classrooms__Lists__Graduation__Topics__index",5096:"p__Shixuns__Detail__AuditSituation__index",5111:"p__Terminal__index",5117:"p__User__ThemeChange__Certificate",5125:"p__Classrooms__Lists__Exercise__DetailedAnalysis__index",5148:"p__Classrooms__Lists__Polls__Answer__index",5165:"p__User__ThemeChange__Topics",5176:"p__User__Detail__Videos__Protocol__index",5177:"p__Classrooms__ThemeChange__Teachers",5179:"p__Administration__Student__Edit__index",5186:"p__Classrooms__Overview__index",5230:"p__Shixuns__Detail__Repository__AddFile__ThemeChange__index",5238:"p__virtualSpaces__Lists__Material__index",5297:"p__Classrooms__Lists__Exercise__Detail__components__DuplicateChecking__CheckDetail__index",5307:"p__Shixuns__ThemeChange__New",5319:"p__Classrooms__Lists__ProgramHomework__Detail__answer__Detail__index",5330:"p__Classrooms__ThemeChange__ShixunHomeworksComment",5335:"p__Engineering__Lists__CourseMatrix__index",5357:"p__Engineering__Lists__TrainingProgram__Edit__index",5359:"p__Messages__Detail__index",5382:"p__DataSet__Detail__index",5402:"p__User__Detail__Topics__Detail__index",5466:"p__Classrooms__ThemeChange__LiveVideo",5518:"p__Classrooms__Lists__Template__index",5549:"p__Shixuns__New__CreateImg__index",5572:"p__Paths__HigherVocationalEducation__index",5573:"p__Shixuns__Detail__Merge__index",5624:"p__Graduations__Lists__Index__index",5650:"p__Competitions__Update__index",5694:"p__Classrooms__ThemeChange__ShixunHomeworksDetail",5705:"p__virtualSpaces__Lists__Construction__index",5729:"p__Help__Index",5775:"p__Engineering__Lists__Document__index",5776:"p__User__ThemeChange__RealNameCertification",5786:"layouts__LoginAndRegister__index",5798:"p__Classrooms__Lists__Video__Statistics__UserDetail__index",5800:"p__User__ThemeChange__Competitions",5816:"p__Paperlibrary__Random__Edit__index",5888:"p__Classrooms__Lists__CommonHomework__Add__index",5891:"p__virtualSpaces__Lists__Resources__index",5894:"p__Shixuns__Detail__Repository__Commit__ThemeChange__index",5915:"p__knowledgegraph__Detail__Statistics__index",5972:"layouts__user__index",5992:"p__Classrooms__Lists__Exercise__ReviewGroup__index",6029:"p__Administration__Student__index",6063:"p__Graduations__Lists__Personmanage__index",6069:"p__virtualSpaces__Lists__Lesson__Detail__index",6080:"p__Paths__ThemeChange__New",6127:"p__Classrooms__Lists__ProgramHomework__Ranking__index",6185:"p__Classrooms__ThemeChange__Announcement",6205:"p__Classrooms__ThemeChange__VideoUpload",6265:"p__virtualSpaces__Lists__Discussion__index",6270:"p__MyProblem__index",6282:"p__Classrooms__ThemeChange__ProgramHomework",6328:"p__Shixuns__Edit__body__Warehouse__index",6366:"p__Innovation__PublicProject__index",6434:"p__User__Detail__Order__pages__records__index",6444:"p__Video__Detail__id",6451:"p__Shixuns__Detail__RankingList__ThemeChange__index",6452:"p__Innovation__PublicDataSet__index",6583:"p__User__Detail__Classrooms__index",6587:"p__User__Detail__Videos__Protocol__resource",6634:"p__Innovation__Tasks__index",6637:"p__Shixuns__Detail__Repository__ThemeChange__index",6651:"p__Engineering__Evaluate__Detail__index",6682:"p__User__ThemeChange__Shixuns",6685:"p__Classrooms__Index__index",6729:"p__Classrooms__Lists__GroupHomework__Edit__index",6741:"p__Engineering__Norm__List__index",6776:"p__Classrooms__ThemeChange__Exercise",6784:"p__Innovation__Edit__index",6789:"p__Classrooms__ThemeChange__index",6796:"p__virtualSpaces__Lists__Announcement__Detail__index",6806:"p__OnlineDevice__DeviceInfo__index",6820:"p__User__Detail__Topics__Normal__index",6882:"p__Classrooms__New__StartClass__index",6904:"p__MoopCases__FormPanel__index",6913:"p__Question__AddOrEdit__index",6963:"p__Classrooms__Lists__Engineering__Detail__index",6979:"p__knowledgegraph__SanD__index",7042:"p__knowledgegraph__Statistics__LearningPath__Detail",7043:"p__User__Detail__Topics__Exercise__Edit__index",7045:"p__Classrooms__Lists__CommonHomework__SubmitWork__index",7052:"p__OnlineDevice__DeviceInfo__InfoList__Edit__index",7058:"p__virtualSpaces__Lists__Survey__Detail__index",7062:"layouts__SimpleLayouts",7099:"p__Competitions__ThemeChange__index",7178:"p__User__BindAccount__index",7182:"p__User__ResetPassword__index",7224:"p__StatsDashboard__index",7242:"p__Innovation__MyProject__index",7260:"p__Account__Certification__index",7289:"p__tasks__ThemeChange__index",7322:"layouts__ThemeChange__ShixunDetail",7323:"p__Classrooms__ThemeChange__New",7329:"p__Classrooms__ThemeChange__Attendance",7395:"p__Classrooms__Lists__Statistics__StudentDetail__index",7402:"p__User__ThemeChange__OtherResources",7460:"p__Question__OjProblem__index",7465:"p__OnlineDevice__DeviceInfo__InfoList__ReservationInfo__index",7477:"p__virtualSpaces__Lists__Announcement__index",7482:"p__Classrooms__Lists__Exercise__Notice__index",7527:"p__MyProblem__RecordDetail__index",7545:"p__Graduations__Lists__Archives__index",7560:"p__Administration__College__index",7589:"p__virtualSpaces__Lists__DigitalTopics__index",7614:"p__Shixuns__Edit__body__Level__Challenges__RankingSetting__index",7622:"p__Classrooms__Lists__Polls__Detail__index",7670:"p__OnlineReservation__ReservationInfo__index",7745:"p__OnlineDevice__DeviceType__index",7806:"p__Classrooms__Lists__Statistics__StatisticsQuality__index",7823:"p__OnlineMessageCenter__OffSiteConfig__index",7835:"p__Problemset__ThemeChange__index",7855:"p__User__Detail__ResourcesCenter__Detail__index",7857:"p__Shixuns__Edit__body__Level__Challenges__NewQuestion__index",7883:"p__Classrooms__Lists__Exercise__WrongAnswer__index",7884:"p__Shixuns__Exports__index",7901:"p__Guidance__ThemeChange",7922:"p__Classrooms__Lists__CourseGroup__Detail__index",8062:"p__User__Detail__Topicbank__index",8072:"p__Classrooms__Lists__GroupHomework__SubmitWork__index",8085:"p__Classrooms__Lists__Exercise__Review__index",8115:"p__User__ThemeChange__DataSet",8116:"p__LaboratoryList__index",8121:"p__OnlineDevice__DeviceType__Details__index",8137:"p__knowledgegraph__Statistics__PathAtlas__index",8143:"layouts__GraduationsDetail__index",8145:"p__User__ThemeChange__ClassManagementItem",8155:"p__Shixuns__Overview__index",8217:"p__User__ThemeChange__AccountInfoEdit",8234:"p__OnlineDevice__DeviceLabel__index",8237:"p__User__Detail__Order__pages__view__index",8241:"p__virtualSpaces__Lists__Plan__index",8286:"p__User__ThemeChange__ExperImentImgDetail",8332:"p__User__ThemeChange__Detail",8398:"p__virtualSpaces__Lists__Resources__Detail__index",8431:"p__Classrooms__Lists__Exercise__Export__index",8435:"p__Classrooms__Lists__Attendance__index",8447:"p__virtualSpaces__Lists__Knowledge__index",8458:"p__Classrooms__ThemeChange__CommonHomework",8479:"p__User__ThemeChange__TeachGroup",8517:"p__User__Detail__Topics__Group__index",8552:"p__Shixuns__ThemeChange__index",8563:"p__virtualSpaces__Lists__Discussion__Detail__index",8579:"p__Competitions__ThemeChange__Edit",8665:"p__Engineering__Lists__TrainingObjectives__index",8688:"p__Shixuns__Detail__Repository__index",8689:"p__Classrooms__Lists__Statistics__VideoStatistics__index",8723:"p__Classrooms__Lists__Polls__Edit__index",8787:"p__Competitions__Entered__index",8823:"p__knowledgegraph__Detail__id",8827:"p__Classrooms__Lists__OnlineLearning__index",8866:"p__index",8882:"p__Classrooms__Lists__Graduation__Tasks__Detail__index",8885:"p__Classrooms__Lists__Statistics__StudentStatistics__index",8965:"p__Shixuns__Detail__Discuss__ThemeChange__index",8999:"p__Three__index",9039:"p__Classrooms__ThemeChange__CourseGroup",9076:"p__Account__Binding__index",9172:"p__DeviceOperationMonitoring__index",9205:"p__Shixuns__Edit__body__Level__Challenges__EditPracticeSetting__index",9366:"p__User__Login__index",9391:"p__Engineering__Lists__CurseSetting__index",9404:"monaco-editor",9406:"p__Classrooms__ThemeChange__Board",9416:"p__Graduations__Lists__Tasks__index",9449:"p__Shixuns__ThemeChange__Detail",9487:"p__LargeScreen__index",9489:"p__Engineering__Lists__CourseList__index",9507:"p__User__Detail__ResourceGuarantee__index",9511:"p__Shixuns__ThemeChange__Edit",9595:"p__knowledgegraph__Statistics__AbilityMap__index",9647:"p__Question__Index__index",9649:"p__Engineering__Lists__TrainingProgram__index",9674:"p__Shixuns__New__ImagePreview__index",9677:"p__virtualSpaces__Lists__Announcement__AddAndEdit__index",9695:"p__Classrooms__Lists__Polls__Add__index",9715:"p__Classrooms__Lists__CommonHomework__Edit__index",9716:"p__Question__OjProblem__RecordDetail__index",9785:"p__Classrooms__Lists__Template__student__index",9788:"p__Account__Profile__index",9814:"p__Shixuns__Detail__Challenges__ThemeChange__index",9891:"p__User__Detail__Videos__Success__index",9906:"p__Paths__ThemeChange__index",9921:"p__Classrooms__ExamList__index",9922:"p__Classrooms__Lists__Statistics__StudentVideo__index",9944:"p__Classrooms__Lists__Video__Statistics__StudentDetail__index"}[d]||d)+"."+{26:"91ed81ab",65:"b255d7cc",67:"249d60ed",109:"1a7fc455",119:"5a5d8480",174:"a243523d",195:"8bc56a44",201:"749be0d6",264:"5fd9b3fc",292:"61445bf5",337:"a41a57cd",479:"bba9e475",485:"d63578fe",508:"82593858",518:"a22ced2d",532:"1e2e38ec",533:"308bfa22",547:"5581debc",556:"0e9c5cde",559:"c49aa5ba",576:"e4f97d42",643:"22ded693",680:"e67e9e01",700:"6d428944",737:"98eb2f74",799:"b1dec428",879:"64e845d8",895:"ad846737",900:"5db55ef3",906:"d2399d94",919:"898b0443",921:"30cc7e9b",928:"0277270a",1006:"2263131d",1043:"e8c0878b",1045:"bce697db",1048:"dafc3f4f",1070:"e67e9e01",1077:"d7030788",1211:"bdb8faab",1253:"a97ebbb0",1257:"2c6cc63e",1276:"bbc6eeec",1343:"e4e2ebc7",1423:"5c4a76fc",1427:"3d93dfaa",1443:"0260258d",1450:"1edcc2ed",1461:"82857f62",1470:"183c9793",1475:"01717533",1477:"08b9f795",1482:"d159af07",1512:"f3653a35",1520:"f7300d0e",1545:"0da47095",1578:"efcb0bdc",1581:"efffd7c0",1582:"8e45b6ff",1651:"55e4f704",1657:"49a2443a",1674:"fdbc1e05",1678:"c99d5f02",1691:"a441e134",1713:"a4a3dbd7",1717:"10201060",1727:"4eec53ba",1754:"1f751b14",1783:"4b6779fc",1798:"d4c3f3eb",1831:"12095e09",1836:"5f0d3f7f",1855:"b92cccb4",1859:"03cdfb68",1880:"29bc2b98",1897:"35d10918",1939:"164385ec",1953:"d6d2346f",1962:"84e145fa",1993:"7cc7cf77",2045:"dcfad42d",2099:"95e6fde2",2102:"ec61f9f0",2130:"50dfcc51",2141:"5eb2f330",2203:"1115c2b7",2216:"90f34d3c",2240:"e7cce869",2281:"6a84a8a4",2303:"5a9dc2b1",2307:"b2c54321",2338:"9f251b40",2339:"bf4c6e3d",2396:"1234f229",2404:"08d36549",2412:"4490ba2a",2425:"47b23ee4",2441:"1dcd2073",2443:"2f614807",2476:"cf85a190",2501:"2441982c",2524:"6e1463fc",2539:"43c55c4d",2548:"75182034",2570:"ecab12cb",2603:"0277270a",2641:"8118465b",2659:"f6071a36",2707:"cabcb16e",2748:"4d47bb3f",2806:"066a1e3c",2819:"9455b08a",2823:"a13b21fb",2829:"a5909474",2862:"67c37a4e",2865:"6ef3cf6b",2884:"405c2ef9",3006:"7fce4e74",3086:"d0ebac07",3141:"bca89c81",3157:"d0ba1925",3183:"b2253f40",3212:"ad1521c1",3247:"50105eb7",3260:"21b54427",3276:"7bbb651d",3282:"17b4bc50",3317:"137440b7",3391:"f0e498fe",3433:"9a871026",3442:"bdf7849c",3443:"898b0443",3447:"1653d818",3451:"e3a31387",3509:"70043ca5",3581:"5877448c",3585:"5f288e7b",3668:"1a8ed604",3685:"5356e3de",3747:"c50b2b70",3784:"c81d4a51",3831:"4987c55d",3873:"9b32f93d",3910:"658d457f",3951:"9b11b034",4030:"d3df931a",4048:"5d227dab",4056:"10eacfff",4078:"aa54548e",4093:"7d2dbef2",4105:"7f9d4513",4144:"f10aa199",4164:"4751b387",4216:"0277270a",4217:"387bf824",4227:"79c3b323",4259:"ebd953ac",4264:"36917df0",4297:"0d7e3efe",4339:"9de29759",4420:"d1920d14",4449:"e68d8d58",4492:"9fd5ba05",4496:"77babddd",4498:"e1d76eaf",4504:"b05222a6",4514:"887bdbb6",4520:"e86d61a1",4546:"4101a1f2",4572:"70e5675d",4599:"6327db8f",4610:"687005a6",4621:"4c789bfa",4662:"30b29314",4715:"cf749061",4736:"aa2d53d9",4741:"c51f7784",4757:"73b754d2",4766:"b5df5a8e",4770:"674b2d2a",4795:"939f9f81",4800:"f50302a4",4806:"5d5d7b52",4889:"a91da64a",4928:"7c2ece62",4973:"129c56e8",4994:"a8674b97",5022:"81b1b86b",5043:"247e6954",5048:"aa08c681",5096:"4f6a4d00",5111:"5d09a39a",5117:"4358a2fb",5125:"57501e4a",5148:"572faeac",5165:"dc6d9bc6",5176:"9c49e7fa",5177:"b612c017",5179:"699b44a8",5186:"30047116",5230:"94dfecf3",5238:"694000a4",5297:"5426028f",5307:"5e9c4598",5319:"34217c3f",5330:"5b911c36",5335:"fec6fd9f",5357:"1fbb7d24",5359:"b254a598",5382:"28b79a42",5402:"68063d1e",5466:"90694dbb",5518:"9f425be3",5549:"39285664",5572:"c945fbf2",5573:"6ecf393c",5624:"685b3a03",5650:"f8f63f4b",5694:"3d9d34f2",5705:"df6bf207",5729:"46f9b5d4",5775:"8945cad2",5776:"e07b4b49",5786:"37a81eaa",5798:"ce1cf7da",5800:"f214b296",5816:"e88b4cdd",5888:"193a7f8f",5891:"2f4cf052",5894:"4faa35bb",5915:"bc9c3e69",5972:"79479731",5992:"419f5d2f",6029:"3f8b2a62",6063:"2c0a986c",6069:"5e1528e7",6080:"24b84084",6127:"f31505a8",6185:"4617aa93",6205:"6eef461f",6265:"ab7c4ade",6270:"5496b206",6282:"37b2b2dd",6328:"de2b9d62",6366:"079fc2d8",6434:"c5a95b1e",6444:"fd46d237",6451:"949d91e5",6452:"50a6d310",6583:"56bd7407",6587:"9c49e7fa",6634:"440b7a61",6637:"cd627031",6651:"b07fe216",6682:"d2765c91",6685:"cc9a5255",6729:"aea3b7f5",6741:"b838eb14",6776:"e7f1be47",6784:"1affe817",6789:"bb555561",6796:"88ef2b35",6806:"f8d24f6b",6820:"cebdf1cf",6882:"c2d2eada",6904:"44afaa9b",6913:"739202fe",6963:"84e145fa",6979:"a619b685",7042:"898b0443",7043:"25478869",7045:"48f6fc4c",7052:"ff439e75",7058:"7c5ff3cf",7062:"566c9e00",7099:"1b3891e9",7178:"6e47d75d",7182:"183c9793",7224:"7caf9754",7242:"4f353f61",7260:"2c380d56",7289:"03d0df5f",7322:"f372c040",7323:"3e11a2bc",7329:"4677c004",7395:"ff574c5d",7402:"c3bf3e69",7460:"dedd2038",7465:"3d1cb8a8",7477:"b45b8d42",7482:"c37a3f01",7527:"a4765b7e",7545:"88c2815e",7560:"d82e43ca",7589:"5abfc7e4",7614:"de9ee12f",7622:"79b56687",7670:"5f70d151",7745:"ad084cfa",7806:"80b7b1d6",7823:"32b9fee9",7835:"28d790d7",7855:"d9440df4",7857:"13a29416",7883:"93cf27b2",7884:"1ca6cde0",7901:"505c3349",7922:"49f2762f",8062:"8e384b9f",8072:"540f746b",8085:"a1cadc76",8115:"47861430",8116:"9e0f18a2",8121:"9377e9f7",8137:"66f37f26",8143:"baf130b5",8145:"0eefaae0",8155:"d345abd7",8217:"000115b7",8234:"06d980e9",8237:"cc24fd46",8241:"c8299739",8286:"4b01dd59",8332:"a10509a3",8398:"7bb61fdd",8431:"289b326c",8435:"c54dbac3",8447:"9c541ee4",8458:"ddd4164b",8479:"ef522a60",8517:"cccfddad",8552:"208da293",8563:"b1f16cfe",8579:"58108aeb",8665:"c52575bc",8688:"c044db56",8689:"38303690",8723:"77277ca8",8787:"121de108",8823:"75b63dcd",8827:"14015163",8866:"70a2d775",8882:"f3e42f72",8885:"de905169",8965:"f169309d",8999:"448aa22f",9039:"4e72f6be",9076:"6a501148",9172:"16a4b74b",9205:"49a3e67d",9366:"4f511490",9391:"c4736e2f",9404:"d8cf04f7",9406:"df76000e",9416:"bc1cc3b9",9449:"81d55bec",9487:"a73f5679",9489:"ee2bb5b7",9507:"af07d346",9511:"c5e68cf8",9595:"898b0443",9647:"bea72042",9649:"00fb4211",9674:"5f24eb80",9677:"18c220c4",9695:"7288e7ae",9715:"b6c6645f",9716:"a5750e0d",9785:"08d36549",9788:"781a4d20",9814:"9f959c59",9891:"512a9301",9906:"c603619a",9921:"e0db9101",9922:"33690872",9944:"1ba31055"}[d]+".chunk.css"}}(),function(){__webpack_require__.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(d){if(typeof window=="object")return window}}()}(),function(){__webpack_require__.hmd=function(d){return d=Object.create(d),d.children||(d.children=[]),Object.defineProperty(d,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+d.id)}}),d}}(),function(){__webpack_require__.o=function(d,g){return Object.prototype.hasOwnProperty.call(d,g)}}(),function(){var d={};__webpack_require__.l=function(g,e,r,i){if(d[g]){d[g].push(e);return}var l,c;if(r!==void 0)for(var f=document.getElementsByTagName("script"),u=0;u0&&arguments[0]!==void 0?arguments[0]:"";return Bn.endsWith("/")?Bn:"".concat(Bn,"/")}var yc=__webpack_require__(38127),bc=__webpack_require__(38329),Yu=__webpack_require__(8616),gl=["content"],Mu=["content"],Vc=/^(http:|https:)?\/\//;function Fu(Bn){return Vc.test(Bn)||Bn.startsWith("/")&&!Bn.startsWith("/*")||Bn.startsWith("./")||Bn.startsWith("../")}var xc=function(){return Pe.createElement("noscript",{dangerouslySetInnerHTML:{__html:"Enable JavaScript to run this app."}})},ul=function(ni){var Qi,Ma=ni.loaderData,oa=ni.htmlPageOpts,Ca=ni.manifest,ga=(Ca==null||(Qi=Ca.assets)===null||Qi===void 0?void 0:Qi["umi.css"])||"";return Pe.createElement("script",{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:"window.__UMI_LOADER_DATA__ = ".concat(JSON.stringify(Ma||{}),"; window.__UMI_METADATA_LOADER_DATA__ = ").concat(JSON.stringify(oa||{}),"; window.__UMI_BUILD_ClIENT_CSS__ = '").concat(ga,"'")}})};function Xu(Bn){var ni=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(typeof Bn=="string")return Fu(Bn)?(0,bo.Z)({src:Bn},ni):{content:Bn};if((0,Yu.Z)(Bn)==="object")return(0,bo.Z)((0,bo.Z)({},Bn),ni);throw new Error("Invalid script type: ".concat((0,Yu.Z)(Bn)))}function kf(Bn){return Fu(Bn)?{type:"link",href:Bn}:{type:"style",content:Bn}}var yu=function(ni){var Qi,Ma,oa,Ca,ga,Fs,ua=ni.htmlPageOpts;return Pe.createElement(Pe.Fragment,null,(ua==null?void 0:ua.title)&&Pe.createElement("title",null,ua.title),ua==null||(Qi=ua.favicons)===null||Qi===void 0?void 0:Qi.map(function(Zs,Ju){return Pe.createElement("link",{key:Ju,rel:"shortcut icon",href:Zs})}),(ua==null?void 0:ua.description)&&Pe.createElement("meta",{name:"description",content:ua.description}),(ua==null||(Ma=ua.keywords)===null||Ma===void 0?void 0:Ma.length)&&Pe.createElement("meta",{name:"keywords",content:ua.keywords.join(",")}),ua==null||(oa=ua.metas)===null||oa===void 0?void 0:oa.map(function(Zs){return Pe.createElement("meta",{key:Zs.name,name:Zs.name,content:Zs.content})}),ua==null||(Ca=ua.links)===null||Ca===void 0?void 0:Ca.map(function(Zs,Ju){return Pe.createElement("link",(0,bc.Z)({key:Ju},Zs))}),ua==null||(ga=ua.styles)===null||ga===void 0?void 0:ga.map(function(Zs,Ju){var cl=kf(Zs),yl=cl.type,el=cl.href,$l=cl.content;if(yl==="link")return Pe.createElement("link",{key:Ju,rel:"stylesheet",href:el});if(yl==="style")return Pe.createElement("style",{key:Ju},$l)}),ua==null||(Fs=ua.headScripts)===null||Fs===void 0?void 0:Fs.map(function(Zs,Ju){var cl=Xu(Zs),yl=cl.content,el=(0,yc.Z)(cl,gl);return Pe.createElement("script",(0,bc.Z)({dangerouslySetInnerHTML:{__html:yl},key:Ju},el))}))};function Ul(Bn){var ni,Qi=Bn.children,Ma=Bn.loaderData,oa=Bn.manifest,Ca=Bn.htmlPageOpts,ga=Bn.__INTERNAL_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Fs=Bn.mountElementId;if(ga!=null&&ga.pureHtml)return Pe.createElement("html",null,Pe.createElement("head",null,Pe.createElement(yu,{htmlPageOpts:Ca})),Pe.createElement("body",null,Pe.createElement(xc,null),Pe.createElement("div",{id:Fs},Qi),Pe.createElement(ul,{manifest:oa,loaderData:Ma,htmlPageOpts:Ca})));if(ga!=null&&ga.pureApp)return Pe.createElement(Pe.Fragment,null,Qi);var ua=typeof window=="undefined"?oa==null?void 0:oa.assets["umi.css"]:window.__UMI_BUILD_ClIENT_CSS__;return Pe.createElement("html",{suppressHydrationWarning:!0,lang:(Ca==null?void 0:Ca.lang)||"en"},Pe.createElement("head",null,Pe.createElement("meta",{charSet:"utf-8"}),Pe.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),ua&&Pe.createElement("link",{suppressHydrationWarning:!0,rel:"stylesheet",href:ua}),Pe.createElement(yu,{htmlPageOpts:Ca})),Pe.createElement("body",null,Pe.createElement(xc,null),Pe.createElement("div",{id:Fs},Qi),Pe.createElement(ul,{manifest:oa,loaderData:Ma,htmlPageOpts:Ca}),Ca==null||(ni=Ca.scripts)===null||ni===void 0?void 0:ni.map(function(Zs,Ju){var cl=Xu(Zs),yl=cl.content,el=(0,yc.Z)(cl,Mu);return Pe.createElement("script",(0,bc.Z)({dangerouslySetInnerHTML:{__html:yl},key:Ju},el))})))}var Sl=Pe.createContext(void 0);function Yc(){return Pe.useContext(Sl)}var wc=["redirect"];function ec(Bn){var ni=Bn.routesById,Qi=Bn.parentId,Ma=Bn.routeComponents,oa=Bn.useStream,Ca=oa===void 0?!0:oa;return Object.keys(ni).filter(function(ga){return ni[ga].parentId===Qi}).map(function(ga){var Fs=Rf((0,bo.Z)((0,bo.Z)({route:ni[ga],routeComponent:Ma[ga],loadingComponent:Bn.loadingComponent,reactRouter5Compat:Bn.reactRouter5Compat},Bn.reactRouter5Compat&&{hasChildren:Object.keys(ni).filter(function(Zs){return ni[Zs].parentId===ga}).length>0}),{},{useStream:Ca})),ua=ec({routesById:ni,routeComponents:Ma,parentId:Fs.id,loadingComponent:Bn.loadingComponent,reactRouter5Compat:Bn.reactRouter5Compat,useStream:Ca});return ua.length>0&&(Fs.children=ua,Fs.routes=ua),Fs})}function zl(Bn){var ni=(0,Lu.UO)(),Qi=(0,Lu.Gn)(Bn.to,ni),Ma=(0,Jl.T$)(),oa=(0,Lu.TH)();if(Ma!=null&&Ma.keepQuery){var Ca=oa.search+oa.hash;Qi+=Ca}var ga=(0,bo.Z)((0,bo.Z)({},Bn),{},{to:Qi});return Pe.createElement(Lu.Fg,(0,bc.Z)({replace:!0},ga))}function Rf(Bn){var ni=Bn.route,Qi=Bn.useStream,Ma=Qi===void 0?!0:Qi,oa=ni.redirect,Ca=(0,yc.Z)(ni,wc),ga=Bn.reactRouter5Compat?tc:kc;return(0,bo.Z)({element:oa?Pe.createElement(zl,{to:oa}):Pe.createElement(Sl.Provider,{value:{route:Bn.route}},Pe.createElement(ga,{loader:Pe.memo(Bn.routeComponent),loadingComponent:Bn.loadingComponent||yf,hasChildren:Bn.hasChildren,useStream:Ma}))},Ca)}function yf(){return Pe.createElement("div",null)}function tc(Bn){var ni=Yc(),Qi=ni.route,Ma=(0,Jl.Ov)(),oa=Ma.history,Ca=Ma.clientRoutes,ga=(0,Lu.UO)(),Fs={params:ga,isExact:!0,path:Qi.path,url:oa.location.pathname},ua=Bn.loader,Zs={location:oa.location,match:Fs,history:oa,params:ga,route:Qi,routes:Ca};return Bn.useStream?Pe.createElement(Pe.Suspense,{fallback:Pe.createElement(Bn.loadingComponent,null)},Pe.createElement(ua,Zs,Bn.hasChildren&&Pe.createElement(Lu.j3,null))):Pe.createElement(ua,Zs,Bn.hasChildren&&Pe.createElement(Lu.j3,null))}function kc(Bn){var ni=Bn.loader;return Bn.useStream?Pe.createElement(Pe.Suspense,{fallback:Pe.createElement(Bn.loadingComponent,null)},Pe.createElement(ni,null)):Pe.createElement(ni,null)}var Zl=null;function Lf(){return Zl}function Xc(Bn){var ni=Bn.history,Qi=Pe.useState({action:ni.action,location:ni.location}),Ma=(0,Ru.Z)(Qi,2),oa=Ma[0],Ca=Ma[1];return(0,Pe.useLayoutEffect)(function(){return ni.listen(Ca)},[ni]),(0,Pe.useLayoutEffect)(function(){function ga(Fs){Bn.pluginManager.applyPlugins({key:"onRouteChange",type:"event",args:{routes:Bn.routes,clientRoutes:Bn.clientRoutes,location:Fs.location,action:Fs.action,basename:Bn.basename,isFirst:!!Fs.isFirst}})}return ga({location:oa.location,action:oa.action,isFirst:!0}),ni.listen(ga)},[ni,Bn.routes,Bn.clientRoutes]),Pe.createElement(Lu.F0,{navigator:ni,location:oa.location,basename:Bn.basename},Bn.children)}function Qu(){var Bn=(0,Jl.Ov)(),ni=Bn.clientRoutes;return(0,Lu.V$)(ni)}var Ec=["innerProvider","i18nProvider","accessProvider","dataflowProvider","outerProvider","rootContainer"],Sc=function(ni,Qi){var Ma=ni.basename||"/",oa=ec({routesById:ni.routes,routeComponents:ni.routeComponents,loadingComponent:ni.loadingComponent,reactRouter5Compat:ni.reactRouter5Compat,useStream:ni.useStream});ni.pluginManager.applyPlugins({key:"patchClientRoutes",type:"event",args:{routes:oa}});for(var Ca=Pe.createElement(Xc,{basename:Ma,pluginManager:ni.pluginManager,routes:ni.routes,clientRoutes:oa,history:ni.history},Qi),ga=0,Fs=Ec;ganew Promise((Ma,oa)=>{var Ca=ua=>{try{Fs(Qi.next(ua))}catch(Zs){oa(Zs)}},ga=ua=>{try{Fs(Qi.throw(ua))}catch(Zs){oa(Zs)}},Fs=ua=>ua.done?Ma(ua.value):Promise.resolve(ua.value).then(Ca,ga);Fs((Qi=Qi.apply(Bn,ni)).next())});function P(){return Rc(this,null,function*(){return{routes:{1:{path:"/",parentId:"@@/global-layout",id:"1"},2:{path:"/paperlibrary",parentId:"1",id:"2"},3:{path:"/paperlibrary",parentId:"2",id:"3"},4:{path:"/paperlibrary/add",parentId:"2",id:"4"},5:{path:"/paperlibrary/add/:id",parentId:"2",id:"5"},6:{path:"/paperlibrary/see/:id",parentId:"2",id:"6"},7:{path:"/paperlibrary/edit_select/:id",parentId:"2",id:"7"},8:{path:"/paperlibrary/exchangequestion",parentId:"2",id:"8"},9:{path:"/paths",parentId:"1",id:"9"},10:{path:"/paths",parentId:"9",id:"10"},11:{path:"/paths/higherVocationalEducation",parentId:"9",id:"11"},12:{path:"/paths/new",parentId:"9",id:"12"},13:{path:"/paths/guidance",exact:!0,parentId:"9",id:"13"},14:{path:"/paths/:pathId",parentId:"9",id:"14"},15:{path:"/paths/:pathId/statistics",parentId:"9",id:"15"},16:{path:"/paths/:pathId/edit",parentId:"9",id:"16"},17:{path:"/paths/:pathId/:stageId/program_homework/:categoryId/add",parentId:"9",id:"17"},18:{path:"/paths/:pathId/:stageId/program_homework/:categoryId/edit",parentId:"9",id:"18"},19:{path:"/classrooms",parentId:"1",id:"19"},20:{path:"/classrooms",parentId:"19",id:"20"},21:{path:"/classrooms/examList",parentId:"19",id:"21"},22:{path:"/classrooms/classicCases",parentId:"19",id:"22"},23:{path:"/classrooms/index",parentId:"19",id:"23"},24:{path:"/classrooms/new",parentId:"19",id:"24"},25:{path:"/classrooms/:coursesId/edit",parentId:"19",id:"25"},26:{path:"/classrooms/news/:subjectid/newgold/:id",parentId:"19",id:"26"},27:{path:"/classrooms/:coursesId/newgolds/settings",parentId:"19",id:"27"},28:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/review_detail/:userId",parentId:"19",id:"28"},29:{path:"/classrooms/:coursesId/common_homework/:categoryId/review_detail/:userId",parentId:"19",id:"29"},30:{path:"/classrooms/:coursesId/program_homework/:categoryId/review_detail/:userId",parentId:"19",id:"30"},31:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/detail",parentId:"19",id:"31"},32:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/:homeworkId/comment",parentId:"19",id:"32"},33:{path:"/classrooms/:coursesId/common_homework/:categoryId/:homeworkId/comment",parentId:"19",id:"33"},34:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/:homeworkId/commitsummary",parentId:"19",id:"34"},35:{path:"/classrooms/:coursesId/group_homework/:categoryId/detail",parentId:"19",id:"35"},36:{path:"/classrooms/:coursesId/common_homework/:categoryId/detail",parentId:"19",id:"36"},37:{path:"/classrooms/:coursesId/common_homework/:categoryId/review/:userId",parentId:"19",id:"37"},38:{path:"/classrooms/:coursesId/group_homework/:commonHomeworkId/review/:userId",parentId:"19",id:"38"},39:{path:"/classrooms/:coursesId/group_homework/:commonHomeworkId/post",parentId:"19",id:"39"},40:{path:"/classrooms/:coursesId/group_homework/:commonHomeworkId/:homeworkId/edit",parentId:"19",id:"40"},41:{path:"/classrooms/:coursesId/exercise/:categoryId/detail/:userId/review_detail",parentId:"19",id:"41"},42:{path:"/classrooms/:coursesId/exercise/:categoryId/detail",parentId:"19",id:"42"},43:{path:"/classrooms/:coursesId/exercise/:categoryId/preview_select",parentId:"19",id:"43"},44:{path:"/classrooms/:coursesId/exercise/:categoryId/:login/initate_answer",parentId:"19",id:"44"},45:{path:"/classrooms/:coursesId/exercise/:categoryId/users/:login",parentId:"19",id:"45"},46:{path:"/classrooms/:coursesId/exercise/:categoryId/wrongAnswer/:login",parentId:"19",id:"46"},47:{path:"/classrooms/:coursesId/exercisenotice/:categoryId/users/:login",parentId:"19",id:"47"},48:{path:"/classrooms/:coursesId/exercise/:categoryId/random/edit",parentId:"19",id:"48"},49:{path:"/classrooms/:coursesId/exercise/:categoryId/random/preview",parentId:"19",id:"49"},50:{path:"/classrooms/:coursesId/exercise/add",parentId:"19",id:"50"},51:{path:"/classrooms/:coursesId/exercise/add/:exerciseId",parentId:"19",id:"51"},52:{path:"/classrooms/:coursesId/exercise/:exerciseId/reviews/group",parentId:"19",id:"52"},53:{path:"/classrooms/:coursesId/exercise/:exerciseId/review/:userId",parentId:"19",id:"53"},54:{path:"/classrooms/:coursesId/exercise/:exerciseId/centralizeReview/:userId",parentId:"19",id:"54"},55:{path:"/classrooms/:coursesId/exercise/:exerciseId/export_blank",parentId:"19",id:"55"},56:{path:"/classrooms/:coursesId/exercise/:exerciseId/sumup",parentId:"19",id:"56"},57:{path:"/classrooms/:coursesId/exercise/:exerciseId/sumup/edit",parentId:"19",id:"57"},58:{path:"/classrooms/:coursesId/exercise/:exerciseId/analysis/:studentId",parentId:"19",id:"58"},59:{path:"/classrooms/:coursesId/shixun_homework/:exerciseId/analysis/:studentId",parentId:"19",id:"59"},60:{path:"/classrooms/:coursesId/exercise/:exerciseId/analysis/:studentId/code",parentId:"19",id:"60"},61:{path:"/classrooms/:coursesId/shixun_homework/:exerciseId/analysis/:studentId/code",parentId:"19",id:"61"},62:{path:"/classrooms/:coursesId/graduation_topics/:categoryId/detail",parentId:"19",id:"62"},63:{path:"/classrooms/:coursesId/graduation_topics/:categoryId/add",parentId:"19",id:"63"},64:{path:"/classrooms/:coursesId/graduation_topics/:categoryId/edit",parentId:"19",id:"64"},65:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId/add",parentId:"19",id:"65"},66:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId/edit",parentId:"19",id:"66"},67:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId/detail",parentId:"19",id:"67"},68:{path:"/classrooms/:coursesId/common_homework/:categoryId/add",parentId:"19",id:"68"},69:{path:"/classrooms/:coursesId/common_homework/:categoryId/edit",parentId:"19",id:"69"},70:{path:"/classrooms/:coursesId/common_homework/:commonHomeworkId/post",parentId:"19",id:"70"},71:{path:"/classrooms/:coursesId/common_homework/:commonHomeworkId/:homeworkId/edit",parentId:"19",id:"71"},72:{path:"/classrooms/:coursesId/group_homework/:categoryId/add",parentId:"19",id:"72"},73:{path:"/classrooms/:coursesId/group_homework/:categoryId/edit",parentId:"19",id:"73"},74:{path:"/classrooms/:coursesId/poll/:categoryId/add",parentId:"19",id:"74"},75:{path:"/classrooms/:coursesId/poll/:categoryId/edit",parentId:"19",id:"75"},76:{path:"/classrooms/:coursesId/poll/:categoryId/detail",parentId:"19",id:"76"},77:{path:"/classrooms/:coursesId/poll/:categoryId/users/:login",parentId:"19",id:"77"},78:{path:"/classrooms/:coursesId/poll/:categoryId/questionnaireInfo/:login",parentId:"19",id:"78"},79:{path:"/classrooms/:coursesId/board/:categoryId/Add",parentId:"19",id:"79"},80:{path:"/classrooms/:coursesId/board/:categoryId/Edit/:boardId",parentId:"19",id:"80"},81:{path:"/classrooms/:coursesId/board/:categoryId/Detail/:boardId",parentId:"19",id:"81"},82:{path:"/classrooms/:courseId/template/:templateId",parentId:"19",id:"82"},83:{path:"/classrooms/:courseId/common_homework/:homeworkId/lab-report/:reportId",parentId:"19",id:"83"},84:{path:"/classrooms/guidance",parentId:"19",id:"84"},85:{path:"/classrooms/:courseId/common_homework/:homeworkId/lab-report-view/:workId",parentId:"19",id:"85"},86:{path:"/classrooms/:coursesId/exercise/:categoryId/users/:login/check",parentId:"19",id:"86"},87:{path:"/classrooms/:coursesId/Studentdetail/:login",parentId:"19",id:"87"},88:{path:"/classrooms/:coursesId/StudentSituation/:categoryId/:login",parentId:"19",id:"88"},89:{path:"/classrooms/:coursesId/engineering/datail",parentId:"19",id:"89"},90:{path:"/classrooms/:coursesId/program_homework/:categoryId/add",parentId:"19",id:"90"},91:{path:"/classrooms/:coursesId/program_homework/:categoryId/edit",parentId:"19",id:"91"},92:{path:"/classrooms/:coursesId/program_homework/ranking",parentId:"19",id:"92"},93:{path:"/classrooms/:coursesId/program_homework/:categoryId/detail",parentId:"19",id:"93"},94:{path:"/classrooms/:coursesId/program_homework/:categoryId/:homeworkId/ranking",parentId:"19",id:"94"},95:{path:"/classrooms/:coursesId/program_homework/:categoryId/:homeworkId/:user_id/comment",parentId:"19",id:"95"},96:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer",parentId:"19",id:"96"},97:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer/add",parentId:"19",id:"97"},98:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer/:answerid/edit",parentId:"19",id:"98"},99:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer/:answerid/detail",parentId:"19",id:"99"},100:{path:"/classrooms/:videoId/video_info",parentId:"19",id:"100"},101:{path:"/classrooms/",parentId:"19",id:"101"},102:{path:"/classrooms/:coursesId/shixun_homework/:categoryId",parentId:"101",id:"102"},103:{path:"/classrooms/:coursesId/shixun_homework",parentId:"101",id:"103"},104:{path:"/classrooms/:coursesId/graduation_topics/:categoryId",parentId:"101",id:"104"},105:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId",parentId:"101",id:"105"},106:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId",parentId:"101",id:"106"},107:{path:"/classrooms/:coursesId/exercise/:categoryId",parentId:"101",id:"107"},108:{path:"/classrooms/:coursesId/exercise",parentId:"101",id:"108"},109:{path:"/classrooms/:coursesId/poll/:categoryId",parentId:"101",id:"109"},110:{path:"/classrooms/:coursesId/poll",parentId:"101",id:"110"},111:{path:"/classrooms/:coursesId/common_homework/:categoryId",parentId:"101",id:"111"},112:{path:"/classrooms/:coursesId/common_homework",parentId:"101",id:"112"},113:{path:"/classrooms/:coursesId/group_homework/:categoryId",parentId:"101",id:"113"},114:{path:"/classrooms/:coursesId/group_homework",parentId:"101",id:"114"},115:{path:"/classrooms/:coursesId/teachers",parentId:"101",id:"115"},116:{path:"/classrooms/:coursesId/students",parentId:"101",id:"116"},117:{path:"/classrooms/:coursesId/assistant",parentId:"101",id:"117"},118:{path:"/classrooms/:coursesId/program_homework",parentId:"101",id:"118"},119:{path:"/classrooms/:coursesId/program_homework/:categoryId",parentId:"101",id:"119"},120:{path:"/classrooms/:coursesId/engineering",parentId:"101",id:"120"},121:{path:"/classrooms/:coursesId/learning_path",parentId:"101",id:"121"},122:{path:"/classrooms/:coursesId/resource_recommend",parentId:"101",id:"122"},123:{path:"/classrooms/:coursesId/attendance",parentId:"101",id:"123"},124:{path:"/classrooms/:coursesId/attendance/StudetnSign",parentId:"101",id:"124"},125:{path:"/classrooms/:coursesId/attendance/:categoryId/:tabId/detail",parentId:"101",id:"125"},126:{path:"/classrooms/:coursesId/announcement",parentId:"101",id:"126"},127:{path:"/classrooms/:coursesId/announcement/:categoryId",parentId:"101",id:"127"},128:{path:"/classrooms/:coursesId/online_learning",parentId:"101",id:"128"},129:{path:"/classrooms/:coursesId/online_learning/:categoryId",parentId:"101",id:"129"},130:{path:"/classrooms/:coursesId/attachment/:categoryId",parentId:"101",id:"130"},131:{path:"/classrooms/:coursesId/attachment",parentId:"101",id:"131"},132:{path:"/classrooms/:coursesId/video",parentId:"101",id:"132"},133:{path:"/classrooms/:coursesId/video/:categoryId",parentId:"101",id:"133"},134:{path:"/classrooms/:coursesId/video/:categoryId/statistics",parentId:"101",id:"134"},135:{path:"/classrooms/:coursesId/video/:username/upload",parentId:"101",id:"135"},136:{path:"/classrooms/:coursesId/video/:categoryId/statistics/:videoId",parentId:"101",id:"136"},137:{path:"/classrooms/:coursesId/video/:categoryId/statistics/:videoId/:userId",parentId:"101",id:"137"},138:{path:"/classrooms/:coursesId/live_video/:categoryId",parentId:"101",id:"138"},139:{path:"/classrooms/:coursesId/live_video",parentId:"101",id:"139"},140:{path:"/classrooms/:coursesId/video/:categoryId/studentstatistics",parentId:"101",id:"140"},141:{path:"/classrooms/:coursesId/board/:categoryId",parentId:"101",id:"141"},142:{path:"/classrooms/:coursesId/board",parentId:"101",id:"142"},143:{path:"/classrooms/:coursesId/course_group",parentId:"101",id:"143"},144:{path:"/classrooms/:coursesId/course_group/:categoryId",parentId:"101",id:"144"},145:{path:"/classrooms/:coursesId/course_group/:categoryId/detail",parentId:"101",id:"145"},146:{path:"/classrooms/:coursesId/not_course_group/:categoryId",parentId:"101",id:"146"},147:{path:"/classrooms/:coursesId/not_course_group",parentId:"101",id:"147"},148:{path:"/classrooms/:coursesId/statistics/",parentId:"101",id:"148"},149:{path:"/classrooms/:coursesId/statistics/:categoryId",parentId:"101",id:"149"},150:{path:"/classrooms/:coursesId/statistics_video/:categoryId",parentId:"101",id:"150"},151:{path:"/classrooms/:coursesId/statistics_quality/:categoryId",parentId:"101",id:"151"},152:{path:"/classrooms/:coursesId/statistics_user_portrait/:categoryId",parentId:"101",id:"152"},153:{path:"/classrooms/:coursesId/student_statistics/:categoryId",parentId:"101",id:"153"},154:{path:"/classrooms/:coursesId/student_statistics/:categoryId/:listId/:type",parentId:"101",id:"154"},155:{path:"/classrooms/:coursesId/video_statistics/:categoryId/Student/:studentid",parentId:"101",id:"155"},156:{path:"/classrooms/:coursesId/exportlist/:type",parentId:"101",id:"156"},157:{path:"/classrooms/:coursesId",parentId:"101",id:"157"},158:{path:"/classrooms/:coursesId/template",parentId:"101",id:"158"},159:{path:"/competitions",parentId:"1",id:"159"},160:{path:"/competitions/index",parentId:"159",id:"160"},161:{path:"/competitions/:identifier/list",parentId:"159",id:"161"},162:{path:"/competitions/exports",parentId:"159",id:"162"},163:{path:"/competitions",parentId:"159",id:"163"},164:{path:"/competitions/:identifier",parentId:"159",id:"164"},165:{path:"/competitions/index/:identifier",parentId:"159",id:"165"},166:{path:"/competitions/:identifier/detail/enroll",parentId:"159",id:"166"},167:{path:"/competitions/:identifier/detail/UpdateTeanname/:Teannameid",parentId:"159",id:"167"},168:{path:"/competitions/:identifier/detail/teamDetail/:Teamid",parentId:"159",id:"168"},169:{path:"/competitions/detail/:identifier",parentId:"159",id:"169"},170:{path:"/forums",parentId:"1",id:"170"},171:{path:"/forums",parentId:"170",id:"171"},172:{path:"/forums/categories/:memoType",parentId:"170",id:"172"},173:{path:"/forums/new",parentId:"170",id:"173"},174:{path:"/forums/:memoId/edit",parentId:"170",id:"174"},175:{path:"/forums/:memoId",parentId:"170",id:"175"},176:{path:"/problemset",parentId:"1",id:"176"},177:{path:"/problemset",parentId:"176",id:"177"},178:{path:"/problemset/newitem",parentId:"176",id:"178"},179:{path:"/problemset/:type/:id",parentId:"176",id:"179"},180:{path:"/problemset/preview",parentId:"176",id:"180"},181:{path:"/problemset/preview_new",parentId:"176",id:"181"},182:{path:"/problemset/preview_select",parentId:"176",id:"182"},183:{path:"/shixuns",parentId:"1",id:"183"},184:{path:"/shixuns",parentId:"183",id:"184"},185:{path:"/shixuns/exports",parentId:"183",id:"185"},186:{path:"/shixuns/new",parentId:"183",id:"186"},187:{path:"/shixuns/new/CreateImg",parentId:"183",id:"187"},188:{path:"/shixuns/new/:id/imagepreview",parentId:"183",id:"188"},189:{path:"/shixuns/:id/Merge",parentId:"183",id:"189"},190:{path:"/shixuns/:id/Split",parentId:"183",id:"190"},191:{path:"/shixuns/:id/edit",parentId:"183",id:"191"},192:{path:"shixuns/:id/edit/warehouse",parentId:"191",id:"192"},193:{path:"/shixuns/:id/edit/newquestion",parentId:"191",id:"193"},194:{path:"/shixuns/:id/edit/:challengesId/editquestion",parentId:"191",id:"194"},195:{path:"/shixuns/:id/edit/:challengesId/editquestion/:questionId",parentId:"191",id:"195"},196:{path:"/shixuns/:id/edit/new",parentId:"191",id:"196"},197:{path:"/shixuns/:id/edit/:challengesId/editcheckpoint",parentId:"191",id:"197"},198:{path:"/shixuns/:id/edit/:challengesId/tab=2",parentId:"191",id:"198"},199:{path:"/shixuns/:id/edit/:challengesId/tab=3",parentId:"191",id:"199"},200:{path:"/shixuns/:id/edit/:challengesId/tab=4",parentId:"191",id:"200"},201:{path:"/shixuns/:id",parentId:"183",id:"201"},202:{path:"/shixuns/:id/challenges",parentId:"201",id:"202"},203:{path:"/shixuns/:id/repository",parentId:"201",id:"203"},204:{path:"/shixuns/:id/secret_repository",parentId:"201",id:"204"},205:{path:"/shixuns/:id/collaborators",parentId:"201",id:"205"},206:{path:"/shixuns/:id/dataset",parentId:"201",id:"206"},207:{path:"/shixuns/:id/dataset/jupyterEdit",parentId:"201",id:"207"},208:{path:"/shixuns/:id/shixun_discuss",parentId:"201",id:"208"},209:{path:"/shixuns/:id/ranking_list",parentId:"201",id:"209"},210:{path:"/shixuns/:id/settings",parentId:"201",id:"210"},211:{path:"/shixuns/:id/repository/:repoId/commits",parentId:"201",id:"211"},212:{path:"/shixuns/:id/secret_repository/:repoId/commits",parentId:"201",id:"212"},213:{path:"/shixuns/:id/repository/upload_file",parentId:"201",id:"213"},214:{path:"/shixuns/:id/secret_repository/upload_file",parentId:"201",id:"214"},215:{path:"/shixuns/:id/repository/add_file",parentId:"201",id:"215"},216:{path:"/shixuns/:id/secret_repository/add_file",parentId:"201",id:"216"},217:{path:"/shixuns/:id/repository/master/shixun_show/:fileId",exact:!1,parentId:"201",id:"217"},218:{path:"/shixuns/:id/secret_repository/master/shixun_show/:fileId",exact:!1,parentId:"201",id:"218"},219:{path:"/shixuns/:id/audit_situation",parentId:"201",id:"219"},220:{path:"/shixuns/:id/fork_list",parentId:"201",id:"220"},221:{path:"/shixuns/:id/skill_tags",parentId:"201",id:"221"},222:{path:"/users",parentId:"1",id:"222"},223:{path:"/users/:username/videos/protocol",parentId:"222",id:"223"},224:{path:"/users/:username/videos/resourceProtocol",parentId:"222",id:"224"},225:{path:"/users/:username/videos/success",parentId:"222",id:"225"},226:{path:"/users/:username/topicbank/:topicstype",parentId:"222",id:"226"},227:{path:"/users/:username/topics/:topicId/:topictype/normal/detail",parentId:"222",id:"227"},228:{path:"/users/:username/topics/:topicId/:topictype/group/detail",parentId:"222",id:"228"},229:{path:"/users/:username/topics/:topicId/:topictype/normal/edit",parentId:"222",id:"229"},230:{path:"/users/:username/topics/:topicId/:topictype/group/edit",parentId:"222",id:"230"},231:{path:"/users/:username/topics/:topicId/:topictype/exercise/edit",parentId:"222",id:"231"},232:{path:"/users/:username/topics/:topicId/:topictype/exercise/detail",parentId:"222",id:"232"},233:{path:"/users/:username/topics/:topicId/:topictype/poll/edit",parentId:"222",id:"233"},234:{path:"/users/:username/topics/:topicId/:topictype/poll/detail",parentId:"222",id:"234"},235:{path:"/users/:username/experiment-img/add",parentId:"222",id:"235"},236:{path:"/users/:username",parentId:"222",id:"236"},237:{path:"/users/:username",parentId:"236",id:"237"},238:{path:"/users/:username/baseInfo/edit",parentId:"236",id:"238"},239:{path:"/users/:username/baseInfo",parentId:"236",id:"239"},240:{path:"/users/:username/realNameCertification",parentId:"236",id:"240"},241:{path:"/users/:username/careerCertification",parentId:"236",id:"241"},242:{path:"/users/:username/classrooms",parentId:"236",id:"242"},243:{path:"/users/:username/shixuns",parentId:"236",id:"243"},244:{path:"/users/:username/dataSet",parentId:"236",id:"244"},245:{path:"/users/:username/userPortrait",parentId:"236",id:"245"},246:{path:"/users/:username/learningPath",parentId:"236",id:"246"},247:{path:"/users/:username/teach-group",parentId:"236",id:"247"},248:{path:"/users/:username/competitions",parentId:"236",id:"248"},249:{path:"/users/:username/experiment-img",parentId:"236",id:"249"},250:{path:"/users/:username/experiment-img/:experid/detail",parentId:"236",id:"250"},251:{path:"/users/:username/certificate",parentId:"236",id:"251"},252:{path:"/users/:username/otherResources",parentId:"236",id:"252"},253:{path:"/users/:username/classmanagement",parentId:"236",id:"253"},254:{path:"/users/:username/classmanagement/:couserid",parentId:"236",id:"254"},255:{path:"/users/:username/paths",parentId:"236",id:"255"},256:{path:"/users/:username/projects",parentId:"236",id:"256"},257:{path:"/users/:username/videos",parentId:"236",id:"257"},258:{path:"/users/:username/videos/upload",parentId:"236",id:"258"},259:{path:"/users/:username/topics/:topicstype",parentId:"236",id:"259"},260:{path:"/users/:username/vspaces",parentId:"236",id:"260"},261:{path:"/users/:username/resourcesCenter",parentId:"236",id:"261"},262:{path:"/users/:username/resourcesCenter/:id/detail",parentId:"236",id:"262"},263:{path:"/users/:username/resourceGuarantee",parentId:"236",id:"263"},264:{path:"/users/:username/resourceAllocation",parentId:"236",id:"264"},265:{parentId:"1",id:"265"},266:{path:"/problems",parentId:"265",id:"266"},267:{path:"/problems",parentId:"266",id:"267"},268:{path:"/problems/batchAdd",parentId:"266",id:"268"},269:{path:"/problems/newcreate",parentId:"265",id:"269"},270:{path:"/problems/newedit/:id",exact:!0,parentId:"265",id:"270"},271:{path:"/problems/:id/edit",exact:!0,parentId:"265",id:"271"},272:{path:"/problems/new",exact:!0,parentId:"265",id:"272"},273:{path:"/problems/:id/oj/:save_identifier",parentId:"265",id:"273"},274:{path:"/problems/:id/record-detail/:submitId",parentId:"265",id:"274"},275:{path:"/problems/add",parentId:"265",id:"275"},276:{path:"/problems/:id/ojedit",parentId:"265",id:"276"},277:{path:"/engineering",parentId:"1",id:"277"},278:{path:"/engineering",parentId:"277",id:"278"},279:{path:"/engineering/teacherList",parentId:"278",id:"279"},280:{path:"/engineering/studentList",parentId:"278",id:"280"},281:{path:"/engineering/training/program",parentId:"278",id:"281"},282:{path:"/engineering/training/program/add",parentId:"278",id:"282"},283:{path:"/engineering/training/program/edit",parentId:"278",id:"283"},284:{path:"/engineering/training/objectives",parentId:"278",id:"284"},285:{path:"/engineering/graduated/index",parentId:"278",id:"285"},286:{path:"/engineering/graduated/matrix",parentId:"278",id:"286"},287:{path:"/engineering/course/list",parentId:"278",id:"287"},288:{path:"/engineering/course/setting",parentId:"278",id:"288"},289:{path:"/engineering/course/matrix",parentId:"278",id:"289"},290:{path:"/engineering/navigation",parentId:"278",id:"290"},291:{path:"/engineering/evaluate/course",parentId:"278",id:"291"},292:{path:"/engineering/evaluate/course/:ec_year_id/:id",parentId:"278",id:"292"},293:{path:"/engineering/evaluate/norm",parentId:"278",id:"293"},294:{path:"/engineering/evaluate/document",parentId:"278",id:"294"},295:{path:"/engineering/evaluate/norm/:ec_year_id/:id",parentId:"278",id:"295"},296:{path:"/engineering/*",redirect:"/404",parentId:"278",id:"296"},297:{path:"/innovation",parentId:"1",id:"297"},298:{path:"/innovation/tasks/:taskId",parentId:"297",id:"298"},299:{path:"/innovation",parentId:"297",id:"299"},300:{path:"/innovation/project",parentId:"299",id:"300"},301:{path:"/innovation/dataset",parentId:"299",id:"301"},302:{path:"/innovation/mirror",parentId:"299",id:"302"},303:{path:"/innovation/my-project",parentId:"299",id:"303"},304:{path:"/innovation/my-dataset",parentId:"299",id:"304"},305:{path:"/innovation/my-mirror",parentId:"299",id:"305"},306:{path:"/innovation/project/create",parentId:"299",id:"306"},307:{path:"/innovation/project/edit/:id",parentId:"299",id:"307"},308:{path:"/innovation/project/detail/:taskId",parentId:"299",id:"308"},309:{path:"/tasks",parentId:"1",id:"309"},310:{path:"/tasks/:taskId",exact:!0,parentId:"309",id:"310"},311:{path:"/tasks/:identifier/jupyter/",exact:!0,parentId:"309",id:"311"},312:{path:"/tasks/:courseId/:homeworkId/:taskId",exact:!0,parentId:"309",id:"312"},313:{path:"/tasks/jupyter/:courseId/:homeworkId/:identifier",exact:!0,parentId:"309",id:"313"},314:{path:"/tasks/:courseId/:exerciseId/:taskId/exercise",exact:!0,parentId:"309",id:"314"},315:{path:"/myproblems",parentId:"1",id:"315"},316:{path:"/myproblems/:id/record-detail/:submitId",exact:!0,parentId:"315",id:"316"},317:{path:"/myproblems/:id",exact:!0,parentId:"315",id:"317"},318:{path:"/account",parentId:"1",id:"318"},319:{path:"/account",parentId:"318",id:"319"},320:{path:"/account/profile",parentId:"319",id:"320"},321:{path:"/account/profile/edit",parentId:"319",id:"321"},322:{path:"/account/certification",parentId:"319",id:"322"},323:{path:"/account/secure",parentId:"319",id:"323"},324:{path:"/account/binding",parentId:"319",id:"324"},325:{path:"/account/Results",parentId:"319",id:"325"},326:{path:"/ch",parentId:"1",id:"326"},327:{path:"/ch/rest/edit/:categoryId/:id",exact:!0,parentId:"326",id:"327"},328:{path:"/ch/rest/",exact:!0,parentId:"326",id:"328"},329:{path:"/ch/rest/:id",exact:!0,parentId:"326",id:"329"},330:{path:"/order",parentId:"1",id:"330"},331:{path:"/order",parentId:"330",id:"331"},332:{path:"/order/invoice",parentId:"330",id:"332"},333:{path:"/order/records",parentId:"330",id:"333"},334:{path:"/order/apply",parentId:"330",id:"334"},335:{path:"/order/view",parentId:"330",id:"335"},336:{path:"/order/:courseId/information",parentId:"330",id:"336"},337:{path:"/order/:courseId/pay",parentId:"330",id:"337"},338:{path:"/order/:orderNum/result",parentId:"330",id:"338"},339:{path:"/messages",parentId:"1",id:"339"},340:{path:"/messages/:userId/user_tidings",parentId:"339",id:"340"},341:{path:"/messages/:userId/private_messages",parentId:"339",id:"341"},342:{path:"/messages/:userId/message_detail",parentId:"339",id:"342"},343:{path:"/vtrs",parentId:"1",id:"343"},344:{path:"/vtrs/:virtual_spacesId",parentId:"343",id:"344"},345:{path:"/vtrs/:virtual_spacesId",exact:!0,parentId:"344",id:"345"},346:{path:"/vtrs/:virtual_spacesId/workplace",exact:!0,parentId:"344",id:"346"},347:{path:"/vtrs/:virtual_spacesId/experiment",parentId:"344",id:"347"},348:{path:"/vtrs/:virtual_spacesId/announcement",parentId:"344",id:"348"},349:{path:"/vtrs/:virtual_spacesId/announcement/add",parentId:"344",id:"349"},350:{path:"/vtrs/:virtual_spacesId/announcement/:id/edit",parentId:"344",id:"350"},351:{path:"/vtrs/:virtual_spacesId/announcement/:id/detail",parentId:"344",id:"351"},352:{path:"/vtrs/:virtual_spacesId/survey",parentId:"344",id:"352"},353:{path:"/vtrs/:virtual_spacesId/survey/:id/detail",parentId:"344",id:"353"},354:{path:"/vtrs/:virtual_spacesId/knowledge",parentId:"344",id:"354"},355:{path:"/vtrs/:virtual_spacesId/knowledge/add",parentId:"344",id:"355"},356:{path:"/vtrs/:virtual_spacesId/knowledge/:id/edit",parentId:"344",id:"356"},357:{path:"/vtrs/:virtual_spacesId/material",parentId:"344",id:"357"},358:{path:"/vtrs/:virtual_spacesId/material/:id/detail",parentId:"344",id:"358"},359:{path:"/vtrs/:virtual_spacesId/lesson",parentId:"344",id:"359"},360:{path:"/vtrs/:virtual_spacesId/lesson/:id/detail",parentId:"344",id:"360"},361:{path:"/vtrs/:virtual_spacesId/lesson/:id/detail/:fileid",parentId:"344",id:"361"},362:{path:"/vtrs/:virtual_spacesId/discussion",parentId:"344",id:"362"},363:{path:"/vtrs/:virtual_spacesId/discussion/:id/detail",parentId:"344",id:"363"},364:{path:"/vtrs/:virtual_spacesId/discussion/:id/detail/:fileid",parentId:"344",id:"364"},365:{path:"/vtrs/:virtual_spacesId/settings",parentId:"344",id:"365"},366:{path:"/vtrs/:virtual_spacesId/resources",parentId:"344",id:"366"},367:{path:"/vtrs/:virtual_spacesId/resources/:id/detail",parentId:"344",id:"367"},368:{path:"/vtrs/:virtual_spacesId/Plan",parentId:"344",id:"368"},369:{path:"/vtrs/:virtual_spacesId/plan/:id/detail",parentId:"344",id:"369"},370:{path:"/vtrs/:virtual_spacesId/digtal",parentId:"344",id:"370"},371:{path:"/vtrs/:virtual_spacesId/homepage",parentId:"344",id:"371"},372:{path:"/vtrs/:virtual_spacesId/*",parentId:"344",id:"372"},373:{path:"/101",parentId:"1",id:"373"},374:{path:"/101/:virtual_spacesId",parentId:"373",id:"374"},375:{path:"/101/:virtual_spacesId",exact:!0,parentId:"374",id:"375"},376:{path:"/101/:virtual_spacesId/workplace",exact:!0,parentId:"374",id:"376"},377:{path:"/101/:virtual_spacesId/experiment",parentId:"374",id:"377"},378:{path:"/101/:virtual_spacesId/announcement",parentId:"374",id:"378"},379:{path:"/101/:virtual_spacesId/announcement/add",parentId:"374",id:"379"},380:{path:"/101/:virtual_spacesId/announcement/:id/edit",parentId:"374",id:"380"},381:{path:"/101/:virtual_spacesId/announcement/:id/detail",parentId:"374",id:"381"},382:{path:"/101/:virtual_spacesId/survey",parentId:"374",id:"382"},383:{path:"/101/:virtual_spacesId/survey/:id/detail",parentId:"374",id:"383"},384:{path:"/101/:virtual_spacesId/knowledge",parentId:"374",id:"384"},385:{path:"/101/:virtual_spacesId/knowledge/add",parentId:"374",id:"385"},386:{path:"/101/:virtual_spacesId/knowledge/:id/edit",parentId:"374",id:"386"},387:{path:"/101/:virtual_spacesId/material",parentId:"374",id:"387"},388:{path:"/101/:virtual_spacesId/material/:id/detail",parentId:"374",id:"388"},389:{path:"/101/:virtual_spacesId/lesson",parentId:"374",id:"389"},390:{path:"/101/:virtual_spacesId/lesson/:id/detail",parentId:"374",id:"390"},391:{path:"/101/:virtual_spacesId/lesson/:id/detail/:fileid",parentId:"374",id:"391"},392:{path:"/101/:virtual_spacesId/discussion",parentId:"374",id:"392"},393:{path:"/101/:virtual_spacesId/discussion/:id/detail",parentId:"374",id:"393"},394:{path:"/101/:virtual_spacesId/discussion/:id/detail/:fileid",parentId:"374",id:"394"},395:{path:"/101/:virtual_spacesId/settings",parentId:"374",id:"395"},396:{path:"/101/:virtual_spacesId/resources",parentId:"374",id:"396"},397:{path:"/101/:virtual_spacesId/resources/:id/detail",parentId:"374",id:"397"},398:{path:"/101/:virtual_spacesId/Plan",parentId:"374",id:"398"},399:{path:"/101/:virtual_spacesId/plan/:id/detail",parentId:"374",id:"399"},400:{path:"/101/:virtual_spacesId/digtal",parentId:"374",id:"400"},401:{path:"/101/:virtual_spacesId/homepage",parentId:"374",id:"401"},402:{path:"/101/:virtual_spacesId/*",parentId:"374",id:"402"},403:{path:"/administration",parentId:"1",id:"403"},404:{path:"/administration",parentId:"403",id:"404"},405:{path:"/administration/college",parentId:"404",id:"405"},406:{path:"/administration/student",parentId:"404",id:"406"},407:{path:"/administration/student/:studentId/edit",parentId:"404",id:"407"},408:{path:"/administration/profession",parentId:"404",id:"408"},409:{path:"/graduations",parentId:"1",id:"409"},410:{path:"/graduations",exact:!0,parentId:"409",id:"410"},411:{path:"/graduations/:id/:moduleKey/:moduleId/review/:itemId",exact:!0,parentId:"409",id:"411"},412:{path:"/graduations/:id",parentId:"409",id:"412"},413:{path:"/graduations/:id/index",parentId:"412",id:"413"},414:{path:"/graduations/:id/topics",parentId:"412",id:"414"},415:{path:"/graduations/:id/student_selection",parentId:"412",id:"415"},416:{path:"/graduations/:id/tasks",parentId:"412",id:"416"},417:{path:"/graduations/:id/opening_report",parentId:"412",id:"417"},418:{path:"/graduations/:id/midterm_report",parentId:"412",id:"418"},419:{path:"/graduations/:id/thesis",parentId:"412",id:"419"},420:{path:"/graduations/:id/final_defense",parentId:"412",id:"420"},421:{path:"/graduations/:id/final_thesis",parentId:"412",id:"421"},422:{path:"/graduations/:id/settings",parentId:"412",id:"422"},423:{path:"/graduations/:id/teachers",parentId:"412",id:"423"},424:{path:"/graduations/:id/students",parentId:"412",id:"424"},425:{path:"/graduations/:id/archives",parentId:"412",id:"425"},426:{path:"/graduations/:id/grading_summary",parentId:"412",id:"426"},427:{path:"/dataset",parentId:"1",id:"427"},428:{path:"/dataset",exact:!0,parentId:"427",id:"428"},429:{path:"/dataset/:id/detail",exact:!0,parentId:"427",id:"429"},430:{path:"/knowledgegraph",parentId:"1",id:"430"},431:{path:"/knowledgegraph",parentId:"430",id:"431"},432:{path:"/knowledgegraph/:pathId/sanD",parentId:"430",id:"432"},433:{path:"/knowledgegraph/:pathId",parentId:"430",id:"433"},434:{path:"/knowledgegraph/:pathId/abilityMap/edit/:abilityMapId",parentId:"430",id:"434"},435:{path:"/knowledgegraph/:pathId/abilityMap/detail/:abilityId",parentId:"430",id:"435"},436:{path:"/knowledgegraph/:pathId/statistics",parentId:"430",id:"436"},437:{parentId:"430",id:"437"},438:{path:"/knowledgegraph/:pathId/statistics/learningpath/:learningpathId",parentId:"437",id:"438"},439:{path:"/knowledgegraph/:pathId/statistics/learningpath/:learningpathId/detail/:detailId",parentId:"437",id:"439"},440:{path:"/knowledgegraph/:pathId/statistics/pathatlas/:learningpathId",parentId:"437",id:"440"},441:{path:"/knowledgegraph/:pathId/statistics/pathatlas/:learningpathId/detail",parentId:"437",id:"441"},442:{path:"/knowledgegraph/:pathId/statistics/abilitymap/:learningpathId",parentId:"437",id:"442"},443:{path:"/knowledgegraph/:pathId/statistics/abilitymap/:learningpathId/detail/:detailId",parentId:"437",id:"443"},444:{path:"/deviceOperationMonitoring",parentId:"1",id:"444"},445:{path:"/deviceOperationMonitoring",parentId:"444",id:"445"},446:{path:"/onlineDevice",parentId:"1",id:"446"},447:{path:"/onlineDevice",redirect:"/onlineDevice/deviceInfo",parentId:"446",id:"447"},448:{path:"/onlineDevice/deviceInfo",parentId:"446",id:"448"},449:{path:"/onlineDevice/deviceInfo",redirect:"/onlineDevice/deviceInfo/manage",parentId:"448",id:"449"},450:{path:"/onlineDevice/deviceInfo/manage",parentId:"448",id:"450"},451:{path:"/onlineDevice/deviceInfo/deviceDetails/:id/:flag",parentId:"448",id:"451"},452:{path:"/onlineDevice/deviceInfo/deviceEdit/:id",parentId:"448",id:"452"},453:{path:"/onlineDevice/deviceInfo/reservationInfo/:id",parentId:"448",id:"453"},454:{path:"/onlineDevice/deviceLabel",parentId:"446",id:"454"},455:{path:"/onlineDevice/deviceType",parentId:"446",id:"455"},456:{path:"/onlineDevice/deviceType",redirect:"/onlineDevice/deviceType/manage",parentId:"455",id:"456"},457:{path:"/onlineDevice/deviceType/manage",parentId:"455",id:"457"},458:{path:"/onlineDevice/deviceType/deviceTypeDetails/:id",parentId:"455",id:"458"},459:{path:"/onlineDevice/faultlibrary",parentId:"446",id:"459"},460:{path:"/onlineDevice/digitalsigns",parentId:"446",id:"460"},461:{path:"/onlineReservation",parentId:"1",id:"461"},462:{path:"/onlineReservation",redirect:"/onlineReservation/reservationInfo",parentId:"461",id:"462"},463:{path:"/onlineReservation/reservationInfo",parentId:"461",id:"463"},464:{path:"/onlineReservation/reservationInfo",redirect:"/onlineReservation/reservationInfo/reservationInfo/false",parentId:"463",id:"464"},465:{path:"/onlineReservation/reservationInfo/reservationInfo/:flag",parentId:"463",id:"465"},466:{path:"/onlineMessageCenter",parentId:"1",id:"466"},467:{path:"/onlineMessageCenter",redirect:"/onlineMessageCenter/messageCenterManage",parentId:"466",id:"467"},468:{path:"/onlineMessageCenter/messageCenterManage",parentId:"466",id:"468"},469:{path:"/onlineMessageCenter/offSiteConfig",parentId:"466",id:"469"},470:{path:"/onlineProperty",parentId:"1",id:"470"},471:{path:"/onlineProperty",redirect:"/onlineProperty/property",parentId:"470",id:"471"},472:{path:"/onlineProperty/property",parentId:"470",id:"472"},473:{path:"/onlineProperty/procurement/:id",parentId:"470",id:"473"},474:{path:"/laboratoryList",parentId:"1",id:"474"},475:{path:"/laboratoryList",parentId:"474",id:"475"},476:{path:"/newlogin",parentId:"1",id:"476"},477:{path:"/onlinenum",parentId:"1",id:"477"},478:{path:"/onlinenum",parentId:"477",id:"478"},479:{path:"/shixuncontext",parentId:"1",id:"479"},480:{path:"/shixuncontext",parentId:"479",id:"480"},481:{path:"/shixuncontext/:Id/detail",parentId:"479",id:"481"},482:{path:"/educoder-demo",exact:!0,parentId:"1",id:"482"},483:{path:"/training",parentId:"1",id:"483"},484:{name:"\u7CBE\u57F9\u8BFE\u7A0B",path:"/training",parentId:"483",id:"484"},485:{path:"/effectivenessAnalysis/:coursesId",exact:!0,parentId:"1",id:"485"},486:{path:"/studentEffectivenessAnalysis/:coursesId",exact:!0,parentId:"1",id:"486"},487:{path:"/largeScreen",exact:!0,parentId:"1",id:"487"},488:{path:"/quality",parentId:"1",id:"488"},489:{name:"\u7CBE\u54C1\u8BFE\u7A0B",path:"/quality",parentId:"488",id:"489"},490:{path:"/otherlogin",exact:!0,parentId:"1",id:"490"},491:{path:"/otherloginqq",exact:!0,parentId:"1",id:"491"},492:{path:"/otherloginstart",exact:!0,parentId:"1",id:"492"},493:{path:"/pathsoverview",exact:!0,parentId:"1",id:"493"},494:{path:"/shixunsoverview",exact:!0,parentId:"1",id:"494"},495:{path:"/classroomsoverview",exact:!0,parentId:"1",id:"495"},496:{path:"/login",parentId:"1",id:"496"},497:{path:"/login",parentId:"496",id:"497"},498:{path:"/user",parentId:"1",id:"498"},499:{path:"/user/login",parentId:"498",id:"499"},500:{path:"/user/register",parentId:"498",id:"500"},501:{path:"/user/reset-password",parentId:"498",id:"501"},502:{path:"/colleges",parentId:"1",id:"502"},503:{path:"/colleges/:id/statistics",parentId:"502",id:"503"},504:{path:"/help",parentId:"1",id:"504"},505:{path:"/help/:id",parentId:"504",id:"505"},506:{path:"/video",parentId:"1",id:"506"},507:{path:"/video/:videoId",parentId:"506",id:"507"},508:{path:"/terminal",parentId:"1",id:"508"},509:{path:"/report/:taskId/:game_report_id",parentId:"1",id:"509"},510:{path:"/statsDashboard",parentId:"1",id:"510"},511:{path:"/",parentId:"1",id:"511"},512:{path:"/",exact:!0,parentId:"511",id:"512"},513:{path:"/api/*",exact:!0,parentId:"511",id:"513"},514:{path:"/search",exact:!0,parentId:"511",id:"514"},515:{path:"/moop_cases",exact:!0,parentId:"511",id:"515"},516:{path:"/moop_cases/new",exact:!0,parentId:"511",id:"516"},517:{path:"/moop_cases/:caseId",exact:!0,parentId:"511",id:"517"},518:{path:"/moop_cases/:caseId/edit",exact:!0,parentId:"511",id:"518"},519:{path:"/moop_cases/:caseId/publish-success",exact:!0,parentId:"511",id:"519"},520:{path:"/randompaper",exact:!0,parentId:"511",id:"520"},521:{path:"/randompaper/edit/:id",exact:!0,parentId:"511",id:"521"},522:{path:"/randompaper/detail/:id",exact:!0,parentId:"511",id:"522"},523:{path:"/403",parentId:"511",id:"523"},524:{path:"/500",parentId:"511",id:"524"},525:{path:"/404",parentId:"511",id:"525"},526:{path:"/download",parentId:"511",id:"526"},527:{path:"/iwce",parentId:"511",id:"527"},528:{path:"/classrooms/:coursesId/attendance/TeacherSign",parentId:"511",id:"528"},529:{path:"/classrooms/:coursesId/attendance/:categoryId",parentId:"511",id:"529"},530:{path:"/Activities",parentId:"511",id:"530"},531:{path:"/iwce/:itemname",parentId:"511",id:"531"},532:{path:"/hpc-course",parentId:"511",id:"532"},533:{path:"/user_agents",parentId:"511",id:"533"},534:{path:"/three",parentId:"511",id:"534"},535:{path:"/introduction",parentId:"511",id:"535"},536:{path:"/chatgpt",parentId:"511",id:"536"},537:{path:"/*",parentId:"511",id:"537"},"@@/global-layout":{id:"@@/global-layout",path:"/",isLayout:!0}},routeComponents:{1:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),2:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),3:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(2099)]).then(__webpack_require__.bind(__webpack_require__,52172))),4:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(3260)]).then(__webpack_require__.bind(__webpack_require__,82661))),5:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(3260)]).then(__webpack_require__.bind(__webpack_require__,82661))),6:Pe.lazy(()=>__webpack_require__.e(3247).then(__webpack_require__.bind(__webpack_require__,12284))),7:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),8:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(1545)]).then(__webpack_require__.bind(__webpack_require__,1741))),9:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),10:Pe.lazy(()=>__webpack_require__.e(9906).then(__webpack_require__.bind(__webpack_require__,83766))),11:Pe.lazy(()=>__webpack_require__.e(5572).then(__webpack_require__.bind(__webpack_require__,52730))),12:Pe.lazy(()=>__webpack_require__.e(6080).then(__webpack_require__.bind(__webpack_require__,78169))),13:Pe.lazy(()=>__webpack_require__.e(7901).then(__webpack_require__.bind(__webpack_require__,62933))),14:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7311),__webpack_require__.e(2281)]).then(__webpack_require__.bind(__webpack_require__,51750))),15:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1651)]).then(__webpack_require__.bind(__webpack_require__,1210))),16:Pe.lazy(()=>__webpack_require__.e(6080).then(__webpack_require__.bind(__webpack_require__,78169))),17:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),18:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),19:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),20:Pe.lazy(()=>__webpack_require__.e(6789).then(__webpack_require__.bind(__webpack_require__,69029))),21:Pe.lazy(()=>__webpack_require__.e(9921).then(__webpack_require__.bind(__webpack_require__,46166))),22:Pe.lazy(()=>__webpack_require__.e(1674).then(__webpack_require__.bind(__webpack_require__,23971))),23:Pe.lazy(()=>__webpack_require__.e(6685).then(__webpack_require__.bind(__webpack_require__,37474))),24:Pe.lazy(()=>__webpack_require__.e(7323).then(__webpack_require__.bind(__webpack_require__,2780))),25:Pe.lazy(()=>__webpack_require__.e(7323).then(__webpack_require__.bind(__webpack_require__,2780))),26:Pe.lazy(()=>__webpack_require__.e(6882).then(__webpack_require__.bind(__webpack_require__,25801))),27:Pe.lazy(()=>__webpack_require__.e(6882).then(__webpack_require__.bind(__webpack_require__,25801))),28:Pe.lazy(()=>__webpack_require__.e(109).then(__webpack_require__.bind(__webpack_require__,78425))),29:Pe.lazy(()=>__webpack_require__.e(737).then(__webpack_require__.bind(__webpack_require__,15340))),30:Pe.lazy(()=>__webpack_require__.e(3391).then(__webpack_require__.bind(__webpack_require__,89026))),31:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3295),__webpack_require__.e(5694)]).then(__webpack_require__.bind(__webpack_require__,27296))),32:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5330)]).then(__webpack_require__.bind(__webpack_require__,98764))),33:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(2303)]).then(__webpack_require__.bind(__webpack_require__,15830))),34:Pe.lazy(()=>__webpack_require__.e(1450).then(__webpack_require__.bind(__webpack_require__,20061))),35:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(195)]).then(__webpack_require__.bind(__webpack_require__,71412))),36:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(3668)]).then(__webpack_require__.bind(__webpack_require__,91222))),37:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(2338)]).then(__webpack_require__.bind(__webpack_require__,85151))),38:Pe.lazy(()=>__webpack_require__.e(4662).then(__webpack_require__.bind(__webpack_require__,51374))),39:Pe.lazy(()=>__webpack_require__.e(8072).then(__webpack_require__.bind(__webpack_require__,74029))),40:Pe.lazy(()=>__webpack_require__.e(479).then(__webpack_require__.bind(__webpack_require__,13682))),41:Pe.lazy(()=>__webpack_require__.e(5297).then(__webpack_require__.bind(__webpack_require__,42300))),42:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5136),__webpack_require__.e(4164)]).then(__webpack_require__.bind(__webpack_require__,46600))),43:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),44:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(4889)]).then(__webpack_require__.bind(__webpack_require__,5697))),45:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(4105)]).then(__webpack_require__.bind(__webpack_require__,73134))),46:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(7883)]).then(__webpack_require__.bind(__webpack_require__,28282))),47:Pe.lazy(()=>__webpack_require__.e(7482).then(__webpack_require__.bind(__webpack_require__,46770))),48:Pe.lazy(()=>__webpack_require__.e(5816).then(__webpack_require__.bind(__webpack_require__,83601))),49:Pe.lazy(()=>__webpack_require__.e(337).then(__webpack_require__.bind(__webpack_require__,39202))),50:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(292)]).then(__webpack_require__.bind(__webpack_require__,56469))),51:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(292)]).then(__webpack_require__.bind(__webpack_require__,56469))),52:Pe.lazy(()=>__webpack_require__.e(5992).then(__webpack_require__.bind(__webpack_require__,39419))),53:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(8085)]).then(__webpack_require__.bind(__webpack_require__,78524))),54:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(8085)]).then(__webpack_require__.bind(__webpack_require__,78524))),55:Pe.lazy(()=>__webpack_require__.e(8431).then(__webpack_require__.bind(__webpack_require__,16321))),56:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5902)]).then(__webpack_require__.bind(__webpack_require__,70937))),57:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3433)]).then(__webpack_require__.bind(__webpack_require__,29445))),58:Pe.lazy(()=>__webpack_require__.e(5125).then(__webpack_require__.bind(__webpack_require__,62899))),59:Pe.lazy(()=>__webpack_require__.e(5125).then(__webpack_require__.bind(__webpack_require__,62899))),60:Pe.lazy(()=>__webpack_require__.e(921).then(__webpack_require__.bind(__webpack_require__,45618))),61:Pe.lazy(()=>__webpack_require__.e(921).then(__webpack_require__.bind(__webpack_require__,45618))),62:Pe.lazy(()=>__webpack_require__.e(1578).then(__webpack_require__.bind(__webpack_require__,84440))),63:Pe.lazy(()=>__webpack_require__.e(3317).then(__webpack_require__.bind(__webpack_require__,97487))),64:Pe.lazy(()=>__webpack_require__.e(1482).then(__webpack_require__.bind(__webpack_require__,33450))),65:Pe.lazy(()=>__webpack_require__.e(4795).then(__webpack_require__.bind(__webpack_require__,99628))),66:Pe.lazy(()=>__webpack_require__.e(26).then(__webpack_require__.bind(__webpack_require__,74851))),67:Pe.lazy(()=>__webpack_require__.e(8882).then(__webpack_require__.bind(__webpack_require__,99355))),68:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(5888)]).then(__webpack_require__.bind(__webpack_require__,31846))),69:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(9715)]).then(__webpack_require__.bind(__webpack_require__,56683))),70:Pe.lazy(()=>__webpack_require__.e(7045).then(__webpack_require__.bind(__webpack_require__,26906))),71:Pe.lazy(()=>__webpack_require__.e(1211).then(__webpack_require__.bind(__webpack_require__,98285))),72:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(1582)]).then(__webpack_require__.bind(__webpack_require__,68305))),73:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(6729)]).then(__webpack_require__.bind(__webpack_require__,35523))),74:Pe.lazy(()=>Promise.all([__webpack_require__.e(8949),__webpack_require__.e(9695)]).then(__webpack_require__.bind(__webpack_require__,78598))),75:Pe.lazy(()=>Promise.all([__webpack_require__.e(8949),__webpack_require__.e(8723)]).then(__webpack_require__.bind(__webpack_require__,83030))),76:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7622)]).then(__webpack_require__.bind(__webpack_require__,11537))),77:Pe.lazy(()=>__webpack_require__.e(5148).then(__webpack_require__.bind(__webpack_require__,91635))),78:Pe.lazy(()=>__webpack_require__.e(643).then(__webpack_require__.bind(__webpack_require__,88704))),79:Pe.lazy(()=>__webpack_require__.e(3442).then(__webpack_require__.bind(__webpack_require__,25529))),80:Pe.lazy(()=>__webpack_require__.e(2102).then(__webpack_require__.bind(__webpack_require__,28501))),81:Pe.lazy(()=>__webpack_require__.e(2425).then(__webpack_require__.bind(__webpack_require__,76381))),82:Pe.lazy(()=>__webpack_require__.e(2404).then(__webpack_require__.bind(__webpack_require__,92980))),83:Pe.lazy(()=>__webpack_require__.e(9785).then(__webpack_require__.bind(__webpack_require__,94453))),84:Pe.lazy(()=>__webpack_require__.e(7901).then(__webpack_require__.bind(__webpack_require__,62933))),85:Pe.lazy(()=>__webpack_require__.e(2819).then(__webpack_require__.bind(__webpack_require__,4664))),86:Pe.lazy(()=>__webpack_require__.e(1512).then(__webpack_require__.bind(__webpack_require__,57920))),87:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7395)]).then(__webpack_require__.bind(__webpack_require__,15502))),88:Pe.lazy(()=>__webpack_require__.e(3585).then(__webpack_require__.bind(__webpack_require__,42791))),89:Pe.lazy(()=>__webpack_require__.e(6963).then(__webpack_require__.bind(__webpack_require__,85468))),90:Pe.lazy(()=>__webpack_require__.e(4030).then(__webpack_require__.bind(__webpack_require__,33489))),91:Pe.lazy(()=>__webpack_require__.e(4030).then(__webpack_require__.bind(__webpack_require__,33489))),92:Pe.lazy(()=>__webpack_require__.e(6127).then(__webpack_require__.bind(__webpack_require__,82281))),93:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(3951)]).then(__webpack_require__.bind(__webpack_require__,72604))),94:Pe.lazy(()=>__webpack_require__.e(1048).then(__webpack_require__.bind(__webpack_require__,18679))),95:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(2884)]).then(__webpack_require__.bind(__webpack_require__,51835))),96:Pe.lazy(()=>__webpack_require__.e(4770).then(__webpack_require__.bind(__webpack_require__,49183))),97:Pe.lazy(()=>__webpack_require__.e(2603).then(__webpack_require__.bind(__webpack_require__,75514))),98:Pe.lazy(()=>__webpack_require__.e(4216).then(__webpack_require__.bind(__webpack_require__,3107))),99:Pe.lazy(()=>__webpack_require__.e(5319).then(__webpack_require__.bind(__webpack_require__,71545))),100:Pe.lazy(()=>__webpack_require__.e(895).then(__webpack_require__.bind(__webpack_require__,70193))),101:Pe.lazy(()=>__webpack_require__.e(7322).then(__webpack_require__.bind(__webpack_require__,63152))),102:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(2203)]).then(__webpack_require__.bind(__webpack_require__,62087))),103:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(2203)]).then(__webpack_require__.bind(__webpack_require__,62087))),104:Pe.lazy(()=>__webpack_require__.e(5048).then(__webpack_require__.bind(__webpack_require__,82314))),105:Pe.lazy(()=>__webpack_require__.e(1043).then(__webpack_require__.bind(__webpack_require__,33009))),106:Pe.lazy(()=>__webpack_require__.e(1043).then(__webpack_require__.bind(__webpack_require__,33009))),107:Pe.lazy(()=>__webpack_require__.e(6776).then(__webpack_require__.bind(__webpack_require__,58256))),108:Pe.lazy(()=>__webpack_require__.e(6776).then(__webpack_require__.bind(__webpack_require__,58256))),109:Pe.lazy(()=>__webpack_require__.e(4297).then(__webpack_require__.bind(__webpack_require__,7806))),110:Pe.lazy(()=>__webpack_require__.e(4297).then(__webpack_require__.bind(__webpack_require__,7806))),111:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(8458)]).then(__webpack_require__.bind(__webpack_require__,55294))),112:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(8458)]).then(__webpack_require__.bind(__webpack_require__,55294))),113:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(1798)]).then(__webpack_require__.bind(__webpack_require__,3377))),114:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(1798)]).then(__webpack_require__.bind(__webpack_require__,3377))),115:Pe.lazy(()=>__webpack_require__.e(5177).then(__webpack_require__.bind(__webpack_require__,13731))),116:Pe.lazy(()=>__webpack_require__.e(201).then(__webpack_require__.bind(__webpack_require__,91680))),117:Pe.lazy(()=>__webpack_require__.e(1477).then(__webpack_require__.bind(__webpack_require__,27778))),118:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(6282)]).then(__webpack_require__.bind(__webpack_require__,47136))),119:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(6282)]).then(__webpack_require__.bind(__webpack_require__,47136))),120:Pe.lazy(()=>__webpack_require__.e(1962).then(__webpack_require__.bind(__webpack_require__,57234))),121:Pe.lazy(()=>__webpack_require__.e(4928).then(__webpack_require__.bind(__webpack_require__,15227))),122:Pe.lazy(()=>__webpack_require__.e(1257).then(__webpack_require__.bind(__webpack_require__,2199))),123:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8518),__webpack_require__.e(7329)]).then(__webpack_require__.bind(__webpack_require__,38172))),124:Pe.lazy(()=>__webpack_require__.e(8340).then(__webpack_require__.bind(__webpack_require__,12990))),125:Pe.lazy(()=>__webpack_require__.e(4093).then(__webpack_require__.bind(__webpack_require__,28786))),126:Pe.lazy(()=>__webpack_require__.e(6185).then(__webpack_require__.bind(__webpack_require__,9113))),127:Pe.lazy(()=>__webpack_require__.e(6185).then(__webpack_require__.bind(__webpack_require__,9113))),128:Pe.lazy(()=>__webpack_require__.e(8827).then(__webpack_require__.bind(__webpack_require__,87330))),129:Pe.lazy(()=>__webpack_require__.e(8827).then(__webpack_require__.bind(__webpack_require__,87330))),130:Pe.lazy(()=>__webpack_require__.e(1678).then(__webpack_require__.bind(__webpack_require__,12351))),131:Pe.lazy(()=>__webpack_require__.e(1678).then(__webpack_require__.bind(__webpack_require__,12351))),132:Pe.lazy(()=>__webpack_require__.e(1754).then(__webpack_require__.bind(__webpack_require__,68098))),133:Pe.lazy(()=>__webpack_require__.e(1754).then(__webpack_require__.bind(__webpack_require__,68098))),134:Pe.lazy(()=>__webpack_require__.e(4217).then(__webpack_require__.bind(__webpack_require__,37949))),135:Pe.lazy(()=>__webpack_require__.e(6205).then(__webpack_require__.bind(__webpack_require__,24914))),136:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(533)]).then(__webpack_require__.bind(__webpack_require__,41759))),137:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5798)]).then(__webpack_require__.bind(__webpack_require__,425))),138:Pe.lazy(()=>__webpack_require__.e(5466).then(__webpack_require__.bind(__webpack_require__,84293))),139:Pe.lazy(()=>__webpack_require__.e(5466).then(__webpack_require__.bind(__webpack_require__,84293))),140:Pe.lazy(()=>__webpack_require__.e(9944).then(__webpack_require__.bind(__webpack_require__,91523))),141:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(9406)]).then(__webpack_require__.bind(__webpack_require__,67426))),142:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(9406)]).then(__webpack_require__.bind(__webpack_require__,67426))),143:Pe.lazy(()=>__webpack_require__.e(9039).then(__webpack_require__.bind(__webpack_require__,34565))),144:Pe.lazy(()=>__webpack_require__.e(9039).then(__webpack_require__.bind(__webpack_require__,34565))),145:Pe.lazy(()=>__webpack_require__.e(7922).then(__webpack_require__.bind(__webpack_require__,14610))),146:Pe.lazy(()=>__webpack_require__.e(1727).then(__webpack_require__.bind(__webpack_require__,68651))),147:Pe.lazy(()=>__webpack_require__.e(1727).then(__webpack_require__.bind(__webpack_require__,68651))),148:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1427)]).then(__webpack_require__.bind(__webpack_require__,16399))),149:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1427)]).then(__webpack_require__.bind(__webpack_require__,16399))),150:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8689)]).then(__webpack_require__.bind(__webpack_require__,63200))),151:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7806)]).then(__webpack_require__.bind(__webpack_require__,26844))),152:Pe.lazy(()=>__webpack_require__.e(3276).then(__webpack_require__.bind(__webpack_require__,15880))),153:Pe.lazy(()=>__webpack_require__.e(8885).then(__webpack_require__.bind(__webpack_require__,77819))),154:Pe.lazy(()=>__webpack_require__.e(3451).then(__webpack_require__.bind(__webpack_require__,54695))),155:Pe.lazy(()=>__webpack_require__.e(9922).then(__webpack_require__.bind(__webpack_require__,8983))),156:Pe.lazy(()=>__webpack_require__.e(4572).then(__webpack_require__.bind(__webpack_require__,80612))),157:Pe.lazy(()=>__webpack_require__.e(4017).then(__webpack_require__.bind(__webpack_require__,65362))),158:Pe.lazy(()=>__webpack_require__.e(5518).then(__webpack_require__.bind(__webpack_require__,23791))),159:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),160:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(7099)]).then(__webpack_require__.bind(__webpack_require__,48262))),161:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(7099)]).then(__webpack_require__.bind(__webpack_require__,48262))),162:Pe.lazy(()=>__webpack_require__.e(4449).then(__webpack_require__.bind(__webpack_require__,86964))),163:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(7099)]).then(__webpack_require__.bind(__webpack_require__,48262))),164:Pe.lazy(()=>Promise.all([__webpack_require__.e(552),__webpack_require__.e(2570)]).then(__webpack_require__.bind(__webpack_require__,1922))),165:Pe.lazy(()=>Promise.all([__webpack_require__.e(552),__webpack_require__.e(2570)]).then(__webpack_require__.bind(__webpack_require__,1922))),166:Pe.lazy(()=>__webpack_require__.e(8787).then(__webpack_require__.bind(__webpack_require__,63886))),167:Pe.lazy(()=>__webpack_require__.e(5650).then(__webpack_require__.bind(__webpack_require__,81484))),168:Pe.lazy(()=>__webpack_require__.e(1799).then(__webpack_require__.bind(__webpack_require__,12861))),169:Pe.lazy(()=>Promise.all([__webpack_require__.e(552),__webpack_require__.e(8579)]).then(__webpack_require__.bind(__webpack_require__,38216))),170:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),171:Pe.lazy(()=>__webpack_require__.e(8639).then(__webpack_require__.bind(__webpack_require__,77814))),172:Pe.lazy(()=>__webpack_require__.e(4048).then(__webpack_require__.bind(__webpack_require__,47697))),173:Pe.lazy(()=>__webpack_require__.e(4264).then(__webpack_require__.bind(__webpack_require__,73813))),174:Pe.lazy(()=>__webpack_require__.e(4264).then(__webpack_require__.bind(__webpack_require__,73813))),175:Pe.lazy(()=>__webpack_require__.e(508).then(__webpack_require__.bind(__webpack_require__,22021))),176:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),177:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7835)]).then(__webpack_require__.bind(__webpack_require__,280))),178:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1953)]).then(__webpack_require__.bind(__webpack_require__,36255))),179:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1953)]).then(__webpack_require__.bind(__webpack_require__,36255))),180:Pe.lazy(()=>__webpack_require__.e(1581).then(__webpack_require__.bind(__webpack_require__,44202))),181:Pe.lazy(()=>__webpack_require__.e(4144).then(__webpack_require__.bind(__webpack_require__,50666))),182:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),183:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),184:Pe.lazy(()=>__webpack_require__.e(8552).then(__webpack_require__.bind(__webpack_require__,29120))),185:Pe.lazy(()=>__webpack_require__.e(7884).then(__webpack_require__.bind(__webpack_require__,62006))),186:Pe.lazy(()=>Promise.all([__webpack_require__.e(5961),__webpack_require__.e(5307)]).then(__webpack_require__.bind(__webpack_require__,45774))),187:Pe.lazy(()=>__webpack_require__.e(5549).then(__webpack_require__.bind(__webpack_require__,77570))),188:Pe.lazy(()=>__webpack_require__.e(9674).then(__webpack_require__.bind(__webpack_require__,86633))),189:Pe.lazy(()=>__webpack_require__.e(5573).then(__webpack_require__.bind(__webpack_require__,77211))),190:Pe.lazy(()=>__webpack_require__.e(2141).then(__webpack_require__.bind(__webpack_require__,39120))),191:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5961),__webpack_require__.e(9511)]).then(__webpack_require__.bind(__webpack_require__,60079))),192:Pe.lazy(()=>__webpack_require__.e(6328).then(__webpack_require__.bind(__webpack_require__,23713))),193:Pe.lazy(()=>__webpack_require__.e(7857).then(__webpack_require__.bind(__webpack_require__,53679))),194:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1657)]).then(__webpack_require__.bind(__webpack_require__,60941))),195:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1657)]).then(__webpack_require__.bind(__webpack_require__,60941))),196:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(4498)]).then(__webpack_require__.bind(__webpack_require__,64933))),197:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(4498)]).then(__webpack_require__.bind(__webpack_require__,64933))),198:Pe.lazy(()=>__webpack_require__.e(9205).then(__webpack_require__.bind(__webpack_require__,54164))),199:Pe.lazy(()=>__webpack_require__.e(1423).then(__webpack_require__.bind(__webpack_require__,12142))),200:Pe.lazy(()=>__webpack_require__.e(7614).then(__webpack_require__.bind(__webpack_require__,40678))),201:Pe.lazy(()=>__webpack_require__.e(9449).then(__webpack_require__.bind(__webpack_require__,26095))),202:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9814)]).then(__webpack_require__.bind(__webpack_require__,36239))),203:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6637)]).then(__webpack_require__.bind(__webpack_require__,81312))),204:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6637)]).then(__webpack_require__.bind(__webpack_require__,81312))),205:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3581)]).then(__webpack_require__.bind(__webpack_require__,88459))),206:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1993)]).then(__webpack_require__.bind(__webpack_require__,5323))),207:Pe.lazy(()=>__webpack_require__.e(1475).then(__webpack_require__.bind(__webpack_require__,82610))),208:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8965)]).then(__webpack_require__.bind(__webpack_require__,18812))),209:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6451)]).then(__webpack_require__.bind(__webpack_require__,56673))),210:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5961),__webpack_require__.e(518)]).then(__webpack_require__.bind(__webpack_require__,23197))),211:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5894)]).then(__webpack_require__.bind(__webpack_require__,30169))),212:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5894)]).then(__webpack_require__.bind(__webpack_require__,30169))),213:Pe.lazy(()=>__webpack_require__.e(2130).then(__webpack_require__.bind(__webpack_require__,39296))),214:Pe.lazy(()=>__webpack_require__.e(2130).then(__webpack_require__.bind(__webpack_require__,39296))),215:Pe.lazy(()=>__webpack_require__.e(5230).then(__webpack_require__.bind(__webpack_require__,69269))),216:Pe.lazy(()=>__webpack_require__.e(5230).then(__webpack_require__.bind(__webpack_require__,69269))),217:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8688)]).then(__webpack_require__.bind(__webpack_require__,98061))),218:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8688)]).then(__webpack_require__.bind(__webpack_require__,98061))),219:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5096)]).then(__webpack_require__.bind(__webpack_require__,11801))),220:Pe.lazy(()=>__webpack_require__.e(3086).then(__webpack_require__.bind(__webpack_require__,30302))),221:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9417)]).then(__webpack_require__.bind(__webpack_require__,84578))),222:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),223:Pe.lazy(()=>__webpack_require__.e(5176).then(__webpack_require__.bind(__webpack_require__,57312))),224:Pe.lazy(()=>__webpack_require__.e(6587).then(__webpack_require__.bind(__webpack_require__,63763))),225:Pe.lazy(()=>__webpack_require__.e(9891).then(__webpack_require__.bind(__webpack_require__,4725))),226:Pe.lazy(()=>__webpack_require__.e(8062).then(__webpack_require__.bind(__webpack_require__,67062))),227:Pe.lazy(()=>__webpack_require__.e(5402).then(__webpack_require__.bind(__webpack_require__,37505))),228:Pe.lazy(()=>__webpack_require__.e(5402).then(__webpack_require__.bind(__webpack_require__,37505))),229:Pe.lazy(()=>__webpack_require__.e(6820).then(__webpack_require__.bind(__webpack_require__,50192))),230:Pe.lazy(()=>__webpack_require__.e(8517).then(__webpack_require__.bind(__webpack_require__,55084))),231:Pe.lazy(()=>__webpack_require__.e(7043).then(__webpack_require__.bind(__webpack_require__,14008))),232:Pe.lazy(()=>__webpack_require__.e(2806).then(__webpack_require__.bind(__webpack_require__,8015))),233:Pe.lazy(()=>__webpack_require__.e(5043).then(__webpack_require__.bind(__webpack_require__,75970))),234:Pe.lazy(()=>__webpack_require__.e(799).then(__webpack_require__.bind(__webpack_require__,15972))),235:Pe.lazy(()=>Promise.all([__webpack_require__.e(5961),__webpack_require__.e(3157)]).then(__webpack_require__.bind(__webpack_require__,38353))),236:Pe.lazy(()=>__webpack_require__.e(8332).then(__webpack_require__.bind(__webpack_require__,71394))),237:Pe.lazy(()=>__webpack_require__.e(6583).then(__webpack_require__.bind(__webpack_require__,98466))),238:Pe.lazy(()=>__webpack_require__.e(8217).then(__webpack_require__.bind(__webpack_require__,1147))),239:Pe.lazy(()=>__webpack_require__.e(879).then(__webpack_require__.bind(__webpack_require__,13573))),240:Pe.lazy(()=>__webpack_require__.e(5776).then(__webpack_require__.bind(__webpack_require__,12561))),241:Pe.lazy(()=>__webpack_require__.e(906).then(__webpack_require__.bind(__webpack_require__,33992))),242:Pe.lazy(()=>__webpack_require__.e(900).then(__webpack_require__.bind(__webpack_require__,3510))),243:Pe.lazy(()=>__webpack_require__.e(6682).then(__webpack_require__.bind(__webpack_require__,26300))),244:Pe.lazy(()=>__webpack_require__.e(8115).then(__webpack_require__.bind(__webpack_require__,15376))),245:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2659)]).then(__webpack_require__.bind(__webpack_require__,11056))),246:Pe.lazy(()=>__webpack_require__.e(4610).then(__webpack_require__.bind(__webpack_require__,62827))),247:Pe.lazy(()=>__webpack_require__.e(8479).then(__webpack_require__.bind(__webpack_require__,92498))),248:Pe.lazy(()=>__webpack_require__.e(5800).then(__webpack_require__.bind(__webpack_require__,29728))),249:Pe.lazy(()=>Promise.all([__webpack_require__.e(5961),__webpack_require__.e(2862)]).then(__webpack_require__.bind(__webpack_require__,81552))),250:Pe.lazy(()=>__webpack_require__.e(8286).then(__webpack_require__.bind(__webpack_require__,69208))),251:Pe.lazy(()=>__webpack_require__.e(5117).then(__webpack_require__.bind(__webpack_require__,17697))),252:Pe.lazy(()=>__webpack_require__.e(7402).then(__webpack_require__.bind(__webpack_require__,98392))),253:Pe.lazy(()=>__webpack_require__.e(1897).then(__webpack_require__.bind(__webpack_require__,62040))),254:Pe.lazy(()=>__webpack_require__.e(8145).then(__webpack_require__.bind(__webpack_require__,48427))),255:Pe.lazy(()=>__webpack_require__.e(119).then(__webpack_require__.bind(__webpack_require__,12697))),256:Pe.lazy(()=>__webpack_require__.e(4736).then(__webpack_require__.bind(__webpack_require__,23386))),257:Pe.lazy(()=>__webpack_require__.e(2412).then(__webpack_require__.bind(__webpack_require__,81751))),258:Pe.lazy(()=>__webpack_require__.e(2240).then(__webpack_require__.bind(__webpack_require__,8142))),259:Pe.lazy(()=>__webpack_require__.e(5165).then(__webpack_require__.bind(__webpack_require__,88889))),260:Pe.lazy(()=>__webpack_require__.e(3831).then(__webpack_require__.bind(__webpack_require__,31413))),261:Pe.lazy(()=>__webpack_require__.e(2396).then(__webpack_require__.bind(__webpack_require__,68481))),262:Pe.lazy(()=>__webpack_require__.e(7855).then(__webpack_require__.bind(__webpack_require__,91774))),263:Pe.lazy(()=>__webpack_require__.e(9507).then(__webpack_require__.bind(__webpack_require__,98154))),264:Pe.lazy(()=>__webpack_require__.e(1343).then(__webpack_require__.bind(__webpack_require__,15317))),265:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),266:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),267:Pe.lazy(()=>__webpack_require__.e(9647).then(__webpack_require__.bind(__webpack_require__,85620))),268:Pe.lazy(()=>__webpack_require__.e(485).then(__webpack_require__.bind(__webpack_require__,23539))),269:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4741)]).then(__webpack_require__.bind(__webpack_require__,89989))),270:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4741)]).then(__webpack_require__.bind(__webpack_require__,89989))),271:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4994)]).then(__webpack_require__.bind(__webpack_require__,40854))),272:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4994)]).then(__webpack_require__.bind(__webpack_require__,40854))),273:Pe.lazy(()=>__webpack_require__.e(7460).then(__webpack_require__.bind(__webpack_require__,82803))),274:Pe.lazy(()=>__webpack_require__.e(9716).then(__webpack_require__.bind(__webpack_require__,23222))),275:Pe.lazy(()=>__webpack_require__.e(6913).then(__webpack_require__.bind(__webpack_require__,33177))),276:Pe.lazy(()=>__webpack_require__.e(6913).then(__webpack_require__.bind(__webpack_require__,33177))),277:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),278:Pe.lazy(()=>__webpack_require__.e(3006).then(__webpack_require__.bind(__webpack_require__,21173))),279:Pe.lazy(()=>__webpack_require__.e(2045).then(__webpack_require__.bind(__webpack_require__,37441))),280:Pe.lazy(()=>__webpack_require__.e(1520).then(__webpack_require__.bind(__webpack_require__,52598))),281:Pe.lazy(()=>__webpack_require__.e(9649).then(__webpack_require__.bind(__webpack_require__,99612))),282:Pe.lazy(()=>__webpack_require__.e(4546).then(__webpack_require__.bind(__webpack_require__,7104))),283:Pe.lazy(()=>__webpack_require__.e(5357).then(__webpack_require__.bind(__webpack_require__,13781))),284:Pe.lazy(()=>__webpack_require__.e(8665).then(__webpack_require__.bind(__webpack_require__,84461))),285:Pe.lazy(()=>__webpack_require__.e(3183).then(__webpack_require__.bind(__webpack_require__,33860))),286:Pe.lazy(()=>__webpack_require__.e(4800).then(__webpack_require__.bind(__webpack_require__,98875))),287:Pe.lazy(()=>__webpack_require__.e(9489).then(__webpack_require__.bind(__webpack_require__,23678))),288:Pe.lazy(()=>__webpack_require__.e(9391).then(__webpack_require__.bind(__webpack_require__,9682))),289:Pe.lazy(()=>__webpack_require__.e(5335).then(__webpack_require__.bind(__webpack_require__,82452))),290:Pe.lazy(()=>__webpack_require__.e(2823).then(__webpack_require__.bind(__webpack_require__,3074))),291:Pe.lazy(()=>__webpack_require__.e(4973).then(__webpack_require__.bind(__webpack_require__,6400))),292:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6651)]).then(__webpack_require__.bind(__webpack_require__,16216))),293:Pe.lazy(()=>__webpack_require__.e(6741).then(__webpack_require__.bind(__webpack_require__,27797))),294:Pe.lazy(()=>__webpack_require__.e(5775).then(__webpack_require__.bind(__webpack_require__,58106))),295:Pe.lazy(()=>__webpack_require__.e(2548).then(__webpack_require__.bind(__webpack_require__,34133))),296:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),297:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),298:Pe.lazy(()=>__webpack_require__.e(6634).then(__webpack_require__.bind(__webpack_require__,47658))),299:Pe.lazy(()=>__webpack_require__.e(680).then(__webpack_require__.bind(__webpack_require__,34019))),300:Pe.lazy(()=>__webpack_require__.e(6366).then(__webpack_require__.bind(__webpack_require__,40841))),301:Pe.lazy(()=>__webpack_require__.e(6452).then(__webpack_require__.bind(__webpack_require__,42222))),302:Pe.lazy(()=>__webpack_require__.e(1070).then(__webpack_require__.bind(__webpack_require__,89846))),303:Pe.lazy(()=>__webpack_require__.e(7242).then(__webpack_require__.bind(__webpack_require__,92227))),304:Pe.lazy(()=>__webpack_require__.e(2707).then(__webpack_require__.bind(__webpack_require__,851))),305:Pe.lazy(()=>__webpack_require__.e(2865).then(__webpack_require__.bind(__webpack_require__,18314))),306:Pe.lazy(()=>__webpack_require__.e(6784).then(__webpack_require__.bind(__webpack_require__,40693))),307:Pe.lazy(()=>__webpack_require__.e(6784).then(__webpack_require__.bind(__webpack_require__,40693))),308:Pe.lazy(()=>__webpack_require__.e(3141).then(__webpack_require__.bind(__webpack_require__,79666))),309:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),310:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7289)]).then(__webpack_require__.bind(__webpack_require__,8443))),311:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(700)]).then(__webpack_require__.bind(__webpack_require__,78857))),312:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7289)]).then(__webpack_require__.bind(__webpack_require__,8443))),313:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(700)]).then(__webpack_require__.bind(__webpack_require__,78857))),314:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7289)]).then(__webpack_require__.bind(__webpack_require__,8443))),315:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),316:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(7527)]).then(__webpack_require__.bind(__webpack_require__,9141))),317:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(6270)]).then(__webpack_require__.bind(__webpack_require__,60539))),318:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),319:Pe.lazy(()=>__webpack_require__.e(547).then(__webpack_require__.bind(__webpack_require__,38876))),320:Pe.lazy(()=>__webpack_require__.e(9788).then(__webpack_require__.bind(__webpack_require__,96972))),321:Pe.lazy(()=>__webpack_require__.e(576).then(__webpack_require__.bind(__webpack_require__,81402))),322:Pe.lazy(()=>__webpack_require__.e(7260).then(__webpack_require__.bind(__webpack_require__,40221))),323:Pe.lazy(()=>__webpack_require__.e(4520).then(__webpack_require__.bind(__webpack_require__,63400))),324:Pe.lazy(()=>__webpack_require__.e(9076).then(__webpack_require__.bind(__webpack_require__,97718))),325:Pe.lazy(()=>__webpack_require__.e(4514).then(__webpack_require__.bind(__webpack_require__,69934))),326:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),327:Pe.lazy(()=>__webpack_require__.e(928).then(__webpack_require__.bind(__webpack_require__,50368))),328:Pe.lazy(()=>__webpack_require__.e(1006).then(__webpack_require__.bind(__webpack_require__,95543))),329:Pe.lazy(()=>__webpack_require__.e(1006).then(__webpack_require__.bind(__webpack_require__,95543))),330:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),331:Pe.lazy(()=>__webpack_require__.e(1939).then(__webpack_require__.bind(__webpack_require__,17514))),332:Pe.lazy(()=>__webpack_require__.e(556).then(__webpack_require__.bind(__webpack_require__,43333))),333:Pe.lazy(()=>__webpack_require__.e(6434).then(__webpack_require__.bind(__webpack_require__,5809))),334:Pe.lazy(()=>__webpack_require__.e(1880).then(__webpack_require__.bind(__webpack_require__,25904))),335:Pe.lazy(()=>__webpack_require__.e(8237).then(__webpack_require__.bind(__webpack_require__,69862))),336:Pe.lazy(()=>__webpack_require__.e(3447).then(__webpack_require__.bind(__webpack_require__,9809))),337:Pe.lazy(()=>__webpack_require__.e(264).then(__webpack_require__.bind(__webpack_require__,80561))),338:Pe.lazy(()=>__webpack_require__.e(4259).then(__webpack_require__.bind(__webpack_require__,49578))),339:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),340:Pe.lazy(()=>__webpack_require__.e(4078).then(__webpack_require__.bind(__webpack_require__,17021))),341:Pe.lazy(()=>__webpack_require__.e(2829).then(__webpack_require__.bind(__webpack_require__,12704))),342:Pe.lazy(()=>__webpack_require__.e(5359).then(__webpack_require__.bind(__webpack_require__,95743))),343:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),344:Pe.lazy(()=>__webpack_require__.e(559).then(__webpack_require__.bind(__webpack_require__,96798))),345:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),346:Pe.lazy(()=>__webpack_require__.e(4757).then(__webpack_require__.bind(__webpack_require__,98527))),347:Pe.lazy(()=>__webpack_require__.e(1783).then(__webpack_require__.bind(__webpack_require__,99725))),348:Pe.lazy(()=>__webpack_require__.e(7477).then(__webpack_require__.bind(__webpack_require__,90018))),349:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),350:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),351:Pe.lazy(()=>__webpack_require__.e(6796).then(__webpack_require__.bind(__webpack_require__,49604))),352:Pe.lazy(()=>__webpack_require__.e(4504).then(__webpack_require__.bind(__webpack_require__,87890))),353:Pe.lazy(()=>__webpack_require__.e(7058).then(__webpack_require__.bind(__webpack_require__,17761))),354:Pe.lazy(()=>__webpack_require__.e(8447).then(__webpack_require__.bind(__webpack_require__,39965))),355:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),356:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),357:Pe.lazy(()=>__webpack_require__.e(5238).then(__webpack_require__.bind(__webpack_require__,9903))),358:Pe.lazy(()=>__webpack_require__.e(4715).then(__webpack_require__.bind(__webpack_require__,32034))),359:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(3873)]).then(__webpack_require__.bind(__webpack_require__,31805))),360:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),361:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),362:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(6265)]).then(__webpack_require__.bind(__webpack_require__,64962))),363:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),364:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),365:Pe.lazy(()=>__webpack_require__.e(1713).then(__webpack_require__.bind(__webpack_require__,7240))),366:Pe.lazy(()=>__webpack_require__.e(5891).then(__webpack_require__.bind(__webpack_require__,38179))),367:Pe.lazy(()=>__webpack_require__.e(8398).then(__webpack_require__.bind(__webpack_require__,13733))),368:Pe.lazy(()=>__webpack_require__.e(8241).then(__webpack_require__.bind(__webpack_require__,7665))),369:Pe.lazy(()=>__webpack_require__.e(2339).then(__webpack_require__.bind(__webpack_require__,16796))),370:Pe.lazy(()=>__webpack_require__.e(7589).then(__webpack_require__.bind(__webpack_require__,85390))),371:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),372:Pe.lazy(()=>__webpack_require__.e(5705).then(__webpack_require__.bind(__webpack_require__,83115))),373:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),374:Pe.lazy(()=>__webpack_require__.e(559).then(__webpack_require__.bind(__webpack_require__,96798))),375:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),376:Pe.lazy(()=>__webpack_require__.e(4757).then(__webpack_require__.bind(__webpack_require__,98527))),377:Pe.lazy(()=>__webpack_require__.e(1783).then(__webpack_require__.bind(__webpack_require__,99725))),378:Pe.lazy(()=>__webpack_require__.e(7477).then(__webpack_require__.bind(__webpack_require__,90018))),379:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),380:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),381:Pe.lazy(()=>__webpack_require__.e(6796).then(__webpack_require__.bind(__webpack_require__,49604))),382:Pe.lazy(()=>__webpack_require__.e(4504).then(__webpack_require__.bind(__webpack_require__,87890))),383:Pe.lazy(()=>__webpack_require__.e(7058).then(__webpack_require__.bind(__webpack_require__,17761))),384:Pe.lazy(()=>__webpack_require__.e(8447).then(__webpack_require__.bind(__webpack_require__,39965))),385:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),386:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),387:Pe.lazy(()=>__webpack_require__.e(5238).then(__webpack_require__.bind(__webpack_require__,9903))),388:Pe.lazy(()=>__webpack_require__.e(4715).then(__webpack_require__.bind(__webpack_require__,32034))),389:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(3873)]).then(__webpack_require__.bind(__webpack_require__,31805))),390:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),391:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),392:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(6265)]).then(__webpack_require__.bind(__webpack_require__,64962))),393:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),394:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),395:Pe.lazy(()=>__webpack_require__.e(1713).then(__webpack_require__.bind(__webpack_require__,7240))),396:Pe.lazy(()=>__webpack_require__.e(5891).then(__webpack_require__.bind(__webpack_require__,38179))),397:Pe.lazy(()=>__webpack_require__.e(8398).then(__webpack_require__.bind(__webpack_require__,13733))),398:Pe.lazy(()=>__webpack_require__.e(8241).then(__webpack_require__.bind(__webpack_require__,7665))),399:Pe.lazy(()=>__webpack_require__.e(2339).then(__webpack_require__.bind(__webpack_require__,16796))),400:Pe.lazy(()=>__webpack_require__.e(7589).then(__webpack_require__.bind(__webpack_require__,85390))),401:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),402:Pe.lazy(()=>__webpack_require__.e(5705).then(__webpack_require__.bind(__webpack_require__,83115))),403:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),404:Pe.lazy(()=>__webpack_require__.e(4766).then(__webpack_require__.bind(__webpack_require__,12078))),405:Pe.lazy(()=>__webpack_require__.e(7560).then(__webpack_require__.bind(__webpack_require__,98148))),406:Pe.lazy(()=>__webpack_require__.e(6029).then(__webpack_require__.bind(__webpack_require__,76978))),407:Pe.lazy(()=>__webpack_require__.e(5179).then(__webpack_require__.bind(__webpack_require__,63171))),408:Pe.lazy(()=>__webpack_require__.e(4621).then(__webpack_require__.bind(__webpack_require__,75407))),409:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),410:Pe.lazy(()=>__webpack_require__.e(1831).then(__webpack_require__.bind(__webpack_require__,66874))),411:Pe.lazy(()=>__webpack_require__.e(2539).then(__webpack_require__.bind(__webpack_require__,87085))),412:Pe.lazy(()=>__webpack_require__.e(8143).then(__webpack_require__.bind(__webpack_require__,14905))),413:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(5624)]).then(__webpack_require__.bind(__webpack_require__,50937))),414:Pe.lazy(()=>__webpack_require__.e(1461).then(__webpack_require__.bind(__webpack_require__,75693))),415:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(4492)]).then(__webpack_require__.bind(__webpack_require__,90679))),416:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(9416)]).then(__webpack_require__.bind(__webpack_require__,2027))),417:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),418:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),419:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),420:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),421:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),422:Pe.lazy(()=>__webpack_require__.e(5022).then(__webpack_require__.bind(__webpack_require__,36424))),423:Pe.lazy(()=>__webpack_require__.e(6063).then(__webpack_require__.bind(__webpack_require__,4318))),424:Pe.lazy(()=>__webpack_require__.e(6063).then(__webpack_require__.bind(__webpack_require__,4318))),425:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(7545)]).then(__webpack_require__.bind(__webpack_require__,97572))),426:Pe.lazy(()=>__webpack_require__.e(1253).then(__webpack_require__.bind(__webpack_require__,42544))),427:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),428:Pe.lazy(()=>__webpack_require__.e(2216).then(__webpack_require__.bind(__webpack_require__,12795))),429:Pe.lazy(()=>__webpack_require__.e(5382).then(__webpack_require__.bind(__webpack_require__,59092))),430:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),431:Pe.lazy(()=>__webpack_require__.e(4420).then(__webpack_require__.bind(__webpack_require__,81033))),432:Pe.lazy(()=>Promise.all([__webpack_require__.e(9951),__webpack_require__.e(6979)]).then(__webpack_require__.bind(__webpack_require__,42539))),433:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2946),__webpack_require__.e(9951),__webpack_require__.e(8823)]).then(__webpack_require__.bind(__webpack_require__,27525))),434:Pe.lazy(()=>__webpack_require__.e(3685).then(__webpack_require__.bind(__webpack_require__,44248))),435:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2946),__webpack_require__.e(2524)]).then(__webpack_require__.bind(__webpack_require__,35805))),436:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5915)]).then(__webpack_require__.bind(__webpack_require__,77490))),437:Pe.lazy(()=>__webpack_require__.e(3589).then(__webpack_require__.bind(__webpack_require__,96885))),438:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(919)]).then(__webpack_require__.bind(__webpack_require__,97846))),439:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7042)]).then(__webpack_require__.bind(__webpack_require__,77273))),440:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8137)]).then(__webpack_require__.bind(__webpack_require__,75888))),441:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2946),__webpack_require__.e(4339)]).then(__webpack_require__.bind(__webpack_require__,64049))),442:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9595)]).then(__webpack_require__.bind(__webpack_require__,76439))),443:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3443)]).then(__webpack_require__.bind(__webpack_require__,36922))),444:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),445:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9172)]).then(__webpack_require__.bind(__webpack_require__,68093))),446:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),447:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),448:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),449:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),450:Pe.lazy(()=>__webpack_require__.e(6806).then(__webpack_require__.bind(__webpack_require__,88311))),451:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(174)]).then(__webpack_require__.bind(__webpack_require__,65975))),452:Pe.lazy(()=>__webpack_require__.e(7052).then(__webpack_require__.bind(__webpack_require__,49269))),453:Pe.lazy(()=>__webpack_require__.e(7465).then(__webpack_require__.bind(__webpack_require__,24263))),454:Pe.lazy(()=>__webpack_require__.e(8234).then(__webpack_require__.bind(__webpack_require__,39486))),455:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),456:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),457:Pe.lazy(()=>__webpack_require__.e(7745).then(__webpack_require__.bind(__webpack_require__,66162))),458:Pe.lazy(()=>__webpack_require__.e(8121).then(__webpack_require__.bind(__webpack_require__,4115))),459:Pe.lazy(()=>__webpack_require__.e(4806).then(__webpack_require__.bind(__webpack_require__,76789))),460:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3282)]).then(__webpack_require__.bind(__webpack_require__,79483))),461:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),462:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),463:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),464:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),465:Pe.lazy(()=>__webpack_require__.e(7670).then(__webpack_require__.bind(__webpack_require__,49899))),466:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),467:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),468:Pe.lazy(()=>__webpack_require__.e(1691).then(__webpack_require__.bind(__webpack_require__,31198))),469:Pe.lazy(()=>__webpack_require__.e(7823).then(__webpack_require__.bind(__webpack_require__,37353))),470:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),471:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),472:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2748)]).then(__webpack_require__.bind(__webpack_require__,69720))),473:Pe.lazy(()=>__webpack_require__.e(2641).then(__webpack_require__.bind(__webpack_require__,72010))),474:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),475:Pe.lazy(()=>__webpack_require__.e(8116).then(__webpack_require__.bind(__webpack_require__,5538))),476:Pe.lazy(()=>__webpack_require__.e(1077).then(__webpack_require__.bind(__webpack_require__,30968))),477:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),478:Pe.lazy(()=>__webpack_require__.e(570).then(__webpack_require__.bind(__webpack_require__,16528))),479:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),480:Pe.lazy(()=>__webpack_require__.e(8365).then(__webpack_require__.bind(__webpack_require__,10115))),481:Pe.lazy(()=>__webpack_require__.e(6788).then(__webpack_require__.bind(__webpack_require__,94401))),482:Pe.lazy(()=>__webpack_require__.e(4058).then(__webpack_require__.bind(__webpack_require__,37552))),483:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),484:Pe.lazy(()=>__webpack_require__.e(4056).then(__webpack_require__.bind(__webpack_require__,94989))),485:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1443)]).then(__webpack_require__.bind(__webpack_require__,85770))),486:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(65)]).then(__webpack_require__.bind(__webpack_require__,58088))),487:Pe.lazy(()=>__webpack_require__.e(9487).then(__webpack_require__.bind(__webpack_require__,31200))),488:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),489:Pe.lazy(()=>__webpack_require__.e(532).then(__webpack_require__.bind(__webpack_require__,69588))),490:Pe.lazy(()=>__webpack_require__.e(7178).then(__webpack_require__.bind(__webpack_require__,34687))),491:Pe.lazy(()=>__webpack_require__.e(1660).then(__webpack_require__.bind(__webpack_require__,44824))),492:Pe.lazy(()=>__webpack_require__.e(7333).then(__webpack_require__.bind(__webpack_require__,45589))),493:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(4227)]).then(__webpack_require__.bind(__webpack_require__,23465))),494:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8155)]).then(__webpack_require__.bind(__webpack_require__,63966))),495:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5186)]).then(__webpack_require__.bind(__webpack_require__,28268))),496:Pe.lazy(()=>__webpack_require__.e(5786).then(__webpack_require__.bind(__webpack_require__,27026))),497:Pe.lazy(()=>__webpack_require__.e(9366).then(__webpack_require__.bind(__webpack_require__,92423))),498:Pe.lazy(()=>__webpack_require__.e(5972).then(__webpack_require__.bind(__webpack_require__,98442))),499:Pe.lazy(()=>__webpack_require__.e(9366).then(__webpack_require__.bind(__webpack_require__,92423))),500:Pe.lazy(()=>__webpack_require__.e(1470).then(__webpack_require__.bind(__webpack_require__,11428))),501:Pe.lazy(()=>__webpack_require__.e(7182).then(__webpack_require__.bind(__webpack_require__,34181))),502:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),503:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2476)]).then(__webpack_require__.bind(__webpack_require__,13455))),504:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),505:Pe.lazy(()=>__webpack_require__.e(5729).then(__webpack_require__.bind(__webpack_require__,91880))),506:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),507:Pe.lazy(()=>__webpack_require__.e(6444).then(__webpack_require__.bind(__webpack_require__,39764))),508:Pe.lazy(()=>__webpack_require__.e(5111).then(__webpack_require__.bind(__webpack_require__,89159))),509:Pe.lazy(()=>__webpack_require__.e(2307).then(__webpack_require__.bind(__webpack_require__,8593))),510:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7224)]).then(__webpack_require__.bind(__webpack_require__,24928))),511:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),512:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(8866)]).then(__webpack_require__.bind(__webpack_require__,8986))),513:Pe.lazy(()=>__webpack_require__.e(2300).then(__webpack_require__.bind(__webpack_require__,92516))),514:Pe.lazy(()=>__webpack_require__.e(2501).then(__webpack_require__.bind(__webpack_require__,44664))),515:Pe.lazy(()=>__webpack_require__.e(3212).then(__webpack_require__.bind(__webpack_require__,96387))),516:Pe.lazy(()=>__webpack_require__.e(6904).then(__webpack_require__.bind(__webpack_require__,66301))),517:Pe.lazy(()=>__webpack_require__.e(1855).then(__webpack_require__.bind(__webpack_require__,87826))),518:Pe.lazy(()=>__webpack_require__.e(6904).then(__webpack_require__.bind(__webpack_require__,66301))),519:Pe.lazy(()=>__webpack_require__.e(1276).then(__webpack_require__.bind(__webpack_require__,4505))),520:Pe.lazy(()=>__webpack_require__.e(5816).then(__webpack_require__.bind(__webpack_require__,83601))),521:Pe.lazy(()=>__webpack_require__.e(5816).then(__webpack_require__.bind(__webpack_require__,83601))),522:Pe.lazy(()=>__webpack_require__.e(3784).then(__webpack_require__.bind(__webpack_require__,46968))),523:Pe.lazy(()=>__webpack_require__.e(3862).then(__webpack_require__.bind(__webpack_require__,92002))),524:Pe.lazy(()=>__webpack_require__.e(4565).then(__webpack_require__.bind(__webpack_require__,88440))),525:Pe.lazy(()=>__webpack_require__.e(6531).then(__webpack_require__.bind(__webpack_require__,818))),526:Pe.lazy(()=>__webpack_require__.e(6170).then(__webpack_require__.bind(__webpack_require__,42137))),527:Pe.lazy(()=>__webpack_require__.e(4496).then(__webpack_require__.bind(__webpack_require__,68498))),528:Pe.lazy(()=>__webpack_require__.e(1836).then(__webpack_require__.bind(__webpack_require__,95268))),529:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8518),__webpack_require__.e(8435)]).then(__webpack_require__.bind(__webpack_require__,99230))),530:Pe.lazy(()=>__webpack_require__.e(3509).then(__webpack_require__.bind(__webpack_require__,56257))),531:Pe.lazy(()=>__webpack_require__.e(4496).then(__webpack_require__.bind(__webpack_require__,68498))),532:Pe.lazy(()=>__webpack_require__.e(4496).then(__webpack_require__.bind(__webpack_require__,68498))),533:Pe.lazy(()=>__webpack_require__.e(6034).then(__webpack_require__.bind(__webpack_require__,98015))),534:Pe.lazy(()=>__webpack_require__.e(8999).then(__webpack_require__.bind(__webpack_require__,9404))),535:Pe.lazy(()=>__webpack_require__.e(3910).then(__webpack_require__.bind(__webpack_require__,9448))),536:Pe.lazy(()=>__webpack_require__.e(67).then(__webpack_require__.bind(__webpack_require__,56451))),537:Pe.lazy(()=>__webpack_require__.e(6531).then(__webpack_require__.bind(__webpack_require__,818))),"@@/global-layout":Pe.lazy(()=>__webpack_require__.e(1717).then(__webpack_require__.bind(__webpack_require__,89240)))}}})}var D=__webpack_require__(52243),L=__webpack_require__(2500),ve=__webpack_require__(71418),ze=__webpack_require__(15863),tn=()=>Pe.createElement(ve.Z,{size:"middle",className:ze.Z.loading}),Tn=__webpack_require__(63823),xi=__webpack_require__(66649),mn=__webpack_require__.n(xi),qa=__webpack_require__(91392),Fo=__webpack_require__.n(qa),ns=__webpack_require__(73100),Ks=__webpack_require__.n(ns),Js=__webpack_require__(14805),cu=__webpack_require__.n(Js),Io=__webpack_require__(13477),qc=__webpack_require__.n(Io),rc=__webpack_require__(64796),Lc=__webpack_require__.n(rc),Jc=__webpack_require__(9007),qu=__webpack_require__.n(Jc),Oi=__webpack_require__(58626),Al=__webpack_require__.n(Oi),bf=__webpack_require__(9084),Vo=__webpack_require__.n(bf),Aa=__webpack_require__(5116),ll=__webpack_require__.n(Aa),Cl=__webpack_require__(50991),nc=__webpack_require__.n(Cl),ic=__webpack_require__(39050),Wl=__webpack_require__.n(ic),Tl=__webpack_require__(1554),xf=__webpack_require__.n(Tl),Bu=__webpack_require__(59697),Hl=__webpack_require__.n(Bu);mn().extend(Ks()),mn().extend(cu()),mn().extend(qc()),mn().extend(Lc()),mn().extend(qu()),mn().extend(Al()),mn().extend(Vo()),mn().extend(ll()),mn().extend(nc()),mn().extend(Wl()),mn().extend(xf()),mn().extend(Hl()),mn().extend(Fo());var ef=Object.defineProperty,Gl=Object.getOwnPropertySymbols,wf=Object.prototype.hasOwnProperty,Nu=Object.prototype.propertyIsEnumerable,Pl=(Bn,ni,Qi)=>ni in Bn?ef(Bn,ni,{enumerable:!0,configurable:!0,writable:!0,value:Qi}):Bn[ni]=Qi,ac=(Bn,ni)=>{for(var Qi in ni||(ni={}))wf.call(ni,Qi)&&Pl(Bn,Qi,ni[Qi]);if(Gl)for(var Qi of Gl(ni))Nu.call(ni,Qi)&&Pl(Bn,Qi,ni[Qi]);return Bn},Mc=(Bn,ni,Qi)=>new Promise((Ma,oa)=>{var Ca=ua=>{try{Fs(Qi.next(ua))}catch(Zs){oa(Zs)}},ga=ua=>{try{Fs(Qi.throw(ua))}catch(Zs){oa(Zs)}},Fs=ua=>ua.done?Ma(ua.value):Promise.resolve(ua.value).then(Ca,ga);Fs((Qi=Qi.apply(Bn,ni)).next())});const Hu="/react/build/",Su=!1;function Au(){return Mc(this,null,function*(){const Bn=(0,D.gD)(),{routes:ni,routeComponents:Qi}=yield P(Bn);yield Bn.applyPlugins({key:"patchRoutes",type:Tn.ApplyPluginsType.event,args:{routes:ni,routeComponents:Qi}});const Ma=Bn.applyPlugins({key:"modifyContextOpts",type:Tn.ApplyPluginsType.modify,initialValue:{}}),oa=Ma.basename||"/",Ca=Ma.historyType||"browser",ga=(0,L.fi)(ac({type:Ca,basename:oa},Ma.historyOpts));return Bn.applyPlugins({key:"render",type:Tn.ApplyPluginsType.compose,initialValue(){const Fs={useStream:!0,routes:ni,routeComponents:Qi,pluginManager:Bn,mountElementId:"root",rootElement:Ma.rootElement||document.getElementById("root"),loadingComponent:tn,publicPath:Hu,runtimePublicPath:Su,history:ga,historyType:Ca,basename:oa,__INTERNAL_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{pureApp:!1,pureHtml:!1},callback:Ma.callback},ua=Bn.applyPlugins({key:"modifyClientRenderOpts",type:Tn.ApplyPluginsType.modify,initialValue:Fs});return Qc(ua)}})()})}Au(),typeof window!="undefined"&&(window.g_umi={version:"4.6.20"})})()})(); +(`+a+": "+x+")",u.name="ChunkLoadError",u.type=a,u.request=x,l[1](u)}};__webpack_require__.l(f,h,"chunk-"+r,r)}};var g=function(r,i){var l=i[0],c=i[1],f=i[2],u,h,o=0;if(l.some(function(x){return d[x]!==0})){for(u in c)__webpack_require__.o(c,u)&&(__webpack_require__.m[u]=c[u]);if(f)var a=f(__webpack_require__)}for(r&&r(i);o0&&arguments[0]!==void 0?arguments[0]:"";return Bn.endsWith("/")?Bn:"".concat(Bn,"/")}var yc=__webpack_require__(38127),bc=__webpack_require__(38329),Yu=__webpack_require__(8616),gl=["content"],Mu=["content"],Vc=/^(http:|https:)?\/\//;function Fu(Bn){return Vc.test(Bn)||Bn.startsWith("/")&&!Bn.startsWith("/*")||Bn.startsWith("./")||Bn.startsWith("../")}var xc=function(){return Pe.createElement("noscript",{dangerouslySetInnerHTML:{__html:"Enable JavaScript to run this app."}})},ul=function(ni){var Qi,Ma=ni.loaderData,oa=ni.htmlPageOpts,Ca=ni.manifest,ga=(Ca==null||(Qi=Ca.assets)===null||Qi===void 0?void 0:Qi["umi.css"])||"";return Pe.createElement("script",{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:"window.__UMI_LOADER_DATA__ = ".concat(JSON.stringify(Ma||{}),"; window.__UMI_METADATA_LOADER_DATA__ = ").concat(JSON.stringify(oa||{}),"; window.__UMI_BUILD_ClIENT_CSS__ = '").concat(ga,"'")}})};function Xu(Bn){var ni=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(typeof Bn=="string")return Fu(Bn)?(0,bo.Z)({src:Bn},ni):{content:Bn};if((0,Yu.Z)(Bn)==="object")return(0,bo.Z)((0,bo.Z)({},Bn),ni);throw new Error("Invalid script type: ".concat((0,Yu.Z)(Bn)))}function kf(Bn){return Fu(Bn)?{type:"link",href:Bn}:{type:"style",content:Bn}}var yu=function(ni){var Qi,Ma,oa,Ca,ga,Fs,ua=ni.htmlPageOpts;return Pe.createElement(Pe.Fragment,null,(ua==null?void 0:ua.title)&&Pe.createElement("title",null,ua.title),ua==null||(Qi=ua.favicons)===null||Qi===void 0?void 0:Qi.map(function(Zs,Ju){return Pe.createElement("link",{key:Ju,rel:"shortcut icon",href:Zs})}),(ua==null?void 0:ua.description)&&Pe.createElement("meta",{name:"description",content:ua.description}),(ua==null||(Ma=ua.keywords)===null||Ma===void 0?void 0:Ma.length)&&Pe.createElement("meta",{name:"keywords",content:ua.keywords.join(",")}),ua==null||(oa=ua.metas)===null||oa===void 0?void 0:oa.map(function(Zs){return Pe.createElement("meta",{key:Zs.name,name:Zs.name,content:Zs.content})}),ua==null||(Ca=ua.links)===null||Ca===void 0?void 0:Ca.map(function(Zs,Ju){return Pe.createElement("link",(0,bc.Z)({key:Ju},Zs))}),ua==null||(ga=ua.styles)===null||ga===void 0?void 0:ga.map(function(Zs,Ju){var cl=kf(Zs),yl=cl.type,el=cl.href,$l=cl.content;if(yl==="link")return Pe.createElement("link",{key:Ju,rel:"stylesheet",href:el});if(yl==="style")return Pe.createElement("style",{key:Ju},$l)}),ua==null||(Fs=ua.headScripts)===null||Fs===void 0?void 0:Fs.map(function(Zs,Ju){var cl=Xu(Zs),yl=cl.content,el=(0,yc.Z)(cl,gl);return Pe.createElement("script",(0,bc.Z)({dangerouslySetInnerHTML:{__html:yl},key:Ju},el))}))};function Ul(Bn){var ni,Qi=Bn.children,Ma=Bn.loaderData,oa=Bn.manifest,Ca=Bn.htmlPageOpts,ga=Bn.__INTERNAL_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Fs=Bn.mountElementId;if(ga!=null&&ga.pureHtml)return Pe.createElement("html",null,Pe.createElement("head",null,Pe.createElement(yu,{htmlPageOpts:Ca})),Pe.createElement("body",null,Pe.createElement(xc,null),Pe.createElement("div",{id:Fs},Qi),Pe.createElement(ul,{manifest:oa,loaderData:Ma,htmlPageOpts:Ca})));if(ga!=null&&ga.pureApp)return Pe.createElement(Pe.Fragment,null,Qi);var ua=typeof window=="undefined"?oa==null?void 0:oa.assets["umi.css"]:window.__UMI_BUILD_ClIENT_CSS__;return Pe.createElement("html",{suppressHydrationWarning:!0,lang:(Ca==null?void 0:Ca.lang)||"en"},Pe.createElement("head",null,Pe.createElement("meta",{charSet:"utf-8"}),Pe.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),ua&&Pe.createElement("link",{suppressHydrationWarning:!0,rel:"stylesheet",href:ua}),Pe.createElement(yu,{htmlPageOpts:Ca})),Pe.createElement("body",null,Pe.createElement(xc,null),Pe.createElement("div",{id:Fs},Qi),Pe.createElement(ul,{manifest:oa,loaderData:Ma,htmlPageOpts:Ca}),Ca==null||(ni=Ca.scripts)===null||ni===void 0?void 0:ni.map(function(Zs,Ju){var cl=Xu(Zs),yl=cl.content,el=(0,yc.Z)(cl,Mu);return Pe.createElement("script",(0,bc.Z)({dangerouslySetInnerHTML:{__html:yl},key:Ju},el))})))}var Sl=Pe.createContext(void 0);function Yc(){return Pe.useContext(Sl)}var wc=["redirect"];function ec(Bn){var ni=Bn.routesById,Qi=Bn.parentId,Ma=Bn.routeComponents,oa=Bn.useStream,Ca=oa===void 0?!0:oa;return Object.keys(ni).filter(function(ga){return ni[ga].parentId===Qi}).map(function(ga){var Fs=Rf((0,bo.Z)((0,bo.Z)({route:ni[ga],routeComponent:Ma[ga],loadingComponent:Bn.loadingComponent,reactRouter5Compat:Bn.reactRouter5Compat},Bn.reactRouter5Compat&&{hasChildren:Object.keys(ni).filter(function(Zs){return ni[Zs].parentId===ga}).length>0}),{},{useStream:Ca})),ua=ec({routesById:ni,routeComponents:Ma,parentId:Fs.id,loadingComponent:Bn.loadingComponent,reactRouter5Compat:Bn.reactRouter5Compat,useStream:Ca});return ua.length>0&&(Fs.children=ua,Fs.routes=ua),Fs})}function zl(Bn){var ni=(0,Lu.UO)(),Qi=(0,Lu.Gn)(Bn.to,ni),Ma=(0,Jl.T$)(),oa=(0,Lu.TH)();if(Ma!=null&&Ma.keepQuery){var Ca=oa.search+oa.hash;Qi+=Ca}var ga=(0,bo.Z)((0,bo.Z)({},Bn),{},{to:Qi});return Pe.createElement(Lu.Fg,(0,bc.Z)({replace:!0},ga))}function Rf(Bn){var ni=Bn.route,Qi=Bn.useStream,Ma=Qi===void 0?!0:Qi,oa=ni.redirect,Ca=(0,yc.Z)(ni,wc),ga=Bn.reactRouter5Compat?tc:kc;return(0,bo.Z)({element:oa?Pe.createElement(zl,{to:oa}):Pe.createElement(Sl.Provider,{value:{route:Bn.route}},Pe.createElement(ga,{loader:Pe.memo(Bn.routeComponent),loadingComponent:Bn.loadingComponent||yf,hasChildren:Bn.hasChildren,useStream:Ma}))},Ca)}function yf(){return Pe.createElement("div",null)}function tc(Bn){var ni=Yc(),Qi=ni.route,Ma=(0,Jl.Ov)(),oa=Ma.history,Ca=Ma.clientRoutes,ga=(0,Lu.UO)(),Fs={params:ga,isExact:!0,path:Qi.path,url:oa.location.pathname},ua=Bn.loader,Zs={location:oa.location,match:Fs,history:oa,params:ga,route:Qi,routes:Ca};return Bn.useStream?Pe.createElement(Pe.Suspense,{fallback:Pe.createElement(Bn.loadingComponent,null)},Pe.createElement(ua,Zs,Bn.hasChildren&&Pe.createElement(Lu.j3,null))):Pe.createElement(ua,Zs,Bn.hasChildren&&Pe.createElement(Lu.j3,null))}function kc(Bn){var ni=Bn.loader;return Bn.useStream?Pe.createElement(Pe.Suspense,{fallback:Pe.createElement(Bn.loadingComponent,null)},Pe.createElement(ni,null)):Pe.createElement(ni,null)}var Zl=null;function Lf(){return Zl}function Xc(Bn){var ni=Bn.history,Qi=Pe.useState({action:ni.action,location:ni.location}),Ma=(0,Ru.Z)(Qi,2),oa=Ma[0],Ca=Ma[1];return(0,Pe.useLayoutEffect)(function(){return ni.listen(Ca)},[ni]),(0,Pe.useLayoutEffect)(function(){function ga(Fs){Bn.pluginManager.applyPlugins({key:"onRouteChange",type:"event",args:{routes:Bn.routes,clientRoutes:Bn.clientRoutes,location:Fs.location,action:Fs.action,basename:Bn.basename,isFirst:!!Fs.isFirst}})}return ga({location:oa.location,action:oa.action,isFirst:!0}),ni.listen(ga)},[ni,Bn.routes,Bn.clientRoutes]),Pe.createElement(Lu.F0,{navigator:ni,location:oa.location,basename:Bn.basename},Bn.children)}function Qu(){var Bn=(0,Jl.Ov)(),ni=Bn.clientRoutes;return(0,Lu.V$)(ni)}var Ec=["innerProvider","i18nProvider","accessProvider","dataflowProvider","outerProvider","rootContainer"],Sc=function(ni,Qi){var Ma=ni.basename||"/",oa=ec({routesById:ni.routes,routeComponents:ni.routeComponents,loadingComponent:ni.loadingComponent,reactRouter5Compat:ni.reactRouter5Compat,useStream:ni.useStream});ni.pluginManager.applyPlugins({key:"patchClientRoutes",type:"event",args:{routes:oa}});for(var Ca=Pe.createElement(Xc,{basename:Ma,pluginManager:ni.pluginManager,routes:ni.routes,clientRoutes:oa,history:ni.history},Qi),ga=0,Fs=Ec;ganew Promise((Ma,oa)=>{var Ca=ua=>{try{Fs(Qi.next(ua))}catch(Zs){oa(Zs)}},ga=ua=>{try{Fs(Qi.throw(ua))}catch(Zs){oa(Zs)}},Fs=ua=>ua.done?Ma(ua.value):Promise.resolve(ua.value).then(Ca,ga);Fs((Qi=Qi.apply(Bn,ni)).next())});function P(){return Rc(this,null,function*(){return{routes:{1:{path:"/",parentId:"@@/global-layout",id:"1"},2:{path:"/paperlibrary",parentId:"1",id:"2"},3:{path:"/paperlibrary",parentId:"2",id:"3"},4:{path:"/paperlibrary/add",parentId:"2",id:"4"},5:{path:"/paperlibrary/add/:id",parentId:"2",id:"5"},6:{path:"/paperlibrary/see/:id",parentId:"2",id:"6"},7:{path:"/paperlibrary/edit_select/:id",parentId:"2",id:"7"},8:{path:"/paperlibrary/exchangequestion",parentId:"2",id:"8"},9:{path:"/paths",parentId:"1",id:"9"},10:{path:"/paths",parentId:"9",id:"10"},11:{path:"/paths/higherVocationalEducation",parentId:"9",id:"11"},12:{path:"/paths/new",parentId:"9",id:"12"},13:{path:"/paths/guidance",exact:!0,parentId:"9",id:"13"},14:{path:"/paths/:pathId",parentId:"9",id:"14"},15:{path:"/paths/:pathId/statistics",parentId:"9",id:"15"},16:{path:"/paths/:pathId/edit",parentId:"9",id:"16"},17:{path:"/paths/:pathId/:stageId/program_homework/:categoryId/add",parentId:"9",id:"17"},18:{path:"/paths/:pathId/:stageId/program_homework/:categoryId/edit",parentId:"9",id:"18"},19:{path:"/classrooms",parentId:"1",id:"19"},20:{path:"/classrooms",parentId:"19",id:"20"},21:{path:"/classrooms/examList",parentId:"19",id:"21"},22:{path:"/classrooms/classicCases",parentId:"19",id:"22"},23:{path:"/classrooms/index",parentId:"19",id:"23"},24:{path:"/classrooms/new",parentId:"19",id:"24"},25:{path:"/classrooms/:coursesId/edit",parentId:"19",id:"25"},26:{path:"/classrooms/news/:subjectid/newgold/:id",parentId:"19",id:"26"},27:{path:"/classrooms/:coursesId/newgolds/settings",parentId:"19",id:"27"},28:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/review_detail/:userId",parentId:"19",id:"28"},29:{path:"/classrooms/:coursesId/common_homework/:categoryId/review_detail/:userId",parentId:"19",id:"29"},30:{path:"/classrooms/:coursesId/program_homework/:categoryId/review_detail/:userId",parentId:"19",id:"30"},31:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/detail",parentId:"19",id:"31"},32:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/:homeworkId/comment",parentId:"19",id:"32"},33:{path:"/classrooms/:coursesId/common_homework/:categoryId/:homeworkId/comment",parentId:"19",id:"33"},34:{path:"/classrooms/:coursesId/shixun_homework/:categoryId/:homeworkId/commitsummary",parentId:"19",id:"34"},35:{path:"/classrooms/:coursesId/group_homework/:categoryId/detail",parentId:"19",id:"35"},36:{path:"/classrooms/:coursesId/common_homework/:categoryId/detail",parentId:"19",id:"36"},37:{path:"/classrooms/:coursesId/common_homework/:categoryId/review/:userId",parentId:"19",id:"37"},38:{path:"/classrooms/:coursesId/group_homework/:commonHomeworkId/review/:userId",parentId:"19",id:"38"},39:{path:"/classrooms/:coursesId/group_homework/:commonHomeworkId/post",parentId:"19",id:"39"},40:{path:"/classrooms/:coursesId/group_homework/:commonHomeworkId/:homeworkId/edit",parentId:"19",id:"40"},41:{path:"/classrooms/:coursesId/exercise/:categoryId/detail/:userId/review_detail",parentId:"19",id:"41"},42:{path:"/classrooms/:coursesId/exercise/:categoryId/detail",parentId:"19",id:"42"},43:{path:"/classrooms/:coursesId/exercise/:categoryId/preview_select",parentId:"19",id:"43"},44:{path:"/classrooms/:coursesId/exercise/:categoryId/:login/initate_answer",parentId:"19",id:"44"},45:{path:"/classrooms/:coursesId/exercise/:categoryId/users/:login",parentId:"19",id:"45"},46:{path:"/classrooms/:coursesId/exercise/:categoryId/wrongAnswer/:login",parentId:"19",id:"46"},47:{path:"/classrooms/:coursesId/exercisenotice/:categoryId/users/:login",parentId:"19",id:"47"},48:{path:"/classrooms/:coursesId/exercise/:categoryId/random/edit",parentId:"19",id:"48"},49:{path:"/classrooms/:coursesId/exercise/:categoryId/random/preview",parentId:"19",id:"49"},50:{path:"/classrooms/:coursesId/exercise/add",parentId:"19",id:"50"},51:{path:"/classrooms/:coursesId/exercise/add/:exerciseId",parentId:"19",id:"51"},52:{path:"/classrooms/:coursesId/exercise/:exerciseId/reviews/group",parentId:"19",id:"52"},53:{path:"/classrooms/:coursesId/exercise/:exerciseId/review/:userId",parentId:"19",id:"53"},54:{path:"/classrooms/:coursesId/exercise/:exerciseId/centralizeReview/:userId",parentId:"19",id:"54"},55:{path:"/classrooms/:coursesId/exercise/:exerciseId/export_blank",parentId:"19",id:"55"},56:{path:"/classrooms/:coursesId/exercise/:exerciseId/sumup",parentId:"19",id:"56"},57:{path:"/classrooms/:coursesId/exercise/:exerciseId/sumup/edit",parentId:"19",id:"57"},58:{path:"/classrooms/:coursesId/exercise/:exerciseId/analysis/:studentId",parentId:"19",id:"58"},59:{path:"/classrooms/:coursesId/shixun_homework/:exerciseId/analysis/:studentId",parentId:"19",id:"59"},60:{path:"/classrooms/:coursesId/exercise/:exerciseId/analysis/:studentId/code",parentId:"19",id:"60"},61:{path:"/classrooms/:coursesId/shixun_homework/:exerciseId/analysis/:studentId/code",parentId:"19",id:"61"},62:{path:"/classrooms/:coursesId/graduation_topics/:categoryId/detail",parentId:"19",id:"62"},63:{path:"/classrooms/:coursesId/graduation_topics/:categoryId/add",parentId:"19",id:"63"},64:{path:"/classrooms/:coursesId/graduation_topics/:categoryId/edit",parentId:"19",id:"64"},65:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId/add",parentId:"19",id:"65"},66:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId/edit",parentId:"19",id:"66"},67:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId/detail",parentId:"19",id:"67"},68:{path:"/classrooms/:coursesId/common_homework/:categoryId/add",parentId:"19",id:"68"},69:{path:"/classrooms/:coursesId/common_homework/:categoryId/edit",parentId:"19",id:"69"},70:{path:"/classrooms/:coursesId/common_homework/:commonHomeworkId/post",parentId:"19",id:"70"},71:{path:"/classrooms/:coursesId/common_homework/:commonHomeworkId/:homeworkId/edit",parentId:"19",id:"71"},72:{path:"/classrooms/:coursesId/group_homework/:categoryId/add",parentId:"19",id:"72"},73:{path:"/classrooms/:coursesId/group_homework/:categoryId/edit",parentId:"19",id:"73"},74:{path:"/classrooms/:coursesId/poll/:categoryId/add",parentId:"19",id:"74"},75:{path:"/classrooms/:coursesId/poll/:categoryId/edit",parentId:"19",id:"75"},76:{path:"/classrooms/:coursesId/poll/:categoryId/detail",parentId:"19",id:"76"},77:{path:"/classrooms/:coursesId/poll/:categoryId/users/:login",parentId:"19",id:"77"},78:{path:"/classrooms/:coursesId/poll/:categoryId/questionnaireInfo/:login",parentId:"19",id:"78"},79:{path:"/classrooms/:coursesId/board/:categoryId/Add",parentId:"19",id:"79"},80:{path:"/classrooms/:coursesId/board/:categoryId/Edit/:boardId",parentId:"19",id:"80"},81:{path:"/classrooms/:coursesId/board/:categoryId/Detail/:boardId",parentId:"19",id:"81"},82:{path:"/classrooms/:courseId/template/:templateId",parentId:"19",id:"82"},83:{path:"/classrooms/:courseId/common_homework/:homeworkId/lab-report/:reportId",parentId:"19",id:"83"},84:{path:"/classrooms/guidance",parentId:"19",id:"84"},85:{path:"/classrooms/:courseId/common_homework/:homeworkId/lab-report-view/:workId",parentId:"19",id:"85"},86:{path:"/classrooms/:coursesId/exercise/:categoryId/users/:login/check",parentId:"19",id:"86"},87:{path:"/classrooms/:coursesId/Studentdetail/:login",parentId:"19",id:"87"},88:{path:"/classrooms/:coursesId/StudentSituation/:categoryId/:login",parentId:"19",id:"88"},89:{path:"/classrooms/:coursesId/engineering/datail",parentId:"19",id:"89"},90:{path:"/classrooms/:coursesId/program_homework/:categoryId/add",parentId:"19",id:"90"},91:{path:"/classrooms/:coursesId/program_homework/:categoryId/edit",parentId:"19",id:"91"},92:{path:"/classrooms/:coursesId/program_homework/ranking",parentId:"19",id:"92"},93:{path:"/classrooms/:coursesId/program_homework/:categoryId/detail",parentId:"19",id:"93"},94:{path:"/classrooms/:coursesId/program_homework/:categoryId/:homeworkId/ranking",parentId:"19",id:"94"},95:{path:"/classrooms/:coursesId/program_homework/:categoryId/:homeworkId/:user_id/comment",parentId:"19",id:"95"},96:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer",parentId:"19",id:"96"},97:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer/add",parentId:"19",id:"97"},98:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer/:answerid/edit",parentId:"19",id:"98"},99:{path:"/classrooms/:coursesId/program_homework/:categoryId/answer/:answerid/detail",parentId:"19",id:"99"},100:{path:"/classrooms/:videoId/video_info",parentId:"19",id:"100"},101:{path:"/classrooms/",parentId:"19",id:"101"},102:{path:"/classrooms/:coursesId/shixun_homework/:categoryId",parentId:"101",id:"102"},103:{path:"/classrooms/:coursesId/shixun_homework",parentId:"101",id:"103"},104:{path:"/classrooms/:coursesId/graduation_topics/:categoryId",parentId:"101",id:"104"},105:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId",parentId:"101",id:"105"},106:{path:"/classrooms/:coursesId/graduation_tasks/:categoryId",parentId:"101",id:"106"},107:{path:"/classrooms/:coursesId/exercise/:categoryId",parentId:"101",id:"107"},108:{path:"/classrooms/:coursesId/exercise",parentId:"101",id:"108"},109:{path:"/classrooms/:coursesId/poll/:categoryId",parentId:"101",id:"109"},110:{path:"/classrooms/:coursesId/poll",parentId:"101",id:"110"},111:{path:"/classrooms/:coursesId/common_homework/:categoryId",parentId:"101",id:"111"},112:{path:"/classrooms/:coursesId/common_homework",parentId:"101",id:"112"},113:{path:"/classrooms/:coursesId/group_homework/:categoryId",parentId:"101",id:"113"},114:{path:"/classrooms/:coursesId/group_homework",parentId:"101",id:"114"},115:{path:"/classrooms/:coursesId/teachers",parentId:"101",id:"115"},116:{path:"/classrooms/:coursesId/students",parentId:"101",id:"116"},117:{path:"/classrooms/:coursesId/assistant",parentId:"101",id:"117"},118:{path:"/classrooms/:coursesId/program_homework",parentId:"101",id:"118"},119:{path:"/classrooms/:coursesId/program_homework/:categoryId",parentId:"101",id:"119"},120:{path:"/classrooms/:coursesId/engineering",parentId:"101",id:"120"},121:{path:"/classrooms/:coursesId/learning_path",parentId:"101",id:"121"},122:{path:"/classrooms/:coursesId/resource_recommend",parentId:"101",id:"122"},123:{path:"/classrooms/:coursesId/attendance",parentId:"101",id:"123"},124:{path:"/classrooms/:coursesId/attendance/StudetnSign",parentId:"101",id:"124"},125:{path:"/classrooms/:coursesId/attendance/:categoryId/:tabId/detail",parentId:"101",id:"125"},126:{path:"/classrooms/:coursesId/announcement",parentId:"101",id:"126"},127:{path:"/classrooms/:coursesId/announcement/:categoryId",parentId:"101",id:"127"},128:{path:"/classrooms/:coursesId/online_learning",parentId:"101",id:"128"},129:{path:"/classrooms/:coursesId/online_learning/:categoryId",parentId:"101",id:"129"},130:{path:"/classrooms/:coursesId/attachment/:categoryId",parentId:"101",id:"130"},131:{path:"/classrooms/:coursesId/attachment",parentId:"101",id:"131"},132:{path:"/classrooms/:coursesId/video",parentId:"101",id:"132"},133:{path:"/classrooms/:coursesId/video/:categoryId",parentId:"101",id:"133"},134:{path:"/classrooms/:coursesId/video/:categoryId/statistics",parentId:"101",id:"134"},135:{path:"/classrooms/:coursesId/video/:username/upload",parentId:"101",id:"135"},136:{path:"/classrooms/:coursesId/video/:categoryId/statistics/:videoId",parentId:"101",id:"136"},137:{path:"/classrooms/:coursesId/video/:categoryId/statistics/:videoId/:userId",parentId:"101",id:"137"},138:{path:"/classrooms/:coursesId/live_video/:categoryId",parentId:"101",id:"138"},139:{path:"/classrooms/:coursesId/live_video",parentId:"101",id:"139"},140:{path:"/classrooms/:coursesId/video/:categoryId/studentstatistics",parentId:"101",id:"140"},141:{path:"/classrooms/:coursesId/board/:categoryId",parentId:"101",id:"141"},142:{path:"/classrooms/:coursesId/board",parentId:"101",id:"142"},143:{path:"/classrooms/:coursesId/course_group",parentId:"101",id:"143"},144:{path:"/classrooms/:coursesId/course_group/:categoryId",parentId:"101",id:"144"},145:{path:"/classrooms/:coursesId/course_group/:categoryId/detail",parentId:"101",id:"145"},146:{path:"/classrooms/:coursesId/not_course_group/:categoryId",parentId:"101",id:"146"},147:{path:"/classrooms/:coursesId/not_course_group",parentId:"101",id:"147"},148:{path:"/classrooms/:coursesId/statistics/",parentId:"101",id:"148"},149:{path:"/classrooms/:coursesId/statistics/:categoryId",parentId:"101",id:"149"},150:{path:"/classrooms/:coursesId/statistics_video/:categoryId",parentId:"101",id:"150"},151:{path:"/classrooms/:coursesId/statistics_quality/:categoryId",parentId:"101",id:"151"},152:{path:"/classrooms/:coursesId/statistics_user_portrait/:categoryId",parentId:"101",id:"152"},153:{path:"/classrooms/:coursesId/student_statistics/:categoryId",parentId:"101",id:"153"},154:{path:"/classrooms/:coursesId/student_statistics/:categoryId/:listId/:type",parentId:"101",id:"154"},155:{path:"/classrooms/:coursesId/video_statistics/:categoryId/Student/:studentid",parentId:"101",id:"155"},156:{path:"/classrooms/:coursesId/exportlist/:type",parentId:"101",id:"156"},157:{path:"/classrooms/:coursesId",parentId:"101",id:"157"},158:{path:"/classrooms/:coursesId/template",parentId:"101",id:"158"},159:{path:"/competitions",parentId:"1",id:"159"},160:{path:"/competitions/index",parentId:"159",id:"160"},161:{path:"/competitions/:identifier/list",parentId:"159",id:"161"},162:{path:"/competitions/exports",parentId:"159",id:"162"},163:{path:"/competitions",parentId:"159",id:"163"},164:{path:"/competitions/:identifier",parentId:"159",id:"164"},165:{path:"/competitions/index/:identifier",parentId:"159",id:"165"},166:{path:"/competitions/:identifier/detail/enroll",parentId:"159",id:"166"},167:{path:"/competitions/:identifier/detail/UpdateTeanname/:Teannameid",parentId:"159",id:"167"},168:{path:"/competitions/:identifier/detail/teamDetail/:Teamid",parentId:"159",id:"168"},169:{path:"/competitions/detail/:identifier",parentId:"159",id:"169"},170:{path:"/forums",parentId:"1",id:"170"},171:{path:"/forums",parentId:"170",id:"171"},172:{path:"/forums/categories/:memoType",parentId:"170",id:"172"},173:{path:"/forums/new",parentId:"170",id:"173"},174:{path:"/forums/:memoId/edit",parentId:"170",id:"174"},175:{path:"/forums/:memoId",parentId:"170",id:"175"},176:{path:"/problemset",parentId:"1",id:"176"},177:{path:"/problemset",parentId:"176",id:"177"},178:{path:"/problemset/newitem",parentId:"176",id:"178"},179:{path:"/problemset/:type/:id",parentId:"176",id:"179"},180:{path:"/problemset/preview",parentId:"176",id:"180"},181:{path:"/problemset/preview_new",parentId:"176",id:"181"},182:{path:"/problemset/preview_select",parentId:"176",id:"182"},183:{path:"/shixuns",parentId:"1",id:"183"},184:{path:"/shixuns",parentId:"183",id:"184"},185:{path:"/shixuns/exports",parentId:"183",id:"185"},186:{path:"/shixuns/new",parentId:"183",id:"186"},187:{path:"/shixuns/new/CreateImg",parentId:"183",id:"187"},188:{path:"/shixuns/new/:id/imagepreview",parentId:"183",id:"188"},189:{path:"/shixuns/:id/Merge",parentId:"183",id:"189"},190:{path:"/shixuns/:id/Split",parentId:"183",id:"190"},191:{path:"/shixuns/:id/edit",parentId:"183",id:"191"},192:{path:"shixuns/:id/edit/warehouse",parentId:"191",id:"192"},193:{path:"/shixuns/:id/edit/newquestion",parentId:"191",id:"193"},194:{path:"/shixuns/:id/edit/:challengesId/editquestion",parentId:"191",id:"194"},195:{path:"/shixuns/:id/edit/:challengesId/editquestion/:questionId",parentId:"191",id:"195"},196:{path:"/shixuns/:id/edit/new",parentId:"191",id:"196"},197:{path:"/shixuns/:id/edit/:challengesId/editcheckpoint",parentId:"191",id:"197"},198:{path:"/shixuns/:id/edit/:challengesId/tab=2",parentId:"191",id:"198"},199:{path:"/shixuns/:id/edit/:challengesId/tab=3",parentId:"191",id:"199"},200:{path:"/shixuns/:id/edit/:challengesId/tab=4",parentId:"191",id:"200"},201:{path:"/shixuns/:id",parentId:"183",id:"201"},202:{path:"/shixuns/:id/challenges",parentId:"201",id:"202"},203:{path:"/shixuns/:id/repository",parentId:"201",id:"203"},204:{path:"/shixuns/:id/secret_repository",parentId:"201",id:"204"},205:{path:"/shixuns/:id/collaborators",parentId:"201",id:"205"},206:{path:"/shixuns/:id/dataset",parentId:"201",id:"206"},207:{path:"/shixuns/:id/dataset/jupyterEdit",parentId:"201",id:"207"},208:{path:"/shixuns/:id/shixun_discuss",parentId:"201",id:"208"},209:{path:"/shixuns/:id/ranking_list",parentId:"201",id:"209"},210:{path:"/shixuns/:id/settings",parentId:"201",id:"210"},211:{path:"/shixuns/:id/repository/:repoId/commits",parentId:"201",id:"211"},212:{path:"/shixuns/:id/secret_repository/:repoId/commits",parentId:"201",id:"212"},213:{path:"/shixuns/:id/repository/upload_file",parentId:"201",id:"213"},214:{path:"/shixuns/:id/secret_repository/upload_file",parentId:"201",id:"214"},215:{path:"/shixuns/:id/repository/add_file",parentId:"201",id:"215"},216:{path:"/shixuns/:id/secret_repository/add_file",parentId:"201",id:"216"},217:{path:"/shixuns/:id/repository/master/shixun_show/:fileId",exact:!1,parentId:"201",id:"217"},218:{path:"/shixuns/:id/secret_repository/master/shixun_show/:fileId",exact:!1,parentId:"201",id:"218"},219:{path:"/shixuns/:id/audit_situation",parentId:"201",id:"219"},220:{path:"/shixuns/:id/fork_list",parentId:"201",id:"220"},221:{path:"/shixuns/:id/skill_tags",parentId:"201",id:"221"},222:{path:"/users",parentId:"1",id:"222"},223:{path:"/users/:username/videos/protocol",parentId:"222",id:"223"},224:{path:"/users/:username/videos/resourceProtocol",parentId:"222",id:"224"},225:{path:"/users/:username/videos/success",parentId:"222",id:"225"},226:{path:"/users/:username/topicbank/:topicstype",parentId:"222",id:"226"},227:{path:"/users/:username/topics/:topicId/:topictype/normal/detail",parentId:"222",id:"227"},228:{path:"/users/:username/topics/:topicId/:topictype/group/detail",parentId:"222",id:"228"},229:{path:"/users/:username/topics/:topicId/:topictype/normal/edit",parentId:"222",id:"229"},230:{path:"/users/:username/topics/:topicId/:topictype/group/edit",parentId:"222",id:"230"},231:{path:"/users/:username/topics/:topicId/:topictype/exercise/edit",parentId:"222",id:"231"},232:{path:"/users/:username/topics/:topicId/:topictype/exercise/detail",parentId:"222",id:"232"},233:{path:"/users/:username/topics/:topicId/:topictype/poll/edit",parentId:"222",id:"233"},234:{path:"/users/:username/topics/:topicId/:topictype/poll/detail",parentId:"222",id:"234"},235:{path:"/users/:username/experiment-img/add",parentId:"222",id:"235"},236:{path:"/users/:username",parentId:"222",id:"236"},237:{path:"/users/:username",parentId:"236",id:"237"},238:{path:"/users/:username/baseInfo/edit",parentId:"236",id:"238"},239:{path:"/users/:username/baseInfo",parentId:"236",id:"239"},240:{path:"/users/:username/realNameCertification",parentId:"236",id:"240"},241:{path:"/users/:username/careerCertification",parentId:"236",id:"241"},242:{path:"/users/:username/classrooms",parentId:"236",id:"242"},243:{path:"/users/:username/shixuns",parentId:"236",id:"243"},244:{path:"/users/:username/dataSet",parentId:"236",id:"244"},245:{path:"/users/:username/userPortrait",parentId:"236",id:"245"},246:{path:"/users/:username/learningPath",parentId:"236",id:"246"},247:{path:"/users/:username/teach-group",parentId:"236",id:"247"},248:{path:"/users/:username/competitions",parentId:"236",id:"248"},249:{path:"/users/:username/experiment-img",parentId:"236",id:"249"},250:{path:"/users/:username/experiment-img/:experid/detail",parentId:"236",id:"250"},251:{path:"/users/:username/certificate",parentId:"236",id:"251"},252:{path:"/users/:username/otherResources",parentId:"236",id:"252"},253:{path:"/users/:username/classmanagement",parentId:"236",id:"253"},254:{path:"/users/:username/classmanagement/:couserid",parentId:"236",id:"254"},255:{path:"/users/:username/paths",parentId:"236",id:"255"},256:{path:"/users/:username/projects",parentId:"236",id:"256"},257:{path:"/users/:username/videos",parentId:"236",id:"257"},258:{path:"/users/:username/videos/upload",parentId:"236",id:"258"},259:{path:"/users/:username/topics/:topicstype",parentId:"236",id:"259"},260:{path:"/users/:username/vspaces",parentId:"236",id:"260"},261:{path:"/users/:username/resourcesCenter",parentId:"236",id:"261"},262:{path:"/users/:username/resourcesCenter/:id/detail",parentId:"236",id:"262"},263:{path:"/users/:username/resourceGuarantee",parentId:"236",id:"263"},264:{path:"/users/:username/resourceAllocation",parentId:"236",id:"264"},265:{parentId:"1",id:"265"},266:{path:"/problems",parentId:"265",id:"266"},267:{path:"/problems",parentId:"266",id:"267"},268:{path:"/problems/batchAdd",parentId:"266",id:"268"},269:{path:"/problems/newcreate",parentId:"265",id:"269"},270:{path:"/problems/newedit/:id",exact:!0,parentId:"265",id:"270"},271:{path:"/problems/:id/edit",exact:!0,parentId:"265",id:"271"},272:{path:"/problems/new",exact:!0,parentId:"265",id:"272"},273:{path:"/problems/:id/oj/:save_identifier",parentId:"265",id:"273"},274:{path:"/problems/:id/record-detail/:submitId",parentId:"265",id:"274"},275:{path:"/problems/add",parentId:"265",id:"275"},276:{path:"/problems/:id/ojedit",parentId:"265",id:"276"},277:{path:"/engineering",parentId:"1",id:"277"},278:{path:"/engineering",parentId:"277",id:"278"},279:{path:"/engineering/teacherList",parentId:"278",id:"279"},280:{path:"/engineering/studentList",parentId:"278",id:"280"},281:{path:"/engineering/training/program",parentId:"278",id:"281"},282:{path:"/engineering/training/program/add",parentId:"278",id:"282"},283:{path:"/engineering/training/program/edit",parentId:"278",id:"283"},284:{path:"/engineering/training/objectives",parentId:"278",id:"284"},285:{path:"/engineering/graduated/index",parentId:"278",id:"285"},286:{path:"/engineering/graduated/matrix",parentId:"278",id:"286"},287:{path:"/engineering/course/list",parentId:"278",id:"287"},288:{path:"/engineering/course/setting",parentId:"278",id:"288"},289:{path:"/engineering/course/matrix",parentId:"278",id:"289"},290:{path:"/engineering/navigation",parentId:"278",id:"290"},291:{path:"/engineering/evaluate/course",parentId:"278",id:"291"},292:{path:"/engineering/evaluate/course/:ec_year_id/:id",parentId:"278",id:"292"},293:{path:"/engineering/evaluate/norm",parentId:"278",id:"293"},294:{path:"/engineering/evaluate/document",parentId:"278",id:"294"},295:{path:"/engineering/evaluate/norm/:ec_year_id/:id",parentId:"278",id:"295"},296:{path:"/engineering/*",redirect:"/404",parentId:"278",id:"296"},297:{path:"/innovation",parentId:"1",id:"297"},298:{path:"/innovation/tasks/:taskId",parentId:"297",id:"298"},299:{path:"/innovation",parentId:"297",id:"299"},300:{path:"/innovation/project",parentId:"299",id:"300"},301:{path:"/innovation/dataset",parentId:"299",id:"301"},302:{path:"/innovation/mirror",parentId:"299",id:"302"},303:{path:"/innovation/my-project",parentId:"299",id:"303"},304:{path:"/innovation/my-dataset",parentId:"299",id:"304"},305:{path:"/innovation/my-mirror",parentId:"299",id:"305"},306:{path:"/innovation/project/create",parentId:"299",id:"306"},307:{path:"/innovation/project/edit/:id",parentId:"299",id:"307"},308:{path:"/innovation/project/detail/:taskId",parentId:"299",id:"308"},309:{path:"/tasks",parentId:"1",id:"309"},310:{path:"/tasks/:taskId",exact:!0,parentId:"309",id:"310"},311:{path:"/tasks/:identifier/jupyter/",exact:!0,parentId:"309",id:"311"},312:{path:"/tasks/:courseId/:homeworkId/:taskId",exact:!0,parentId:"309",id:"312"},313:{path:"/tasks/jupyter/:courseId/:homeworkId/:identifier",exact:!0,parentId:"309",id:"313"},314:{path:"/tasks/:courseId/:exerciseId/:taskId/exercise",exact:!0,parentId:"309",id:"314"},315:{path:"/myproblems",parentId:"1",id:"315"},316:{path:"/myproblems/:id/record-detail/:submitId",exact:!0,parentId:"315",id:"316"},317:{path:"/myproblems/:id",exact:!0,parentId:"315",id:"317"},318:{path:"/account",parentId:"1",id:"318"},319:{path:"/account",parentId:"318",id:"319"},320:{path:"/account/profile",parentId:"319",id:"320"},321:{path:"/account/profile/edit",parentId:"319",id:"321"},322:{path:"/account/certification",parentId:"319",id:"322"},323:{path:"/account/secure",parentId:"319",id:"323"},324:{path:"/account/binding",parentId:"319",id:"324"},325:{path:"/account/Results",parentId:"319",id:"325"},326:{path:"/ch",parentId:"1",id:"326"},327:{path:"/ch/rest/edit/:categoryId/:id",exact:!0,parentId:"326",id:"327"},328:{path:"/ch/rest/",exact:!0,parentId:"326",id:"328"},329:{path:"/ch/rest/:id",exact:!0,parentId:"326",id:"329"},330:{path:"/order",parentId:"1",id:"330"},331:{path:"/order",parentId:"330",id:"331"},332:{path:"/order/invoice",parentId:"330",id:"332"},333:{path:"/order/records",parentId:"330",id:"333"},334:{path:"/order/apply",parentId:"330",id:"334"},335:{path:"/order/view",parentId:"330",id:"335"},336:{path:"/order/:courseId/information",parentId:"330",id:"336"},337:{path:"/order/:courseId/pay",parentId:"330",id:"337"},338:{path:"/order/:orderNum/result",parentId:"330",id:"338"},339:{path:"/messages",parentId:"1",id:"339"},340:{path:"/messages/:userId/user_tidings",parentId:"339",id:"340"},341:{path:"/messages/:userId/private_messages",parentId:"339",id:"341"},342:{path:"/messages/:userId/message_detail",parentId:"339",id:"342"},343:{path:"/vtrs",parentId:"1",id:"343"},344:{path:"/vtrs/:virtual_spacesId",parentId:"343",id:"344"},345:{path:"/vtrs/:virtual_spacesId",exact:!0,parentId:"344",id:"345"},346:{path:"/vtrs/:virtual_spacesId/workplace",exact:!0,parentId:"344",id:"346"},347:{path:"/vtrs/:virtual_spacesId/experiment",parentId:"344",id:"347"},348:{path:"/vtrs/:virtual_spacesId/announcement",parentId:"344",id:"348"},349:{path:"/vtrs/:virtual_spacesId/announcement/add",parentId:"344",id:"349"},350:{path:"/vtrs/:virtual_spacesId/announcement/:id/edit",parentId:"344",id:"350"},351:{path:"/vtrs/:virtual_spacesId/announcement/:id/detail",parentId:"344",id:"351"},352:{path:"/vtrs/:virtual_spacesId/survey",parentId:"344",id:"352"},353:{path:"/vtrs/:virtual_spacesId/survey/:id/detail",parentId:"344",id:"353"},354:{path:"/vtrs/:virtual_spacesId/knowledge",parentId:"344",id:"354"},355:{path:"/vtrs/:virtual_spacesId/knowledge/add",parentId:"344",id:"355"},356:{path:"/vtrs/:virtual_spacesId/knowledge/:id/edit",parentId:"344",id:"356"},357:{path:"/vtrs/:virtual_spacesId/material",parentId:"344",id:"357"},358:{path:"/vtrs/:virtual_spacesId/material/:id/detail",parentId:"344",id:"358"},359:{path:"/vtrs/:virtual_spacesId/lesson",parentId:"344",id:"359"},360:{path:"/vtrs/:virtual_spacesId/lesson/:id/detail",parentId:"344",id:"360"},361:{path:"/vtrs/:virtual_spacesId/lesson/:id/detail/:fileid",parentId:"344",id:"361"},362:{path:"/vtrs/:virtual_spacesId/discussion",parentId:"344",id:"362"},363:{path:"/vtrs/:virtual_spacesId/discussion/:id/detail",parentId:"344",id:"363"},364:{path:"/vtrs/:virtual_spacesId/discussion/:id/detail/:fileid",parentId:"344",id:"364"},365:{path:"/vtrs/:virtual_spacesId/settings",parentId:"344",id:"365"},366:{path:"/vtrs/:virtual_spacesId/resources",parentId:"344",id:"366"},367:{path:"/vtrs/:virtual_spacesId/resources/:id/detail",parentId:"344",id:"367"},368:{path:"/vtrs/:virtual_spacesId/Plan",parentId:"344",id:"368"},369:{path:"/vtrs/:virtual_spacesId/plan/:id/detail",parentId:"344",id:"369"},370:{path:"/vtrs/:virtual_spacesId/digtal",parentId:"344",id:"370"},371:{path:"/vtrs/:virtual_spacesId/homepage",parentId:"344",id:"371"},372:{path:"/vtrs/:virtual_spacesId/*",parentId:"344",id:"372"},373:{path:"/101",parentId:"1",id:"373"},374:{path:"/101/:virtual_spacesId",parentId:"373",id:"374"},375:{path:"/101/:virtual_spacesId",exact:!0,parentId:"374",id:"375"},376:{path:"/101/:virtual_spacesId/workplace",exact:!0,parentId:"374",id:"376"},377:{path:"/101/:virtual_spacesId/experiment",parentId:"374",id:"377"},378:{path:"/101/:virtual_spacesId/announcement",parentId:"374",id:"378"},379:{path:"/101/:virtual_spacesId/announcement/add",parentId:"374",id:"379"},380:{path:"/101/:virtual_spacesId/announcement/:id/edit",parentId:"374",id:"380"},381:{path:"/101/:virtual_spacesId/announcement/:id/detail",parentId:"374",id:"381"},382:{path:"/101/:virtual_spacesId/survey",parentId:"374",id:"382"},383:{path:"/101/:virtual_spacesId/survey/:id/detail",parentId:"374",id:"383"},384:{path:"/101/:virtual_spacesId/knowledge",parentId:"374",id:"384"},385:{path:"/101/:virtual_spacesId/knowledge/add",parentId:"374",id:"385"},386:{path:"/101/:virtual_spacesId/knowledge/:id/edit",parentId:"374",id:"386"},387:{path:"/101/:virtual_spacesId/material",parentId:"374",id:"387"},388:{path:"/101/:virtual_spacesId/material/:id/detail",parentId:"374",id:"388"},389:{path:"/101/:virtual_spacesId/lesson",parentId:"374",id:"389"},390:{path:"/101/:virtual_spacesId/lesson/:id/detail",parentId:"374",id:"390"},391:{path:"/101/:virtual_spacesId/lesson/:id/detail/:fileid",parentId:"374",id:"391"},392:{path:"/101/:virtual_spacesId/discussion",parentId:"374",id:"392"},393:{path:"/101/:virtual_spacesId/discussion/:id/detail",parentId:"374",id:"393"},394:{path:"/101/:virtual_spacesId/discussion/:id/detail/:fileid",parentId:"374",id:"394"},395:{path:"/101/:virtual_spacesId/settings",parentId:"374",id:"395"},396:{path:"/101/:virtual_spacesId/resources",parentId:"374",id:"396"},397:{path:"/101/:virtual_spacesId/resources/:id/detail",parentId:"374",id:"397"},398:{path:"/101/:virtual_spacesId/Plan",parentId:"374",id:"398"},399:{path:"/101/:virtual_spacesId/plan/:id/detail",parentId:"374",id:"399"},400:{path:"/101/:virtual_spacesId/digtal",parentId:"374",id:"400"},401:{path:"/101/:virtual_spacesId/homepage",parentId:"374",id:"401"},402:{path:"/101/:virtual_spacesId/*",parentId:"374",id:"402"},403:{path:"/administration",parentId:"1",id:"403"},404:{path:"/administration",parentId:"403",id:"404"},405:{path:"/administration/college",parentId:"404",id:"405"},406:{path:"/administration/student",parentId:"404",id:"406"},407:{path:"/administration/student/:studentId/edit",parentId:"404",id:"407"},408:{path:"/administration/profession",parentId:"404",id:"408"},409:{path:"/graduations",parentId:"1",id:"409"},410:{path:"/graduations",exact:!0,parentId:"409",id:"410"},411:{path:"/graduations/:id/:moduleKey/:moduleId/review/:itemId",exact:!0,parentId:"409",id:"411"},412:{path:"/graduations/:id",parentId:"409",id:"412"},413:{path:"/graduations/:id/index",parentId:"412",id:"413"},414:{path:"/graduations/:id/topics",parentId:"412",id:"414"},415:{path:"/graduations/:id/student_selection",parentId:"412",id:"415"},416:{path:"/graduations/:id/tasks",parentId:"412",id:"416"},417:{path:"/graduations/:id/opening_report",parentId:"412",id:"417"},418:{path:"/graduations/:id/midterm_report",parentId:"412",id:"418"},419:{path:"/graduations/:id/thesis",parentId:"412",id:"419"},420:{path:"/graduations/:id/final_defense",parentId:"412",id:"420"},421:{path:"/graduations/:id/final_thesis",parentId:"412",id:"421"},422:{path:"/graduations/:id/settings",parentId:"412",id:"422"},423:{path:"/graduations/:id/teachers",parentId:"412",id:"423"},424:{path:"/graduations/:id/students",parentId:"412",id:"424"},425:{path:"/graduations/:id/archives",parentId:"412",id:"425"},426:{path:"/graduations/:id/grading_summary",parentId:"412",id:"426"},427:{path:"/dataset",parentId:"1",id:"427"},428:{path:"/dataset",exact:!0,parentId:"427",id:"428"},429:{path:"/dataset/:id/detail",exact:!0,parentId:"427",id:"429"},430:{path:"/knowledgegraph",parentId:"1",id:"430"},431:{path:"/knowledgegraph",parentId:"430",id:"431"},432:{path:"/knowledgegraph/:pathId/sanD",parentId:"430",id:"432"},433:{path:"/knowledgegraph/:pathId",parentId:"430",id:"433"},434:{path:"/knowledgegraph/:pathId/abilityMap/edit/:abilityMapId",parentId:"430",id:"434"},435:{path:"/knowledgegraph/:pathId/abilityMap/detail/:abilityId",parentId:"430",id:"435"},436:{path:"/knowledgegraph/:pathId/statistics",parentId:"430",id:"436"},437:{parentId:"430",id:"437"},438:{path:"/knowledgegraph/:pathId/statistics/learningpath/:learningpathId",parentId:"437",id:"438"},439:{path:"/knowledgegraph/:pathId/statistics/learningpath/:learningpathId/detail/:detailId",parentId:"437",id:"439"},440:{path:"/knowledgegraph/:pathId/statistics/pathatlas/:learningpathId",parentId:"437",id:"440"},441:{path:"/knowledgegraph/:pathId/statistics/pathatlas/:learningpathId/detail",parentId:"437",id:"441"},442:{path:"/knowledgegraph/:pathId/statistics/abilitymap/:learningpathId",parentId:"437",id:"442"},443:{path:"/knowledgegraph/:pathId/statistics/abilitymap/:learningpathId/detail/:detailId",parentId:"437",id:"443"},444:{path:"/deviceOperationMonitoring",parentId:"1",id:"444"},445:{path:"/deviceOperationMonitoring",parentId:"444",id:"445"},446:{path:"/onlineDevice",parentId:"1",id:"446"},447:{path:"/onlineDevice",redirect:"/onlineDevice/deviceInfo",parentId:"446",id:"447"},448:{path:"/onlineDevice/deviceInfo",parentId:"446",id:"448"},449:{path:"/onlineDevice/deviceInfo",redirect:"/onlineDevice/deviceInfo/manage",parentId:"448",id:"449"},450:{path:"/onlineDevice/deviceInfo/manage",parentId:"448",id:"450"},451:{path:"/onlineDevice/deviceInfo/deviceDetails/:id/:flag",parentId:"448",id:"451"},452:{path:"/onlineDevice/deviceInfo/deviceEdit/:id",parentId:"448",id:"452"},453:{path:"/onlineDevice/deviceInfo/reservationInfo/:id",parentId:"448",id:"453"},454:{path:"/onlineDevice/deviceLabel",parentId:"446",id:"454"},455:{path:"/onlineDevice/deviceType",parentId:"446",id:"455"},456:{path:"/onlineDevice/deviceType",redirect:"/onlineDevice/deviceType/manage",parentId:"455",id:"456"},457:{path:"/onlineDevice/deviceType/manage",parentId:"455",id:"457"},458:{path:"/onlineDevice/deviceType/deviceTypeDetails/:id",parentId:"455",id:"458"},459:{path:"/onlineDevice/faultlibrary",parentId:"446",id:"459"},460:{path:"/onlineDevice/digitalsigns",parentId:"446",id:"460"},461:{path:"/onlineReservation",parentId:"1",id:"461"},462:{path:"/onlineReservation",redirect:"/onlineReservation/reservationInfo",parentId:"461",id:"462"},463:{path:"/onlineReservation/reservationInfo",parentId:"461",id:"463"},464:{path:"/onlineReservation/reservationInfo",redirect:"/onlineReservation/reservationInfo/reservationInfo/false",parentId:"463",id:"464"},465:{path:"/onlineReservation/reservationInfo/reservationInfo/:flag",parentId:"463",id:"465"},466:{path:"/onlineMessageCenter",parentId:"1",id:"466"},467:{path:"/onlineMessageCenter",redirect:"/onlineMessageCenter/messageCenterManage",parentId:"466",id:"467"},468:{path:"/onlineMessageCenter/messageCenterManage",parentId:"466",id:"468"},469:{path:"/onlineMessageCenter/offSiteConfig",parentId:"466",id:"469"},470:{path:"/onlineProperty",parentId:"1",id:"470"},471:{path:"/onlineProperty",redirect:"/onlineProperty/property",parentId:"470",id:"471"},472:{path:"/onlineProperty/property",parentId:"470",id:"472"},473:{path:"/onlineProperty/procurement/:id",parentId:"470",id:"473"},474:{path:"/laboratoryList",parentId:"1",id:"474"},475:{path:"/laboratoryList",parentId:"474",id:"475"},476:{path:"/newlogin",parentId:"1",id:"476"},477:{path:"/onlinenum",parentId:"1",id:"477"},478:{path:"/onlinenum",parentId:"477",id:"478"},479:{path:"/shixuncontext",parentId:"1",id:"479"},480:{path:"/shixuncontext",parentId:"479",id:"480"},481:{path:"/shixuncontext/:Id/detail",parentId:"479",id:"481"},482:{path:"/educoder-demo",exact:!0,parentId:"1",id:"482"},483:{path:"/training",parentId:"1",id:"483"},484:{name:"\u7CBE\u57F9\u8BFE\u7A0B",path:"/training",parentId:"483",id:"484"},485:{path:"/effectivenessAnalysis/:coursesId",exact:!0,parentId:"1",id:"485"},486:{path:"/studentEffectivenessAnalysis/:coursesId",exact:!0,parentId:"1",id:"486"},487:{path:"/largeScreen",exact:!0,parentId:"1",id:"487"},488:{path:"/quality",parentId:"1",id:"488"},489:{name:"\u7CBE\u54C1\u8BFE\u7A0B",path:"/quality",parentId:"488",id:"489"},490:{path:"/otherlogin",exact:!0,parentId:"1",id:"490"},491:{path:"/otherloginqq",exact:!0,parentId:"1",id:"491"},492:{path:"/otherloginstart",exact:!0,parentId:"1",id:"492"},493:{path:"/pathsoverview",exact:!0,parentId:"1",id:"493"},494:{path:"/shixunsoverview",exact:!0,parentId:"1",id:"494"},495:{path:"/classroomsoverview",exact:!0,parentId:"1",id:"495"},496:{path:"/login",parentId:"1",id:"496"},497:{path:"/login",parentId:"496",id:"497"},498:{path:"/user",parentId:"1",id:"498"},499:{path:"/user/login",parentId:"498",id:"499"},500:{path:"/user/register",parentId:"498",id:"500"},501:{path:"/user/reset-password",parentId:"498",id:"501"},502:{path:"/colleges",parentId:"1",id:"502"},503:{path:"/colleges/:id/statistics",parentId:"502",id:"503"},504:{path:"/help",parentId:"1",id:"504"},505:{path:"/help/:id",parentId:"504",id:"505"},506:{path:"/video",parentId:"1",id:"506"},507:{path:"/video/:videoId",parentId:"506",id:"507"},508:{path:"/terminal",parentId:"1",id:"508"},509:{path:"/report/:taskId/:game_report_id",parentId:"1",id:"509"},510:{path:"/statsDashboard",parentId:"1",id:"510"},511:{path:"/",parentId:"1",id:"511"},512:{path:"/",exact:!0,parentId:"511",id:"512"},513:{path:"/api/*",exact:!0,parentId:"511",id:"513"},514:{path:"/search",exact:!0,parentId:"511",id:"514"},515:{path:"/moop_cases",exact:!0,parentId:"511",id:"515"},516:{path:"/moop_cases/new",exact:!0,parentId:"511",id:"516"},517:{path:"/moop_cases/:caseId",exact:!0,parentId:"511",id:"517"},518:{path:"/moop_cases/:caseId/edit",exact:!0,parentId:"511",id:"518"},519:{path:"/moop_cases/:caseId/publish-success",exact:!0,parentId:"511",id:"519"},520:{path:"/randompaper",exact:!0,parentId:"511",id:"520"},521:{path:"/randompaper/edit/:id",exact:!0,parentId:"511",id:"521"},522:{path:"/randompaper/detail/:id",exact:!0,parentId:"511",id:"522"},523:{path:"/403",parentId:"511",id:"523"},524:{path:"/500",parentId:"511",id:"524"},525:{path:"/404",parentId:"511",id:"525"},526:{path:"/download",parentId:"511",id:"526"},527:{path:"/iwce",parentId:"511",id:"527"},528:{path:"/classrooms/:coursesId/attendance/TeacherSign",parentId:"511",id:"528"},529:{path:"/classrooms/:coursesId/attendance/:categoryId",parentId:"511",id:"529"},530:{path:"/Activities",parentId:"511",id:"530"},531:{path:"/iwce/:itemname",parentId:"511",id:"531"},532:{path:"/hpc-course",parentId:"511",id:"532"},533:{path:"/user_agents",parentId:"511",id:"533"},534:{path:"/three",parentId:"511",id:"534"},535:{path:"/introduction",parentId:"511",id:"535"},536:{path:"/chatgpt",parentId:"511",id:"536"},537:{path:"/*",parentId:"511",id:"537"},"@@/global-layout":{id:"@@/global-layout",path:"/",isLayout:!0}},routeComponents:{1:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),2:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),3:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(2099)]).then(__webpack_require__.bind(__webpack_require__,52172))),4:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(3260)]).then(__webpack_require__.bind(__webpack_require__,82661))),5:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(3260)]).then(__webpack_require__.bind(__webpack_require__,82661))),6:Pe.lazy(()=>__webpack_require__.e(3247).then(__webpack_require__.bind(__webpack_require__,12284))),7:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),8:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(1545)]).then(__webpack_require__.bind(__webpack_require__,1741))),9:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),10:Pe.lazy(()=>__webpack_require__.e(9906).then(__webpack_require__.bind(__webpack_require__,83766))),11:Pe.lazy(()=>__webpack_require__.e(5572).then(__webpack_require__.bind(__webpack_require__,52730))),12:Pe.lazy(()=>__webpack_require__.e(6080).then(__webpack_require__.bind(__webpack_require__,78169))),13:Pe.lazy(()=>__webpack_require__.e(7901).then(__webpack_require__.bind(__webpack_require__,62933))),14:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7311),__webpack_require__.e(2281)]).then(__webpack_require__.bind(__webpack_require__,51750))),15:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1651)]).then(__webpack_require__.bind(__webpack_require__,1210))),16:Pe.lazy(()=>__webpack_require__.e(6080).then(__webpack_require__.bind(__webpack_require__,78169))),17:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),18:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),19:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),20:Pe.lazy(()=>__webpack_require__.e(6789).then(__webpack_require__.bind(__webpack_require__,69029))),21:Pe.lazy(()=>__webpack_require__.e(9921).then(__webpack_require__.bind(__webpack_require__,46166))),22:Pe.lazy(()=>__webpack_require__.e(1674).then(__webpack_require__.bind(__webpack_require__,23971))),23:Pe.lazy(()=>__webpack_require__.e(6685).then(__webpack_require__.bind(__webpack_require__,37474))),24:Pe.lazy(()=>__webpack_require__.e(7323).then(__webpack_require__.bind(__webpack_require__,2780))),25:Pe.lazy(()=>__webpack_require__.e(7323).then(__webpack_require__.bind(__webpack_require__,2780))),26:Pe.lazy(()=>__webpack_require__.e(6882).then(__webpack_require__.bind(__webpack_require__,25801))),27:Pe.lazy(()=>__webpack_require__.e(6882).then(__webpack_require__.bind(__webpack_require__,25801))),28:Pe.lazy(()=>__webpack_require__.e(109).then(__webpack_require__.bind(__webpack_require__,78425))),29:Pe.lazy(()=>__webpack_require__.e(737).then(__webpack_require__.bind(__webpack_require__,15340))),30:Pe.lazy(()=>__webpack_require__.e(3391).then(__webpack_require__.bind(__webpack_require__,89026))),31:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3295),__webpack_require__.e(5694)]).then(__webpack_require__.bind(__webpack_require__,27296))),32:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5330)]).then(__webpack_require__.bind(__webpack_require__,98764))),33:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(2303)]).then(__webpack_require__.bind(__webpack_require__,15830))),34:Pe.lazy(()=>__webpack_require__.e(1450).then(__webpack_require__.bind(__webpack_require__,20061))),35:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(195)]).then(__webpack_require__.bind(__webpack_require__,71412))),36:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(3668)]).then(__webpack_require__.bind(__webpack_require__,91222))),37:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(2338)]).then(__webpack_require__.bind(__webpack_require__,85151))),38:Pe.lazy(()=>__webpack_require__.e(4662).then(__webpack_require__.bind(__webpack_require__,51374))),39:Pe.lazy(()=>__webpack_require__.e(8072).then(__webpack_require__.bind(__webpack_require__,74029))),40:Pe.lazy(()=>__webpack_require__.e(479).then(__webpack_require__.bind(__webpack_require__,13682))),41:Pe.lazy(()=>__webpack_require__.e(5297).then(__webpack_require__.bind(__webpack_require__,42300))),42:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5136),__webpack_require__.e(4164)]).then(__webpack_require__.bind(__webpack_require__,46600))),43:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),44:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(4889)]).then(__webpack_require__.bind(__webpack_require__,5697))),45:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(4105)]).then(__webpack_require__.bind(__webpack_require__,73134))),46:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(7883)]).then(__webpack_require__.bind(__webpack_require__,28282))),47:Pe.lazy(()=>__webpack_require__.e(7482).then(__webpack_require__.bind(__webpack_require__,46770))),48:Pe.lazy(()=>__webpack_require__.e(5816).then(__webpack_require__.bind(__webpack_require__,83601))),49:Pe.lazy(()=>__webpack_require__.e(337).then(__webpack_require__.bind(__webpack_require__,39202))),50:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(292)]).then(__webpack_require__.bind(__webpack_require__,56469))),51:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7978),__webpack_require__.e(292)]).then(__webpack_require__.bind(__webpack_require__,56469))),52:Pe.lazy(()=>__webpack_require__.e(5992).then(__webpack_require__.bind(__webpack_require__,39419))),53:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(8085)]).then(__webpack_require__.bind(__webpack_require__,78524))),54:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(8085)]).then(__webpack_require__.bind(__webpack_require__,78524))),55:Pe.lazy(()=>__webpack_require__.e(8431).then(__webpack_require__.bind(__webpack_require__,16321))),56:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5902)]).then(__webpack_require__.bind(__webpack_require__,70937))),57:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3433)]).then(__webpack_require__.bind(__webpack_require__,29445))),58:Pe.lazy(()=>__webpack_require__.e(5125).then(__webpack_require__.bind(__webpack_require__,62899))),59:Pe.lazy(()=>__webpack_require__.e(5125).then(__webpack_require__.bind(__webpack_require__,62899))),60:Pe.lazy(()=>__webpack_require__.e(921).then(__webpack_require__.bind(__webpack_require__,45618))),61:Pe.lazy(()=>__webpack_require__.e(921).then(__webpack_require__.bind(__webpack_require__,45618))),62:Pe.lazy(()=>__webpack_require__.e(1578).then(__webpack_require__.bind(__webpack_require__,84440))),63:Pe.lazy(()=>__webpack_require__.e(3317).then(__webpack_require__.bind(__webpack_require__,97487))),64:Pe.lazy(()=>__webpack_require__.e(1482).then(__webpack_require__.bind(__webpack_require__,33450))),65:Pe.lazy(()=>__webpack_require__.e(4795).then(__webpack_require__.bind(__webpack_require__,99628))),66:Pe.lazy(()=>__webpack_require__.e(26).then(__webpack_require__.bind(__webpack_require__,74851))),67:Pe.lazy(()=>__webpack_require__.e(8882).then(__webpack_require__.bind(__webpack_require__,99355))),68:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(5888)]).then(__webpack_require__.bind(__webpack_require__,31846))),69:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(9715)]).then(__webpack_require__.bind(__webpack_require__,56683))),70:Pe.lazy(()=>__webpack_require__.e(7045).then(__webpack_require__.bind(__webpack_require__,26906))),71:Pe.lazy(()=>__webpack_require__.e(1211).then(__webpack_require__.bind(__webpack_require__,98285))),72:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(1582)]).then(__webpack_require__.bind(__webpack_require__,68305))),73:Pe.lazy(()=>Promise.all([__webpack_require__.e(7311),__webpack_require__.e(6729)]).then(__webpack_require__.bind(__webpack_require__,35523))),74:Pe.lazy(()=>Promise.all([__webpack_require__.e(8949),__webpack_require__.e(9695)]).then(__webpack_require__.bind(__webpack_require__,78598))),75:Pe.lazy(()=>Promise.all([__webpack_require__.e(8949),__webpack_require__.e(8723)]).then(__webpack_require__.bind(__webpack_require__,83030))),76:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7622)]).then(__webpack_require__.bind(__webpack_require__,11537))),77:Pe.lazy(()=>__webpack_require__.e(5148).then(__webpack_require__.bind(__webpack_require__,91635))),78:Pe.lazy(()=>__webpack_require__.e(643).then(__webpack_require__.bind(__webpack_require__,88704))),79:Pe.lazy(()=>__webpack_require__.e(3442).then(__webpack_require__.bind(__webpack_require__,25529))),80:Pe.lazy(()=>__webpack_require__.e(2102).then(__webpack_require__.bind(__webpack_require__,28501))),81:Pe.lazy(()=>__webpack_require__.e(2425).then(__webpack_require__.bind(__webpack_require__,76381))),82:Pe.lazy(()=>__webpack_require__.e(2404).then(__webpack_require__.bind(__webpack_require__,92980))),83:Pe.lazy(()=>__webpack_require__.e(9785).then(__webpack_require__.bind(__webpack_require__,94453))),84:Pe.lazy(()=>__webpack_require__.e(7901).then(__webpack_require__.bind(__webpack_require__,62933))),85:Pe.lazy(()=>__webpack_require__.e(2819).then(__webpack_require__.bind(__webpack_require__,4664))),86:Pe.lazy(()=>__webpack_require__.e(1512).then(__webpack_require__.bind(__webpack_require__,57920))),87:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7395)]).then(__webpack_require__.bind(__webpack_require__,15502))),88:Pe.lazy(()=>__webpack_require__.e(3585).then(__webpack_require__.bind(__webpack_require__,42791))),89:Pe.lazy(()=>__webpack_require__.e(6963).then(__webpack_require__.bind(__webpack_require__,85468))),90:Pe.lazy(()=>__webpack_require__.e(4030).then(__webpack_require__.bind(__webpack_require__,33489))),91:Pe.lazy(()=>__webpack_require__.e(4030).then(__webpack_require__.bind(__webpack_require__,33489))),92:Pe.lazy(()=>__webpack_require__.e(6127).then(__webpack_require__.bind(__webpack_require__,82281))),93:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(3951)]).then(__webpack_require__.bind(__webpack_require__,72604))),94:Pe.lazy(()=>__webpack_require__.e(1048).then(__webpack_require__.bind(__webpack_require__,18679))),95:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(2884)]).then(__webpack_require__.bind(__webpack_require__,51835))),96:Pe.lazy(()=>__webpack_require__.e(4770).then(__webpack_require__.bind(__webpack_require__,49183))),97:Pe.lazy(()=>__webpack_require__.e(2603).then(__webpack_require__.bind(__webpack_require__,75514))),98:Pe.lazy(()=>__webpack_require__.e(4216).then(__webpack_require__.bind(__webpack_require__,3107))),99:Pe.lazy(()=>__webpack_require__.e(5319).then(__webpack_require__.bind(__webpack_require__,71545))),100:Pe.lazy(()=>__webpack_require__.e(895).then(__webpack_require__.bind(__webpack_require__,70193))),101:Pe.lazy(()=>__webpack_require__.e(7322).then(__webpack_require__.bind(__webpack_require__,63152))),102:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(2203)]).then(__webpack_require__.bind(__webpack_require__,62087))),103:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(2203)]).then(__webpack_require__.bind(__webpack_require__,62087))),104:Pe.lazy(()=>__webpack_require__.e(5048).then(__webpack_require__.bind(__webpack_require__,82314))),105:Pe.lazy(()=>__webpack_require__.e(1043).then(__webpack_require__.bind(__webpack_require__,33009))),106:Pe.lazy(()=>__webpack_require__.e(1043).then(__webpack_require__.bind(__webpack_require__,33009))),107:Pe.lazy(()=>__webpack_require__.e(6776).then(__webpack_require__.bind(__webpack_require__,58256))),108:Pe.lazy(()=>__webpack_require__.e(6776).then(__webpack_require__.bind(__webpack_require__,58256))),109:Pe.lazy(()=>__webpack_require__.e(4297).then(__webpack_require__.bind(__webpack_require__,7806))),110:Pe.lazy(()=>__webpack_require__.e(4297).then(__webpack_require__.bind(__webpack_require__,7806))),111:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(8458)]).then(__webpack_require__.bind(__webpack_require__,55294))),112:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(8458)]).then(__webpack_require__.bind(__webpack_require__,55294))),113:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(1798)]).then(__webpack_require__.bind(__webpack_require__,3377))),114:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(1798)]).then(__webpack_require__.bind(__webpack_require__,3377))),115:Pe.lazy(()=>__webpack_require__.e(5177).then(__webpack_require__.bind(__webpack_require__,13731))),116:Pe.lazy(()=>__webpack_require__.e(201).then(__webpack_require__.bind(__webpack_require__,91680))),117:Pe.lazy(()=>__webpack_require__.e(1477).then(__webpack_require__.bind(__webpack_require__,27778))),118:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(6282)]).then(__webpack_require__.bind(__webpack_require__,47136))),119:Pe.lazy(()=>Promise.all([__webpack_require__.e(3295),__webpack_require__.e(6282)]).then(__webpack_require__.bind(__webpack_require__,47136))),120:Pe.lazy(()=>__webpack_require__.e(1962).then(__webpack_require__.bind(__webpack_require__,57234))),121:Pe.lazy(()=>__webpack_require__.e(4928).then(__webpack_require__.bind(__webpack_require__,15227))),122:Pe.lazy(()=>__webpack_require__.e(1257).then(__webpack_require__.bind(__webpack_require__,2199))),123:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8518),__webpack_require__.e(7329)]).then(__webpack_require__.bind(__webpack_require__,38172))),124:Pe.lazy(()=>__webpack_require__.e(8340).then(__webpack_require__.bind(__webpack_require__,12990))),125:Pe.lazy(()=>__webpack_require__.e(4093).then(__webpack_require__.bind(__webpack_require__,28786))),126:Pe.lazy(()=>__webpack_require__.e(6185).then(__webpack_require__.bind(__webpack_require__,9113))),127:Pe.lazy(()=>__webpack_require__.e(6185).then(__webpack_require__.bind(__webpack_require__,9113))),128:Pe.lazy(()=>__webpack_require__.e(8827).then(__webpack_require__.bind(__webpack_require__,87330))),129:Pe.lazy(()=>__webpack_require__.e(8827).then(__webpack_require__.bind(__webpack_require__,87330))),130:Pe.lazy(()=>__webpack_require__.e(1678).then(__webpack_require__.bind(__webpack_require__,12351))),131:Pe.lazy(()=>__webpack_require__.e(1678).then(__webpack_require__.bind(__webpack_require__,12351))),132:Pe.lazy(()=>__webpack_require__.e(1754).then(__webpack_require__.bind(__webpack_require__,68098))),133:Pe.lazy(()=>__webpack_require__.e(1754).then(__webpack_require__.bind(__webpack_require__,68098))),134:Pe.lazy(()=>__webpack_require__.e(4217).then(__webpack_require__.bind(__webpack_require__,37949))),135:Pe.lazy(()=>__webpack_require__.e(6205).then(__webpack_require__.bind(__webpack_require__,24914))),136:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(533)]).then(__webpack_require__.bind(__webpack_require__,41759))),137:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5798)]).then(__webpack_require__.bind(__webpack_require__,425))),138:Pe.lazy(()=>__webpack_require__.e(5466).then(__webpack_require__.bind(__webpack_require__,84293))),139:Pe.lazy(()=>__webpack_require__.e(5466).then(__webpack_require__.bind(__webpack_require__,84293))),140:Pe.lazy(()=>__webpack_require__.e(9944).then(__webpack_require__.bind(__webpack_require__,91523))),141:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(9406)]).then(__webpack_require__.bind(__webpack_require__,67426))),142:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(9406)]).then(__webpack_require__.bind(__webpack_require__,67426))),143:Pe.lazy(()=>__webpack_require__.e(9039).then(__webpack_require__.bind(__webpack_require__,34565))),144:Pe.lazy(()=>__webpack_require__.e(9039).then(__webpack_require__.bind(__webpack_require__,34565))),145:Pe.lazy(()=>__webpack_require__.e(7922).then(__webpack_require__.bind(__webpack_require__,14610))),146:Pe.lazy(()=>__webpack_require__.e(1727).then(__webpack_require__.bind(__webpack_require__,68651))),147:Pe.lazy(()=>__webpack_require__.e(1727).then(__webpack_require__.bind(__webpack_require__,68651))),148:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1427)]).then(__webpack_require__.bind(__webpack_require__,16399))),149:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1427)]).then(__webpack_require__.bind(__webpack_require__,16399))),150:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8689)]).then(__webpack_require__.bind(__webpack_require__,63200))),151:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7806)]).then(__webpack_require__.bind(__webpack_require__,26844))),152:Pe.lazy(()=>__webpack_require__.e(3276).then(__webpack_require__.bind(__webpack_require__,15880))),153:Pe.lazy(()=>__webpack_require__.e(8885).then(__webpack_require__.bind(__webpack_require__,77819))),154:Pe.lazy(()=>__webpack_require__.e(3451).then(__webpack_require__.bind(__webpack_require__,54695))),155:Pe.lazy(()=>__webpack_require__.e(9922).then(__webpack_require__.bind(__webpack_require__,8983))),156:Pe.lazy(()=>__webpack_require__.e(4572).then(__webpack_require__.bind(__webpack_require__,80612))),157:Pe.lazy(()=>__webpack_require__.e(4017).then(__webpack_require__.bind(__webpack_require__,65362))),158:Pe.lazy(()=>__webpack_require__.e(5518).then(__webpack_require__.bind(__webpack_require__,23791))),159:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),160:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(7099)]).then(__webpack_require__.bind(__webpack_require__,48262))),161:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(7099)]).then(__webpack_require__.bind(__webpack_require__,48262))),162:Pe.lazy(()=>__webpack_require__.e(4449).then(__webpack_require__.bind(__webpack_require__,86964))),163:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(7099)]).then(__webpack_require__.bind(__webpack_require__,48262))),164:Pe.lazy(()=>Promise.all([__webpack_require__.e(552),__webpack_require__.e(2570)]).then(__webpack_require__.bind(__webpack_require__,1922))),165:Pe.lazy(()=>Promise.all([__webpack_require__.e(552),__webpack_require__.e(2570)]).then(__webpack_require__.bind(__webpack_require__,1922))),166:Pe.lazy(()=>__webpack_require__.e(8787).then(__webpack_require__.bind(__webpack_require__,63886))),167:Pe.lazy(()=>__webpack_require__.e(5650).then(__webpack_require__.bind(__webpack_require__,81484))),168:Pe.lazy(()=>__webpack_require__.e(1799).then(__webpack_require__.bind(__webpack_require__,12861))),169:Pe.lazy(()=>Promise.all([__webpack_require__.e(552),__webpack_require__.e(8579)]).then(__webpack_require__.bind(__webpack_require__,38216))),170:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),171:Pe.lazy(()=>__webpack_require__.e(8639).then(__webpack_require__.bind(__webpack_require__,77814))),172:Pe.lazy(()=>__webpack_require__.e(4048).then(__webpack_require__.bind(__webpack_require__,47697))),173:Pe.lazy(()=>__webpack_require__.e(4264).then(__webpack_require__.bind(__webpack_require__,73813))),174:Pe.lazy(()=>__webpack_require__.e(4264).then(__webpack_require__.bind(__webpack_require__,73813))),175:Pe.lazy(()=>__webpack_require__.e(508).then(__webpack_require__.bind(__webpack_require__,22021))),176:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),177:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7835)]).then(__webpack_require__.bind(__webpack_require__,280))),178:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1953)]).then(__webpack_require__.bind(__webpack_require__,36255))),179:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1953)]).then(__webpack_require__.bind(__webpack_require__,36255))),180:Pe.lazy(()=>__webpack_require__.e(1581).then(__webpack_require__.bind(__webpack_require__,44202))),181:Pe.lazy(()=>__webpack_require__.e(4144).then(__webpack_require__.bind(__webpack_require__,50666))),182:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(4599)]).then(__webpack_require__.bind(__webpack_require__,6467))),183:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),184:Pe.lazy(()=>__webpack_require__.e(8552).then(__webpack_require__.bind(__webpack_require__,29120))),185:Pe.lazy(()=>__webpack_require__.e(7884).then(__webpack_require__.bind(__webpack_require__,62006))),186:Pe.lazy(()=>Promise.all([__webpack_require__.e(5961),__webpack_require__.e(5307)]).then(__webpack_require__.bind(__webpack_require__,45774))),187:Pe.lazy(()=>__webpack_require__.e(5549).then(__webpack_require__.bind(__webpack_require__,77570))),188:Pe.lazy(()=>__webpack_require__.e(9674).then(__webpack_require__.bind(__webpack_require__,86633))),189:Pe.lazy(()=>__webpack_require__.e(5573).then(__webpack_require__.bind(__webpack_require__,77211))),190:Pe.lazy(()=>__webpack_require__.e(2141).then(__webpack_require__.bind(__webpack_require__,39120))),191:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5961),__webpack_require__.e(9511)]).then(__webpack_require__.bind(__webpack_require__,60079))),192:Pe.lazy(()=>__webpack_require__.e(6328).then(__webpack_require__.bind(__webpack_require__,23713))),193:Pe.lazy(()=>__webpack_require__.e(7857).then(__webpack_require__.bind(__webpack_require__,53679))),194:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1657)]).then(__webpack_require__.bind(__webpack_require__,60941))),195:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(1657)]).then(__webpack_require__.bind(__webpack_require__,60941))),196:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(4498)]).then(__webpack_require__.bind(__webpack_require__,64933))),197:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(4498)]).then(__webpack_require__.bind(__webpack_require__,64933))),198:Pe.lazy(()=>__webpack_require__.e(9205).then(__webpack_require__.bind(__webpack_require__,54164))),199:Pe.lazy(()=>__webpack_require__.e(1423).then(__webpack_require__.bind(__webpack_require__,12142))),200:Pe.lazy(()=>__webpack_require__.e(7614).then(__webpack_require__.bind(__webpack_require__,40678))),201:Pe.lazy(()=>__webpack_require__.e(9449).then(__webpack_require__.bind(__webpack_require__,26095))),202:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9814)]).then(__webpack_require__.bind(__webpack_require__,36239))),203:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6637)]).then(__webpack_require__.bind(__webpack_require__,81312))),204:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6637)]).then(__webpack_require__.bind(__webpack_require__,81312))),205:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3581)]).then(__webpack_require__.bind(__webpack_require__,88459))),206:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1993)]).then(__webpack_require__.bind(__webpack_require__,5323))),207:Pe.lazy(()=>__webpack_require__.e(1475).then(__webpack_require__.bind(__webpack_require__,82610))),208:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8965)]).then(__webpack_require__.bind(__webpack_require__,18812))),209:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6451)]).then(__webpack_require__.bind(__webpack_require__,56673))),210:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5961),__webpack_require__.e(518)]).then(__webpack_require__.bind(__webpack_require__,23197))),211:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5894)]).then(__webpack_require__.bind(__webpack_require__,30169))),212:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5894)]).then(__webpack_require__.bind(__webpack_require__,30169))),213:Pe.lazy(()=>__webpack_require__.e(2130).then(__webpack_require__.bind(__webpack_require__,39296))),214:Pe.lazy(()=>__webpack_require__.e(2130).then(__webpack_require__.bind(__webpack_require__,39296))),215:Pe.lazy(()=>__webpack_require__.e(5230).then(__webpack_require__.bind(__webpack_require__,69269))),216:Pe.lazy(()=>__webpack_require__.e(5230).then(__webpack_require__.bind(__webpack_require__,69269))),217:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8688)]).then(__webpack_require__.bind(__webpack_require__,98061))),218:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8688)]).then(__webpack_require__.bind(__webpack_require__,98061))),219:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5096)]).then(__webpack_require__.bind(__webpack_require__,11801))),220:Pe.lazy(()=>__webpack_require__.e(3086).then(__webpack_require__.bind(__webpack_require__,30302))),221:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9417)]).then(__webpack_require__.bind(__webpack_require__,84578))),222:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),223:Pe.lazy(()=>__webpack_require__.e(5176).then(__webpack_require__.bind(__webpack_require__,57312))),224:Pe.lazy(()=>__webpack_require__.e(6587).then(__webpack_require__.bind(__webpack_require__,63763))),225:Pe.lazy(()=>__webpack_require__.e(9891).then(__webpack_require__.bind(__webpack_require__,4725))),226:Pe.lazy(()=>__webpack_require__.e(8062).then(__webpack_require__.bind(__webpack_require__,67062))),227:Pe.lazy(()=>__webpack_require__.e(5402).then(__webpack_require__.bind(__webpack_require__,37505))),228:Pe.lazy(()=>__webpack_require__.e(5402).then(__webpack_require__.bind(__webpack_require__,37505))),229:Pe.lazy(()=>__webpack_require__.e(6820).then(__webpack_require__.bind(__webpack_require__,50192))),230:Pe.lazy(()=>__webpack_require__.e(8517).then(__webpack_require__.bind(__webpack_require__,55084))),231:Pe.lazy(()=>__webpack_require__.e(7043).then(__webpack_require__.bind(__webpack_require__,14008))),232:Pe.lazy(()=>__webpack_require__.e(2806).then(__webpack_require__.bind(__webpack_require__,8015))),233:Pe.lazy(()=>__webpack_require__.e(5043).then(__webpack_require__.bind(__webpack_require__,75970))),234:Pe.lazy(()=>__webpack_require__.e(799).then(__webpack_require__.bind(__webpack_require__,15972))),235:Pe.lazy(()=>Promise.all([__webpack_require__.e(5961),__webpack_require__.e(3157)]).then(__webpack_require__.bind(__webpack_require__,38353))),236:Pe.lazy(()=>__webpack_require__.e(8332).then(__webpack_require__.bind(__webpack_require__,71394))),237:Pe.lazy(()=>__webpack_require__.e(6583).then(__webpack_require__.bind(__webpack_require__,98466))),238:Pe.lazy(()=>__webpack_require__.e(8217).then(__webpack_require__.bind(__webpack_require__,1147))),239:Pe.lazy(()=>__webpack_require__.e(879).then(__webpack_require__.bind(__webpack_require__,13573))),240:Pe.lazy(()=>__webpack_require__.e(5776).then(__webpack_require__.bind(__webpack_require__,12561))),241:Pe.lazy(()=>__webpack_require__.e(906).then(__webpack_require__.bind(__webpack_require__,33992))),242:Pe.lazy(()=>__webpack_require__.e(900).then(__webpack_require__.bind(__webpack_require__,3510))),243:Pe.lazy(()=>__webpack_require__.e(6682).then(__webpack_require__.bind(__webpack_require__,26300))),244:Pe.lazy(()=>__webpack_require__.e(8115).then(__webpack_require__.bind(__webpack_require__,15376))),245:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2659)]).then(__webpack_require__.bind(__webpack_require__,11056))),246:Pe.lazy(()=>__webpack_require__.e(4610).then(__webpack_require__.bind(__webpack_require__,62827))),247:Pe.lazy(()=>__webpack_require__.e(8479).then(__webpack_require__.bind(__webpack_require__,92498))),248:Pe.lazy(()=>__webpack_require__.e(5800).then(__webpack_require__.bind(__webpack_require__,29728))),249:Pe.lazy(()=>Promise.all([__webpack_require__.e(5961),__webpack_require__.e(2862)]).then(__webpack_require__.bind(__webpack_require__,81552))),250:Pe.lazy(()=>__webpack_require__.e(8286).then(__webpack_require__.bind(__webpack_require__,69208))),251:Pe.lazy(()=>__webpack_require__.e(5117).then(__webpack_require__.bind(__webpack_require__,17697))),252:Pe.lazy(()=>__webpack_require__.e(7402).then(__webpack_require__.bind(__webpack_require__,98392))),253:Pe.lazy(()=>__webpack_require__.e(1897).then(__webpack_require__.bind(__webpack_require__,62040))),254:Pe.lazy(()=>__webpack_require__.e(8145).then(__webpack_require__.bind(__webpack_require__,48427))),255:Pe.lazy(()=>__webpack_require__.e(119).then(__webpack_require__.bind(__webpack_require__,12697))),256:Pe.lazy(()=>__webpack_require__.e(4736).then(__webpack_require__.bind(__webpack_require__,23386))),257:Pe.lazy(()=>__webpack_require__.e(2412).then(__webpack_require__.bind(__webpack_require__,81751))),258:Pe.lazy(()=>__webpack_require__.e(2240).then(__webpack_require__.bind(__webpack_require__,8142))),259:Pe.lazy(()=>__webpack_require__.e(5165).then(__webpack_require__.bind(__webpack_require__,88889))),260:Pe.lazy(()=>__webpack_require__.e(3831).then(__webpack_require__.bind(__webpack_require__,31413))),261:Pe.lazy(()=>__webpack_require__.e(2396).then(__webpack_require__.bind(__webpack_require__,68481))),262:Pe.lazy(()=>__webpack_require__.e(7855).then(__webpack_require__.bind(__webpack_require__,91774))),263:Pe.lazy(()=>__webpack_require__.e(9507).then(__webpack_require__.bind(__webpack_require__,98154))),264:Pe.lazy(()=>__webpack_require__.e(1343).then(__webpack_require__.bind(__webpack_require__,15317))),265:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),266:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),267:Pe.lazy(()=>__webpack_require__.e(9647).then(__webpack_require__.bind(__webpack_require__,85620))),268:Pe.lazy(()=>__webpack_require__.e(485).then(__webpack_require__.bind(__webpack_require__,23539))),269:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4741)]).then(__webpack_require__.bind(__webpack_require__,89989))),270:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4741)]).then(__webpack_require__.bind(__webpack_require__,89989))),271:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4994)]).then(__webpack_require__.bind(__webpack_require__,40854))),272:Pe.lazy(()=>Promise.all([__webpack_require__.e(1311),__webpack_require__.e(4994)]).then(__webpack_require__.bind(__webpack_require__,40854))),273:Pe.lazy(()=>__webpack_require__.e(7460).then(__webpack_require__.bind(__webpack_require__,82803))),274:Pe.lazy(()=>__webpack_require__.e(9716).then(__webpack_require__.bind(__webpack_require__,23222))),275:Pe.lazy(()=>__webpack_require__.e(6913).then(__webpack_require__.bind(__webpack_require__,33177))),276:Pe.lazy(()=>__webpack_require__.e(6913).then(__webpack_require__.bind(__webpack_require__,33177))),277:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),278:Pe.lazy(()=>__webpack_require__.e(3006).then(__webpack_require__.bind(__webpack_require__,21173))),279:Pe.lazy(()=>__webpack_require__.e(2045).then(__webpack_require__.bind(__webpack_require__,37441))),280:Pe.lazy(()=>__webpack_require__.e(1520).then(__webpack_require__.bind(__webpack_require__,52598))),281:Pe.lazy(()=>__webpack_require__.e(9649).then(__webpack_require__.bind(__webpack_require__,99612))),282:Pe.lazy(()=>__webpack_require__.e(4546).then(__webpack_require__.bind(__webpack_require__,7104))),283:Pe.lazy(()=>__webpack_require__.e(5357).then(__webpack_require__.bind(__webpack_require__,13781))),284:Pe.lazy(()=>__webpack_require__.e(8665).then(__webpack_require__.bind(__webpack_require__,84461))),285:Pe.lazy(()=>__webpack_require__.e(3183).then(__webpack_require__.bind(__webpack_require__,33860))),286:Pe.lazy(()=>__webpack_require__.e(4800).then(__webpack_require__.bind(__webpack_require__,98875))),287:Pe.lazy(()=>__webpack_require__.e(9489).then(__webpack_require__.bind(__webpack_require__,23678))),288:Pe.lazy(()=>__webpack_require__.e(9391).then(__webpack_require__.bind(__webpack_require__,9682))),289:Pe.lazy(()=>__webpack_require__.e(5335).then(__webpack_require__.bind(__webpack_require__,82452))),290:Pe.lazy(()=>__webpack_require__.e(2823).then(__webpack_require__.bind(__webpack_require__,3074))),291:Pe.lazy(()=>__webpack_require__.e(4973).then(__webpack_require__.bind(__webpack_require__,6400))),292:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(6651)]).then(__webpack_require__.bind(__webpack_require__,16216))),293:Pe.lazy(()=>__webpack_require__.e(6741).then(__webpack_require__.bind(__webpack_require__,27797))),294:Pe.lazy(()=>__webpack_require__.e(5775).then(__webpack_require__.bind(__webpack_require__,58106))),295:Pe.lazy(()=>__webpack_require__.e(2548).then(__webpack_require__.bind(__webpack_require__,34133))),296:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),297:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),298:Pe.lazy(()=>__webpack_require__.e(6634).then(__webpack_require__.bind(__webpack_require__,47658))),299:Pe.lazy(()=>__webpack_require__.e(680).then(__webpack_require__.bind(__webpack_require__,34019))),300:Pe.lazy(()=>__webpack_require__.e(6366).then(__webpack_require__.bind(__webpack_require__,40841))),301:Pe.lazy(()=>__webpack_require__.e(6452).then(__webpack_require__.bind(__webpack_require__,42222))),302:Pe.lazy(()=>__webpack_require__.e(1070).then(__webpack_require__.bind(__webpack_require__,89846))),303:Pe.lazy(()=>__webpack_require__.e(7242).then(__webpack_require__.bind(__webpack_require__,92227))),304:Pe.lazy(()=>__webpack_require__.e(2707).then(__webpack_require__.bind(__webpack_require__,851))),305:Pe.lazy(()=>__webpack_require__.e(2865).then(__webpack_require__.bind(__webpack_require__,18314))),306:Pe.lazy(()=>__webpack_require__.e(6784).then(__webpack_require__.bind(__webpack_require__,40693))),307:Pe.lazy(()=>__webpack_require__.e(6784).then(__webpack_require__.bind(__webpack_require__,40693))),308:Pe.lazy(()=>__webpack_require__.e(3141).then(__webpack_require__.bind(__webpack_require__,79666))),309:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),310:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7289)]).then(__webpack_require__.bind(__webpack_require__,8443))),311:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(700)]).then(__webpack_require__.bind(__webpack_require__,78857))),312:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7289)]).then(__webpack_require__.bind(__webpack_require__,8443))),313:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(700)]).then(__webpack_require__.bind(__webpack_require__,78857))),314:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5968),__webpack_require__.e(5136),__webpack_require__.e(7289)]).then(__webpack_require__.bind(__webpack_require__,8443))),315:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),316:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(7527)]).then(__webpack_require__.bind(__webpack_require__,9141))),317:Pe.lazy(()=>Promise.all([__webpack_require__.e(5136),__webpack_require__.e(6270)]).then(__webpack_require__.bind(__webpack_require__,60539))),318:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),319:Pe.lazy(()=>__webpack_require__.e(547).then(__webpack_require__.bind(__webpack_require__,38876))),320:Pe.lazy(()=>__webpack_require__.e(9788).then(__webpack_require__.bind(__webpack_require__,96972))),321:Pe.lazy(()=>__webpack_require__.e(576).then(__webpack_require__.bind(__webpack_require__,81402))),322:Pe.lazy(()=>__webpack_require__.e(7260).then(__webpack_require__.bind(__webpack_require__,40221))),323:Pe.lazy(()=>__webpack_require__.e(4520).then(__webpack_require__.bind(__webpack_require__,63400))),324:Pe.lazy(()=>__webpack_require__.e(9076).then(__webpack_require__.bind(__webpack_require__,97718))),325:Pe.lazy(()=>__webpack_require__.e(4514).then(__webpack_require__.bind(__webpack_require__,69934))),326:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),327:Pe.lazy(()=>__webpack_require__.e(928).then(__webpack_require__.bind(__webpack_require__,50368))),328:Pe.lazy(()=>__webpack_require__.e(1006).then(__webpack_require__.bind(__webpack_require__,95543))),329:Pe.lazy(()=>__webpack_require__.e(1006).then(__webpack_require__.bind(__webpack_require__,95543))),330:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),331:Pe.lazy(()=>__webpack_require__.e(1939).then(__webpack_require__.bind(__webpack_require__,17514))),332:Pe.lazy(()=>__webpack_require__.e(556).then(__webpack_require__.bind(__webpack_require__,43333))),333:Pe.lazy(()=>__webpack_require__.e(6434).then(__webpack_require__.bind(__webpack_require__,5809))),334:Pe.lazy(()=>__webpack_require__.e(1880).then(__webpack_require__.bind(__webpack_require__,25904))),335:Pe.lazy(()=>__webpack_require__.e(8237).then(__webpack_require__.bind(__webpack_require__,69862))),336:Pe.lazy(()=>__webpack_require__.e(3447).then(__webpack_require__.bind(__webpack_require__,9809))),337:Pe.lazy(()=>__webpack_require__.e(264).then(__webpack_require__.bind(__webpack_require__,80561))),338:Pe.lazy(()=>__webpack_require__.e(4259).then(__webpack_require__.bind(__webpack_require__,49578))),339:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),340:Pe.lazy(()=>__webpack_require__.e(4078).then(__webpack_require__.bind(__webpack_require__,17021))),341:Pe.lazy(()=>__webpack_require__.e(2829).then(__webpack_require__.bind(__webpack_require__,12704))),342:Pe.lazy(()=>__webpack_require__.e(5359).then(__webpack_require__.bind(__webpack_require__,95743))),343:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),344:Pe.lazy(()=>__webpack_require__.e(559).then(__webpack_require__.bind(__webpack_require__,96798))),345:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),346:Pe.lazy(()=>__webpack_require__.e(4757).then(__webpack_require__.bind(__webpack_require__,98527))),347:Pe.lazy(()=>__webpack_require__.e(1783).then(__webpack_require__.bind(__webpack_require__,99725))),348:Pe.lazy(()=>__webpack_require__.e(7477).then(__webpack_require__.bind(__webpack_require__,90018))),349:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),350:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),351:Pe.lazy(()=>__webpack_require__.e(6796).then(__webpack_require__.bind(__webpack_require__,49604))),352:Pe.lazy(()=>__webpack_require__.e(4504).then(__webpack_require__.bind(__webpack_require__,87890))),353:Pe.lazy(()=>__webpack_require__.e(7058).then(__webpack_require__.bind(__webpack_require__,17761))),354:Pe.lazy(()=>__webpack_require__.e(8447).then(__webpack_require__.bind(__webpack_require__,39965))),355:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),356:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),357:Pe.lazy(()=>__webpack_require__.e(5238).then(__webpack_require__.bind(__webpack_require__,9903))),358:Pe.lazy(()=>__webpack_require__.e(4715).then(__webpack_require__.bind(__webpack_require__,32034))),359:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(3873)]).then(__webpack_require__.bind(__webpack_require__,31805))),360:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),361:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),362:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(6265)]).then(__webpack_require__.bind(__webpack_require__,64962))),363:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),364:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),365:Pe.lazy(()=>__webpack_require__.e(1713).then(__webpack_require__.bind(__webpack_require__,7240))),366:Pe.lazy(()=>__webpack_require__.e(5891).then(__webpack_require__.bind(__webpack_require__,38179))),367:Pe.lazy(()=>__webpack_require__.e(8398).then(__webpack_require__.bind(__webpack_require__,13733))),368:Pe.lazy(()=>__webpack_require__.e(8241).then(__webpack_require__.bind(__webpack_require__,7665))),369:Pe.lazy(()=>__webpack_require__.e(2339).then(__webpack_require__.bind(__webpack_require__,16796))),370:Pe.lazy(()=>__webpack_require__.e(7589).then(__webpack_require__.bind(__webpack_require__,85390))),371:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),372:Pe.lazy(()=>__webpack_require__.e(5705).then(__webpack_require__.bind(__webpack_require__,83115))),373:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),374:Pe.lazy(()=>__webpack_require__.e(559).then(__webpack_require__.bind(__webpack_require__,96798))),375:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),376:Pe.lazy(()=>__webpack_require__.e(4757).then(__webpack_require__.bind(__webpack_require__,98527))),377:Pe.lazy(()=>__webpack_require__.e(1783).then(__webpack_require__.bind(__webpack_require__,99725))),378:Pe.lazy(()=>__webpack_require__.e(7477).then(__webpack_require__.bind(__webpack_require__,90018))),379:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),380:Pe.lazy(()=>__webpack_require__.e(9677).then(__webpack_require__.bind(__webpack_require__,61981))),381:Pe.lazy(()=>__webpack_require__.e(6796).then(__webpack_require__.bind(__webpack_require__,49604))),382:Pe.lazy(()=>__webpack_require__.e(4504).then(__webpack_require__.bind(__webpack_require__,87890))),383:Pe.lazy(()=>__webpack_require__.e(7058).then(__webpack_require__.bind(__webpack_require__,17761))),384:Pe.lazy(()=>__webpack_require__.e(8447).then(__webpack_require__.bind(__webpack_require__,39965))),385:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),386:Pe.lazy(()=>__webpack_require__.e(1045).then(__webpack_require__.bind(__webpack_require__,32561))),387:Pe.lazy(()=>__webpack_require__.e(5238).then(__webpack_require__.bind(__webpack_require__,9903))),388:Pe.lazy(()=>__webpack_require__.e(4715).then(__webpack_require__.bind(__webpack_require__,32034))),389:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(3873)]).then(__webpack_require__.bind(__webpack_require__,31805))),390:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),391:Pe.lazy(()=>Promise.all([__webpack_require__.e(9113),__webpack_require__.e(6069)]).then(__webpack_require__.bind(__webpack_require__,72381))),392:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(6265)]).then(__webpack_require__.bind(__webpack_require__,64962))),393:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),394:Pe.lazy(()=>Promise.all([__webpack_require__.e(6939),__webpack_require__.e(8563)]).then(__webpack_require__.bind(__webpack_require__,34116))),395:Pe.lazy(()=>__webpack_require__.e(1713).then(__webpack_require__.bind(__webpack_require__,7240))),396:Pe.lazy(()=>__webpack_require__.e(5891).then(__webpack_require__.bind(__webpack_require__,38179))),397:Pe.lazy(()=>__webpack_require__.e(8398).then(__webpack_require__.bind(__webpack_require__,13733))),398:Pe.lazy(()=>__webpack_require__.e(8241).then(__webpack_require__.bind(__webpack_require__,7665))),399:Pe.lazy(()=>__webpack_require__.e(2339).then(__webpack_require__.bind(__webpack_require__,16796))),400:Pe.lazy(()=>__webpack_require__.e(7589).then(__webpack_require__.bind(__webpack_require__,85390))),401:Pe.lazy(()=>__webpack_require__.e(3747).then(__webpack_require__.bind(__webpack_require__,33661))),402:Pe.lazy(()=>__webpack_require__.e(5705).then(__webpack_require__.bind(__webpack_require__,83115))),403:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),404:Pe.lazy(()=>__webpack_require__.e(4766).then(__webpack_require__.bind(__webpack_require__,12078))),405:Pe.lazy(()=>__webpack_require__.e(7560).then(__webpack_require__.bind(__webpack_require__,98148))),406:Pe.lazy(()=>__webpack_require__.e(6029).then(__webpack_require__.bind(__webpack_require__,76978))),407:Pe.lazy(()=>__webpack_require__.e(5179).then(__webpack_require__.bind(__webpack_require__,63171))),408:Pe.lazy(()=>__webpack_require__.e(4621).then(__webpack_require__.bind(__webpack_require__,75407))),409:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),410:Pe.lazy(()=>__webpack_require__.e(1831).then(__webpack_require__.bind(__webpack_require__,66874))),411:Pe.lazy(()=>__webpack_require__.e(2539).then(__webpack_require__.bind(__webpack_require__,87085))),412:Pe.lazy(()=>__webpack_require__.e(8143).then(__webpack_require__.bind(__webpack_require__,14905))),413:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(5624)]).then(__webpack_require__.bind(__webpack_require__,50937))),414:Pe.lazy(()=>__webpack_require__.e(1461).then(__webpack_require__.bind(__webpack_require__,75693))),415:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(4492)]).then(__webpack_require__.bind(__webpack_require__,90679))),416:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(9416)]).then(__webpack_require__.bind(__webpack_require__,2027))),417:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),418:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),419:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),420:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),421:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(2443)]).then(__webpack_require__.bind(__webpack_require__,76321))),422:Pe.lazy(()=>__webpack_require__.e(5022).then(__webpack_require__.bind(__webpack_require__,36424))),423:Pe.lazy(()=>__webpack_require__.e(6063).then(__webpack_require__.bind(__webpack_require__,4318))),424:Pe.lazy(()=>__webpack_require__.e(6063).then(__webpack_require__.bind(__webpack_require__,4318))),425:Pe.lazy(()=>Promise.all([__webpack_require__.e(2718),__webpack_require__.e(7545)]).then(__webpack_require__.bind(__webpack_require__,97572))),426:Pe.lazy(()=>__webpack_require__.e(1253).then(__webpack_require__.bind(__webpack_require__,42544))),427:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),428:Pe.lazy(()=>__webpack_require__.e(2216).then(__webpack_require__.bind(__webpack_require__,12795))),429:Pe.lazy(()=>__webpack_require__.e(5382).then(__webpack_require__.bind(__webpack_require__,59092))),430:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),431:Pe.lazy(()=>__webpack_require__.e(4420).then(__webpack_require__.bind(__webpack_require__,81033))),432:Pe.lazy(()=>Promise.all([__webpack_require__.e(6232),__webpack_require__.e(6979)]).then(__webpack_require__.bind(__webpack_require__,42539))),433:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2946),__webpack_require__.e(6232),__webpack_require__.e(8823)]).then(__webpack_require__.bind(__webpack_require__,27525))),434:Pe.lazy(()=>__webpack_require__.e(3685).then(__webpack_require__.bind(__webpack_require__,44248))),435:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2946),__webpack_require__.e(2524)]).then(__webpack_require__.bind(__webpack_require__,35805))),436:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5915)]).then(__webpack_require__.bind(__webpack_require__,77490))),437:Pe.lazy(()=>__webpack_require__.e(3589).then(__webpack_require__.bind(__webpack_require__,96885))),438:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(919)]).then(__webpack_require__.bind(__webpack_require__,97846))),439:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7042)]).then(__webpack_require__.bind(__webpack_require__,77273))),440:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8137)]).then(__webpack_require__.bind(__webpack_require__,75888))),441:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2946),__webpack_require__.e(4339)]).then(__webpack_require__.bind(__webpack_require__,64049))),442:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9595)]).then(__webpack_require__.bind(__webpack_require__,76439))),443:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3443)]).then(__webpack_require__.bind(__webpack_require__,36922))),444:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),445:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(9172)]).then(__webpack_require__.bind(__webpack_require__,68093))),446:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),447:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),448:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),449:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),450:Pe.lazy(()=>__webpack_require__.e(6806).then(__webpack_require__.bind(__webpack_require__,88311))),451:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(174)]).then(__webpack_require__.bind(__webpack_require__,65975))),452:Pe.lazy(()=>__webpack_require__.e(7052).then(__webpack_require__.bind(__webpack_require__,49269))),453:Pe.lazy(()=>__webpack_require__.e(7465).then(__webpack_require__.bind(__webpack_require__,24263))),454:Pe.lazy(()=>__webpack_require__.e(8234).then(__webpack_require__.bind(__webpack_require__,39486))),455:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),456:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),457:Pe.lazy(()=>__webpack_require__.e(7745).then(__webpack_require__.bind(__webpack_require__,66162))),458:Pe.lazy(()=>__webpack_require__.e(8121).then(__webpack_require__.bind(__webpack_require__,4115))),459:Pe.lazy(()=>__webpack_require__.e(4806).then(__webpack_require__.bind(__webpack_require__,76789))),460:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(3282)]).then(__webpack_require__.bind(__webpack_require__,79483))),461:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),462:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),463:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),464:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),465:Pe.lazy(()=>__webpack_require__.e(7670).then(__webpack_require__.bind(__webpack_require__,49899))),466:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),467:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),468:Pe.lazy(()=>__webpack_require__.e(1691).then(__webpack_require__.bind(__webpack_require__,31198))),469:Pe.lazy(()=>__webpack_require__.e(7823).then(__webpack_require__.bind(__webpack_require__,37353))),470:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),471:Pe.lazy(()=>__webpack_require__.e(1673).then(__webpack_require__.bind(__webpack_require__,34449))),472:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2748)]).then(__webpack_require__.bind(__webpack_require__,69720))),473:Pe.lazy(()=>__webpack_require__.e(2641).then(__webpack_require__.bind(__webpack_require__,72010))),474:Pe.lazy(()=>__webpack_require__.e(2441).then(__webpack_require__.bind(__webpack_require__,22410))),475:Pe.lazy(()=>__webpack_require__.e(8116).then(__webpack_require__.bind(__webpack_require__,5538))),476:Pe.lazy(()=>__webpack_require__.e(1077).then(__webpack_require__.bind(__webpack_require__,51910))),477:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),478:Pe.lazy(()=>__webpack_require__.e(570).then(__webpack_require__.bind(__webpack_require__,16528))),479:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),480:Pe.lazy(()=>__webpack_require__.e(8365).then(__webpack_require__.bind(__webpack_require__,10115))),481:Pe.lazy(()=>__webpack_require__.e(6788).then(__webpack_require__.bind(__webpack_require__,94401))),482:Pe.lazy(()=>__webpack_require__.e(4058).then(__webpack_require__.bind(__webpack_require__,37552))),483:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),484:Pe.lazy(()=>__webpack_require__.e(4056).then(__webpack_require__.bind(__webpack_require__,94989))),485:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(1443)]).then(__webpack_require__.bind(__webpack_require__,85770))),486:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(65)]).then(__webpack_require__.bind(__webpack_require__,58088))),487:Pe.lazy(()=>__webpack_require__.e(9487).then(__webpack_require__.bind(__webpack_require__,31200))),488:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),489:Pe.lazy(()=>__webpack_require__.e(532).then(__webpack_require__.bind(__webpack_require__,69588))),490:Pe.lazy(()=>__webpack_require__.e(7178).then(__webpack_require__.bind(__webpack_require__,34687))),491:Pe.lazy(()=>__webpack_require__.e(1660).then(__webpack_require__.bind(__webpack_require__,44824))),492:Pe.lazy(()=>__webpack_require__.e(7333).then(__webpack_require__.bind(__webpack_require__,45589))),493:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(4227)]).then(__webpack_require__.bind(__webpack_require__,23465))),494:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8155)]).then(__webpack_require__.bind(__webpack_require__,63966))),495:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(5186)]).then(__webpack_require__.bind(__webpack_require__,28268))),496:Pe.lazy(()=>__webpack_require__.e(5786).then(__webpack_require__.bind(__webpack_require__,27026))),497:Pe.lazy(()=>__webpack_require__.e(9366).then(__webpack_require__.bind(__webpack_require__,92423))),498:Pe.lazy(()=>__webpack_require__.e(5972).then(__webpack_require__.bind(__webpack_require__,98442))),499:Pe.lazy(()=>__webpack_require__.e(9366).then(__webpack_require__.bind(__webpack_require__,92423))),500:Pe.lazy(()=>__webpack_require__.e(1470).then(__webpack_require__.bind(__webpack_require__,11428))),501:Pe.lazy(()=>__webpack_require__.e(7182).then(__webpack_require__.bind(__webpack_require__,34181))),502:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),503:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2476)]).then(__webpack_require__.bind(__webpack_require__,13455))),504:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),505:Pe.lazy(()=>__webpack_require__.e(5729).then(__webpack_require__.bind(__webpack_require__,91880))),506:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),507:Pe.lazy(()=>__webpack_require__.e(6444).then(__webpack_require__.bind(__webpack_require__,39764))),508:Pe.lazy(()=>__webpack_require__.e(5111).then(__webpack_require__.bind(__webpack_require__,89159))),509:Pe.lazy(()=>__webpack_require__.e(2307).then(__webpack_require__.bind(__webpack_require__,8593))),510:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(7224)]).then(__webpack_require__.bind(__webpack_require__,24928))),511:Pe.lazy(()=>Promise.all([__webpack_require__.e(5968),__webpack_require__.e(7062)]).then(__webpack_require__.bind(__webpack_require__,70291))),512:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(2667),__webpack_require__.e(8866)]).then(__webpack_require__.bind(__webpack_require__,8986))),513:Pe.lazy(()=>__webpack_require__.e(2300).then(__webpack_require__.bind(__webpack_require__,92516))),514:Pe.lazy(()=>__webpack_require__.e(2501).then(__webpack_require__.bind(__webpack_require__,44664))),515:Pe.lazy(()=>__webpack_require__.e(3212).then(__webpack_require__.bind(__webpack_require__,96387))),516:Pe.lazy(()=>__webpack_require__.e(6904).then(__webpack_require__.bind(__webpack_require__,66301))),517:Pe.lazy(()=>__webpack_require__.e(1855).then(__webpack_require__.bind(__webpack_require__,87826))),518:Pe.lazy(()=>__webpack_require__.e(6904).then(__webpack_require__.bind(__webpack_require__,66301))),519:Pe.lazy(()=>__webpack_require__.e(1276).then(__webpack_require__.bind(__webpack_require__,4505))),520:Pe.lazy(()=>__webpack_require__.e(5816).then(__webpack_require__.bind(__webpack_require__,83601))),521:Pe.lazy(()=>__webpack_require__.e(5816).then(__webpack_require__.bind(__webpack_require__,83601))),522:Pe.lazy(()=>__webpack_require__.e(3784).then(__webpack_require__.bind(__webpack_require__,46968))),523:Pe.lazy(()=>__webpack_require__.e(3862).then(__webpack_require__.bind(__webpack_require__,92002))),524:Pe.lazy(()=>__webpack_require__.e(4565).then(__webpack_require__.bind(__webpack_require__,88440))),525:Pe.lazy(()=>__webpack_require__.e(6531).then(__webpack_require__.bind(__webpack_require__,818))),526:Pe.lazy(()=>__webpack_require__.e(6170).then(__webpack_require__.bind(__webpack_require__,42137))),527:Pe.lazy(()=>__webpack_require__.e(4496).then(__webpack_require__.bind(__webpack_require__,68498))),528:Pe.lazy(()=>__webpack_require__.e(1836).then(__webpack_require__.bind(__webpack_require__,95268))),529:Pe.lazy(()=>Promise.all([__webpack_require__.e(6411),__webpack_require__.e(8518),__webpack_require__.e(8435)]).then(__webpack_require__.bind(__webpack_require__,99230))),530:Pe.lazy(()=>__webpack_require__.e(3509).then(__webpack_require__.bind(__webpack_require__,56257))),531:Pe.lazy(()=>__webpack_require__.e(4496).then(__webpack_require__.bind(__webpack_require__,68498))),532:Pe.lazy(()=>__webpack_require__.e(4496).then(__webpack_require__.bind(__webpack_require__,68498))),533:Pe.lazy(()=>__webpack_require__.e(6034).then(__webpack_require__.bind(__webpack_require__,98015))),534:Pe.lazy(()=>__webpack_require__.e(8999).then(__webpack_require__.bind(__webpack_require__,9404))),535:Pe.lazy(()=>__webpack_require__.e(3910).then(__webpack_require__.bind(__webpack_require__,9448))),536:Pe.lazy(()=>__webpack_require__.e(67).then(__webpack_require__.bind(__webpack_require__,56451))),537:Pe.lazy(()=>__webpack_require__.e(6531).then(__webpack_require__.bind(__webpack_require__,818))),"@@/global-layout":Pe.lazy(()=>__webpack_require__.e(1717).then(__webpack_require__.bind(__webpack_require__,89240)))}}})}var D=__webpack_require__(52243),L=__webpack_require__(2500),ve=__webpack_require__(71418),ze=__webpack_require__(15863),tn=()=>Pe.createElement(ve.Z,{size:"middle",className:ze.Z.loading}),Tn=__webpack_require__(63823),xi=__webpack_require__(66649),mn=__webpack_require__.n(xi),qa=__webpack_require__(91392),Fo=__webpack_require__.n(qa),ns=__webpack_require__(73100),Ks=__webpack_require__.n(ns),Js=__webpack_require__(14805),cu=__webpack_require__.n(Js),Io=__webpack_require__(13477),qc=__webpack_require__.n(Io),rc=__webpack_require__(64796),Lc=__webpack_require__.n(rc),Jc=__webpack_require__(9007),qu=__webpack_require__.n(Jc),Oi=__webpack_require__(58626),Al=__webpack_require__.n(Oi),bf=__webpack_require__(9084),Vo=__webpack_require__.n(bf),Aa=__webpack_require__(5116),ll=__webpack_require__.n(Aa),Cl=__webpack_require__(50991),nc=__webpack_require__.n(Cl),ic=__webpack_require__(39050),Wl=__webpack_require__.n(ic),Tl=__webpack_require__(1554),xf=__webpack_require__.n(Tl),Bu=__webpack_require__(59697),Hl=__webpack_require__.n(Bu);mn().extend(Ks()),mn().extend(cu()),mn().extend(qc()),mn().extend(Lc()),mn().extend(qu()),mn().extend(Al()),mn().extend(Vo()),mn().extend(ll()),mn().extend(nc()),mn().extend(Wl()),mn().extend(xf()),mn().extend(Hl()),mn().extend(Fo());var ef=Object.defineProperty,Gl=Object.getOwnPropertySymbols,wf=Object.prototype.hasOwnProperty,Nu=Object.prototype.propertyIsEnumerable,Pl=(Bn,ni,Qi)=>ni in Bn?ef(Bn,ni,{enumerable:!0,configurable:!0,writable:!0,value:Qi}):Bn[ni]=Qi,ac=(Bn,ni)=>{for(var Qi in ni||(ni={}))wf.call(ni,Qi)&&Pl(Bn,Qi,ni[Qi]);if(Gl)for(var Qi of Gl(ni))Nu.call(ni,Qi)&&Pl(Bn,Qi,ni[Qi]);return Bn},Mc=(Bn,ni,Qi)=>new Promise((Ma,oa)=>{var Ca=ua=>{try{Fs(Qi.next(ua))}catch(Zs){oa(Zs)}},ga=ua=>{try{Fs(Qi.throw(ua))}catch(Zs){oa(Zs)}},Fs=ua=>ua.done?Ma(ua.value):Promise.resolve(ua.value).then(Ca,ga);Fs((Qi=Qi.apply(Bn,ni)).next())});const Hu="/react/build/",Su=!1;function Au(){return Mc(this,null,function*(){const Bn=(0,D.gD)(),{routes:ni,routeComponents:Qi}=yield P(Bn);yield Bn.applyPlugins({key:"patchRoutes",type:Tn.ApplyPluginsType.event,args:{routes:ni,routeComponents:Qi}});const Ma=Bn.applyPlugins({key:"modifyContextOpts",type:Tn.ApplyPluginsType.modify,initialValue:{}}),oa=Ma.basename||"/",Ca=Ma.historyType||"browser",ga=(0,L.fi)(ac({type:Ca,basename:oa},Ma.historyOpts));return Bn.applyPlugins({key:"render",type:Tn.ApplyPluginsType.compose,initialValue(){const Fs={useStream:!0,routes:ni,routeComponents:Qi,pluginManager:Bn,mountElementId:"root",rootElement:Ma.rootElement||document.getElementById("root"),loadingComponent:tn,publicPath:Hu,runtimePublicPath:Su,history:ga,historyType:Ca,basename:oa,__INTERNAL_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{pureApp:!1,pureHtml:!1},callback:Ma.callback},ua=Bn.applyPlugins({key:"modifyClientRenderOpts",type:Tn.ApplyPluginsType.modify,initialValue:Fs});return Qc(ua)}})()})}Au(),typeof window!="undefined"&&(window.g_umi={version:"4.6.20"})})()})();