@directus/app 16.2.0 → 16.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/dist/assets/{@directus_extensions-sdk.IKgCqplm.entry.js → @directus_extensions-sdk.DjVI821n.entry.js} +1 -1
  2. package/dist/assets/{active-line-CKmFLqNt.js → active-line-YmudI2h1.js} +1 -1
  3. package/dist/assets/{apl-CDoe0MHg.js → apl-_ManTT-W.js} +1 -1
  4. package/dist/assets/{asciiarmor-DCli2lE8.js → asciiarmor-CZHHClrD.js} +1 -1
  5. package/dist/assets/{asn.1-BtdlXNxo.js → asn.1-tpPQMXW-.js} +1 -1
  6. package/dist/assets/{asterisk-7fOUqjoV.js → asterisk-R7OSfPPk.js} +1 -1
  7. package/dist/assets/{autorefresh-DZPVeHuZ.js → autorefresh-Dk-1fKAb.js} +1 -1
  8. package/dist/assets/{be-D-zCIUGm.js → be-5z5Vowj1.js} +1 -1
  9. package/dist/assets/{bg-CgapH-BX.js → bg-CaGmgMMI.js} +1 -1
  10. package/dist/assets/{brainfuck-B8SSzBrx.js → brainfuck-DrMqBwwe.js} +1 -1
  11. package/dist/assets/{clike-DYTHoRFd.js → clike-a_kATu3R.js} +1 -1
  12. package/dist/assets/{clojure-Ml3BLcPf.js → clojure-BVYswROk.js} +1 -1
  13. package/dist/assets/{cmake-DeM6Srhs.js → cmake-xKBPfEuY.js} +1 -1
  14. package/dist/assets/cobol-BaB6FWmV.js +1 -0
  15. package/dist/assets/{codemirror-CZQSLkFC.js → codemirror-CVWB3MYP.js} +2 -2
  16. package/dist/assets/{coffeescript-BGBbk2ON.js → coffeescript-CltuAR-9.js} +1 -1
  17. package/dist/assets/{collection-BwZ8oimm.js → collection-CQXWDJAE.js} +1 -1
  18. package/dist/assets/{commonlisp-CkIXd2pR.js → commonlisp-PJVYWdqS.js} +1 -1
  19. package/dist/assets/{crystal-CFW6ENAg.js → crystal-BckoXAqg.js} +1 -1
  20. package/dist/assets/{css-CCi8Aoj7.js → css-C1vKwn3A.js} +1 -1
  21. package/dist/assets/{cypher-DKPECofw.js → cypher-CyMMpiIk.js} +1 -1
  22. package/dist/assets/{d-D2LRTAru.js → d-Czl1RvrF.js} +1 -1
  23. package/dist/assets/{dart-C6M8GoeZ.js → dart-BYm9imad.js} +1 -1
  24. package/dist/assets/{diff-ChAbJX5C.js → diff-DBsKI2Xf.js} +1 -1
  25. package/dist/assets/{dist-Chzs1Z1L.js → dist-DkkQXffG.js} +6 -6
  26. package/dist/assets/{django-DqnnnFBb.js → django-x816bCP7.js} +1 -1
  27. package/dist/assets/{dockerfile-BPvVo1If.js → dockerfile-BZ3JCf4z.js} +1 -1
  28. package/dist/assets/{dtd-Dv4P-XGB.js → dtd-BQxwPKkU.js} +1 -1
  29. package/dist/assets/{dylan-C6Kw3qJt.js → dylan-Cl2h3Mxh.js} +1 -1
  30. package/dist/assets/{ebnf-DN-pFEpD.js → ebnf-BPSwKxDZ.js} +1 -1
  31. package/dist/assets/{ecl-D4IiKcDb.js → ecl-B2K7KILA.js} +1 -1
  32. package/dist/assets/{eiffel-DfuPtCYO.js → eiffel-RGAAZqF8.js} +1 -1
  33. package/dist/assets/{elm-DDBXdHrf.js → elm-CqCEIED4.js} +1 -1
  34. package/dist/assets/{en-US-C76yGMwb.js → en-US-RHQ7PWY4.js} +1 -1
  35. package/dist/assets/{en-US-C-tL5e47.js → en-US-k3QWJleH.js} +1 -1
  36. package/dist/assets/{erlang-DXrvvN_A.js → erlang-D9-RiEab.js} +1 -1
  37. package/dist/assets/{factor-BC4udciU.js → factor-B7XtxyZ0.js} +1 -1
  38. package/dist/assets/{fcl-C-G2IgPU.js → fcl-BnWFu0bZ.js} +1 -1
  39. package/dist/assets/{forth-BsQr77-2.js → forth-DIL74-XL.js} +1 -1
  40. package/dist/assets/{fortran-Dqya1VF0.js → fortran-CdEgdmWB.js} +1 -1
  41. package/dist/assets/{gas-BUX28s7S.js → gas-CeqlwlSH.js} +1 -1
  42. package/dist/assets/{gfm-CHSHE7LX.js → gfm-JpGe8dcd.js} +1 -1
  43. package/dist/assets/{gherkin-z_ob0qm6.js → gherkin-clc2sJJJ.js} +1 -1
  44. package/dist/assets/{go-C6loDSI9.js → go-uK7jf9mV.js} +1 -1
  45. package/dist/assets/{groovy-Bc7vDbUJ.js → groovy-Bct-BDC2.js} +1 -1
  46. package/dist/assets/{haml-Stc2ND_E.js → haml-u1rrGWHR.js} +1 -1
  47. package/dist/assets/{handlebars-Cdf1aEJi.js → handlebars-ncSsRSzC.js} +1 -1
  48. package/dist/assets/{haskell-literate-D5QwokqX.js → haskell-literate-C1dSW4pP.js} +1 -1
  49. package/dist/assets/{haskell-By2x1Zsj.js → haskell-tSF53JFj.js} +1 -1
  50. package/dist/assets/{haxe-BZjJ2CpD.js → haxe-CXFeXpD1.js} +1 -1
  51. package/dist/assets/{htmlembedded-DSoytvWM.js → htmlembedded-DWovG2vZ.js} +1 -1
  52. package/dist/assets/{htmlmixed-MRth3yQd.js → htmlmixed-CHDh5Z6h.js} +1 -1
  53. package/dist/assets/{http-kp0GmV2v.js → http-Dvu479QG.js} +1 -1
  54. package/dist/assets/{idl-Cw1ei_Uz.js → idl-D6i6qXWf.js} +1 -1
  55. package/dist/assets/{index.DEI9oKds.entry.js → index.DCyczZHD.entry.js} +181 -181
  56. package/dist/assets/input-rich-text-html-8d_Z3mGx.js +267 -0
  57. package/dist/assets/isSameWeek-YTq7UVuX.js +1 -0
  58. package/dist/assets/{it-CNdc1QI9.js → it-8q0shzMC.js} +1 -1
  59. package/dist/assets/{item-B3o3HX8Y.js → item-C9OKYWMg.js} +1 -1
  60. package/dist/assets/{javascript-Dkbw7Mzg.js → javascript-C3YPZYgn.js} +1 -1
  61. package/dist/assets/{javascript-hint-BSFtAcd3.js → javascript-hint-CaLC4B6L.js} +1 -1
  62. package/dist/assets/{jinja2-DZUGpp6m.js → jinja2-CVedV-lK.js} +1 -1
  63. package/dist/assets/{jsonlint-igDkY4hd.js → jsonlint-BkV9sE6w.js} +1 -1
  64. package/dist/assets/{jsx-CGBJENc5.js → jsx-BdakxDL7.js} +1 -1
  65. package/dist/assets/{julia-Dw-eHfNu.js → julia-CUdHn1pg.js} +1 -1
  66. package/dist/assets/{kk-BdG-C3VE.js → kk-B4zHEGep.js} +1 -1
  67. package/dist/assets/{livescript-DuUdRiia.js → livescript-BFlwkveZ.js} +1 -1
  68. package/dist/assets/{lua-oDrY7j7D.js → lua-tmsA5jjW.js} +1 -1
  69. package/dist/assets/{lv-MLst8u0U.js → lv-BEqibWYP.js} +1 -1
  70. package/dist/assets/{mark-selection-DJHEIdlQ.js → mark-selection-BeSSm3PI.js} +1 -1
  71. package/dist/assets/{markdown-CUq6E-wv.js → markdown-DOGq9mBg.js} +1 -1
  72. package/dist/assets/{match-highlighter-DzhU9y_D.js → match-highlighter-1HzN4Pgp.js} +1 -1
  73. package/dist/assets/{matchbrackets--KrCYwnx.js → matchbrackets-_tqFLqC6.js} +1 -1
  74. package/dist/assets/{mathematica-DX7LV5b9.js → mathematica-C-DoYiWS.js} +1 -1
  75. package/dist/assets/{mbox-C5JYRUYb.js → mbox-2Lsc_O4W.js} +1 -1
  76. package/dist/assets/{mirc-Dfj5J5aQ.js → mirc-DaKpU33A.js} +1 -1
  77. package/dist/assets/{mk-W7oKO_JO.js → mk-DmhQlyyK.js} +1 -1
  78. package/dist/assets/{mllike-eJfGJbpA.js → mllike-kn_OM2Vc.js} +1 -1
  79. package/dist/assets/{modelica-BSUbCUTI.js → modelica-Bhgb5SMD.js} +1 -1
  80. package/dist/assets/{mscgen-CZhoqiJs.js → mscgen-KPUtBnNm.js} +1 -1
  81. package/dist/assets/{multiplex-BtR8jmwV.js → multiplex-CTAe1dK4.js} +1 -1
  82. package/dist/assets/{mumps-DNcdQYO3.js → mumps-m_uX3iVB.js} +1 -1
  83. package/dist/assets/{nginx-BHiKBO2u.js → nginx-CgH3Yti3.js} +1 -1
  84. package/dist/assets/{nsis-gskoy_k0.js → nsis-TbQEzsdz.js} +1 -1
  85. package/dist/assets/{ntriples-DR9fAikn.js → ntriples-DFvTBC1f.js} +1 -1
  86. package/dist/assets/{octave-QlHfSVRT.js → octave-DtBgUEb4.js} +1 -1
  87. package/dist/assets/{overlay-Bsw_mBbN.js → overlay-D97aXLbQ.js} +1 -1
  88. package/dist/assets/{oz-Cm53kmmz.js → oz-DP2zK8KY.js} +1 -1
  89. package/dist/assets/{pascal-DQCDqZPP.js → pascal-81HPc7UO.js} +1 -1
  90. package/dist/assets/{pegjs-CzjtO-kT.js → pegjs-cvpfFC_H.js} +1 -1
  91. package/dist/assets/{perl-B7sJzC13.js → perl-DDynFSNG.js} +1 -1
  92. package/dist/assets/{php-1FszEBJF.js → php-DPsJNGWK.js} +1 -1
  93. package/dist/assets/{pig-DHQ3X2Vq.js → pig-CpDqm18x.js} +1 -1
  94. package/dist/assets/{pinia-COnWmS1a.js → pinia-Bk3MOzq-.js} +1 -1
  95. package/dist/assets/{pinia.C5rlcLhS.entry.js → pinia.CVv-Vm4_.entry.js} +1 -1
  96. package/dist/assets/{pl-NEWR-LgE.js → pl-DP2Tw2ht.js} +1 -1
  97. package/dist/assets/{powershell-3JpYvXwv.js → powershell-HBjVAzdZ.js} +1 -1
  98. package/dist/assets/{properties-CYlBh7p8.js → properties-BVzilBdI.js} +1 -1
  99. package/dist/assets/{protobuf-BsodQVaP.js → protobuf-Epf6_GVg.js} +1 -1
  100. package/dist/assets/pug-VYAX_imA.js +1 -0
  101. package/dist/assets/{puppet-BTl7wLOr.js → puppet-CmpqWY78.js} +1 -1
  102. package/dist/assets/python-CAc7CXn6.js +1 -0
  103. package/dist/assets/{q-5BDnRiLm.js → q-DXK7854j.js} +1 -1
  104. package/dist/assets/{r-eW6nMhpr.js → r-lFCM62TN.js} +1 -1
  105. package/dist/assets/{rpm-B77IDCBn.js → rpm-DNaioNIE.js} +1 -1
  106. package/dist/assets/{rst-C9kZAUb-.js → rst-B9hQuPCc.js} +1 -1
  107. package/dist/assets/{ru-B3ph3P8r.js → ru-1axAI-3S.js} +1 -1
  108. package/dist/assets/{ruby--9V--4SV.js → ruby-P7Uz3Q0t.js} +1 -1
  109. package/dist/assets/{rust-CWtd99Gf.js → rust-Hn7wD-DU.js} +1 -1
  110. package/dist/assets/{sas-DoCDz1HV.js → sas-BZ6nenhx.js} +1 -1
  111. package/dist/assets/{sass-amSKhAE6.js → sass-Bxjxi0hk.js} +1 -1
  112. package/dist/assets/scheme-DVuWR1ww.js +1 -0
  113. package/dist/assets/{shader-background-eZvsKyxK.js → shader-background-BAphkaxZ.js} +10 -10
  114. package/dist/assets/{shell-BEQyKxLm.js → shell-hXxyz6U7.js} +1 -1
  115. package/dist/assets/show-hint-ATySfO62.js +1 -0
  116. package/dist/assets/{sieve-CkKyuxzb.js → sieve-CPxajnXA.js} +1 -1
  117. package/dist/assets/{sk-5GxqeMnE.js → sk-CxUlj1jN.js} +1 -1
  118. package/dist/assets/{slim-CzSa_k8B.js → slim-ChZJKkN4.js} +1 -1
  119. package/dist/assets/{smalltalk-18jpnfCS.js → smalltalk-CaqM0GJV.js} +1 -1
  120. package/dist/assets/{smarty-BEDuOQPv.js → smarty-CYKneUrJ.js} +1 -1
  121. package/dist/assets/{social-icon-Csx5-jGC.js → social-icon-Dxox5INO.js} +1 -1
  122. package/dist/assets/{solr-D7h3GiT7.js → solr-vS-pfy7E.js} +1 -1
  123. package/dist/assets/{soy-BfIIJzc9.js → soy-CDmHDJhp.js} +1 -1
  124. package/dist/assets/{sparql-QiZd017h.js → sparql-CiDLOeHJ.js} +1 -1
  125. package/dist/assets/{spreadsheet-BSDF_-7D.js → spreadsheet-BBaJ-qB4.js} +1 -1
  126. package/dist/assets/{sql-Dcf2CbSz.js → sql-Bz0peO75.js} +1 -1
  127. package/dist/assets/{stex-C_zcxYJo.js → stex-DWo0gGIM.js} +1 -1
  128. package/dist/assets/{stylus-D2lv5oBV.js → stylus-B0ePWUGY.js} +1 -1
  129. package/dist/assets/{swift-DR9QjrYT.js → swift-E-SS1X6F.js} +1 -1
  130. package/dist/assets/{tcl-DFkUNN1v.js → tcl-BRJamgxZ.js} +1 -1
  131. package/dist/assets/textile-DHfdOQiX.js +1 -0
  132. package/dist/assets/{tiddlywiki-DK9N5nv7.js → tiddlywiki-CmYksiK7.js} +1 -1
  133. package/dist/assets/{tiki-BGhFagz0.js → tiki-BY4ed1Xg.js} +1 -1
  134. package/dist/assets/{toml-C7D_Ft4F.js → toml-DS2q9cx1.js} +1 -1
  135. package/dist/assets/{tornado-EZqSY9Od.js → tornado-DBg6Kct3.js} +1 -1
  136. package/dist/assets/{troff-BFCw2tbA.js → troff-CHCDWzy8.js} +1 -1
  137. package/dist/assets/{ttcn-Bula9Psu.js → ttcn-ClXRxW2a.js} +1 -1
  138. package/dist/assets/{ttcn-cfg-C2kk6oDY.js → ttcn-cfg-Bq_kCb2A.js} +1 -1
  139. package/dist/assets/{turtle-h_9uGIv_.js → turtle-CN2Zs8Qj.js} +1 -1
  140. package/dist/assets/{twig-CjgsOe_U.js → twig-BNcLtFCd.js} +1 -1
  141. package/dist/assets/{uk-CEIZ5i8X.js → uk-C-02gqDK.js} +1 -1
  142. package/dist/assets/{vb-ii3EL8sA.js → vb-DvK_ar_c.js} +1 -1
  143. package/dist/assets/{vbscript-DLvZO3K3.js → vbscript-CMrHgfP7.js} +1 -1
  144. package/dist/assets/{velocity-DfwWJ3sj.js → velocity-BV2FLMta.js} +1 -1
  145. package/dist/assets/{verilog-sMI9VieC.js → verilog-B_HViVCf.js} +1 -1
  146. package/dist/assets/{vhdl-QWiaQRGt.js → vhdl-RUNR6eIm.js} +1 -1
  147. package/dist/assets/{vue-DcAaSkdA.js → vue-DkjOQCH7.js} +1 -1
  148. package/dist/assets/{vue-i18n-CrPQ54Wf.js → vue-i18n-B1ATFdux.js} +2 -2
  149. package/dist/assets/{vue-i18n.BzHi04l4.entry.js → vue-i18n.BhoRqDub.entry.js} +1 -1
  150. package/dist/assets/{vue-router-Cbjzp44w.js → vue-router-Uns_ktSl.js} +1 -1
  151. package/dist/assets/{vue-router.Cttaae4R.entry.js → vue-router.DCCyuf9K.entry.js} +1 -1
  152. package/dist/assets/{vue.BIiXhcai.entry.js → vue.Cq195fCl.entry.js} +1 -1
  153. package/dist/assets/vue.runtime.esm-bundler-Cor2aCVe.js +4 -0
  154. package/dist/assets/{wast-BTxhDil5.js → wast-CLU-sVIl.js} +1 -1
  155. package/dist/assets/{webidl-C5JOtxAL.js → webidl-Cr13_oQ6.js} +1 -1
  156. package/dist/assets/{xml-DNphhw89.js → xml-lWfDnKJT.js} +1 -1
  157. package/dist/assets/{xquery-DWc9JKgd.js → xquery-Cf9t-Zhr.js} +1 -1
  158. package/dist/assets/{yacas-Ca1m6fVR.js → yacas-CuRkOAMq.js} +1 -1
  159. package/dist/assets/{yaml-C9bZlk7k.js → yaml-Cup1-J21.js} +1 -1
  160. package/dist/assets/yaml-frontmatter-Ss_9Tp-L.js +1 -0
  161. package/dist/assets/{z80-D89QWHUj.js → z80-BFh4D9Fv.js} +1 -1
  162. package/dist/assets/{zh-CN-COGt14Dw.js → zh-CN-Cw-zXjEp.js} +1 -1
  163. package/dist/index.html +14 -14
  164. package/package.json +7 -7
  165. package/dist/assets/cobol-Ca5tZ6FX.js +0 -1
  166. package/dist/assets/input-rich-text-html-Go-RMFDH.js +0 -267
  167. package/dist/assets/isSameWeek-CY4LyoBP.js +0 -1
  168. package/dist/assets/pug-DQBqvGkj.js +0 -1
  169. package/dist/assets/python-BO1DsnTp.js +0 -1
  170. package/dist/assets/scheme-Cs7ig-li.js +0 -1
  171. package/dist/assets/show-hint-cXYVQGOC.js +0 -1
  172. package/dist/assets/textile-C9_DvtnO.js +0 -1
  173. package/dist/assets/vue.runtime.esm-bundler-y85-NT4a.js +0 -4
  174. package/dist/assets/yaml-frontmatter-Dh-QbD8_.js +0 -1
@@ -1,4 +1,4 @@
1
- import{At as e,Cn as t,Ct as n,Er as r,Fn as i,Fr as a,G as o,Gt as s,J as c,Jn as l,K as u,Ln as d,Lt as f,N as p,Nt as m,Or as h,Qn as g,St as _,Ut as v,Vn as y,Vt as b,W as x,Wn as S,Xt as C,Yn as w,Z as T,Zn as E,ar as D,dt as O,gt as ee,kt as te,mt as ne,pn as re,pr as ie,q as ae,rr as oe,rt as se,tt as ce,vn as le,yn as ue}from"./vue.runtime.esm-bundler-y85-NT4a.js";import{V as de,_r as fe}from"./dist-Chzs1Z1L.js";var pe={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},me={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},he=`attached`,ge=`detached`,_e=1e3,ve=1001,ye=1002,be=1003,xe=1004,Se=1004,Ce=1005,we=1005,Te=1006,k=1007,Ee=1007,De=1008,Oe=1008,ke=1009,Ae=1010,A=1011,je=1012,Me=1013,Ne=1014,Pe=1015,Fe=1016,Ie=1017,Le=1018,Re=1020,ze=35902,Be=35899,Ve=1021,He=1022,Ue=1023,We=1026,Ge=1027,Ke=1028,qe=1029,Je=1030,Ye=1031,Xe=1032,Ze=1033,Qe=33776,$e=33777,et=33778,tt=33779,nt=35840,rt=35841,it=35842,at=35843,ot=36196,st=37492,ct=37496,lt=37488,ut=37489,dt=37490,ft=37491,pt=37808,mt=37809,ht=37810,gt=37811,_t=37812,vt=37813,yt=37814,bt=37815,xt=37816,St=37817,Ct=37818,wt=37819,Tt=37820,Et=37821,Dt=36492,Ot=36494,kt=36495,At=36283,jt=36284,Mt=36285,Nt=36286,Pt=2200,Ft=2201,It=2202,Lt=2300,Rt=2301,zt=2302,Bt=2303,Vt=2400,Ht=2401,Ut=2402,Wt=2500,Gt=2501,Kt=3200,qt=3201,Jt=3202,Yt=3203,Xt=`srgb`,Zt=`srgb-linear`,Qt=`linear`,$t=`srgb`,en=7680,tn=7681,nn=7682,rn=7683,an=34055,on=34056,sn=5386,cn=35044,ln=35048,un=35040,dn=35045,fn=35049,pn=35041,mn=35046,hn=35050,gn=35042,_n=`300 es`,vn=2e3,yn=2001,bn={COMPUTE:`compute`,RENDER:`render`},xn={PERSPECTIVE:`perspective`,LINEAR:`linear`,FLAT:`flat`},Sn={NORMAL:`normal`,CENTROID:`centroid`,SAMPLE:`sample`,FIRST:`first`,EITHER:`either`},Cn={TEXTURE_COMPARE:`depthTextureCompare`};function wn(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}var Tn={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function En(e,t){return new Tn[e](t)}function Dn(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function On(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}function kn(){let e=On(`canvas`);return e.style.display=`block`,e}var An={},jn=null;function Mn(e){jn=e}function Nn(){return jn}function Pn(...e){let t=`THREE.`+e.shift();jn?jn(`log`,t,...e):console.log(t,...e)}function Fn(e){let t=e[0];if(typeof t==`string`&&t.startsWith(`TSL:`)){let t=e[1];t&&t.isStackTrace?e[0]+=` `+t.getLocation():e[1]=`Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.`}return e}function j(...e){e=Fn(e);let t=`THREE.`+e.shift();if(jn)jn(`warn`,t,...e);else{let n=e[0];n&&n.isStackTrace?console.warn(n.getError(t)):console.warn(t,...e)}}function M(...e){e=Fn(e);let t=`THREE.`+e.shift();if(jn)jn(`error`,t,...e);else{let n=e[0];n&&n.isStackTrace?console.error(n.getError(t)):console.error(t,...e)}}function In(...e){let t=e.join(` `);t in An||(An[t]=!0,j(...e))}function Ln(){return typeof self<`u`&&self.scheduler!==void 0&&self.scheduler.yield!==void 0?self.scheduler.yield():new Promise(e=>{requestAnimationFrame(e)})}function Rn(e,t,n){return new Promise(function(r,i){function a(){switch(e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0)){case e.WAIT_FAILED:i();break;case e.TIMEOUT_EXPIRED:setTimeout(a,n);break;default:r()}}setTimeout(a,n)})}var zn={0:1,2:6,4:7,3:5,1:0,6:2,7:4,5:3},Bn=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){let n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){let n=this._listeners;if(n===void 0)return;let r=n[e];if(r!==void 0){let e=r.indexOf(t);e!==-1&&r.splice(e,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let n=t[e.type];if(n!==void 0){e.target=this;let t=n.slice(0);for(let n=0,r=t.length;n<r;n++)t[n].call(this,e);e.target=null}}},Vn=`00.01.02.03.04.05.06.07.08.09.0a.0b.0c.0d.0e.0f.10.11.12.13.14.15.16.17.18.19.1a.1b.1c.1d.1e.1f.20.21.22.23.24.25.26.27.28.29.2a.2b.2c.2d.2e.2f.30.31.32.33.34.35.36.37.38.39.3a.3b.3c.3d.3e.3f.40.41.42.43.44.45.46.47.48.49.4a.4b.4c.4d.4e.4f.50.51.52.53.54.55.56.57.58.59.5a.5b.5c.5d.5e.5f.60.61.62.63.64.65.66.67.68.69.6a.6b.6c.6d.6e.6f.70.71.72.73.74.75.76.77.78.79.7a.7b.7c.7d.7e.7f.80.81.82.83.84.85.86.87.88.89.8a.8b.8c.8d.8e.8f.90.91.92.93.94.95.96.97.98.99.9a.9b.9c.9d.9e.9f.a0.a1.a2.a3.a4.a5.a6.a7.a8.a9.aa.ab.ac.ad.ae.af.b0.b1.b2.b3.b4.b5.b6.b7.b8.b9.ba.bb.bc.bd.be.bf.c0.c1.c2.c3.c4.c5.c6.c7.c8.c9.ca.cb.cc.cd.ce.cf.d0.d1.d2.d3.d4.d5.d6.d7.d8.d9.da.db.dc.dd.de.df.e0.e1.e2.e3.e4.e5.e6.e7.e8.e9.ea.eb.ec.ed.ee.ef.f0.f1.f2.f3.f4.f5.f6.f7.f8.f9.fa.fb.fc.fd.fe.ff`.split(`.`),Hn=1234567,Un=Math.PI/180,Wn=180/Math.PI;function Gn(){let e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(Vn[e&255]+Vn[e>>8&255]+Vn[e>>16&255]+Vn[e>>24&255]+`-`+Vn[t&255]+Vn[t>>8&255]+`-`+Vn[t>>16&15|64]+Vn[t>>24&255]+`-`+Vn[n&63|128]+Vn[n>>8&255]+`-`+Vn[n>>16&255]+Vn[n>>24&255]+Vn[r&255]+Vn[r>>8&255]+Vn[r>>16&255]+Vn[r>>24&255]).toLowerCase()}function Kn(e,t,n){return Math.max(t,Math.min(n,e))}function qn(e,t){return(e%t+t)%t}function Jn(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function Yn(e,t,n){return e===t?0:(n-e)/(t-e)}function Xn(e,t,n){return(1-n)*e+n*t}function Zn(e,t,n,r){return Xn(e,t,1-Math.exp(-n*r))}function Qn(e,t=1){return t-Math.abs(qn(e,t*2)-t)}function $n(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function er(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function tr(e,t){return e+Math.floor(Math.random()*(t-e+1))}function nr(e,t){return e+Math.random()*(t-e)}function rr(e){return e*(.5-Math.random())}function ir(e){e!==void 0&&(Hn=e);let t=Hn+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function ar(e){return e*Un}function or(e){return e*Wn}function sr(e){return(e&e-1)==0&&e!==0}function cr(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function lr(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function ur(e,t,n,r,i){let a=Math.cos,o=Math.sin,s=a(n/2),c=o(n/2),l=a((t+r)/2),u=o((t+r)/2),d=a((t-r)/2),f=o((t-r)/2),p=a((r-t)/2),m=o((r-t)/2);switch(i){case`XYX`:e.set(s*u,c*d,c*f,s*l);break;case`YZY`:e.set(c*f,s*u,c*d,s*l);break;case`ZXZ`:e.set(c*d,c*f,s*u,s*l);break;case`XZX`:e.set(s*u,c*m,c*p,s*l);break;case`YXY`:e.set(c*p,s*u,c*m,s*l);break;case`ZYZ`:e.set(c*m,c*p,s*u,s*l);break;default:j(`MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function dr(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/4294967295;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/2147483647,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error(`Invalid component type.`)}}function fr(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(e*4294967295);case Uint16Array:return Math.round(e*65535);case Uint8Array:return Math.round(e*255);case Int32Array:return Math.round(e*2147483647);case Int16Array:return Math.round(e*32767);case Int8Array:return Math.round(e*127);default:throw Error(`Invalid component type.`)}}var pr={DEG2RAD:Un,RAD2DEG:Wn,generateUUID:Gn,clamp:Kn,euclideanModulo:qn,mapLinear:Jn,inverseLerp:Yn,lerp:Xn,damp:Zn,pingpong:Qn,smoothstep:$n,smootherstep:er,randInt:tr,randFloat:nr,randFloatSpread:rr,seededRandom:ir,degToRad:ar,radToDeg:or,isPowerOfTwo:sr,ceilPowerOfTwo:cr,floorPowerOfTwo:lr,setQuaternionFromProperEuler:ur,normalize:fr,denormalize:dr},N=class e{static{e.prototype.isVector2=!0}constructor(e=0,t=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 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 Error(`index is out of range: `+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,n=this.y,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=Kn(this.x,e.x,t.x),this.y=Kn(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Kn(this.x,e,t),this.y=Kn(this.y,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Kn(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Kn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),r=Math.sin(t),i=this.x-e.x,a=this.y-e.y;return this.x=i*n-a*r+e.x,this.y=i*r+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},mr=class{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,i,a,o){let s=n[r+0],c=n[r+1],l=n[r+2],u=n[r+3],d=i[a+0],f=i[a+1],p=i[a+2],m=i[a+3];if(u!==m||s!==d||c!==f||l!==p){let e=s*d+c*f+l*p+u*m;e<0&&(d=-d,f=-f,p=-p,m=-m,e=-e);let t=1-o;if(e<.9995){let n=Math.acos(e),r=Math.sin(n);t=Math.sin(t*n)/r,o=Math.sin(o*n)/r,s=s*t+d*o,c=c*t+f*o,l=l*t+p*o,u=u*t+m*o}else{s=s*t+d*o,c=c*t+f*o,l=l*t+p*o,u=u*t+m*o;let e=1/Math.sqrt(s*s+c*c+l*l+u*u);s*=e,c*=e,l*=e,u*=e}}e[t]=s,e[t+1]=c,e[t+2]=l,e[t+3]=u}static multiplyQuaternionsFlat(e,t,n,r,i,a){let o=n[r],s=n[r+1],c=n[r+2],l=n[r+3],u=i[a],d=i[a+1],f=i[a+2],p=i[a+3];return e[t]=o*p+l*u+s*f-c*d,e[t+1]=s*p+l*d+c*u-o*f,e[t+2]=c*p+l*f+o*d-s*u,e[t+3]=l*p-o*u-s*d-c*f,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){let n=e._x,r=e._y,i=e._z,a=e._order,o=Math.cos,s=Math.sin,c=o(n/2),l=o(r/2),u=o(i/2),d=s(n/2),f=s(r/2),p=s(i/2);switch(a){case`XYZ`:this._x=d*l*u+c*f*p,this._y=c*f*u-d*l*p,this._z=c*l*p+d*f*u,this._w=c*l*u-d*f*p;break;case`YXZ`:this._x=d*l*u+c*f*p,this._y=c*f*u-d*l*p,this._z=c*l*p-d*f*u,this._w=c*l*u+d*f*p;break;case`ZXY`:this._x=d*l*u-c*f*p,this._y=c*f*u+d*l*p,this._z=c*l*p+d*f*u,this._w=c*l*u-d*f*p;break;case`ZYX`:this._x=d*l*u-c*f*p,this._y=c*f*u+d*l*p,this._z=c*l*p-d*f*u,this._w=c*l*u+d*f*p;break;case`YZX`:this._x=d*l*u+c*f*p,this._y=c*f*u+d*l*p,this._z=c*l*p-d*f*u,this._w=c*l*u-d*f*p;break;case`XZY`:this._x=d*l*u-c*f*p,this._y=c*f*u-d*l*p,this._z=c*l*p+d*f*u,this._w=c*l*u+d*f*p;break;default:j(`Quaternion: .setFromEuler() encountered an unknown order: `+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let 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){let t=e.elements,n=t[0],r=t[4],i=t[8],a=t[1],o=t[5],s=t[9],c=t[2],l=t[6],u=t[10],d=n+o+u;if(d>0){let e=.5/Math.sqrt(d+1);this._w=.25/e,this._x=(l-s)*e,this._y=(i-c)*e,this._z=(a-r)*e}else if(n>o&&n>u){let e=2*Math.sqrt(1+n-o-u);this._w=(l-s)/e,this._x=.25*e,this._y=(r+a)/e,this._z=(i+c)/e}else if(o>u){let e=2*Math.sqrt(1+o-n-u);this._w=(i-c)/e,this._x=(r+a)/e,this._y=.25*e,this._z=(s+l)/e}else{let e=2*Math.sqrt(1+u-n-o);this._w=(a-r)/e,this._x=(i+c)/e,this._y=(s+l)/e,this._z=.25*e}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(Kn(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(n===0)return this;let 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*=e,this._y*=e,this._z*=e,this._w*=e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let n=e._x,r=e._y,i=e._z,a=e._w,o=t._x,s=t._y,c=t._z,l=t._w;return this._x=n*l+a*o+r*c-i*s,this._y=r*l+a*s+i*o-n*c,this._z=i*l+a*c+n*s-r*o,this._w=a*l-n*o-r*s-i*c,this._onChangeCallback(),this}slerp(e,t){let n=e._x,r=e._y,i=e._z,a=e._w,o=this.dot(e);o<0&&(n=-n,r=-r,i=-i,a=-a,o=-o);let s=1-t;if(o<.9995){let e=Math.acos(o),c=Math.sin(e);s=Math.sin(s*e)/c,t=Math.sin(t*e)/c,this._x=this._x*s+n*t,this._y=this._y*s+r*t,this._z=this._z*s+i*t,this._w=this._w*s+a*t,this._onChangeCallback()}else this._x=this._x*s+n*t,this._y=this._y*s+r*t,this._z=this._z*s+i*t,this._w=this._w*s+a*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),i=Math.sqrt(n);return this.set(r*Math.sin(e),r*Math.cos(e),i*Math.sin(t),i*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}},P=class e{static{e.prototype.isVector3=!0}constructor(e=0,t=0,n=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 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 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(gr.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(gr.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,r=this.z,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6]*r,this.y=i[1]*t+i[4]*n+i[7]*r,this.z=i[2]*t+i[5]*n+i[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,r=this.z,i=e.elements,a=1/(i[3]*t+i[7]*n+i[11]*r+i[15]);return this.x=(i[0]*t+i[4]*n+i[8]*r+i[12])*a,this.y=(i[1]*t+i[5]*n+i[9]*r+i[13])*a,this.z=(i[2]*t+i[6]*n+i[10]*r+i[14])*a,this}applyQuaternion(e){let t=this.x,n=this.y,r=this.z,i=e.x,a=e.y,o=e.z,s=e.w,c=2*(a*r-o*n),l=2*(o*t-i*r),u=2*(i*n-a*t);return this.x=t+s*c+a*u-o*l,this.y=n+s*l+o*c-i*u,this.z=r+s*u+i*l-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,r=this.z,i=e.elements;return this.x=i[0]*t+i[4]*n+i[8]*r,this.y=i[1]*t+i[5]*n+i[9]*r,this.z=i[2]*t+i[6]*n+i[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=Kn(this.x,e.x,t.x),this.y=Kn(this.y,e.y,t.y),this.z=Kn(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Kn(this.x,e,t),this.y=Kn(this.y,e,t),this.z=Kn(this.z,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Kn(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,r=e.y,i=e.z,a=t.x,o=t.y,s=t.z;return this.x=r*s-i*o,this.y=i*a-n*s,this.z=n*o-r*a,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return hr.copy(this).projectOnVector(e),this.sub(hr)}reflect(e){return this.sub(hr.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Kn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,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){let 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){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),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(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},hr=new P,gr=new mr,_r=class e{static{e.prototype.isMatrix3=!0}constructor(e,t,n,r,i,a,o,s,c){this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,r,i,a,o,s,c)}set(e,t,n,r,i,a,o,s,c){let l=this.elements;return l[0]=e,l[1]=r,l[2]=o,l[3]=t,l[4]=i,l[5]=s,l[6]=n,l[7]=a,l[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,r=t.elements,i=this.elements,a=n[0],o=n[3],s=n[6],c=n[1],l=n[4],u=n[7],d=n[2],f=n[5],p=n[8],m=r[0],h=r[3],g=r[6],_=r[1],v=r[4],y=r[7],b=r[2],x=r[5],S=r[8];return i[0]=a*m+o*_+s*b,i[3]=a*h+o*v+s*x,i[6]=a*g+o*y+s*S,i[1]=c*m+l*_+u*b,i[4]=c*h+l*v+u*x,i[7]=c*g+l*y+u*S,i[2]=d*m+f*_+p*b,i[5]=d*h+f*v+p*x,i[8]=d*g+f*y+p*S,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],o=e[5],s=e[6],c=e[7],l=e[8];return t*a*l-t*o*c-n*i*l+n*o*s+r*i*c-r*a*s}invert(){let e=this.elements,t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],o=e[5],s=e[6],c=e[7],l=e[8],u=l*a-o*c,d=o*s-l*i,f=c*i-a*s,p=t*u+n*d+r*f;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);let m=1/p;return e[0]=u*m,e[1]=(r*c-l*n)*m,e[2]=(o*n-r*a)*m,e[3]=d*m,e[4]=(l*t-r*s)*m,e[5]=(r*i-o*t)*m,e[6]=f*m,e[7]=(n*s-c*t)*m,e[8]=(a*t-n*i)*m,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,r,i,a,o){let s=Math.cos(i),c=Math.sin(i);return this.set(n*s,n*c,-n*(s*a+c*o)+a+e,-r*c,r*s,-r*(-c*a+s*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(vr.makeScale(e,t)),this}rotate(e){return this.premultiply(vr.makeRotation(-e)),this}translate(e,t){return this.premultiply(vr.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<9;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}},vr=new _r,yr=new _r().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),br=new _r().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function xr(){let e={enabled:!0,workingColorSpace:Zt,spaces:{},convert:function(e,t,n){return this.enabled===!1||t===n||!t||!n?e:(this.spaces[t].transfer===`srgb`&&(e.r=Cr(e.r),e.g=Cr(e.g),e.b=Cr(e.b)),this.spaces[t].primaries!==this.spaces[n].primaries&&(e.applyMatrix3(this.spaces[t].toXYZ),e.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===`srgb`&&(e.r=wr(e.r),e.g=wr(e.g),e.b=wr(e.b)),e)},workingToColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},colorSpaceToWorking:function(e,t){return this.convert(e,t,this.workingColorSpace)},getPrimaries:function(e){return this.spaces[e].primaries},getTransfer:function(e){return e===``?Qt:this.spaces[e].transfer},getToneMappingMode:function(e){return this.spaces[e].outputColorSpaceConfig.toneMappingMode||`standard`},getLuminanceCoefficients:function(e,t=this.workingColorSpace){return e.fromArray(this.spaces[t].luminanceCoefficients)},define:function(e){Object.assign(this.spaces,e)},_getMatrix:function(e,t,n){return e.copy(this.spaces[t].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(e){return this.spaces[e].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(e=this.workingColorSpace){return this.spaces[e].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(t,n){return In(`ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().`),e.workingToColorSpace(t,n)},toWorkingColorSpace:function(t,n){return In(`ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().`),e.colorSpaceToWorking(t,n)}},t=[.64,.33,.3,.6,.15,.06],n=[.2126,.7152,.0722],r=[.3127,.329];return e.define({[Zt]:{primaries:t,whitePoint:r,transfer:Qt,toXYZ:yr,fromXYZ:br,luminanceCoefficients:n,workingColorSpaceConfig:{unpackColorSpace:Xt},outputColorSpaceConfig:{drawingBufferColorSpace:Xt}},[Xt]:{primaries:t,whitePoint:r,transfer:$t,toXYZ:yr,fromXYZ:br,luminanceCoefficients:n,outputColorSpaceConfig:{drawingBufferColorSpace:Xt}}}),e}var Sr=xr();function Cr(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function wr(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}var Tr,Er=class{static getDataURL(e,t=`image/png`){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{Tr===void 0&&(Tr=On(`canvas`)),Tr.width=e.width,Tr.height=e.height;let t=Tr.getContext(`2d`);e instanceof ImageData?t.putImageData(e,0,0):t.drawImage(e,0,0,e.width,e.height),n=Tr}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=On(`canvas`);t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);n.drawImage(e,0,0,e.width,e.height);let r=n.getImageData(0,0,e.width,e.height),i=r.data;for(let e=0;e<i.length;e++)i[e]=Cr(i[e]/255)*255;return n.putImageData(r,0,0),t}else if(e.data){let t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(Cr(t[e]/255)*255):t[e]=Cr(t[e]);return{data:t,width:e.width,height:e.height}}else return j(`ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.`),e}},Dr=0,Or=class{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:Dr++}),this.uuid=Gn(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){let t=this.data;return typeof HTMLVideoElement<`u`&&t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight,0):typeof VideoFrame<`u`&&t instanceof VideoFrame?e.set(t.displayWidth,t.displayHeight,0):t===null?e.set(0,0,0):e.set(t.width,t.height,t.depth||0),e}set needsUpdate(e){e===!0&&this.version++}toJSON(e){let t=e===void 0||typeof e==`string`;if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];let n={uuid:this.uuid,url:``},r=this.data;if(r!==null){let e;if(Array.isArray(r)){e=[];for(let t=0,n=r.length;t<n;t++)r[t].isDataTexture?e.push(kr(r[t].image)):e.push(kr(r[t]))}else e=kr(r);n.url=e}return t||(e.images[this.uuid]=n),n}};function kr(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap?Er.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(j(`Texture: Unable to serialize Texture.`),{})}var Ar=0,jr=new P,Mr=class e extends Bn{constructor(t=e.DEFAULT_IMAGE,n=e.DEFAULT_MAPPING,r=ve,i=ve,a=Te,o=De,s=Ue,c=ke,l=e.DEFAULT_ANISOTROPY,u=``){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Ar++}),this.uuid=Gn(),this.name=``,this.source=new Or(t),this.mipmaps=[],this.mapping=n,this.channel=0,this.wrapS=r,this.wrapT=i,this.magFilter=a,this.minFilter=o,this.anisotropy=l,this.format=s,this.internalFormat=null,this.type=c,this.offset=new N(0,0),this.repeat=new N(1,1),this.center=new N(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new _r,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(t&&t.depth&&t.depth>1),this.pmremVersion=0,this.normalized=!1}get width(){return this.source.getSize(jr).x}get height(){return this.source.getSize(jr).y}get depth(){return this.source.getSize(jr).z}get image(){return this.source.data}set image(e){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.normalized=e.normalized,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(let t in e){let n=e[t];if(n===void 0){j(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){j(`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){let t=e===void 0||typeof e==`string`;if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];let 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,normalized:this.normalized,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!==300)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case _e:e.x-=Math.floor(e.x);break;case ve:e.x=e.x<0?0:1;break;case ye:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x-=Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case _e:e.y-=Math.floor(e.y);break;case ve:e.y=e.y<0?0:1;break;case ye:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(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++}};Mr.DEFAULT_IMAGE=null,Mr.DEFAULT_MAPPING=300,Mr.DEFAULT_ANISOTROPY=1;var Nr=class e{static{e.prototype.isVector4=!0}constructor(e=0,t=0,n=0,r=1){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 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 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?1:e.w,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,r=this.z,i=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r+a[12]*i,this.y=a[1]*t+a[5]*n+a[9]*r+a[13]*i,this.z=a[2]*t+a[6]*n+a[10]*r+a[14]*i,this.w=a[3]*t+a[7]*n+a[11]*r+a[15]*i,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,r,i,a=.01,o=.1,s=e.elements,c=s[0],l=s[4],u=s[8],d=s[1],f=s[5],p=s[9],m=s[2],h=s[6],g=s[10];if(Math.abs(l-d)<a&&Math.abs(u-m)<a&&Math.abs(p-h)<a){if(Math.abs(l+d)<o&&Math.abs(u+m)<o&&Math.abs(p+h)<o&&Math.abs(c+f+g-3)<o)return this.set(1,0,0,0),this;t=Math.PI;let e=(c+1)/2,s=(f+1)/2,_=(g+1)/2,v=(l+d)/4,y=(u+m)/4,b=(p+h)/4;return e>s&&e>_?e<a?(n=0,r=.707106781,i=.707106781):(n=Math.sqrt(e),r=v/n,i=y/n):s>_?s<a?(n=.707106781,r=0,i=.707106781):(r=Math.sqrt(s),n=v/r,i=b/r):_<a?(n=.707106781,r=.707106781,i=0):(i=Math.sqrt(_),n=y/i,r=b/i),this.set(n,r,i,t),this}let _=Math.sqrt((h-p)*(h-p)+(u-m)*(u-m)+(d-l)*(d-l));return Math.abs(_)<.001&&(_=1),this.x=(h-p)/_,this.y=(u-m)/_,this.z=(d-l)/_,this.w=Math.acos((c+f+g-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Kn(this.x,e.x,t.x),this.y=Kn(this.y,e.y,t.y),this.z=Kn(this.z,e.z,t.z),this.w=Kn(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Kn(this.x,e,t),this.y=Kn(this.y,e,t),this.z=Kn(this.z,e,t),this.w=Kn(this.w,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Kn(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}},Pr=class extends Bn{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Te,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 Nr(0,0,e,t),this.scissorTest=!1,this.viewport=new Nr(0,0,e,t),this.textures=[];let r=new Mr({width:e,height:t,depth:n.depth}),i=n.count;for(let e=0;e<i;e++)this.textures[e]=r.clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;this._setTextureOptions(n),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples,this.multiview=n.multiview}_setTextureOptions(e={}){let t={minFilter:Te,generateMipmaps:!1,flipY:!1,internalFormat:null};e.mapping!==void 0&&(t.mapping=e.mapping),e.wrapS!==void 0&&(t.wrapS=e.wrapS),e.wrapT!==void 0&&(t.wrapT=e.wrapT),e.wrapR!==void 0&&(t.wrapR=e.wrapR),e.magFilter!==void 0&&(t.magFilter=e.magFilter),e.minFilter!==void 0&&(t.minFilter=e.minFilter),e.format!==void 0&&(t.format=e.format),e.type!==void 0&&(t.type=e.type),e.anisotropy!==void 0&&(t.anisotropy=e.anisotropy),e.colorSpace!==void 0&&(t.colorSpace=e.colorSpace),e.flipY!==void 0&&(t.flipY=e.flipY),e.generateMipmaps!==void 0&&(t.generateMipmaps=e.generateMipmaps),e.internalFormat!==void 0&&(t.internalFormat=e.internalFormat);for(let e=0;e<this.textures.length;e++)this.textures[e].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let r=0,i=this.textures.length;r<i;r++)this.textures[r].image.width=e,this.textures[r].image.height=t,this.textures[r].image.depth=n,this.textures[r].isData3DTexture!==!0&&(this.textures[r].isArrayTexture=this.textures[r].image.depth>1);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<n;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;let n=Object.assign({},e.textures[t].image);this.textures[t].source=new Or(n)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this.multiview=e.multiview,this}dispose(){this.dispatchEvent({type:`dispose`})}},Fr=class extends Pr{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}},Ir=class extends Mr{constructor(e=null,t=1,n=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=be,this.minFilter=be,this.wrapR=ve,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Lr=class extends Fr{constructor(e=1,t=1,n=1,r={}){super(e,t,r),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new Ir(null,e,t,n),this._setTextureOptions(r),this.texture.isRenderTargetTexture=!0}},Rr=class extends Mr{constructor(e=null,t=1,n=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=be,this.minFilter=be,this.wrapR=ve,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},zr=class extends Fr{constructor(e=1,t=1,n=1,r={}){super(e,t,r),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new Rr(null,e,t,n),this._setTextureOptions(r),this.texture.isRenderTargetTexture=!0}},F=class e{static{e.prototype.isMatrix4=!0}constructor(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){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,i,a,o,s,c,l,u,d,f,p,m,h)}set(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){let g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=r,g[1]=i,g[5]=a,g[9]=o,g[13]=s,g[2]=c,g[6]=l,g[10]=u,g[14]=d,g[3]=f,g[7]=p,g[11]=m,g[15]=h,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 e().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return 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();let t=this.elements,n=e.elements,r=1/Br.setFromMatrixColumn(e,0).length(),i=1/Br.setFromMatrixColumn(e,1).length(),a=1/Br.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]*i,t[5]=n[5]*i,t[6]=n[6]*i,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,n=e.x,r=e.y,i=e.z,a=Math.cos(n),o=Math.sin(n),s=Math.cos(r),c=Math.sin(r),l=Math.cos(i),u=Math.sin(i);if(e.order===`XYZ`){let e=a*l,n=a*u,r=o*l,i=o*u;t[0]=s*l,t[4]=-s*u,t[8]=c,t[1]=n+r*c,t[5]=e-i*c,t[9]=-o*s,t[2]=i-e*c,t[6]=r+n*c,t[10]=a*s}else if(e.order===`YXZ`){let e=s*l,n=s*u,r=c*l,i=c*u;t[0]=e+i*o,t[4]=r*o-n,t[8]=a*c,t[1]=a*u,t[5]=a*l,t[9]=-o,t[2]=n*o-r,t[6]=i+e*o,t[10]=a*s}else if(e.order===`ZXY`){let e=s*l,n=s*u,r=c*l,i=c*u;t[0]=e-i*o,t[4]=-a*u,t[8]=r+n*o,t[1]=n+r*o,t[5]=a*l,t[9]=i-e*o,t[2]=-a*c,t[6]=o,t[10]=a*s}else if(e.order===`ZYX`){let e=a*l,n=a*u,r=o*l,i=o*u;t[0]=s*l,t[4]=r*c-n,t[8]=e*c+i,t[1]=s*u,t[5]=i*c+e,t[9]=n*c-r,t[2]=-c,t[6]=o*s,t[10]=a*s}else if(e.order===`YZX`){let e=a*s,n=a*c,r=o*s,i=o*c;t[0]=s*l,t[4]=i-e*u,t[8]=r*u+n,t[1]=u,t[5]=a*l,t[9]=-o*l,t[2]=-c*l,t[6]=n*u+r,t[10]=e-i*u}else if(e.order===`XZY`){let e=a*s,n=a*c,r=o*s,i=o*c;t[0]=s*l,t[4]=-u,t[8]=c*l,t[1]=e*u+i,t[5]=a*l,t[9]=n*u-r,t[2]=r*u-n,t[6]=o*l,t[10]=i*u+e}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(Hr,e,Ur)}lookAt(e,t,n){let r=this.elements;return Kr.subVectors(e,t),Kr.lengthSq()===0&&(Kr.z=1),Kr.normalize(),Wr.crossVectors(n,Kr),Wr.lengthSq()===0&&(Math.abs(n.z)===1?Kr.x+=1e-4:Kr.z+=1e-4,Kr.normalize(),Wr.crossVectors(n,Kr)),Wr.normalize(),Gr.crossVectors(Kr,Wr),r[0]=Wr.x,r[4]=Gr.x,r[8]=Kr.x,r[1]=Wr.y,r[5]=Gr.y,r[9]=Kr.y,r[2]=Wr.z,r[6]=Gr.z,r[10]=Kr.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,r=t.elements,i=this.elements,a=n[0],o=n[4],s=n[8],c=n[12],l=n[1],u=n[5],d=n[9],f=n[13],p=n[2],m=n[6],h=n[10],g=n[14],_=n[3],v=n[7],y=n[11],b=n[15],x=r[0],S=r[4],C=r[8],w=r[12],T=r[1],E=r[5],D=r[9],O=r[13],ee=r[2],te=r[6],ne=r[10],re=r[14],ie=r[3],ae=r[7],oe=r[11],se=r[15];return i[0]=a*x+o*T+s*ee+c*ie,i[4]=a*S+o*E+s*te+c*ae,i[8]=a*C+o*D+s*ne+c*oe,i[12]=a*w+o*O+s*re+c*se,i[1]=l*x+u*T+d*ee+f*ie,i[5]=l*S+u*E+d*te+f*ae,i[9]=l*C+u*D+d*ne+f*oe,i[13]=l*w+u*O+d*re+f*se,i[2]=p*x+m*T+h*ee+g*ie,i[6]=p*S+m*E+h*te+g*ae,i[10]=p*C+m*D+h*ne+g*oe,i[14]=p*w+m*O+h*re+g*se,i[3]=_*x+v*T+y*ee+b*ie,i[7]=_*S+v*E+y*te+b*ae,i[11]=_*C+v*D+y*ne+b*oe,i[15]=_*w+v*O+y*re+b*se,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],r=e[8],i=e[12],a=e[1],o=e[5],s=e[9],c=e[13],l=e[2],u=e[6],d=e[10],f=e[14],p=e[3],m=e[7],h=e[11],g=e[15],_=s*f-c*d,v=o*f-c*u,y=o*d-s*u,b=a*f-c*l,x=a*d-s*l,S=a*u-o*l;return t*(m*_-h*v+g*y)-n*(p*_-h*b+g*x)+r*(p*v-m*b+g*S)-i*(p*y-m*x+h*S)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){let 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(){let e=this.elements,t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],o=e[5],s=e[6],c=e[7],l=e[8],u=e[9],d=e[10],f=e[11],p=e[12],m=e[13],h=e[14],g=e[15],_=t*o-n*a,v=t*s-r*a,y=t*c-i*a,b=n*s-r*o,x=n*c-i*o,S=r*c-i*s,C=l*m-u*p,w=l*h-d*p,T=l*g-f*p,E=u*h-d*m,D=u*g-f*m,O=d*g-f*h,ee=_*O-v*D+y*E+b*T-x*w+S*C;if(ee===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let te=1/ee;return e[0]=(o*O-s*D+c*E)*te,e[1]=(r*D-n*O-i*E)*te,e[2]=(m*S-h*x+g*b)*te,e[3]=(d*x-u*S-f*b)*te,e[4]=(s*T-a*O-c*w)*te,e[5]=(t*O-r*T+i*w)*te,e[6]=(h*y-p*S-g*v)*te,e[7]=(l*S-d*y+f*v)*te,e[8]=(a*D-o*T+c*C)*te,e[9]=(n*T-t*D-i*C)*te,e[10]=(p*x-m*y+g*_)*te,e[11]=(u*y-l*x-f*_)*te,e[12]=(o*w-a*E-s*C)*te,e[13]=(t*E-n*w+r*C)*te,e[14]=(m*v-p*b-h*_)*te,e[15]=(l*b-u*v+d*_)*te,this}scale(e){let t=this.elements,n=e.x,r=e.y,i=e.z;return t[0]*=n,t[4]*=r,t[8]*=i,t[1]*=n,t[5]*=r,t[9]*=i,t[2]*=n,t[6]*=r,t[10]*=i,t[3]*=n,t[7]*=r,t[11]*=i,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],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){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),r=Math.sin(t),i=1-n,a=e.x,o=e.y,s=e.z,c=i*a,l=i*o;return this.set(c*a+n,c*o-r*s,c*s+r*o,0,c*o+r*s,l*o+n,l*s-r*a,0,c*s-r*o,l*s+r*a,i*s*s+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,i,a){return this.set(1,n,i,0,e,1,a,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){let r=this.elements,i=t._x,a=t._y,o=t._z,s=t._w,c=i+i,l=a+a,u=o+o,d=i*c,f=i*l,p=i*u,m=a*l,h=a*u,g=o*u,_=s*c,v=s*l,y=s*u,b=n.x,x=n.y,S=n.z;return r[0]=(1-(m+g))*b,r[1]=(f+y)*b,r[2]=(p-v)*b,r[3]=0,r[4]=(f-y)*x,r[5]=(1-(d+g))*x,r[6]=(h+_)*x,r[7]=0,r[8]=(p+v)*S,r[9]=(h-_)*S,r[10]=(1-(d+m))*S,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){let r=this.elements;e.x=r[12],e.y=r[13],e.z=r[14];let i=this.determinant();if(i===0)return n.set(1,1,1),t.identity(),this;let a=Br.set(r[0],r[1],r[2]).length(),o=Br.set(r[4],r[5],r[6]).length(),s=Br.set(r[8],r[9],r[10]).length();i<0&&(a=-a),Vr.copy(this);let c=1/a,l=1/o,u=1/s;return Vr.elements[0]*=c,Vr.elements[1]*=c,Vr.elements[2]*=c,Vr.elements[4]*=l,Vr.elements[5]*=l,Vr.elements[6]*=l,Vr.elements[8]*=u,Vr.elements[9]*=u,Vr.elements[10]*=u,t.setFromRotationMatrix(Vr),n.x=a,n.y=o,n.z=s,this}makePerspective(e,t,n,r,i,a,o=vn,s=!1){let c=this.elements,l=2*i/(t-e),u=2*i/(n-r),d=(t+e)/(t-e),f=(n+r)/(n-r),p,m;if(s)p=i/(a-i),m=a*i/(a-i);else if(o===2e3)p=-(a+i)/(a-i),m=-2*a*i/(a-i);else if(o===2001)p=-a/(a-i),m=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return c[0]=l,c[4]=0,c[8]=d,c[12]=0,c[1]=0,c[5]=u,c[9]=f,c[13]=0,c[2]=0,c[6]=0,c[10]=p,c[14]=m,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=vn,s=!1){let c=this.elements,l=2/(t-e),u=2/(n-r),d=-(t+e)/(t-e),f=-(n+r)/(n-r),p,m;if(s)p=1/(a-i),m=a/(a-i);else if(o===2e3)p=-2/(a-i),m=-(a+i)/(a-i);else if(o===2001)p=-1/(a-i),m=-i/(a-i);else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return c[0]=l,c[4]=0,c[8]=0,c[12]=d,c[1]=0,c[5]=u,c[9]=0,c[13]=f,c[2]=0,c[6]=0,c[10]=p,c[14]=m,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<16;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}},Br=new P,Vr=new F,Hr=new P(0,0,0),Ur=new P(1,1,1),Wr=new P,Gr=new P,Kr=new P,qr=new F,Jr=new mr,Yr=class e{constructor(t=0,n=0,r=0,i=e.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=n,this._z=r,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,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){let r=e.elements,i=r[0],a=r[4],o=r[8],s=r[1],c=r[5],l=r[9],u=r[2],d=r[6],f=r[10];switch(t){case`XYZ`:this._y=Math.asin(Kn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-l,f),this._z=Math.atan2(-a,i)):(this._x=Math.atan2(d,c),this._z=0);break;case`YXZ`:this._x=Math.asin(-Kn(l,-1,1)),Math.abs(l)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(s,c)):(this._y=Math.atan2(-u,i),this._z=0);break;case`ZXY`:this._x=Math.asin(Kn(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(s,i));break;case`ZYX`:this._y=Math.asin(-Kn(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,f),this._z=Math.atan2(s,i)):(this._x=0,this._z=Math.atan2(-a,c));break;case`YZX`:this._z=Math.asin(Kn(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-l,c),this._y=Math.atan2(-u,i)):(this._x=0,this._y=Math.atan2(o,f));break;case`XZY`:this._z=Math.asin(-Kn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(o,i)):(this._x=Math.atan2(-l,f),this._y=0);break;default:j(`Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return qr.makeRotationFromQuaternion(e),this.setFromRotationMatrix(qr,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Jr.setFromEuler(this),this.setFromQuaternion(Jr,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}};Yr.DEFAULT_ORDER=`XYZ`;var Xr=class{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!=0}},Zr=0,Qr=new P,$r=new mr,ei=new F,ti=new P,ni=new P,ri=new P,ii=new mr,ai=new P(1,0,0),oi=new P(0,1,0),si=new P(0,0,1),ci={type:`added`},li={type:`removed`},ui={type:`childadded`,child:null},di={type:`childremoved`,child:null},fi=class e extends Bn{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Zr++}),this.uuid=Gn(),this.name=``,this.type=`Object3D`,this.parent=null,this.children=[],this.up=e.DEFAULT_UP.clone();let t=new P,n=new Yr,r=new mr,i=new P(1,1,1);function a(){r.setFromEuler(n,!1)}function o(){n.setFromQuaternion(r,void 0,!1)}n._onChange(a),r._onChange(o),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:n},quaternion:{configurable:!0,enumerable:!0,value:r},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new F},normalMatrix:{value:new _r}}),this.matrix=new F,this.matrixWorld=new F,this.matrixAutoUpdate=e.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=e.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new Xr,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.static=!1,this.userData={},this.pivot=null}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return $r.setFromAxisAngle(e,t),this.quaternion.multiply($r),this}rotateOnWorldAxis(e,t){return $r.setFromAxisAngle(e,t),this.quaternion.premultiply($r),this}rotateX(e){return this.rotateOnAxis(ai,e)}rotateY(e){return this.rotateOnAxis(oi,e)}rotateZ(e){return this.rotateOnAxis(si,e)}translateOnAxis(e,t){return Qr.copy(e).applyQuaternion(this.quaternion),this.position.add(Qr.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(ai,e)}translateY(e){return this.translateOnAxis(oi,e)}translateZ(e){return this.translateOnAxis(si,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(ei.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?ti.copy(e):ti.set(e,t,n);let r=this.parent;this.updateWorldMatrix(!0,!1),ni.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?ei.lookAt(ni,ti,this.up):ei.lookAt(ti,ni,this.up),this.quaternion.setFromRotationMatrix(ei),r&&(ei.extractRotation(r.matrixWorld),$r.setFromRotationMatrix(ei),this.quaternion.premultiply($r.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?(M(`Object3D.add: object can't be added as a child of itself.`,e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(ci),ui.child=e,this.dispatchEvent(ui),ui.child=null):M(`Object3D.add: object not an instance of THREE.Object3D.`,e),this)}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}let t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(li),di.child=e,this.dispatchEvent(di),di.child=null),this}removeFromParent(){let e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),ei.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),ei.multiply(e.parent.matrixWorld)),e.applyMatrix4(ei),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(ci),ui.child=e,this.dispatchEvent(ui),ui.child=null,this}getObjectById(e){return this.getObjectByProperty(`id`,e)}getObjectByName(e){return this.getObjectByProperty(`name`,e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,r=this.children.length;n<r;n++){let r=this.children[n].getObjectByProperty(e,t);if(r!==void 0)return r}}getObjectsByProperty(e,t,n=[]){this[e]===t&&n.push(this);let r=this.children;for(let i=0,a=r.length;i<a;i++)r[i].getObjectsByProperty(e,t,n);return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ni,e,ri),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ni,ii,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);let t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverseVisible(e)}traverseAncestors(e){let t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale);let e=this.pivot;if(e!==null){let t=e.x,n=e.y,r=e.z,i=this.matrix.elements;i[12]+=t-i[0]*t-i[4]*n-i[8]*r,i[13]+=n-i[1]*t-i[5]*n-i[9]*r,i[14]+=r-i[2]*t-i[6]*n-i[10]*r}this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);let t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){let n=this.parent;if(e===!0&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){let e=this.children;for(let t=0,n=e.length;t<n;t++)e[t].updateWorldMatrix(!1,!0)}}toJSON(e){let t=e===void 0||typeof e==`string`,n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.7,type:`Object`,generator:`Object3D.toJSON`});let r={};r.uuid=this.uuid,r.type=this.type,this.name!==``&&(r.name=this.name),this.castShadow===!0&&(r.castShadow=!0),this.receiveShadow===!0&&(r.receiveShadow=!0),this.visible===!1&&(r.visible=!1),this.frustumCulled===!1&&(r.frustumCulled=!1),this.renderOrder!==0&&(r.renderOrder=this.renderOrder),this.static!==!1&&(r.static=this.static),Object.keys(this.userData).length>0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.pivot!==null&&(r.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(r.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(r.morphTargetInfluences=this.morphTargetInfluences.slice()),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(e=>({...e,boundingBox:e.boundingBox?e.boundingBox.toJSON():void 0,boundingSphere:e.boundingSphere?e.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(e=>({...e})),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 i(t,n){return t[n.uuid]===void 0&&(t[n.uuid]=n.toJSON(e)),n.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=i(e.geometries,this.geometry);let t=this.geometry.parameters;if(t!==void 0&&t.shapes!==void 0){let n=t.shapes;if(Array.isArray(n))for(let t=0,r=n.length;t<r;t++){let r=n[t];i(e.shapes,r)}else i(e.shapes,n)}}if(this.isSkinnedMesh&&(r.bindMode=this.bindMode,r.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(i(e.skeletons,this.skeleton),r.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){let t=[];for(let n=0,r=this.material.length;n<r;n++)t.push(i(e.materials,this.material[n]));r.material=t}else r.material=i(e.materials,this.material);if(this.children.length>0){r.children=[];for(let t=0;t<this.children.length;t++)r.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){r.animations=[];for(let t=0;t<this.animations.length;t++){let n=this.animations[t];r.animations.push(i(e.animations,n))}}if(t){let t=a(e.geometries),r=a(e.materials),i=a(e.textures),o=a(e.images),s=a(e.shapes),c=a(e.skeletons),l=a(e.animations),u=a(e.nodes);t.length>0&&(n.geometries=t),r.length>0&&(n.materials=r),i.length>0&&(n.textures=i),o.length>0&&(n.images=o),s.length>0&&(n.shapes=s),c.length>0&&(n.skeletons=c),l.length>0&&(n.animations=l),u.length>0&&(n.nodes=u)}return n.object=r,n;function a(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}}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.pivot=e.pivot===null?null:e.pivot.clone(),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.static=e.static,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t<e.children.length;t++){let n=e.children[t];this.add(n.clone())}return this}};fi.DEFAULT_UP=new P(0,1,0),fi.DEFAULT_MATRIX_AUTO_UPDATE=!0,fi.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;var pi=class extends fi{constructor(){super(),this.isGroup=!0,this.type=`Group`}},mi={type:`move`},hi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new pi,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 pi,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new P,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new P),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new pi,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new P,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new P,this._grip.eventsEnabled=!1),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){let t=this._hand;if(t)for(let n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:`connected`,data:e}),this}disconnect(e){return this.dispatchEvent({type:`disconnected`,data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,i=null,a=null,o=this._targetRay,s=this._grip,c=this._hand;if(e&&t.session.visibilityState!==`visible-blurred`){if(c&&e.hand){a=!0;for(let r of e.hand.values()){let e=t.getJointPose(r,n),i=this._getHandJoint(c,r);e!==null&&(i.matrix.fromArray(e.transform.matrix),i.matrix.decompose(i.position,i.rotation,i.scale),i.matrixWorldNeedsUpdate=!0,i.jointRadius=e.radius),i.visible=e!==null}let r=c.joints[`index-finger-tip`],i=c.joints[`thumb-tip`],o=r.position.distanceTo(i.position);c.inputState.pinching&&o>.025?(c.inputState.pinching=!1,this.dispatchEvent({type:`pinchend`,handedness:e.handedness,target:this})):!c.inputState.pinching&&o<=.015&&(c.inputState.pinching=!0,this.dispatchEvent({type:`pinchstart`,handedness:e.handedness,target:this}))}else s!==null&&e.gripSpace&&(i=t.getPose(e.gripSpace,n),i!==null&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,s.eventsEnabled&&s.dispatchEvent({type:`gripUpdated`,data:e,target:this})));o!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&i!==null&&(r=i),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(mi)))}return o!==null&&(o.visible=r!==null),s!==null&&(s.visible=i!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let n=new pi;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}},gi={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},_i={h:0,s:0,l:0},vi={h:0,s:0,l:0};function yi(e,t,n){return n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*6*(2/3-n):e}var I=class{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){let t=e;t&&t.isColor?this.copy(t):typeof t==`number`?this.setHex(t):typeof t==`string`&&this.setStyle(t)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Xt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Sr.colorSpaceToWorking(this,t),this}setRGB(e,t,n,r=Sr.workingColorSpace){return this.r=e,this.g=t,this.b=n,Sr.colorSpaceToWorking(this,r),this}setHSL(e,t,n,r=Sr.workingColorSpace){if(e=qn(e,1),t=Kn(t,0,1),n=Kn(n,0,1),t===0)this.r=this.g=this.b=n;else{let r=n<=.5?n*(1+t):n+t-n*t,i=2*n-r;this.r=yi(i,r,e+1/3),this.g=yi(i,r,e),this.b=yi(i,r,e-1/3)}return Sr.colorSpaceToWorking(this,r),this}setStyle(e,t=Xt){function n(t){t!==void 0&&parseFloat(t)<1&&j(`Color: Alpha component of `+e+` will be ignored.`)}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let i,a=r[1],o=r[2];switch(a){case`rgb`:case`rgba`:if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(i[4]),this.setRGB(Math.min(255,parseInt(i[1],10))/255,Math.min(255,parseInt(i[2],10))/255,Math.min(255,parseInt(i[3],10))/255,t);if(i=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(i[4]),this.setRGB(Math.min(100,parseInt(i[1],10))/100,Math.min(100,parseInt(i[2],10))/100,Math.min(100,parseInt(i[3],10))/100,t);break;case`hsl`:case`hsla`:if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(i[4]),this.setHSL(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,t);break;default:j(`Color: Unknown color model `+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let n=r[1],i=n.length;if(i===3)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,t);if(i===6)return this.setHex(parseInt(n,16),t);j(`Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Xt){let n=gi[e.toLowerCase()];return n===void 0?j(`Color: Unknown color `+e):this.setHex(n,t),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=Cr(e.r),this.g=Cr(e.g),this.b=Cr(e.b),this}copyLinearToSRGB(e){return this.r=wr(e.r),this.g=wr(e.g),this.b=wr(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Xt){return Sr.workingToColorSpace(bi.copy(this),e),Math.round(Kn(bi.r*255,0,255))*65536+Math.round(Kn(bi.g*255,0,255))*256+Math.round(Kn(bi.b*255,0,255))}getHexString(e=Xt){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Sr.workingColorSpace){Sr.workingToColorSpace(bi.copy(this),t);let n=bi.r,r=bi.g,i=bi.b,a=Math.max(n,r,i),o=Math.min(n,r,i),s,c,l=(o+a)/2;if(o===a)s=0,c=0;else{let e=a-o;switch(c=l<=.5?e/(a+o):e/(2-a-o),a){case n:s=(r-i)/e+(r<i?6:0);break;case r:s=(i-n)/e+2;break;case i:s=(n-r)/e+4;break}s/=6}return e.h=s,e.s=c,e.l=l,e}getRGB(e,t=Sr.workingColorSpace){return Sr.workingToColorSpace(bi.copy(this),t),e.r=bi.r,e.g=bi.g,e.b=bi.b,e}getStyle(e=Xt){Sr.workingToColorSpace(bi.copy(this),e);let t=bi.r,n=bi.g,r=bi.b;return e===`srgb`?`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(r*255)})`:`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})`}offsetHSL(e,t,n){return this.getHSL(_i),this.setHSL(_i.h+e,_i.s+t,_i.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(_i),e.getHSL(vi);let n=Xn(_i.h,vi.h,t),r=Xn(_i.s,vi.s,t),i=Xn(_i.l,vi.l,t);return this.setHSL(n,r,i),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){let t=this.r,n=this.g,r=this.b,i=e.elements;return this.r=i[0]*t+i[3]*n+i[6]*r,this.g=i[1]*t+i[4]*n+i[7]*r,this.b=i[2]*t+i[5]*n+i[8]*r,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}},bi=new I;I.NAMES=gi;var xi=class e{constructor(e,t=25e-5){this.isFogExp2=!0,this.name=``,this.color=new I(e),this.density=t}clone(){return new e(this.color,this.density)}toJSON(){return{type:`FogExp2`,name:this.name,color:this.color.getHex(),density:this.density}}},Si=class e{constructor(e,t=1,n=1e3){this.isFog=!0,this.name=``,this.color=new I(e),this.near=t,this.far=n}clone(){return new e(this.color,this.near,this.far)}toJSON(){return{type:`Fog`,name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}},Ci=class extends fi{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 Yr,this.environmentIntensity=1,this.environmentRotation=new Yr,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}},wi=new P,Ti=new P,Ei=new P,Di=new P,Oi=new P,ki=new P,Ai=new P,ji=new P,Mi=new P,Ni=new P,Pi=new Nr,Fi=new Nr,Ii=new Nr,Li=class e{constructor(e=new P,t=new P,n=new P){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,r){r.subVectors(n,t),wi.subVectors(e,t),r.cross(wi);let i=r.lengthSq();return i>0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){wi.subVectors(r,t),Ti.subVectors(n,t),Ei.subVectors(e,t);let a=wi.dot(wi),o=wi.dot(Ti),s=wi.dot(Ei),c=Ti.dot(Ti),l=Ti.dot(Ei),u=a*c-o*o;if(u===0)return i.set(0,0,0),null;let d=1/u,f=(c*s-o*l)*d,p=(a*l-o*s)*d;return i.set(1-f-p,p,f)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,Di)===null?!1:Di.x>=0&&Di.y>=0&&Di.x+Di.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,Di)===null?(s.x=0,s.y=0,`z`in s&&(s.z=0),`w`in s&&(s.w=0),null):(s.setScalar(0),s.addScaledVector(i,Di.x),s.addScaledVector(a,Di.y),s.addScaledVector(o,Di.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return Pi.setScalar(0),Fi.setScalar(0),Ii.setScalar(0),Pi.fromBufferAttribute(e,t),Fi.fromBufferAttribute(e,n),Ii.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(Pi,i.x),a.addScaledVector(Fi,i.y),a.addScaledVector(Ii,i.z),a}static isFrontFacing(e,t,n,r){return wi.subVectors(n,t),Ti.subVectors(e,t),wi.cross(Ti).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 wi.subVectors(this.c,this.b),Ti.subVectors(this.a,this.b),wi.cross(Ti).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return e.getNormal(this.a,this.b,this.c,t)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,n){return e.getBarycoord(t,this.a,this.b,this.c,n)}getInterpolation(t,n,r,i,a){return e.getInterpolation(t,this.a,this.b,this.c,n,r,i,a)}containsPoint(t){return e.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return e.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n=this.a,r=this.b,i=this.c,a,o;Oi.subVectors(r,n),ki.subVectors(i,n),ji.subVectors(e,n);let s=Oi.dot(ji),c=ki.dot(ji);if(s<=0&&c<=0)return t.copy(n);Mi.subVectors(e,r);let l=Oi.dot(Mi),u=ki.dot(Mi);if(l>=0&&u<=l)return t.copy(r);let d=s*u-l*c;if(d<=0&&s>=0&&l<=0)return a=s/(s-l),t.copy(n).addScaledVector(Oi,a);Ni.subVectors(e,i);let f=Oi.dot(Ni),p=ki.dot(Ni);if(p>=0&&f<=p)return t.copy(i);let m=f*c-s*p;if(m<=0&&c>=0&&p<=0)return o=c/(c-p),t.copy(n).addScaledVector(ki,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return Ai.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector(Ai,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(Oi,a).addScaledVector(ki,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},Ri=class{constructor(e=new P(1/0,1/0,1/0),t=new P(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t+=3)this.expandByPoint(Bi.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(Bi.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let n=Bi.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);let n=e.geometry;if(n!==void 0){let r=n.getAttribute(`position`);if(t===!0&&r!==void 0&&e.isInstancedMesh!==!0)for(let t=0,n=r.count;t<n;t++)e.isMesh===!0?e.getVertexPosition(t,Bi):Bi.fromBufferAttribute(r,t),Bi.applyMatrix4(e.matrixWorld),this.expandByPoint(Bi);else e.boundingBox===void 0?(n.boundingBox===null&&n.computeBoundingBox(),Vi.copy(n.boundingBox)):(e.boundingBox===null&&e.computeBoundingBox(),Vi.copy(e.boundingBox)),Vi.applyMatrix4(e.matrixWorld),this.union(Vi)}let r=e.children;for(let e=0,n=r.length;e<n;e++)this.expandByObject(r[e],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,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,Bi),Bi.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(Ji),Yi.subVectors(this.max,Ji),Hi.subVectors(e.a,Ji),Ui.subVectors(e.b,Ji),Wi.subVectors(e.c,Ji),Gi.subVectors(Ui,Hi),Ki.subVectors(Wi,Ui),qi.subVectors(Hi,Wi);let t=[0,-Gi.z,Gi.y,0,-Ki.z,Ki.y,0,-qi.z,qi.y,Gi.z,0,-Gi.x,Ki.z,0,-Ki.x,qi.z,0,-qi.x,-Gi.y,Gi.x,0,-Ki.y,Ki.x,0,-qi.y,qi.x,0];return!Qi(t,Hi,Ui,Wi,Yi)||(t=[1,0,0,0,1,0,0,0,1],!Qi(t,Hi,Ui,Wi,Yi))?!1:(Xi.crossVectors(Gi,Ki),t=[Xi.x,Xi.y,Xi.z],Qi(t,Hi,Ui,Wi,Yi))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Bi).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Bi).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:(zi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),zi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),zi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),zi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),zi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),zi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),zi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),zi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(zi),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}},zi=[new P,new P,new P,new P,new P,new P,new P,new P],Bi=new P,Vi=new Ri,Hi=new P,Ui=new P,Wi=new P,Gi=new P,Ki=new P,qi=new P,Ji=new P,Yi=new P,Xi=new P,Zi=new P;function Qi(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){Zi.fromArray(e,a);let o=i.x*Math.abs(Zi.x)+i.y*Math.abs(Zi.y)+i.z*Math.abs(Zi.z),s=t.dot(Zi),c=n.dot(Zi),l=r.dot(Zi);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}var $i=ea();function ea(){let e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),r=new Uint32Array(512),i=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(r[e]=0,r[e|256]=32768,i[e]=24,i[e|256]=24):t<-14?(r[e]=1024>>-t-14,r[e|256]=1024>>-t-14|32768,i[e]=-t-1,i[e|256]=-t-1):t<=15?(r[e]=t+15<<10,r[e|256]=t+15<<10|32768,i[e]=13,i[e|256]=13):t<128?(r[e]=31744,r[e|256]=64512,i[e]=24,i[e|256]=24):(r[e]=31744,r[e|256]=64512,i[e]=13,i[e|256]=13)}let a=new Uint32Array(2048),o=new Uint32Array(64),s=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;!(t&8388608);)t<<=1,n-=8388608;t&=-8388609,n+=947912704,a[e]=t|n}for(let e=1024;e<2048;++e)a[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)o[e]=e<<23;o[31]=1199570944,o[32]=2147483648;for(let e=33;e<63;++e)o[e]=2147483648+(e-32<<23);o[63]=3347054592;for(let e=1;e<64;++e)e!==32&&(s[e]=1024);return{floatView:t,uint32View:n,baseTable:r,shiftTable:i,mantissaTable:a,exponentTable:o,offsetTable:s}}function ta(e){Math.abs(e)>65504&&j(`DataUtils.toHalfFloat(): Value out of range.`),e=Kn(e,-65504,65504),$i.floatView[0]=e;let t=$i.uint32View[0],n=t>>23&511;return $i.baseTable[n]+((t&8388607)>>$i.shiftTable[n])}function na(e){let t=e>>10;return $i.uint32View[0]=$i.mantissaTable[$i.offsetTable[t]+(e&1023)]+$i.exponentTable[t],$i.floatView[0]}var ra=class{static toHalfFloat(e){return ta(e)}static fromHalfFloat(e){return na(e)}},ia=new P,aa=new N,oa=0,sa=class extends Bn{constructor(e,t,n=!1){if(super(),Array.isArray(e))throw TypeError(`THREE.BufferAttribute: array should be a Typed Array.`);this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:oa++}),this.name=``,this.array=e,this.itemSize=t,this.count=e===void 0?0:e.length/t,this.normalized=n,this.usage=cn,this.updateRanges=[],this.gpuType=Pe,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,i=this.itemSize;r<i;r++)this.array[e+r]=t.array[n+r];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)aa.fromBufferAttribute(this,t),aa.applyMatrix3(e),this.setXY(t,aa.x,aa.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.applyMatrix3(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.applyMatrix4(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.applyNormalMatrix(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.transformDirection(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=dr(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=fr(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=dr(t,this.array)),t}setX(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=dr(t,this.array)),t}setY(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=dr(t,this.array)),t}setZ(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=dr(t,this.array)),t}setW(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,r){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this}setXYZW(e,t,n,r,i){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array),i=fr(i,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this.array[e+3]=i,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==``&&(e.name=this.name),this.usage!==35044&&(e.usage=this.usage),e}dispose(){this.dispatchEvent({type:`dispose`})}},ca=class extends sa{constructor(e,t,n){super(new Int8Array(e),t,n)}},la=class extends sa{constructor(e,t,n){super(new Uint8Array(e),t,n)}},ua=class extends sa{constructor(e,t,n){super(new Uint8ClampedArray(e),t,n)}},da=class extends sa{constructor(e,t,n){super(new Int16Array(e),t,n)}},fa=class extends sa{constructor(e,t,n){super(new Uint16Array(e),t,n)}},pa=class extends sa{constructor(e,t,n){super(new Int32Array(e),t,n)}},ma=class extends sa{constructor(e,t,n){super(new Uint32Array(e),t,n)}},ha=class extends sa{constructor(e,t,n){super(new Uint16Array(e),t,n),this.isFloat16BufferAttribute=!0}getX(e){let t=na(this.array[e*this.itemSize]);return this.normalized&&(t=dr(t,this.array)),t}setX(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize]=ta(t),this}getY(e){let t=na(this.array[e*this.itemSize+1]);return this.normalized&&(t=dr(t,this.array)),t}setY(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+1]=ta(t),this}getZ(e){let t=na(this.array[e*this.itemSize+2]);return this.normalized&&(t=dr(t,this.array)),t}setZ(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+2]=ta(t),this}getW(e){let t=na(this.array[e*this.itemSize+3]);return this.normalized&&(t=dr(t,this.array)),t}setW(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+3]=ta(t),this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array)),this.array[e+0]=ta(t),this.array[e+1]=ta(n),this}setXYZ(e,t,n,r){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array)),this.array[e+0]=ta(t),this.array[e+1]=ta(n),this.array[e+2]=ta(r),this}setXYZW(e,t,n,r,i){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array),i=fr(i,this.array)),this.array[e+0]=ta(t),this.array[e+1]=ta(n),this.array[e+2]=ta(r),this.array[e+3]=ta(i),this}},ga=class extends sa{constructor(e,t,n){super(new Float32Array(e),t,n)}},_a=new Ri,va=new P,ya=new P,ba=class{constructor(e=new P,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;t===void 0?_a.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;t<i;t++)r=Math.max(r,n.distanceToSquared(e[t]));return this.radius=Math.sqrt(r),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){let t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){let n=this.center.distanceToSquared(e);return t.copy(e),n>this.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*=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;va.subVectors(e,this.center);let t=va.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(va,n/e),this.radius+=n}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):(ya.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(va.copy(e.center).add(ya)),this.expandByPoint(va.copy(e.center).sub(ya))),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}},xa=0,Sa=new F,Ca=new fi,wa=new P,Ta=new Ri,Ea=new Ri,Da=new P,Oa=class e extends Bn{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:xa++}),this.uuid=Gn(),this.name=``,this.type=`BufferGeometry`,this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(wn(e)?ma:fa)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let n=this.attributes.normal;if(n!==void 0){let t=new _r().getNormalMatrix(e);n.applyNormalMatrix(t),n.needsUpdate=!0}let r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return Sa.makeRotationFromQuaternion(e),this.applyMatrix4(Sa),this}rotateX(e){return Sa.makeRotationX(e),this.applyMatrix4(Sa),this}rotateY(e){return Sa.makeRotationY(e),this.applyMatrix4(Sa),this}rotateZ(e){return Sa.makeRotationZ(e),this.applyMatrix4(Sa),this}translate(e,t,n){return Sa.makeTranslation(e,t,n),this.applyMatrix4(Sa),this}scale(e,t,n){return Sa.makeScale(e,t,n),this.applyMatrix4(Sa),this}lookAt(e){return Ca.lookAt(e),Ca.updateMatrix(),this.applyMatrix4(Ca.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(wa).negate(),this.translate(wa.x,wa.y,wa.z),this}setFromPoints(e){let t=this.getAttribute(`position`);if(t===void 0){let t=[];for(let n=0,r=e.length;n<r;n++){let r=e[n];t.push(r.x,r.y,r.z||0)}this.setAttribute(`position`,new ga(t,3))}else{let n=Math.min(e.length,t.count);for(let r=0;r<n;r++){let n=e[r];t.setXYZ(r,n.x,n.y,n.z||0)}e.length>t.count&&j(`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 Ri);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){M(`BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.`,this),this.boundingBox.set(new P(-1/0,-1/0,-1/0),new P(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){let n=t[e];Ta.setFromBufferAttribute(n),this.morphTargetsRelative?(Da.addVectors(this.boundingBox.min,Ta.min),this.boundingBox.expandByPoint(Da),Da.addVectors(this.boundingBox.max,Ta.max),this.boundingBox.expandByPoint(Da)):(this.boundingBox.expandByPoint(Ta.min),this.boundingBox.expandByPoint(Ta.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&M(`BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.`,this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ba);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){M(`BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.`,this),this.boundingSphere.set(new P,1/0);return}if(e){let n=this.boundingSphere.center;if(Ta.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){let n=t[e];Ea.setFromBufferAttribute(n),this.morphTargetsRelative?(Da.addVectors(Ta.min,Ea.min),Ta.expandByPoint(Da),Da.addVectors(Ta.max,Ea.max),Ta.expandByPoint(Da)):(Ta.expandByPoint(Ea.min),Ta.expandByPoint(Ea.max))}Ta.getCenter(n);let r=0;for(let t=0,i=e.count;t<i;t++)Da.fromBufferAttribute(e,t),r=Math.max(r,n.distanceToSquared(Da));if(t)for(let i=0,a=t.length;i<a;i++){let a=t[i],o=this.morphTargetsRelative;for(let t=0,i=a.count;t<i;t++)Da.fromBufferAttribute(a,t),o&&(wa.fromBufferAttribute(e,t),Da.add(wa)),r=Math.max(r,n.distanceToSquared(Da))}this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&M(`BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.`,this)}}computeTangents(){let e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){M(`BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)`);return}let n=t.position,r=t.normal,i=t.uv;this.hasAttribute(`tangent`)===!1&&this.setAttribute(`tangent`,new sa(new Float32Array(4*n.count),4));let a=this.getAttribute(`tangent`),o=[],s=[];for(let e=0;e<n.count;e++)o[e]=new P,s[e]=new P;let c=new P,l=new P,u=new P,d=new N,f=new N,p=new N,m=new P,h=new P;function g(e,t,r){c.fromBufferAttribute(n,e),l.fromBufferAttribute(n,t),u.fromBufferAttribute(n,r),d.fromBufferAttribute(i,e),f.fromBufferAttribute(i,t),p.fromBufferAttribute(i,r),l.sub(c),u.sub(c),f.sub(d),p.sub(d);let a=1/(f.x*p.y-p.x*f.y);isFinite(a)&&(m.copy(l).multiplyScalar(p.y).addScaledVector(u,-f.y).multiplyScalar(a),h.copy(u).multiplyScalar(f.x).addScaledVector(l,-p.x).multiplyScalar(a),o[e].add(m),o[t].add(m),o[r].add(m),s[e].add(h),s[t].add(h),s[r].add(h))}let _=this.groups;_.length===0&&(_=[{start:0,count:e.count}]);for(let t=0,n=_.length;t<n;++t){let n=_[t],r=n.start,i=n.count;for(let t=r,n=r+i;t<n;t+=3)g(e.getX(t+0),e.getX(t+1),e.getX(t+2))}let v=new P,y=new P,b=new P,x=new P;function S(e){b.fromBufferAttribute(r,e),x.copy(b);let t=o[e];v.copy(t),v.sub(b.multiplyScalar(b.dot(t))).normalize(),y.crossVectors(x,t);let n=y.dot(s[e])<0?-1:1;a.setXYZW(e,v.x,v.y,v.z,n)}for(let t=0,n=_.length;t<n;++t){let n=_[t],r=n.start,i=n.count;for(let t=r,n=r+i;t<n;t+=3)S(e.getX(t+0)),S(e.getX(t+1)),S(e.getX(t+2))}}computeVertexNormals(){let e=this.index,t=this.getAttribute(`position`);if(t!==void 0){let n=this.getAttribute(`normal`);if(n===void 0)n=new sa(new Float32Array(t.count*3),3),this.setAttribute(`normal`,n);else for(let e=0,t=n.count;e<t;e++)n.setXYZ(e,0,0,0);let r=new P,i=new P,a=new P,o=new P,s=new P,c=new P,l=new P,u=new P;if(e)for(let d=0,f=e.count;d<f;d+=3){let f=e.getX(d+0),p=e.getX(d+1),m=e.getX(d+2);r.fromBufferAttribute(t,f),i.fromBufferAttribute(t,p),a.fromBufferAttribute(t,m),l.subVectors(a,i),u.subVectors(r,i),l.cross(u),o.fromBufferAttribute(n,f),s.fromBufferAttribute(n,p),c.fromBufferAttribute(n,m),o.add(l),s.add(l),c.add(l),n.setXYZ(f,o.x,o.y,o.z),n.setXYZ(p,s.x,s.y,s.z),n.setXYZ(m,c.x,c.y,c.z)}else for(let e=0,o=t.count;e<o;e+=3)r.fromBufferAttribute(t,e+0),i.fromBufferAttribute(t,e+1),a.fromBufferAttribute(t,e+2),l.subVectors(a,i),u.subVectors(r,i),l.cross(u),n.setXYZ(e+0,l.x,l.y,l.z),n.setXYZ(e+1,l.x,l.y,l.z),n.setXYZ(e+2,l.x,l.y,l.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){let e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)Da.fromBufferAttribute(e,t),Da.normalize(),e.setXYZ(t,Da.x,Da.y,Da.z)}toNonIndexed(){function t(e,t){let n=e.array,r=e.itemSize,i=e.normalized,a=new n.constructor(t.length*r),o=0,s=0;for(let i=0,c=t.length;i<c;i++){o=e.isInterleavedBufferAttribute?t[i]*e.data.stride+e.offset:t[i]*r;for(let e=0;e<r;e++)a[s++]=n[o++]}return new sa(a,r,i)}if(this.index===null)return j(`BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.`),this;let n=new e,r=this.index.array,i=this.attributes;for(let e in i){let a=i[e],o=t(a,r);n.setAttribute(e,o)}let a=this.morphAttributes;for(let e in a){let i=[],o=a[e];for(let e=0,n=o.length;e<n;e++){let n=o[e],a=t(n,r);i.push(a)}n.morphAttributes[e]=i}n.morphTargetsRelative=this.morphTargetsRelative;let o=this.groups;for(let e=0,t=o.length;e<t;e++){let t=o[e];n.addGroup(t.start,t.count,t.materialIndex)}return n}toJSON(){let e={metadata:{version:4.7,type:`BufferGeometry`,generator:`BufferGeometry.toJSON`}};if(e.uuid=this.uuid,e.type=this.type,this.name!==``&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){let t=this.parameters;for(let n in t)t[n]!==void 0&&(e[n]=t[n]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let t in n){let r=n[t];e.data.attributes[t]=r.toJSON(e.data)}let r={},i=!1;for(let t in this.morphAttributes){let n=this.morphAttributes[t],a=[];for(let t=0,r=n.length;t<r;t++){let r=n[t];a.push(r.toJSON(e.data))}a.length>0&&(r[t]=a,i=!0)}i&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.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;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone());let r=e.attributes;for(let e in r){let n=r[e];this.setAttribute(e,n.clone(t))}let i=e.morphAttributes;for(let e in i){let n=[],r=i[e];for(let e=0,i=r.length;e<i;e++)n.push(r[e].clone(t));this.morphAttributes[e]=n}this.morphTargetsRelative=e.morphTargetsRelative;let a=e.groups;for(let e=0,t=a.length;e<t;e++){let t=a[e];this.addGroup(t.start,t.count,t.materialIndex)}let o=e.boundingBox;o!==null&&(this.boundingBox=o.clone());let s=e.boundingSphere;return s!==null&&(this.boundingSphere=s.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:`dispose`})}},ka=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=cn,this.updateRanges=[],this.version=0,this.uuid=Gn()}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,i=this.stride;r<i;r++)this.array[e+r]=t.array[n+r];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Gn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Gn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},Aa=new P,ja=class e{constructor(e,t,n,r=!1){this.isInterleavedBufferAttribute=!0,this.name=``,this.data=e,this.itemSize=t,this.offset=n,this.normalized=r}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)Aa.fromBufferAttribute(this,t),Aa.applyMatrix4(e),this.setXYZ(t,Aa.x,Aa.y,Aa.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Aa.fromBufferAttribute(this,t),Aa.applyNormalMatrix(e),this.setXYZ(t,Aa.x,Aa.y,Aa.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Aa.fromBufferAttribute(this,t),Aa.transformDirection(e),this.setXYZ(t,Aa.x,Aa.y,Aa.z);return this}getComponent(e,t){let n=this.array[e*this.data.stride+this.offset+t];return this.normalized&&(n=dr(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=fr(n,this.array)),this.data.array[e*this.data.stride+this.offset+t]=n,this}setX(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=dr(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=dr(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=dr(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=dr(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this}setXYZW(e,t,n,r,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array),i=fr(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this.data.array[e+3]=i,this}clone(t){if(t===void 0){Pn(`InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.`);let e=[];for(let t=0;t<this.count;t++){let n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return new sa(new this.array.constructor(e),this.itemSize,this.normalized)}else return t.interleavedBuffers===void 0&&(t.interleavedBuffers={}),t.interleavedBuffers[this.data.uuid]===void 0&&(t.interleavedBuffers[this.data.uuid]=this.data.clone(t)),new e(t.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){Pn(`InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.`);let e=[];for(let t=0;t<this.count;t++){let n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}},Ma=0,Na=class extends Bn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Ma++}),this.uuid=Gn(),this.name=``,this.type=`Material`,this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new I(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=en,this.stencilZFail=en,this.stencilZPass=en,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.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){j(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){j(`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){let t=e===void 0||typeof e==`string`;t&&(e={textures:{},images:{}});let 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!==1&&(n.blending=this.blending),this.side!==0&&(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!==204&&(n.blendSrc=this.blendSrc),this.blendDst!==205&&(n.blendDst=this.blendDst),this.blendEquation!==100&&(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!==3&&(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!==519&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==7680&&(n.stencilFail=this.stencilFail),this.stencilZFail!==7680&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==7680&&(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(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(t){let t=r(e.textures),i=r(e.images);t.length>0&&(n.textures=t),i.length>0&&(n.images=i)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,n=null;if(t!==null){let e=t.length;n=Array(e);for(let r=0;r!==e;++r)n[r]=t[r].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++}},Pa=class extends Na{constructor(e){super(),this.isSpriteMaterial=!0,this.type=`SpriteMaterial`,this.color=new I(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},Fa,Ia=new P,La=new P,Ra=new P,za=new N,Ba=new N,Va=new F,Ha=new P,Ua=new P,Wa=new P,Ga=new N,Ka=new N,qa=new N,Ja=class extends fi{constructor(e=new Pa){if(super(),this.isSprite=!0,this.type=`Sprite`,Fa===void 0){Fa=new Oa;let e=new ka(new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),5);Fa.setIndex([0,1,2,0,2,3]),Fa.setAttribute(`position`,new ja(e,3,0,!1)),Fa.setAttribute(`uv`,new ja(e,2,3,!1))}this.geometry=Fa,this.material=e,this.center=new N(.5,.5),this.count=1}raycast(e,t){e.camera===null&&M(`Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.`),La.setFromMatrixScale(this.matrixWorld),Va.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Ra.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&La.multiplyScalar(-Ra.z);let n=this.material.rotation,r,i;n!==0&&(i=Math.cos(n),r=Math.sin(n));let a=this.center;Ya(Ha.set(-.5,-.5,0),Ra,a,La,r,i),Ya(Ua.set(.5,-.5,0),Ra,a,La,r,i),Ya(Wa.set(.5,.5,0),Ra,a,La,r,i),Ga.set(0,0),Ka.set(1,0),qa.set(1,1);let o=e.ray.intersectTriangle(Ha,Ua,Wa,!1,Ia);if(o===null&&(Ya(Ua.set(-.5,.5,0),Ra,a,La,r,i),Ka.set(0,1),o=e.ray.intersectTriangle(Ha,Wa,Ua,!1,Ia),o===null))return;let s=e.ray.origin.distanceTo(Ia);s<e.near||s>e.far||t.push({distance:s,point:Ia.clone(),uv:Li.getInterpolation(Ia,Ha,Ua,Wa,Ga,Ka,qa,new N),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 Ya(e,t,n,r,i,a){za.subVectors(e,n).addScalar(.5).multiply(r),i===void 0?Ba.copy(za):(Ba.x=a*za.x-i*za.y,Ba.y=i*za.x+a*za.y),e.copy(t),e.x+=Ba.x,e.y+=Ba.y,e.applyMatrix4(Va)}var Xa=new P,Za=new P,Qa=class extends fi{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);let t=e.levels;for(let e=0,n=t.length;e<n;e++){let n=t[e];this.addLevel(n.object.clone(),n.distance,n.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,t=0,n=0){t=Math.abs(t);let r=this.levels,i;for(i=0;i<r.length&&!(t<r[i].distance);i++);return r.splice(i,0,{distance:t,hysteresis:n,object:e}),this.add(e),this}removeLevel(e){let t=this.levels;for(let n=0;n<t.length;n++)if(t[n].distance===e){let e=t.splice(n,1);return this.remove(e[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){let t=this.levels;if(t.length>0){let n,r;for(n=1,r=t.length;n<r;n++){let r=t[n].distance;if(t[n].object.visible&&(r-=r*t[n].hysteresis),e<r)break}return t[n-1].object}return null}raycast(e,t){if(this.levels.length>0){Xa.setFromMatrixPosition(this.matrixWorld);let n=e.ray.origin.distanceTo(Xa);this.getObjectForDistance(n).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){Xa.setFromMatrixPosition(e.matrixWorld),Za.setFromMatrixPosition(this.matrixWorld);let n=Xa.distanceTo(Za)/e.zoom;t[0].object.visible=!0;let r,i;for(r=1,i=t.length;r<i;r++){let e=t[r].distance;if(t[r].object.visible&&(e-=e*t[r].hysteresis),n>=e)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r<i;r++)t[r].object.visible=!1}}toJSON(e){let t=super.toJSON(e);this.autoUpdate===!1&&(t.object.autoUpdate=!1),t.object.levels=[];let n=this.levels;for(let e=0,r=n.length;e<r;e++){let r=n[e];t.object.levels.push({object:r.object.uuid,distance:r.distance,hysteresis:r.hysteresis})}return t}},$a=new P,eo=new P,to=new P,no=new P,ro=new P,io=new P,ao=new P,oo=class{constructor(e=new P,t=new P(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,$a)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=$a.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):($a.copy(this.origin).addScaledVector(this.direction,t),$a.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){eo.copy(e).add(t).multiplyScalar(.5),to.copy(t).sub(e).normalize(),no.copy(this.origin).sub(eo);let i=e.distanceTo(t)*.5,a=-this.direction.dot(to),o=no.dot(this.direction),s=-no.dot(to),c=no.lengthSq(),l=Math.abs(1-a*a),u,d,f,p;if(l>0)if(u=a*s-o,d=a*o-s,p=i*l,u>=0)if(d>=-p)if(d<=p){let e=1/l;u*=e,d*=e,f=u*(u+a*d+2*o)+d*(a*u+d+2*s)+c}else d=i,u=Math.max(0,-(a*d+o)),f=-u*u+d*(d+2*s)+c;else d=-i,u=Math.max(0,-(a*d+o)),f=-u*u+d*(d+2*s)+c;else d<=-p?(u=Math.max(0,-(-a*i+o)),d=u>0?-i:Math.min(Math.max(-i,-s),i),f=-u*u+d*(d+2*s)+c):d<=p?(u=0,d=Math.min(Math.max(-i,-s),i),f=d*(d+2*s)+c):(u=Math.max(0,-(a*i+o)),d=u>0?i:Math.min(Math.max(-i,-s),i),f=-u*u+d*(d+2*s)+c);else d=a>0?-i:i,u=Math.max(0,-(a*d+o)),f=-u*u+d*(d+2*s)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,u),r&&r.copy(eo).addScaledVector(to,d),f}intersectSphere(e,t){$a.subVectors(e.center,this.origin);let n=$a.dot(this.direction),r=$a.dot($a)-n*n,i=e.radius*e.radius;if(r>i)return null;let a=Math.sqrt(i-r),o=n-a,s=n+a;return s<0?null:o<0?this.at(s,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,i,a,o,s,c=1/this.direction.x,l=1/this.direction.y,u=1/this.direction.z,d=this.origin;return c>=0?(n=(e.min.x-d.x)*c,r=(e.max.x-d.x)*c):(n=(e.max.x-d.x)*c,r=(e.min.x-d.x)*c),l>=0?(i=(e.min.y-d.y)*l,a=(e.max.y-d.y)*l):(i=(e.max.y-d.y)*l,a=(e.min.y-d.y)*l),n>a||i>r||((i>n||isNaN(n))&&(n=i),(a<r||isNaN(r))&&(r=a),u>=0?(o=(e.min.z-d.z)*u,s=(e.max.z-d.z)*u):(o=(e.max.z-d.z)*u,s=(e.min.z-d.z)*u),n>s||o>r)||((o>n||n!==n)&&(n=o),(s<r||r!==r)&&(r=s),r<0)?null:this.at(n>=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,$a)!==null}intersectTriangle(e,t,n,r,i){ro.subVectors(t,e),io.subVectors(n,e),ao.crossVectors(ro,io);let a=this.direction.dot(ao),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;no.subVectors(this.origin,e);let s=o*this.direction.dot(io.crossVectors(no,io));if(s<0)return null;let c=o*this.direction.dot(ro.cross(no));if(c<0||s+c>a)return null;let l=-o*no.dot(ao);return l<0?null:this.at(l/a,i)}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)}},so=class extends Na{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type=`MeshBasicMaterial`,this.color=new I(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 Yr,this.combine=0,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}},co=new F,lo=new oo,uo=new ba,fo=new P,po=new P,mo=new P,ho=new P,go=new P,_o=new P,vo=new P,yo=new P,bo=class extends fi{constructor(e=new Oa,t=new so){super(),this.isMesh=!0,this.type=`Mesh`,this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){let n=this.geometry,r=n.attributes.position,i=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(r,e);let o=this.morphTargetInfluences;if(i&&o){_o.set(0,0,0);for(let n=0,r=i.length;n<r;n++){let r=o[n],s=i[n];r!==0&&(go.fromBufferAttribute(s,e),a?_o.addScaledVector(go,r):_o.addScaledVector(go.sub(t),r))}t.add(_o)}return t}raycast(e,t){let n=this.geometry,r=this.material,i=this.matrixWorld;r!==void 0&&(n.boundingSphere===null&&n.computeBoundingSphere(),uo.copy(n.boundingSphere),uo.applyMatrix4(i),lo.copy(e.ray).recast(e.near),!(uo.containsPoint(lo.origin)===!1&&(lo.intersectSphere(uo,fo)===null||lo.origin.distanceToSquared(fo)>(e.far-e.near)**2))&&(co.copy(i).invert(),lo.copy(e.ray).applyMatrix4(co),!(n.boundingBox!==null&&lo.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,lo)))}_computeIntersections(e,t,n){let r,i=this.geometry,a=this.material,o=i.index,s=i.attributes.position,c=i.attributes.uv,l=i.attributes.uv1,u=i.attributes.normal,d=i.groups,f=i.drawRange;if(o!==null)if(Array.isArray(a))for(let i=0,s=d.length;i<s;i++){let s=d[i],p=a[s.materialIndex],m=Math.max(s.start,f.start),h=Math.min(o.count,Math.min(s.start+s.count,f.start+f.count));for(let i=m,a=h;i<a;i+=3){let a=o.getX(i),d=o.getX(i+1),f=o.getX(i+2);r=So(this,p,e,n,c,l,u,a,d,f),r&&(r.faceIndex=Math.floor(i/3),r.face.materialIndex=s.materialIndex,t.push(r))}}else{let i=Math.max(0,f.start),s=Math.min(o.count,f.start+f.count);for(let d=i,f=s;d<f;d+=3){let i=o.getX(d),s=o.getX(d+1),f=o.getX(d+2);r=So(this,a,e,n,c,l,u,i,s,f),r&&(r.faceIndex=Math.floor(d/3),t.push(r))}}else if(s!==void 0)if(Array.isArray(a))for(let i=0,o=d.length;i<o;i++){let o=d[i],p=a[o.materialIndex],m=Math.max(o.start,f.start),h=Math.min(s.count,Math.min(o.start+o.count,f.start+f.count));for(let i=m,a=h;i<a;i+=3){let a=i,s=i+1,d=i+2;r=So(this,p,e,n,c,l,u,a,s,d),r&&(r.faceIndex=Math.floor(i/3),r.face.materialIndex=o.materialIndex,t.push(r))}}else{let i=Math.max(0,f.start),o=Math.min(s.count,f.start+f.count);for(let s=i,d=o;s<d;s+=3){let i=s,o=s+1,d=s+2;r=So(this,a,e,n,c,l,u,i,o,d),r&&(r.faceIndex=Math.floor(s/3),t.push(r))}}}};function xo(e,t,n,r,i,a,o,s){let c;if(c=t.side===1?r.intersectTriangle(o,a,i,!0,s):r.intersectTriangle(i,a,o,t.side===0,s),c===null)return null;yo.copy(s),yo.applyMatrix4(e.matrixWorld);let l=n.ray.origin.distanceTo(yo);return l<n.near||l>n.far?null:{distance:l,point:yo.clone(),object:e}}function So(e,t,n,r,i,a,o,s,c,l){e.getVertexPosition(s,po),e.getVertexPosition(c,mo),e.getVertexPosition(l,ho);let u=xo(e,t,n,r,po,mo,ho,vo);if(u){let e=new P;Li.getBarycoord(vo,po,mo,ho,e),i&&(u.uv=Li.getInterpolatedAttribute(i,s,c,l,e,new N)),a&&(u.uv1=Li.getInterpolatedAttribute(a,s,c,l,e,new N)),o&&(u.normal=Li.getInterpolatedAttribute(o,s,c,l,e,new P),u.normal.dot(r.direction)>0&&u.normal.multiplyScalar(-1));let t={a:s,b:c,c:l,normal:new P,materialIndex:0};Li.getNormal(po,mo,ho,t.normal),u.face=t,u.barycoord=e}return u}var Co=new Nr,wo=new Nr,To=new Nr,Eo=new Nr,Do=new F,Oo=new P,ko=new ba,Ao=new F,jo=new oo,Mo=class extends bo{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type=`SkinnedMesh`,this.bindMode=he,this.bindMatrix=new F,this.bindMatrixInverse=new F,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){let e=this.geometry;this.boundingBox===null&&(this.boundingBox=new Ri),this.boundingBox.makeEmpty();let t=e.getAttribute(`position`);for(let e=0;e<t.count;e++)this.getVertexPosition(e,Oo),this.boundingBox.expandByPoint(Oo)}computeBoundingSphere(){let e=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new ba),this.boundingSphere.makeEmpty();let t=e.getAttribute(`position`);for(let e=0;e<t.count;e++)this.getVertexPosition(e,Oo),this.boundingSphere.expandByPoint(Oo)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){let n=this.material,r=this.matrixWorld;n!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),ko.copy(this.boundingSphere),ko.applyMatrix4(r),e.ray.intersectsSphere(ko)!==!1&&(Ao.copy(r).invert(),jo.copy(e.ray).applyMatrix4(Ao),!(this.boundingBox!==null&&jo.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(e,t,jo)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){let e=new Nr,t=this.geometry.attributes.skinWeight;for(let n=0,r=t.count;n<r;n++){e.fromBufferAttribute(t,n);let r=1/e.manhattanLength();r===1/0?e.set(1,0,0,0):e.multiplyScalar(r),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===`attached`?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===`detached`?this.bindMatrixInverse.copy(this.bindMatrix).invert():j(`SkinnedMesh: Unrecognized bindMode: `+this.bindMode)}applyBoneTransform(e,t){let n=this.skeleton,r=this.geometry;wo.fromBufferAttribute(r.attributes.skinIndex,e),To.fromBufferAttribute(r.attributes.skinWeight,e),t.isVector4?(Co.copy(t),t.set(0,0,0,0)):(Co.set(...t,1),t.set(0,0,0)),Co.applyMatrix4(this.bindMatrix);for(let e=0;e<4;e++){let r=To.getComponent(e);if(r!==0){let i=wo.getComponent(e);Do.multiplyMatrices(n.bones[i].matrixWorld,n.boneInverses[i]),t.addScaledVector(Eo.copy(Co).applyMatrix4(Do),r)}}return t.isVector4&&(t.w=Co.w),t.applyMatrix4(this.bindMatrixInverse)}},No=class extends fi{constructor(){super(),this.isBone=!0,this.type=`Bone`}},Po=class extends Mr{constructor(e=null,t=1,n=1,r,i,a,o,s,c=be,l=be,u,d){super(null,a,o,s,c,l,r,i,u,d),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},Fo=new F,Io=new F,Lo=class e{constructor(e=[],t=[]){this.uuid=Gn(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.previousBoneMatrices=null,this.boneTexture=null,this.init()}init(){let e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(e.length*16),t.length===0)this.calculateInverses();else if(e.length!==t.length){j(`Skeleton: Number of inverse bone matrices does not match amount of bones.`),this.boneInverses=[];for(let e=0,t=this.bones.length;e<t;e++)this.boneInverses.push(new F)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){let t=new F;this.bones[e]&&t.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&t.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){let e=this.bones,t=this.boneInverses,n=this.boneMatrices,r=this.boneTexture;for(let r=0,i=e.length;r<i;r++){let i=e[r]?e[r].matrixWorld:Io;Fo.multiplyMatrices(i,t[r]),Fo.toArray(n,r*16)}r!==null&&(r.needsUpdate=!0)}clone(){return new e(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);let t=new Float32Array(e*e*4);t.set(this.boneMatrices);let n=new Po(t,e,e,Ue,Pe);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){let n=this.bones[t];if(n.name===e)return n}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,r=e.bones.length;n<r;n++){let r=e.bones[n],i=t[r];i===void 0&&(j(`Skeleton: No bone found with UUID:`,r),i=new No),this.bones.push(i),this.boneInverses.push(new F().fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){let e={metadata:{version:4.7,type:`Skeleton`,generator:`Skeleton.toJSON`},bones:[],boneInverses:[]};e.uuid=this.uuid;let t=this.bones,n=this.boneInverses;for(let r=0,i=t.length;r<i;r++){let i=t[r];e.bones.push(i.uuid);let a=n[r];e.boneInverses.push(a.toArray())}return e}},Ro=class extends sa{constructor(e,t,n,r=1){super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}},zo=new F,Bo=new F,Vo=[],Ho=new Ri,Uo=new F,Wo=new bo,Go=new ba,Ko=class extends bo{constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new Ro(new Float32Array(n*16),16),this.previousInstanceMatrix=null,this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let e=0;e<n;e++)this.setMatrixAt(e,Uo)}computeBoundingBox(){let e=this.geometry,t=this.count;this.boundingBox===null&&(this.boundingBox=new Ri),e.boundingBox===null&&e.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,zo),Ho.copy(e.boundingBox).applyMatrix4(zo),this.boundingBox.union(Ho)}computeBoundingSphere(){let e=this.geometry,t=this.count;this.boundingSphere===null&&(this.boundingSphere=new ba),e.boundingSphere===null&&e.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,zo),Go.copy(e.boundingSphere).applyMatrix4(zo),this.boundingSphere.union(Go)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),e.previousInstanceMatrix!==null&&(this.previousInstanceMatrix=e.previousInstanceMatrix.clone()),e.morphTexture!==null&&(this.morphTexture=e.morphTexture.clone()),e.instanceColor!==null&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}getColorAt(e,t){return this.instanceColor===null?t.setRGB(1,1,1):t.fromArray(this.instanceColor.array,e*3)}getMatrixAt(e,t){return t.fromArray(this.instanceMatrix.array,e*16)}getMorphAt(e,t){let n=t.morphTargetInfluences,r=this.morphTexture.source.data.data,i=e*(n.length+1)+1;for(let e=0;e<n.length;e++)n[e]=r[i+e]}raycast(e,t){let n=this.matrixWorld,r=this.count;if(Wo.geometry=this.geometry,Wo.material=this.material,Wo.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),Go.copy(this.boundingSphere),Go.applyMatrix4(n),e.ray.intersectsSphere(Go)!==!1))for(let i=0;i<r;i++){this.getMatrixAt(i,zo),Bo.multiplyMatrices(n,zo),Wo.matrixWorld=Bo,Wo.raycast(e,Vo);for(let e=0,n=Vo.length;e<n;e++){let n=Vo[e];n.instanceId=i,n.object=this,t.push(n)}Vo.length=0}}setColorAt(e,t){return this.instanceColor===null&&(this.instanceColor=new Ro(new Float32Array(this.instanceMatrix.count*3).fill(1),3)),t.toArray(this.instanceColor.array,e*3),this}setMatrixAt(e,t){return t.toArray(this.instanceMatrix.array,e*16),this}setMorphAt(e,t){let n=t.morphTargetInfluences,r=n.length+1;this.morphTexture===null&&(this.morphTexture=new Po(new Float32Array(r*this.count),r,this.count,Ke,Pe));let i=this.morphTexture.source.data.data,a=0;for(let e=0;e<n.length;e++)a+=n[e];let o=this.geometry.morphTargetsRelative?1:1-a,s=r*e;return i[s]=o,i.set(n,s+1),this}updateMorphTargets(){}dispose(){this.dispatchEvent({type:`dispose`}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null)}},qo=new P,Jo=new P,Yo=new _r,Xo=class{constructor(e=new P(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){let r=qo.subVectors(n,t).cross(Jo.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t,n=!0){let r=e.delta(qo),i=this.normal.dot(r);if(i===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;let a=-(e.start.dot(this.normal)+this.constant)/i;return n===!0&&(a<0||a>1)?null:t.copy(e.start).addScaledVector(r,a)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||Yo.getNormalMatrix(e),r=this.coplanarPoint(qo).applyMatrix4(e),i=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(i),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)}},Zo=new ba,Qo=new N(.5,.5),$o=new P,es=class{constructor(e=new Xo,t=new Xo,n=new Xo,r=new Xo,i=new Xo,a=new Xo){this.planes=[e,t,n,r,i,a]}set(e,t,n,r,i,a){let o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(r),o[4].copy(i),o[5].copy(a),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=vn,n=!1){let r=this.planes,i=e.elements,a=i[0],o=i[1],s=i[2],c=i[3],l=i[4],u=i[5],d=i[6],f=i[7],p=i[8],m=i[9],h=i[10],g=i[11],_=i[12],v=i[13],y=i[14],b=i[15];if(r[0].setComponents(c-a,f-l,g-p,b-_).normalize(),r[1].setComponents(c+a,f+l,g+p,b+_).normalize(),r[2].setComponents(c+o,f+u,g+m,b+v).normalize(),r[3].setComponents(c-o,f-u,g-m,b-v).normalize(),n)r[4].setComponents(s,d,h,y).normalize(),r[5].setComponents(c-s,f-d,g-h,b-y).normalize();else if(r[4].setComponents(c-s,f-d,g-h,b-y).normalize(),t===2e3)r[5].setComponents(c+s,f+d,g+h,b+y).normalize();else if(t===2001)r[5].setComponents(s,d,h,y).normalize();else throw Error(`THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: `+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Zo.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Zo.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Zo)}intersectsSprite(e){return Zo.center.set(0,0,0),Zo.radius=.7071067811865476+Qo.distanceTo(e.center),Zo.applyMatrix4(e.matrixWorld),this.intersectsSphere(Zo)}intersectsSphere(e){let t=this.planes,n=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)<r)return!1;return!0}intersectsBox(e){let t=this.planes;for(let n=0;n<6;n++){let r=t[n];if($o.x=r.normal.x>0?e.max.x:e.min.x,$o.y=r.normal.y>0?e.max.y:e.min.y,$o.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint($o)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}},ts=new F,ns=new es,rs=class e{constructor(){this.coordinateSystem=vn}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsObject(e))return!0}return!1}intersectsSprite(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsSprite(e))return!0}return!1}intersectsSphere(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsSphere(e))return!0}return!1}intersectsBox(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsBox(e))return!0}return!1}containsPoint(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.containsPoint(e))return!0}return!1}clone(){return new e}};function is(e,t){return e-t}function as(e,t){return e.z-t.z}function os(e,t){return t.z-e.z}var ss=class{constructor(){this.index=0,this.pool=[],this.list=[]}push(e,t,n,r){let i=this.pool,a=this.list;this.index>=i.length&&i.push({start:-1,count:-1,z:-1,index:-1});let o=i[this.index];a.push(o),this.index++,o.start=e,o.count=t,o.z=n,o.index=r}reset(){this.list.length=0,this.index=0}},cs=new F,ls=new I(1,1,1),us=new es,ds=new rs,fs=new Ri,ps=new ba,ms=new P,hs=new P,gs=new P,_s=new ss,vs=new bo,ys=[];function bs(e,t,n=0){let r=t.itemSize;if(e.isInterleavedBufferAttribute||e.array.constructor!==t.array.constructor){let i=e.count;for(let a=0;a<i;a++)for(let i=0;i<r;i++)t.setComponent(a+n,i,e.getComponent(a,i))}else t.array.set(e.array,n*r);t.needsUpdate=!0}function xs(e,t){if(e.constructor!==t.constructor){let n=Math.min(e.length,t.length);for(let r=0;r<n;r++)t[r]=e[r]}else{let n=Math.min(e.length,t.length);t.set(new e.constructor(e.buffer,0,n))}}var Ss=class extends bo{constructor(e,t,n=t*2,r){super(new Oa,r),this.isBatchedMesh=!0,this.perObjectFrustumCulled=!0,this.sortObjects=!0,this.boundingBox=null,this.boundingSphere=null,this.customSort=null,this._instanceInfo=[],this._geometryInfo=[],this._availableInstanceIds=[],this._availableGeometryIds=[],this._nextIndexStart=0,this._nextVertexStart=0,this._geometryCount=0,this._visibilityChanged=!0,this._geometryInitialized=!1,this._maxInstanceCount=e,this._maxVertexCount=t,this._maxIndexCount=n,this._multiDrawCounts=new Int32Array(e),this._multiDrawStarts=new Int32Array(e),this._multiDrawCount=0,this._matricesTexture=null,this._indirectTexture=null,this._colorsTexture=null,this._initMatricesTexture(),this._initIndirectTexture()}get maxInstanceCount(){return this._maxInstanceCount}get instanceCount(){return this._instanceInfo.length-this._availableInstanceIds.length}get unusedVertexCount(){return this._maxVertexCount-this._nextVertexStart}get unusedIndexCount(){return this._maxIndexCount-this._nextIndexStart}_initMatricesTexture(){let e=Math.sqrt(this._maxInstanceCount*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);let t=new Po(new Float32Array(e*e*4),e,e,Ue,Pe);this._matricesTexture=t}_initIndirectTexture(){let e=Math.sqrt(this._maxInstanceCount);e=Math.ceil(e);let t=new Po(new Uint32Array(e*e),e,e,qe,Ne);this._indirectTexture=t}_initColorsTexture(){let e=Math.sqrt(this._maxInstanceCount);e=Math.ceil(e);let t=new Po(new Float32Array(e*e*4).fill(1),e,e,Ue,Pe);t.colorSpace=Sr.workingColorSpace,this._colorsTexture=t}_initializeGeometry(e){let t=this.geometry,n=this._maxVertexCount,r=this._maxIndexCount;if(this._geometryInitialized===!1){for(let r in e.attributes){let{array:i,itemSize:a,normalized:o}=e.getAttribute(r),s=new sa(new i.constructor(n*a),a,o);t.setAttribute(r,s)}if(e.getIndex()!==null){let e=n>65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new sa(e,1))}this._geometryInitialized=!0}}_validateGeometry(e){let t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw Error(`THREE.BatchedMesh: All geometries must consistently have "index".`);for(let n in t.attributes){if(!e.hasAttribute(n))throw Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);let r=e.getAttribute(n),i=t.getAttribute(n);if(r.itemSize!==i.itemSize||r.normalized!==i.normalized)throw Error(`THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.`)}}validateInstanceId(e){let t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){let t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw 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 Ri);let e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,r=t.length;n<r;n++){if(t[n].active===!1)continue;let r=t[n].geometryIndex;this.getMatrixAt(n,cs),this.getBoundingBoxAt(r,fs).applyMatrix4(cs),e.union(fs)}}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ba);let e=this.boundingSphere,t=this._instanceInfo;e.makeEmpty();for(let n=0,r=t.length;n<r;n++){if(t[n].active===!1)continue;let r=t[n].geometryIndex;this.getMatrixAt(n,cs),this.getBoundingSphereAt(r,ps).applyMatrix4(cs),e.union(ps)}}addInstance(e){if(this._instanceInfo.length>=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw Error(`THREE.BatchedMesh: Maximum item count reached.`);let t={visible:!0,active:!0,geometryIndex:e},n=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(is),n=this._availableInstanceIds.shift(),this._instanceInfo[n]=t):(n=this._instanceInfo.length,this._instanceInfo.push(t));let r=this._matricesTexture;cs.identity().toArray(r.image.data,n*16),r.needsUpdate=!0;let i=this._colorsTexture;return i&&(ls.toArray(i.image.data,n*4),i.needsUpdate=!0),this._visibilityChanged=!0,n}addGeometry(e,t=-1,n=-1){this._initializeGeometry(e),this._validateGeometry(e);let r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},i=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=t===-1?e.getAttribute(`position`).count:t;let a=e.getIndex();if(a!==null&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=n===-1?a.count:n),r.indexStart!==-1&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw Error(`THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.`);let o;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(is),o=this._availableGeometryIds.shift(),i[o]=r):(o=this._geometryCount,this._geometryCount++,i.push(r)),this.setGeometryAt(o,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,o}setGeometryAt(e,t){if(e>=this._geometryCount)throw Error(`THREE.BatchedMesh: Maximum geometry count reached.`);this._validateGeometry(t);let n=this.geometry,r=n.getIndex()!==null,i=n.getIndex(),a=t.getIndex(),o=this._geometryInfo[e];if(r&&a.count>o.reservedIndexCount||t.attributes.position.count>o.reservedVertexCount)throw Error(`THREE.BatchedMesh: Reserved space not large enough for provided geometry.`);let s=o.vertexStart,c=o.reservedVertexCount;o.vertexCount=t.getAttribute(`position`).count;for(let e in n.attributes){let r=t.getAttribute(e),i=n.getAttribute(e);bs(r,i,s);let a=r.itemSize;for(let e=r.count,t=c;e<t;e++){let t=s+e;for(let e=0;e<a;e++)i.setComponent(t,e,0)}i.needsUpdate=!0,i.addUpdateRange(s*a,c*a)}if(r){let e=o.indexStart,n=o.reservedIndexCount;o.indexCount=t.getIndex().count;for(let t=0;t<a.count;t++)i.setX(e+t,s+a.getX(t));for(let t=a.count,r=n;t<r;t++)i.setX(e+t,s);i.needsUpdate=!0,i.addUpdateRange(e,o.reservedIndexCount)}return o.start=r?o.indexStart:o.vertexStart,o.count=r?o.indexCount:o.vertexCount,o.boundingBox=null,t.boundingBox!==null&&(o.boundingBox=t.boundingBox.clone()),o.boundingSphere=null,t.boundingSphere!==null&&(o.boundingSphere=t.boundingSphere.clone()),this._visibilityChanged=!0,e}deleteGeometry(e){let t=this._geometryInfo;if(e>=t.length||t[e].active===!1)return this;let n=this._instanceInfo;for(let t=0,r=n.length;t<r;t++)n[t].active&&n[t].geometryIndex===e&&this.deleteInstance(t);return t[e].active=!1,this._availableGeometryIds.push(e),this._visibilityChanged=!0,this}deleteInstance(e){return this.validateInstanceId(e),this._instanceInfo[e].active=!1,this._availableInstanceIds.push(e),this._visibilityChanged=!0,this}optimize(){let e=0,t=0,n=this._geometryInfo,r=n.map((e,t)=>t).sort((e,t)=>n[e].vertexStart-n[t].vertexStart),i=this.geometry;for(let a=0,o=n.length;a<o;a++){let o=n[r[a]];if(o.active!==!1){if(i.index!==null){if(o.indexStart!==t){let{indexStart:n,vertexStart:r,reservedIndexCount:a}=o,s=i.index,c=s.array,l=e-r;for(let e=n;e<n+a;e++)c[e]=c[e]+l;s.array.copyWithin(t,n,n+a),s.addUpdateRange(t,a),s.needsUpdate=!0,o.indexStart=t}t+=o.reservedIndexCount}if(o.vertexStart!==e){let{vertexStart:t,reservedVertexCount:n}=o,r=i.attributes;for(let i in r){let a=r[i],{array:o,itemSize:s}=a;o.copyWithin(e*s,t*s,(t+n)*s),a.addUpdateRange(e*s,n*s),a.needsUpdate=!0}o.vertexStart=e}e+=o.reservedVertexCount,o.start=i.index?o.indexStart:o.vertexStart}}return this._nextIndexStart=t,this._nextVertexStart=e,this._visibilityChanged=!0,this}getBoundingBoxAt(e,t){if(e>=this._geometryCount)return null;let n=this.geometry,r=this._geometryInfo[e];if(r.boundingBox===null){let e=new Ri,t=n.index,i=n.attributes.position;for(let n=r.start,a=r.start+r.count;n<a;n++){let r=n;t&&(r=t.getX(r)),e.expandByPoint(ms.fromBufferAttribute(i,r))}r.boundingBox=e}return t.copy(r.boundingBox),t}getBoundingSphereAt(e,t){if(e>=this._geometryCount)return null;let n=this.geometry,r=this._geometryInfo[e];if(r.boundingSphere===null){let t=new ba;this.getBoundingBoxAt(e,fs),fs.getCenter(t.center);let i=n.index,a=n.attributes.position,o=0;for(let e=r.start,n=r.start+r.count;e<n;e++){let n=e;i&&(n=i.getX(n)),ms.fromBufferAttribute(a,n),o=Math.max(o,t.center.distanceToSquared(ms))}t.radius=Math.sqrt(o),r.boundingSphere=t}return t.copy(r.boundingSphere),t}setMatrixAt(e,t){this.validateInstanceId(e);let n=this._matricesTexture,r=this._matricesTexture.image.data;return t.toArray(r,e*16),n.needsUpdate=!0,this}getMatrixAt(e,t){return this.validateInstanceId(e),t.fromArray(this._matricesTexture.image.data,e*16)}setColorAt(e,t){return this.validateInstanceId(e),this._colorsTexture===null&&this._initColorsTexture(),t.toArray(this._colorsTexture.image.data,e*4),this._colorsTexture.needsUpdate=!0,this}getColorAt(e,t){return this.validateInstanceId(e),this._colorsTexture===null?t.isVector4?t.set(1,1,1,1):t.setRGB(1,1,1):t.fromArray(this._colorsTexture.image.data,e*4)}setVisibleAt(e,t){return this.validateInstanceId(e),this._instanceInfo[e].visible===t?this:(this._instanceInfo[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){return this.validateInstanceId(e),this._instanceInfo[e].visible}setGeometryIdAt(e,t){return this.validateInstanceId(e),this.validateGeometryId(t),this._instanceInfo[e].geometryIndex=t,this}getGeometryIdAt(e){return this.validateInstanceId(e),this._instanceInfo[e].geometryIndex}getGeometryRangeAt(e,t={}){this.validateGeometryId(e);let n=this._geometryInfo[e];return t.vertexStart=n.vertexStart,t.vertexCount=n.vertexCount,t.reservedVertexCount=n.reservedVertexCount,t.indexStart=n.indexStart,t.indexCount=n.indexCount,t.reservedIndexCount=n.reservedIndexCount,t.start=n.start,t.count=n.count,t}setInstanceCount(e){let t=this._availableInstanceIds,n=this._instanceInfo;for(t.sort(is);t[t.length-1]===n.length-1;)n.pop(),t.pop();if(e<n.length)throw Error(`BatchedMesh: Instance ids outside the range ${e} are being used. Cannot shrink instance count.`);let r=new Int32Array(e),i=new Int32Array(e);xs(this._multiDrawCounts,r),xs(this._multiDrawStarts,i),this._multiDrawCounts=r,this._multiDrawStarts=i,this._maxInstanceCount=e;let a=this._indirectTexture,o=this._matricesTexture,s=this._colorsTexture;a.dispose(),this._initIndirectTexture(),xs(a.image.data,this._indirectTexture.image.data),o.dispose(),this._initMatricesTexture(),xs(o.image.data,this._matricesTexture.image.data),s&&(s.dispose(),this._initColorsTexture(),xs(s.image.data,this._colorsTexture.image.data))}setGeometrySize(e,t){let n=[...this._geometryInfo].filter(e=>e.active);if(Math.max(...n.map(e=>e.vertexStart+e.reservedVertexCount))>e)throw Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(e=>e.indexStart+e.reservedIndexCount))>t)throw Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);let r=this.geometry;r.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Oa,this._initializeGeometry(r));let i=this.geometry;r.index&&xs(r.index.array,i.index.array);for(let e in r.attributes)xs(r.attributes[e].array,i.attributes[e].array)}raycast(e,t){let n=this._instanceInfo,r=this._geometryInfo,i=this.matrixWorld,a=this.geometry;vs.material=this.material,vs.geometry.index=a.index,vs.geometry.attributes=a.attributes,vs.geometry.boundingBox===null&&(vs.geometry.boundingBox=new Ri),vs.geometry.boundingSphere===null&&(vs.geometry.boundingSphere=new ba);for(let a=0,o=n.length;a<o;a++){if(!n[a].visible||!n[a].active)continue;let o=n[a].geometryIndex,s=r[o];vs.geometry.setDrawRange(s.start,s.count),this.getMatrixAt(a,vs.matrixWorld).premultiply(i),this.getBoundingBoxAt(o,vs.geometry.boundingBox),this.getBoundingSphereAt(o,vs.geometry.boundingSphere),vs.raycast(e,ys);for(let e=0,n=ys.length;e<n;e++){let n=ys[e];n.object=this,n.batchId=a,t.push(n)}ys.length=0}vs.material=null,vs.geometry.index=null,vs.geometry.attributes={},vs.geometry.setDrawRange(0,1/0)}copy(e){return super.copy(e),this.geometry=e.geometry.clone(),this.perObjectFrustumCulled=e.perObjectFrustumCulled,this.sortObjects=e.sortObjects,this.boundingBox=e.boundingBox===null?null:e.boundingBox.clone(),this.boundingSphere=e.boundingSphere===null?null:e.boundingSphere.clone(),this._geometryInfo=e._geometryInfo.map(e=>({...e,boundingBox:e.boundingBox===null?null:e.boundingBox.clone(),boundingSphere:e.boundingSphere===null?null:e.boundingSphere.clone()})),this._instanceInfo=e._instanceInfo.map(e=>({...e})),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,i){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;let a=r.getIndex(),o=a===null?1:a.array.BYTES_PER_ELEMENT,s=1;i.wireframe&&(s=2,o=r.attributes.position.count>65535?4:2);let c=this._instanceInfo,l=this._multiDrawStarts,u=this._multiDrawCounts,d=this._geometryInfo,f=this.perObjectFrustumCulled,p=this._indirectTexture,m=p.image.data,h=n.isArrayCamera?ds:us;f&&!n.isArrayCamera&&(cs.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),us.setFromProjectionMatrix(cs,n.coordinateSystem,n.reversedDepth));let g=0;if(this.sortObjects){cs.copy(this.matrixWorld).invert(),ms.setFromMatrixPosition(n.matrixWorld).applyMatrix4(cs),hs.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(cs);for(let e=0,t=c.length;e<t;e++)if(c[e].visible&&c[e].active){let t=c[e].geometryIndex;this.getMatrixAt(e,cs),this.getBoundingSphereAt(t,ps).applyMatrix4(cs);let r=!1;if(f&&(r=!h.intersectsSphere(ps,n)),!r){let n=d[t],r=gs.subVectors(ps.center,ms).dot(hs);_s.push(n.start,n.count,r,e)}}let e=_s.list,t=this.customSort;t===null?e.sort(i.transparent?os:as):t.call(this,e,n);for(let t=0,n=e.length;t<n;t++){let n=e[t];l[g]=n.start*o*s,u[g]=n.count*s,m[g]=n.index,g++}_s.reset()}else for(let e=0,t=c.length;e<t;e++)if(c[e].visible&&c[e].active){let t=c[e].geometryIndex,r=!1;if(f&&(this.getMatrixAt(e,cs),this.getBoundingSphereAt(t,ps).applyMatrix4(cs),r=!h.intersectsSphere(ps,n)),!r){let n=d[t];l[g]=n.start*o*s,u[g]=n.count*s,m[g]=e,g++}}p.needsUpdate=!0,this._multiDrawCount=g,this._visibilityChanged=!1}onBeforeShadow(e,t,n,r,i,a){this.onBeforeRender(e,null,r,i,a)}},Cs=class extends Na{constructor(e){super(),this.isLineBasicMaterial=!0,this.type=`LineBasicMaterial`,this.color=new I(16777215),this.map=null,this.linewidth=1,this.linecap=`round`,this.linejoin=`round`,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},ws=new P,Ts=new P,Es=new F,Ds=new oo,Os=new ba,ks=new P,As=new P,js=class extends fi{constructor(e=new Oa,t=new Cs){super(),this.isLine=!0,this.type=`Line`,this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[0];for(let e=1,r=t.count;e<r;e++)ws.fromBufferAttribute(t,e-1),Ts.fromBufferAttribute(t,e),n[e]=n[e-1],n[e]+=ws.distanceTo(Ts);e.setAttribute(`lineDistance`,new ga(n,1))}else j(`Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.`);return this}raycast(e,t){let n=this.geometry,r=this.matrixWorld,i=e.params.Line.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Os.copy(n.boundingSphere),Os.applyMatrix4(r),Os.radius+=i,e.ray.intersectsSphere(Os)===!1)return;Es.copy(r).invert(),Ds.copy(e.ray).applyMatrix4(Es);let o=i/((this.scale.x+this.scale.y+this.scale.z)/3),s=o*o,c=this.isLineSegments?2:1,l=n.index,u=n.attributes.position;if(l!==null){let n=Math.max(0,a.start),r=Math.min(l.count,a.start+a.count);for(let i=n,a=r-1;i<a;i+=c){let n=l.getX(i),r=l.getX(i+1),a=Ms(this,e,Ds,s,n,r,i);a&&t.push(a)}if(this.isLineLoop){let i=l.getX(r-1),a=l.getX(n),o=Ms(this,e,Ds,s,i,a,r-1);o&&t.push(o)}}else{let n=Math.max(0,a.start),r=Math.min(u.count,a.start+a.count);for(let i=n,a=r-1;i<a;i+=c){let n=Ms(this,e,Ds,s,i,i+1,i);n&&t.push(n)}if(this.isLineLoop){let i=Ms(this,e,Ds,s,r-1,n,r-1);i&&t.push(i)}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}};function Ms(e,t,n,r,i,a,o){let s=e.geometry.attributes.position;if(ws.fromBufferAttribute(s,i),Ts.fromBufferAttribute(s,a),n.distanceSqToSegment(ws,Ts,ks,As)>r)return;ks.applyMatrix4(e.matrixWorld);let c=t.ray.origin.distanceTo(ks);if(!(c<t.near||c>t.far))return{distance:c,point:As.clone().applyMatrix4(e.matrixWorld),index:o,face:null,faceIndex:null,barycoord:null,object:e}}var Ns=new P,Ps=new P,Fs=class extends js{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type=`LineSegments`}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[];for(let e=0,r=t.count;e<r;e+=2)Ns.fromBufferAttribute(t,e),Ps.fromBufferAttribute(t,e+1),n[e]=e===0?0:n[e-1],n[e+1]=n[e]+Ns.distanceTo(Ps);e.setAttribute(`lineDistance`,new ga(n,1))}else j(`LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.`);return this}},Is=class extends js{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type=`LineLoop`}},Ls=class extends Na{constructor(e){super(),this.isPointsMaterial=!0,this.type=`PointsMaterial`,this.color=new I(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},Rs=new F,zs=new oo,Bs=new ba,Vs=new P,Hs=class extends fi{constructor(e=new Oa,t=new Ls){super(),this.isPoints=!0,this.type=`Points`,this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){let n=this.geometry,r=this.matrixWorld,i=e.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Bs.copy(n.boundingSphere),Bs.applyMatrix4(r),Bs.radius+=i,e.ray.intersectsSphere(Bs)===!1)return;Rs.copy(r).invert(),zs.copy(e.ray).applyMatrix4(Rs);let o=i/((this.scale.x+this.scale.y+this.scale.z)/3),s=o*o,c=n.index,l=n.attributes.position;if(c!==null){let n=Math.max(0,a.start),i=Math.min(c.count,a.start+a.count);for(let a=n,o=i;a<o;a++){let n=c.getX(a);Vs.fromBufferAttribute(l,n),Us(Vs,n,s,r,e,t,this)}}else{let n=Math.max(0,a.start),i=Math.min(l.count,a.start+a.count);for(let a=n,o=i;a<o;a++)Vs.fromBufferAttribute(l,a),Us(Vs,a,s,r,e,t,this)}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}};function Us(e,t,n,r,i,a,o){let s=zs.distanceSqToPoint(e);if(s<n){let n=new P;zs.closestPointToPoint(e,n),n.applyMatrix4(r);let c=i.ray.origin.distanceTo(n);if(c<i.near||c>i.far)return;a.push({distance:c,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:o})}}var Ws=class extends Mr{constructor(e,t,n,r,i=Te,a=Te,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;let l=this;function u(){l.needsUpdate=!0,l._requestVideoFrameCallbackId=e.requestVideoFrameCallback(u)}`requestVideoFrameCallback`in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(u))}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;!(`requestVideoFrameCallback`in e)&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}},Gs=class extends Ws{constructor(e,t,n,r,i,a,o,s){super({},e,t,n,r,i,a,o,s),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}},Ks=class extends Mr{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=be,this.minFilter=be,this.generateMipmaps=!1,this.needsUpdate=!0}},qs=class extends Mr{constructor(e,t,n,r,i,a,o,s,c,l,u,d){super(null,a,o,s,c,l,r,i,u,d),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}},Js=class extends qs{constructor(e,t,n,r,i,a){super(e,t,n,i,a),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=ve,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Ys=class extends qs{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,301),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}},Xs=class extends Mr{constructor(e=[],t=301,n,r,i,a,o,s,c,l){super(e,t,n,r,i,a,o,s,c,l),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}},Zs=class extends Mr{constructor(e,t,n,r,i,a,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isCanvasTexture=!0,this.needsUpdate=!0}},Qs=class extends Mr{constructor(e,t,n,r,i,a,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isHTMLTexture=!0,this.generateMipmaps=!1,this.needsUpdate=!0;let l=e?e.parentNode:null;l!==null&&`requestPaint`in l&&(l.onpaint=()=>{this.needsUpdate=!0},l.requestPaint())}dispose(){let e=this.image?this.image.parentNode:null;e!==null&&`onpaint`in e&&(e.onpaint=null),super.dispose()}},$s=class extends Mr{constructor(e,t,n=Ne,r,i,a,o=be,s=be,c,l=We,u=1){if(l!==1026&&l!==1027)throw Error(`DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat`);super({width:e,height:t,depth:u},r,i,a,o,s,l,n,c),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Or(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},ec=class extends $s{constructor(e,t=Ne,n=301,r,i,a=be,o=be,s,c=We){let l={width:e,height:e,depth:1},u=[l,l,l,l,l,l];super(e,e,t,n,r,i,a,o,s,c),this.image=u,this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}},tc=class extends Mr{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}},nc=class e extends Oa{constructor(e=1,t=1,n=1,r=1,i=1,a=1){super(),this.type=`BoxGeometry`,this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:i,depthSegments:a};let o=this;r=Math.floor(r),i=Math.floor(i),a=Math.floor(a);let s=[],c=[],l=[],u=[],d=0,f=0;p(`z`,`y`,`x`,-1,-1,n,t,e,a,i,0),p(`z`,`y`,`x`,1,-1,n,t,-e,a,i,1),p(`x`,`z`,`y`,1,1,e,n,t,r,a,2),p(`x`,`z`,`y`,1,-1,e,n,-t,r,a,3),p(`x`,`y`,`z`,1,-1,e,t,n,r,i,4),p(`x`,`y`,`z`,-1,-1,e,t,-n,r,i,5),this.setIndex(s),this.setAttribute(`position`,new ga(c,3)),this.setAttribute(`normal`,new ga(l,3)),this.setAttribute(`uv`,new ga(u,2));function p(e,t,n,r,i,a,p,m,h,g,_){let v=a/h,y=p/g,b=a/2,x=p/2,S=m/2,C=h+1,w=g+1,T=0,E=0,D=new P;for(let a=0;a<w;a++){let o=a*y-x;for(let s=0;s<C;s++)D[e]=(s*v-b)*r,D[t]=o*i,D[n]=S,c.push(D.x,D.y,D.z),D[e]=0,D[t]=0,D[n]=m>0?1:-1,l.push(D.x,D.y,D.z),u.push(s/h),u.push(1-a/g),T+=1}for(let e=0;e<g;e++)for(let t=0;t<h;t++){let n=d+t+C*e,r=d+t+C*(e+1),i=d+(t+1)+C*(e+1),a=d+(t+1)+C*e;s.push(n,r,a),s.push(r,i,a),E+=6}o.addGroup(f,E,_),f+=E,d+=T}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}},rc=class e extends Oa{constructor(e=1,t=1,n=4,r=8,i=1){super(),this.type=`CapsuleGeometry`,this.parameters={radius:e,height:t,capSegments:n,radialSegments:r,heightSegments:i},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),r=Math.max(3,Math.floor(r)),i=Math.max(1,Math.floor(i));let a=[],o=[],s=[],c=[],l=t/2,u=Math.PI/2*e,d=t,f=2*u+d,p=n*2+i,m=r+1,h=new P,g=new P;for(let _=0;_<=p;_++){let v=0,y=0,b=0,x=0;if(_<=n){let t=_/n,r=t*Math.PI/2;y=-l-e*Math.cos(r),b=e*Math.sin(r),x=-e*Math.cos(r),v=t*u}else if(_<=n+i){let r=(_-n)/i;y=-l+r*t,b=e,x=0,v=u+r*d}else{let t=(_-n-i)/n,r=t*Math.PI/2;y=l+e*Math.sin(r),b=e*Math.cos(r),x=e*Math.sin(r),v=u+d+t*u}let S=Math.max(0,Math.min(1,v/f)),C=0;_===0?C=.5/r:_===p&&(C=-.5/r);for(let e=0;e<=r;e++){let t=e/r,n=t*Math.PI*2,i=Math.sin(n),a=Math.cos(n);g.x=-b*a,g.y=y,g.z=b*i,o.push(g.x,g.y,g.z),h.set(-b*a,x,b*i),h.normalize(),s.push(h.x,h.y,h.z),c.push(t+C,S)}if(_>0){let e=(_-1)*m;for(let t=0;t<r;t++){let n=e+t,r=e+t+1,i=_*m+t,o=_*m+t+1;a.push(n,r,i),a.push(r,o,i)}}}this.setIndex(a),this.setAttribute(`position`,new ga(o,3)),this.setAttribute(`normal`,new ga(s,3)),this.setAttribute(`uv`,new ga(c,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.height,t.capSegments,t.radialSegments,t.heightSegments)}},ic=class e extends Oa{constructor(e=1,t=32,n=0,r=Math.PI*2){super(),this.type=`CircleGeometry`,this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:r},t=Math.max(3,t);let i=[],a=[],o=[],s=[],c=new P,l=new N;a.push(0,0,0),o.push(0,0,1),s.push(.5,.5);for(let i=0,u=3;i<=t;i++,u+=3){let d=n+i/t*r;c.x=e*Math.cos(d),c.y=e*Math.sin(d),a.push(c.x,c.y,c.z),o.push(0,0,1),l.x=(a[u]/e+1)/2,l.y=(a[u+1]/e+1)/2,s.push(l.x,l.y)}for(let e=1;e<=t;e++)i.push(e,e+1,0);this.setIndex(i),this.setAttribute(`position`,new ga(a,3)),this.setAttribute(`normal`,new ga(o,3)),this.setAttribute(`uv`,new ga(s,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.segments,t.thetaStart,t.thetaLength)}},ac=class e extends Oa{constructor(e=1,t=1,n=1,r=32,i=1,a=!1,o=0,s=Math.PI*2){super(),this.type=`CylinderGeometry`,this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:r,heightSegments:i,openEnded:a,thetaStart:o,thetaLength:s};let c=this;r=Math.floor(r),i=Math.floor(i);let l=[],u=[],d=[],f=[],p=0,m=[],h=n/2,g=0;_(),a===!1&&(e>0&&v(!0),t>0&&v(!1)),this.setIndex(l),this.setAttribute(`position`,new ga(u,3)),this.setAttribute(`normal`,new ga(d,3)),this.setAttribute(`uv`,new ga(f,2));function _(){let a=new P,_=new P,v=0,y=(t-e)/n;for(let c=0;c<=i;c++){let l=[],g=c/i,v=g*(t-e)+e;for(let e=0;e<=r;e++){let t=e/r,i=t*s+o,c=Math.sin(i),m=Math.cos(i);_.x=v*c,_.y=-g*n+h,_.z=v*m,u.push(_.x,_.y,_.z),a.set(c,y,m).normalize(),d.push(a.x,a.y,a.z),f.push(t,1-g),l.push(p++)}m.push(l)}for(let n=0;n<r;n++)for(let r=0;r<i;r++){let a=m[r][n],o=m[r+1][n],s=m[r+1][n+1],c=m[r][n+1];(e>0||r!==0)&&(l.push(a,o,c),v+=3),(t>0||r!==i-1)&&(l.push(o,s,c),v+=3)}c.addGroup(g,v,0),g+=v}function v(n){let i=p,a=new N,m=new P,_=0,v=n===!0?e:t,y=n===!0?1:-1;for(let e=1;e<=r;e++)u.push(0,h*y,0),d.push(0,y,0),f.push(.5,.5),p++;let b=p;for(let e=0;e<=r;e++){let t=e/r*s+o,n=Math.cos(t),i=Math.sin(t);m.x=v*i,m.y=h*y,m.z=v*n,u.push(m.x,m.y,m.z),d.push(0,y,0),a.x=n*.5+.5,a.y=i*.5*y+.5,f.push(a.x,a.y),p++}for(let e=0;e<r;e++){let t=i+e,r=b+e;n===!0?l.push(r,r+1,t):l.push(r+1,r,t),_+=3}c.addGroup(g,_,n===!0?1:2),g+=_}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}},oc=class e extends ac{constructor(e=1,t=1,n=32,r=1,i=!1,a=0,o=Math.PI*2){super(0,e,t,n,r,i,a,o),this.type=`ConeGeometry`,this.parameters={radius:e,height:t,radialSegments:n,heightSegments:r,openEnded:i,thetaStart:a,thetaLength:o}}static fromJSON(t){return new e(t.radius,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}},sc=class e extends Oa{constructor(e=[],t=[],n=1,r=0){super(),this.type=`PolyhedronGeometry`,this.parameters={vertices:e,indices:t,radius:n,detail:r};let i=[],a=[];o(r),c(n),l(),this.setAttribute(`position`,new ga(i,3)),this.setAttribute(`normal`,new ga(i.slice(),3)),this.setAttribute(`uv`,new ga(a,2)),r===0?this.computeVertexNormals():this.normalizeNormals();function o(e){let n=new P,r=new P,i=new P;for(let a=0;a<t.length;a+=3)f(t[a+0],n),f(t[a+1],r),f(t[a+2],i),s(n,r,i,e)}function s(e,t,n,r){let i=r+1,a=[];for(let r=0;r<=i;r++){a[r]=[];let o=e.clone().lerp(n,r/i),s=t.clone().lerp(n,r/i),c=i-r;for(let e=0;e<=c;e++)e===0&&r===i?a[r][e]=o:a[r][e]=o.clone().lerp(s,e/c)}for(let e=0;e<i;e++)for(let t=0;t<2*(i-e)-1;t++){let n=Math.floor(t/2);t%2==0?(d(a[e][n+1]),d(a[e+1][n]),d(a[e][n])):(d(a[e][n+1]),d(a[e+1][n+1]),d(a[e+1][n]))}}function c(e){let t=new P;for(let n=0;n<i.length;n+=3)t.x=i[n+0],t.y=i[n+1],t.z=i[n+2],t.normalize().multiplyScalar(e),i[n+0]=t.x,i[n+1]=t.y,i[n+2]=t.z}function l(){let e=new P;for(let t=0;t<i.length;t+=3){e.x=i[t+0],e.y=i[t+1],e.z=i[t+2];let n=h(e)/2/Math.PI+.5,r=g(e)/Math.PI+.5;a.push(n,1-r)}p(),u()}function u(){for(let e=0;e<a.length;e+=6){let t=a[e+0],n=a[e+2],r=a[e+4];Math.max(t,n,r)>.9&&Math.min(t,n,r)<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),r<.2&&(a[e+4]+=1))}}function d(e){i.push(e.x,e.y,e.z)}function f(t,n){let r=t*3;n.x=e[r+0],n.y=e[r+1],n.z=e[r+2]}function p(){let e=new P,t=new P,n=new P,r=new P,o=new N,s=new N,c=new N;for(let l=0,u=0;l<i.length;l+=9,u+=6){e.set(i[l+0],i[l+1],i[l+2]),t.set(i[l+3],i[l+4],i[l+5]),n.set(i[l+6],i[l+7],i[l+8]),o.set(a[u+0],a[u+1]),s.set(a[u+2],a[u+3]),c.set(a[u+4],a[u+5]),r.copy(e).add(t).add(n).divideScalar(3);let d=h(r);m(o,u+0,e,d),m(s,u+2,t,d),m(c,u+4,n,d)}}function m(e,t,n,r){r<0&&e.x===1&&(a[t]=e.x-1),n.x===0&&n.z===0&&(a[t]=r/2/Math.PI+.5)}function h(e){return Math.atan2(e.z,-e.x)}function g(e){return Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.vertices,t.indices,t.radius,t.detail)}},cc=class e extends sc{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,r=1/n,i=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-n,0,-r,n,0,r,-n,0,r,n,-r,-n,0,-r,n,0,r,-n,0,r,n,0,-n,0,-r,n,0,-r,-n,0,r,n,0,r];super(i,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type=`DodecahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},lc=new P,uc=new P,dc=new P,fc=new Li,pc=class extends Oa{constructor(e=null,t=1){if(super(),this.type=`EdgesGeometry`,this.parameters={geometry:e,thresholdAngle:t},e!==null){let n=10**4,r=Math.cos(Un*t),i=e.getIndex(),a=e.getAttribute(`position`),o=i?i.count:a.count,s=[0,0,0],c=[`a`,`b`,`c`],l=[,,,],u={},d=[];for(let e=0;e<o;e+=3){i?(s[0]=i.getX(e),s[1]=i.getX(e+1),s[2]=i.getX(e+2)):(s[0]=e,s[1]=e+1,s[2]=e+2);let{a:t,b:o,c:f}=fc;if(t.fromBufferAttribute(a,s[0]),o.fromBufferAttribute(a,s[1]),f.fromBufferAttribute(a,s[2]),fc.getNormal(dc),l[0]=`${Math.round(t.x*n)},${Math.round(t.y*n)},${Math.round(t.z*n)}`,l[1]=`${Math.round(o.x*n)},${Math.round(o.y*n)},${Math.round(o.z*n)}`,l[2]=`${Math.round(f.x*n)},${Math.round(f.y*n)},${Math.round(f.z*n)}`,!(l[0]===l[1]||l[1]===l[2]||l[2]===l[0]))for(let e=0;e<3;e++){let t=(e+1)%3,n=l[e],i=l[t],a=fc[c[e]],o=fc[c[t]],f=`${n}_${i}`,p=`${i}_${n}`;p in u&&u[p]?(dc.dot(u[p].normal)<=r&&(d.push(a.x,a.y,a.z),d.push(o.x,o.y,o.z)),u[p]=null):f in u||(u[f]={index0:s[e],index1:s[t],normal:dc.clone()})}}for(let e in u)if(u[e]){let{index0:t,index1:n}=u[e];lc.fromBufferAttribute(a,t),uc.fromBufferAttribute(a,n),d.push(lc.x,lc.y,lc.z),d.push(uc.x,uc.y,uc.z)}this.setAttribute(`position`,new ga(d,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}},mc=class{constructor(){this.type=`Curve`,this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}getPoint(){j(`Curve: .getPoint() not implemented.`)}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,r=this.getPoint(0),i=0;t.push(0);for(let a=1;a<=e;a++)n=this.getPoint(a/e),i+=n.distanceTo(r),t.push(i),r=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t=null){let n=this.getLengths(),r=0,i=n.length,a;a=t||e*n[i-1];let o=0,s=i-1,c;for(;o<=s;)if(r=Math.floor(o+(s-o)/2),c=n[r]-a,c<0)o=r+1;else if(c>0)s=r-1;else{s=r;break}if(r=s,n[r]===a)return r/(i-1);let l=n[r],u=n[r+1]-l,d=(a-l)/u;return(r+d)/(i-1)}getTangent(e,t){let n=1e-4,r=e-n,i=e+n;r<0&&(r=0),i>1&&(i=1);let a=this.getPoint(r),o=this.getPoint(i),s=t||(a.isVector2?new N:new P);return s.copy(o).sub(a).normalize(),s}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){let n=new P,r=[],i=[],a=[],o=new P,s=new F;for(let t=0;t<=e;t++){let n=t/e;r[t]=this.getTangentAt(n,new P)}i[0]=new P,a[0]=new P;let c=Number.MAX_VALUE,l=Math.abs(r[0].x),u=Math.abs(r[0].y),d=Math.abs(r[0].z);l<=c&&(c=l,n.set(1,0,0)),u<=c&&(c=u,n.set(0,1,0)),d<=c&&n.set(0,0,1),o.crossVectors(r[0],n).normalize(),i[0].crossVectors(r[0],o),a[0].crossVectors(r[0],i[0]);for(let t=1;t<=e;t++){if(i[t]=i[t-1].clone(),a[t]=a[t-1].clone(),o.crossVectors(r[t-1],r[t]),o.length()>2**-52){o.normalize();let e=Math.acos(Kn(r[t-1].dot(r[t]),-1,1));i[t].applyMatrix4(s.makeRotationAxis(o,e))}a[t].crossVectors(r[t],i[t])}if(t===!0){let t=Math.acos(Kn(i[0].dot(i[e]),-1,1));t/=e,r[0].dot(o.crossVectors(i[0],i[e]))>0&&(t=-t);for(let n=1;n<=e;n++)i[n].applyMatrix4(s.makeRotationAxis(r[n],t*n)),a[n].crossVectors(r[n],i[n])}return{tangents:r,normals:i,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let 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}},hc=class extends mc{constructor(e=0,t=0,n=1,r=1,i=0,a=Math.PI*2,o=!1,s=0){super(),this.isEllipseCurve=!0,this.type=`EllipseCurve`,this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=r,this.aStartAngle=i,this.aEndAngle=a,this.aClockwise=o,this.aRotation=s}getPoint(e,t=new N){let n=t,r=Math.PI*2,i=this.aEndAngle-this.aStartAngle,a=Math.abs(i)<2**-52;for(;i<0;)i+=r;for(;i>r;)i-=r;i<2**-52&&(i=a?0:r),this.aClockwise===!0&&!a&&(i===r?i=-r:i-=r);let o=this.aStartAngle+e*i,s=this.aX+this.xRadius*Math.cos(o),c=this.aY+this.yRadius*Math.sin(o);if(this.aRotation!==0){let e=Math.cos(this.aRotation),t=Math.sin(this.aRotation),n=s-this.aX,r=c-this.aY;s=n*e-r*t+this.aX,c=n*t+r*e+this.aY}return n.set(s,c)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}},gc=class extends hc{constructor(e,t,n,r,i,a){super(e,t,n,n,r,i,a),this.isArcCurve=!0,this.type=`ArcCurve`}};function _c(){let e=0,t=0,n=0,r=0;function i(i,a,o,s){e=i,t=o,n=-3*i+3*a-2*o-s,r=2*i-2*a+o+s}return{initCatmullRom:function(e,t,n,r,a){i(t,n,a*(n-e),a*(r-t))},initNonuniformCatmullRom:function(e,t,n,r,a,o,s){let c=(t-e)/a-(n-e)/(a+o)+(n-t)/o,l=(n-t)/o-(r-t)/(o+s)+(r-n)/s;c*=o,l*=o,i(t,n,c,l)},calc:function(i){let a=i*i,o=a*i;return e+t*i+n*a+r*o}}}var vc=new P,yc=new P,bc=new _c,xc=new _c,Sc=new _c,Cc=class extends mc{constructor(e=[],t=!1,n=`centripetal`,r=.5){super(),this.isCatmullRomCurve3=!0,this.type=`CatmullRomCurve3`,this.points=e,this.closed=t,this.curveType=n,this.tension=r}getPoint(e,t=new P){let n=t,r=this.points,i=r.length,a=(i-+!this.closed)*e,o=Math.floor(a),s=a-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/i)+1)*i:s===0&&o===i-1&&(o=i-2,s=1);let c,l;this.closed||o>0?c=r[(o-1)%i]:(yc.subVectors(r[0],r[1]).add(r[0]),c=yc);let u=r[o%i],d=r[(o+1)%i];if(this.closed||o+2<i?l=r[(o+2)%i]:(vc.subVectors(r[i-1],r[i-2]).add(r[i-1]),l=vc),this.curveType===`centripetal`||this.curveType===`chordal`){let e=this.curveType===`chordal`?.5:.25,t=c.distanceToSquared(u)**+e,n=u.distanceToSquared(d)**+e,r=d.distanceToSquared(l)**+e;n<1e-4&&(n=1),t<1e-4&&(t=n),r<1e-4&&(r=n),bc.initNonuniformCatmullRom(c.x,u.x,d.x,l.x,t,n,r),xc.initNonuniformCatmullRom(c.y,u.y,d.y,l.y,t,n,r),Sc.initNonuniformCatmullRom(c.z,u.z,d.z,l.z,t,n,r)}else this.curveType===`catmullrom`&&(bc.initCatmullRom(c.x,u.x,d.x,l.x,this.tension),xc.initCatmullRom(c.y,u.y,d.y,l.y,this.tension),Sc.initCatmullRom(c.z,u.z,d.z,l.z,this.tension));return n.set(bc.calc(s),xc.calc(s),Sc.calc(s)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(n.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let n=this.points[t];e.points.push(n.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(new P().fromArray(n))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function wc(e,t,n,r,i){let a=(r-t)*.5,o=(i-n)*.5,s=e*e,c=e*s;return(2*n-2*r+a+o)*c+(-3*n+3*r-2*a-o)*s+a*e+n}function Tc(e,t){let n=1-e;return n*n*t}function Ec(e,t){return 2*(1-e)*e*t}function Dc(e,t){return e*e*t}function Oc(e,t,n,r){return Tc(e,t)+Ec(e,n)+Dc(e,r)}function kc(e,t){let n=1-e;return n*n*n*t}function Ac(e,t){let n=1-e;return 3*n*n*e*t}function jc(e,t){return 3*(1-e)*e*e*t}function Mc(e,t){return e*e*e*t}function Nc(e,t,n,r,i){return kc(e,t)+Ac(e,n)+jc(e,r)+Mc(e,i)}var Pc=class extends mc{constructor(e=new N,t=new N,n=new N,r=new N){super(),this.isCubicBezierCurve=!0,this.type=`CubicBezierCurve`,this.v0=e,this.v1=t,this.v2=n,this.v3=r}getPoint(e,t=new N){let n=t,r=this.v0,i=this.v1,a=this.v2,o=this.v3;return n.set(Nc(e,r.x,i.x,a.x,o.x),Nc(e,r.y,i.y,a.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Fc=class extends mc{constructor(e=new P,t=new P,n=new P,r=new P){super(),this.isCubicBezierCurve3=!0,this.type=`CubicBezierCurve3`,this.v0=e,this.v1=t,this.v2=n,this.v3=r}getPoint(e,t=new P){let n=t,r=this.v0,i=this.v1,a=this.v2,o=this.v3;return n.set(Nc(e,r.x,i.x,a.x,o.x),Nc(e,r.y,i.y,a.y,o.y),Nc(e,r.z,i.z,a.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Ic=class extends mc{constructor(e=new N,t=new N){super(),this.isLineCurve=!0,this.type=`LineCurve`,this.v1=e,this.v2=t}getPoint(e,t=new N){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new N){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Lc=class extends mc{constructor(e=new P,t=new P){super(),this.isLineCurve3=!0,this.type=`LineCurve3`,this.v1=e,this.v2=t}getPoint(e,t=new P){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new P){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Rc=class extends mc{constructor(e=new N,t=new N,n=new N){super(),this.isQuadraticBezierCurve=!0,this.type=`QuadraticBezierCurve`,this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new N){let n=t,r=this.v0,i=this.v1,a=this.v2;return n.set(Oc(e,r.x,i.x,a.x),Oc(e,r.y,i.y,a.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},zc=class extends mc{constructor(e=new P,t=new P,n=new P){super(),this.isQuadraticBezierCurve3=!0,this.type=`QuadraticBezierCurve3`,this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new P){let n=t,r=this.v0,i=this.v1,a=this.v2;return n.set(Oc(e,r.x,i.x,a.x),Oc(e,r.y,i.y,a.y),Oc(e,r.z,i.z,a.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Bc=class extends mc{constructor(e=[]){super(),this.isSplineCurve=!0,this.type=`SplineCurve`,this.points=e}getPoint(e,t=new N){let n=t,r=this.points,i=(r.length-1)*e,a=Math.floor(i),o=i-a,s=r[a===0?a:a-1],c=r[a],l=r[a>r.length-2?r.length-1:a+1],u=r[a>r.length-3?r.length-1:a+2];return n.set(wc(o,s.x,c.x,l.x,u.x),wc(o,s.y,c.y,l.y,u.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(n.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let n=this.points[t];e.points.push(n.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(new N().fromArray(n))}return this}},Vc=Object.freeze({__proto__:null,ArcCurve:gc,CatmullRomCurve3:Cc,CubicBezierCurve:Pc,CubicBezierCurve3:Fc,EllipseCurve:hc,LineCurve:Ic,LineCurve3:Lc,QuadraticBezierCurve:Rc,QuadraticBezierCurve3:zc,SplineCurve:Bc}),Hc=class extends mc{constructor(){super(),this.type=`CurvePath`,this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);if(!e.equals(t)){let n=e.isVector2===!0?`LineCurve`:`LineCurve3`;this.curves.push(new Vc[n](t,e))}return this}getPoint(e,t){let n=e*this.getLength(),r=this.getCurveLengths(),i=0;for(;i<r.length;){if(r[i]>=n){let e=r[i]-n,a=this.curves[i],o=a.getLength(),s=o===0?0:1-e/o;return a.getPointAt(s,t)}i++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,r=this.curves.length;n<r;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t=[],n;for(let r=0,i=this.curves;r<i.length;r++){let a=i[r],o=a.isEllipseCurve?e*2:a.isLineCurve||a.isLineCurve3?1:a.isSplineCurve?e*a.points.length:e,s=a.getPoints(o);for(let e=0;e<s.length;e++){let r=s[e];n&&n.equals(r)||(t.push(r),n=r)}}return this.autoClose&&t.length>1&&!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;t<n;t++){let n=e.curves[t];this.curves.push(n.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,n=this.curves.length;t<n;t++){let n=this.curves[t];e.curves.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let n=e.curves[t];this.curves.push(new Vc[n.type]().fromJSON(n))}return this}},Uc=class extends Hc{constructor(e){super(),this.type=`Path`,this.currentPoint=new N,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let n=new Ic(this.currentPoint.clone(),new N(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,n,r){let i=new Rc(this.currentPoint.clone(),new N(e,t),new N(n,r));return this.curves.push(i),this.currentPoint.set(n,r),this}bezierCurveTo(e,t,n,r,i,a){let o=new Pc(this.currentPoint.clone(),new N(e,t),new N(n,r),new N(i,a));return this.curves.push(o),this.currentPoint.set(i,a),this}splineThru(e){let t=new Bc([this.currentPoint.clone()].concat(e));return this.curves.push(t),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,n,r,i,a){let o=this.currentPoint.x,s=this.currentPoint.y;return this.absarc(e+o,t+s,n,r,i,a),this}absarc(e,t,n,r,i,a){return this.absellipse(e,t,n,n,r,i,a),this}ellipse(e,t,n,r,i,a,o,s){let c=this.currentPoint.x,l=this.currentPoint.y;return this.absellipse(e+c,t+l,n,r,i,a,o,s),this}absellipse(e,t,n,r,i,a,o,s){let c=new hc(e,t,n,r,i,a,o,s);if(this.curves.length>0){let e=c.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(c);let l=c.getPoint(1);return this.currentPoint.copy(l),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},Wc=class extends Uc{constructor(e){super(e),this.uuid=Gn(),this.type=`Shape`,this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,r=this.holes.length;n<r;n++)t[n]=this.holes[n].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let n=e.holes[t];this.holes.push(n.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,n=this.holes.length;t<n;t++){let n=this.holes[t];e.holes.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let n=e.holes[t];this.holes.push(new Uc().fromJSON(n))}return this}};function Gc(e,t,n=2){let r=t&&t.length,i=r?t[0]*n:e.length,a=Kc(e,0,i,n,!0),o=[];if(!a||a.next===a.prev)return o;let s,c,l;if(r&&(a=$c(e,t,a,n)),e.length>80*n){s=e[0],c=e[1];let t=s,r=c;for(let a=n;a<i;a+=n){let n=e[a],i=e[a+1];n<s&&(s=n),i<c&&(c=i),n>t&&(t=n),i>r&&(r=i)}l=Math.max(t-s,r-c),l=l===0?0:32767/l}return Jc(a,o,n,s,c,l,0),o}function Kc(e,t,n,r,i){let a;if(i===Cl(e,t,n,r)>0)for(let i=t;i<n;i+=r)a=bl(i/r|0,e[i],e[i+1],a);else for(let i=n-r;i>=t;i-=r)a=bl(i/r|0,e[i],e[i+1],a);return a&&fl(a,a.next)&&(xl(a),a=a.next),a}function qc(e,t){if(!e)return e;t||=e;let n=e,r;do if(r=!1,!n.steiner&&(fl(n,n.next)||dl(n.prev,n,n.next)===0)){if(xl(n),n=t=n.prev,n===n.next)break;r=!0}else n=n.next;while(r||n!==t);return t}function Jc(e,t,n,r,i,a,o){if(!e)return;!o&&a&&il(e,r,i,a);let s=e;for(;e.prev!==e.next;){let c=e.prev,l=e.next;if(a?Xc(e,r,i,a):Yc(e)){t.push(c.i,e.i,l.i),xl(e),e=l.next,s=l.next;continue}if(e=l,e===s){o?o===1?(e=Zc(qc(e),t),Jc(e,t,n,r,i,a,2)):o===2&&Qc(e,t,n,r,i,a):Jc(qc(e),t,n,r,i,a,1);break}}}function Yc(e){let t=e.prev,n=e,r=e.next;if(dl(t,n,r)>=0)return!1;let i=t.x,a=n.x,o=r.x,s=t.y,c=n.y,l=r.y,u=Math.min(i,a,o),d=Math.min(s,c,l),f=Math.max(i,a,o),p=Math.max(s,c,l),m=r.next;for(;m!==t;){if(m.x>=u&&m.x<=f&&m.y>=d&&m.y<=p&&ll(i,s,a,c,o,l,m.x,m.y)&&dl(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function Xc(e,t,n,r){let i=e.prev,a=e,o=e.next;if(dl(i,a,o)>=0)return!1;let s=i.x,c=a.x,l=o.x,u=i.y,d=a.y,f=o.y,p=Math.min(s,c,l),m=Math.min(u,d,f),h=Math.max(s,c,l),g=Math.max(u,d,f),_=ol(p,m,t,n,r),v=ol(h,g,t,n,r),y=e.prevZ,b=e.nextZ;for(;y&&y.z>=_&&b&&b.z<=v;){if(y.x>=p&&y.x<=h&&y.y>=m&&y.y<=g&&y!==i&&y!==o&&ll(s,u,c,d,l,f,y.x,y.y)&&dl(y.prev,y,y.next)>=0||(y=y.prevZ,b.x>=p&&b.x<=h&&b.y>=m&&b.y<=g&&b!==i&&b!==o&&ll(s,u,c,d,l,f,b.x,b.y)&&dl(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;y&&y.z>=_;){if(y.x>=p&&y.x<=h&&y.y>=m&&y.y<=g&&y!==i&&y!==o&&ll(s,u,c,d,l,f,y.x,y.y)&&dl(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;b&&b.z<=v;){if(b.x>=p&&b.x<=h&&b.y>=m&&b.y<=g&&b!==i&&b!==o&&ll(s,u,c,d,l,f,b.x,b.y)&&dl(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function Zc(e,t){let n=e;do{let r=n.prev,i=n.next.next;!fl(r,i)&&pl(r,n,n.next,i)&&_l(r,i)&&_l(i,r)&&(t.push(r.i,n.i,i.i),xl(n),xl(n.next),n=e=i),n=n.next}while(n!==e);return qc(n)}function Qc(e,t,n,r,i,a){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&ul(o,e)){let s=yl(o,e);o=qc(o,o.next),s=qc(s,s.next),Jc(o,t,n,r,i,a,0),Jc(s,t,n,r,i,a,0);return}e=e.next}o=o.next}while(o!==e)}function $c(e,t,n,r){let i=[];for(let n=0,a=t.length;n<a;n++){let o=Kc(e,t[n]*r,n<a-1?t[n+1]*r:e.length,r,!1);o===o.next&&(o.steiner=!0),i.push(sl(o))}i.sort(el);for(let e=0;e<i.length;e++)n=tl(i[e],n);return n}function el(e,t){let n=e.x-t.x;return n===0&&(n=e.y-t.y,n===0&&(n=(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x))),n}function tl(e,t){let n=nl(e,t);if(!n)return t;let r=yl(n,e);return qc(r,r.next),qc(n,n.next)}function nl(e,t){let n=t,r=e.x,i=e.y,a=-1/0,o;if(fl(e,n))return n;do{if(fl(e,n.next))return n.next;if(i<=n.y&&i>=n.next.y&&n.next.y!==n.y){let e=n.x+(i-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(e<=r&&e>a&&(a=e,o=n.x<n.next.x?n:n.next,e===r))return o}n=n.next}while(n!==t);if(!o)return null;let s=o,c=o.x,l=o.y,u=1/0;n=o;do{if(r>=n.x&&n.x>=c&&r!==n.x&&cl(i<l?r:a,i,c,l,i<l?a:r,i,n.x,n.y)){let t=Math.abs(i-n.y)/(r-n.x);_l(n,e)&&(t<u||t===u&&(n.x>o.x||n.x===o.x&&rl(o,n)))&&(o=n,u=t)}n=n.next}while(n!==s);return o}function rl(e,t){return dl(e.prev,e,t.prev)<0&&dl(t.next,e,e.next)<0}function il(e,t,n,r){let i=e;do i.z===0&&(i.z=ol(i.x,i.y,t,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,al(i)}function al(e){let t,n=1;do{let r=e,i;e=null;let a=null;for(t=0;r;){t++;let o=r,s=0;for(let e=0;e<n&&(s++,o=o.nextZ,o);e++);let c=n;for(;s>0||c>0&&o;)s!==0&&(c===0||!o||r.z<=o.z)?(i=r,r=r.nextZ,s--):(i=o,o=o.nextZ,c--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=o}a.nextZ=null,n*=2}while(t>1);return e}function ol(e,t,n,r,i){return e=(e-n)*i|0,t=(t-r)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function sl(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function cl(e,t,n,r,i,a,o,s){return(i-o)*(t-s)>=(e-o)*(a-s)&&(e-o)*(r-s)>=(n-o)*(t-s)&&(n-o)*(a-s)>=(i-o)*(r-s)}function ll(e,t,n,r,i,a,o,s){return!(e===o&&t===s)&&cl(e,t,n,r,i,a,o,s)}function ul(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!gl(e,t)&&(_l(e,t)&&_l(t,e)&&vl(e,t)&&(dl(e.prev,e,t.prev)||dl(e,t.prev,t))||fl(e,t)&&dl(e.prev,e,e.next)>0&&dl(t.prev,t,t.next)>0)}function dl(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function fl(e,t){return e.x===t.x&&e.y===t.y}function pl(e,t,n,r){let i=hl(dl(e,t,n)),a=hl(dl(e,t,r)),o=hl(dl(n,r,e)),s=hl(dl(n,r,t));return!!(i!==a&&o!==s||i===0&&ml(e,n,t)||a===0&&ml(e,r,t)||o===0&&ml(n,e,r)||s===0&&ml(n,t,r))}function ml(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function hl(e){return e>0?1:e<0?-1:0}function gl(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&pl(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function _l(e,t){return dl(e.prev,e,e.next)<0?dl(e,t,e.next)>=0&&dl(e,e.prev,t)>=0:dl(e,t,e.prev)<0||dl(e,e.next,t)<0}function vl(e,t){let n=e,r=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do n.y>a!=n.next.y>a&&n.next.y!==n.y&&i<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next;while(n!==e);return r}function yl(e,t){let n=Sl(e.i,e.x,e.y),r=Sl(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=i,i.prev=n,r.next=n,n.prev=r,a.next=r,r.prev=a,r}function bl(e,t,n,r){let i=Sl(e,t,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function xl(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Sl(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Cl(e,t,n,r){let i=0;for(let a=t,o=n-r;a<n;a+=r)i+=(e[o]-e[a])*(e[a+1]+e[o+1]),o=a;return i}var wl=class{static triangulate(e,t,n=2){return Gc(e,t,n)}},Tl=class e{static area(e){let t=e.length,n=0;for(let r=t-1,i=0;i<t;r=i++)n+=e[r].x*e[i].y-e[i].x*e[r].y;return n*.5}static isClockWise(t){return e.area(t)<0}static triangulateShape(e,t){let n=[],r=[],i=[];El(e),Dl(n,e);let a=e.length;t.forEach(El);for(let e=0;e<t.length;e++)r.push(a),a+=t[e].length,Dl(n,t[e]);let o=wl.triangulate(n,r);for(let e=0;e<o.length;e+=3)i.push(o.slice(e,e+3));return i}};function El(e){let t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function Dl(e,t){for(let n=0;n<t.length;n++)e.push(t[n].x),e.push(t[n].y)}var Ol=class e extends Oa{constructor(e=new Wc([new N(.5,.5),new N(-.5,.5),new N(-.5,-.5),new N(.5,-.5)]),t={}){super(),this.type=`ExtrudeGeometry`,this.parameters={shapes:e,options:t},e=Array.isArray(e)?e:[e];let n=this,r=[],i=[];for(let t=0,n=e.length;t<n;t++){let n=e[t];a(n)}this.setAttribute(`position`,new ga(r,3)),this.setAttribute(`uv`,new ga(i,2)),this.computeVertexNormals();function a(e){let a=[],o=t.curveSegments===void 0?12:t.curveSegments,s=t.steps===void 0?1:t.steps,c=t.depth===void 0?1:t.depth,l=t.bevelEnabled===void 0?!0:t.bevelEnabled,u=t.bevelThickness===void 0?.2:t.bevelThickness,d=t.bevelSize===void 0?u-.1:t.bevelSize,f=t.bevelOffset===void 0?0:t.bevelOffset,p=t.bevelSegments===void 0?3:t.bevelSegments,m=t.extrudePath,h=t.UVGenerator===void 0?kl:t.UVGenerator,g,_=!1,v,y,b,x;if(m){g=m.getSpacedPoints(s),_=!0,l=!1;let e=m.isCatmullRomCurve3?m.closed:!1;v=m.computeFrenetFrames(s,e),y=new P,b=new P,x=new P}l||(p=0,u=0,d=0,f=0);let S=e.extractPoints(o),C=S.shape,w=S.holes;if(!Tl.isClockWise(C)){C=C.reverse();for(let e=0,t=w.length;e<t;e++){let t=w[e];Tl.isClockWise(t)&&(w[e]=t.reverse())}}function T(e){let t=e[0];for(let n=1;n<=e.length;n++){let r=n%e.length,i=e[r],a=i.x-t.x,o=i.y-t.y,s=a*a+o*o,c=Math.max(Math.abs(i.x),Math.abs(i.y),Math.abs(t.x),Math.abs(t.y));if(s<=10000000000000001e-36*c*c){e.splice(r,1),n--;continue}t=i}}T(C),w.forEach(T);let E=w.length,D=C;for(let e=0;e<E;e++){let t=w[e];C=C.concat(t)}function O(e,t,n){return t||M(`ExtrudeGeometry: vec does not exist`),e.clone().addScaledVector(t,n)}let ee=C.length;function te(e,t,n){let r,i,a,o=e.x-t.x,s=e.y-t.y,c=n.x-e.x,l=n.y-e.y,u=o*o+s*s,d=o*l-s*c;if(Math.abs(d)>2**-52){let d=Math.sqrt(u),f=Math.sqrt(c*c+l*l),p=t.x-s/d,m=t.y+o/d,h=n.x-l/f,g=n.y+c/f,_=((h-p)*l-(g-m)*c)/(o*l-s*c);r=p+o*_-e.x,i=m+s*_-e.y;let v=r*r+i*i;if(v<=2)return new N(r,i);a=Math.sqrt(v/2)}else{let e=!1;o>2**-52?c>2**-52&&(e=!0):o<-(2**-52)?c<-(2**-52)&&(e=!0):Math.sign(s)===Math.sign(l)&&(e=!0),e?(r=-s,i=o,a=Math.sqrt(u)):(r=o,i=s,a=Math.sqrt(u/2))}return new N(r/a,i/a)}let ne=[];for(let e=0,t=D.length,n=t-1,r=e+1;e<t;e++,n++,r++)n===t&&(n=0),r===t&&(r=0),ne[e]=te(D[e],D[n],D[r]);let re=[],ie,ae=ne.concat();for(let e=0,t=E;e<t;e++){let t=w[e];ie=[];for(let e=0,n=t.length,r=n-1,i=e+1;e<n;e++,r++,i++)r===n&&(r=0),i===n&&(i=0),ie[e]=te(t[e],t[r],t[i]);re.push(ie),ae=ae.concat(ie)}let oe;if(p===0)oe=Tl.triangulateShape(D,w);else{let e=[],t=[];for(let n=0;n<p;n++){let r=n/p,i=u*Math.cos(r*Math.PI/2),a=d*Math.sin(r*Math.PI/2)+f;for(let t=0,n=D.length;t<n;t++){let n=O(D[t],ne[t],a);fe(n.x,n.y,-i),r===0&&e.push(n)}for(let e=0,n=E;e<n;e++){let n=w[e];ie=re[e];let o=[];for(let e=0,t=n.length;e<t;e++){let t=O(n[e],ie[e],a);fe(t.x,t.y,-i),r===0&&o.push(t)}r===0&&t.push(o)}}oe=Tl.triangulateShape(e,t)}let se=oe.length,ce=d+f;for(let e=0;e<ee;e++){let t=l?O(C[e],ae[e],ce):C[e];_?(b.copy(v.normals[0]).multiplyScalar(t.x),y.copy(v.binormals[0]).multiplyScalar(t.y),x.copy(g[0]).add(b).add(y),fe(x.x,x.y,x.z)):fe(t.x,t.y,0)}for(let e=1;e<=s;e++)for(let t=0;t<ee;t++){let n=l?O(C[t],ae[t],ce):C[t];_?(b.copy(v.normals[e]).multiplyScalar(n.x),y.copy(v.binormals[e]).multiplyScalar(n.y),x.copy(g[e]).add(b).add(y),fe(x.x,x.y,x.z)):fe(n.x,n.y,c/s*e)}for(let e=p-1;e>=0;e--){let t=e/p,n=u*Math.cos(t*Math.PI/2),r=d*Math.sin(t*Math.PI/2)+f;for(let e=0,t=D.length;e<t;e++){let t=O(D[e],ne[e],r);fe(t.x,t.y,c+n)}for(let e=0,t=w.length;e<t;e++){let t=w[e];ie=re[e];for(let e=0,i=t.length;e<i;e++){let i=O(t[e],ie[e],r);_?fe(i.x,i.y+g[s-1].y,g[s-1].x+n):fe(i.x,i.y,c+n)}}}le(),ue();function le(){let e=r.length/3;if(l){let e=0,t=ee*e;for(let e=0;e<se;e++){let n=oe[e];pe(n[2]+t,n[1]+t,n[0]+t)}e=s+p*2,t=ee*e;for(let e=0;e<se;e++){let n=oe[e];pe(n[0]+t,n[1]+t,n[2]+t)}}else{for(let e=0;e<se;e++){let t=oe[e];pe(t[2],t[1],t[0])}for(let e=0;e<se;e++){let t=oe[e];pe(t[0]+ee*s,t[1]+ee*s,t[2]+ee*s)}}n.addGroup(e,r.length/3-e,0)}function ue(){let e=r.length/3,t=0;de(D,t),t+=D.length;for(let e=0,n=w.length;e<n;e++){let n=w[e];de(n,t),t+=n.length}n.addGroup(e,r.length/3-e,1)}function de(e,t){let n=e.length;for(;--n>=0;){let r=n,i=n-1;i<0&&(i=e.length-1);for(let e=0,n=s+p*2;e<n;e++){let n=ee*e,a=ee*(e+1);me(t+r+n,t+i+n,t+i+a,t+r+a)}}}function fe(e,t,n){a.push(e),a.push(t),a.push(n)}function pe(e,t,i){he(e),he(t),he(i);let a=r.length/3,o=h.generateTopUV(n,r,a-3,a-2,a-1);ge(o[0]),ge(o[1]),ge(o[2])}function me(e,t,i,a){he(e),he(t),he(a),he(t),he(i),he(a);let o=r.length/3,s=h.generateSideWallUV(n,r,o-6,o-3,o-2,o-1);ge(s[0]),ge(s[1]),ge(s[3]),ge(s[1]),ge(s[2]),ge(s[3])}function he(e){r.push(a[e*3+0]),r.push(a[e*3+1]),r.push(a[e*3+2])}function ge(e){i.push(e.x),i.push(e.y)}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON(),t=this.parameters.shapes,n=this.parameters.options;return Al(t,n,e)}static fromJSON(t,n){let r=[];for(let e=0,i=t.shapes.length;e<i;e++){let i=n[t.shapes[e]];r.push(i)}let i=t.options.extrudePath;return i!==void 0&&(t.options.extrudePath=new Vc[i.type]().fromJSON(i)),new e(r,t.options)}},kl={generateTopUV:function(e,t,n,r,i){let a=t[n*3],o=t[n*3+1],s=t[r*3],c=t[r*3+1],l=t[i*3],u=t[i*3+1];return[new N(a,o),new N(s,c),new N(l,u)]},generateSideWallUV:function(e,t,n,r,i,a){let o=t[n*3],s=t[n*3+1],c=t[n*3+2],l=t[r*3],u=t[r*3+1],d=t[r*3+2],f=t[i*3],p=t[i*3+1],m=t[i*3+2],h=t[a*3],g=t[a*3+1],_=t[a*3+2];return Math.abs(s-u)<Math.abs(o-l)?[new N(o,1-c),new N(l,1-d),new N(f,1-m),new N(h,1-_)]:[new N(s,1-c),new N(u,1-d),new N(p,1-m),new N(g,1-_)]}};function Al(e,t,n){if(n.shapes=[],Array.isArray(e))for(let t=0,r=e.length;t<r;t++){let r=e[t];n.shapes.push(r.uuid)}else n.shapes.push(e.uuid);return n.options=Object.assign({},t),t.extrudePath!==void 0&&(n.options.extrudePath=t.extrudePath.toJSON()),n}var jl=class e extends sc{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,r=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1];super(r,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type=`IcosahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},Ml=class e extends Oa{constructor(e=[new N(0,-.5),new N(.5,0),new N(0,.5)],t=12,n=0,r=Math.PI*2){super(),this.type=`LatheGeometry`,this.parameters={points:e,segments:t,phiStart:n,phiLength:r},t=Math.floor(t),r=Kn(r,0,Math.PI*2);let i=[],a=[],o=[],s=[],c=[],l=1/t,u=new P,d=new N,f=new P,p=new P,m=new P,h=0,g=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:h=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,f.x=g*1,f.y=-h,f.z=g*0,m.copy(f),f.normalize(),s.push(f.x,f.y,f.z);break;case e.length-1:s.push(m.x,m.y,m.z);break;default:h=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,f.x=g*1,f.y=-h,f.z=g*0,p.copy(f),f.x+=m.x,f.y+=m.y,f.z+=m.z,f.normalize(),s.push(f.x,f.y,f.z),m.copy(p)}for(let i=0;i<=t;i++){let f=n+i*l*r,p=Math.sin(f),m=Math.cos(f);for(let n=0;n<=e.length-1;n++){u.x=e[n].x*p,u.y=e[n].y,u.z=e[n].x*m,a.push(u.x,u.y,u.z),d.x=i/t,d.y=n/(e.length-1),o.push(d.x,d.y);let r=s[3*n+0]*p,l=s[3*n+1],f=s[3*n+0]*m;c.push(r,l,f)}}for(let n=0;n<t;n++)for(let t=0;t<e.length-1;t++){let r=t+n*e.length,a=r,o=r+e.length,s=r+e.length+1,c=r+1;i.push(a,o,c),i.push(s,c,o)}this.setIndex(i),this.setAttribute(`position`,new ga(a,3)),this.setAttribute(`uv`,new ga(o,2)),this.setAttribute(`normal`,new ga(c,3))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.points,t.segments,t.phiStart,t.phiLength)}},Nl=class e extends sc{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type=`OctahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},Pl=class e extends Oa{constructor(e=1,t=1,n=1,r=1){super(),this.type=`PlaneGeometry`,this.parameters={width:e,height:t,widthSegments:n,heightSegments:r};let i=e/2,a=t/2,o=Math.floor(n),s=Math.floor(r),c=o+1,l=s+1,u=e/o,d=t/s,f=[],p=[],m=[],h=[];for(let e=0;e<l;e++){let t=e*d-a;for(let n=0;n<c;n++){let r=n*u-i;p.push(r,-t,0),m.push(0,0,1),h.push(n/o),h.push(1-e/s)}}for(let e=0;e<s;e++)for(let t=0;t<o;t++){let n=t+c*e,r=t+c*(e+1),i=t+1+c*(e+1),a=t+1+c*e;f.push(n,r,a),f.push(r,i,a)}this.setIndex(f),this.setAttribute(`position`,new ga(p,3)),this.setAttribute(`normal`,new ga(m,3)),this.setAttribute(`uv`,new ga(h,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.width,t.height,t.widthSegments,t.heightSegments)}},Fl=class e extends Oa{constructor(e=.5,t=1,n=32,r=1,i=0,a=Math.PI*2){super(),this.type=`RingGeometry`,this.parameters={innerRadius:e,outerRadius:t,thetaSegments:n,phiSegments:r,thetaStart:i,thetaLength:a},n=Math.max(3,n),r=Math.max(1,r);let o=[],s=[],c=[],l=[],u=e,d=(t-e)/r,f=new P,p=new N;for(let e=0;e<=r;e++){for(let e=0;e<=n;e++){let r=i+e/n*a;f.x=u*Math.cos(r),f.y=u*Math.sin(r),s.push(f.x,f.y,f.z),c.push(0,0,1),p.x=(f.x/t+1)/2,p.y=(f.y/t+1)/2,l.push(p.x,p.y)}u+=d}for(let e=0;e<r;e++){let t=e*(n+1);for(let e=0;e<n;e++){let r=e+t,i=r,a=r+n+1,s=r+n+2,c=r+1;o.push(i,a,c),o.push(a,s,c)}}this.setIndex(o),this.setAttribute(`position`,new ga(s,3)),this.setAttribute(`normal`,new ga(c,3)),this.setAttribute(`uv`,new ga(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.innerRadius,t.outerRadius,t.thetaSegments,t.phiSegments,t.thetaStart,t.thetaLength)}},Il=class e extends Oa{constructor(e=new Wc([new N(0,.5),new N(-.5,-.5),new N(.5,-.5)]),t=12){super(),this.type=`ShapeGeometry`,this.parameters={shapes:e,curveSegments:t};let n=[],r=[],i=[],a=[],o=0,s=0;if(Array.isArray(e)===!1)c(e);else for(let t=0;t<e.length;t++)c(e[t]),this.addGroup(o,s,t),o+=s,s=0;this.setIndex(n),this.setAttribute(`position`,new ga(r,3)),this.setAttribute(`normal`,new ga(i,3)),this.setAttribute(`uv`,new ga(a,2));function c(e){let o=r.length/3,c=e.extractPoints(t),l=c.shape,u=c.holes;Tl.isClockWise(l)===!1&&(l=l.reverse());for(let e=0,t=u.length;e<t;e++){let t=u[e];Tl.isClockWise(t)===!0&&(u[e]=t.reverse())}let d=Tl.triangulateShape(l,u);for(let e=0,t=u.length;e<t;e++){let t=u[e];l=l.concat(t)}for(let e=0,t=l.length;e<t;e++){let t=l[e];r.push(t.x,t.y,0),i.push(0,0,1),a.push(t.x,t.y)}for(let e=0,t=d.length;e<t;e++){let t=d[e],r=t[0]+o,i=t[1]+o,a=t[2]+o;n.push(r,i,a),s+=3}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON(),t=this.parameters.shapes;return Ll(t,e)}static fromJSON(t,n){let r=[];for(let e=0,i=t.shapes.length;e<i;e++){let i=n[t.shapes[e]];r.push(i)}return new e(r,t.curveSegments)}};function Ll(e,t){if(t.shapes=[],Array.isArray(e))for(let n=0,r=e.length;n<r;n++){let r=e[n];t.shapes.push(r.uuid)}else t.shapes.push(e.uuid);return t}var Rl=class e extends Oa{constructor(e=1,t=32,n=16,r=0,i=Math.PI*2,a=0,o=Math.PI){super(),this.type=`SphereGeometry`,this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:r,phiLength:i,thetaStart:a,thetaLength:o},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));let s=Math.min(a+o,Math.PI),c=0,l=[],u=new P,d=new P,f=[],p=[],m=[],h=[];for(let f=0;f<=n;f++){let g=[],_=f/n,v=0;f===0&&a===0?v=.5/t:f===n&&s===Math.PI&&(v=-.5/t);for(let n=0;n<=t;n++){let s=n/t;u.x=-e*Math.cos(r+s*i)*Math.sin(a+_*o),u.y=e*Math.cos(a+_*o),u.z=e*Math.sin(r+s*i)*Math.sin(a+_*o),p.push(u.x,u.y,u.z),d.copy(u).normalize(),m.push(d.x,d.y,d.z),h.push(s+v,1-_),g.push(c++)}l.push(g)}for(let e=0;e<n;e++)for(let r=0;r<t;r++){let t=l[e][r+1],i=l[e][r],o=l[e+1][r],c=l[e+1][r+1];(e!==0||a>0)&&f.push(t,i,c),(e!==n-1||s<Math.PI)&&f.push(i,o,c)}this.setIndex(f),this.setAttribute(`position`,new ga(p,3)),this.setAttribute(`normal`,new ga(m,3)),this.setAttribute(`uv`,new ga(h,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.widthSegments,t.heightSegments,t.phiStart,t.phiLength,t.thetaStart,t.thetaLength)}},zl=class e extends sc{constructor(e=1,t=0){super([1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type=`TetrahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},Bl=class e extends Oa{constructor(e=1,t=.4,n=12,r=48,i=Math.PI*2,a=0,o=Math.PI*2){super(),this.type=`TorusGeometry`,this.parameters={radius:e,tube:t,radialSegments:n,tubularSegments:r,arc:i,thetaStart:a,thetaLength:o},n=Math.floor(n),r=Math.floor(r);let s=[],c=[],l=[],u=[],d=new P,f=new P,p=new P;for(let s=0;s<=n;s++){let m=a+s/n*o;for(let a=0;a<=r;a++){let o=a/r*i;f.x=(e+t*Math.cos(m))*Math.cos(o),f.y=(e+t*Math.cos(m))*Math.sin(o),f.z=t*Math.sin(m),c.push(f.x,f.y,f.z),d.x=e*Math.cos(o),d.y=e*Math.sin(o),p.subVectors(f,d).normalize(),l.push(p.x,p.y,p.z),u.push(a/r),u.push(s/n)}}for(let e=1;e<=n;e++)for(let t=1;t<=r;t++){let n=(r+1)*e+t-1,i=(r+1)*(e-1)+t-1,a=(r+1)*(e-1)+t,o=(r+1)*e+t;s.push(n,i,o),s.push(i,a,o)}this.setIndex(s),this.setAttribute(`position`,new ga(c,3)),this.setAttribute(`normal`,new ga(l,3)),this.setAttribute(`uv`,new ga(u,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.tube,t.radialSegments,t.tubularSegments,t.arc)}},Vl=class e extends Oa{constructor(e=1,t=.4,n=64,r=8,i=2,a=3){super(),this.type=`TorusKnotGeometry`,this.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:r,p:i,q:a},n=Math.floor(n),r=Math.floor(r);let o=[],s=[],c=[],l=[],u=new P,d=new P,f=new P,p=new P,m=new P,h=new P,g=new P;for(let o=0;o<=n;++o){let v=o/n*i*Math.PI*2;_(v,i,a,e,f),_(v+.01,i,a,e,p),h.subVectors(p,f),g.addVectors(p,f),m.crossVectors(h,g),g.crossVectors(m,h),m.normalize(),g.normalize();for(let e=0;e<=r;++e){let i=e/r*Math.PI*2,a=-t*Math.cos(i),p=t*Math.sin(i);u.x=f.x+(a*g.x+p*m.x),u.y=f.y+(a*g.y+p*m.y),u.z=f.z+(a*g.z+p*m.z),s.push(u.x,u.y,u.z),d.subVectors(u,f).normalize(),c.push(d.x,d.y,d.z),l.push(o/n),l.push(e/r)}}for(let e=1;e<=n;e++)for(let t=1;t<=r;t++){let n=(r+1)*(e-1)+(t-1),i=(r+1)*e+(t-1),a=(r+1)*e+t,s=(r+1)*(e-1)+t;o.push(n,i,s),o.push(i,a,s)}this.setIndex(o),this.setAttribute(`position`,new ga(s,3)),this.setAttribute(`normal`,new ga(c,3)),this.setAttribute(`uv`,new ga(l,2));function _(e,t,n,r,i){let a=Math.cos(e),o=Math.sin(e),s=n/t*e,c=Math.cos(s);i.x=r*(2+c)*.5*a,i.y=r*(2+c)*o*.5,i.z=r*Math.sin(s)*.5}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.tube,t.tubularSegments,t.radialSegments,t.p,t.q)}},Hl=class e extends Oa{constructor(e=new zc(new P(-1,-1,0),new P(-1,1,0),new P(1,1,0)),t=64,n=1,r=8,i=!1){super(),this.type=`TubeGeometry`,this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:r,closed:i};let a=e.computeFrenetFrames(t,i);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;let o=new P,s=new P,c=new N,l=new P,u=[],d=[],f=[],p=[];m(),this.setIndex(p),this.setAttribute(`position`,new ga(u,3)),this.setAttribute(`normal`,new ga(d,3)),this.setAttribute(`uv`,new ga(f,2));function m(){for(let e=0;e<t;e++)h(e);h(i===!1?t:0),_(),g()}function h(i){l=e.getPointAt(i/t,l);let c=a.normals[i],f=a.binormals[i];for(let e=0;e<=r;e++){let t=e/r*Math.PI*2,i=Math.sin(t),a=-Math.cos(t);s.x=a*c.x+i*f.x,s.y=a*c.y+i*f.y,s.z=a*c.z+i*f.z,s.normalize(),d.push(s.x,s.y,s.z),o.x=l.x+n*s.x,o.y=l.y+n*s.y,o.z=l.z+n*s.z,u.push(o.x,o.y,o.z)}}function g(){for(let e=1;e<=t;e++)for(let t=1;t<=r;t++){let n=(r+1)*(e-1)+(t-1),i=(r+1)*e+(t-1),a=(r+1)*e+t,o=(r+1)*(e-1)+t;p.push(n,i,o),p.push(i,a,o)}}function _(){for(let e=0;e<=t;e++)for(let n=0;n<=r;n++)c.x=e/t,c.y=n/r,f.push(c.x,c.y)}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(t){return new e(new Vc[t.path.type]().fromJSON(t.path),t.tubularSegments,t.radius,t.radialSegments,t.closed)}},Ul=class extends Oa{constructor(e=null){if(super(),this.type=`WireframeGeometry`,this.parameters={geometry:e},e!==null){let t=[],n=new Set,r=new P,i=new P;if(e.index!==null){let a=e.attributes.position,o=e.index,s=e.groups;s.length===0&&(s=[{start:0,count:o.count,materialIndex:0}]);for(let e=0,c=s.length;e<c;++e){let c=s[e],l=c.start,u=c.count;for(let e=l,s=l+u;e<s;e+=3)for(let s=0;s<3;s++){let c=o.getX(e+s),l=o.getX(e+(s+1)%3);r.fromBufferAttribute(a,c),i.fromBufferAttribute(a,l),Wl(r,i,n)===!0&&(t.push(r.x,r.y,r.z),t.push(i.x,i.y,i.z))}}}else{let a=e.attributes.position;for(let e=0,o=a.count/3;e<o;e++)for(let o=0;o<3;o++){let s=3*e+o,c=3*e+(o+1)%3;r.fromBufferAttribute(a,s),i.fromBufferAttribute(a,c),Wl(r,i,n)===!0&&(t.push(r.x,r.y,r.z),t.push(i.x,i.y,i.z))}}this.setAttribute(`position`,new ga(t,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}};function Wl(e,t,n){let r=`${e.x},${e.y},${e.z}-${t.x},${t.y},${t.z}`,i=`${t.x},${t.y},${t.z}-${e.x},${e.y},${e.z}`;return n.has(r)===!0||n.has(i)===!0?!1:(n.add(r),n.add(i),!0)}var Gl=Object.freeze({__proto__:null,BoxGeometry:nc,CapsuleGeometry:rc,CircleGeometry:ic,ConeGeometry:oc,CylinderGeometry:ac,DodecahedronGeometry:cc,EdgesGeometry:pc,ExtrudeGeometry:Ol,IcosahedronGeometry:jl,LatheGeometry:Ml,OctahedronGeometry:Nl,PlaneGeometry:Pl,PolyhedronGeometry:sc,RingGeometry:Fl,ShapeGeometry:Il,SphereGeometry:Rl,TetrahedronGeometry:zl,TorusGeometry:Bl,TorusKnotGeometry:Vl,TubeGeometry:Hl,WireframeGeometry:Ul}),Kl=class extends Na{constructor(e){super(),this.isShadowMaterial=!0,this.type=`ShadowMaterial`,this.color=new I(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}};function ql(e){let t={};for(let n in e){t[n]={};for(let r in e[n]){let i=e[n][r];if(Yl(i))i.isRenderTargetTexture?(j(`UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().`),t[n][r]=null):t[n][r]=i.clone();else if(Array.isArray(i))if(Yl(i[0])){let e=[];for(let t=0,n=i.length;t<n;t++)e[t]=i[t].clone();t[n][r]=e}else t[n][r]=i.slice();else t[n][r]=i}}return t}function Jl(e){let t={};for(let n=0;n<e.length;n++){let r=ql(e[n]);for(let e in r)t[e]=r[e]}return t}function Yl(e){return e&&(e.isColor||e.isMatrix3||e.isMatrix4||e.isVector2||e.isVector3||e.isVector4||e.isTexture||e.isQuaternion)}function Xl(e){let t=[];for(let n=0;n<e.length;n++)t.push(e[n].clone());return t}function Zl(e){let t=e.getRenderTarget();return t===null?e.outputColorSpace:t.isXRRenderTarget===!0?t.texture.colorSpace:Sr.workingColorSpace}var Ql={clone:ql,merge:Jl},$l=`void main() {
1
+ import{At as e,Cn as t,Ct as n,Er as r,Fn as i,Fr as a,G as o,Gt as s,J as c,Jn as l,K as u,Ln as d,Lt as f,N as p,Nt as m,Or as h,Qn as g,St as _,Ut as v,Vn as y,Vt as b,W as x,Wn as S,Xt as C,Yn as w,Z as T,Zn as E,ar as D,dt as O,gt as ee,kt as te,mt as ne,pn as re,pr as ie,q as ae,rr as oe,rt as se,tt as ce,vn as le,yn as ue}from"./vue.runtime.esm-bundler-Cor2aCVe.js";import{V as de,_r as fe}from"./dist-DkkQXffG.js";var pe={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},me={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},he=`attached`,ge=`detached`,_e=1e3,ve=1001,ye=1002,be=1003,xe=1004,Se=1004,Ce=1005,we=1005,Te=1006,k=1007,Ee=1007,De=1008,Oe=1008,ke=1009,Ae=1010,A=1011,je=1012,Me=1013,Ne=1014,Pe=1015,Fe=1016,Ie=1017,Le=1018,Re=1020,ze=35902,Be=35899,Ve=1021,He=1022,Ue=1023,We=1026,Ge=1027,Ke=1028,qe=1029,Je=1030,Ye=1031,Xe=1032,Ze=1033,Qe=33776,$e=33777,et=33778,tt=33779,nt=35840,rt=35841,it=35842,at=35843,ot=36196,st=37492,ct=37496,lt=37488,ut=37489,dt=37490,ft=37491,pt=37808,mt=37809,ht=37810,gt=37811,_t=37812,vt=37813,yt=37814,bt=37815,xt=37816,St=37817,Ct=37818,wt=37819,Tt=37820,Et=37821,Dt=36492,Ot=36494,kt=36495,At=36283,jt=36284,Mt=36285,Nt=36286,Pt=2200,Ft=2201,It=2202,Lt=2300,Rt=2301,zt=2302,Bt=2303,Vt=2400,Ht=2401,Ut=2402,Wt=2500,Gt=2501,Kt=3200,qt=3201,Jt=3202,Yt=3203,Xt=`srgb`,Zt=`srgb-linear`,Qt=`linear`,$t=`srgb`,en=7680,tn=7681,nn=7682,rn=7683,an=34055,on=34056,sn=5386,cn=35044,ln=35048,un=35040,dn=35045,fn=35049,pn=35041,mn=35046,hn=35050,gn=35042,_n=`300 es`,vn=2e3,yn=2001,bn={COMPUTE:`compute`,RENDER:`render`},xn={PERSPECTIVE:`perspective`,LINEAR:`linear`,FLAT:`flat`},Sn={NORMAL:`normal`,CENTROID:`centroid`,SAMPLE:`sample`,FIRST:`first`,EITHER:`either`},Cn={TEXTURE_COMPARE:`depthTextureCompare`};function wn(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}var Tn={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function En(e,t){return new Tn[e](t)}function Dn(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function On(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}function kn(){let e=On(`canvas`);return e.style.display=`block`,e}var An={},jn=null;function Mn(e){jn=e}function Nn(){return jn}function Pn(...e){let t=`THREE.`+e.shift();jn?jn(`log`,t,...e):console.log(t,...e)}function Fn(e){let t=e[0];if(typeof t==`string`&&t.startsWith(`TSL:`)){let t=e[1];t&&t.isStackTrace?e[0]+=` `+t.getLocation():e[1]=`Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.`}return e}function j(...e){e=Fn(e);let t=`THREE.`+e.shift();if(jn)jn(`warn`,t,...e);else{let n=e[0];n&&n.isStackTrace?console.warn(n.getError(t)):console.warn(t,...e)}}function M(...e){e=Fn(e);let t=`THREE.`+e.shift();if(jn)jn(`error`,t,...e);else{let n=e[0];n&&n.isStackTrace?console.error(n.getError(t)):console.error(t,...e)}}function In(...e){let t=e.join(` `);t in An||(An[t]=!0,j(...e))}function Ln(){return typeof self<`u`&&self.scheduler!==void 0&&self.scheduler.yield!==void 0?self.scheduler.yield():new Promise(e=>{requestAnimationFrame(e)})}function Rn(e,t,n){return new Promise(function(r,i){function a(){switch(e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0)){case e.WAIT_FAILED:i();break;case e.TIMEOUT_EXPIRED:setTimeout(a,n);break;default:r()}}setTimeout(a,n)})}var zn={0:1,2:6,4:7,3:5,1:0,6:2,7:4,5:3},Bn=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){let n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){let n=this._listeners;if(n===void 0)return;let r=n[e];if(r!==void 0){let e=r.indexOf(t);e!==-1&&r.splice(e,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let n=t[e.type];if(n!==void 0){e.target=this;let t=n.slice(0);for(let n=0,r=t.length;n<r;n++)t[n].call(this,e);e.target=null}}},Vn=`00.01.02.03.04.05.06.07.08.09.0a.0b.0c.0d.0e.0f.10.11.12.13.14.15.16.17.18.19.1a.1b.1c.1d.1e.1f.20.21.22.23.24.25.26.27.28.29.2a.2b.2c.2d.2e.2f.30.31.32.33.34.35.36.37.38.39.3a.3b.3c.3d.3e.3f.40.41.42.43.44.45.46.47.48.49.4a.4b.4c.4d.4e.4f.50.51.52.53.54.55.56.57.58.59.5a.5b.5c.5d.5e.5f.60.61.62.63.64.65.66.67.68.69.6a.6b.6c.6d.6e.6f.70.71.72.73.74.75.76.77.78.79.7a.7b.7c.7d.7e.7f.80.81.82.83.84.85.86.87.88.89.8a.8b.8c.8d.8e.8f.90.91.92.93.94.95.96.97.98.99.9a.9b.9c.9d.9e.9f.a0.a1.a2.a3.a4.a5.a6.a7.a8.a9.aa.ab.ac.ad.ae.af.b0.b1.b2.b3.b4.b5.b6.b7.b8.b9.ba.bb.bc.bd.be.bf.c0.c1.c2.c3.c4.c5.c6.c7.c8.c9.ca.cb.cc.cd.ce.cf.d0.d1.d2.d3.d4.d5.d6.d7.d8.d9.da.db.dc.dd.de.df.e0.e1.e2.e3.e4.e5.e6.e7.e8.e9.ea.eb.ec.ed.ee.ef.f0.f1.f2.f3.f4.f5.f6.f7.f8.f9.fa.fb.fc.fd.fe.ff`.split(`.`),Hn=1234567,Un=Math.PI/180,Wn=180/Math.PI;function Gn(){let e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(Vn[e&255]+Vn[e>>8&255]+Vn[e>>16&255]+Vn[e>>24&255]+`-`+Vn[t&255]+Vn[t>>8&255]+`-`+Vn[t>>16&15|64]+Vn[t>>24&255]+`-`+Vn[n&63|128]+Vn[n>>8&255]+`-`+Vn[n>>16&255]+Vn[n>>24&255]+Vn[r&255]+Vn[r>>8&255]+Vn[r>>16&255]+Vn[r>>24&255]).toLowerCase()}function Kn(e,t,n){return Math.max(t,Math.min(n,e))}function qn(e,t){return(e%t+t)%t}function Jn(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function Yn(e,t,n){return e===t?0:(n-e)/(t-e)}function Xn(e,t,n){return(1-n)*e+n*t}function Zn(e,t,n,r){return Xn(e,t,1-Math.exp(-n*r))}function Qn(e,t=1){return t-Math.abs(qn(e,t*2)-t)}function $n(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function er(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function tr(e,t){return e+Math.floor(Math.random()*(t-e+1))}function nr(e,t){return e+Math.random()*(t-e)}function rr(e){return e*(.5-Math.random())}function ir(e){e!==void 0&&(Hn=e);let t=Hn+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function ar(e){return e*Un}function or(e){return e*Wn}function sr(e){return(e&e-1)==0&&e!==0}function cr(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function lr(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function ur(e,t,n,r,i){let a=Math.cos,o=Math.sin,s=a(n/2),c=o(n/2),l=a((t+r)/2),u=o((t+r)/2),d=a((t-r)/2),f=o((t-r)/2),p=a((r-t)/2),m=o((r-t)/2);switch(i){case`XYX`:e.set(s*u,c*d,c*f,s*l);break;case`YZY`:e.set(c*f,s*u,c*d,s*l);break;case`ZXZ`:e.set(c*d,c*f,s*u,s*l);break;case`XZX`:e.set(s*u,c*m,c*p,s*l);break;case`YXY`:e.set(c*p,s*u,c*m,s*l);break;case`ZYZ`:e.set(c*m,c*p,s*u,s*l);break;default:j(`MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function dr(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/4294967295;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/2147483647,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error(`Invalid component type.`)}}function fr(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(e*4294967295);case Uint16Array:return Math.round(e*65535);case Uint8Array:return Math.round(e*255);case Int32Array:return Math.round(e*2147483647);case Int16Array:return Math.round(e*32767);case Int8Array:return Math.round(e*127);default:throw Error(`Invalid component type.`)}}var pr={DEG2RAD:Un,RAD2DEG:Wn,generateUUID:Gn,clamp:Kn,euclideanModulo:qn,mapLinear:Jn,inverseLerp:Yn,lerp:Xn,damp:Zn,pingpong:Qn,smoothstep:$n,smootherstep:er,randInt:tr,randFloat:nr,randFloatSpread:rr,seededRandom:ir,degToRad:ar,radToDeg:or,isPowerOfTwo:sr,ceilPowerOfTwo:cr,floorPowerOfTwo:lr,setQuaternionFromProperEuler:ur,normalize:fr,denormalize:dr},N=class e{static{e.prototype.isVector2=!0}constructor(e=0,t=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 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 Error(`index is out of range: `+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,n=this.y,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=Kn(this.x,e.x,t.x),this.y=Kn(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Kn(this.x,e,t),this.y=Kn(this.y,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Kn(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Kn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),r=Math.sin(t),i=this.x-e.x,a=this.y-e.y;return this.x=i*n-a*r+e.x,this.y=i*r+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},mr=class{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,i,a,o){let s=n[r+0],c=n[r+1],l=n[r+2],u=n[r+3],d=i[a+0],f=i[a+1],p=i[a+2],m=i[a+3];if(u!==m||s!==d||c!==f||l!==p){let e=s*d+c*f+l*p+u*m;e<0&&(d=-d,f=-f,p=-p,m=-m,e=-e);let t=1-o;if(e<.9995){let n=Math.acos(e),r=Math.sin(n);t=Math.sin(t*n)/r,o=Math.sin(o*n)/r,s=s*t+d*o,c=c*t+f*o,l=l*t+p*o,u=u*t+m*o}else{s=s*t+d*o,c=c*t+f*o,l=l*t+p*o,u=u*t+m*o;let e=1/Math.sqrt(s*s+c*c+l*l+u*u);s*=e,c*=e,l*=e,u*=e}}e[t]=s,e[t+1]=c,e[t+2]=l,e[t+3]=u}static multiplyQuaternionsFlat(e,t,n,r,i,a){let o=n[r],s=n[r+1],c=n[r+2],l=n[r+3],u=i[a],d=i[a+1],f=i[a+2],p=i[a+3];return e[t]=o*p+l*u+s*f-c*d,e[t+1]=s*p+l*d+c*u-o*f,e[t+2]=c*p+l*f+o*d-s*u,e[t+3]=l*p-o*u-s*d-c*f,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){let n=e._x,r=e._y,i=e._z,a=e._order,o=Math.cos,s=Math.sin,c=o(n/2),l=o(r/2),u=o(i/2),d=s(n/2),f=s(r/2),p=s(i/2);switch(a){case`XYZ`:this._x=d*l*u+c*f*p,this._y=c*f*u-d*l*p,this._z=c*l*p+d*f*u,this._w=c*l*u-d*f*p;break;case`YXZ`:this._x=d*l*u+c*f*p,this._y=c*f*u-d*l*p,this._z=c*l*p-d*f*u,this._w=c*l*u+d*f*p;break;case`ZXY`:this._x=d*l*u-c*f*p,this._y=c*f*u+d*l*p,this._z=c*l*p+d*f*u,this._w=c*l*u-d*f*p;break;case`ZYX`:this._x=d*l*u-c*f*p,this._y=c*f*u+d*l*p,this._z=c*l*p-d*f*u,this._w=c*l*u+d*f*p;break;case`YZX`:this._x=d*l*u+c*f*p,this._y=c*f*u+d*l*p,this._z=c*l*p-d*f*u,this._w=c*l*u-d*f*p;break;case`XZY`:this._x=d*l*u-c*f*p,this._y=c*f*u-d*l*p,this._z=c*l*p+d*f*u,this._w=c*l*u+d*f*p;break;default:j(`Quaternion: .setFromEuler() encountered an unknown order: `+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let 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){let t=e.elements,n=t[0],r=t[4],i=t[8],a=t[1],o=t[5],s=t[9],c=t[2],l=t[6],u=t[10],d=n+o+u;if(d>0){let e=.5/Math.sqrt(d+1);this._w=.25/e,this._x=(l-s)*e,this._y=(i-c)*e,this._z=(a-r)*e}else if(n>o&&n>u){let e=2*Math.sqrt(1+n-o-u);this._w=(l-s)/e,this._x=.25*e,this._y=(r+a)/e,this._z=(i+c)/e}else if(o>u){let e=2*Math.sqrt(1+o-n-u);this._w=(i-c)/e,this._x=(r+a)/e,this._y=.25*e,this._z=(s+l)/e}else{let e=2*Math.sqrt(1+u-n-o);this._w=(a-r)/e,this._x=(i+c)/e,this._y=(s+l)/e,this._z=.25*e}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(Kn(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(n===0)return this;let 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*=e,this._y*=e,this._z*=e,this._w*=e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let n=e._x,r=e._y,i=e._z,a=e._w,o=t._x,s=t._y,c=t._z,l=t._w;return this._x=n*l+a*o+r*c-i*s,this._y=r*l+a*s+i*o-n*c,this._z=i*l+a*c+n*s-r*o,this._w=a*l-n*o-r*s-i*c,this._onChangeCallback(),this}slerp(e,t){let n=e._x,r=e._y,i=e._z,a=e._w,o=this.dot(e);o<0&&(n=-n,r=-r,i=-i,a=-a,o=-o);let s=1-t;if(o<.9995){let e=Math.acos(o),c=Math.sin(e);s=Math.sin(s*e)/c,t=Math.sin(t*e)/c,this._x=this._x*s+n*t,this._y=this._y*s+r*t,this._z=this._z*s+i*t,this._w=this._w*s+a*t,this._onChangeCallback()}else this._x=this._x*s+n*t,this._y=this._y*s+r*t,this._z=this._z*s+i*t,this._w=this._w*s+a*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),i=Math.sqrt(n);return this.set(r*Math.sin(e),r*Math.cos(e),i*Math.sin(t),i*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}},P=class e{static{e.prototype.isVector3=!0}constructor(e=0,t=0,n=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 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 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(gr.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(gr.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,r=this.z,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6]*r,this.y=i[1]*t+i[4]*n+i[7]*r,this.z=i[2]*t+i[5]*n+i[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,r=this.z,i=e.elements,a=1/(i[3]*t+i[7]*n+i[11]*r+i[15]);return this.x=(i[0]*t+i[4]*n+i[8]*r+i[12])*a,this.y=(i[1]*t+i[5]*n+i[9]*r+i[13])*a,this.z=(i[2]*t+i[6]*n+i[10]*r+i[14])*a,this}applyQuaternion(e){let t=this.x,n=this.y,r=this.z,i=e.x,a=e.y,o=e.z,s=e.w,c=2*(a*r-o*n),l=2*(o*t-i*r),u=2*(i*n-a*t);return this.x=t+s*c+a*u-o*l,this.y=n+s*l+o*c-i*u,this.z=r+s*u+i*l-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,r=this.z,i=e.elements;return this.x=i[0]*t+i[4]*n+i[8]*r,this.y=i[1]*t+i[5]*n+i[9]*r,this.z=i[2]*t+i[6]*n+i[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=Kn(this.x,e.x,t.x),this.y=Kn(this.y,e.y,t.y),this.z=Kn(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Kn(this.x,e,t),this.y=Kn(this.y,e,t),this.z=Kn(this.z,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Kn(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,r=e.y,i=e.z,a=t.x,o=t.y,s=t.z;return this.x=r*s-i*o,this.y=i*a-n*s,this.z=n*o-r*a,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return hr.copy(this).projectOnVector(e),this.sub(hr)}reflect(e){return this.sub(hr.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Kn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,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){let 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){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),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(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},hr=new P,gr=new mr,_r=class e{static{e.prototype.isMatrix3=!0}constructor(e,t,n,r,i,a,o,s,c){this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,r,i,a,o,s,c)}set(e,t,n,r,i,a,o,s,c){let l=this.elements;return l[0]=e,l[1]=r,l[2]=o,l[3]=t,l[4]=i,l[5]=s,l[6]=n,l[7]=a,l[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,r=t.elements,i=this.elements,a=n[0],o=n[3],s=n[6],c=n[1],l=n[4],u=n[7],d=n[2],f=n[5],p=n[8],m=r[0],h=r[3],g=r[6],_=r[1],v=r[4],y=r[7],b=r[2],x=r[5],S=r[8];return i[0]=a*m+o*_+s*b,i[3]=a*h+o*v+s*x,i[6]=a*g+o*y+s*S,i[1]=c*m+l*_+u*b,i[4]=c*h+l*v+u*x,i[7]=c*g+l*y+u*S,i[2]=d*m+f*_+p*b,i[5]=d*h+f*v+p*x,i[8]=d*g+f*y+p*S,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],o=e[5],s=e[6],c=e[7],l=e[8];return t*a*l-t*o*c-n*i*l+n*o*s+r*i*c-r*a*s}invert(){let e=this.elements,t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],o=e[5],s=e[6],c=e[7],l=e[8],u=l*a-o*c,d=o*s-l*i,f=c*i-a*s,p=t*u+n*d+r*f;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);let m=1/p;return e[0]=u*m,e[1]=(r*c-l*n)*m,e[2]=(o*n-r*a)*m,e[3]=d*m,e[4]=(l*t-r*s)*m,e[5]=(r*i-o*t)*m,e[6]=f*m,e[7]=(n*s-c*t)*m,e[8]=(a*t-n*i)*m,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,r,i,a,o){let s=Math.cos(i),c=Math.sin(i);return this.set(n*s,n*c,-n*(s*a+c*o)+a+e,-r*c,r*s,-r*(-c*a+s*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(vr.makeScale(e,t)),this}rotate(e){return this.premultiply(vr.makeRotation(-e)),this}translate(e,t){return this.premultiply(vr.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<9;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}},vr=new _r,yr=new _r().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),br=new _r().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function xr(){let e={enabled:!0,workingColorSpace:Zt,spaces:{},convert:function(e,t,n){return this.enabled===!1||t===n||!t||!n?e:(this.spaces[t].transfer===`srgb`&&(e.r=Cr(e.r),e.g=Cr(e.g),e.b=Cr(e.b)),this.spaces[t].primaries!==this.spaces[n].primaries&&(e.applyMatrix3(this.spaces[t].toXYZ),e.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===`srgb`&&(e.r=wr(e.r),e.g=wr(e.g),e.b=wr(e.b)),e)},workingToColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},colorSpaceToWorking:function(e,t){return this.convert(e,t,this.workingColorSpace)},getPrimaries:function(e){return this.spaces[e].primaries},getTransfer:function(e){return e===``?Qt:this.spaces[e].transfer},getToneMappingMode:function(e){return this.spaces[e].outputColorSpaceConfig.toneMappingMode||`standard`},getLuminanceCoefficients:function(e,t=this.workingColorSpace){return e.fromArray(this.spaces[t].luminanceCoefficients)},define:function(e){Object.assign(this.spaces,e)},_getMatrix:function(e,t,n){return e.copy(this.spaces[t].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(e){return this.spaces[e].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(e=this.workingColorSpace){return this.spaces[e].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(t,n){return In(`ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().`),e.workingToColorSpace(t,n)},toWorkingColorSpace:function(t,n){return In(`ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().`),e.colorSpaceToWorking(t,n)}},t=[.64,.33,.3,.6,.15,.06],n=[.2126,.7152,.0722],r=[.3127,.329];return e.define({[Zt]:{primaries:t,whitePoint:r,transfer:Qt,toXYZ:yr,fromXYZ:br,luminanceCoefficients:n,workingColorSpaceConfig:{unpackColorSpace:Xt},outputColorSpaceConfig:{drawingBufferColorSpace:Xt}},[Xt]:{primaries:t,whitePoint:r,transfer:$t,toXYZ:yr,fromXYZ:br,luminanceCoefficients:n,outputColorSpaceConfig:{drawingBufferColorSpace:Xt}}}),e}var Sr=xr();function Cr(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function wr(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}var Tr,Er=class{static getDataURL(e,t=`image/png`){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{Tr===void 0&&(Tr=On(`canvas`)),Tr.width=e.width,Tr.height=e.height;let t=Tr.getContext(`2d`);e instanceof ImageData?t.putImageData(e,0,0):t.drawImage(e,0,0,e.width,e.height),n=Tr}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=On(`canvas`);t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);n.drawImage(e,0,0,e.width,e.height);let r=n.getImageData(0,0,e.width,e.height),i=r.data;for(let e=0;e<i.length;e++)i[e]=Cr(i[e]/255)*255;return n.putImageData(r,0,0),t}else if(e.data){let t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(Cr(t[e]/255)*255):t[e]=Cr(t[e]);return{data:t,width:e.width,height:e.height}}else return j(`ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.`),e}},Dr=0,Or=class{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:Dr++}),this.uuid=Gn(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){let t=this.data;return typeof HTMLVideoElement<`u`&&t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight,0):typeof VideoFrame<`u`&&t instanceof VideoFrame?e.set(t.displayWidth,t.displayHeight,0):t===null?e.set(0,0,0):e.set(t.width,t.height,t.depth||0),e}set needsUpdate(e){e===!0&&this.version++}toJSON(e){let t=e===void 0||typeof e==`string`;if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];let n={uuid:this.uuid,url:``},r=this.data;if(r!==null){let e;if(Array.isArray(r)){e=[];for(let t=0,n=r.length;t<n;t++)r[t].isDataTexture?e.push(kr(r[t].image)):e.push(kr(r[t]))}else e=kr(r);n.url=e}return t||(e.images[this.uuid]=n),n}};function kr(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap?Er.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(j(`Texture: Unable to serialize Texture.`),{})}var Ar=0,jr=new P,Mr=class e extends Bn{constructor(t=e.DEFAULT_IMAGE,n=e.DEFAULT_MAPPING,r=ve,i=ve,a=Te,o=De,s=Ue,c=ke,l=e.DEFAULT_ANISOTROPY,u=``){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Ar++}),this.uuid=Gn(),this.name=``,this.source=new Or(t),this.mipmaps=[],this.mapping=n,this.channel=0,this.wrapS=r,this.wrapT=i,this.magFilter=a,this.minFilter=o,this.anisotropy=l,this.format=s,this.internalFormat=null,this.type=c,this.offset=new N(0,0),this.repeat=new N(1,1),this.center=new N(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new _r,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(t&&t.depth&&t.depth>1),this.pmremVersion=0,this.normalized=!1}get width(){return this.source.getSize(jr).x}get height(){return this.source.getSize(jr).y}get depth(){return this.source.getSize(jr).z}get image(){return this.source.data}set image(e){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.normalized=e.normalized,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(let t in e){let n=e[t];if(n===void 0){j(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){j(`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){let t=e===void 0||typeof e==`string`;if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];let 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,normalized:this.normalized,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!==300)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case _e:e.x-=Math.floor(e.x);break;case ve:e.x=e.x<0?0:1;break;case ye:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x-=Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case _e:e.y-=Math.floor(e.y);break;case ve:e.y=e.y<0?0:1;break;case ye:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(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++}};Mr.DEFAULT_IMAGE=null,Mr.DEFAULT_MAPPING=300,Mr.DEFAULT_ANISOTROPY=1;var Nr=class e{static{e.prototype.isVector4=!0}constructor(e=0,t=0,n=0,r=1){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 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 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?1:e.w,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,r=this.z,i=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r+a[12]*i,this.y=a[1]*t+a[5]*n+a[9]*r+a[13]*i,this.z=a[2]*t+a[6]*n+a[10]*r+a[14]*i,this.w=a[3]*t+a[7]*n+a[11]*r+a[15]*i,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,r,i,a=.01,o=.1,s=e.elements,c=s[0],l=s[4],u=s[8],d=s[1],f=s[5],p=s[9],m=s[2],h=s[6],g=s[10];if(Math.abs(l-d)<a&&Math.abs(u-m)<a&&Math.abs(p-h)<a){if(Math.abs(l+d)<o&&Math.abs(u+m)<o&&Math.abs(p+h)<o&&Math.abs(c+f+g-3)<o)return this.set(1,0,0,0),this;t=Math.PI;let e=(c+1)/2,s=(f+1)/2,_=(g+1)/2,v=(l+d)/4,y=(u+m)/4,b=(p+h)/4;return e>s&&e>_?e<a?(n=0,r=.707106781,i=.707106781):(n=Math.sqrt(e),r=v/n,i=y/n):s>_?s<a?(n=.707106781,r=0,i=.707106781):(r=Math.sqrt(s),n=v/r,i=b/r):_<a?(n=.707106781,r=.707106781,i=0):(i=Math.sqrt(_),n=y/i,r=b/i),this.set(n,r,i,t),this}let _=Math.sqrt((h-p)*(h-p)+(u-m)*(u-m)+(d-l)*(d-l));return Math.abs(_)<.001&&(_=1),this.x=(h-p)/_,this.y=(u-m)/_,this.z=(d-l)/_,this.w=Math.acos((c+f+g-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Kn(this.x,e.x,t.x),this.y=Kn(this.y,e.y,t.y),this.z=Kn(this.z,e.z,t.z),this.w=Kn(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Kn(this.x,e,t),this.y=Kn(this.y,e,t),this.z=Kn(this.z,e,t),this.w=Kn(this.w,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Kn(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}},Pr=class extends Bn{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Te,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 Nr(0,0,e,t),this.scissorTest=!1,this.viewport=new Nr(0,0,e,t),this.textures=[];let r=new Mr({width:e,height:t,depth:n.depth}),i=n.count;for(let e=0;e<i;e++)this.textures[e]=r.clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;this._setTextureOptions(n),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples,this.multiview=n.multiview}_setTextureOptions(e={}){let t={minFilter:Te,generateMipmaps:!1,flipY:!1,internalFormat:null};e.mapping!==void 0&&(t.mapping=e.mapping),e.wrapS!==void 0&&(t.wrapS=e.wrapS),e.wrapT!==void 0&&(t.wrapT=e.wrapT),e.wrapR!==void 0&&(t.wrapR=e.wrapR),e.magFilter!==void 0&&(t.magFilter=e.magFilter),e.minFilter!==void 0&&(t.minFilter=e.minFilter),e.format!==void 0&&(t.format=e.format),e.type!==void 0&&(t.type=e.type),e.anisotropy!==void 0&&(t.anisotropy=e.anisotropy),e.colorSpace!==void 0&&(t.colorSpace=e.colorSpace),e.flipY!==void 0&&(t.flipY=e.flipY),e.generateMipmaps!==void 0&&(t.generateMipmaps=e.generateMipmaps),e.internalFormat!==void 0&&(t.internalFormat=e.internalFormat);for(let e=0;e<this.textures.length;e++)this.textures[e].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let r=0,i=this.textures.length;r<i;r++)this.textures[r].image.width=e,this.textures[r].image.height=t,this.textures[r].image.depth=n,this.textures[r].isData3DTexture!==!0&&(this.textures[r].isArrayTexture=this.textures[r].image.depth>1);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<n;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;let n=Object.assign({},e.textures[t].image);this.textures[t].source=new Or(n)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this.multiview=e.multiview,this}dispose(){this.dispatchEvent({type:`dispose`})}},Fr=class extends Pr{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}},Ir=class extends Mr{constructor(e=null,t=1,n=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=be,this.minFilter=be,this.wrapR=ve,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Lr=class extends Fr{constructor(e=1,t=1,n=1,r={}){super(e,t,r),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new Ir(null,e,t,n),this._setTextureOptions(r),this.texture.isRenderTargetTexture=!0}},Rr=class extends Mr{constructor(e=null,t=1,n=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=be,this.minFilter=be,this.wrapR=ve,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},zr=class extends Fr{constructor(e=1,t=1,n=1,r={}){super(e,t,r),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new Rr(null,e,t,n),this._setTextureOptions(r),this.texture.isRenderTargetTexture=!0}},F=class e{static{e.prototype.isMatrix4=!0}constructor(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){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,i,a,o,s,c,l,u,d,f,p,m,h)}set(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){let g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=r,g[1]=i,g[5]=a,g[9]=o,g[13]=s,g[2]=c,g[6]=l,g[10]=u,g[14]=d,g[3]=f,g[7]=p,g[11]=m,g[15]=h,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 e().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return 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();let t=this.elements,n=e.elements,r=1/Br.setFromMatrixColumn(e,0).length(),i=1/Br.setFromMatrixColumn(e,1).length(),a=1/Br.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]*i,t[5]=n[5]*i,t[6]=n[6]*i,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,n=e.x,r=e.y,i=e.z,a=Math.cos(n),o=Math.sin(n),s=Math.cos(r),c=Math.sin(r),l=Math.cos(i),u=Math.sin(i);if(e.order===`XYZ`){let e=a*l,n=a*u,r=o*l,i=o*u;t[0]=s*l,t[4]=-s*u,t[8]=c,t[1]=n+r*c,t[5]=e-i*c,t[9]=-o*s,t[2]=i-e*c,t[6]=r+n*c,t[10]=a*s}else if(e.order===`YXZ`){let e=s*l,n=s*u,r=c*l,i=c*u;t[0]=e+i*o,t[4]=r*o-n,t[8]=a*c,t[1]=a*u,t[5]=a*l,t[9]=-o,t[2]=n*o-r,t[6]=i+e*o,t[10]=a*s}else if(e.order===`ZXY`){let e=s*l,n=s*u,r=c*l,i=c*u;t[0]=e-i*o,t[4]=-a*u,t[8]=r+n*o,t[1]=n+r*o,t[5]=a*l,t[9]=i-e*o,t[2]=-a*c,t[6]=o,t[10]=a*s}else if(e.order===`ZYX`){let e=a*l,n=a*u,r=o*l,i=o*u;t[0]=s*l,t[4]=r*c-n,t[8]=e*c+i,t[1]=s*u,t[5]=i*c+e,t[9]=n*c-r,t[2]=-c,t[6]=o*s,t[10]=a*s}else if(e.order===`YZX`){let e=a*s,n=a*c,r=o*s,i=o*c;t[0]=s*l,t[4]=i-e*u,t[8]=r*u+n,t[1]=u,t[5]=a*l,t[9]=-o*l,t[2]=-c*l,t[6]=n*u+r,t[10]=e-i*u}else if(e.order===`XZY`){let e=a*s,n=a*c,r=o*s,i=o*c;t[0]=s*l,t[4]=-u,t[8]=c*l,t[1]=e*u+i,t[5]=a*l,t[9]=n*u-r,t[2]=r*u-n,t[6]=o*l,t[10]=i*u+e}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(Hr,e,Ur)}lookAt(e,t,n){let r=this.elements;return Kr.subVectors(e,t),Kr.lengthSq()===0&&(Kr.z=1),Kr.normalize(),Wr.crossVectors(n,Kr),Wr.lengthSq()===0&&(Math.abs(n.z)===1?Kr.x+=1e-4:Kr.z+=1e-4,Kr.normalize(),Wr.crossVectors(n,Kr)),Wr.normalize(),Gr.crossVectors(Kr,Wr),r[0]=Wr.x,r[4]=Gr.x,r[8]=Kr.x,r[1]=Wr.y,r[5]=Gr.y,r[9]=Kr.y,r[2]=Wr.z,r[6]=Gr.z,r[10]=Kr.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,r=t.elements,i=this.elements,a=n[0],o=n[4],s=n[8],c=n[12],l=n[1],u=n[5],d=n[9],f=n[13],p=n[2],m=n[6],h=n[10],g=n[14],_=n[3],v=n[7],y=n[11],b=n[15],x=r[0],S=r[4],C=r[8],w=r[12],T=r[1],E=r[5],D=r[9],O=r[13],ee=r[2],te=r[6],ne=r[10],re=r[14],ie=r[3],ae=r[7],oe=r[11],se=r[15];return i[0]=a*x+o*T+s*ee+c*ie,i[4]=a*S+o*E+s*te+c*ae,i[8]=a*C+o*D+s*ne+c*oe,i[12]=a*w+o*O+s*re+c*se,i[1]=l*x+u*T+d*ee+f*ie,i[5]=l*S+u*E+d*te+f*ae,i[9]=l*C+u*D+d*ne+f*oe,i[13]=l*w+u*O+d*re+f*se,i[2]=p*x+m*T+h*ee+g*ie,i[6]=p*S+m*E+h*te+g*ae,i[10]=p*C+m*D+h*ne+g*oe,i[14]=p*w+m*O+h*re+g*se,i[3]=_*x+v*T+y*ee+b*ie,i[7]=_*S+v*E+y*te+b*ae,i[11]=_*C+v*D+y*ne+b*oe,i[15]=_*w+v*O+y*re+b*se,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],r=e[8],i=e[12],a=e[1],o=e[5],s=e[9],c=e[13],l=e[2],u=e[6],d=e[10],f=e[14],p=e[3],m=e[7],h=e[11],g=e[15],_=s*f-c*d,v=o*f-c*u,y=o*d-s*u,b=a*f-c*l,x=a*d-s*l,S=a*u-o*l;return t*(m*_-h*v+g*y)-n*(p*_-h*b+g*x)+r*(p*v-m*b+g*S)-i*(p*y-m*x+h*S)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){let 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(){let e=this.elements,t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],o=e[5],s=e[6],c=e[7],l=e[8],u=e[9],d=e[10],f=e[11],p=e[12],m=e[13],h=e[14],g=e[15],_=t*o-n*a,v=t*s-r*a,y=t*c-i*a,b=n*s-r*o,x=n*c-i*o,S=r*c-i*s,C=l*m-u*p,w=l*h-d*p,T=l*g-f*p,E=u*h-d*m,D=u*g-f*m,O=d*g-f*h,ee=_*O-v*D+y*E+b*T-x*w+S*C;if(ee===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let te=1/ee;return e[0]=(o*O-s*D+c*E)*te,e[1]=(r*D-n*O-i*E)*te,e[2]=(m*S-h*x+g*b)*te,e[3]=(d*x-u*S-f*b)*te,e[4]=(s*T-a*O-c*w)*te,e[5]=(t*O-r*T+i*w)*te,e[6]=(h*y-p*S-g*v)*te,e[7]=(l*S-d*y+f*v)*te,e[8]=(a*D-o*T+c*C)*te,e[9]=(n*T-t*D-i*C)*te,e[10]=(p*x-m*y+g*_)*te,e[11]=(u*y-l*x-f*_)*te,e[12]=(o*w-a*E-s*C)*te,e[13]=(t*E-n*w+r*C)*te,e[14]=(m*v-p*b-h*_)*te,e[15]=(l*b-u*v+d*_)*te,this}scale(e){let t=this.elements,n=e.x,r=e.y,i=e.z;return t[0]*=n,t[4]*=r,t[8]*=i,t[1]*=n,t[5]*=r,t[9]*=i,t[2]*=n,t[6]*=r,t[10]*=i,t[3]*=n,t[7]*=r,t[11]*=i,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],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){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),r=Math.sin(t),i=1-n,a=e.x,o=e.y,s=e.z,c=i*a,l=i*o;return this.set(c*a+n,c*o-r*s,c*s+r*o,0,c*o+r*s,l*o+n,l*s-r*a,0,c*s-r*o,l*s+r*a,i*s*s+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,i,a){return this.set(1,n,i,0,e,1,a,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){let r=this.elements,i=t._x,a=t._y,o=t._z,s=t._w,c=i+i,l=a+a,u=o+o,d=i*c,f=i*l,p=i*u,m=a*l,h=a*u,g=o*u,_=s*c,v=s*l,y=s*u,b=n.x,x=n.y,S=n.z;return r[0]=(1-(m+g))*b,r[1]=(f+y)*b,r[2]=(p-v)*b,r[3]=0,r[4]=(f-y)*x,r[5]=(1-(d+g))*x,r[6]=(h+_)*x,r[7]=0,r[8]=(p+v)*S,r[9]=(h-_)*S,r[10]=(1-(d+m))*S,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){let r=this.elements;e.x=r[12],e.y=r[13],e.z=r[14];let i=this.determinant();if(i===0)return n.set(1,1,1),t.identity(),this;let a=Br.set(r[0],r[1],r[2]).length(),o=Br.set(r[4],r[5],r[6]).length(),s=Br.set(r[8],r[9],r[10]).length();i<0&&(a=-a),Vr.copy(this);let c=1/a,l=1/o,u=1/s;return Vr.elements[0]*=c,Vr.elements[1]*=c,Vr.elements[2]*=c,Vr.elements[4]*=l,Vr.elements[5]*=l,Vr.elements[6]*=l,Vr.elements[8]*=u,Vr.elements[9]*=u,Vr.elements[10]*=u,t.setFromRotationMatrix(Vr),n.x=a,n.y=o,n.z=s,this}makePerspective(e,t,n,r,i,a,o=vn,s=!1){let c=this.elements,l=2*i/(t-e),u=2*i/(n-r),d=(t+e)/(t-e),f=(n+r)/(n-r),p,m;if(s)p=i/(a-i),m=a*i/(a-i);else if(o===2e3)p=-(a+i)/(a-i),m=-2*a*i/(a-i);else if(o===2001)p=-a/(a-i),m=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return c[0]=l,c[4]=0,c[8]=d,c[12]=0,c[1]=0,c[5]=u,c[9]=f,c[13]=0,c[2]=0,c[6]=0,c[10]=p,c[14]=m,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=vn,s=!1){let c=this.elements,l=2/(t-e),u=2/(n-r),d=-(t+e)/(t-e),f=-(n+r)/(n-r),p,m;if(s)p=1/(a-i),m=a/(a-i);else if(o===2e3)p=-2/(a-i),m=-(a+i)/(a-i);else if(o===2001)p=-1/(a-i),m=-i/(a-i);else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return c[0]=l,c[4]=0,c[8]=0,c[12]=d,c[1]=0,c[5]=u,c[9]=0,c[13]=f,c[2]=0,c[6]=0,c[10]=p,c[14]=m,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<16;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}},Br=new P,Vr=new F,Hr=new P(0,0,0),Ur=new P(1,1,1),Wr=new P,Gr=new P,Kr=new P,qr=new F,Jr=new mr,Yr=class e{constructor(t=0,n=0,r=0,i=e.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=n,this._z=r,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,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){let r=e.elements,i=r[0],a=r[4],o=r[8],s=r[1],c=r[5],l=r[9],u=r[2],d=r[6],f=r[10];switch(t){case`XYZ`:this._y=Math.asin(Kn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-l,f),this._z=Math.atan2(-a,i)):(this._x=Math.atan2(d,c),this._z=0);break;case`YXZ`:this._x=Math.asin(-Kn(l,-1,1)),Math.abs(l)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(s,c)):(this._y=Math.atan2(-u,i),this._z=0);break;case`ZXY`:this._x=Math.asin(Kn(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(s,i));break;case`ZYX`:this._y=Math.asin(-Kn(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,f),this._z=Math.atan2(s,i)):(this._x=0,this._z=Math.atan2(-a,c));break;case`YZX`:this._z=Math.asin(Kn(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-l,c),this._y=Math.atan2(-u,i)):(this._x=0,this._y=Math.atan2(o,f));break;case`XZY`:this._z=Math.asin(-Kn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(o,i)):(this._x=Math.atan2(-l,f),this._y=0);break;default:j(`Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return qr.makeRotationFromQuaternion(e),this.setFromRotationMatrix(qr,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Jr.setFromEuler(this),this.setFromQuaternion(Jr,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}};Yr.DEFAULT_ORDER=`XYZ`;var Xr=class{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!=0}},Zr=0,Qr=new P,$r=new mr,ei=new F,ti=new P,ni=new P,ri=new P,ii=new mr,ai=new P(1,0,0),oi=new P(0,1,0),si=new P(0,0,1),ci={type:`added`},li={type:`removed`},ui={type:`childadded`,child:null},di={type:`childremoved`,child:null},fi=class e extends Bn{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Zr++}),this.uuid=Gn(),this.name=``,this.type=`Object3D`,this.parent=null,this.children=[],this.up=e.DEFAULT_UP.clone();let t=new P,n=new Yr,r=new mr,i=new P(1,1,1);function a(){r.setFromEuler(n,!1)}function o(){n.setFromQuaternion(r,void 0,!1)}n._onChange(a),r._onChange(o),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:n},quaternion:{configurable:!0,enumerable:!0,value:r},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new F},normalMatrix:{value:new _r}}),this.matrix=new F,this.matrixWorld=new F,this.matrixAutoUpdate=e.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=e.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new Xr,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.static=!1,this.userData={},this.pivot=null}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return $r.setFromAxisAngle(e,t),this.quaternion.multiply($r),this}rotateOnWorldAxis(e,t){return $r.setFromAxisAngle(e,t),this.quaternion.premultiply($r),this}rotateX(e){return this.rotateOnAxis(ai,e)}rotateY(e){return this.rotateOnAxis(oi,e)}rotateZ(e){return this.rotateOnAxis(si,e)}translateOnAxis(e,t){return Qr.copy(e).applyQuaternion(this.quaternion),this.position.add(Qr.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(ai,e)}translateY(e){return this.translateOnAxis(oi,e)}translateZ(e){return this.translateOnAxis(si,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(ei.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?ti.copy(e):ti.set(e,t,n);let r=this.parent;this.updateWorldMatrix(!0,!1),ni.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?ei.lookAt(ni,ti,this.up):ei.lookAt(ti,ni,this.up),this.quaternion.setFromRotationMatrix(ei),r&&(ei.extractRotation(r.matrixWorld),$r.setFromRotationMatrix(ei),this.quaternion.premultiply($r.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?(M(`Object3D.add: object can't be added as a child of itself.`,e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(ci),ui.child=e,this.dispatchEvent(ui),ui.child=null):M(`Object3D.add: object not an instance of THREE.Object3D.`,e),this)}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}let t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(li),di.child=e,this.dispatchEvent(di),di.child=null),this}removeFromParent(){let e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),ei.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),ei.multiply(e.parent.matrixWorld)),e.applyMatrix4(ei),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(ci),ui.child=e,this.dispatchEvent(ui),ui.child=null,this}getObjectById(e){return this.getObjectByProperty(`id`,e)}getObjectByName(e){return this.getObjectByProperty(`name`,e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,r=this.children.length;n<r;n++){let r=this.children[n].getObjectByProperty(e,t);if(r!==void 0)return r}}getObjectsByProperty(e,t,n=[]){this[e]===t&&n.push(this);let r=this.children;for(let i=0,a=r.length;i<a;i++)r[i].getObjectsByProperty(e,t,n);return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ni,e,ri),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ni,ii,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);let t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverseVisible(e)}traverseAncestors(e){let t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale);let e=this.pivot;if(e!==null){let t=e.x,n=e.y,r=e.z,i=this.matrix.elements;i[12]+=t-i[0]*t-i[4]*n-i[8]*r,i[13]+=n-i[1]*t-i[5]*n-i[9]*r,i[14]+=r-i[2]*t-i[6]*n-i[10]*r}this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);let t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){let n=this.parent;if(e===!0&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){let e=this.children;for(let t=0,n=e.length;t<n;t++)e[t].updateWorldMatrix(!1,!0)}}toJSON(e){let t=e===void 0||typeof e==`string`,n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.7,type:`Object`,generator:`Object3D.toJSON`});let r={};r.uuid=this.uuid,r.type=this.type,this.name!==``&&(r.name=this.name),this.castShadow===!0&&(r.castShadow=!0),this.receiveShadow===!0&&(r.receiveShadow=!0),this.visible===!1&&(r.visible=!1),this.frustumCulled===!1&&(r.frustumCulled=!1),this.renderOrder!==0&&(r.renderOrder=this.renderOrder),this.static!==!1&&(r.static=this.static),Object.keys(this.userData).length>0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.pivot!==null&&(r.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(r.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(r.morphTargetInfluences=this.morphTargetInfluences.slice()),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(e=>({...e,boundingBox:e.boundingBox?e.boundingBox.toJSON():void 0,boundingSphere:e.boundingSphere?e.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(e=>({...e})),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 i(t,n){return t[n.uuid]===void 0&&(t[n.uuid]=n.toJSON(e)),n.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=i(e.geometries,this.geometry);let t=this.geometry.parameters;if(t!==void 0&&t.shapes!==void 0){let n=t.shapes;if(Array.isArray(n))for(let t=0,r=n.length;t<r;t++){let r=n[t];i(e.shapes,r)}else i(e.shapes,n)}}if(this.isSkinnedMesh&&(r.bindMode=this.bindMode,r.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(i(e.skeletons,this.skeleton),r.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){let t=[];for(let n=0,r=this.material.length;n<r;n++)t.push(i(e.materials,this.material[n]));r.material=t}else r.material=i(e.materials,this.material);if(this.children.length>0){r.children=[];for(let t=0;t<this.children.length;t++)r.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){r.animations=[];for(let t=0;t<this.animations.length;t++){let n=this.animations[t];r.animations.push(i(e.animations,n))}}if(t){let t=a(e.geometries),r=a(e.materials),i=a(e.textures),o=a(e.images),s=a(e.shapes),c=a(e.skeletons),l=a(e.animations),u=a(e.nodes);t.length>0&&(n.geometries=t),r.length>0&&(n.materials=r),i.length>0&&(n.textures=i),o.length>0&&(n.images=o),s.length>0&&(n.shapes=s),c.length>0&&(n.skeletons=c),l.length>0&&(n.animations=l),u.length>0&&(n.nodes=u)}return n.object=r,n;function a(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}}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.pivot=e.pivot===null?null:e.pivot.clone(),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.static=e.static,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t<e.children.length;t++){let n=e.children[t];this.add(n.clone())}return this}};fi.DEFAULT_UP=new P(0,1,0),fi.DEFAULT_MATRIX_AUTO_UPDATE=!0,fi.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;var pi=class extends fi{constructor(){super(),this.isGroup=!0,this.type=`Group`}},mi={type:`move`},hi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new pi,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 pi,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new P,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new P),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new pi,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new P,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new P,this._grip.eventsEnabled=!1),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){let t=this._hand;if(t)for(let n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:`connected`,data:e}),this}disconnect(e){return this.dispatchEvent({type:`disconnected`,data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,i=null,a=null,o=this._targetRay,s=this._grip,c=this._hand;if(e&&t.session.visibilityState!==`visible-blurred`){if(c&&e.hand){a=!0;for(let r of e.hand.values()){let e=t.getJointPose(r,n),i=this._getHandJoint(c,r);e!==null&&(i.matrix.fromArray(e.transform.matrix),i.matrix.decompose(i.position,i.rotation,i.scale),i.matrixWorldNeedsUpdate=!0,i.jointRadius=e.radius),i.visible=e!==null}let r=c.joints[`index-finger-tip`],i=c.joints[`thumb-tip`],o=r.position.distanceTo(i.position);c.inputState.pinching&&o>.025?(c.inputState.pinching=!1,this.dispatchEvent({type:`pinchend`,handedness:e.handedness,target:this})):!c.inputState.pinching&&o<=.015&&(c.inputState.pinching=!0,this.dispatchEvent({type:`pinchstart`,handedness:e.handedness,target:this}))}else s!==null&&e.gripSpace&&(i=t.getPose(e.gripSpace,n),i!==null&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,s.eventsEnabled&&s.dispatchEvent({type:`gripUpdated`,data:e,target:this})));o!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&i!==null&&(r=i),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(mi)))}return o!==null&&(o.visible=r!==null),s!==null&&(s.visible=i!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let n=new pi;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}},gi={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},_i={h:0,s:0,l:0},vi={h:0,s:0,l:0};function yi(e,t,n){return n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*6*(2/3-n):e}var I=class{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){let t=e;t&&t.isColor?this.copy(t):typeof t==`number`?this.setHex(t):typeof t==`string`&&this.setStyle(t)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Xt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Sr.colorSpaceToWorking(this,t),this}setRGB(e,t,n,r=Sr.workingColorSpace){return this.r=e,this.g=t,this.b=n,Sr.colorSpaceToWorking(this,r),this}setHSL(e,t,n,r=Sr.workingColorSpace){if(e=qn(e,1),t=Kn(t,0,1),n=Kn(n,0,1),t===0)this.r=this.g=this.b=n;else{let r=n<=.5?n*(1+t):n+t-n*t,i=2*n-r;this.r=yi(i,r,e+1/3),this.g=yi(i,r,e),this.b=yi(i,r,e-1/3)}return Sr.colorSpaceToWorking(this,r),this}setStyle(e,t=Xt){function n(t){t!==void 0&&parseFloat(t)<1&&j(`Color: Alpha component of `+e+` will be ignored.`)}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let i,a=r[1],o=r[2];switch(a){case`rgb`:case`rgba`:if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(i[4]),this.setRGB(Math.min(255,parseInt(i[1],10))/255,Math.min(255,parseInt(i[2],10))/255,Math.min(255,parseInt(i[3],10))/255,t);if(i=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(i[4]),this.setRGB(Math.min(100,parseInt(i[1],10))/100,Math.min(100,parseInt(i[2],10))/100,Math.min(100,parseInt(i[3],10))/100,t);break;case`hsl`:case`hsla`:if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(i[4]),this.setHSL(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,t);break;default:j(`Color: Unknown color model `+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let n=r[1],i=n.length;if(i===3)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,t);if(i===6)return this.setHex(parseInt(n,16),t);j(`Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Xt){let n=gi[e.toLowerCase()];return n===void 0?j(`Color: Unknown color `+e):this.setHex(n,t),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=Cr(e.r),this.g=Cr(e.g),this.b=Cr(e.b),this}copyLinearToSRGB(e){return this.r=wr(e.r),this.g=wr(e.g),this.b=wr(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Xt){return Sr.workingToColorSpace(bi.copy(this),e),Math.round(Kn(bi.r*255,0,255))*65536+Math.round(Kn(bi.g*255,0,255))*256+Math.round(Kn(bi.b*255,0,255))}getHexString(e=Xt){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Sr.workingColorSpace){Sr.workingToColorSpace(bi.copy(this),t);let n=bi.r,r=bi.g,i=bi.b,a=Math.max(n,r,i),o=Math.min(n,r,i),s,c,l=(o+a)/2;if(o===a)s=0,c=0;else{let e=a-o;switch(c=l<=.5?e/(a+o):e/(2-a-o),a){case n:s=(r-i)/e+(r<i?6:0);break;case r:s=(i-n)/e+2;break;case i:s=(n-r)/e+4;break}s/=6}return e.h=s,e.s=c,e.l=l,e}getRGB(e,t=Sr.workingColorSpace){return Sr.workingToColorSpace(bi.copy(this),t),e.r=bi.r,e.g=bi.g,e.b=bi.b,e}getStyle(e=Xt){Sr.workingToColorSpace(bi.copy(this),e);let t=bi.r,n=bi.g,r=bi.b;return e===`srgb`?`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(r*255)})`:`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})`}offsetHSL(e,t,n){return this.getHSL(_i),this.setHSL(_i.h+e,_i.s+t,_i.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(_i),e.getHSL(vi);let n=Xn(_i.h,vi.h,t),r=Xn(_i.s,vi.s,t),i=Xn(_i.l,vi.l,t);return this.setHSL(n,r,i),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){let t=this.r,n=this.g,r=this.b,i=e.elements;return this.r=i[0]*t+i[3]*n+i[6]*r,this.g=i[1]*t+i[4]*n+i[7]*r,this.b=i[2]*t+i[5]*n+i[8]*r,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}},bi=new I;I.NAMES=gi;var xi=class e{constructor(e,t=25e-5){this.isFogExp2=!0,this.name=``,this.color=new I(e),this.density=t}clone(){return new e(this.color,this.density)}toJSON(){return{type:`FogExp2`,name:this.name,color:this.color.getHex(),density:this.density}}},Si=class e{constructor(e,t=1,n=1e3){this.isFog=!0,this.name=``,this.color=new I(e),this.near=t,this.far=n}clone(){return new e(this.color,this.near,this.far)}toJSON(){return{type:`Fog`,name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}},Ci=class extends fi{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 Yr,this.environmentIntensity=1,this.environmentRotation=new Yr,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}},wi=new P,Ti=new P,Ei=new P,Di=new P,Oi=new P,ki=new P,Ai=new P,ji=new P,Mi=new P,Ni=new P,Pi=new Nr,Fi=new Nr,Ii=new Nr,Li=class e{constructor(e=new P,t=new P,n=new P){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,r){r.subVectors(n,t),wi.subVectors(e,t),r.cross(wi);let i=r.lengthSq();return i>0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){wi.subVectors(r,t),Ti.subVectors(n,t),Ei.subVectors(e,t);let a=wi.dot(wi),o=wi.dot(Ti),s=wi.dot(Ei),c=Ti.dot(Ti),l=Ti.dot(Ei),u=a*c-o*o;if(u===0)return i.set(0,0,0),null;let d=1/u,f=(c*s-o*l)*d,p=(a*l-o*s)*d;return i.set(1-f-p,p,f)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,Di)===null?!1:Di.x>=0&&Di.y>=0&&Di.x+Di.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,Di)===null?(s.x=0,s.y=0,`z`in s&&(s.z=0),`w`in s&&(s.w=0),null):(s.setScalar(0),s.addScaledVector(i,Di.x),s.addScaledVector(a,Di.y),s.addScaledVector(o,Di.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return Pi.setScalar(0),Fi.setScalar(0),Ii.setScalar(0),Pi.fromBufferAttribute(e,t),Fi.fromBufferAttribute(e,n),Ii.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(Pi,i.x),a.addScaledVector(Fi,i.y),a.addScaledVector(Ii,i.z),a}static isFrontFacing(e,t,n,r){return wi.subVectors(n,t),Ti.subVectors(e,t),wi.cross(Ti).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 wi.subVectors(this.c,this.b),Ti.subVectors(this.a,this.b),wi.cross(Ti).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return e.getNormal(this.a,this.b,this.c,t)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,n){return e.getBarycoord(t,this.a,this.b,this.c,n)}getInterpolation(t,n,r,i,a){return e.getInterpolation(t,this.a,this.b,this.c,n,r,i,a)}containsPoint(t){return e.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return e.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n=this.a,r=this.b,i=this.c,a,o;Oi.subVectors(r,n),ki.subVectors(i,n),ji.subVectors(e,n);let s=Oi.dot(ji),c=ki.dot(ji);if(s<=0&&c<=0)return t.copy(n);Mi.subVectors(e,r);let l=Oi.dot(Mi),u=ki.dot(Mi);if(l>=0&&u<=l)return t.copy(r);let d=s*u-l*c;if(d<=0&&s>=0&&l<=0)return a=s/(s-l),t.copy(n).addScaledVector(Oi,a);Ni.subVectors(e,i);let f=Oi.dot(Ni),p=ki.dot(Ni);if(p>=0&&f<=p)return t.copy(i);let m=f*c-s*p;if(m<=0&&c>=0&&p<=0)return o=c/(c-p),t.copy(n).addScaledVector(ki,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return Ai.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector(Ai,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(Oi,a).addScaledVector(ki,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},Ri=class{constructor(e=new P(1/0,1/0,1/0),t=new P(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t+=3)this.expandByPoint(Bi.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(Bi.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let n=Bi.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);let n=e.geometry;if(n!==void 0){let r=n.getAttribute(`position`);if(t===!0&&r!==void 0&&e.isInstancedMesh!==!0)for(let t=0,n=r.count;t<n;t++)e.isMesh===!0?e.getVertexPosition(t,Bi):Bi.fromBufferAttribute(r,t),Bi.applyMatrix4(e.matrixWorld),this.expandByPoint(Bi);else e.boundingBox===void 0?(n.boundingBox===null&&n.computeBoundingBox(),Vi.copy(n.boundingBox)):(e.boundingBox===null&&e.computeBoundingBox(),Vi.copy(e.boundingBox)),Vi.applyMatrix4(e.matrixWorld),this.union(Vi)}let r=e.children;for(let e=0,n=r.length;e<n;e++)this.expandByObject(r[e],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,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,Bi),Bi.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(Ji),Yi.subVectors(this.max,Ji),Hi.subVectors(e.a,Ji),Ui.subVectors(e.b,Ji),Wi.subVectors(e.c,Ji),Gi.subVectors(Ui,Hi),Ki.subVectors(Wi,Ui),qi.subVectors(Hi,Wi);let t=[0,-Gi.z,Gi.y,0,-Ki.z,Ki.y,0,-qi.z,qi.y,Gi.z,0,-Gi.x,Ki.z,0,-Ki.x,qi.z,0,-qi.x,-Gi.y,Gi.x,0,-Ki.y,Ki.x,0,-qi.y,qi.x,0];return!Qi(t,Hi,Ui,Wi,Yi)||(t=[1,0,0,0,1,0,0,0,1],!Qi(t,Hi,Ui,Wi,Yi))?!1:(Xi.crossVectors(Gi,Ki),t=[Xi.x,Xi.y,Xi.z],Qi(t,Hi,Ui,Wi,Yi))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Bi).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Bi).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:(zi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),zi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),zi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),zi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),zi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),zi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),zi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),zi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(zi),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}},zi=[new P,new P,new P,new P,new P,new P,new P,new P],Bi=new P,Vi=new Ri,Hi=new P,Ui=new P,Wi=new P,Gi=new P,Ki=new P,qi=new P,Ji=new P,Yi=new P,Xi=new P,Zi=new P;function Qi(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){Zi.fromArray(e,a);let o=i.x*Math.abs(Zi.x)+i.y*Math.abs(Zi.y)+i.z*Math.abs(Zi.z),s=t.dot(Zi),c=n.dot(Zi),l=r.dot(Zi);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}var $i=ea();function ea(){let e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),r=new Uint32Array(512),i=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(r[e]=0,r[e|256]=32768,i[e]=24,i[e|256]=24):t<-14?(r[e]=1024>>-t-14,r[e|256]=1024>>-t-14|32768,i[e]=-t-1,i[e|256]=-t-1):t<=15?(r[e]=t+15<<10,r[e|256]=t+15<<10|32768,i[e]=13,i[e|256]=13):t<128?(r[e]=31744,r[e|256]=64512,i[e]=24,i[e|256]=24):(r[e]=31744,r[e|256]=64512,i[e]=13,i[e|256]=13)}let a=new Uint32Array(2048),o=new Uint32Array(64),s=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;!(t&8388608);)t<<=1,n-=8388608;t&=-8388609,n+=947912704,a[e]=t|n}for(let e=1024;e<2048;++e)a[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)o[e]=e<<23;o[31]=1199570944,o[32]=2147483648;for(let e=33;e<63;++e)o[e]=2147483648+(e-32<<23);o[63]=3347054592;for(let e=1;e<64;++e)e!==32&&(s[e]=1024);return{floatView:t,uint32View:n,baseTable:r,shiftTable:i,mantissaTable:a,exponentTable:o,offsetTable:s}}function ta(e){Math.abs(e)>65504&&j(`DataUtils.toHalfFloat(): Value out of range.`),e=Kn(e,-65504,65504),$i.floatView[0]=e;let t=$i.uint32View[0],n=t>>23&511;return $i.baseTable[n]+((t&8388607)>>$i.shiftTable[n])}function na(e){let t=e>>10;return $i.uint32View[0]=$i.mantissaTable[$i.offsetTable[t]+(e&1023)]+$i.exponentTable[t],$i.floatView[0]}var ra=class{static toHalfFloat(e){return ta(e)}static fromHalfFloat(e){return na(e)}},ia=new P,aa=new N,oa=0,sa=class extends Bn{constructor(e,t,n=!1){if(super(),Array.isArray(e))throw TypeError(`THREE.BufferAttribute: array should be a Typed Array.`);this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:oa++}),this.name=``,this.array=e,this.itemSize=t,this.count=e===void 0?0:e.length/t,this.normalized=n,this.usage=cn,this.updateRanges=[],this.gpuType=Pe,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,i=this.itemSize;r<i;r++)this.array[e+r]=t.array[n+r];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)aa.fromBufferAttribute(this,t),aa.applyMatrix3(e),this.setXY(t,aa.x,aa.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.applyMatrix3(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.applyMatrix4(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.applyNormalMatrix(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)ia.fromBufferAttribute(this,t),ia.transformDirection(e),this.setXYZ(t,ia.x,ia.y,ia.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=dr(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=fr(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=dr(t,this.array)),t}setX(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=dr(t,this.array)),t}setY(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=dr(t,this.array)),t}setZ(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=dr(t,this.array)),t}setW(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,r){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this}setXYZW(e,t,n,r,i){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array),i=fr(i,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this.array[e+3]=i,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==``&&(e.name=this.name),this.usage!==35044&&(e.usage=this.usage),e}dispose(){this.dispatchEvent({type:`dispose`})}},ca=class extends sa{constructor(e,t,n){super(new Int8Array(e),t,n)}},la=class extends sa{constructor(e,t,n){super(new Uint8Array(e),t,n)}},ua=class extends sa{constructor(e,t,n){super(new Uint8ClampedArray(e),t,n)}},da=class extends sa{constructor(e,t,n){super(new Int16Array(e),t,n)}},fa=class extends sa{constructor(e,t,n){super(new Uint16Array(e),t,n)}},pa=class extends sa{constructor(e,t,n){super(new Int32Array(e),t,n)}},ma=class extends sa{constructor(e,t,n){super(new Uint32Array(e),t,n)}},ha=class extends sa{constructor(e,t,n){super(new Uint16Array(e),t,n),this.isFloat16BufferAttribute=!0}getX(e){let t=na(this.array[e*this.itemSize]);return this.normalized&&(t=dr(t,this.array)),t}setX(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize]=ta(t),this}getY(e){let t=na(this.array[e*this.itemSize+1]);return this.normalized&&(t=dr(t,this.array)),t}setY(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+1]=ta(t),this}getZ(e){let t=na(this.array[e*this.itemSize+2]);return this.normalized&&(t=dr(t,this.array)),t}setZ(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+2]=ta(t),this}getW(e){let t=na(this.array[e*this.itemSize+3]);return this.normalized&&(t=dr(t,this.array)),t}setW(e,t){return this.normalized&&(t=fr(t,this.array)),this.array[e*this.itemSize+3]=ta(t),this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array)),this.array[e+0]=ta(t),this.array[e+1]=ta(n),this}setXYZ(e,t,n,r){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array)),this.array[e+0]=ta(t),this.array[e+1]=ta(n),this.array[e+2]=ta(r),this}setXYZW(e,t,n,r,i){return e*=this.itemSize,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array),i=fr(i,this.array)),this.array[e+0]=ta(t),this.array[e+1]=ta(n),this.array[e+2]=ta(r),this.array[e+3]=ta(i),this}},ga=class extends sa{constructor(e,t,n){super(new Float32Array(e),t,n)}},_a=new Ri,va=new P,ya=new P,ba=class{constructor(e=new P,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;t===void 0?_a.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;t<i;t++)r=Math.max(r,n.distanceToSquared(e[t]));return this.radius=Math.sqrt(r),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){let t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){let n=this.center.distanceToSquared(e);return t.copy(e),n>this.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*=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;va.subVectors(e,this.center);let t=va.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(va,n/e),this.radius+=n}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):(ya.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(va.copy(e.center).add(ya)),this.expandByPoint(va.copy(e.center).sub(ya))),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}},xa=0,Sa=new F,Ca=new fi,wa=new P,Ta=new Ri,Ea=new Ri,Da=new P,Oa=class e extends Bn{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:xa++}),this.uuid=Gn(),this.name=``,this.type=`BufferGeometry`,this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(wn(e)?ma:fa)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let n=this.attributes.normal;if(n!==void 0){let t=new _r().getNormalMatrix(e);n.applyNormalMatrix(t),n.needsUpdate=!0}let r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return Sa.makeRotationFromQuaternion(e),this.applyMatrix4(Sa),this}rotateX(e){return Sa.makeRotationX(e),this.applyMatrix4(Sa),this}rotateY(e){return Sa.makeRotationY(e),this.applyMatrix4(Sa),this}rotateZ(e){return Sa.makeRotationZ(e),this.applyMatrix4(Sa),this}translate(e,t,n){return Sa.makeTranslation(e,t,n),this.applyMatrix4(Sa),this}scale(e,t,n){return Sa.makeScale(e,t,n),this.applyMatrix4(Sa),this}lookAt(e){return Ca.lookAt(e),Ca.updateMatrix(),this.applyMatrix4(Ca.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(wa).negate(),this.translate(wa.x,wa.y,wa.z),this}setFromPoints(e){let t=this.getAttribute(`position`);if(t===void 0){let t=[];for(let n=0,r=e.length;n<r;n++){let r=e[n];t.push(r.x,r.y,r.z||0)}this.setAttribute(`position`,new ga(t,3))}else{let n=Math.min(e.length,t.count);for(let r=0;r<n;r++){let n=e[r];t.setXYZ(r,n.x,n.y,n.z||0)}e.length>t.count&&j(`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 Ri);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){M(`BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.`,this),this.boundingBox.set(new P(-1/0,-1/0,-1/0),new P(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){let n=t[e];Ta.setFromBufferAttribute(n),this.morphTargetsRelative?(Da.addVectors(this.boundingBox.min,Ta.min),this.boundingBox.expandByPoint(Da),Da.addVectors(this.boundingBox.max,Ta.max),this.boundingBox.expandByPoint(Da)):(this.boundingBox.expandByPoint(Ta.min),this.boundingBox.expandByPoint(Ta.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&M(`BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.`,this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ba);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){M(`BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.`,this),this.boundingSphere.set(new P,1/0);return}if(e){let n=this.boundingSphere.center;if(Ta.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){let n=t[e];Ea.setFromBufferAttribute(n),this.morphTargetsRelative?(Da.addVectors(Ta.min,Ea.min),Ta.expandByPoint(Da),Da.addVectors(Ta.max,Ea.max),Ta.expandByPoint(Da)):(Ta.expandByPoint(Ea.min),Ta.expandByPoint(Ea.max))}Ta.getCenter(n);let r=0;for(let t=0,i=e.count;t<i;t++)Da.fromBufferAttribute(e,t),r=Math.max(r,n.distanceToSquared(Da));if(t)for(let i=0,a=t.length;i<a;i++){let a=t[i],o=this.morphTargetsRelative;for(let t=0,i=a.count;t<i;t++)Da.fromBufferAttribute(a,t),o&&(wa.fromBufferAttribute(e,t),Da.add(wa)),r=Math.max(r,n.distanceToSquared(Da))}this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&M(`BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.`,this)}}computeTangents(){let e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){M(`BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)`);return}let n=t.position,r=t.normal,i=t.uv;this.hasAttribute(`tangent`)===!1&&this.setAttribute(`tangent`,new sa(new Float32Array(4*n.count),4));let a=this.getAttribute(`tangent`),o=[],s=[];for(let e=0;e<n.count;e++)o[e]=new P,s[e]=new P;let c=new P,l=new P,u=new P,d=new N,f=new N,p=new N,m=new P,h=new P;function g(e,t,r){c.fromBufferAttribute(n,e),l.fromBufferAttribute(n,t),u.fromBufferAttribute(n,r),d.fromBufferAttribute(i,e),f.fromBufferAttribute(i,t),p.fromBufferAttribute(i,r),l.sub(c),u.sub(c),f.sub(d),p.sub(d);let a=1/(f.x*p.y-p.x*f.y);isFinite(a)&&(m.copy(l).multiplyScalar(p.y).addScaledVector(u,-f.y).multiplyScalar(a),h.copy(u).multiplyScalar(f.x).addScaledVector(l,-p.x).multiplyScalar(a),o[e].add(m),o[t].add(m),o[r].add(m),s[e].add(h),s[t].add(h),s[r].add(h))}let _=this.groups;_.length===0&&(_=[{start:0,count:e.count}]);for(let t=0,n=_.length;t<n;++t){let n=_[t],r=n.start,i=n.count;for(let t=r,n=r+i;t<n;t+=3)g(e.getX(t+0),e.getX(t+1),e.getX(t+2))}let v=new P,y=new P,b=new P,x=new P;function S(e){b.fromBufferAttribute(r,e),x.copy(b);let t=o[e];v.copy(t),v.sub(b.multiplyScalar(b.dot(t))).normalize(),y.crossVectors(x,t);let n=y.dot(s[e])<0?-1:1;a.setXYZW(e,v.x,v.y,v.z,n)}for(let t=0,n=_.length;t<n;++t){let n=_[t],r=n.start,i=n.count;for(let t=r,n=r+i;t<n;t+=3)S(e.getX(t+0)),S(e.getX(t+1)),S(e.getX(t+2))}}computeVertexNormals(){let e=this.index,t=this.getAttribute(`position`);if(t!==void 0){let n=this.getAttribute(`normal`);if(n===void 0)n=new sa(new Float32Array(t.count*3),3),this.setAttribute(`normal`,n);else for(let e=0,t=n.count;e<t;e++)n.setXYZ(e,0,0,0);let r=new P,i=new P,a=new P,o=new P,s=new P,c=new P,l=new P,u=new P;if(e)for(let d=0,f=e.count;d<f;d+=3){let f=e.getX(d+0),p=e.getX(d+1),m=e.getX(d+2);r.fromBufferAttribute(t,f),i.fromBufferAttribute(t,p),a.fromBufferAttribute(t,m),l.subVectors(a,i),u.subVectors(r,i),l.cross(u),o.fromBufferAttribute(n,f),s.fromBufferAttribute(n,p),c.fromBufferAttribute(n,m),o.add(l),s.add(l),c.add(l),n.setXYZ(f,o.x,o.y,o.z),n.setXYZ(p,s.x,s.y,s.z),n.setXYZ(m,c.x,c.y,c.z)}else for(let e=0,o=t.count;e<o;e+=3)r.fromBufferAttribute(t,e+0),i.fromBufferAttribute(t,e+1),a.fromBufferAttribute(t,e+2),l.subVectors(a,i),u.subVectors(r,i),l.cross(u),n.setXYZ(e+0,l.x,l.y,l.z),n.setXYZ(e+1,l.x,l.y,l.z),n.setXYZ(e+2,l.x,l.y,l.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){let e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)Da.fromBufferAttribute(e,t),Da.normalize(),e.setXYZ(t,Da.x,Da.y,Da.z)}toNonIndexed(){function t(e,t){let n=e.array,r=e.itemSize,i=e.normalized,a=new n.constructor(t.length*r),o=0,s=0;for(let i=0,c=t.length;i<c;i++){o=e.isInterleavedBufferAttribute?t[i]*e.data.stride+e.offset:t[i]*r;for(let e=0;e<r;e++)a[s++]=n[o++]}return new sa(a,r,i)}if(this.index===null)return j(`BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.`),this;let n=new e,r=this.index.array,i=this.attributes;for(let e in i){let a=i[e],o=t(a,r);n.setAttribute(e,o)}let a=this.morphAttributes;for(let e in a){let i=[],o=a[e];for(let e=0,n=o.length;e<n;e++){let n=o[e],a=t(n,r);i.push(a)}n.morphAttributes[e]=i}n.morphTargetsRelative=this.morphTargetsRelative;let o=this.groups;for(let e=0,t=o.length;e<t;e++){let t=o[e];n.addGroup(t.start,t.count,t.materialIndex)}return n}toJSON(){let e={metadata:{version:4.7,type:`BufferGeometry`,generator:`BufferGeometry.toJSON`}};if(e.uuid=this.uuid,e.type=this.type,this.name!==``&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){let t=this.parameters;for(let n in t)t[n]!==void 0&&(e[n]=t[n]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let t in n){let r=n[t];e.data.attributes[t]=r.toJSON(e.data)}let r={},i=!1;for(let t in this.morphAttributes){let n=this.morphAttributes[t],a=[];for(let t=0,r=n.length;t<r;t++){let r=n[t];a.push(r.toJSON(e.data))}a.length>0&&(r[t]=a,i=!0)}i&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.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;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone());let r=e.attributes;for(let e in r){let n=r[e];this.setAttribute(e,n.clone(t))}let i=e.morphAttributes;for(let e in i){let n=[],r=i[e];for(let e=0,i=r.length;e<i;e++)n.push(r[e].clone(t));this.morphAttributes[e]=n}this.morphTargetsRelative=e.morphTargetsRelative;let a=e.groups;for(let e=0,t=a.length;e<t;e++){let t=a[e];this.addGroup(t.start,t.count,t.materialIndex)}let o=e.boundingBox;o!==null&&(this.boundingBox=o.clone());let s=e.boundingSphere;return s!==null&&(this.boundingSphere=s.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:`dispose`})}},ka=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=cn,this.updateRanges=[],this.version=0,this.uuid=Gn()}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,i=this.stride;r<i;r++)this.array[e+r]=t.array[n+r];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Gn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Gn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},Aa=new P,ja=class e{constructor(e,t,n,r=!1){this.isInterleavedBufferAttribute=!0,this.name=``,this.data=e,this.itemSize=t,this.offset=n,this.normalized=r}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)Aa.fromBufferAttribute(this,t),Aa.applyMatrix4(e),this.setXYZ(t,Aa.x,Aa.y,Aa.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Aa.fromBufferAttribute(this,t),Aa.applyNormalMatrix(e),this.setXYZ(t,Aa.x,Aa.y,Aa.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Aa.fromBufferAttribute(this,t),Aa.transformDirection(e),this.setXYZ(t,Aa.x,Aa.y,Aa.z);return this}getComponent(e,t){let n=this.array[e*this.data.stride+this.offset+t];return this.normalized&&(n=dr(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=fr(n,this.array)),this.data.array[e*this.data.stride+this.offset+t]=n,this}setX(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=fr(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=dr(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=dr(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=dr(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=dr(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this}setXYZW(e,t,n,r,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=fr(t,this.array),n=fr(n,this.array),r=fr(r,this.array),i=fr(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this.data.array[e+3]=i,this}clone(t){if(t===void 0){Pn(`InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.`);let e=[];for(let t=0;t<this.count;t++){let n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return new sa(new this.array.constructor(e),this.itemSize,this.normalized)}else return t.interleavedBuffers===void 0&&(t.interleavedBuffers={}),t.interleavedBuffers[this.data.uuid]===void 0&&(t.interleavedBuffers[this.data.uuid]=this.data.clone(t)),new e(t.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){Pn(`InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.`);let e=[];for(let t=0;t<this.count;t++){let n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}},Ma=0,Na=class extends Bn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Ma++}),this.uuid=Gn(),this.name=``,this.type=`Material`,this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new I(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=en,this.stencilZFail=en,this.stencilZPass=en,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.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){j(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){j(`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){let t=e===void 0||typeof e==`string`;t&&(e={textures:{},images:{}});let 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!==1&&(n.blending=this.blending),this.side!==0&&(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!==204&&(n.blendSrc=this.blendSrc),this.blendDst!==205&&(n.blendDst=this.blendDst),this.blendEquation!==100&&(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!==3&&(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!==519&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==7680&&(n.stencilFail=this.stencilFail),this.stencilZFail!==7680&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==7680&&(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(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(t){let t=r(e.textures),i=r(e.images);t.length>0&&(n.textures=t),i.length>0&&(n.images=i)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,n=null;if(t!==null){let e=t.length;n=Array(e);for(let r=0;r!==e;++r)n[r]=t[r].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++}},Pa=class extends Na{constructor(e){super(),this.isSpriteMaterial=!0,this.type=`SpriteMaterial`,this.color=new I(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},Fa,Ia=new P,La=new P,Ra=new P,za=new N,Ba=new N,Va=new F,Ha=new P,Ua=new P,Wa=new P,Ga=new N,Ka=new N,qa=new N,Ja=class extends fi{constructor(e=new Pa){if(super(),this.isSprite=!0,this.type=`Sprite`,Fa===void 0){Fa=new Oa;let e=new ka(new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),5);Fa.setIndex([0,1,2,0,2,3]),Fa.setAttribute(`position`,new ja(e,3,0,!1)),Fa.setAttribute(`uv`,new ja(e,2,3,!1))}this.geometry=Fa,this.material=e,this.center=new N(.5,.5),this.count=1}raycast(e,t){e.camera===null&&M(`Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.`),La.setFromMatrixScale(this.matrixWorld),Va.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Ra.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&La.multiplyScalar(-Ra.z);let n=this.material.rotation,r,i;n!==0&&(i=Math.cos(n),r=Math.sin(n));let a=this.center;Ya(Ha.set(-.5,-.5,0),Ra,a,La,r,i),Ya(Ua.set(.5,-.5,0),Ra,a,La,r,i),Ya(Wa.set(.5,.5,0),Ra,a,La,r,i),Ga.set(0,0),Ka.set(1,0),qa.set(1,1);let o=e.ray.intersectTriangle(Ha,Ua,Wa,!1,Ia);if(o===null&&(Ya(Ua.set(-.5,.5,0),Ra,a,La,r,i),Ka.set(0,1),o=e.ray.intersectTriangle(Ha,Wa,Ua,!1,Ia),o===null))return;let s=e.ray.origin.distanceTo(Ia);s<e.near||s>e.far||t.push({distance:s,point:Ia.clone(),uv:Li.getInterpolation(Ia,Ha,Ua,Wa,Ga,Ka,qa,new N),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 Ya(e,t,n,r,i,a){za.subVectors(e,n).addScalar(.5).multiply(r),i===void 0?Ba.copy(za):(Ba.x=a*za.x-i*za.y,Ba.y=i*za.x+a*za.y),e.copy(t),e.x+=Ba.x,e.y+=Ba.y,e.applyMatrix4(Va)}var Xa=new P,Za=new P,Qa=class extends fi{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);let t=e.levels;for(let e=0,n=t.length;e<n;e++){let n=t[e];this.addLevel(n.object.clone(),n.distance,n.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,t=0,n=0){t=Math.abs(t);let r=this.levels,i;for(i=0;i<r.length&&!(t<r[i].distance);i++);return r.splice(i,0,{distance:t,hysteresis:n,object:e}),this.add(e),this}removeLevel(e){let t=this.levels;for(let n=0;n<t.length;n++)if(t[n].distance===e){let e=t.splice(n,1);return this.remove(e[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){let t=this.levels;if(t.length>0){let n,r;for(n=1,r=t.length;n<r;n++){let r=t[n].distance;if(t[n].object.visible&&(r-=r*t[n].hysteresis),e<r)break}return t[n-1].object}return null}raycast(e,t){if(this.levels.length>0){Xa.setFromMatrixPosition(this.matrixWorld);let n=e.ray.origin.distanceTo(Xa);this.getObjectForDistance(n).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){Xa.setFromMatrixPosition(e.matrixWorld),Za.setFromMatrixPosition(this.matrixWorld);let n=Xa.distanceTo(Za)/e.zoom;t[0].object.visible=!0;let r,i;for(r=1,i=t.length;r<i;r++){let e=t[r].distance;if(t[r].object.visible&&(e-=e*t[r].hysteresis),n>=e)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r<i;r++)t[r].object.visible=!1}}toJSON(e){let t=super.toJSON(e);this.autoUpdate===!1&&(t.object.autoUpdate=!1),t.object.levels=[];let n=this.levels;for(let e=0,r=n.length;e<r;e++){let r=n[e];t.object.levels.push({object:r.object.uuid,distance:r.distance,hysteresis:r.hysteresis})}return t}},$a=new P,eo=new P,to=new P,no=new P,ro=new P,io=new P,ao=new P,oo=class{constructor(e=new P,t=new P(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,$a)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=$a.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):($a.copy(this.origin).addScaledVector(this.direction,t),$a.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){eo.copy(e).add(t).multiplyScalar(.5),to.copy(t).sub(e).normalize(),no.copy(this.origin).sub(eo);let i=e.distanceTo(t)*.5,a=-this.direction.dot(to),o=no.dot(this.direction),s=-no.dot(to),c=no.lengthSq(),l=Math.abs(1-a*a),u,d,f,p;if(l>0)if(u=a*s-o,d=a*o-s,p=i*l,u>=0)if(d>=-p)if(d<=p){let e=1/l;u*=e,d*=e,f=u*(u+a*d+2*o)+d*(a*u+d+2*s)+c}else d=i,u=Math.max(0,-(a*d+o)),f=-u*u+d*(d+2*s)+c;else d=-i,u=Math.max(0,-(a*d+o)),f=-u*u+d*(d+2*s)+c;else d<=-p?(u=Math.max(0,-(-a*i+o)),d=u>0?-i:Math.min(Math.max(-i,-s),i),f=-u*u+d*(d+2*s)+c):d<=p?(u=0,d=Math.min(Math.max(-i,-s),i),f=d*(d+2*s)+c):(u=Math.max(0,-(a*i+o)),d=u>0?i:Math.min(Math.max(-i,-s),i),f=-u*u+d*(d+2*s)+c);else d=a>0?-i:i,u=Math.max(0,-(a*d+o)),f=-u*u+d*(d+2*s)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,u),r&&r.copy(eo).addScaledVector(to,d),f}intersectSphere(e,t){$a.subVectors(e.center,this.origin);let n=$a.dot(this.direction),r=$a.dot($a)-n*n,i=e.radius*e.radius;if(r>i)return null;let a=Math.sqrt(i-r),o=n-a,s=n+a;return s<0?null:o<0?this.at(s,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,i,a,o,s,c=1/this.direction.x,l=1/this.direction.y,u=1/this.direction.z,d=this.origin;return c>=0?(n=(e.min.x-d.x)*c,r=(e.max.x-d.x)*c):(n=(e.max.x-d.x)*c,r=(e.min.x-d.x)*c),l>=0?(i=(e.min.y-d.y)*l,a=(e.max.y-d.y)*l):(i=(e.max.y-d.y)*l,a=(e.min.y-d.y)*l),n>a||i>r||((i>n||isNaN(n))&&(n=i),(a<r||isNaN(r))&&(r=a),u>=0?(o=(e.min.z-d.z)*u,s=(e.max.z-d.z)*u):(o=(e.max.z-d.z)*u,s=(e.min.z-d.z)*u),n>s||o>r)||((o>n||n!==n)&&(n=o),(s<r||r!==r)&&(r=s),r<0)?null:this.at(n>=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,$a)!==null}intersectTriangle(e,t,n,r,i){ro.subVectors(t,e),io.subVectors(n,e),ao.crossVectors(ro,io);let a=this.direction.dot(ao),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;no.subVectors(this.origin,e);let s=o*this.direction.dot(io.crossVectors(no,io));if(s<0)return null;let c=o*this.direction.dot(ro.cross(no));if(c<0||s+c>a)return null;let l=-o*no.dot(ao);return l<0?null:this.at(l/a,i)}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)}},so=class extends Na{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type=`MeshBasicMaterial`,this.color=new I(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 Yr,this.combine=0,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}},co=new F,lo=new oo,uo=new ba,fo=new P,po=new P,mo=new P,ho=new P,go=new P,_o=new P,vo=new P,yo=new P,bo=class extends fi{constructor(e=new Oa,t=new so){super(),this.isMesh=!0,this.type=`Mesh`,this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){let n=this.geometry,r=n.attributes.position,i=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(r,e);let o=this.morphTargetInfluences;if(i&&o){_o.set(0,0,0);for(let n=0,r=i.length;n<r;n++){let r=o[n],s=i[n];r!==0&&(go.fromBufferAttribute(s,e),a?_o.addScaledVector(go,r):_o.addScaledVector(go.sub(t),r))}t.add(_o)}return t}raycast(e,t){let n=this.geometry,r=this.material,i=this.matrixWorld;r!==void 0&&(n.boundingSphere===null&&n.computeBoundingSphere(),uo.copy(n.boundingSphere),uo.applyMatrix4(i),lo.copy(e.ray).recast(e.near),!(uo.containsPoint(lo.origin)===!1&&(lo.intersectSphere(uo,fo)===null||lo.origin.distanceToSquared(fo)>(e.far-e.near)**2))&&(co.copy(i).invert(),lo.copy(e.ray).applyMatrix4(co),!(n.boundingBox!==null&&lo.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,lo)))}_computeIntersections(e,t,n){let r,i=this.geometry,a=this.material,o=i.index,s=i.attributes.position,c=i.attributes.uv,l=i.attributes.uv1,u=i.attributes.normal,d=i.groups,f=i.drawRange;if(o!==null)if(Array.isArray(a))for(let i=0,s=d.length;i<s;i++){let s=d[i],p=a[s.materialIndex],m=Math.max(s.start,f.start),h=Math.min(o.count,Math.min(s.start+s.count,f.start+f.count));for(let i=m,a=h;i<a;i+=3){let a=o.getX(i),d=o.getX(i+1),f=o.getX(i+2);r=So(this,p,e,n,c,l,u,a,d,f),r&&(r.faceIndex=Math.floor(i/3),r.face.materialIndex=s.materialIndex,t.push(r))}}else{let i=Math.max(0,f.start),s=Math.min(o.count,f.start+f.count);for(let d=i,f=s;d<f;d+=3){let i=o.getX(d),s=o.getX(d+1),f=o.getX(d+2);r=So(this,a,e,n,c,l,u,i,s,f),r&&(r.faceIndex=Math.floor(d/3),t.push(r))}}else if(s!==void 0)if(Array.isArray(a))for(let i=0,o=d.length;i<o;i++){let o=d[i],p=a[o.materialIndex],m=Math.max(o.start,f.start),h=Math.min(s.count,Math.min(o.start+o.count,f.start+f.count));for(let i=m,a=h;i<a;i+=3){let a=i,s=i+1,d=i+2;r=So(this,p,e,n,c,l,u,a,s,d),r&&(r.faceIndex=Math.floor(i/3),r.face.materialIndex=o.materialIndex,t.push(r))}}else{let i=Math.max(0,f.start),o=Math.min(s.count,f.start+f.count);for(let s=i,d=o;s<d;s+=3){let i=s,o=s+1,d=s+2;r=So(this,a,e,n,c,l,u,i,o,d),r&&(r.faceIndex=Math.floor(s/3),t.push(r))}}}};function xo(e,t,n,r,i,a,o,s){let c;if(c=t.side===1?r.intersectTriangle(o,a,i,!0,s):r.intersectTriangle(i,a,o,t.side===0,s),c===null)return null;yo.copy(s),yo.applyMatrix4(e.matrixWorld);let l=n.ray.origin.distanceTo(yo);return l<n.near||l>n.far?null:{distance:l,point:yo.clone(),object:e}}function So(e,t,n,r,i,a,o,s,c,l){e.getVertexPosition(s,po),e.getVertexPosition(c,mo),e.getVertexPosition(l,ho);let u=xo(e,t,n,r,po,mo,ho,vo);if(u){let e=new P;Li.getBarycoord(vo,po,mo,ho,e),i&&(u.uv=Li.getInterpolatedAttribute(i,s,c,l,e,new N)),a&&(u.uv1=Li.getInterpolatedAttribute(a,s,c,l,e,new N)),o&&(u.normal=Li.getInterpolatedAttribute(o,s,c,l,e,new P),u.normal.dot(r.direction)>0&&u.normal.multiplyScalar(-1));let t={a:s,b:c,c:l,normal:new P,materialIndex:0};Li.getNormal(po,mo,ho,t.normal),u.face=t,u.barycoord=e}return u}var Co=new Nr,wo=new Nr,To=new Nr,Eo=new Nr,Do=new F,Oo=new P,ko=new ba,Ao=new F,jo=new oo,Mo=class extends bo{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type=`SkinnedMesh`,this.bindMode=he,this.bindMatrix=new F,this.bindMatrixInverse=new F,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){let e=this.geometry;this.boundingBox===null&&(this.boundingBox=new Ri),this.boundingBox.makeEmpty();let t=e.getAttribute(`position`);for(let e=0;e<t.count;e++)this.getVertexPosition(e,Oo),this.boundingBox.expandByPoint(Oo)}computeBoundingSphere(){let e=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new ba),this.boundingSphere.makeEmpty();let t=e.getAttribute(`position`);for(let e=0;e<t.count;e++)this.getVertexPosition(e,Oo),this.boundingSphere.expandByPoint(Oo)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){let n=this.material,r=this.matrixWorld;n!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),ko.copy(this.boundingSphere),ko.applyMatrix4(r),e.ray.intersectsSphere(ko)!==!1&&(Ao.copy(r).invert(),jo.copy(e.ray).applyMatrix4(Ao),!(this.boundingBox!==null&&jo.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(e,t,jo)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){let e=new Nr,t=this.geometry.attributes.skinWeight;for(let n=0,r=t.count;n<r;n++){e.fromBufferAttribute(t,n);let r=1/e.manhattanLength();r===1/0?e.set(1,0,0,0):e.multiplyScalar(r),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===`attached`?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===`detached`?this.bindMatrixInverse.copy(this.bindMatrix).invert():j(`SkinnedMesh: Unrecognized bindMode: `+this.bindMode)}applyBoneTransform(e,t){let n=this.skeleton,r=this.geometry;wo.fromBufferAttribute(r.attributes.skinIndex,e),To.fromBufferAttribute(r.attributes.skinWeight,e),t.isVector4?(Co.copy(t),t.set(0,0,0,0)):(Co.set(...t,1),t.set(0,0,0)),Co.applyMatrix4(this.bindMatrix);for(let e=0;e<4;e++){let r=To.getComponent(e);if(r!==0){let i=wo.getComponent(e);Do.multiplyMatrices(n.bones[i].matrixWorld,n.boneInverses[i]),t.addScaledVector(Eo.copy(Co).applyMatrix4(Do),r)}}return t.isVector4&&(t.w=Co.w),t.applyMatrix4(this.bindMatrixInverse)}},No=class extends fi{constructor(){super(),this.isBone=!0,this.type=`Bone`}},Po=class extends Mr{constructor(e=null,t=1,n=1,r,i,a,o,s,c=be,l=be,u,d){super(null,a,o,s,c,l,r,i,u,d),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},Fo=new F,Io=new F,Lo=class e{constructor(e=[],t=[]){this.uuid=Gn(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.previousBoneMatrices=null,this.boneTexture=null,this.init()}init(){let e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(e.length*16),t.length===0)this.calculateInverses();else if(e.length!==t.length){j(`Skeleton: Number of inverse bone matrices does not match amount of bones.`),this.boneInverses=[];for(let e=0,t=this.bones.length;e<t;e++)this.boneInverses.push(new F)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){let t=new F;this.bones[e]&&t.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&t.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){let e=this.bones,t=this.boneInverses,n=this.boneMatrices,r=this.boneTexture;for(let r=0,i=e.length;r<i;r++){let i=e[r]?e[r].matrixWorld:Io;Fo.multiplyMatrices(i,t[r]),Fo.toArray(n,r*16)}r!==null&&(r.needsUpdate=!0)}clone(){return new e(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);let t=new Float32Array(e*e*4);t.set(this.boneMatrices);let n=new Po(t,e,e,Ue,Pe);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){let n=this.bones[t];if(n.name===e)return n}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,r=e.bones.length;n<r;n++){let r=e.bones[n],i=t[r];i===void 0&&(j(`Skeleton: No bone found with UUID:`,r),i=new No),this.bones.push(i),this.boneInverses.push(new F().fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){let e={metadata:{version:4.7,type:`Skeleton`,generator:`Skeleton.toJSON`},bones:[],boneInverses:[]};e.uuid=this.uuid;let t=this.bones,n=this.boneInverses;for(let r=0,i=t.length;r<i;r++){let i=t[r];e.bones.push(i.uuid);let a=n[r];e.boneInverses.push(a.toArray())}return e}},Ro=class extends sa{constructor(e,t,n,r=1){super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}},zo=new F,Bo=new F,Vo=[],Ho=new Ri,Uo=new F,Wo=new bo,Go=new ba,Ko=class extends bo{constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new Ro(new Float32Array(n*16),16),this.previousInstanceMatrix=null,this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let e=0;e<n;e++)this.setMatrixAt(e,Uo)}computeBoundingBox(){let e=this.geometry,t=this.count;this.boundingBox===null&&(this.boundingBox=new Ri),e.boundingBox===null&&e.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,zo),Ho.copy(e.boundingBox).applyMatrix4(zo),this.boundingBox.union(Ho)}computeBoundingSphere(){let e=this.geometry,t=this.count;this.boundingSphere===null&&(this.boundingSphere=new ba),e.boundingSphere===null&&e.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,zo),Go.copy(e.boundingSphere).applyMatrix4(zo),this.boundingSphere.union(Go)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),e.previousInstanceMatrix!==null&&(this.previousInstanceMatrix=e.previousInstanceMatrix.clone()),e.morphTexture!==null&&(this.morphTexture=e.morphTexture.clone()),e.instanceColor!==null&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}getColorAt(e,t){return this.instanceColor===null?t.setRGB(1,1,1):t.fromArray(this.instanceColor.array,e*3)}getMatrixAt(e,t){return t.fromArray(this.instanceMatrix.array,e*16)}getMorphAt(e,t){let n=t.morphTargetInfluences,r=this.morphTexture.source.data.data,i=e*(n.length+1)+1;for(let e=0;e<n.length;e++)n[e]=r[i+e]}raycast(e,t){let n=this.matrixWorld,r=this.count;if(Wo.geometry=this.geometry,Wo.material=this.material,Wo.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),Go.copy(this.boundingSphere),Go.applyMatrix4(n),e.ray.intersectsSphere(Go)!==!1))for(let i=0;i<r;i++){this.getMatrixAt(i,zo),Bo.multiplyMatrices(n,zo),Wo.matrixWorld=Bo,Wo.raycast(e,Vo);for(let e=0,n=Vo.length;e<n;e++){let n=Vo[e];n.instanceId=i,n.object=this,t.push(n)}Vo.length=0}}setColorAt(e,t){return this.instanceColor===null&&(this.instanceColor=new Ro(new Float32Array(this.instanceMatrix.count*3).fill(1),3)),t.toArray(this.instanceColor.array,e*3),this}setMatrixAt(e,t){return t.toArray(this.instanceMatrix.array,e*16),this}setMorphAt(e,t){let n=t.morphTargetInfluences,r=n.length+1;this.morphTexture===null&&(this.morphTexture=new Po(new Float32Array(r*this.count),r,this.count,Ke,Pe));let i=this.morphTexture.source.data.data,a=0;for(let e=0;e<n.length;e++)a+=n[e];let o=this.geometry.morphTargetsRelative?1:1-a,s=r*e;return i[s]=o,i.set(n,s+1),this}updateMorphTargets(){}dispose(){this.dispatchEvent({type:`dispose`}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null)}},qo=new P,Jo=new P,Yo=new _r,Xo=class{constructor(e=new P(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){let r=qo.subVectors(n,t).cross(Jo.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t,n=!0){let r=e.delta(qo),i=this.normal.dot(r);if(i===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;let a=-(e.start.dot(this.normal)+this.constant)/i;return n===!0&&(a<0||a>1)?null:t.copy(e.start).addScaledVector(r,a)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||Yo.getNormalMatrix(e),r=this.coplanarPoint(qo).applyMatrix4(e),i=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(i),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)}},Zo=new ba,Qo=new N(.5,.5),$o=new P,es=class{constructor(e=new Xo,t=new Xo,n=new Xo,r=new Xo,i=new Xo,a=new Xo){this.planes=[e,t,n,r,i,a]}set(e,t,n,r,i,a){let o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(r),o[4].copy(i),o[5].copy(a),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=vn,n=!1){let r=this.planes,i=e.elements,a=i[0],o=i[1],s=i[2],c=i[3],l=i[4],u=i[5],d=i[6],f=i[7],p=i[8],m=i[9],h=i[10],g=i[11],_=i[12],v=i[13],y=i[14],b=i[15];if(r[0].setComponents(c-a,f-l,g-p,b-_).normalize(),r[1].setComponents(c+a,f+l,g+p,b+_).normalize(),r[2].setComponents(c+o,f+u,g+m,b+v).normalize(),r[3].setComponents(c-o,f-u,g-m,b-v).normalize(),n)r[4].setComponents(s,d,h,y).normalize(),r[5].setComponents(c-s,f-d,g-h,b-y).normalize();else if(r[4].setComponents(c-s,f-d,g-h,b-y).normalize(),t===2e3)r[5].setComponents(c+s,f+d,g+h,b+y).normalize();else if(t===2001)r[5].setComponents(s,d,h,y).normalize();else throw Error(`THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: `+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Zo.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Zo.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Zo)}intersectsSprite(e){return Zo.center.set(0,0,0),Zo.radius=.7071067811865476+Qo.distanceTo(e.center),Zo.applyMatrix4(e.matrixWorld),this.intersectsSphere(Zo)}intersectsSphere(e){let t=this.planes,n=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)<r)return!1;return!0}intersectsBox(e){let t=this.planes;for(let n=0;n<6;n++){let r=t[n];if($o.x=r.normal.x>0?e.max.x:e.min.x,$o.y=r.normal.y>0?e.max.y:e.min.y,$o.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint($o)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}},ts=new F,ns=new es,rs=class e{constructor(){this.coordinateSystem=vn}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsObject(e))return!0}return!1}intersectsSprite(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsSprite(e))return!0}return!1}intersectsSphere(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsSphere(e))return!0}return!1}intersectsBox(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.intersectsBox(e))return!0}return!1}containsPoint(e,t){if(!t||!t.cameras||t.cameras.length===0)return!1;for(let n=0;n<t.cameras.length;n++){let r=t.cameras[n];if(ts.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse),ns.setFromProjectionMatrix(ts,r.coordinateSystem,r.reversedDepth),ns.containsPoint(e))return!0}return!1}clone(){return new e}};function is(e,t){return e-t}function as(e,t){return e.z-t.z}function os(e,t){return t.z-e.z}var ss=class{constructor(){this.index=0,this.pool=[],this.list=[]}push(e,t,n,r){let i=this.pool,a=this.list;this.index>=i.length&&i.push({start:-1,count:-1,z:-1,index:-1});let o=i[this.index];a.push(o),this.index++,o.start=e,o.count=t,o.z=n,o.index=r}reset(){this.list.length=0,this.index=0}},cs=new F,ls=new I(1,1,1),us=new es,ds=new rs,fs=new Ri,ps=new ba,ms=new P,hs=new P,gs=new P,_s=new ss,vs=new bo,ys=[];function bs(e,t,n=0){let r=t.itemSize;if(e.isInterleavedBufferAttribute||e.array.constructor!==t.array.constructor){let i=e.count;for(let a=0;a<i;a++)for(let i=0;i<r;i++)t.setComponent(a+n,i,e.getComponent(a,i))}else t.array.set(e.array,n*r);t.needsUpdate=!0}function xs(e,t){if(e.constructor!==t.constructor){let n=Math.min(e.length,t.length);for(let r=0;r<n;r++)t[r]=e[r]}else{let n=Math.min(e.length,t.length);t.set(new e.constructor(e.buffer,0,n))}}var Ss=class extends bo{constructor(e,t,n=t*2,r){super(new Oa,r),this.isBatchedMesh=!0,this.perObjectFrustumCulled=!0,this.sortObjects=!0,this.boundingBox=null,this.boundingSphere=null,this.customSort=null,this._instanceInfo=[],this._geometryInfo=[],this._availableInstanceIds=[],this._availableGeometryIds=[],this._nextIndexStart=0,this._nextVertexStart=0,this._geometryCount=0,this._visibilityChanged=!0,this._geometryInitialized=!1,this._maxInstanceCount=e,this._maxVertexCount=t,this._maxIndexCount=n,this._multiDrawCounts=new Int32Array(e),this._multiDrawStarts=new Int32Array(e),this._multiDrawCount=0,this._matricesTexture=null,this._indirectTexture=null,this._colorsTexture=null,this._initMatricesTexture(),this._initIndirectTexture()}get maxInstanceCount(){return this._maxInstanceCount}get instanceCount(){return this._instanceInfo.length-this._availableInstanceIds.length}get unusedVertexCount(){return this._maxVertexCount-this._nextVertexStart}get unusedIndexCount(){return this._maxIndexCount-this._nextIndexStart}_initMatricesTexture(){let e=Math.sqrt(this._maxInstanceCount*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);let t=new Po(new Float32Array(e*e*4),e,e,Ue,Pe);this._matricesTexture=t}_initIndirectTexture(){let e=Math.sqrt(this._maxInstanceCount);e=Math.ceil(e);let t=new Po(new Uint32Array(e*e),e,e,qe,Ne);this._indirectTexture=t}_initColorsTexture(){let e=Math.sqrt(this._maxInstanceCount);e=Math.ceil(e);let t=new Po(new Float32Array(e*e*4).fill(1),e,e,Ue,Pe);t.colorSpace=Sr.workingColorSpace,this._colorsTexture=t}_initializeGeometry(e){let t=this.geometry,n=this._maxVertexCount,r=this._maxIndexCount;if(this._geometryInitialized===!1){for(let r in e.attributes){let{array:i,itemSize:a,normalized:o}=e.getAttribute(r),s=new sa(new i.constructor(n*a),a,o);t.setAttribute(r,s)}if(e.getIndex()!==null){let e=n>65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new sa(e,1))}this._geometryInitialized=!0}}_validateGeometry(e){let t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw Error(`THREE.BatchedMesh: All geometries must consistently have "index".`);for(let n in t.attributes){if(!e.hasAttribute(n))throw Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);let r=e.getAttribute(n),i=t.getAttribute(n);if(r.itemSize!==i.itemSize||r.normalized!==i.normalized)throw Error(`THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.`)}}validateInstanceId(e){let t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){let t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw 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 Ri);let e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,r=t.length;n<r;n++){if(t[n].active===!1)continue;let r=t[n].geometryIndex;this.getMatrixAt(n,cs),this.getBoundingBoxAt(r,fs).applyMatrix4(cs),e.union(fs)}}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ba);let e=this.boundingSphere,t=this._instanceInfo;e.makeEmpty();for(let n=0,r=t.length;n<r;n++){if(t[n].active===!1)continue;let r=t[n].geometryIndex;this.getMatrixAt(n,cs),this.getBoundingSphereAt(r,ps).applyMatrix4(cs),e.union(ps)}}addInstance(e){if(this._instanceInfo.length>=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw Error(`THREE.BatchedMesh: Maximum item count reached.`);let t={visible:!0,active:!0,geometryIndex:e},n=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(is),n=this._availableInstanceIds.shift(),this._instanceInfo[n]=t):(n=this._instanceInfo.length,this._instanceInfo.push(t));let r=this._matricesTexture;cs.identity().toArray(r.image.data,n*16),r.needsUpdate=!0;let i=this._colorsTexture;return i&&(ls.toArray(i.image.data,n*4),i.needsUpdate=!0),this._visibilityChanged=!0,n}addGeometry(e,t=-1,n=-1){this._initializeGeometry(e),this._validateGeometry(e);let r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},i=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=t===-1?e.getAttribute(`position`).count:t;let a=e.getIndex();if(a!==null&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=n===-1?a.count:n),r.indexStart!==-1&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw Error(`THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.`);let o;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(is),o=this._availableGeometryIds.shift(),i[o]=r):(o=this._geometryCount,this._geometryCount++,i.push(r)),this.setGeometryAt(o,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,o}setGeometryAt(e,t){if(e>=this._geometryCount)throw Error(`THREE.BatchedMesh: Maximum geometry count reached.`);this._validateGeometry(t);let n=this.geometry,r=n.getIndex()!==null,i=n.getIndex(),a=t.getIndex(),o=this._geometryInfo[e];if(r&&a.count>o.reservedIndexCount||t.attributes.position.count>o.reservedVertexCount)throw Error(`THREE.BatchedMesh: Reserved space not large enough for provided geometry.`);let s=o.vertexStart,c=o.reservedVertexCount;o.vertexCount=t.getAttribute(`position`).count;for(let e in n.attributes){let r=t.getAttribute(e),i=n.getAttribute(e);bs(r,i,s);let a=r.itemSize;for(let e=r.count,t=c;e<t;e++){let t=s+e;for(let e=0;e<a;e++)i.setComponent(t,e,0)}i.needsUpdate=!0,i.addUpdateRange(s*a,c*a)}if(r){let e=o.indexStart,n=o.reservedIndexCount;o.indexCount=t.getIndex().count;for(let t=0;t<a.count;t++)i.setX(e+t,s+a.getX(t));for(let t=a.count,r=n;t<r;t++)i.setX(e+t,s);i.needsUpdate=!0,i.addUpdateRange(e,o.reservedIndexCount)}return o.start=r?o.indexStart:o.vertexStart,o.count=r?o.indexCount:o.vertexCount,o.boundingBox=null,t.boundingBox!==null&&(o.boundingBox=t.boundingBox.clone()),o.boundingSphere=null,t.boundingSphere!==null&&(o.boundingSphere=t.boundingSphere.clone()),this._visibilityChanged=!0,e}deleteGeometry(e){let t=this._geometryInfo;if(e>=t.length||t[e].active===!1)return this;let n=this._instanceInfo;for(let t=0,r=n.length;t<r;t++)n[t].active&&n[t].geometryIndex===e&&this.deleteInstance(t);return t[e].active=!1,this._availableGeometryIds.push(e),this._visibilityChanged=!0,this}deleteInstance(e){return this.validateInstanceId(e),this._instanceInfo[e].active=!1,this._availableInstanceIds.push(e),this._visibilityChanged=!0,this}optimize(){let e=0,t=0,n=this._geometryInfo,r=n.map((e,t)=>t).sort((e,t)=>n[e].vertexStart-n[t].vertexStart),i=this.geometry;for(let a=0,o=n.length;a<o;a++){let o=n[r[a]];if(o.active!==!1){if(i.index!==null){if(o.indexStart!==t){let{indexStart:n,vertexStart:r,reservedIndexCount:a}=o,s=i.index,c=s.array,l=e-r;for(let e=n;e<n+a;e++)c[e]=c[e]+l;s.array.copyWithin(t,n,n+a),s.addUpdateRange(t,a),s.needsUpdate=!0,o.indexStart=t}t+=o.reservedIndexCount}if(o.vertexStart!==e){let{vertexStart:t,reservedVertexCount:n}=o,r=i.attributes;for(let i in r){let a=r[i],{array:o,itemSize:s}=a;o.copyWithin(e*s,t*s,(t+n)*s),a.addUpdateRange(e*s,n*s),a.needsUpdate=!0}o.vertexStart=e}e+=o.reservedVertexCount,o.start=i.index?o.indexStart:o.vertexStart}}return this._nextIndexStart=t,this._nextVertexStart=e,this._visibilityChanged=!0,this}getBoundingBoxAt(e,t){if(e>=this._geometryCount)return null;let n=this.geometry,r=this._geometryInfo[e];if(r.boundingBox===null){let e=new Ri,t=n.index,i=n.attributes.position;for(let n=r.start,a=r.start+r.count;n<a;n++){let r=n;t&&(r=t.getX(r)),e.expandByPoint(ms.fromBufferAttribute(i,r))}r.boundingBox=e}return t.copy(r.boundingBox),t}getBoundingSphereAt(e,t){if(e>=this._geometryCount)return null;let n=this.geometry,r=this._geometryInfo[e];if(r.boundingSphere===null){let t=new ba;this.getBoundingBoxAt(e,fs),fs.getCenter(t.center);let i=n.index,a=n.attributes.position,o=0;for(let e=r.start,n=r.start+r.count;e<n;e++){let n=e;i&&(n=i.getX(n)),ms.fromBufferAttribute(a,n),o=Math.max(o,t.center.distanceToSquared(ms))}t.radius=Math.sqrt(o),r.boundingSphere=t}return t.copy(r.boundingSphere),t}setMatrixAt(e,t){this.validateInstanceId(e);let n=this._matricesTexture,r=this._matricesTexture.image.data;return t.toArray(r,e*16),n.needsUpdate=!0,this}getMatrixAt(e,t){return this.validateInstanceId(e),t.fromArray(this._matricesTexture.image.data,e*16)}setColorAt(e,t){return this.validateInstanceId(e),this._colorsTexture===null&&this._initColorsTexture(),t.toArray(this._colorsTexture.image.data,e*4),this._colorsTexture.needsUpdate=!0,this}getColorAt(e,t){return this.validateInstanceId(e),this._colorsTexture===null?t.isVector4?t.set(1,1,1,1):t.setRGB(1,1,1):t.fromArray(this._colorsTexture.image.data,e*4)}setVisibleAt(e,t){return this.validateInstanceId(e),this._instanceInfo[e].visible===t?this:(this._instanceInfo[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){return this.validateInstanceId(e),this._instanceInfo[e].visible}setGeometryIdAt(e,t){return this.validateInstanceId(e),this.validateGeometryId(t),this._instanceInfo[e].geometryIndex=t,this}getGeometryIdAt(e){return this.validateInstanceId(e),this._instanceInfo[e].geometryIndex}getGeometryRangeAt(e,t={}){this.validateGeometryId(e);let n=this._geometryInfo[e];return t.vertexStart=n.vertexStart,t.vertexCount=n.vertexCount,t.reservedVertexCount=n.reservedVertexCount,t.indexStart=n.indexStart,t.indexCount=n.indexCount,t.reservedIndexCount=n.reservedIndexCount,t.start=n.start,t.count=n.count,t}setInstanceCount(e){let t=this._availableInstanceIds,n=this._instanceInfo;for(t.sort(is);t[t.length-1]===n.length-1;)n.pop(),t.pop();if(e<n.length)throw Error(`BatchedMesh: Instance ids outside the range ${e} are being used. Cannot shrink instance count.`);let r=new Int32Array(e),i=new Int32Array(e);xs(this._multiDrawCounts,r),xs(this._multiDrawStarts,i),this._multiDrawCounts=r,this._multiDrawStarts=i,this._maxInstanceCount=e;let a=this._indirectTexture,o=this._matricesTexture,s=this._colorsTexture;a.dispose(),this._initIndirectTexture(),xs(a.image.data,this._indirectTexture.image.data),o.dispose(),this._initMatricesTexture(),xs(o.image.data,this._matricesTexture.image.data),s&&(s.dispose(),this._initColorsTexture(),xs(s.image.data,this._colorsTexture.image.data))}setGeometrySize(e,t){let n=[...this._geometryInfo].filter(e=>e.active);if(Math.max(...n.map(e=>e.vertexStart+e.reservedVertexCount))>e)throw Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(e=>e.indexStart+e.reservedIndexCount))>t)throw Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);let r=this.geometry;r.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Oa,this._initializeGeometry(r));let i=this.geometry;r.index&&xs(r.index.array,i.index.array);for(let e in r.attributes)xs(r.attributes[e].array,i.attributes[e].array)}raycast(e,t){let n=this._instanceInfo,r=this._geometryInfo,i=this.matrixWorld,a=this.geometry;vs.material=this.material,vs.geometry.index=a.index,vs.geometry.attributes=a.attributes,vs.geometry.boundingBox===null&&(vs.geometry.boundingBox=new Ri),vs.geometry.boundingSphere===null&&(vs.geometry.boundingSphere=new ba);for(let a=0,o=n.length;a<o;a++){if(!n[a].visible||!n[a].active)continue;let o=n[a].geometryIndex,s=r[o];vs.geometry.setDrawRange(s.start,s.count),this.getMatrixAt(a,vs.matrixWorld).premultiply(i),this.getBoundingBoxAt(o,vs.geometry.boundingBox),this.getBoundingSphereAt(o,vs.geometry.boundingSphere),vs.raycast(e,ys);for(let e=0,n=ys.length;e<n;e++){let n=ys[e];n.object=this,n.batchId=a,t.push(n)}ys.length=0}vs.material=null,vs.geometry.index=null,vs.geometry.attributes={},vs.geometry.setDrawRange(0,1/0)}copy(e){return super.copy(e),this.geometry=e.geometry.clone(),this.perObjectFrustumCulled=e.perObjectFrustumCulled,this.sortObjects=e.sortObjects,this.boundingBox=e.boundingBox===null?null:e.boundingBox.clone(),this.boundingSphere=e.boundingSphere===null?null:e.boundingSphere.clone(),this._geometryInfo=e._geometryInfo.map(e=>({...e,boundingBox:e.boundingBox===null?null:e.boundingBox.clone(),boundingSphere:e.boundingSphere===null?null:e.boundingSphere.clone()})),this._instanceInfo=e._instanceInfo.map(e=>({...e})),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,i){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;let a=r.getIndex(),o=a===null?1:a.array.BYTES_PER_ELEMENT,s=1;i.wireframe&&(s=2,o=r.attributes.position.count>65535?4:2);let c=this._instanceInfo,l=this._multiDrawStarts,u=this._multiDrawCounts,d=this._geometryInfo,f=this.perObjectFrustumCulled,p=this._indirectTexture,m=p.image.data,h=n.isArrayCamera?ds:us;f&&!n.isArrayCamera&&(cs.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),us.setFromProjectionMatrix(cs,n.coordinateSystem,n.reversedDepth));let g=0;if(this.sortObjects){cs.copy(this.matrixWorld).invert(),ms.setFromMatrixPosition(n.matrixWorld).applyMatrix4(cs),hs.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(cs);for(let e=0,t=c.length;e<t;e++)if(c[e].visible&&c[e].active){let t=c[e].geometryIndex;this.getMatrixAt(e,cs),this.getBoundingSphereAt(t,ps).applyMatrix4(cs);let r=!1;if(f&&(r=!h.intersectsSphere(ps,n)),!r){let n=d[t],r=gs.subVectors(ps.center,ms).dot(hs);_s.push(n.start,n.count,r,e)}}let e=_s.list,t=this.customSort;t===null?e.sort(i.transparent?os:as):t.call(this,e,n);for(let t=0,n=e.length;t<n;t++){let n=e[t];l[g]=n.start*o*s,u[g]=n.count*s,m[g]=n.index,g++}_s.reset()}else for(let e=0,t=c.length;e<t;e++)if(c[e].visible&&c[e].active){let t=c[e].geometryIndex,r=!1;if(f&&(this.getMatrixAt(e,cs),this.getBoundingSphereAt(t,ps).applyMatrix4(cs),r=!h.intersectsSphere(ps,n)),!r){let n=d[t];l[g]=n.start*o*s,u[g]=n.count*s,m[g]=e,g++}}p.needsUpdate=!0,this._multiDrawCount=g,this._visibilityChanged=!1}onBeforeShadow(e,t,n,r,i,a){this.onBeforeRender(e,null,r,i,a)}},Cs=class extends Na{constructor(e){super(),this.isLineBasicMaterial=!0,this.type=`LineBasicMaterial`,this.color=new I(16777215),this.map=null,this.linewidth=1,this.linecap=`round`,this.linejoin=`round`,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},ws=new P,Ts=new P,Es=new F,Ds=new oo,Os=new ba,ks=new P,As=new P,js=class extends fi{constructor(e=new Oa,t=new Cs){super(),this.isLine=!0,this.type=`Line`,this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[0];for(let e=1,r=t.count;e<r;e++)ws.fromBufferAttribute(t,e-1),Ts.fromBufferAttribute(t,e),n[e]=n[e-1],n[e]+=ws.distanceTo(Ts);e.setAttribute(`lineDistance`,new ga(n,1))}else j(`Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.`);return this}raycast(e,t){let n=this.geometry,r=this.matrixWorld,i=e.params.Line.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Os.copy(n.boundingSphere),Os.applyMatrix4(r),Os.radius+=i,e.ray.intersectsSphere(Os)===!1)return;Es.copy(r).invert(),Ds.copy(e.ray).applyMatrix4(Es);let o=i/((this.scale.x+this.scale.y+this.scale.z)/3),s=o*o,c=this.isLineSegments?2:1,l=n.index,u=n.attributes.position;if(l!==null){let n=Math.max(0,a.start),r=Math.min(l.count,a.start+a.count);for(let i=n,a=r-1;i<a;i+=c){let n=l.getX(i),r=l.getX(i+1),a=Ms(this,e,Ds,s,n,r,i);a&&t.push(a)}if(this.isLineLoop){let i=l.getX(r-1),a=l.getX(n),o=Ms(this,e,Ds,s,i,a,r-1);o&&t.push(o)}}else{let n=Math.max(0,a.start),r=Math.min(u.count,a.start+a.count);for(let i=n,a=r-1;i<a;i+=c){let n=Ms(this,e,Ds,s,i,i+1,i);n&&t.push(n)}if(this.isLineLoop){let i=Ms(this,e,Ds,s,r-1,n,r-1);i&&t.push(i)}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}};function Ms(e,t,n,r,i,a,o){let s=e.geometry.attributes.position;if(ws.fromBufferAttribute(s,i),Ts.fromBufferAttribute(s,a),n.distanceSqToSegment(ws,Ts,ks,As)>r)return;ks.applyMatrix4(e.matrixWorld);let c=t.ray.origin.distanceTo(ks);if(!(c<t.near||c>t.far))return{distance:c,point:As.clone().applyMatrix4(e.matrixWorld),index:o,face:null,faceIndex:null,barycoord:null,object:e}}var Ns=new P,Ps=new P,Fs=class extends js{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type=`LineSegments`}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,n=[];for(let e=0,r=t.count;e<r;e+=2)Ns.fromBufferAttribute(t,e),Ps.fromBufferAttribute(t,e+1),n[e]=e===0?0:n[e-1],n[e+1]=n[e]+Ns.distanceTo(Ps);e.setAttribute(`lineDistance`,new ga(n,1))}else j(`LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.`);return this}},Is=class extends js{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type=`LineLoop`}},Ls=class extends Na{constructor(e){super(),this.isPointsMaterial=!0,this.type=`PointsMaterial`,this.color=new I(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},Rs=new F,zs=new oo,Bs=new ba,Vs=new P,Hs=class extends fi{constructor(e=new Oa,t=new Ls){super(),this.isPoints=!0,this.type=`Points`,this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){let n=this.geometry,r=this.matrixWorld,i=e.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Bs.copy(n.boundingSphere),Bs.applyMatrix4(r),Bs.radius+=i,e.ray.intersectsSphere(Bs)===!1)return;Rs.copy(r).invert(),zs.copy(e.ray).applyMatrix4(Rs);let o=i/((this.scale.x+this.scale.y+this.scale.z)/3),s=o*o,c=n.index,l=n.attributes.position;if(c!==null){let n=Math.max(0,a.start),i=Math.min(c.count,a.start+a.count);for(let a=n,o=i;a<o;a++){let n=c.getX(a);Vs.fromBufferAttribute(l,n),Us(Vs,n,s,r,e,t,this)}}else{let n=Math.max(0,a.start),i=Math.min(l.count,a.start+a.count);for(let a=n,o=i;a<o;a++)Vs.fromBufferAttribute(l,a),Us(Vs,a,s,r,e,t,this)}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}};function Us(e,t,n,r,i,a,o){let s=zs.distanceSqToPoint(e);if(s<n){let n=new P;zs.closestPointToPoint(e,n),n.applyMatrix4(r);let c=i.ray.origin.distanceTo(n);if(c<i.near||c>i.far)return;a.push({distance:c,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:o})}}var Ws=class extends Mr{constructor(e,t,n,r,i=Te,a=Te,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;let l=this;function u(){l.needsUpdate=!0,l._requestVideoFrameCallbackId=e.requestVideoFrameCallback(u)}`requestVideoFrameCallback`in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(u))}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;!(`requestVideoFrameCallback`in e)&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}},Gs=class extends Ws{constructor(e,t,n,r,i,a,o,s){super({},e,t,n,r,i,a,o,s),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}},Ks=class extends Mr{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=be,this.minFilter=be,this.generateMipmaps=!1,this.needsUpdate=!0}},qs=class extends Mr{constructor(e,t,n,r,i,a,o,s,c,l,u,d){super(null,a,o,s,c,l,r,i,u,d),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}},Js=class extends qs{constructor(e,t,n,r,i,a){super(e,t,n,i,a),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=ve,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Ys=class extends qs{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,301),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}},Xs=class extends Mr{constructor(e=[],t=301,n,r,i,a,o,s,c,l){super(e,t,n,r,i,a,o,s,c,l),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}},Zs=class extends Mr{constructor(e,t,n,r,i,a,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isCanvasTexture=!0,this.needsUpdate=!0}},Qs=class extends Mr{constructor(e,t,n,r,i,a,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isHTMLTexture=!0,this.generateMipmaps=!1,this.needsUpdate=!0;let l=e?e.parentNode:null;l!==null&&`requestPaint`in l&&(l.onpaint=()=>{this.needsUpdate=!0},l.requestPaint())}dispose(){let e=this.image?this.image.parentNode:null;e!==null&&`onpaint`in e&&(e.onpaint=null),super.dispose()}},$s=class extends Mr{constructor(e,t,n=Ne,r,i,a,o=be,s=be,c,l=We,u=1){if(l!==1026&&l!==1027)throw Error(`DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat`);super({width:e,height:t,depth:u},r,i,a,o,s,l,n,c),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Or(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},ec=class extends $s{constructor(e,t=Ne,n=301,r,i,a=be,o=be,s,c=We){let l={width:e,height:e,depth:1},u=[l,l,l,l,l,l];super(e,e,t,n,r,i,a,o,s,c),this.image=u,this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}},tc=class extends Mr{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}},nc=class e extends Oa{constructor(e=1,t=1,n=1,r=1,i=1,a=1){super(),this.type=`BoxGeometry`,this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:i,depthSegments:a};let o=this;r=Math.floor(r),i=Math.floor(i),a=Math.floor(a);let s=[],c=[],l=[],u=[],d=0,f=0;p(`z`,`y`,`x`,-1,-1,n,t,e,a,i,0),p(`z`,`y`,`x`,1,-1,n,t,-e,a,i,1),p(`x`,`z`,`y`,1,1,e,n,t,r,a,2),p(`x`,`z`,`y`,1,-1,e,n,-t,r,a,3),p(`x`,`y`,`z`,1,-1,e,t,n,r,i,4),p(`x`,`y`,`z`,-1,-1,e,t,-n,r,i,5),this.setIndex(s),this.setAttribute(`position`,new ga(c,3)),this.setAttribute(`normal`,new ga(l,3)),this.setAttribute(`uv`,new ga(u,2));function p(e,t,n,r,i,a,p,m,h,g,_){let v=a/h,y=p/g,b=a/2,x=p/2,S=m/2,C=h+1,w=g+1,T=0,E=0,D=new P;for(let a=0;a<w;a++){let o=a*y-x;for(let s=0;s<C;s++)D[e]=(s*v-b)*r,D[t]=o*i,D[n]=S,c.push(D.x,D.y,D.z),D[e]=0,D[t]=0,D[n]=m>0?1:-1,l.push(D.x,D.y,D.z),u.push(s/h),u.push(1-a/g),T+=1}for(let e=0;e<g;e++)for(let t=0;t<h;t++){let n=d+t+C*e,r=d+t+C*(e+1),i=d+(t+1)+C*(e+1),a=d+(t+1)+C*e;s.push(n,r,a),s.push(r,i,a),E+=6}o.addGroup(f,E,_),f+=E,d+=T}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}},rc=class e extends Oa{constructor(e=1,t=1,n=4,r=8,i=1){super(),this.type=`CapsuleGeometry`,this.parameters={radius:e,height:t,capSegments:n,radialSegments:r,heightSegments:i},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),r=Math.max(3,Math.floor(r)),i=Math.max(1,Math.floor(i));let a=[],o=[],s=[],c=[],l=t/2,u=Math.PI/2*e,d=t,f=2*u+d,p=n*2+i,m=r+1,h=new P,g=new P;for(let _=0;_<=p;_++){let v=0,y=0,b=0,x=0;if(_<=n){let t=_/n,r=t*Math.PI/2;y=-l-e*Math.cos(r),b=e*Math.sin(r),x=-e*Math.cos(r),v=t*u}else if(_<=n+i){let r=(_-n)/i;y=-l+r*t,b=e,x=0,v=u+r*d}else{let t=(_-n-i)/n,r=t*Math.PI/2;y=l+e*Math.sin(r),b=e*Math.cos(r),x=e*Math.sin(r),v=u+d+t*u}let S=Math.max(0,Math.min(1,v/f)),C=0;_===0?C=.5/r:_===p&&(C=-.5/r);for(let e=0;e<=r;e++){let t=e/r,n=t*Math.PI*2,i=Math.sin(n),a=Math.cos(n);g.x=-b*a,g.y=y,g.z=b*i,o.push(g.x,g.y,g.z),h.set(-b*a,x,b*i),h.normalize(),s.push(h.x,h.y,h.z),c.push(t+C,S)}if(_>0){let e=(_-1)*m;for(let t=0;t<r;t++){let n=e+t,r=e+t+1,i=_*m+t,o=_*m+t+1;a.push(n,r,i),a.push(r,o,i)}}}this.setIndex(a),this.setAttribute(`position`,new ga(o,3)),this.setAttribute(`normal`,new ga(s,3)),this.setAttribute(`uv`,new ga(c,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.height,t.capSegments,t.radialSegments,t.heightSegments)}},ic=class e extends Oa{constructor(e=1,t=32,n=0,r=Math.PI*2){super(),this.type=`CircleGeometry`,this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:r},t=Math.max(3,t);let i=[],a=[],o=[],s=[],c=new P,l=new N;a.push(0,0,0),o.push(0,0,1),s.push(.5,.5);for(let i=0,u=3;i<=t;i++,u+=3){let d=n+i/t*r;c.x=e*Math.cos(d),c.y=e*Math.sin(d),a.push(c.x,c.y,c.z),o.push(0,0,1),l.x=(a[u]/e+1)/2,l.y=(a[u+1]/e+1)/2,s.push(l.x,l.y)}for(let e=1;e<=t;e++)i.push(e,e+1,0);this.setIndex(i),this.setAttribute(`position`,new ga(a,3)),this.setAttribute(`normal`,new ga(o,3)),this.setAttribute(`uv`,new ga(s,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.segments,t.thetaStart,t.thetaLength)}},ac=class e extends Oa{constructor(e=1,t=1,n=1,r=32,i=1,a=!1,o=0,s=Math.PI*2){super(),this.type=`CylinderGeometry`,this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:r,heightSegments:i,openEnded:a,thetaStart:o,thetaLength:s};let c=this;r=Math.floor(r),i=Math.floor(i);let l=[],u=[],d=[],f=[],p=0,m=[],h=n/2,g=0;_(),a===!1&&(e>0&&v(!0),t>0&&v(!1)),this.setIndex(l),this.setAttribute(`position`,new ga(u,3)),this.setAttribute(`normal`,new ga(d,3)),this.setAttribute(`uv`,new ga(f,2));function _(){let a=new P,_=new P,v=0,y=(t-e)/n;for(let c=0;c<=i;c++){let l=[],g=c/i,v=g*(t-e)+e;for(let e=0;e<=r;e++){let t=e/r,i=t*s+o,c=Math.sin(i),m=Math.cos(i);_.x=v*c,_.y=-g*n+h,_.z=v*m,u.push(_.x,_.y,_.z),a.set(c,y,m).normalize(),d.push(a.x,a.y,a.z),f.push(t,1-g),l.push(p++)}m.push(l)}for(let n=0;n<r;n++)for(let r=0;r<i;r++){let a=m[r][n],o=m[r+1][n],s=m[r+1][n+1],c=m[r][n+1];(e>0||r!==0)&&(l.push(a,o,c),v+=3),(t>0||r!==i-1)&&(l.push(o,s,c),v+=3)}c.addGroup(g,v,0),g+=v}function v(n){let i=p,a=new N,m=new P,_=0,v=n===!0?e:t,y=n===!0?1:-1;for(let e=1;e<=r;e++)u.push(0,h*y,0),d.push(0,y,0),f.push(.5,.5),p++;let b=p;for(let e=0;e<=r;e++){let t=e/r*s+o,n=Math.cos(t),i=Math.sin(t);m.x=v*i,m.y=h*y,m.z=v*n,u.push(m.x,m.y,m.z),d.push(0,y,0),a.x=n*.5+.5,a.y=i*.5*y+.5,f.push(a.x,a.y),p++}for(let e=0;e<r;e++){let t=i+e,r=b+e;n===!0?l.push(r,r+1,t):l.push(r+1,r,t),_+=3}c.addGroup(g,_,n===!0?1:2),g+=_}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}},oc=class e extends ac{constructor(e=1,t=1,n=32,r=1,i=!1,a=0,o=Math.PI*2){super(0,e,t,n,r,i,a,o),this.type=`ConeGeometry`,this.parameters={radius:e,height:t,radialSegments:n,heightSegments:r,openEnded:i,thetaStart:a,thetaLength:o}}static fromJSON(t){return new e(t.radius,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}},sc=class e extends Oa{constructor(e=[],t=[],n=1,r=0){super(),this.type=`PolyhedronGeometry`,this.parameters={vertices:e,indices:t,radius:n,detail:r};let i=[],a=[];o(r),c(n),l(),this.setAttribute(`position`,new ga(i,3)),this.setAttribute(`normal`,new ga(i.slice(),3)),this.setAttribute(`uv`,new ga(a,2)),r===0?this.computeVertexNormals():this.normalizeNormals();function o(e){let n=new P,r=new P,i=new P;for(let a=0;a<t.length;a+=3)f(t[a+0],n),f(t[a+1],r),f(t[a+2],i),s(n,r,i,e)}function s(e,t,n,r){let i=r+1,a=[];for(let r=0;r<=i;r++){a[r]=[];let o=e.clone().lerp(n,r/i),s=t.clone().lerp(n,r/i),c=i-r;for(let e=0;e<=c;e++)e===0&&r===i?a[r][e]=o:a[r][e]=o.clone().lerp(s,e/c)}for(let e=0;e<i;e++)for(let t=0;t<2*(i-e)-1;t++){let n=Math.floor(t/2);t%2==0?(d(a[e][n+1]),d(a[e+1][n]),d(a[e][n])):(d(a[e][n+1]),d(a[e+1][n+1]),d(a[e+1][n]))}}function c(e){let t=new P;for(let n=0;n<i.length;n+=3)t.x=i[n+0],t.y=i[n+1],t.z=i[n+2],t.normalize().multiplyScalar(e),i[n+0]=t.x,i[n+1]=t.y,i[n+2]=t.z}function l(){let e=new P;for(let t=0;t<i.length;t+=3){e.x=i[t+0],e.y=i[t+1],e.z=i[t+2];let n=h(e)/2/Math.PI+.5,r=g(e)/Math.PI+.5;a.push(n,1-r)}p(),u()}function u(){for(let e=0;e<a.length;e+=6){let t=a[e+0],n=a[e+2],r=a[e+4];Math.max(t,n,r)>.9&&Math.min(t,n,r)<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),r<.2&&(a[e+4]+=1))}}function d(e){i.push(e.x,e.y,e.z)}function f(t,n){let r=t*3;n.x=e[r+0],n.y=e[r+1],n.z=e[r+2]}function p(){let e=new P,t=new P,n=new P,r=new P,o=new N,s=new N,c=new N;for(let l=0,u=0;l<i.length;l+=9,u+=6){e.set(i[l+0],i[l+1],i[l+2]),t.set(i[l+3],i[l+4],i[l+5]),n.set(i[l+6],i[l+7],i[l+8]),o.set(a[u+0],a[u+1]),s.set(a[u+2],a[u+3]),c.set(a[u+4],a[u+5]),r.copy(e).add(t).add(n).divideScalar(3);let d=h(r);m(o,u+0,e,d),m(s,u+2,t,d),m(c,u+4,n,d)}}function m(e,t,n,r){r<0&&e.x===1&&(a[t]=e.x-1),n.x===0&&n.z===0&&(a[t]=r/2/Math.PI+.5)}function h(e){return Math.atan2(e.z,-e.x)}function g(e){return Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.vertices,t.indices,t.radius,t.detail)}},cc=class e extends sc{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,r=1/n,i=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-n,0,-r,n,0,r,-n,0,r,n,-r,-n,0,-r,n,0,r,-n,0,r,n,0,-n,0,-r,n,0,-r,-n,0,r,n,0,r];super(i,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type=`DodecahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},lc=new P,uc=new P,dc=new P,fc=new Li,pc=class extends Oa{constructor(e=null,t=1){if(super(),this.type=`EdgesGeometry`,this.parameters={geometry:e,thresholdAngle:t},e!==null){let n=10**4,r=Math.cos(Un*t),i=e.getIndex(),a=e.getAttribute(`position`),o=i?i.count:a.count,s=[0,0,0],c=[`a`,`b`,`c`],l=[,,,],u={},d=[];for(let e=0;e<o;e+=3){i?(s[0]=i.getX(e),s[1]=i.getX(e+1),s[2]=i.getX(e+2)):(s[0]=e,s[1]=e+1,s[2]=e+2);let{a:t,b:o,c:f}=fc;if(t.fromBufferAttribute(a,s[0]),o.fromBufferAttribute(a,s[1]),f.fromBufferAttribute(a,s[2]),fc.getNormal(dc),l[0]=`${Math.round(t.x*n)},${Math.round(t.y*n)},${Math.round(t.z*n)}`,l[1]=`${Math.round(o.x*n)},${Math.round(o.y*n)},${Math.round(o.z*n)}`,l[2]=`${Math.round(f.x*n)},${Math.round(f.y*n)},${Math.round(f.z*n)}`,!(l[0]===l[1]||l[1]===l[2]||l[2]===l[0]))for(let e=0;e<3;e++){let t=(e+1)%3,n=l[e],i=l[t],a=fc[c[e]],o=fc[c[t]],f=`${n}_${i}`,p=`${i}_${n}`;p in u&&u[p]?(dc.dot(u[p].normal)<=r&&(d.push(a.x,a.y,a.z),d.push(o.x,o.y,o.z)),u[p]=null):f in u||(u[f]={index0:s[e],index1:s[t],normal:dc.clone()})}}for(let e in u)if(u[e]){let{index0:t,index1:n}=u[e];lc.fromBufferAttribute(a,t),uc.fromBufferAttribute(a,n),d.push(lc.x,lc.y,lc.z),d.push(uc.x,uc.y,uc.z)}this.setAttribute(`position`,new ga(d,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}},mc=class{constructor(){this.type=`Curve`,this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}getPoint(){j(`Curve: .getPoint() not implemented.`)}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,r=this.getPoint(0),i=0;t.push(0);for(let a=1;a<=e;a++)n=this.getPoint(a/e),i+=n.distanceTo(r),t.push(i),r=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t=null){let n=this.getLengths(),r=0,i=n.length,a;a=t||e*n[i-1];let o=0,s=i-1,c;for(;o<=s;)if(r=Math.floor(o+(s-o)/2),c=n[r]-a,c<0)o=r+1;else if(c>0)s=r-1;else{s=r;break}if(r=s,n[r]===a)return r/(i-1);let l=n[r],u=n[r+1]-l,d=(a-l)/u;return(r+d)/(i-1)}getTangent(e,t){let n=1e-4,r=e-n,i=e+n;r<0&&(r=0),i>1&&(i=1);let a=this.getPoint(r),o=this.getPoint(i),s=t||(a.isVector2?new N:new P);return s.copy(o).sub(a).normalize(),s}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){let n=new P,r=[],i=[],a=[],o=new P,s=new F;for(let t=0;t<=e;t++){let n=t/e;r[t]=this.getTangentAt(n,new P)}i[0]=new P,a[0]=new P;let c=Number.MAX_VALUE,l=Math.abs(r[0].x),u=Math.abs(r[0].y),d=Math.abs(r[0].z);l<=c&&(c=l,n.set(1,0,0)),u<=c&&(c=u,n.set(0,1,0)),d<=c&&n.set(0,0,1),o.crossVectors(r[0],n).normalize(),i[0].crossVectors(r[0],o),a[0].crossVectors(r[0],i[0]);for(let t=1;t<=e;t++){if(i[t]=i[t-1].clone(),a[t]=a[t-1].clone(),o.crossVectors(r[t-1],r[t]),o.length()>2**-52){o.normalize();let e=Math.acos(Kn(r[t-1].dot(r[t]),-1,1));i[t].applyMatrix4(s.makeRotationAxis(o,e))}a[t].crossVectors(r[t],i[t])}if(t===!0){let t=Math.acos(Kn(i[0].dot(i[e]),-1,1));t/=e,r[0].dot(o.crossVectors(i[0],i[e]))>0&&(t=-t);for(let n=1;n<=e;n++)i[n].applyMatrix4(s.makeRotationAxis(r[n],t*n)),a[n].crossVectors(r[n],i[n])}return{tangents:r,normals:i,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let 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}},hc=class extends mc{constructor(e=0,t=0,n=1,r=1,i=0,a=Math.PI*2,o=!1,s=0){super(),this.isEllipseCurve=!0,this.type=`EllipseCurve`,this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=r,this.aStartAngle=i,this.aEndAngle=a,this.aClockwise=o,this.aRotation=s}getPoint(e,t=new N){let n=t,r=Math.PI*2,i=this.aEndAngle-this.aStartAngle,a=Math.abs(i)<2**-52;for(;i<0;)i+=r;for(;i>r;)i-=r;i<2**-52&&(i=a?0:r),this.aClockwise===!0&&!a&&(i===r?i=-r:i-=r);let o=this.aStartAngle+e*i,s=this.aX+this.xRadius*Math.cos(o),c=this.aY+this.yRadius*Math.sin(o);if(this.aRotation!==0){let e=Math.cos(this.aRotation),t=Math.sin(this.aRotation),n=s-this.aX,r=c-this.aY;s=n*e-r*t+this.aX,c=n*t+r*e+this.aY}return n.set(s,c)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}},gc=class extends hc{constructor(e,t,n,r,i,a){super(e,t,n,n,r,i,a),this.isArcCurve=!0,this.type=`ArcCurve`}};function _c(){let e=0,t=0,n=0,r=0;function i(i,a,o,s){e=i,t=o,n=-3*i+3*a-2*o-s,r=2*i-2*a+o+s}return{initCatmullRom:function(e,t,n,r,a){i(t,n,a*(n-e),a*(r-t))},initNonuniformCatmullRom:function(e,t,n,r,a,o,s){let c=(t-e)/a-(n-e)/(a+o)+(n-t)/o,l=(n-t)/o-(r-t)/(o+s)+(r-n)/s;c*=o,l*=o,i(t,n,c,l)},calc:function(i){let a=i*i,o=a*i;return e+t*i+n*a+r*o}}}var vc=new P,yc=new P,bc=new _c,xc=new _c,Sc=new _c,Cc=class extends mc{constructor(e=[],t=!1,n=`centripetal`,r=.5){super(),this.isCatmullRomCurve3=!0,this.type=`CatmullRomCurve3`,this.points=e,this.closed=t,this.curveType=n,this.tension=r}getPoint(e,t=new P){let n=t,r=this.points,i=r.length,a=(i-+!this.closed)*e,o=Math.floor(a),s=a-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/i)+1)*i:s===0&&o===i-1&&(o=i-2,s=1);let c,l;this.closed||o>0?c=r[(o-1)%i]:(yc.subVectors(r[0],r[1]).add(r[0]),c=yc);let u=r[o%i],d=r[(o+1)%i];if(this.closed||o+2<i?l=r[(o+2)%i]:(vc.subVectors(r[i-1],r[i-2]).add(r[i-1]),l=vc),this.curveType===`centripetal`||this.curveType===`chordal`){let e=this.curveType===`chordal`?.5:.25,t=c.distanceToSquared(u)**+e,n=u.distanceToSquared(d)**+e,r=d.distanceToSquared(l)**+e;n<1e-4&&(n=1),t<1e-4&&(t=n),r<1e-4&&(r=n),bc.initNonuniformCatmullRom(c.x,u.x,d.x,l.x,t,n,r),xc.initNonuniformCatmullRom(c.y,u.y,d.y,l.y,t,n,r),Sc.initNonuniformCatmullRom(c.z,u.z,d.z,l.z,t,n,r)}else this.curveType===`catmullrom`&&(bc.initCatmullRom(c.x,u.x,d.x,l.x,this.tension),xc.initCatmullRom(c.y,u.y,d.y,l.y,this.tension),Sc.initCatmullRom(c.z,u.z,d.z,l.z,this.tension));return n.set(bc.calc(s),xc.calc(s),Sc.calc(s)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(n.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let n=this.points[t];e.points.push(n.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(new P().fromArray(n))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function wc(e,t,n,r,i){let a=(r-t)*.5,o=(i-n)*.5,s=e*e,c=e*s;return(2*n-2*r+a+o)*c+(-3*n+3*r-2*a-o)*s+a*e+n}function Tc(e,t){let n=1-e;return n*n*t}function Ec(e,t){return 2*(1-e)*e*t}function Dc(e,t){return e*e*t}function Oc(e,t,n,r){return Tc(e,t)+Ec(e,n)+Dc(e,r)}function kc(e,t){let n=1-e;return n*n*n*t}function Ac(e,t){let n=1-e;return 3*n*n*e*t}function jc(e,t){return 3*(1-e)*e*e*t}function Mc(e,t){return e*e*e*t}function Nc(e,t,n,r,i){return kc(e,t)+Ac(e,n)+jc(e,r)+Mc(e,i)}var Pc=class extends mc{constructor(e=new N,t=new N,n=new N,r=new N){super(),this.isCubicBezierCurve=!0,this.type=`CubicBezierCurve`,this.v0=e,this.v1=t,this.v2=n,this.v3=r}getPoint(e,t=new N){let n=t,r=this.v0,i=this.v1,a=this.v2,o=this.v3;return n.set(Nc(e,r.x,i.x,a.x,o.x),Nc(e,r.y,i.y,a.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Fc=class extends mc{constructor(e=new P,t=new P,n=new P,r=new P){super(),this.isCubicBezierCurve3=!0,this.type=`CubicBezierCurve3`,this.v0=e,this.v1=t,this.v2=n,this.v3=r}getPoint(e,t=new P){let n=t,r=this.v0,i=this.v1,a=this.v2,o=this.v3;return n.set(Nc(e,r.x,i.x,a.x,o.x),Nc(e,r.y,i.y,a.y,o.y),Nc(e,r.z,i.z,a.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Ic=class extends mc{constructor(e=new N,t=new N){super(),this.isLineCurve=!0,this.type=`LineCurve`,this.v1=e,this.v2=t}getPoint(e,t=new N){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new N){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Lc=class extends mc{constructor(e=new P,t=new P){super(),this.isLineCurve3=!0,this.type=`LineCurve3`,this.v1=e,this.v2=t}getPoint(e,t=new P){let n=t;return e===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new P){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Rc=class extends mc{constructor(e=new N,t=new N,n=new N){super(),this.isQuadraticBezierCurve=!0,this.type=`QuadraticBezierCurve`,this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new N){let n=t,r=this.v0,i=this.v1,a=this.v2;return n.set(Oc(e,r.x,i.x,a.x),Oc(e,r.y,i.y,a.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},zc=class extends mc{constructor(e=new P,t=new P,n=new P){super(),this.isQuadraticBezierCurve3=!0,this.type=`QuadraticBezierCurve3`,this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new P){let n=t,r=this.v0,i=this.v1,a=this.v2;return n.set(Oc(e,r.x,i.x,a.x),Oc(e,r.y,i.y,a.y),Oc(e,r.z,i.z,a.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Bc=class extends mc{constructor(e=[]){super(),this.isSplineCurve=!0,this.type=`SplineCurve`,this.points=e}getPoint(e,t=new N){let n=t,r=this.points,i=(r.length-1)*e,a=Math.floor(i),o=i-a,s=r[a===0?a:a-1],c=r[a],l=r[a>r.length-2?r.length-1:a+1],u=r[a>r.length-3?r.length-1:a+2];return n.set(wc(o,s.x,c.x,l.x,u.x),wc(o,s.y,c.y,l.y,u.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(n.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let n=this.points[t];e.points.push(n.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(new N().fromArray(n))}return this}},Vc=Object.freeze({__proto__:null,ArcCurve:gc,CatmullRomCurve3:Cc,CubicBezierCurve:Pc,CubicBezierCurve3:Fc,EllipseCurve:hc,LineCurve:Ic,LineCurve3:Lc,QuadraticBezierCurve:Rc,QuadraticBezierCurve3:zc,SplineCurve:Bc}),Hc=class extends mc{constructor(){super(),this.type=`CurvePath`,this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);if(!e.equals(t)){let n=e.isVector2===!0?`LineCurve`:`LineCurve3`;this.curves.push(new Vc[n](t,e))}return this}getPoint(e,t){let n=e*this.getLength(),r=this.getCurveLengths(),i=0;for(;i<r.length;){if(r[i]>=n){let e=r[i]-n,a=this.curves[i],o=a.getLength(),s=o===0?0:1-e/o;return a.getPointAt(s,t)}i++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,r=this.curves.length;n<r;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t=[],n;for(let r=0,i=this.curves;r<i.length;r++){let a=i[r],o=a.isEllipseCurve?e*2:a.isLineCurve||a.isLineCurve3?1:a.isSplineCurve?e*a.points.length:e,s=a.getPoints(o);for(let e=0;e<s.length;e++){let r=s[e];n&&n.equals(r)||(t.push(r),n=r)}}return this.autoClose&&t.length>1&&!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;t<n;t++){let n=e.curves[t];this.curves.push(n.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,n=this.curves.length;t<n;t++){let n=this.curves[t];e.curves.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let n=e.curves[t];this.curves.push(new Vc[n.type]().fromJSON(n))}return this}},Uc=class extends Hc{constructor(e){super(),this.type=`Path`,this.currentPoint=new N,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let n=new Ic(this.currentPoint.clone(),new N(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,n,r){let i=new Rc(this.currentPoint.clone(),new N(e,t),new N(n,r));return this.curves.push(i),this.currentPoint.set(n,r),this}bezierCurveTo(e,t,n,r,i,a){let o=new Pc(this.currentPoint.clone(),new N(e,t),new N(n,r),new N(i,a));return this.curves.push(o),this.currentPoint.set(i,a),this}splineThru(e){let t=new Bc([this.currentPoint.clone()].concat(e));return this.curves.push(t),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,n,r,i,a){let o=this.currentPoint.x,s=this.currentPoint.y;return this.absarc(e+o,t+s,n,r,i,a),this}absarc(e,t,n,r,i,a){return this.absellipse(e,t,n,n,r,i,a),this}ellipse(e,t,n,r,i,a,o,s){let c=this.currentPoint.x,l=this.currentPoint.y;return this.absellipse(e+c,t+l,n,r,i,a,o,s),this}absellipse(e,t,n,r,i,a,o,s){let c=new hc(e,t,n,r,i,a,o,s);if(this.curves.length>0){let e=c.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(c);let l=c.getPoint(1);return this.currentPoint.copy(l),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},Wc=class extends Uc{constructor(e){super(e),this.uuid=Gn(),this.type=`Shape`,this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,r=this.holes.length;n<r;n++)t[n]=this.holes[n].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let n=e.holes[t];this.holes.push(n.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,n=this.holes.length;t<n;t++){let n=this.holes[t];e.holes.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let n=e.holes[t];this.holes.push(new Uc().fromJSON(n))}return this}};function Gc(e,t,n=2){let r=t&&t.length,i=r?t[0]*n:e.length,a=Kc(e,0,i,n,!0),o=[];if(!a||a.next===a.prev)return o;let s,c,l;if(r&&(a=$c(e,t,a,n)),e.length>80*n){s=e[0],c=e[1];let t=s,r=c;for(let a=n;a<i;a+=n){let n=e[a],i=e[a+1];n<s&&(s=n),i<c&&(c=i),n>t&&(t=n),i>r&&(r=i)}l=Math.max(t-s,r-c),l=l===0?0:32767/l}return Jc(a,o,n,s,c,l,0),o}function Kc(e,t,n,r,i){let a;if(i===Cl(e,t,n,r)>0)for(let i=t;i<n;i+=r)a=bl(i/r|0,e[i],e[i+1],a);else for(let i=n-r;i>=t;i-=r)a=bl(i/r|0,e[i],e[i+1],a);return a&&fl(a,a.next)&&(xl(a),a=a.next),a}function qc(e,t){if(!e)return e;t||=e;let n=e,r;do if(r=!1,!n.steiner&&(fl(n,n.next)||dl(n.prev,n,n.next)===0)){if(xl(n),n=t=n.prev,n===n.next)break;r=!0}else n=n.next;while(r||n!==t);return t}function Jc(e,t,n,r,i,a,o){if(!e)return;!o&&a&&il(e,r,i,a);let s=e;for(;e.prev!==e.next;){let c=e.prev,l=e.next;if(a?Xc(e,r,i,a):Yc(e)){t.push(c.i,e.i,l.i),xl(e),e=l.next,s=l.next;continue}if(e=l,e===s){o?o===1?(e=Zc(qc(e),t),Jc(e,t,n,r,i,a,2)):o===2&&Qc(e,t,n,r,i,a):Jc(qc(e),t,n,r,i,a,1);break}}}function Yc(e){let t=e.prev,n=e,r=e.next;if(dl(t,n,r)>=0)return!1;let i=t.x,a=n.x,o=r.x,s=t.y,c=n.y,l=r.y,u=Math.min(i,a,o),d=Math.min(s,c,l),f=Math.max(i,a,o),p=Math.max(s,c,l),m=r.next;for(;m!==t;){if(m.x>=u&&m.x<=f&&m.y>=d&&m.y<=p&&ll(i,s,a,c,o,l,m.x,m.y)&&dl(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function Xc(e,t,n,r){let i=e.prev,a=e,o=e.next;if(dl(i,a,o)>=0)return!1;let s=i.x,c=a.x,l=o.x,u=i.y,d=a.y,f=o.y,p=Math.min(s,c,l),m=Math.min(u,d,f),h=Math.max(s,c,l),g=Math.max(u,d,f),_=ol(p,m,t,n,r),v=ol(h,g,t,n,r),y=e.prevZ,b=e.nextZ;for(;y&&y.z>=_&&b&&b.z<=v;){if(y.x>=p&&y.x<=h&&y.y>=m&&y.y<=g&&y!==i&&y!==o&&ll(s,u,c,d,l,f,y.x,y.y)&&dl(y.prev,y,y.next)>=0||(y=y.prevZ,b.x>=p&&b.x<=h&&b.y>=m&&b.y<=g&&b!==i&&b!==o&&ll(s,u,c,d,l,f,b.x,b.y)&&dl(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;y&&y.z>=_;){if(y.x>=p&&y.x<=h&&y.y>=m&&y.y<=g&&y!==i&&y!==o&&ll(s,u,c,d,l,f,y.x,y.y)&&dl(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;b&&b.z<=v;){if(b.x>=p&&b.x<=h&&b.y>=m&&b.y<=g&&b!==i&&b!==o&&ll(s,u,c,d,l,f,b.x,b.y)&&dl(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function Zc(e,t){let n=e;do{let r=n.prev,i=n.next.next;!fl(r,i)&&pl(r,n,n.next,i)&&_l(r,i)&&_l(i,r)&&(t.push(r.i,n.i,i.i),xl(n),xl(n.next),n=e=i),n=n.next}while(n!==e);return qc(n)}function Qc(e,t,n,r,i,a){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&ul(o,e)){let s=yl(o,e);o=qc(o,o.next),s=qc(s,s.next),Jc(o,t,n,r,i,a,0),Jc(s,t,n,r,i,a,0);return}e=e.next}o=o.next}while(o!==e)}function $c(e,t,n,r){let i=[];for(let n=0,a=t.length;n<a;n++){let o=Kc(e,t[n]*r,n<a-1?t[n+1]*r:e.length,r,!1);o===o.next&&(o.steiner=!0),i.push(sl(o))}i.sort(el);for(let e=0;e<i.length;e++)n=tl(i[e],n);return n}function el(e,t){let n=e.x-t.x;return n===0&&(n=e.y-t.y,n===0&&(n=(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x))),n}function tl(e,t){let n=nl(e,t);if(!n)return t;let r=yl(n,e);return qc(r,r.next),qc(n,n.next)}function nl(e,t){let n=t,r=e.x,i=e.y,a=-1/0,o;if(fl(e,n))return n;do{if(fl(e,n.next))return n.next;if(i<=n.y&&i>=n.next.y&&n.next.y!==n.y){let e=n.x+(i-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(e<=r&&e>a&&(a=e,o=n.x<n.next.x?n:n.next,e===r))return o}n=n.next}while(n!==t);if(!o)return null;let s=o,c=o.x,l=o.y,u=1/0;n=o;do{if(r>=n.x&&n.x>=c&&r!==n.x&&cl(i<l?r:a,i,c,l,i<l?a:r,i,n.x,n.y)){let t=Math.abs(i-n.y)/(r-n.x);_l(n,e)&&(t<u||t===u&&(n.x>o.x||n.x===o.x&&rl(o,n)))&&(o=n,u=t)}n=n.next}while(n!==s);return o}function rl(e,t){return dl(e.prev,e,t.prev)<0&&dl(t.next,e,e.next)<0}function il(e,t,n,r){let i=e;do i.z===0&&(i.z=ol(i.x,i.y,t,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,al(i)}function al(e){let t,n=1;do{let r=e,i;e=null;let a=null;for(t=0;r;){t++;let o=r,s=0;for(let e=0;e<n&&(s++,o=o.nextZ,o);e++);let c=n;for(;s>0||c>0&&o;)s!==0&&(c===0||!o||r.z<=o.z)?(i=r,r=r.nextZ,s--):(i=o,o=o.nextZ,c--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=o}a.nextZ=null,n*=2}while(t>1);return e}function ol(e,t,n,r,i){return e=(e-n)*i|0,t=(t-r)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function sl(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function cl(e,t,n,r,i,a,o,s){return(i-o)*(t-s)>=(e-o)*(a-s)&&(e-o)*(r-s)>=(n-o)*(t-s)&&(n-o)*(a-s)>=(i-o)*(r-s)}function ll(e,t,n,r,i,a,o,s){return!(e===o&&t===s)&&cl(e,t,n,r,i,a,o,s)}function ul(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!gl(e,t)&&(_l(e,t)&&_l(t,e)&&vl(e,t)&&(dl(e.prev,e,t.prev)||dl(e,t.prev,t))||fl(e,t)&&dl(e.prev,e,e.next)>0&&dl(t.prev,t,t.next)>0)}function dl(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function fl(e,t){return e.x===t.x&&e.y===t.y}function pl(e,t,n,r){let i=hl(dl(e,t,n)),a=hl(dl(e,t,r)),o=hl(dl(n,r,e)),s=hl(dl(n,r,t));return!!(i!==a&&o!==s||i===0&&ml(e,n,t)||a===0&&ml(e,r,t)||o===0&&ml(n,e,r)||s===0&&ml(n,t,r))}function ml(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function hl(e){return e>0?1:e<0?-1:0}function gl(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&pl(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function _l(e,t){return dl(e.prev,e,e.next)<0?dl(e,t,e.next)>=0&&dl(e,e.prev,t)>=0:dl(e,t,e.prev)<0||dl(e,e.next,t)<0}function vl(e,t){let n=e,r=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do n.y>a!=n.next.y>a&&n.next.y!==n.y&&i<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next;while(n!==e);return r}function yl(e,t){let n=Sl(e.i,e.x,e.y),r=Sl(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=i,i.prev=n,r.next=n,n.prev=r,a.next=r,r.prev=a,r}function bl(e,t,n,r){let i=Sl(e,t,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function xl(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Sl(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Cl(e,t,n,r){let i=0;for(let a=t,o=n-r;a<n;a+=r)i+=(e[o]-e[a])*(e[a+1]+e[o+1]),o=a;return i}var wl=class{static triangulate(e,t,n=2){return Gc(e,t,n)}},Tl=class e{static area(e){let t=e.length,n=0;for(let r=t-1,i=0;i<t;r=i++)n+=e[r].x*e[i].y-e[i].x*e[r].y;return n*.5}static isClockWise(t){return e.area(t)<0}static triangulateShape(e,t){let n=[],r=[],i=[];El(e),Dl(n,e);let a=e.length;t.forEach(El);for(let e=0;e<t.length;e++)r.push(a),a+=t[e].length,Dl(n,t[e]);let o=wl.triangulate(n,r);for(let e=0;e<o.length;e+=3)i.push(o.slice(e,e+3));return i}};function El(e){let t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function Dl(e,t){for(let n=0;n<t.length;n++)e.push(t[n].x),e.push(t[n].y)}var Ol=class e extends Oa{constructor(e=new Wc([new N(.5,.5),new N(-.5,.5),new N(-.5,-.5),new N(.5,-.5)]),t={}){super(),this.type=`ExtrudeGeometry`,this.parameters={shapes:e,options:t},e=Array.isArray(e)?e:[e];let n=this,r=[],i=[];for(let t=0,n=e.length;t<n;t++){let n=e[t];a(n)}this.setAttribute(`position`,new ga(r,3)),this.setAttribute(`uv`,new ga(i,2)),this.computeVertexNormals();function a(e){let a=[],o=t.curveSegments===void 0?12:t.curveSegments,s=t.steps===void 0?1:t.steps,c=t.depth===void 0?1:t.depth,l=t.bevelEnabled===void 0?!0:t.bevelEnabled,u=t.bevelThickness===void 0?.2:t.bevelThickness,d=t.bevelSize===void 0?u-.1:t.bevelSize,f=t.bevelOffset===void 0?0:t.bevelOffset,p=t.bevelSegments===void 0?3:t.bevelSegments,m=t.extrudePath,h=t.UVGenerator===void 0?kl:t.UVGenerator,g,_=!1,v,y,b,x;if(m){g=m.getSpacedPoints(s),_=!0,l=!1;let e=m.isCatmullRomCurve3?m.closed:!1;v=m.computeFrenetFrames(s,e),y=new P,b=new P,x=new P}l||(p=0,u=0,d=0,f=0);let S=e.extractPoints(o),C=S.shape,w=S.holes;if(!Tl.isClockWise(C)){C=C.reverse();for(let e=0,t=w.length;e<t;e++){let t=w[e];Tl.isClockWise(t)&&(w[e]=t.reverse())}}function T(e){let t=e[0];for(let n=1;n<=e.length;n++){let r=n%e.length,i=e[r],a=i.x-t.x,o=i.y-t.y,s=a*a+o*o,c=Math.max(Math.abs(i.x),Math.abs(i.y),Math.abs(t.x),Math.abs(t.y));if(s<=10000000000000001e-36*c*c){e.splice(r,1),n--;continue}t=i}}T(C),w.forEach(T);let E=w.length,D=C;for(let e=0;e<E;e++){let t=w[e];C=C.concat(t)}function O(e,t,n){return t||M(`ExtrudeGeometry: vec does not exist`),e.clone().addScaledVector(t,n)}let ee=C.length;function te(e,t,n){let r,i,a,o=e.x-t.x,s=e.y-t.y,c=n.x-e.x,l=n.y-e.y,u=o*o+s*s,d=o*l-s*c;if(Math.abs(d)>2**-52){let d=Math.sqrt(u),f=Math.sqrt(c*c+l*l),p=t.x-s/d,m=t.y+o/d,h=n.x-l/f,g=n.y+c/f,_=((h-p)*l-(g-m)*c)/(o*l-s*c);r=p+o*_-e.x,i=m+s*_-e.y;let v=r*r+i*i;if(v<=2)return new N(r,i);a=Math.sqrt(v/2)}else{let e=!1;o>2**-52?c>2**-52&&(e=!0):o<-(2**-52)?c<-(2**-52)&&(e=!0):Math.sign(s)===Math.sign(l)&&(e=!0),e?(r=-s,i=o,a=Math.sqrt(u)):(r=o,i=s,a=Math.sqrt(u/2))}return new N(r/a,i/a)}let ne=[];for(let e=0,t=D.length,n=t-1,r=e+1;e<t;e++,n++,r++)n===t&&(n=0),r===t&&(r=0),ne[e]=te(D[e],D[n],D[r]);let re=[],ie,ae=ne.concat();for(let e=0,t=E;e<t;e++){let t=w[e];ie=[];for(let e=0,n=t.length,r=n-1,i=e+1;e<n;e++,r++,i++)r===n&&(r=0),i===n&&(i=0),ie[e]=te(t[e],t[r],t[i]);re.push(ie),ae=ae.concat(ie)}let oe;if(p===0)oe=Tl.triangulateShape(D,w);else{let e=[],t=[];for(let n=0;n<p;n++){let r=n/p,i=u*Math.cos(r*Math.PI/2),a=d*Math.sin(r*Math.PI/2)+f;for(let t=0,n=D.length;t<n;t++){let n=O(D[t],ne[t],a);fe(n.x,n.y,-i),r===0&&e.push(n)}for(let e=0,n=E;e<n;e++){let n=w[e];ie=re[e];let o=[];for(let e=0,t=n.length;e<t;e++){let t=O(n[e],ie[e],a);fe(t.x,t.y,-i),r===0&&o.push(t)}r===0&&t.push(o)}}oe=Tl.triangulateShape(e,t)}let se=oe.length,ce=d+f;for(let e=0;e<ee;e++){let t=l?O(C[e],ae[e],ce):C[e];_?(b.copy(v.normals[0]).multiplyScalar(t.x),y.copy(v.binormals[0]).multiplyScalar(t.y),x.copy(g[0]).add(b).add(y),fe(x.x,x.y,x.z)):fe(t.x,t.y,0)}for(let e=1;e<=s;e++)for(let t=0;t<ee;t++){let n=l?O(C[t],ae[t],ce):C[t];_?(b.copy(v.normals[e]).multiplyScalar(n.x),y.copy(v.binormals[e]).multiplyScalar(n.y),x.copy(g[e]).add(b).add(y),fe(x.x,x.y,x.z)):fe(n.x,n.y,c/s*e)}for(let e=p-1;e>=0;e--){let t=e/p,n=u*Math.cos(t*Math.PI/2),r=d*Math.sin(t*Math.PI/2)+f;for(let e=0,t=D.length;e<t;e++){let t=O(D[e],ne[e],r);fe(t.x,t.y,c+n)}for(let e=0,t=w.length;e<t;e++){let t=w[e];ie=re[e];for(let e=0,i=t.length;e<i;e++){let i=O(t[e],ie[e],r);_?fe(i.x,i.y+g[s-1].y,g[s-1].x+n):fe(i.x,i.y,c+n)}}}le(),ue();function le(){let e=r.length/3;if(l){let e=0,t=ee*e;for(let e=0;e<se;e++){let n=oe[e];pe(n[2]+t,n[1]+t,n[0]+t)}e=s+p*2,t=ee*e;for(let e=0;e<se;e++){let n=oe[e];pe(n[0]+t,n[1]+t,n[2]+t)}}else{for(let e=0;e<se;e++){let t=oe[e];pe(t[2],t[1],t[0])}for(let e=0;e<se;e++){let t=oe[e];pe(t[0]+ee*s,t[1]+ee*s,t[2]+ee*s)}}n.addGroup(e,r.length/3-e,0)}function ue(){let e=r.length/3,t=0;de(D,t),t+=D.length;for(let e=0,n=w.length;e<n;e++){let n=w[e];de(n,t),t+=n.length}n.addGroup(e,r.length/3-e,1)}function de(e,t){let n=e.length;for(;--n>=0;){let r=n,i=n-1;i<0&&(i=e.length-1);for(let e=0,n=s+p*2;e<n;e++){let n=ee*e,a=ee*(e+1);me(t+r+n,t+i+n,t+i+a,t+r+a)}}}function fe(e,t,n){a.push(e),a.push(t),a.push(n)}function pe(e,t,i){he(e),he(t),he(i);let a=r.length/3,o=h.generateTopUV(n,r,a-3,a-2,a-1);ge(o[0]),ge(o[1]),ge(o[2])}function me(e,t,i,a){he(e),he(t),he(a),he(t),he(i),he(a);let o=r.length/3,s=h.generateSideWallUV(n,r,o-6,o-3,o-2,o-1);ge(s[0]),ge(s[1]),ge(s[3]),ge(s[1]),ge(s[2]),ge(s[3])}function he(e){r.push(a[e*3+0]),r.push(a[e*3+1]),r.push(a[e*3+2])}function ge(e){i.push(e.x),i.push(e.y)}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON(),t=this.parameters.shapes,n=this.parameters.options;return Al(t,n,e)}static fromJSON(t,n){let r=[];for(let e=0,i=t.shapes.length;e<i;e++){let i=n[t.shapes[e]];r.push(i)}let i=t.options.extrudePath;return i!==void 0&&(t.options.extrudePath=new Vc[i.type]().fromJSON(i)),new e(r,t.options)}},kl={generateTopUV:function(e,t,n,r,i){let a=t[n*3],o=t[n*3+1],s=t[r*3],c=t[r*3+1],l=t[i*3],u=t[i*3+1];return[new N(a,o),new N(s,c),new N(l,u)]},generateSideWallUV:function(e,t,n,r,i,a){let o=t[n*3],s=t[n*3+1],c=t[n*3+2],l=t[r*3],u=t[r*3+1],d=t[r*3+2],f=t[i*3],p=t[i*3+1],m=t[i*3+2],h=t[a*3],g=t[a*3+1],_=t[a*3+2];return Math.abs(s-u)<Math.abs(o-l)?[new N(o,1-c),new N(l,1-d),new N(f,1-m),new N(h,1-_)]:[new N(s,1-c),new N(u,1-d),new N(p,1-m),new N(g,1-_)]}};function Al(e,t,n){if(n.shapes=[],Array.isArray(e))for(let t=0,r=e.length;t<r;t++){let r=e[t];n.shapes.push(r.uuid)}else n.shapes.push(e.uuid);return n.options=Object.assign({},t),t.extrudePath!==void 0&&(n.options.extrudePath=t.extrudePath.toJSON()),n}var jl=class e extends sc{constructor(e=1,t=0){let n=(1+Math.sqrt(5))/2,r=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1];super(r,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type=`IcosahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},Ml=class e extends Oa{constructor(e=[new N(0,-.5),new N(.5,0),new N(0,.5)],t=12,n=0,r=Math.PI*2){super(),this.type=`LatheGeometry`,this.parameters={points:e,segments:t,phiStart:n,phiLength:r},t=Math.floor(t),r=Kn(r,0,Math.PI*2);let i=[],a=[],o=[],s=[],c=[],l=1/t,u=new P,d=new N,f=new P,p=new P,m=new P,h=0,g=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:h=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,f.x=g*1,f.y=-h,f.z=g*0,m.copy(f),f.normalize(),s.push(f.x,f.y,f.z);break;case e.length-1:s.push(m.x,m.y,m.z);break;default:h=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,f.x=g*1,f.y=-h,f.z=g*0,p.copy(f),f.x+=m.x,f.y+=m.y,f.z+=m.z,f.normalize(),s.push(f.x,f.y,f.z),m.copy(p)}for(let i=0;i<=t;i++){let f=n+i*l*r,p=Math.sin(f),m=Math.cos(f);for(let n=0;n<=e.length-1;n++){u.x=e[n].x*p,u.y=e[n].y,u.z=e[n].x*m,a.push(u.x,u.y,u.z),d.x=i/t,d.y=n/(e.length-1),o.push(d.x,d.y);let r=s[3*n+0]*p,l=s[3*n+1],f=s[3*n+0]*m;c.push(r,l,f)}}for(let n=0;n<t;n++)for(let t=0;t<e.length-1;t++){let r=t+n*e.length,a=r,o=r+e.length,s=r+e.length+1,c=r+1;i.push(a,o,c),i.push(s,c,o)}this.setIndex(i),this.setAttribute(`position`,new ga(a,3)),this.setAttribute(`uv`,new ga(o,2)),this.setAttribute(`normal`,new ga(c,3))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.points,t.segments,t.phiStart,t.phiLength)}},Nl=class e extends sc{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type=`OctahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},Pl=class e extends Oa{constructor(e=1,t=1,n=1,r=1){super(),this.type=`PlaneGeometry`,this.parameters={width:e,height:t,widthSegments:n,heightSegments:r};let i=e/2,a=t/2,o=Math.floor(n),s=Math.floor(r),c=o+1,l=s+1,u=e/o,d=t/s,f=[],p=[],m=[],h=[];for(let e=0;e<l;e++){let t=e*d-a;for(let n=0;n<c;n++){let r=n*u-i;p.push(r,-t,0),m.push(0,0,1),h.push(n/o),h.push(1-e/s)}}for(let e=0;e<s;e++)for(let t=0;t<o;t++){let n=t+c*e,r=t+c*(e+1),i=t+1+c*(e+1),a=t+1+c*e;f.push(n,r,a),f.push(r,i,a)}this.setIndex(f),this.setAttribute(`position`,new ga(p,3)),this.setAttribute(`normal`,new ga(m,3)),this.setAttribute(`uv`,new ga(h,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.width,t.height,t.widthSegments,t.heightSegments)}},Fl=class e extends Oa{constructor(e=.5,t=1,n=32,r=1,i=0,a=Math.PI*2){super(),this.type=`RingGeometry`,this.parameters={innerRadius:e,outerRadius:t,thetaSegments:n,phiSegments:r,thetaStart:i,thetaLength:a},n=Math.max(3,n),r=Math.max(1,r);let o=[],s=[],c=[],l=[],u=e,d=(t-e)/r,f=new P,p=new N;for(let e=0;e<=r;e++){for(let e=0;e<=n;e++){let r=i+e/n*a;f.x=u*Math.cos(r),f.y=u*Math.sin(r),s.push(f.x,f.y,f.z),c.push(0,0,1),p.x=(f.x/t+1)/2,p.y=(f.y/t+1)/2,l.push(p.x,p.y)}u+=d}for(let e=0;e<r;e++){let t=e*(n+1);for(let e=0;e<n;e++){let r=e+t,i=r,a=r+n+1,s=r+n+2,c=r+1;o.push(i,a,c),o.push(a,s,c)}}this.setIndex(o),this.setAttribute(`position`,new ga(s,3)),this.setAttribute(`normal`,new ga(c,3)),this.setAttribute(`uv`,new ga(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.innerRadius,t.outerRadius,t.thetaSegments,t.phiSegments,t.thetaStart,t.thetaLength)}},Il=class e extends Oa{constructor(e=new Wc([new N(0,.5),new N(-.5,-.5),new N(.5,-.5)]),t=12){super(),this.type=`ShapeGeometry`,this.parameters={shapes:e,curveSegments:t};let n=[],r=[],i=[],a=[],o=0,s=0;if(Array.isArray(e)===!1)c(e);else for(let t=0;t<e.length;t++)c(e[t]),this.addGroup(o,s,t),o+=s,s=0;this.setIndex(n),this.setAttribute(`position`,new ga(r,3)),this.setAttribute(`normal`,new ga(i,3)),this.setAttribute(`uv`,new ga(a,2));function c(e){let o=r.length/3,c=e.extractPoints(t),l=c.shape,u=c.holes;Tl.isClockWise(l)===!1&&(l=l.reverse());for(let e=0,t=u.length;e<t;e++){let t=u[e];Tl.isClockWise(t)===!0&&(u[e]=t.reverse())}let d=Tl.triangulateShape(l,u);for(let e=0,t=u.length;e<t;e++){let t=u[e];l=l.concat(t)}for(let e=0,t=l.length;e<t;e++){let t=l[e];r.push(t.x,t.y,0),i.push(0,0,1),a.push(t.x,t.y)}for(let e=0,t=d.length;e<t;e++){let t=d[e],r=t[0]+o,i=t[1]+o,a=t[2]+o;n.push(r,i,a),s+=3}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON(),t=this.parameters.shapes;return Ll(t,e)}static fromJSON(t,n){let r=[];for(let e=0,i=t.shapes.length;e<i;e++){let i=n[t.shapes[e]];r.push(i)}return new e(r,t.curveSegments)}};function Ll(e,t){if(t.shapes=[],Array.isArray(e))for(let n=0,r=e.length;n<r;n++){let r=e[n];t.shapes.push(r.uuid)}else t.shapes.push(e.uuid);return t}var Rl=class e extends Oa{constructor(e=1,t=32,n=16,r=0,i=Math.PI*2,a=0,o=Math.PI){super(),this.type=`SphereGeometry`,this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:r,phiLength:i,thetaStart:a,thetaLength:o},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));let s=Math.min(a+o,Math.PI),c=0,l=[],u=new P,d=new P,f=[],p=[],m=[],h=[];for(let f=0;f<=n;f++){let g=[],_=f/n,v=0;f===0&&a===0?v=.5/t:f===n&&s===Math.PI&&(v=-.5/t);for(let n=0;n<=t;n++){let s=n/t;u.x=-e*Math.cos(r+s*i)*Math.sin(a+_*o),u.y=e*Math.cos(a+_*o),u.z=e*Math.sin(r+s*i)*Math.sin(a+_*o),p.push(u.x,u.y,u.z),d.copy(u).normalize(),m.push(d.x,d.y,d.z),h.push(s+v,1-_),g.push(c++)}l.push(g)}for(let e=0;e<n;e++)for(let r=0;r<t;r++){let t=l[e][r+1],i=l[e][r],o=l[e+1][r],c=l[e+1][r+1];(e!==0||a>0)&&f.push(t,i,c),(e!==n-1||s<Math.PI)&&f.push(i,o,c)}this.setIndex(f),this.setAttribute(`position`,new ga(p,3)),this.setAttribute(`normal`,new ga(m,3)),this.setAttribute(`uv`,new ga(h,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.widthSegments,t.heightSegments,t.phiStart,t.phiLength,t.thetaStart,t.thetaLength)}},zl=class e extends sc{constructor(e=1,t=0){super([1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type=`TetrahedronGeometry`,this.parameters={radius:e,detail:t}}static fromJSON(t){return new e(t.radius,t.detail)}},Bl=class e extends Oa{constructor(e=1,t=.4,n=12,r=48,i=Math.PI*2,a=0,o=Math.PI*2){super(),this.type=`TorusGeometry`,this.parameters={radius:e,tube:t,radialSegments:n,tubularSegments:r,arc:i,thetaStart:a,thetaLength:o},n=Math.floor(n),r=Math.floor(r);let s=[],c=[],l=[],u=[],d=new P,f=new P,p=new P;for(let s=0;s<=n;s++){let m=a+s/n*o;for(let a=0;a<=r;a++){let o=a/r*i;f.x=(e+t*Math.cos(m))*Math.cos(o),f.y=(e+t*Math.cos(m))*Math.sin(o),f.z=t*Math.sin(m),c.push(f.x,f.y,f.z),d.x=e*Math.cos(o),d.y=e*Math.sin(o),p.subVectors(f,d).normalize(),l.push(p.x,p.y,p.z),u.push(a/r),u.push(s/n)}}for(let e=1;e<=n;e++)for(let t=1;t<=r;t++){let n=(r+1)*e+t-1,i=(r+1)*(e-1)+t-1,a=(r+1)*(e-1)+t,o=(r+1)*e+t;s.push(n,i,o),s.push(i,a,o)}this.setIndex(s),this.setAttribute(`position`,new ga(c,3)),this.setAttribute(`normal`,new ga(l,3)),this.setAttribute(`uv`,new ga(u,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.tube,t.radialSegments,t.tubularSegments,t.arc)}},Vl=class e extends Oa{constructor(e=1,t=.4,n=64,r=8,i=2,a=3){super(),this.type=`TorusKnotGeometry`,this.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:r,p:i,q:a},n=Math.floor(n),r=Math.floor(r);let o=[],s=[],c=[],l=[],u=new P,d=new P,f=new P,p=new P,m=new P,h=new P,g=new P;for(let o=0;o<=n;++o){let v=o/n*i*Math.PI*2;_(v,i,a,e,f),_(v+.01,i,a,e,p),h.subVectors(p,f),g.addVectors(p,f),m.crossVectors(h,g),g.crossVectors(m,h),m.normalize(),g.normalize();for(let e=0;e<=r;++e){let i=e/r*Math.PI*2,a=-t*Math.cos(i),p=t*Math.sin(i);u.x=f.x+(a*g.x+p*m.x),u.y=f.y+(a*g.y+p*m.y),u.z=f.z+(a*g.z+p*m.z),s.push(u.x,u.y,u.z),d.subVectors(u,f).normalize(),c.push(d.x,d.y,d.z),l.push(o/n),l.push(e/r)}}for(let e=1;e<=n;e++)for(let t=1;t<=r;t++){let n=(r+1)*(e-1)+(t-1),i=(r+1)*e+(t-1),a=(r+1)*e+t,s=(r+1)*(e-1)+t;o.push(n,i,s),o.push(i,a,s)}this.setIndex(o),this.setAttribute(`position`,new ga(s,3)),this.setAttribute(`normal`,new ga(c,3)),this.setAttribute(`uv`,new ga(l,2));function _(e,t,n,r,i){let a=Math.cos(e),o=Math.sin(e),s=n/t*e,c=Math.cos(s);i.x=r*(2+c)*.5*a,i.y=r*(2+c)*o*.5,i.z=r*Math.sin(s)*.5}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(t){return new e(t.radius,t.tube,t.tubularSegments,t.radialSegments,t.p,t.q)}},Hl=class e extends Oa{constructor(e=new zc(new P(-1,-1,0),new P(-1,1,0),new P(1,1,0)),t=64,n=1,r=8,i=!1){super(),this.type=`TubeGeometry`,this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:r,closed:i};let a=e.computeFrenetFrames(t,i);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;let o=new P,s=new P,c=new N,l=new P,u=[],d=[],f=[],p=[];m(),this.setIndex(p),this.setAttribute(`position`,new ga(u,3)),this.setAttribute(`normal`,new ga(d,3)),this.setAttribute(`uv`,new ga(f,2));function m(){for(let e=0;e<t;e++)h(e);h(i===!1?t:0),_(),g()}function h(i){l=e.getPointAt(i/t,l);let c=a.normals[i],f=a.binormals[i];for(let e=0;e<=r;e++){let t=e/r*Math.PI*2,i=Math.sin(t),a=-Math.cos(t);s.x=a*c.x+i*f.x,s.y=a*c.y+i*f.y,s.z=a*c.z+i*f.z,s.normalize(),d.push(s.x,s.y,s.z),o.x=l.x+n*s.x,o.y=l.y+n*s.y,o.z=l.z+n*s.z,u.push(o.x,o.y,o.z)}}function g(){for(let e=1;e<=t;e++)for(let t=1;t<=r;t++){let n=(r+1)*(e-1)+(t-1),i=(r+1)*e+(t-1),a=(r+1)*e+t,o=(r+1)*(e-1)+t;p.push(n,i,o),p.push(i,a,o)}}function _(){for(let e=0;e<=t;e++)for(let n=0;n<=r;n++)c.x=e/t,c.y=n/r,f.push(c.x,c.y)}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(t){return new e(new Vc[t.path.type]().fromJSON(t.path),t.tubularSegments,t.radius,t.radialSegments,t.closed)}},Ul=class extends Oa{constructor(e=null){if(super(),this.type=`WireframeGeometry`,this.parameters={geometry:e},e!==null){let t=[],n=new Set,r=new P,i=new P;if(e.index!==null){let a=e.attributes.position,o=e.index,s=e.groups;s.length===0&&(s=[{start:0,count:o.count,materialIndex:0}]);for(let e=0,c=s.length;e<c;++e){let c=s[e],l=c.start,u=c.count;for(let e=l,s=l+u;e<s;e+=3)for(let s=0;s<3;s++){let c=o.getX(e+s),l=o.getX(e+(s+1)%3);r.fromBufferAttribute(a,c),i.fromBufferAttribute(a,l),Wl(r,i,n)===!0&&(t.push(r.x,r.y,r.z),t.push(i.x,i.y,i.z))}}}else{let a=e.attributes.position;for(let e=0,o=a.count/3;e<o;e++)for(let o=0;o<3;o++){let s=3*e+o,c=3*e+(o+1)%3;r.fromBufferAttribute(a,s),i.fromBufferAttribute(a,c),Wl(r,i,n)===!0&&(t.push(r.x,r.y,r.z),t.push(i.x,i.y,i.z))}}this.setAttribute(`position`,new ga(t,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}};function Wl(e,t,n){let r=`${e.x},${e.y},${e.z}-${t.x},${t.y},${t.z}`,i=`${t.x},${t.y},${t.z}-${e.x},${e.y},${e.z}`;return n.has(r)===!0||n.has(i)===!0?!1:(n.add(r),n.add(i),!0)}var Gl=Object.freeze({__proto__:null,BoxGeometry:nc,CapsuleGeometry:rc,CircleGeometry:ic,ConeGeometry:oc,CylinderGeometry:ac,DodecahedronGeometry:cc,EdgesGeometry:pc,ExtrudeGeometry:Ol,IcosahedronGeometry:jl,LatheGeometry:Ml,OctahedronGeometry:Nl,PlaneGeometry:Pl,PolyhedronGeometry:sc,RingGeometry:Fl,ShapeGeometry:Il,SphereGeometry:Rl,TetrahedronGeometry:zl,TorusGeometry:Bl,TorusKnotGeometry:Vl,TubeGeometry:Hl,WireframeGeometry:Ul}),Kl=class extends Na{constructor(e){super(),this.isShadowMaterial=!0,this.type=`ShadowMaterial`,this.color=new I(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}};function ql(e){let t={};for(let n in e){t[n]={};for(let r in e[n]){let i=e[n][r];if(Yl(i))i.isRenderTargetTexture?(j(`UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().`),t[n][r]=null):t[n][r]=i.clone();else if(Array.isArray(i))if(Yl(i[0])){let e=[];for(let t=0,n=i.length;t<n;t++)e[t]=i[t].clone();t[n][r]=e}else t[n][r]=i.slice();else t[n][r]=i}}return t}function Jl(e){let t={};for(let n=0;n<e.length;n++){let r=ql(e[n]);for(let e in r)t[e]=r[e]}return t}function Yl(e){return e&&(e.isColor||e.isMatrix3||e.isMatrix4||e.isVector2||e.isVector3||e.isVector4||e.isTexture||e.isQuaternion)}function Xl(e){let t=[];for(let n=0;n<e.length;n++)t.push(e[n].clone());return t}function Zl(e){let t=e.getRenderTarget();return t===null?e.outputColorSpace:t.isXRRenderTarget===!0?t.texture.colorSpace:Sr.workingColorSpace}var Ql={clone:ql,merge:Jl},$l=`void main() {
2
2
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
3
3
  }`,eu=`void main() {
4
4
  gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
@@ -4101,15 +4101,15 @@ void main() {
4101
4101
 
4102
4102
  }
4103
4103
 
4104
- }`,Bg=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let n=new tc(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){let t=e.cameras[0].viewport,n=new tu({vertexShader:Rg,fragmentShader:zg,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new bo(new Pl(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},Vg=class extends Bn{constructor(e,t){super();let n=this,r=null,i=1,a=null,o=`local-floor`,s=1,c=null,l=null,u=null,d=null,f=null,p=null,m=typeof XRWebGLBinding<`u`,h=new Bg,g={},_=t.getContextAttributes(),v=null,y=null,b=[],x=[],S=new N,C=null,w=new ud;w.viewport=new Nr;let T=new ud;T.viewport=new Nr;let E=[w,T],D=new Ud,O=null,ee=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=b[e];return t===void 0&&(t=new hi,b[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=b[e];return t===void 0&&(t=new hi,b[e]=t),t.getGripSpace()},this.getHand=function(e){let t=b[e];return t===void 0&&(t=new hi,b[e]=t),t.getHandSpace()};function te(e){let t=x.indexOf(e.inputSource);if(t===-1)return;let n=b[t];n!==void 0&&(n.update(e.inputSource,e.frame,c||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function ne(){r.removeEventListener(`select`,te),r.removeEventListener(`selectstart`,te),r.removeEventListener(`selectend`,te),r.removeEventListener(`squeeze`,te),r.removeEventListener(`squeezestart`,te),r.removeEventListener(`squeezeend`,te),r.removeEventListener(`end`,ne),r.removeEventListener(`inputsourceschange`,re);for(let e=0;e<b.length;e++){let t=x[e];t!==null&&(x[e]=null,b[e].disconnect(t))}O=null,ee=null,h.reset();for(let e in g)delete g[e];e.setRenderTarget(v),f=null,d=null,u=null,r=null,y=null,de.stop(),n.isPresenting=!1,e.setPixelRatio(C),e.setSize(S.width,S.height,!1),n.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(e){i=e,n.isPresenting===!0&&j(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(e){o=e,n.isPresenting===!0&&j(`WebXRManager: Cannot change reference space type while presenting.`)},this.getReferenceSpace=function(){return c||a},this.setReferenceSpace=function(e){c=e},this.getBaseLayer=function(){return d===null?f:d},this.getBinding=function(){return u===null&&m&&(u=new XRWebGLBinding(r,t)),u},this.getFrame=function(){return p},this.getSession=function(){return r},this.setSession=async function(l){if(r=l,r!==null){if(v=e.getRenderTarget(),r.addEventListener(`select`,te),r.addEventListener(`selectstart`,te),r.addEventListener(`selectend`,te),r.addEventListener(`squeeze`,te),r.addEventListener(`squeezestart`,te),r.addEventListener(`squeezeend`,te),r.addEventListener(`end`,ne),r.addEventListener(`inputsourceschange`,re),_.xrCompatible!==!0&&await t.makeXRCompatible(),C=e.getPixelRatio(),e.getSize(S),m&&`createProjectionLayer`in XRWebGLBinding.prototype){let n=null,a=null,o=null;_.depth&&(o=_.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,n=_.stencil?Ge:We,a=_.stencil?Re:Ne);let s={colorFormat:t.RGBA8,depthFormat:o,scaleFactor:i};u=this.getBinding(),d=u.createProjectionLayer(s),r.updateRenderState({layers:[d]}),e.setPixelRatio(1),e.setSize(d.textureWidth,d.textureHeight,!1),y=new Fr(d.textureWidth,d.textureHeight,{format:Ue,type:ke,depthTexture:new $s(d.textureWidth,d.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:_.stencil,colorSpace:e.outputColorSpace,samples:_.antialias?4:0,resolveDepthBuffer:d.ignoreDepthValues===!1,resolveStencilBuffer:d.ignoreDepthValues===!1})}else{let n={antialias:_.antialias,alpha:!0,depth:_.depth,stencil:_.stencil,framebufferScaleFactor:i};f=new XRWebGLLayer(r,t,n),r.updateRenderState({baseLayer:f}),e.setPixelRatio(1),e.setSize(f.framebufferWidth,f.framebufferHeight,!1),y=new Fr(f.framebufferWidth,f.framebufferHeight,{format:Ue,type:ke,colorSpace:e.outputColorSpace,stencilBuffer:_.stencil,resolveDepthBuffer:f.ignoreDepthValues===!1,resolveStencilBuffer:f.ignoreDepthValues===!1})}y.isXRRenderTarget=!0,this.setFoveation(s),c=null,a=await r.requestReferenceSpace(o),de.setContext(r),de.start(),n.isPresenting=!0,n.dispatchEvent({type:`sessionstart`})}},this.getEnvironmentBlendMode=function(){if(r!==null)return r.environmentBlendMode},this.getDepthTexture=function(){return h.getDepthTexture()};function re(e){for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=x.indexOf(n);r>=0&&(x[r]=null,b[r].disconnect(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=x.indexOf(n);if(r===-1){for(let e=0;e<b.length;e++)if(e>=x.length){x.push(n),r=e;break}else if(x[e]===null){x[e]=n,r=e;break}if(r===-1)break}let i=b[r];i&&i.connect(n)}}let ie=new P,ae=new P;function oe(e,t,n){ie.setFromMatrixPosition(t.matrixWorld),ae.setFromMatrixPosition(n.matrixWorld);let r=ie.distanceTo(ae),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function se(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(r===null)return;let t=e.near,n=e.far;h.texture!==null&&(h.depthNear>0&&(t=h.depthNear),h.depthFar>0&&(n=h.depthFar)),D.near=T.near=w.near=t,D.far=T.far=w.far=n,(O!==D.near||ee!==D.far)&&(r.updateRenderState({depthNear:D.near,depthFar:D.far}),O=D.near,ee=D.far),D.layers.mask=e.layers.mask|6,w.layers.mask=D.layers.mask&-5,T.layers.mask=D.layers.mask&-3;let i=e.parent,a=D.cameras;se(D,i);for(let e=0;e<a.length;e++)se(a[e],i);a.length===2?oe(D,w,T):D.projectionMatrix.copy(w.projectionMatrix),ce(e,D,i)};function ce(e,t,n){n===null?e.matrix.copy(t.matrixWorld):(e.matrix.copy(n.matrixWorld),e.matrix.invert(),e.matrix.multiply(t.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=Wn*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}this.getCamera=function(){return D},this.getFoveation=function(){if(!(d===null&&f===null))return s},this.setFoveation=function(e){s=e,d!==null&&(d.fixedFoveation=e),f!==null&&f.fixedFoveation!==void 0&&(f.fixedFoveation=e)},this.hasDepthSensing=function(){return h.texture!==null},this.getDepthSensingMesh=function(){return h.getMesh(D)},this.getCameraTexture=function(e){return g[e]};let le=null;function ue(t,i){if(l=i.getViewerPose(c||a),p=i,l!==null){let t=l.views;f!==null&&(e.setRenderTargetFramebuffer(y,f.framebuffer),e.setRenderTarget(y));let i=!1;t.length!==D.cameras.length&&(D.cameras.length=0,i=!0);for(let n=0;n<t.length;n++){let r=t[n],a=null;if(f!==null)a=f.getViewport(r);else{let t=u.getViewSubImage(d,r);a=t.viewport,n===0&&(e.setRenderTargetTextures(y,t.colorTexture,t.depthStencilTexture),e.setRenderTarget(y))}let o=E[n];o===void 0&&(o=new ud,o.layers.enable(n),o.viewport=new Nr,E[n]=o),o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.quaternion,o.scale),o.projectionMatrix.fromArray(r.projectionMatrix),o.projectionMatrixInverse.copy(o.projectionMatrix).invert(),o.viewport.set(a.x,a.y,a.width,a.height),n===0&&(D.matrix.copy(o.matrix),D.matrix.decompose(D.position,D.quaternion,D.scale)),i===!0&&D.cameras.push(o)}let a=r.enabledFeatures;if(a&&a.includes(`depth-sensing`)&&r.depthUsage==`gpu-optimized`&&m){u=n.getBinding();let e=u.getDepthInformation(t[0]);e&&e.isValid&&e.texture&&h.init(e,r.renderState)}if(a&&a.includes(`camera-access`)&&m){e.state.unbindTexture(),u=n.getBinding();for(let e=0;e<t.length;e++){let n=t[e].camera;if(n){let e=g[n];e||(e=new tc,g[n]=e);let t=u.getCameraImage(n);e.sourceTexture=t}}}}for(let e=0;e<b.length;e++){let t=x[e],n=b[e];t!==null&&n!==void 0&&n.update(t,i,c||a)}le&&le(t,i),i.detectedPlanes&&n.dispatchEvent({type:`planesdetected`,data:i}),p=null}let de=new Np;de.setAnimationLoop(ue),this.setAnimationLoop=function(e){le=e},this.dispose=function(){}}},Hg=new F,Ug=new _r;Ug.set(-1,0,0,0,1,0,0,0,1);function Wg(e,t){function n(e,t){e.matrixAutoUpdate===!0&&e.updateMatrix(),t.value.copy(e.matrix)}function r(t,n){n.color.getRGB(t.fogColor.value,Zl(e)),n.isFog?(t.fogNear.value=n.near,t.fogFar.value=n.far):n.isFogExp2&&(t.fogDensity.value=n.density)}function i(e,t,n,r,i){t.isNodeMaterial?t.uniformsNeedUpdate=!1:t.isMeshBasicMaterial?a(e,t):t.isMeshLambertMaterial?(a(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshToonMaterial?(a(e,t),d(e,t)):t.isMeshPhongMaterial?(a(e,t),u(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshStandardMaterial?(a(e,t),f(e,t),t.isMeshPhysicalMaterial&&p(e,t,i)):t.isMeshMatcapMaterial?(a(e,t),m(e,t)):t.isMeshDepthMaterial?a(e,t):t.isMeshDistanceMaterial?(a(e,t),h(e,t)):t.isMeshNormalMaterial?a(e,t):t.isLineBasicMaterial?(o(e,t),t.isLineDashedMaterial&&s(e,t)):t.isPointsMaterial?c(e,t,n,r):t.isSpriteMaterial?l(e,t):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}function a(e,r){e.opacity.value=r.opacity,r.color&&e.diffuse.value.copy(r.color),r.emissive&&e.emissive.value.copy(r.emissive).multiplyScalar(r.emissiveIntensity),r.map&&(e.map.value=r.map,n(r.map,e.mapTransform)),r.alphaMap&&(e.alphaMap.value=r.alphaMap,n(r.alphaMap,e.alphaMapTransform)),r.bumpMap&&(e.bumpMap.value=r.bumpMap,n(r.bumpMap,e.bumpMapTransform),e.bumpScale.value=r.bumpScale,r.side===1&&(e.bumpScale.value*=-1)),r.normalMap&&(e.normalMap.value=r.normalMap,n(r.normalMap,e.normalMapTransform),e.normalScale.value.copy(r.normalScale),r.side===1&&e.normalScale.value.negate()),r.displacementMap&&(e.displacementMap.value=r.displacementMap,n(r.displacementMap,e.displacementMapTransform),e.displacementScale.value=r.displacementScale,e.displacementBias.value=r.displacementBias),r.emissiveMap&&(e.emissiveMap.value=r.emissiveMap,n(r.emissiveMap,e.emissiveMapTransform)),r.specularMap&&(e.specularMap.value=r.specularMap,n(r.specularMap,e.specularMapTransform)),r.alphaTest>0&&(e.alphaTest.value=r.alphaTest);let i=t.get(r),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,e.envMapRotation.value.setFromMatrix4(Hg.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(Ug),e.reflectivity.value=r.reflectivity,e.ior.value=r.ior,e.refractionRatio.value=r.refractionRatio),r.lightMap&&(e.lightMap.value=r.lightMap,e.lightMapIntensity.value=r.lightMapIntensity,n(r.lightMap,e.lightMapTransform)),r.aoMap&&(e.aoMap.value=r.aoMap,e.aoMapIntensity.value=r.aoMapIntensity,n(r.aoMap,e.aoMapTransform))}function o(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,n(t.map,e.mapTransform))}function s(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}function c(e,t,r,i){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*r,e.scale.value=i*.5,t.map&&(e.map.value=t.map,n(t.map,e.uvTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,n(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function l(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,n(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,n(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function u(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}function d(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}function f(e,t){e.metalness.value=t.metalness,t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap,n(t.metalnessMap,e.metalnessMapTransform)),e.roughness.value=t.roughness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap,n(t.roughnessMap,e.roughnessMapTransform)),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}function p(e,t,r){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,n(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,n(t.sheenRoughnessMap,e.sheenRoughnessMapTransform))),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,n(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,n(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,n(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===1&&e.clearcoatNormalScale.value.negate())),t.dispersion>0&&(e.dispersion.value=t.dispersion),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,n(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,n(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform))),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=r.texture,e.transmissionSamplerSize.value.set(r.width,r.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,n(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,n(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,n(t.anisotropyMap,e.anisotropyMapTransform))),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,n(t.specularColorMap,e.specularColorMapTransform)),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,n(t.specularIntensityMap,e.specularIntensityMapTransform))}function m(e,t){t.matcap&&(e.matcap.value=t.matcap)}function h(e,n){let r=t.get(n).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}return{refreshFogUniforms:r,refreshMaterialUniforms:i}}function Gg(e,t,n,r){let i={},a={},o=[],s=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function c(e,t){let n=t.program;r.uniformBlockBinding(e,n)}function l(e,n){let o=i[e.id];o===void 0&&(m(e),o=u(e),i[e.id]=o,e.addEventListener(`dispose`,g));let s=n.program;r.updateUBOMapping(e,s);let c=t.render.frame;a[e.id]!==c&&(f(e),a[e.id]=c)}function u(t){let n=d();t.__bindingPointIndex=n;let r=e.createBuffer(),i=t.__size,a=t.usage;return e.bindBuffer(e.UNIFORM_BUFFER,r),e.bufferData(e.UNIFORM_BUFFER,i,a),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,n,r),r}function d(){for(let e=0;e<s;e++)if(o.indexOf(e)===-1)return o.push(e),e;return M(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function f(t){let n=i[t.id],r=t.uniforms,a=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let t=0,n=r.length;t<n;t++){let n=Array.isArray(r[t])?r[t]:[r[t]];for(let r=0,i=n.length;r<i;r++){let i=n[r];if(p(i,t,r,a)===!0){let t=i.__offset,n=Array.isArray(i.value)?i.value:[i.value],r=0;for(let a=0;a<n.length;a++){let o=n[a],s=h(o);typeof o==`number`||typeof o==`boolean`?(i.__data[0]=o,e.bufferSubData(e.UNIFORM_BUFFER,t+r,i.__data)):o.isMatrix3?(i.__data[0]=o.elements[0],i.__data[1]=o.elements[1],i.__data[2]=o.elements[2],i.__data[3]=0,i.__data[4]=o.elements[3],i.__data[5]=o.elements[4],i.__data[6]=o.elements[5],i.__data[7]=0,i.__data[8]=o.elements[6],i.__data[9]=o.elements[7],i.__data[10]=o.elements[8],i.__data[11]=0):ArrayBuffer.isView(o)?i.__data.set(new o.constructor(o.buffer,o.byteOffset,i.__data.length)):(o.toArray(i.__data,r),r+=s.storage/Float32Array.BYTES_PER_ELEMENT)}e.bufferSubData(e.UNIFORM_BUFFER,t,i.__data)}}}e.bindBuffer(e.UNIFORM_BUFFER,null)}function p(e,t,n,r){let i=e.value,a=t+`_`+n;if(r[a]===void 0)return typeof i==`number`||typeof i==`boolean`?r[a]=i:ArrayBuffer.isView(i)?r[a]=i.slice():r[a]=i.clone(),!0;{let e=r[a];if(typeof i==`number`||typeof i==`boolean`){if(e!==i)return r[a]=i,!0}else if(ArrayBuffer.isView(i))return!0;else if(e.equals(i)===!1)return e.copy(i),!0}return!1}function m(e){let t=e.uniforms,n=0;for(let e=0,r=t.length;e<r;e++){let r=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=Array.isArray(t.value)?t.value:[t.value];for(let e=0,r=i.length;e<r;e++){let r=i[e],a=h(r),o=n%16,s=o%a.boundary,c=o+s;n+=s,c!==0&&16-c<a.storage&&(n+=16-c),t.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),t.__offset=n,n+=a.storage}}}let r=n%16;return r>0&&(n+=16-r),e.__size=n,e.__cache={},this}function h(e){let t={boundary:0,storage:0};return typeof e==`number`||typeof e==`boolean`?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?j(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(e)?(t.boundary=16,t.storage=e.byteLength):j(`WebGLRenderer: Unsupported uniform value type.`,e),t}function g(t){let n=t.target;n.removeEventListener(`dispose`,g);let r=o.indexOf(n.__bindingPointIndex);o.splice(r,1),e.deleteBuffer(i[n.id]),delete i[n.id],delete a[n.id]}function _(){for(let t in i)e.deleteBuffer(i[t]);o=[],i={},a={}}return{bind:c,update:l,dispose:_}}var Kg=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]),qg=null;function Jg(){return qg===null&&(qg=new Po(Kg,16,16,Je,Fe),qg.name=`DFG_LUT`,qg.minFilter=Te,qg.magFilter=Te,qg.wrapS=ve,qg.wrapT=ve,qg.generateMipmaps=!1,qg.needsUpdate=!0),qg}var Yg=class{constructor(e={}){let{canvas:t=kn(),context:n=null,depth:r=!0,stencil:i=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:s=!0,preserveDrawingBuffer:c=!1,powerPreference:l=`default`,failIfMajorPerformanceCaveat:u=!1,reversedDepthBuffer:d=!1,outputBufferType:f=ke}=e;this.isWebGLRenderer=!0;let p;if(n!==null){if(typeof WebGLRenderingContext<`u`&&n instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);p=n.getContextAttributes().alpha}else p=a;let m=f,h=new Set([Ze,Ye,qe]),g=new Set([ke,Ne,je,Re,Ie,Le]),_=new Uint32Array(4),v=new Int32Array(4),y=new P,b=null,x=null,S=[],C=[],w=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=0,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let T=this,E=!1,D=null;this._outputColorSpace=Xt;let O=0,ee=0,te=null,ne=-1,re=null,ie=new Nr,ae=new Nr,oe=null,se=new I(0),ce=0,le=t.width,ue=t.height,de=1,fe=null,pe=null,me=new Nr(0,0,le,ue),he=new Nr(0,0,le,ue),ge=!1,_e=new es,ve=!1,ye=!1,be=new F,xe=new P,Se=new Nr,Ce={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},we=!1;function Te(){return te===null?de:1}let k=n;function Ee(e,n){return t.getContext(e,n)}try{let e={alpha:!0,depth:r,stencil:i,antialias:o,premultipliedAlpha:s,preserveDrawingBuffer:c,powerPreference:l,failIfMajorPerformanceCaveat:u};if(`setAttribute`in t&&t.setAttribute(`data-engine`,`three.js r184`),t.addEventListener(`webglcontextlost`,ct,!1),t.addEventListener(`webglcontextrestored`,lt,!1),t.addEventListener(`webglcontextcreationerror`,ut,!1),k===null){let t=`webgl2`;if(k=Ee(t,e),k===null)throw Ee(t)?Error(`Error creating WebGL context with your selected attributes.`):Error(`Error creating WebGL context.`)}}catch(e){throw M(`WebGLRenderer: `+e.message),e}let Oe,Ae,A,Me,Pe,ze,Be,Ve,He,Ue,We,Ge,Ke,Je,Xe,Qe,$e,et,tt,nt,rt,it,at;function ot(){Oe=new pm(k),Oe.init(),rt=new Lg(k,Oe),Ae=new Up(k,Oe,e,rt),A=new Fg(k,Oe),Ae.reversedDepthBuffer&&d&&A.buffers.depth.setReversed(!0),Me=new gm(k),Pe=new hg,ze=new Ig(k,Oe,A,Pe,Ae,rt,Me),Be=new fm(T),Ve=new Pp(k),it=new Vp(k,Ve),He=new mm(k,Ve,Me,it),Ue=new vm(k,He,Ve,it,Me),et=new _m(k,Ae,ze),Xe=new Wp(Pe),We=new mg(T,Be,Oe,Ae,it,Xe),Ge=new Wg(T,Pe),Ke=new yg,Je=new Eg(Oe),$e=new Bp(T,Be,A,Ue,p,s),Qe=new Pg(T,Ue,Ae),at=new Gg(k,Me,Ae,A),tt=new Hp(k,Oe,Me),nt=new hm(k,Oe,Me),Me.programs=We.programs,T.capabilities=Ae,T.extensions=Oe,T.properties=Pe,T.renderLists=Ke,T.shadowMap=Qe,T.state=A,T.info=Me}ot(),m!==1009&&(w=new bm(m,t.width,t.height,r,i));let st=new Vg(T,k);this.xr=st,this.getContext=function(){return k},this.getContextAttributes=function(){return k.getContextAttributes()},this.forceContextLoss=function(){let e=Oe.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=Oe.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return de},this.setPixelRatio=function(e){e!==void 0&&(de=e,this.setSize(le,ue,!1))},this.getSize=function(e){return e.set(le,ue)},this.setSize=function(e,n,r=!0){if(st.isPresenting){j(`WebGLRenderer: Can't change size while VR device is presenting.`);return}le=e,ue=n,t.width=Math.floor(e*de),t.height=Math.floor(n*de),r===!0&&(t.style.width=e+`px`,t.style.height=n+`px`),w!==null&&w.setSize(t.width,t.height),this.setViewport(0,0,e,n)},this.getDrawingBufferSize=function(e){return e.set(le*de,ue*de).floor()},this.setDrawingBufferSize=function(e,n,r){le=e,ue=n,de=r,t.width=Math.floor(e*r),t.height=Math.floor(n*r),this.setViewport(0,0,e,n)},this.setEffects=function(e){if(m===1009){M(`THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(e){for(let t=0;t<e.length;t++)if(e[t].isOutputPass===!0){j(`THREE.WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}w.setEffects(e||[])},this.getCurrentViewport=function(e){return e.copy(ie)},this.getViewport=function(e){return e.copy(me)},this.setViewport=function(e,t,n,r){e.isVector4?me.set(e.x,e.y,e.z,e.w):me.set(e,t,n,r),A.viewport(ie.copy(me).multiplyScalar(de).round())},this.getScissor=function(e){return e.copy(he)},this.setScissor=function(e,t,n,r){e.isVector4?he.set(e.x,e.y,e.z,e.w):he.set(e,t,n,r),A.scissor(ae.copy(he).multiplyScalar(de).round())},this.getScissorTest=function(){return ge},this.setScissorTest=function(e){A.setScissorTest(ge=e)},this.setOpaqueSort=function(e){fe=e},this.setTransparentSort=function(e){pe=e},this.getClearColor=function(e){return e.copy($e.getClearColor())},this.setClearColor=function(){$e.setClearColor(...arguments)},this.getClearAlpha=function(){return $e.getClearAlpha()},this.setClearAlpha=function(){$e.setClearAlpha(...arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(te!==null){let t=te.texture.format;e=h.has(t)}if(e){let e=te.texture.type,t=g.has(e),n=$e.getClearColor(),r=$e.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(_[0]=i,_[1]=a,_[2]=o,_[3]=r,k.clearBufferuiv(k.COLOR,0,_)):(v[0]=i,v[1]=a,v[2]=o,v[3]=r,k.clearBufferiv(k.COLOR,0,v))}else r|=k.COLOR_BUFFER_BIT}t&&(r|=k.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=k.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&k.clear(r)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.setNodesHandler=function(e){e.setRenderer(this),D=e},this.dispose=function(){t.removeEventListener(`webglcontextlost`,ct,!1),t.removeEventListener(`webglcontextrestored`,lt,!1),t.removeEventListener(`webglcontextcreationerror`,ut,!1),$e.dispose(),Ke.dispose(),Je.dispose(),Pe.dispose(),Be.dispose(),Ue.dispose(),it.dispose(),at.dispose(),We.dispose(),st.dispose(),st.removeEventListener(`sessionstart`,_t),st.removeEventListener(`sessionend`,vt),yt.stop()};function ct(e){e.preventDefault(),Pn(`WebGLRenderer: Context Lost.`),E=!0}function lt(){Pn(`WebGLRenderer: Context Restored.`),E=!1;let e=Me.autoReset,t=Qe.enabled,n=Qe.autoUpdate,r=Qe.needsUpdate,i=Qe.type;ot(),Me.autoReset=e,Qe.enabled=t,Qe.autoUpdate=n,Qe.needsUpdate=r,Qe.type=i}function ut(e){M(`WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function dt(e){let t=e.target;t.removeEventListener(`dispose`,dt),ft(t)}function ft(e){pt(e),Pe.remove(e)}function pt(e){let t=Pe.get(e).programs;t!==void 0&&(t.forEach(function(e){We.releaseProgram(e)}),e.isShaderMaterial&&We.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=Ce);let o=i.isMesh&&i.matrixWorld.determinant()<0,s=kt(e,t,n,r,i);A.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=He.getWireframeAttribute(n),c===void 0)return;l=2}let u=n.drawRange,d=n.attributes.position,f=u.start*l,p=(u.start+u.count)*l;a!==null&&(f=Math.max(f,a.start*l),p=Math.min(p,(a.start+a.count)*l)),c===null?d!=null&&(f=Math.max(f,0),p=Math.min(p,d.count)):(f=Math.max(f,0),p=Math.min(p,c.count));let m=p-f;if(m<0||m===1/0)return;it.setup(i,r,s,n,c);let h,g=tt;if(c!==null&&(h=Ve.get(c),g=nt,g.setIndex(h)),i.isMesh)r.wireframe===!0?(A.setLineWidth(r.wireframeLinewidth*Te()),g.setMode(k.LINES)):g.setMode(k.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),A.setLineWidth(e*Te()),i.isLineSegments?g.setMode(k.LINES):i.isLineLoop?g.setMode(k.LINE_LOOP):g.setMode(k.LINE_STRIP)}else i.isPoints?g.setMode(k.POINTS):i.isSprite&&g.setMode(k.TRIANGLES);if(i.isBatchedMesh)if(Oe.get(`WEBGL_multi_draw`))g.renderMultiDraw(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount);else{let e=i._multiDrawStarts,t=i._multiDrawCounts,n=i._multiDrawCount,a=c?Ve.get(c).bytesPerElement:1,o=Pe.get(r).currentProgram.getUniforms();for(let r=0;r<n;r++)o.setValue(k,`_gl_DrawID`,r),g.render(e[r]/a,t[r])}else if(i.isInstancedMesh)g.renderInstances(f,m,i.count);else if(n.isInstancedBufferGeometry){let e=n._maxInstanceCount===void 0?1/0:n._maxInstanceCount,t=Math.min(n.instanceCount,e);g.renderInstances(f,m,t)}else g.render(f,m)};function mt(e,t,n){e.transparent===!0&&e.side===2&&e.forceSinglePass===!1?(e.side=1,e.needsUpdate=!0,Tt(e,t,n),e.side=0,e.needsUpdate=!0,Tt(e,t,n),e.side=2):Tt(e,t,n)}this.compile=function(e,t,n=null){n===null&&(n=e),x=Je.get(n),x.init(t),C.push(x),n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(x.pushLight(e),e.castShadow&&x.pushShadow(e))}),e!==n&&e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(x.pushLight(e),e.castShadow&&x.pushShadow(e))}),x.setupLights();let r=new Set;return e.traverse(function(e){if(!(e.isMesh||e.isPoints||e.isLine||e.isSprite))return;let t=e.material;if(t)if(Array.isArray(t))for(let i=0;i<t.length;i++){let a=t[i];mt(a,n,e),r.add(a)}else mt(t,n,e),r.add(t)}),x=C.pop(),r},this.compileAsync=function(e,t,n=null){let r=this.compile(e,t,n);return new Promise(t=>{function n(){if(r.forEach(function(e){Pe.get(e).currentProgram.isReady()&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}Oe.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let ht=null;function gt(e){ht&&ht(e)}function _t(){yt.stop()}function vt(){yt.start()}let yt=new Np;yt.setAnimationLoop(gt),typeof self<`u`&&yt.setContext(self),this.setAnimationLoop=function(e){ht=e,st.setAnimationLoop(e),e===null?yt.stop():yt.start()},st.addEventListener(`sessionstart`,_t),st.addEventListener(`sessionend`,vt),this.render=function(e,t){if(t!==void 0&&t.isCamera!==!0){M(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(E===!0)return;D!==null&&D.renderStart(e,t);let n=st.enabled===!0&&st.isPresenting===!0,r=w!==null&&(te===null||n)&&w.begin(T,te);if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),st.enabled===!0&&st.isPresenting===!0&&(w===null||w.isCompositing()===!1)&&(st.cameraAutoUpdate===!0&&st.updateCamera(t),t=st.getCamera()),e.isScene===!0&&e.onBeforeRender(T,e,t,te),x=Je.get(e,C.length),x.init(t),x.state.textureUnits=ze.getTextureUnits(),C.push(x),be.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),_e.setFromProjectionMatrix(be,vn,t.reversedDepth),ye=this.localClippingEnabled,ve=Xe.init(this.clippingPlanes,ye),b=Ke.get(e,S.length),b.init(),S.push(b),st.enabled===!0&&st.isPresenting===!0){let e=T.xr.getDepthSensingMesh();e!==null&&bt(e,t,-1/0,T.sortObjects)}bt(e,t,0,T.sortObjects),b.finish(),T.sortObjects===!0&&b.sort(fe,pe),we=st.enabled===!1||st.isPresenting===!1||st.hasDepthSensing()===!1,we&&$e.addToRenderList(b,e),this.info.render.frame++,ve===!0&&Xe.beginShadows();let i=x.state.shadowsArray;if(Qe.render(i,e,t),ve===!0&&Xe.endShadows(),this.info.autoReset===!0&&this.info.reset(),(r&&w.hasRenderPass())===!1){let n=b.opaque,r=b.transmissive;if(x.setupLights(),t.isArrayCamera){let i=t.cameras;if(r.length>0)for(let t=0,a=i.length;t<a;t++){let a=i[t];St(n,r,e,a)}we&&$e.render(e);for(let t=0,n=i.length;t<n;t++){let n=i[t];xt(b,e,n,n.viewport)}}else r.length>0&&St(n,r,e,t),we&&$e.render(e),xt(b,e,t)}te!==null&&ee===0&&(ze.updateMultisampleRenderTarget(te),ze.updateRenderTargetMipmap(te)),r&&w.end(T),e.isScene===!0&&e.onAfterRender(T,e,t),it.resetDefaultState(),ne=-1,re=null,C.pop(),C.length>0?(x=C[C.length-1],ze.setTextureUnits(x.state.textureUnits),ve===!0&&Xe.setGlobalState(T.clippingPlanes,x.state.camera)):x=null,S.pop(),b=S.length>0?S[S.length-1]:null,D!==null&&D.renderEnd()};function bt(e,t,n,r){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLightProbeGrid)x.pushLightProbeGrid(e);else if(e.isLight)x.pushLight(e),e.castShadow&&x.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||_e.intersectsSprite(e)){r&&Se.setFromMatrixPosition(e.matrixWorld).applyMatrix4(be);let t=Ue.update(e),i=e.material;i.visible&&b.push(e,t,i,n,Se.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||_e.intersectsObject(e))){let t=Ue.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),Se.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),Se.copy(e.boundingSphere.center)),Se.applyMatrix4(e.matrixWorld).applyMatrix4(be)),Array.isArray(i)){let r=t.groups;for(let a=0,o=r.length;a<o;a++){let o=r[a],s=i[o.materialIndex];s&&s.visible&&b.push(e,t,s,n,Se.z,o)}}else i.visible&&b.push(e,t,i,n,Se.z,null)}}let i=e.children;for(let e=0,a=i.length;e<a;e++)bt(i[e],t,n,r)}function xt(e,t,n,r){let{opaque:i,transmissive:a,transparent:o}=e;x.setupLightsView(n),ve===!0&&Xe.setGlobalState(T.clippingPlanes,n),r&&A.viewport(ie.copy(r)),i.length>0&&Ct(i,t,n),a.length>0&&Ct(a,t,n),o.length>0&&Ct(o,t,n),A.buffers.depth.setTest(!0),A.buffers.depth.setMask(!0),A.buffers.color.setMask(!0),A.setPolygonOffset(!1)}function St(e,t,n,r){if((n.isScene===!0?n.overrideMaterial:null)!==null)return;if(x.state.transmissionRenderTarget[r.id]===void 0){let e=Oe.has(`EXT_color_buffer_half_float`)||Oe.has(`EXT_color_buffer_float`);x.state.transmissionRenderTarget[r.id]=new Fr(1,1,{generateMipmaps:!0,type:e?Fe:ke,minFilter:De,samples:Math.max(4,Ae.samples),stencilBuffer:i,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Sr.workingColorSpace})}let a=x.state.transmissionRenderTarget[r.id],o=r.viewport||ie;a.setSize(o.z*T.transmissionResolutionScale,o.w*T.transmissionResolutionScale);let s=T.getRenderTarget(),c=T.getActiveCubeFace(),l=T.getActiveMipmapLevel();T.setRenderTarget(a),T.getClearColor(se),ce=T.getClearAlpha(),ce<1&&T.setClearColor(16777215,.5),T.clear(),we&&$e.render(n);let u=T.toneMapping;T.toneMapping=0;let d=r.viewport;if(r.viewport!==void 0&&(r.viewport=void 0),x.setupLightsView(r),ve===!0&&Xe.setGlobalState(T.clippingPlanes,r),Ct(e,n,r),ze.updateMultisampleRenderTarget(a),ze.updateRenderTargetMipmap(a),Oe.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let i=0,a=t.length;i<a;i++){let{object:a,geometry:o,material:s,group:c}=t[i];if(s.side===2&&a.layers.test(r.layers)){let t=s.side;s.side=1,s.needsUpdate=!0,wt(a,n,r,o,s,c),s.side=t,s.needsUpdate=!0,e=!0}}e===!0&&(ze.updateMultisampleRenderTarget(a),ze.updateRenderTargetMipmap(a))}T.setRenderTarget(s,c,l),T.setClearColor(se,ce),d!==void 0&&(r.viewport=d),T.toneMapping=u}function Ct(e,t,n){let r=t.isScene===!0?t.overrideMaterial:null;for(let i=0,a=e.length;i<a;i++){let a=e[i],{object:o,geometry:s,group:c}=a,l=a.material;l.allowOverride===!0&&r!==null&&(l=r),o.layers.test(n.layers)&&wt(o,t,n,s,l,c)}}function wt(e,t,n,r,i,a){e.onBeforeRender(T,t,n,r,i,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),i.onBeforeRender(T,t,n,r,e,a),i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,i.needsUpdate=!0,T.renderBufferDirect(n,t,r,i,e,a),i.side=0,i.needsUpdate=!0,T.renderBufferDirect(n,t,r,i,e,a),i.side=2):T.renderBufferDirect(n,t,r,i,e,a),e.onAfterRender(T,t,n,r,i,a)}function Tt(e,t,n){t.isScene!==!0&&(t=Ce);let r=Pe.get(e),i=x.state.lights,a=x.state.shadowsArray,o=i.state.version,s=We.getParameters(e,i.state,a,t,n,x.state.lightProbeGridArray),c=We.getProgramCacheKey(s),l=r.programs;r.environment=e.isMeshStandardMaterial||e.isMeshLambertMaterial||e.isMeshPhongMaterial?t.environment:null,r.fog=t.fog;let u=e.isMeshStandardMaterial||e.isMeshLambertMaterial&&!e.envMap||e.isMeshPhongMaterial&&!e.envMap;r.envMap=Be.get(e.envMap||r.environment,u),r.envMapRotation=r.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation,l===void 0&&(e.addEventListener(`dispose`,dt),l=new Map,r.programs=l);let d=l.get(c);if(d!==void 0){if(r.currentProgram===d&&r.lightsStateVersion===o)return Dt(e,s),d}else s.uniforms=We.getUniforms(e),D!==null&&e.isNodeMaterial&&D.build(e,n,s),e.onBeforeCompile(s,T),d=We.acquireProgram(s,c),l.set(c,d),r.uniforms=s.uniforms;let f=r.uniforms;return(!e.isShaderMaterial&&!e.isRawShaderMaterial||e.clipping===!0)&&(f.clippingPlanes=Xe.uniform),Dt(e,s),r.needsLights=jt(e),r.lightsStateVersion=o,r.needsLights&&(f.ambientLightColor.value=i.state.ambient,f.lightProbe.value=i.state.probe,f.directionalLights.value=i.state.directional,f.directionalLightShadows.value=i.state.directionalShadow,f.spotLights.value=i.state.spot,f.spotLightShadows.value=i.state.spotShadow,f.rectAreaLights.value=i.state.rectArea,f.ltc_1.value=i.state.rectAreaLTC1,f.ltc_2.value=i.state.rectAreaLTC2,f.pointLights.value=i.state.point,f.pointLightShadows.value=i.state.pointShadow,f.hemisphereLights.value=i.state.hemi,f.directionalShadowMatrix.value=i.state.directionalShadowMatrix,f.spotLightMatrix.value=i.state.spotLightMatrix,f.spotLightMap.value=i.state.spotLightMap,f.pointShadowMatrix.value=i.state.pointShadowMatrix),r.lightProbeGrid=x.state.lightProbeGridArray.length>0,r.currentProgram=d,r.uniformsList=null,d}function Et(e){if(e.uniformsList===null){let t=e.currentProgram.getUniforms();e.uniformsList=Dh.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function Dt(e,t){let n=Pe.get(e);n.outputColorSpace=t.outputColorSpace,n.batching=t.batching,n.batchingColor=t.batchingColor,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.instancingMorph=t.instancingMorph,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}function Ot(e,t){if(e.length===0)return null;if(e.length===1)return e[0].texture===null?null:e[0];y.setFromMatrixPosition(t.matrixWorld);for(let t=0,n=e.length;t<n;t++){let n=e[t];if(n.texture!==null&&n.boundingBox.containsPoint(y))return n}return null}function kt(e,t,n,r,i){t.isScene!==!0&&(t=Ce),ze.resetTextureUnits();let a=t.fog,o=r.isMeshStandardMaterial||r.isMeshLambertMaterial||r.isMeshPhongMaterial?t.environment:null,s=te===null?T.outputColorSpace:te.isXRRenderTarget===!0?te.texture.colorSpace:Sr.workingColorSpace,c=r.isMeshStandardMaterial||r.isMeshLambertMaterial&&!r.envMap||r.isMeshPhongMaterial&&!r.envMap,l=Be.get(r.envMap||o,c),u=r.vertexColors===!0&&!!n.attributes.color&&n.attributes.color.itemSize===4,d=!!n.attributes.tangent&&(!!r.normalMap||r.anisotropy>0),f=!!n.morphAttributes.position,p=!!n.morphAttributes.normal,m=!!n.morphAttributes.color,h=0;r.toneMapped&&(te===null||te.isXRRenderTarget===!0)&&(h=T.toneMapping);let g=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=g===void 0?0:g.length,v=Pe.get(r),y=x.state.lights;if(ve===!0&&(ye===!0||e!==re)){let t=e===re&&r.id===ne;Xe.setState(r,e,t)}let b=!1;r.version===v.__version?v.needsLights&&v.lightsStateVersion!==y.state.version?b=!0:v.outputColorSpace===s?i.isBatchedMesh&&v.batching===!1||!i.isBatchedMesh&&v.batching===!0||i.isBatchedMesh&&v.batchingColor===!0&&i.colorTexture===null||i.isBatchedMesh&&v.batchingColor===!1&&i.colorTexture!==null||i.isInstancedMesh&&v.instancing===!1||!i.isInstancedMesh&&v.instancing===!0||i.isSkinnedMesh&&v.skinning===!1||!i.isSkinnedMesh&&v.skinning===!0||i.isInstancedMesh&&v.instancingColor===!0&&i.instanceColor===null||i.isInstancedMesh&&v.instancingColor===!1&&i.instanceColor!==null||i.isInstancedMesh&&v.instancingMorph===!0&&i.morphTexture===null||i.isInstancedMesh&&v.instancingMorph===!1&&i.morphTexture!==null?b=!0:v.envMap===l?r.fog===!0&&v.fog!==a||v.numClippingPlanes!==void 0&&(v.numClippingPlanes!==Xe.numPlanes||v.numIntersection!==Xe.numIntersection)?b=!0:v.vertexAlphas===u&&v.vertexTangents===d&&v.morphTargets===f&&v.morphNormals===p&&v.morphColors===m&&v.toneMapping===h&&v.morphTargetsCount===_?!!v.lightProbeGrid!=x.state.lightProbeGridArray.length>0&&(b=!0):b=!0:b=!0:b=!0:(b=!0,v.__version=r.version);let S=v.currentProgram;b===!0&&(S=Tt(r,t,i),D&&r.isNodeMaterial&&D.onUpdateProgram(r,S,v));let C=!1,w=!1,E=!1,O=S.getUniforms(),ee=v.uniforms;if(A.useProgram(S.program)&&(C=!0,w=!0,E=!0),r.id!==ne&&(ne=r.id,w=!0),v.needsLights){let e=Ot(x.state.lightProbeGridArray,i);v.lightProbeGrid!==e&&(v.lightProbeGrid=e,w=!0)}if(C||re!==e){A.buffers.depth.getReversed()&&e.reversedDepth!==!0&&(e._reversedDepth=!0,e.updateProjectionMatrix()),O.setValue(k,`projectionMatrix`,e.projectionMatrix),O.setValue(k,`viewMatrix`,e.matrixWorldInverse);let t=O.map.cameraPosition;t!==void 0&&t.setValue(k,xe.setFromMatrixPosition(e.matrixWorld)),Ae.logarithmicDepthBuffer&&O.setValue(k,`logDepthBufFC`,2/(Math.log(e.far+1)/Math.LN2)),(r.isMeshPhongMaterial||r.isMeshToonMaterial||r.isMeshLambertMaterial||r.isMeshBasicMaterial||r.isMeshStandardMaterial||r.isShaderMaterial)&&O.setValue(k,`isOrthographic`,e.isOrthographicCamera===!0),re!==e&&(re=e,w=!0,E=!0)}if(v.needsLights&&(y.state.directionalShadowMap.length>0&&O.setValue(k,`directionalShadowMap`,y.state.directionalShadowMap,ze),y.state.spotShadowMap.length>0&&O.setValue(k,`spotShadowMap`,y.state.spotShadowMap,ze),y.state.pointShadowMap.length>0&&O.setValue(k,`pointShadowMap`,y.state.pointShadowMap,ze)),i.isSkinnedMesh){O.setOptional(k,i,`bindMatrix`),O.setOptional(k,i,`bindMatrixInverse`);let e=i.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),O.setValue(k,`boneTexture`,e.boneTexture,ze))}i.isBatchedMesh&&(O.setOptional(k,i,`batchingTexture`),O.setValue(k,`batchingTexture`,i._matricesTexture,ze),O.setOptional(k,i,`batchingIdTexture`),O.setValue(k,`batchingIdTexture`,i._indirectTexture,ze),O.setOptional(k,i,`batchingColorTexture`),i._colorsTexture!==null&&O.setValue(k,`batchingColorTexture`,i._colorsTexture,ze));let ie=n.morphAttributes;if((ie.position!==void 0||ie.normal!==void 0||ie.color!==void 0)&&et.update(i,n,S),(w||v.receiveShadow!==i.receiveShadow)&&(v.receiveShadow=i.receiveShadow,O.setValue(k,`receiveShadow`,i.receiveShadow)),(r.isMeshStandardMaterial||r.isMeshLambertMaterial||r.isMeshPhongMaterial)&&r.envMap===null&&t.environment!==null&&(ee.envMapIntensity.value=t.environmentIntensity),ee.dfgLUT!==void 0&&(ee.dfgLUT.value=Jg()),w){if(O.setValue(k,`toneMappingExposure`,T.toneMappingExposure),v.needsLights&&At(ee,E),a&&r.fog===!0&&Ge.refreshFogUniforms(ee,a),Ge.refreshMaterialUniforms(ee,r,de,ue,x.state.transmissionRenderTarget[e.id]),v.needsLights&&v.lightProbeGrid){let e=v.lightProbeGrid;ee.probesSH.value=e.texture,ee.probesMin.value.copy(e.boundingBox.min),ee.probesMax.value.copy(e.boundingBox.max),ee.probesResolution.value.copy(e.resolution)}Dh.upload(k,Et(v),ee,ze)}if(r.isShaderMaterial&&r.uniformsNeedUpdate===!0&&(Dh.upload(k,Et(v),ee,ze),r.uniformsNeedUpdate=!1),r.isSpriteMaterial&&O.setValue(k,`center`,i.center),O.setValue(k,`modelViewMatrix`,i.modelViewMatrix),O.setValue(k,`normalMatrix`,i.normalMatrix),O.setValue(k,`modelMatrix`,i.matrixWorld),r.uniformsGroups!==void 0){let e=r.uniformsGroups;for(let t=0,n=e.length;t<n;t++){let n=e[t];at.update(n,S),at.bind(n,S)}}return S}function At(e,t){e.ambientLightColor.needsUpdate=t,e.lightProbe.needsUpdate=t,e.directionalLights.needsUpdate=t,e.directionalLightShadows.needsUpdate=t,e.pointLights.needsUpdate=t,e.pointLightShadows.needsUpdate=t,e.spotLights.needsUpdate=t,e.spotLightShadows.needsUpdate=t,e.rectAreaLights.needsUpdate=t,e.hemisphereLights.needsUpdate=t}function jt(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&e.lights===!0}this.getActiveCubeFace=function(){return O},this.getActiveMipmapLevel=function(){return ee},this.getRenderTarget=function(){return te},this.setRenderTargetTextures=function(e,t,n){let r=Pe.get(e);r.__autoAllocateDepthBuffer=e.resolveDepthBuffer===!1,r.__autoAllocateDepthBuffer===!1&&(r.__useRenderToTexture=!1),Pe.get(e.texture).__webglTexture=t,Pe.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:n,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,t){let n=Pe.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=t===void 0};let Mt=k.createFramebuffer();this.setRenderTarget=function(e,t=0,n=0){te=e,O=t,ee=n;let r=null,i=!1,a=!1;if(e){let o=Pe.get(e);if(o.__useDefaultFramebuffer!==void 0){A.bindFramebuffer(k.FRAMEBUFFER,o.__webglFramebuffer),ie.copy(e.viewport),ae.copy(e.scissor),oe=e.scissorTest,A.viewport(ie),A.scissor(ae),A.setScissorTest(oe),ne=-1;return}else if(o.__webglFramebuffer===void 0)ze.setupRenderTarget(e);else if(o.__hasExternalTextures)ze.rebindTextures(e,Pe.get(e.texture).__webglTexture,Pe.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(o.__boundDepthTexture!==t){if(t!==null&&Pe.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error(`WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.`);ze.setupDepthRenderbuffer(e)}}let s=e.texture;(s.isData3DTexture||s.isDataArrayTexture||s.isCompressedArrayTexture)&&(a=!0);let c=Pe.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][n]:c[t],i=!0):r=e.samples>0&&ze.useMultisampledRTT(e)===!1?Pe.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,ie.copy(e.viewport),ae.copy(e.scissor),oe=e.scissorTest}else ie.copy(me).multiplyScalar(de).floor(),ae.copy(he).multiplyScalar(de).floor(),oe=ge;if(n!==0&&(r=Mt),A.bindFramebuffer(k.FRAMEBUFFER,r)&&A.drawBuffers(e,r),A.viewport(ie),A.scissor(ae),A.setScissorTest(oe),i){let r=Pe.get(e.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(a){let r=t;for(let t=0;t<e.textures.length;t++){let i=Pe.get(e.textures[t]);k.framebufferTextureLayer(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Pe.get(e.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,t.__webglTexture,n)}ne=-1},this.readRenderTargetPixels=function(e,t,n,r,i,a,o,s=0){if(!(e&&e.isWebGLRenderTarget)){M(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let c=Pe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(c=c[o]),c){A.bindFramebuffer(k.FRAMEBUFFER,c);try{let o=e.textures[s],c=o.format,l=o.type;if(e.textures.length>1&&k.readBuffer(k.COLOR_ATTACHMENT0+s),!Ae.textureFormatReadable(c)){M(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!Ae.textureTypeReadable(l)){M(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}t>=0&&t<=e.width-r&&n>=0&&n<=e.height-i&&k.readPixels(t,n,r,i,rt.convert(c),rt.convert(l),a)}finally{let e=te===null?null:Pe.get(te).__webglFramebuffer;A.bindFramebuffer(k.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,n,r,i,a,o,s=0){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let c=Pe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(c=c[o]),c)if(t>=0&&t<=e.width-r&&n>=0&&n<=e.height-i){A.bindFramebuffer(k.FRAMEBUFFER,c);let o=e.textures[s],l=o.format,u=o.type;if(e.textures.length>1&&k.readBuffer(k.COLOR_ATTACHMENT0+s),!Ae.textureFormatReadable(l))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!Ae.textureTypeReadable(u))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let d=k.createBuffer();k.bindBuffer(k.PIXEL_PACK_BUFFER,d),k.bufferData(k.PIXEL_PACK_BUFFER,a.byteLength,k.STREAM_READ),k.readPixels(t,n,r,i,rt.convert(l),rt.convert(u),0);let f=te===null?null:Pe.get(te).__webglFramebuffer;A.bindFramebuffer(k.FRAMEBUFFER,f);let p=k.fenceSync(k.SYNC_GPU_COMMANDS_COMPLETE,0);return k.flush(),await Rn(k,p,4),k.bindBuffer(k.PIXEL_PACK_BUFFER,d),k.getBufferSubData(k.PIXEL_PACK_BUFFER,0,a),k.deleteBuffer(d),k.deleteSync(p),a}else throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)},this.copyFramebufferToTexture=function(e,t=null,n=0){let r=2**-n,i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=t===null?0:t.x,s=t===null?0:t.y;ze.setTexture2D(e,0),k.copyTexSubImage2D(k.TEXTURE_2D,n,0,0,o,s,i,a),A.unbindTexture()};let Nt=k.createFramebuffer(),Pt=k.createFramebuffer();this.copyTextureToTexture=function(e,t,n=null,r=null,i=0,a=0){let o,s,c,l,u,d,f,p,m,h=e.isCompressedTexture?e.mipmaps[a]:e.image;if(n!==null)o=n.max.x-n.min.x,s=n.max.y-n.min.y,c=n.isBox3?n.max.z-n.min.z:1,l=n.min.x,u=n.min.y,d=n.isBox3?n.min.z:0;else{let t=2**-i;o=Math.floor(h.width*t),s=Math.floor(h.height*t),c=e.isDataArrayTexture?h.depth:e.isData3DTexture?Math.floor(h.depth*t):1,l=0,u=0,d=0}r===null?(f=0,p=0,m=0):(f=r.x,p=r.y,m=r.z);let g=rt.convert(t.format),_=rt.convert(t.type),v;t.isData3DTexture?(ze.setTexture3D(t,0),v=k.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(ze.setTexture2DArray(t,0),v=k.TEXTURE_2D_ARRAY):(ze.setTexture2D(t,0),v=k.TEXTURE_2D),A.activeTexture(k.TEXTURE0),A.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,t.flipY),A.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),A.pixelStorei(k.UNPACK_ALIGNMENT,t.unpackAlignment);let y=A.getParameter(k.UNPACK_ROW_LENGTH),b=A.getParameter(k.UNPACK_IMAGE_HEIGHT),x=A.getParameter(k.UNPACK_SKIP_PIXELS),S=A.getParameter(k.UNPACK_SKIP_ROWS),C=A.getParameter(k.UNPACK_SKIP_IMAGES);A.pixelStorei(k.UNPACK_ROW_LENGTH,h.width),A.pixelStorei(k.UNPACK_IMAGE_HEIGHT,h.height),A.pixelStorei(k.UNPACK_SKIP_PIXELS,l),A.pixelStorei(k.UNPACK_SKIP_ROWS,u),A.pixelStorei(k.UNPACK_SKIP_IMAGES,d);let w=e.isDataArrayTexture||e.isData3DTexture,T=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=Pe.get(e),r=Pe.get(t),h=Pe.get(n.__renderTarget),g=Pe.get(r.__renderTarget);A.bindFramebuffer(k.READ_FRAMEBUFFER,h.__webglFramebuffer),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(k.framebufferTextureLayer(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,Pe.get(e).__webglTexture,i,d+n),k.framebufferTextureLayer(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,Pe.get(t).__webglTexture,a,m+n)),k.blitFramebuffer(l,u,o,s,f,p,o,s,k.DEPTH_BUFFER_BIT,k.NEAREST);A.bindFramebuffer(k.READ_FRAMEBUFFER,null),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Pe.has(e)){let n=Pe.get(e),r=Pe.get(t);A.bindFramebuffer(k.READ_FRAMEBUFFER,Nt),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,Pt);for(let e=0;e<c;e++)w?k.framebufferTextureLayer(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):k.framebufferTexture2D(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,n.__webglTexture,i),T?k.framebufferTextureLayer(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):k.framebufferTexture2D(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,r.__webglTexture,a),i===0?T?k.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):k.copyTexSubImage2D(v,a,f,p,l,u,o,s):k.blitFramebuffer(l,u,o,s,f,p,o,s,k.COLOR_BUFFER_BIT,k.NEAREST);A.bindFramebuffer(k.READ_FRAMEBUFFER,null),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?k.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?k.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):k.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?k.texSubImage2D(k.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?k.compressedTexSubImage2D(k.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):k.texSubImage2D(k.TEXTURE_2D,a,f,p,o,s,g,_,h);A.pixelStorei(k.UNPACK_ROW_LENGTH,y),A.pixelStorei(k.UNPACK_IMAGE_HEIGHT,b),A.pixelStorei(k.UNPACK_SKIP_PIXELS,x),A.pixelStorei(k.UNPACK_SKIP_ROWS,S),A.pixelStorei(k.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&k.generateMipmap(v),A.unbindTexture()},this.initRenderTarget=function(e){Pe.get(e).__webglFramebuffer===void 0&&ze.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?ze.setTextureCube(e,0):e.isData3DTexture?ze.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?ze.setTexture2DArray(e,0):ze.setTexture2D(e,0),A.unbindTexture()},this.resetState=function(){O=0,ee=0,te=null,A.reset(),it.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return vn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorSpace=Sr._getDrawingBufferColorSpace(e),t.unpackColorSpace=Sr._getUnpackColorSpace()}};d(),_();function Xg(e){return i()?(S(e),!0):!1}function Zg(){let e=new Set,t=t=>{e.delete(t)};return{on:n=>{e.add(n);let r=()=>t(n);return Xg(r),{off:r}},off:t,trigger:(...t)=>Promise.all(Array.from(e).map(e=>e(...t))),clear:()=>{e.clear()}}}var Qg=new WeakMap,$g=(...e)=>{let t=e[0],r=O()?.proxy;if(r==null&&!ee())throw Error(`injectLocal must be called in setup`);return r&&Qg.has(r)&&t in Qg.get(r)?Qg.get(r)[t]:n(...e)};function e_(e,t){let n=O()?.proxy;if(n==null)throw Error(`provideLocal must be called in setup`);Qg.has(n)||Qg.set(n,Object.create(null));let r=Qg.get(n);return r[e]=t,s(e,t)}function t_(e,t){let n=t?.injectionKey||Symbol(e.name||`InjectionState`),r=t?.defaultValue;return[(...t)=>{let r=e(...t);return e_(n,r),r},()=>$g(n,r)]}var n_=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var r_=Object.prototype.toString,i_=e=>r_.call(e)===`[object Object]`,a_=()=>{};function o_(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}function s_(e,t={}){let n,r,i=a_,a=e=>{clearTimeout(e),i(),i=a_},o;return s=>{let c=oe(e),l=oe(t.maxWait);return n&&a(n),c<=0||l!==void 0&&l<=0?(r&&=(a(r),void 0),Promise.resolve(s())):new Promise((e,u)=>{i=t.rejectOnCancel?u:e,o=s,l&&!r&&(r=setTimeout(()=>{n&&a(n),r=void 0,e(o())},l)),n=setTimeout(()=>{r&&a(r),r=void 0,e(s())},c)})}}function c_(e,t=!1,n=`Timeout`){return new Promise((r,i)=>{setTimeout(t?()=>i(n):r,e)})}function l_(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function u_(e){return Array.isArray(e)?e:[e]}function d_(e){return e||O()}function f_(e,t=200,n={}){return o_(s_(t,n),e)}function p_(e,t=200,n={}){let r=w(oe(e)),i=f_(()=>{r.value=e.value},t,n);return le(e,()=>i()),E(r)}function m_(t,n=!0,r){d_(r)?f(t,r):n?t():e(t)}function h_(e,t=1e3,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=null,o=g(!1);function s(){a&&=(clearInterval(a),null)}function c(){o.value=!1,s()}function l(){let n=oe(t);n<=0||(o.value=!0,i&&e(),s(),o.value&&(a=setInterval(e,n)))}return r&&n_&&l(),(y(t)||typeof t==`function`)&&Xg(le(t,()=>{o.value&&n_&&l()})),Xg(c),{isActive:E(o),pause:c,resume:l}}function g_(e,t,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=g(!1),o;function s(){o&&=(clearTimeout(o),void 0)}function c(){a.value=!1,s()}function l(...n){i&&e(),s(),a.value=!0,o=setTimeout(()=>{a.value=!1,o=void 0,e(...n)},oe(t))}return r&&(a.value=!0,n_&&l()),Xg(c),{isPending:E(a),start:l,stop:c}}function __(e=1e3,t={}){let{controls:n=!1,callback:r}=t,i=g_(r??a_,e,t),a=x(()=>!i.isPending.value);return n?{ready:a,...i}:a}function v_(e,t,n){return le(e,t,{...n,immediate:!0})}d(),_(),init_runtime_dom_esm_bundler();var y_=n_?window:void 0;n_&&window.document,n_&&window.navigator,n_&&window.location;function b_(e){let t=oe(e);return t?.$el??t}function x_(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=x(()=>{let t=u_(oe(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),a=v_(()=>[i.value?.map(e=>b_(e))??[y_].filter(e=>e!=null),u_(oe(i.value?e[1]:e[0])),u_(D(i.value?e[2]:e[1])),oe(i.value?e[3]:e[2])],([e,i,a,o])=>{if(n(),!e?.length||!i?.length||!a?.length)return;let s=i_(o)?{...o}:o;t.push(...e.flatMap(e=>i.flatMap(t=>a.map(n=>r(e,t,n,s)))))},{flush:`post`});return Xg(n),()=>{a(),n()}}function S_(){let e=g(!1),t=O();return t&&f(()=>{e.value=!0},t),e}function C_(e){let t=S_();return x(()=>(t.value,!!e()))}function w_(e,t={}){let{immediate:n=!0,fpsLimit:r=void 0,window:i=y_,once:a=!1}=t,o=g(!1),s=x(()=>r?1e3/oe(r):null),c=0,u=null;function d(t){if(!o.value||!i)return;c||=t;let n=t-c;if(s.value&&n<s.value){u=i.requestAnimationFrame(d);return}if(c=t,e({delta:n,timestamp:t}),a){o.value=!1,u=null;return}u=i.requestAnimationFrame(d)}function f(){!o.value&&i&&(o.value=!0,c=0,u=i.requestAnimationFrame(d))}function p(){o.value=!1,u!=null&&i&&(i.cancelAnimationFrame(u),u=null)}return n&&f(),Xg(p),{isActive:l(o),pause:p,resume:f}}var T_=Symbol(`vueuse-ssr-width`);function E_(){let e=ee()?$g(T_,null):null;return typeof e==`number`?e:void 0}function D_(e,t={}){let{window:n=y_,ssrWidth:r=E_()}=t,i=C_(()=>n&&`matchMedia`in n&&typeof n.matchMedia==`function`),a=g(typeof r==`number`),o=g(),s=g(!1);return ue(()=>{if(a.value){a.value=!i.value,s.value=oe(e).split(`,`).some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||i);return n&&a&&(a=r>=l_(n[1])),i&&a&&(a=r<=l_(i[1])),t?!a:a});return}i.value&&(o.value=n.matchMedia(oe(e)),s.value=o.value.matches)}),x_(o,`change`,e=>{s.value=e.matches},{passive:!0}),x(()=>s.value)}function O_(e={}){let{window:t=y_}=e,n=g(1),r=D_(()=>`(resolution: ${n.value}dppx)`,e),i=a_;return t&&(i=v_(r,()=>n.value=t.devicePixelRatio)),{pixelRatio:l(n),stop:i}}function k_(e,t,n={}){let{window:r=y_,...i}=n,a,o=C_(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=le(x(()=>{let t=oe(e);return Array.isArray(t)?t.map(e=>b_(e)):[b_(t)]}),e=>{if(s(),o.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),l=()=>{s(),c()};return Xg(l),{isSupported:o,stop:l}}function A_(e,t={width:0,height:0},n={}){let{window:r=y_,box:i=`content-box`}=n,a=x(()=>(b_(e)?.namespaceURI)?.includes(`svg`)),o=g(t.width),s=g(t.height),{stop:c}=k_(e,([t])=>{let n=i===`border-box`?t.borderBoxSize:i===`content-box`?t.contentBoxSize:t.devicePixelContentBoxSize;if(r&&a.value){let t=b_(e);if(t){let e=t.getBoundingClientRect();o.value=e.width,s.value=e.height}}else if(n){let e=u_(n);o.value=e.reduce((e,{inlineSize:t})=>e+t,0),s.value=e.reduce((e,{blockSize:t})=>e+t,0)}else o.value=t.contentRect.width,s.value=t.contentRect.height},n);m_(()=>{let n=b_(e);n&&(o.value=`offsetWidth`in n?n.offsetWidth:t.width,s.value=`offsetHeight`in n?n.offsetHeight:t.height)});let l=le(()=>b_(e),e=>{o.value=e?t.width:0,s.value=e?t.height:0});function u(){c(),l()}return{width:o,height:s,stop:u}}function j_(e){let t=g(0);if(typeof performance>`u`)return t;let n=e?.every??10,r=performance.now(),i=0;return w_(()=>{if(i+=1,i>=n){let e=performance.now(),n=e-r;t.value=Math.round(1e3/(n/i)),r=e,i=0}}),t}function M_(e={}){let t=w(),n=C_(()=>typeof performance<`u`&&`memory`in performance);if(n.value){let{interval:n=1e3}=e;h_(()=>{t.value=performance.memory},n,{immediate:e.immediate,immediateCallback:e.immediateCallback})}return{isSupported:n,memory:t}}function N_(e={}){let{window:t=y_,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:i=!0,includeScrollbar:a=!0,type:o=`inner`}=e,s=g(n),c=g(r),l=()=>{if(t)if(o===`outer`)s.value=t.outerWidth,c.value=t.outerHeight;else if(o===`visual`&&t.visualViewport){let{width:e,height:n,scale:r}=t.visualViewport;s.value=Math.round(e*r),c.value=Math.round(n*r)}else a?(s.value=t.innerWidth,c.value=t.innerHeight):(s.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};l(),m_(l);let u={passive:!0};return x_(`resize`,l,u),t&&o===`visual`&&t.visualViewport&&x_(t.visualViewport,`resize`,l,u),i&&le(D_(`(orientation: portrait)`),()=>l()),{width:s,height:c}}function P_(e){let t=(e?.replace(/([A-Z])+/g,F_))?.split(/(?=[A-Z])|[\.\-\s_]/).map(e=>e.toLowerCase())??[];return t.length===0?``:t.length===1?t[0]:t.reduce((e,t)=>`${e}${t.charAt(0).toUpperCase()}${t.slice(1)}`)}function F_(e){if(!e||e.length===0)return``;let t=e.toLowerCase();return t.substring(0,1).toUpperCase()+t.substring(1,t.length)}new Map(Object.entries({Æ:`Ae`,Ð:`D`,Ø:`O`,Þ:`Th`,ß:`ss`,æ:`ae`,ð:`d`,ø:`o`,þ:`th`,Đ:`D`,đ:`d`,Ħ:`H`,ħ:`h`,ı:`i`,IJ:`IJ`,ij:`ij`,ĸ:`k`,Ŀ:`L`,ŀ:`l`,Ł:`L`,ł:`l`,ʼn:`'n`,Ŋ:`N`,ŋ:`n`,Œ:`Oe`,œ:`oe`,Ŧ:`T`,ŧ:`t`,ſ:`s`}));function I_(e,t){if(Object.is(e,t))return!0;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=Reflect.ownKeys(e),r=Reflect.ownKeys(t);if(n.length!==r.length)return!1;for(let r=0;r<n.length;r++)if(!Reflect.has(t,n[r])||!I_(e[n[r]],t[n[r]]))return!1;return!0}function L_(e){return typeof e==`function`}function R_(e){return typeof e==`number`&&!Number.isNaN(e)}function z_(e){return V_(e,`[object Object]`)}function B_(e){return typeof e==`string`}function V_(e,t){return Object.prototype.toString.call(e)===t}function H_(e){return e===void 0}var U_=class{nativeEvent;NONE=0;CAPTURING_PHASE=1;AT_TARGET=2;BUBBLING_PHASE=3;relatedTarget=null;get altKey(){return this.getFromNative(`altKey`,!1)}get button(){return this.getFromNative(`button`,0)}get buttons(){return this.getFromNative(`buttons`,0)}get clientX(){return this.getFromNative(`clientX`,0)}get clientY(){return this.getFromNative(`clientY`,0)}get ctrlKey(){return this.getFromNative(`ctrlKey`,!1)}get layerX(){return this.getFromNative(`layerX`,0)}get layerY(){return this.getFromNative(`layerY`,0)}get metaKey(){return this.getFromNative(`metaKey`,!1)}get movementX(){return this.getFromNative(`movementX`,0)}get movementY(){return this.getFromNative(`movementY`,0)}get offsetX(){return this.getFromNative(`offsetX`,0)}get offsetY(){return this.getFromNative(`offsetY`,0)}get pageX(){return this.getFromNative(`pageX`,0)}get pageY(){return this.getFromNative(`pageY`,0)}get screenX(){return this.getFromNative(`screenX`,0)}get screenY(){return this.getFromNative(`screenY`,0)}get shiftKey(){return this.getFromNative(`shiftKey`,!1)}get x(){return this.getFromNative(`x`,0)}get y(){return this.getFromNative(`y`,0)}get detail(){return this.getFromNative(`detail`,0)}get view(){return this.getFromNative(`view`,null)}get which(){return this.getFromNative(`which`,0)}get cancelBubble(){return this.getFromNative(`cancelBubble`,!1)}get composed(){return this.getFromNative(`composed`,!1)}get eventPhase(){return this.getFromNative(`eventPhase`,0)}get isTrusted(){return this.getFromNative(`isTrusted`,!1)}get returnValue(){return this.getFromNative(`returnValue`,!1)}get timeStamp(){return this.getFromNative(`timeStamp`,0)}get cancelable(){return this.getFromNative(`cancelable`,!1)}get defaultPrevented(){return this.getFromNative(`defaultPrevented`,!1)}constructor(e){this.nativeEvent=e}getFromNative(e,t){return e in this.nativeEvent?this.nativeEvent[e]:t}},W_=new P,G_=class e extends U_{type;bubbles;internalPointer;intersection;camera;currentObject;object;propagationState;get pointerId(){return this.internalPointer.id}get pointerType(){return this.internalPointer.type}get pointerState(){return this.internalPointer.state}get distance(){return this.intersection.distance}get distanceToRay(){return this.intersection.distanceToRay}get point(){return this.intersection.point}get index(){return this.intersection.index}get face(){return this.intersection.face}get faceIndex(){return this.intersection.faceIndex}get uv(){return this.intersection.uv}get uv1(){return this.intersection.uv1}get normal(){return this.intersection.normal}get instanceId(){return this.intersection.instanceId}get pointOnLine(){return this.intersection.pointOnLine}get batchId(){return this.intersection.batchId}get pointerPosition(){return this.intersection.pointerPosition}get pointerQuaternion(){return this.intersection.pointerQuaternion}get pointOnFace(){return this.intersection.pointOnFace}get localPoint(){return this.intersection.localPoint}get details(){return this.intersection.details}get target(){return this.object}get currentTarget(){return this.currentObject}get eventObject(){return this.currentObject}get srcElement(){return this.currentObject}_pointer;get pointer(){return this._pointer??=(W_.copy(this.intersection.point).project(this.camera),new N(W_.x,W_.y)),this._pointer}_ray;get ray(){if(this._ray!=null)return this._ray;switch(this.intersection.details.type){case`screen-ray`:case`ray`:case`sphere`:return this._ray=new oo(this.intersection.pointerPosition,new P(0,0,-1).applyQuaternion(this.intersection.pointerQuaternion));case`lines`:return this._ray=new oo(this.intersection.details.line.start,this.intersection.details.line.end.clone().sub(this.intersection.details.line.start).normalize())}}_intersections=[];get intersections(){return this._intersections??=[{...this.intersection,eventObject:this.currentObject}],this._intersections}_unprojectedPoint;get unprojectedPoint(){if(this._unprojectedPoint==null){let e=this.pointer;this._unprojectedPoint=new P(e.x,e.y,0).unproject(this.camera)}return this._unprojectedPoint}get stopped(){return this.propagationState.stoppedImmediate||this.propagationState.stopped}get stoppedImmediate(){return this.propagationState.stoppedImmediate}get delta(){throw Error(`not supported`)}constructor(e,t,n,r,i,a,o=i.object,s=o,c={stopped:!t,stoppedImmediate:!1}){super(n),this.type=e,this.bubbles=t,this.internalPointer=r,this.intersection=i,this.camera=a,this.currentObject=o,this.object=s,this.propagationState=c}stopPropagation(){this.propagationState.stopped=!0}stopImmediatePropagation(){this.propagationState.stoppedImmediate=!0}retarget(t){return new e(this.type,this.bubbles,this.nativeEvent,this.internalPointer,this.intersection,this.camera,t,this.target,this.propagationState)}},K_=class e extends G_{get deltaX(){return this.nativeEvent.deltaX}get deltaY(){return this.nativeEvent.deltaY}get deltaZ(){return this.nativeEvent.deltaZ}constructor(e,t,n,r,i,a){super(`wheel`,!0,e,t,n,r,i,a)}retarget(t){return new e(this.nativeEvent,this.internalPointer,this.intersection,this.camera,t,this.target)}};function q_(e){J_(e,e.currentObject)}function J_(e,t){if(t==null)return;let n=Z_(t,e.type);if(n!=null&&n.length>0){let r=e.retarget(t),i=n.length;for(let e=0;e<i&&!r.stoppedImmediate;e++)n[e](r)}e.stopped||J_(e,t.parent)}var Y_={click:`onClick`,contextmenu:`onContextMenu`,dblclick:`onDoubleClick`,pointercancel:`onPointerCancel`,pointerdown:`onPointerDown`,pointerenter:`onPointerEnter`,pointerleave:`onPointerLeave`,pointermove:`onPointerMove`,pointerout:`onPointerOut`,pointerover:`onPointerOver`,pointerup:`onPointerUp`,wheel:`onWheel`},X_=Object.keys(Y_);function Z_(e,t){if(e._listeners!=null&&t in e._listeners)return e._listeners[t];let n;if(e.isVoidObject&&t===`click`&&e.parent?.__r3f!=null&&(n=e.parent.__r3f.root.getState().onPointerMissed),e.__r3f!=null&&(n=e.__r3f.handlers[Y_[t]]),n!=null)return[n]}var Q_=new Rl(1e10),$_=new Map;function ev(e){let t=$_.get(e);return t??(t=new bo(Q_),t.isVoidObject=!0,t.parent=e,t.pointerEventsOrder=-1/0,$_.set(e,t)),t}function tv(e,t,n){let r=t.normal??t.face?.normal;return r==null?!1:(e.setFromNormalAndCoplanarPoint(r,t.localPoint),e.applyMatrix4(n),!0)}function nv(e,t,n){if(t===`none`||t===`listener`&&!e)return!1;if(n===`all`)return!0;if(typeof n==`function`)return({id:e,type:t,state:r})=>n(e,t,r);let r,i;return`deny`in n?(i=!0,r=n.deny):(i=!1,r=n.allow),Array.isArray(r)?e=>rv(r.includes(e.type),i):e=>rv(r===e.type,i)}function rv(e,t){return t?!e:e}function iv(e,t,n,r=!1,i,a,o){let s=r||av(e,t),c=t.pointerEvents??i,l=c??t.defaultPointerEvents??`listener`,u=t.pointerEventsType??a??`all`,d=t.pointerEventsOrder??o??0,f=nv(s,l,u),p=n.length;if(p===1)(f===!0||typeof f==`function`&&f(n[0]))&&ov(n[0],t,l,u,d);else if(f===!0)for(let e=0;e<p;e++)ov(n[e],t,l,u,d);else if(typeof f==`function`)for(let e=0;e<p;e++){let r=n[e];f(r)&&ov(r,t,l,u,d)}if(t.children.length===0||t.intersectChildren===!1)return;let m=t.interactableDescendants??t.children,h=m.length;for(let t=0;t<h;t++)iv(e,m[t],n,s,c,u,d)}function av(e,t){if(t.ancestorsHaveListeners||e===`pointer`&&t.ancestorsHavePointerListeners||e===`wheel`&&t.ancestorsHaveWheelListeners||t.__r3f!=null&&t.__r3f?.eventCount>0&&(e===`wheel`&&t.__r3f.handlers.onWheel!=null||e===`pointer`&&Object.keys(t.__r3f.handlers).some(e=>e!=`onWheel`)))return!0;if(t._listeners==null)return!1;if(e===`wheel`){let e=t._listeners.wheel;return e!=null&&e.length>0}let n=Object.entries(t._listeners),r=n.length;for(let e=0;e<r;e++){let t=n[e];if(t[0]!==`wheel`&&X_.includes(t[0])&&t[1]!=null&&t[1].length>0)return!0}return!1}function ov({intersector:e,options:t},n,r,i,a){t.filter?.(n,r,i,a)!==!1&&e.executeIntersection(n,a)}function sv(e,t,{customSort:n=cv}={},r){let i,a,o,s=e.length;for(let c=0;c<s;c++){let s=e[c];if(r?.(s)===!1)continue;let l=t?.[c];(i==null||n(s,l,i,a)<0)&&(o=c,i=s,a=l)}return o}function cv(e,t=0,n,r=0){return t==r?e.distance-n.distance:r-t}var lv=1e7;function uv(e,t,n,r,i,a=0){let o=t.direction.clone().multiplyScalar(lv),s=lv;return{distance:s+a,object:ev(e),point:o,normal:t.origin.clone().sub(o).normalize(),details:n(o,s),pointerPosition:r,pointerQuaternion:i,pointOnFace:o,localPoint:o}}function dv(e,t,n){for(;n>0;)e.push(t),--n}var fv=Symbol(`buttonsDownTime`),pv=Symbol(`buttonsClickTime`);globalThis.pointerEventspointerMap??=new Map,fi.prototype.setPointerCapture=function(e){mv(e)?.setCapture(this)},fi.prototype.releasePointerCapture=function(e){let t=mv(e);t==null||!t.hasCaptured(this)||t.setCapture(void 0)},fi.prototype.hasPointerCapture=function(e){return mv(e)?.hasCaptured(this)??!1};function mv(e){return globalThis.pointerEventspointerMap?.get(e)}var hv=class{id;type;state;intersector;getCamera;onMoveCommited;parentSetPointerCapture;parentReleasePointerCapture;options;prevIntersection;intersection;prevEnabled=!0;enabled=!0;wheelIntersection;pointerEntered=[];pointerEnteredHelper=[];pointerCapture;buttonsDownTime=new Map;buttonsDown=new Set;wasMoved=!1;onFirstMove=[];constructor(e,t,n,r,i,a,o,s,c={}){this.id=e,this.type=t,this.state=n,this.intersector=r,this.getCamera=i,this.onMoveCommited=a,this.parentSetPointerCapture=o,this.parentReleasePointerCapture=s,this.options=c,globalThis.pointerEventspointerMap?.set(e,this)}getPointerCapture(){return this.pointerCapture}hasCaptured(e){return this.pointerCapture?.object===e}setCapture(e){this.pointerCapture?.object!==e&&(this.clearPointerCapture(),e!=null&&this.intersection!=null&&(this.pointerCapture={object:e,intersection:this.intersection},this.parentSetPointerCapture?.()))}getButtonsDown(){return this.buttonsDown}getIntersection(){return this.intersection}getEnabled(){return this.enabled}setEnabled(e,t,n=!0){this.enabled!==e&&(!e&&this.pointerCapture!=null&&this.clearPointerCapture(),this.enabled=e,n&&this.commit(t,!1))}computeIntersection(e,t,n){return this.pointerCapture==null?(this.intersector.startIntersection(n),iv(e,t,[this]),this.intersector.finalizeIntersection(t)):this.intersector.intersectPointerCapture(this.pointerCapture,n)}setIntersection(e){this.intersection=e}commit(e,t){let n=this.getCamera(),r=this.prevEnabled?this.prevIntersection:void 0,i=this.enabled?this.intersection:void 0;r!=null&&r.object!=i?.object&&q_(new G_(`pointerout`,!0,e,this,r,n));let a=this.pointerEntered;this.pointerEntered=[],this.pointerEnteredHelper.length=0,gv(i?.object,this.pointerEntered,a,this.pointerEnteredHelper);let o=a.length;for(let t=0;t<o;t++){let i=a[t];q_(new G_(`pointerleave`,!1,e,this,r,n,i))}i!=null&&r?.object!=i.object&&q_(new G_(`pointerover`,!0,e,this,i,n));for(let t=this.pointerEnteredHelper.length-1;t>=0;t--){let r=this.pointerEnteredHelper[t];q_(new G_(`pointerenter`,!1,e,this,i,n,r))}if(t&&i!=null&&q_(new G_(`pointermove`,!0,e,this,i,n)),this.prevIntersection=this.intersection,this.prevEnabled=this.enabled,!this.wasMoved&&this.intersector.isReady()){this.wasMoved=!0;let e=this.onFirstMove.length;for(let t=0;t<e;t++)this.onFirstMove[t](n);this.onFirstMove.length=0}this.onMoveCommited?.(this)}move(e,t){this.intersection=this.computeIntersection(`pointer`,e,t),this.commit(t,!0)}over(e,t){this.wasMoved||(this.intersection=this.computeIntersection(`pointer`,e,t),this.commit(t,!1))}emitMove(e){this.intersection!=null&&q_(new G_(`pointermove`,!0,e,this,this.intersection,this.getCamera()))}down(e){if(this.buttonsDown.add(e.button),!this.enabled)return;if(!this.wasMoved){this.onFirstMove.push(this.down.bind(this,e));return}if(this.intersection==null)return;q_(new G_(`pointerdown`,!0,e,this,this.intersection,this.getCamera()));let{object:t}=this.intersection;t[fv]??=new Map,t[fv].set(e.button,e.timeStamp),this.buttonsDownTime.set(e.button,e.timeStamp)}up(e){if(this.buttonsDown.delete(e.button),!this.enabled)return;if(!this.wasMoved){this.onFirstMove.push(this.up.bind(this,e));return}if(this.intersection==null)return;let{clickThesholdMs:t,contextMenuButton:n=2,dblClickThresholdMs:r=500,clickThresholdMs:i=t??300}=this.options;this.clearPointerCapture();let a=_v(this.buttonsDownTime,this.intersection.object[fv],e.button,e.timeStamp,i),o=this.getCamera();if(a&&e.button===n&&q_(new G_(`contextmenu`,!0,e,this,this.intersection,o)),q_(new G_(`pointerup`,!0,e,this,this.intersection,o)),!a||e.button===n)return;q_(new G_(`click`,!0,e,this,this.intersection,o));let{object:s}=this.intersection,c=s[pv]??=new Map,l=c.get(e.button);if(l==null||e.timeStamp-l>r){c.set(e.button,e.timeStamp);return}q_(new G_(`dblclick`,!0,e,this,this.intersection,o)),c.delete(e.button)}cancel(e){this.buttonsDown.clear(),this.buttonsDownTime.clear(),this.clearPointerCapture(),this.onFirstMove.length=0,!(!this.enabled||!this.wasMoved||this.intersection==null)&&q_(new G_(`pointercancel`,!0,e,this,this.intersection,this.getCamera()))}wheel(e,t,n=!1){if(!this.enabled)return;if(!this.wasMoved&&n){this.onFirstMove.push(this.wheel.bind(this,e,t,n));return}n||(this.wheelIntersection=this.computeIntersection(`wheel`,e,t));let r=n?this.intersection:this.wheelIntersection;r!=null&&q_(new K_(t,this,r,this.getCamera()))}emitWheel(e,t=!1){if(!this.enabled)return;if(!this.wasMoved&&t){this.onFirstMove.push(this.emitWheel.bind(this,e,t));return}let n=t?this.intersection:this.wheelIntersection;n!=null&&q_(new K_(e,this,n,this.getCamera()))}exit(e){(this.buttonsDown.size>0||this.pointerCapture!=null)&&this.cancel(e),this.wasMoved&&(this.intersection=void 0,this.commit(e,!1)),this.onFirstMove.length=0,this.wasMoved=!1}clearPointerCapture(){this.pointerCapture!=null&&(this.parentReleasePointerCapture?.(),this.pointerCapture=void 0)}};function gv(e,t,n,r){if(e==null)return;let i=n.indexOf(e);i==-1?r.push(e):n.splice(i,1),t.push(e),gv(e.parent,t,n,r)}function _v(e,t,n,r,i){if(t==null)return!1;let a=t.get(n);return!(a==null||r-a>i||a!=e.get(n))}var vv=new Li,yv=new Li,bv=new N,xv=new N,Sv=new N,Cv=new P,wv=new F,Tv=new P;function Ev(e,t,n){Tv.copy(t).applyMatrix4(wv.copy(n.matrixWorld).invert());let r=n.geometry.attributes.uv;if(r==null||!(r instanceof sa))return!1;let i;return Dv(n,(e,t,a)=>{n.getVertexPosition(e,vv.a),n.getVertexPosition(t,vv.b),n.getVertexPosition(a,vv.c);let o=vv.closestPointToPoint(Tv,Cv).distanceTo(Tv);i!=null&&o>=i||(i=o,yv.copy(vv),bv.fromBufferAttribute(r,e),xv.fromBufferAttribute(r,t),Sv.fromBufferAttribute(r,a))}),i==null?!1:(yv.closestPointToPoint(Tv,Cv),yv.getInterpolation(Cv,bv,xv,Sv,e),!0)}function Dv(e,t){let n=e.geometry.drawRange;if(e.geometry.index!=null){let r=e.geometry.index,i=Math.max(0,n.start),a=Math.min(r.count,n.start+n.count);for(let e=i;e<a;e+=3)t(r.getX(e),r.getX(e+1),r.getX(e+2));return}let r=e.geometry.attributes.position;if(r==null)return;let i=Math.max(0,n.start),a=Math.min(r.count,n.start+n.count);for(let e=i;e<a;e+=3)t(e,e+1,e+2)}new F,new Kf,new P,new Xo,new oo,new N,new P(0,0,0),new P(0,0,1);var Ov=new F,kv=new P;new P(0,0,-1),new Xo;var Av=new N,jv=new P,Mv=class{prepareTransformation;options;raycaster=new Af;cameraQuaternion=new mr;fromPosition=new P;fromQuaternion=new mr;coords=new N;viewPlane=new Xo;intersects=[];pointerEventsOrders=[];constructor(e,t){this.prepareTransformation=e,this.options=t}isReady(){return!0}intersectPointerCapture({intersection:e,object:t},n){let r=e.details;if(r.type!=`screen-ray`)throw Error(`unable to process a pointer capture of type "${e.details.type}" with a camera ray intersector`);if(!this.startIntersection(n))return e;this.viewPlane.constant-=r.distanceViewPlane;let i=this.raycaster.ray.intersectPlane(this.viewPlane,new P);if(i==null)return e;e.object.updateWorldMatrix(!0,!1),tv(this.viewPlane,e,e.object.matrixWorld);let a=e.uv;return e.object instanceof bo&&Ev(Av,i,e.object)&&(a=Av.clone()),{...e,details:{...r,direction:this.raycaster.ray.direction.clone(),screenPoint:this.coords.clone()},uv:a,object:t,point:i,pointOnFace:i,pointerPosition:this.raycaster.ray.origin.clone(),pointerQuaternion:this.cameraQuaternion.clone()}}startIntersection(e){let t=this.prepareTransformation(e,this.coords);return t==null?!1:(t.updateWorldMatrix(!0,!1),t.matrixWorld.decompose(this.fromPosition,this.fromQuaternion,kv),this.raycaster.setFromCamera(this.coords,t),this.viewPlane.setFromNormalAndCoplanarPoint(t.getWorldDirection(jv),this.raycaster.ray.origin),!0)}executeIntersection(e,t){let n=this.intersects.length;e.raycast(this.raycaster,this.intersects),dv(this.pointerEventsOrders,t,this.intersects.length-n)}finalizeIntersection(e){let t=this.fromPosition.clone(),n=this.cameraQuaternion.clone(),r=this.raycaster.ray.direction.clone(),i=sv(this.intersects,this.pointerEventsOrders,this.options),a=i==null?void 0:this.intersects[i];return this.intersects.length=0,this.pointerEventsOrders.length=0,a==null?uv(e,this.raycaster.ray,(e,t)=>({type:`screen-ray`,distanceViewPlane:t,screenPoint:this.coords.clone(),direction:r}),t,n):(a.object.updateWorldMatrix(!0,!1),Ov.copy(a.object.matrixWorld).invert(),Object.assign(a,{details:{type:`screen-ray`,distanceViewPlane:this.viewPlane.distanceToPoint(a.point),screenPoint:this.coords.clone(),direction:r},pointOnFace:a.point,pointerPosition:t,pointerQuaternion:n,localPoint:a.point.clone().applyMatrix4(Ov)}))}};new P,new N,new F,new P,new mr,new Xo,new ba,new P,new P,new P,new P(1e-4,1e-4,1e-4),new F;var Nv=23412;function Pv(){return Nv++}function Fv(e,t,n){if(!(t instanceof globalThis.MouseEvent))return n.set(0,0);let{width:r,height:i,top:a,left:o}=e.getBoundingClientRect(),s=t.clientX-o,c=t.clientY-a;return n.set(s/r*2-1,-(c/i)*2+1)}function Iv(e,t,n,r){return Lv(e,typeof t==`function`?t:()=>t,n,Fv.bind(null,e),e.setPointerCapture.bind(e),t=>{e.hasPointerCapture(t)&&e.releasePointerCapture(t)},{pointerTypePrefix:`screen-`,...r})}function Lv(e,t,n,r,i,a,o={}){let s=o?.forwardPointerCapture??!0,c=new Map,l=o.pointerTypePrefix??`forward-`,u=(e,u)=>{let d=c.get(e.pointerId);return d??(d=new hv(Pv(),`${l}${e.pointerType}`,e.pointerState,new Mv((e,n)=>(r(e,n),t()),o),t,void 0,s?i.bind(null,e.pointerId):void 0,s?a.bind(null,e.pointerId):void 0,o),u!=`move`&&u!=`wheel`&&(d.setIntersection(d.computeIntersection(`pointer`,n,e)),d.commit(e,!1)),c.set(e.pointerId,d),d)},d=new Map,f=new Map,p=[],m=[],h=(e,t,r)=>{switch(e){case`move`:r.move(n,t);return;case`over`:r.move(n,t);return;case`wheel`:r.wheel(n,t);return;case`cancel`:r.cancel(t);return;case`down`:if(!Rv(t))return;r.down(t);return;case`up`:if(!Rv(t))return;r.up(t);return;case`exit`:f.delete(r),d.delete(r),r.exit(t);return}},g=(e,t)=>{let n=u(t,e);e===`move`&&f.set(n,t),e===`wheel`&&d.set(n,t),o.batchEvents??!0?m.push({type:e,event:t}):h(e,t,n)},_=g.bind(null,`move`),v=g.bind(null,`over`),y=g.bind(null,`cancel`),b=g.bind(null,`down`),x=g.bind(null,`up`),S=g.bind(null,`wheel`),C=g.bind(null,`exit`);return e.addEventListener(`pointermove`,_),e.addEventListener(`pointerover`,v),e.addEventListener(`pointercancel`,y),e.addEventListener(`pointerdown`,b),e.addEventListener(`pointerup`,x),e.addEventListener(`wheel`,S),e.addEventListener(`pointerleave`,C),{destroy(){e.removeEventListener(`pointermove`,_),e.removeEventListener(`pointerover`,v),e.removeEventListener(`pointercancel`,y),e.removeEventListener(`pointerdown`,b),e.removeEventListener(`pointerup`,x),e.removeEventListener(`wheel`,S),e.removeEventListener(`pointerleave`,C),f.clear(),d.clear()},update(){let e=m.length;for(let t=0;t<e;t++){let{type:e,event:n}=m[t],r=u(n,e);if(e===`move`&&(p.push(r),f.get(r)!=n)){r.emitMove(n);continue}if(e===`wheel`&&d.get(r)!=n){r.emitWheel(n);continue}h(e,n,r)}if(m.length=0,o.intersectEveryFrame??!1)for(let[e,t]of f.entries())p.includes(e)||e.move(n,t);p.length=0}}}function Rv(e){return e.button!=null}var zv=Object.create,Bv=Object.defineProperty,Vv=Object.getOwnPropertyDescriptor,Hv=Object.getOwnPropertyNames,Uv=Object.getPrototypeOf,Wv=Object.prototype.hasOwnProperty,Gv=(e,t)=>function(){return e&&(t=(0,e[Hv(e)[0]])(e=0)),t},Kv=(e,t)=>function(){return t||(0,e[Hv(e)[0]])((t={exports:{}}).exports,t),t.exports},qv=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of Hv(t))!Wv.call(e,i)&&i!==n&&Bv(e,i,{get:()=>t[i],enumerable:!(r=Vv(t,i))||r.enumerable});return e},Jv=(e,t,n)=>(n=e==null?{}:zv(Uv(e)),qv(t||!e||!e.__esModule?Bv(n,`default`,{value:e,enumerable:!0}):n,e)),Yv=Gv({"../../node_modules/.pnpm/tsup@8.4.0_@microsoft+api-extractor@7.51.1_@types+node@22.13.14__jiti@2.4.2_postcss@8.5_96eb05a9d65343021e53791dd83f3773/node_modules/tsup/assets/esm_shims.js"(){}}),Xv=Kv({"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js"(e,t){Yv(),t.exports=r;function n(e){return e instanceof Buffer?Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function r(e){if(e||={},e.circles)return i(e);let t=new Map;if(t.set(Date,e=>new Date(e)),t.set(Map,(e,t)=>new Map(a(Array.from(e),t))),t.set(Set,(e,t)=>new Set(a(Array.from(e),t))),e.constructorHandlers)for(let n of e.constructorHandlers)t.set(n[0],n[1]);let r=null;return e.proto?s:o;function a(e,i){let a=Object.keys(e),o=Array(a.length);for(let s=0;s<a.length;s++){let c=a[s],l=e[c];typeof l!=`object`||!l?o[c]=l:l.constructor!==Object&&(r=t.get(l.constructor))?o[c]=r(l,i):ArrayBuffer.isView(l)?o[c]=n(l):o[c]=i(l)}return o}function o(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return a(e,o);if(e.constructor!==Object&&(r=t.get(e.constructor)))return r(e,o);let i={};for(let a in e){if(Object.hasOwnProperty.call(e,a)===!1)continue;let s=e[a];typeof s!=`object`||!s?i[a]=s:s.constructor!==Object&&(r=t.get(s.constructor))?i[a]=r(s,o):ArrayBuffer.isView(s)?i[a]=n(s):i[a]=o(s)}return i}function s(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return a(e,s);if(e.constructor!==Object&&(r=t.get(e.constructor)))return r(e,s);let i={};for(let a in e){let o=e[a];typeof o!=`object`||!o?i[a]=o:o.constructor!==Object&&(r=t.get(o.constructor))?i[a]=r(o,s):ArrayBuffer.isView(o)?i[a]=n(o):i[a]=s(o)}return i}}function i(e){let t=[],r=[],i=new Map;if(i.set(Date,e=>new Date(e)),i.set(Map,(e,t)=>new Map(o(Array.from(e),t))),i.set(Set,(e,t)=>new Set(o(Array.from(e),t))),e.constructorHandlers)for(let t of e.constructorHandlers)i.set(t[0],t[1]);let a=null;return e.proto?c:s;function o(e,o){let s=Object.keys(e),c=Array(s.length);for(let l=0;l<s.length;l++){let u=s[l],d=e[u];if(typeof d!=`object`||!d)c[u]=d;else if(d.constructor!==Object&&(a=i.get(d.constructor)))c[u]=a(d,o);else if(ArrayBuffer.isView(d))c[u]=n(d);else{let e=t.indexOf(d);e===-1?c[u]=o(d):c[u]=r[e]}}return c}function s(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return o(e,s);if(e.constructor!==Object&&(a=i.get(e.constructor)))return a(e,s);let c={};t.push(e),r.push(c);for(let o in e){if(Object.hasOwnProperty.call(e,o)===!1)continue;let l=e[o];if(typeof l!=`object`||!l)c[o]=l;else if(l.constructor!==Object&&(a=i.get(l.constructor)))c[o]=a(l,s);else if(ArrayBuffer.isView(l))c[o]=n(l);else{let e=t.indexOf(l);e===-1?c[o]=s(l):c[o]=r[e]}}return t.pop(),r.pop(),c}function c(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return o(e,c);if(e.constructor!==Object&&(a=i.get(e.constructor)))return a(e,c);let s={};t.push(e),r.push(s);for(let o in e){let l=e[o];if(typeof l!=`object`||!l)s[o]=l;else if(l.constructor!==Object&&(a=i.get(l.constructor)))s[o]=a(l,c);else if(ArrayBuffer.isView(l))s[o]=n(l);else{let e=t.indexOf(l);e===-1?s[o]=c(l):s[o]=r[e]}}return t.pop(),r.pop(),s}}}});Yv(),Yv(),Yv();var Zv=typeof navigator<`u`,Qv=typeof window<`u`?window:typeof globalThis<`u`?globalThis:typeof global<`u`?global:{};Qv.chrome!==void 0&&Qv.chrome.devtools,Zv&&(Qv.self,Qv.top),typeof navigator<`u`&&navigator.userAgent?.toLowerCase().includes(`electron`),typeof window<`u`&&window.__NUXT__,Yv();var $v=Jv(Xv(),1),ey=/(?:^|[-_/])(\w)/g;function ty(e,t){return t?t.toUpperCase():``}function ny(e){return e&&`${e}`.replace(ey,ty)}function ry(e,t){let n=e.replace(/^[a-z]:/i,``).replace(/\\/g,`/`);n.endsWith(`index${t}`)&&(n=n.replace(`/index${t}`,t));let r=n.lastIndexOf(`/`),i=n.substring(r+1);if(t){let e=i.lastIndexOf(t);return i.substring(0,e)}return``}var iy=(0,$v.default)({circles:!0}),ay={trailing:!0};function oy(e,t=25,n={}){if(n={...ay,...n},!Number.isFinite(t))throw TypeError("Expected `wait` to be a finite number");let r,i,a=[],o,s,c=(t,r)=>(o=sy(e,t,r),o.finally(()=>{if(o=null,n.trailing&&s&&!i){let e=c(t,s);return s=null,e}}),o);return function(...e){return o?(n.trailing&&(s=e),o):new Promise(o=>{let s=!i&&n.leading;clearTimeout(i),i=setTimeout(()=>{i=null;let t=n.leading?r:c(this,e);for(let e of a)e(t);a=[]},t),s?(r=c(this,e),o(r)):a.push(o)})}}async function sy(e,t,n){return await e.apply(t,n)}var cy=Object.create,ly=Object.defineProperty,uy=Object.getOwnPropertyDescriptor,dy=Object.getOwnPropertyNames,fy=Object.getPrototypeOf,py=Object.prototype.hasOwnProperty,my=(e,t)=>function(){return e&&(t=(0,e[dy(e)[0]])(e=0)),t},hy=(e,t)=>function(){return t||(0,e[dy(e)[0]])((t={exports:{}}).exports,t),t.exports},gy=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of dy(t))!py.call(e,i)&&i!==n&&ly(e,i,{get:()=>t[i],enumerable:!(r=uy(t,i))||r.enumerable});return e},_y=(e,t,n)=>(n=e==null?{}:cy(fy(e)),gy(t||!e||!e.__esModule?ly(n,`default`,{value:e,enumerable:!0}):n,e)),R=my({"../../node_modules/.pnpm/tsup@8.4.0_@microsoft+api-extractor@7.51.1_@types+node@22.13.14__jiti@2.4.2_postcss@8.5_96eb05a9d65343021e53791dd83f3773/node_modules/tsup/assets/esm_shims.js"(){}}),vy=hy({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(e,t){R(),(function(e){var n={À:`A`,Á:`A`,Â:`A`,Ã:`A`,Ä:`Ae`,Å:`A`,Æ:`AE`,Ç:`C`,È:`E`,É:`E`,Ê:`E`,Ë:`E`,Ì:`I`,Í:`I`,Î:`I`,Ï:`I`,Ð:`D`,Ñ:`N`,Ò:`O`,Ó:`O`,Ô:`O`,Õ:`O`,Ö:`Oe`,Ő:`O`,Ø:`O`,Ù:`U`,Ú:`U`,Û:`U`,Ü:`Ue`,Ű:`U`,Ý:`Y`,Þ:`TH`,ß:`ss`,à:`a`,á:`a`,â:`a`,ã:`a`,ä:`ae`,å:`a`,æ:`ae`,ç:`c`,è:`e`,é:`e`,ê:`e`,ë:`e`,ì:`i`,í:`i`,î:`i`,ï:`i`,ð:`d`,ñ:`n`,ò:`o`,ó:`o`,ô:`o`,õ:`o`,ö:`oe`,ő:`o`,ø:`o`,ù:`u`,ú:`u`,û:`u`,ü:`ue`,ű:`u`,ý:`y`,þ:`th`,ÿ:`y`,ẞ:`SS`,ا:`a`,أ:`a`,إ:`i`,آ:`aa`,ؤ:`u`,ئ:`e`,ء:`a`,ب:`b`,ت:`t`,ث:`th`,ج:`j`,ح:`h`,خ:`kh`,د:`d`,ذ:`th`,ر:`r`,ز:`z`,س:`s`,ش:`sh`,ص:`s`,ض:`dh`,ط:`t`,ظ:`z`,ع:`a`,غ:`gh`,ف:`f`,ق:`q`,ك:`k`,ل:`l`,م:`m`,ن:`n`,ه:`h`,و:`w`,ي:`y`,ى:`a`,ة:`h`,ﻻ:`la`,ﻷ:`laa`,ﻹ:`lai`,ﻵ:`laa`,گ:`g`,چ:`ch`,پ:`p`,ژ:`zh`,ک:`k`,ی:`y`,"َ":`a`,"ً":`an`,"ِ":`e`,"ٍ":`en`,"ُ":`u`,"ٌ":`on`,"ْ":``,"٠":`0`,"١":`1`,"٢":`2`,"٣":`3`,"٤":`4`,"٥":`5`,"٦":`6`,"٧":`7`,"٨":`8`,"٩":`9`,"۰":`0`,"۱":`1`,"۲":`2`,"۳":`3`,"۴":`4`,"۵":`5`,"۶":`6`,"۷":`7`,"۸":`8`,"۹":`9`,က:`k`,ခ:`kh`,ဂ:`g`,ဃ:`ga`,င:`ng`,စ:`s`,ဆ:`sa`,ဇ:`z`,စျ:`za`,ည:`ny`,ဋ:`t`,ဌ:`ta`,ဍ:`d`,ဎ:`da`,ဏ:`na`,တ:`t`,ထ:`ta`,ဒ:`d`,ဓ:`da`,န:`n`,ပ:`p`,ဖ:`pa`,ဗ:`b`,ဘ:`ba`,မ:`m`,ယ:`y`,ရ:`ya`,လ:`l`,ဝ:`w`,သ:`th`,ဟ:`h`,ဠ:`la`,အ:`a`,"ြ":`y`,"ျ":`ya`,"ွ":`w`,"ြွ":`yw`,"ျွ":`ywa`,"ှ":`h`,ဧ:`e`,"၏":`-e`,ဣ:`i`,ဤ:`-i`,ဉ:`u`,ဦ:`-u`,ဩ:`aw`,သြော:`aw`,ဪ:`aw`,"၀":`0`,"၁":`1`,"၂":`2`,"၃":`3`,"၄":`4`,"၅":`5`,"၆":`6`,"၇":`7`,"၈":`8`,"၉":`9`,"္":``,"့":``,"း":``,č:`c`,ď:`d`,ě:`e`,ň:`n`,ř:`r`,š:`s`,ť:`t`,ů:`u`,ž:`z`,Č:`C`,Ď:`D`,Ě:`E`,Ň:`N`,Ř:`R`,Š:`S`,Ť:`T`,Ů:`U`,Ž:`Z`,ހ:`h`,ށ:`sh`,ނ:`n`,ރ:`r`,ބ:`b`,ޅ:`lh`,ކ:`k`,އ:`a`,ވ:`v`,މ:`m`,ފ:`f`,ދ:`dh`,ތ:`th`,ލ:`l`,ގ:`g`,ޏ:`gn`,ސ:`s`,ޑ:`d`,ޒ:`z`,ޓ:`t`,ޔ:`y`,ޕ:`p`,ޖ:`j`,ޗ:`ch`,ޘ:`tt`,ޙ:`hh`,ޚ:`kh`,ޛ:`th`,ޜ:`z`,ޝ:`sh`,ޞ:`s`,ޟ:`d`,ޠ:`t`,ޡ:`z`,ޢ:`a`,ޣ:`gh`,ޤ:`q`,ޥ:`w`,"ަ":`a`,"ާ":`aa`,"ި":`i`,"ީ":`ee`,"ު":`u`,"ޫ":`oo`,"ެ":`e`,"ޭ":`ey`,"ޮ":`o`,"ޯ":`oa`,"ް":``,ა:`a`,ბ:`b`,გ:`g`,დ:`d`,ე:`e`,ვ:`v`,ზ:`z`,თ:`t`,ი:`i`,კ:`k`,ლ:`l`,მ:`m`,ნ:`n`,ო:`o`,პ:`p`,ჟ:`zh`,რ:`r`,ს:`s`,ტ:`t`,უ:`u`,ფ:`p`,ქ:`k`,ღ:`gh`,ყ:`q`,შ:`sh`,ჩ:`ch`,ც:`ts`,ძ:`dz`,წ:`ts`,ჭ:`ch`,ხ:`kh`,ჯ:`j`,ჰ:`h`,α:`a`,β:`v`,γ:`g`,δ:`d`,ε:`e`,ζ:`z`,η:`i`,θ:`th`,ι:`i`,κ:`k`,λ:`l`,μ:`m`,ν:`n`,ξ:`ks`,ο:`o`,π:`p`,ρ:`r`,σ:`s`,τ:`t`,υ:`y`,φ:`f`,χ:`x`,ψ:`ps`,ω:`o`,ά:`a`,έ:`e`,ί:`i`,ό:`o`,ύ:`y`,ή:`i`,ώ:`o`,ς:`s`,ϊ:`i`,ΰ:`y`,ϋ:`y`,ΐ:`i`,Α:`A`,Β:`B`,Γ:`G`,Δ:`D`,Ε:`E`,Ζ:`Z`,Η:`I`,Θ:`TH`,Ι:`I`,Κ:`K`,Λ:`L`,Μ:`M`,Ν:`N`,Ξ:`KS`,Ο:`O`,Π:`P`,Ρ:`R`,Σ:`S`,Τ:`T`,Υ:`Y`,Φ:`F`,Χ:`X`,Ψ:`PS`,Ω:`O`,Ά:`A`,Έ:`E`,Ί:`I`,Ό:`O`,Ύ:`Y`,Ή:`I`,Ώ:`O`,Ϊ:`I`,Ϋ:`Y`,ā:`a`,ē:`e`,ģ:`g`,ī:`i`,ķ:`k`,ļ:`l`,ņ:`n`,ū:`u`,Ā:`A`,Ē:`E`,Ģ:`G`,Ī:`I`,Ķ:`k`,Ļ:`L`,Ņ:`N`,Ū:`U`,Ќ:`Kj`,ќ:`kj`,Љ:`Lj`,љ:`lj`,Њ:`Nj`,њ:`nj`,Тс:`Ts`,тс:`ts`,ą:`a`,ć:`c`,ę:`e`,ł:`l`,ń:`n`,ś:`s`,ź:`z`,ż:`z`,Ą:`A`,Ć:`C`,Ę:`E`,Ł:`L`,Ń:`N`,Ś:`S`,Ź:`Z`,Ż:`Z`,Є:`Ye`,І:`I`,Ї:`Yi`,Ґ:`G`,є:`ye`,і:`i`,ї:`yi`,ґ:`g`,ă:`a`,Ă:`A`,ș:`s`,Ș:`S`,ț:`t`,Ț:`T`,ţ:`t`,Ţ:`T`,а:`a`,б:`b`,в:`v`,г:`g`,д:`d`,е:`e`,ё:`yo`,ж:`zh`,з:`z`,и:`i`,й:`i`,к:`k`,л:`l`,м:`m`,н:`n`,о:`o`,п:`p`,р:`r`,с:`s`,т:`t`,у:`u`,ф:`f`,х:`kh`,ц:`c`,ч:`ch`,ш:`sh`,щ:`sh`,ъ:``,ы:`y`,ь:``,э:`e`,ю:`yu`,я:`ya`,А:`A`,Б:`B`,В:`V`,Г:`G`,Д:`D`,Е:`E`,Ё:`Yo`,Ж:`Zh`,З:`Z`,И:`I`,Й:`I`,К:`K`,Л:`L`,М:`M`,Н:`N`,О:`O`,П:`P`,Р:`R`,С:`S`,Т:`T`,У:`U`,Ф:`F`,Х:`Kh`,Ц:`C`,Ч:`Ch`,Ш:`Sh`,Щ:`Sh`,Ъ:``,Ы:`Y`,Ь:``,Э:`E`,Ю:`Yu`,Я:`Ya`,ђ:`dj`,ј:`j`,ћ:`c`,џ:`dz`,Ђ:`Dj`,Ј:`j`,Ћ:`C`,Џ:`Dz`,ľ:`l`,ĺ:`l`,ŕ:`r`,Ľ:`L`,Ĺ:`L`,Ŕ:`R`,ş:`s`,Ş:`S`,ı:`i`,İ:`I`,ğ:`g`,Ğ:`G`,ả:`a`,Ả:`A`,ẳ:`a`,Ẳ:`A`,ẩ:`a`,Ẩ:`A`,đ:`d`,Đ:`D`,ẹ:`e`,Ẹ:`E`,ẽ:`e`,Ẽ:`E`,ẻ:`e`,Ẻ:`E`,ế:`e`,Ế:`E`,ề:`e`,Ề:`E`,ệ:`e`,Ệ:`E`,ễ:`e`,Ễ:`E`,ể:`e`,Ể:`E`,ỏ:`o`,ọ:`o`,Ọ:`o`,ố:`o`,Ố:`O`,ồ:`o`,Ồ:`O`,ổ:`o`,Ổ:`O`,ộ:`o`,Ộ:`O`,ỗ:`o`,Ỗ:`O`,ơ:`o`,Ơ:`O`,ớ:`o`,Ớ:`O`,ờ:`o`,Ờ:`O`,ợ:`o`,Ợ:`O`,ỡ:`o`,Ỡ:`O`,Ở:`o`,ở:`o`,ị:`i`,Ị:`I`,ĩ:`i`,Ĩ:`I`,ỉ:`i`,Ỉ:`i`,ủ:`u`,Ủ:`U`,ụ:`u`,Ụ:`U`,ũ:`u`,Ũ:`U`,ư:`u`,Ư:`U`,ứ:`u`,Ứ:`U`,ừ:`u`,Ừ:`U`,ự:`u`,Ự:`U`,ữ:`u`,Ữ:`U`,ử:`u`,Ử:`ư`,ỷ:`y`,Ỷ:`y`,ỳ:`y`,Ỳ:`Y`,ỵ:`y`,Ỵ:`Y`,ỹ:`y`,Ỹ:`Y`,ạ:`a`,Ạ:`A`,ấ:`a`,Ấ:`A`,ầ:`a`,Ầ:`A`,ậ:`a`,Ậ:`A`,ẫ:`a`,Ẫ:`A`,ắ:`a`,Ắ:`A`,ằ:`a`,Ằ:`A`,ặ:`a`,Ặ:`A`,ẵ:`a`,Ẵ:`A`,"⓪":`0`,"①":`1`,"②":`2`,"③":`3`,"④":`4`,"⑤":`5`,"⑥":`6`,"⑦":`7`,"⑧":`8`,"⑨":`9`,"⑩":`10`,"⑪":`11`,"⑫":`12`,"⑬":`13`,"⑭":`14`,"⑮":`15`,"⑯":`16`,"⑰":`17`,"⑱":`18`,"⑲":`18`,"⑳":`18`,"⓵":`1`,"⓶":`2`,"⓷":`3`,"⓸":`4`,"⓹":`5`,"⓺":`6`,"⓻":`7`,"⓼":`8`,"⓽":`9`,"⓾":`10`,"⓿":`0`,"⓫":`11`,"⓬":`12`,"⓭":`13`,"⓮":`14`,"⓯":`15`,"⓰":`16`,"⓱":`17`,"⓲":`18`,"⓳":`19`,"⓴":`20`,"Ⓐ":`A`,"Ⓑ":`B`,"Ⓒ":`C`,"Ⓓ":`D`,"Ⓔ":`E`,"Ⓕ":`F`,"Ⓖ":`G`,"Ⓗ":`H`,"Ⓘ":`I`,"Ⓙ":`J`,"Ⓚ":`K`,"Ⓛ":`L`,"Ⓜ":`M`,"Ⓝ":`N`,"Ⓞ":`O`,"Ⓟ":`P`,"Ⓠ":`Q`,"Ⓡ":`R`,"Ⓢ":`S`,"Ⓣ":`T`,"Ⓤ":`U`,"Ⓥ":`V`,"Ⓦ":`W`,"Ⓧ":`X`,"Ⓨ":`Y`,"Ⓩ":`Z`,"ⓐ":`a`,"ⓑ":`b`,"ⓒ":`c`,"ⓓ":`d`,"ⓔ":`e`,"ⓕ":`f`,"ⓖ":`g`,"ⓗ":`h`,"ⓘ":`i`,"ⓙ":`j`,"ⓚ":`k`,"ⓛ":`l`,"ⓜ":`m`,"ⓝ":`n`,"ⓞ":`o`,"ⓟ":`p`,"ⓠ":`q`,"ⓡ":`r`,"ⓢ":`s`,"ⓣ":`t`,"ⓤ":`u`,"ⓦ":`v`,"ⓥ":`w`,"ⓧ":`x`,"ⓨ":`y`,"ⓩ":`z`,"“":`"`,"”":`"`,"‘":`'`,"’":`'`,"∂":`d`,ƒ:`f`,"™":`(TM)`,"©":`(C)`,œ:`oe`,Œ:`OE`,"®":`(R)`,"†":`+`,"℠":`(SM)`,"…":`...`,"˚":`o`,º:`o`,ª:`a`,"•":`*`,"၊":`,`,"။":`.`,$:`USD`,"€":`EUR`,"₢":`BRN`,"₣":`FRF`,"£":`GBP`,"₤":`ITL`,"₦":`NGN`,"₧":`ESP`,"₩":`KRW`,"₪":`ILS`,"₫":`VND`,"₭":`LAK`,"₮":`MNT`,"₯":`GRD`,"₱":`ARS`,"₲":`PYG`,"₳":`ARA`,"₴":`UAH`,"₵":`GHS`,"¢":`cent`,"¥":`CNY`,元:`CNY`,円:`YEN`,"﷼":`IRR`,"₠":`EWE`,"฿":`THB`,"₨":`INR`,"₹":`INR`,"₰":`PF`,"₺":`TRY`,"؋":`AFN`,"₼":`AZN`,лв:`BGN`,"៛":`KHR`,"₡":`CRC`,"₸":`KZT`,ден:`MKD`,zł:`PLN`,"₽":`RUB`,"₾":`GEL`},r=[`်`,`ް`],i={"ာ":`a`,"ါ":`a`,"ေ":`e`,"ဲ":`e`,"ိ":`i`,"ီ":`i`,"ို":`o`,"ု":`u`,"ူ":`u`,"ေါင်":`aung`,"ော":`aw`,"ော်":`aw`,"ေါ":`aw`,"ေါ်":`aw`,"်":`်`,က်:`et`,"ိုက်":`aik`,"ောက်":`auk`,င်:`in`,"ိုင်":`aing`,"ောင်":`aung`,စ်:`it`,ည်:`i`,တ်:`at`,"ိတ်":`eik`,"ုတ်":`ok`,"ွတ်":`ut`,"ေတ်":`it`,ဒ်:`d`,"ိုဒ်":`ok`,"ုဒ်":`ait`,န်:`an`,"ာန်":`an`,"ိန်":`ein`,"ုန်":`on`,"ွန်":`un`,ပ်:`at`,"ိပ်":`eik`,"ုပ်":`ok`,"ွပ်":`ut`,န်ုပ်:`nub`,မ်:`an`,"ိမ်":`ein`,"ုမ်":`on`,"ွမ်":`un`,ယ်:`e`,"ိုလ်":`ol`,ဉ်:`in`,"ံ":`an`,"ိံ":`ein`,"ုံ":`on`,"ައް":`ah`,"ަށް":`ah`},a={en:{},az:{ç:`c`,ə:`e`,ğ:`g`,ı:`i`,ö:`o`,ş:`s`,ü:`u`,Ç:`C`,Ə:`E`,Ğ:`G`,İ:`I`,Ö:`O`,Ş:`S`,Ü:`U`},cs:{č:`c`,ď:`d`,ě:`e`,ň:`n`,ř:`r`,š:`s`,ť:`t`,ů:`u`,ž:`z`,Č:`C`,Ď:`D`,Ě:`E`,Ň:`N`,Ř:`R`,Š:`S`,Ť:`T`,Ů:`U`,Ž:`Z`},fi:{ä:`a`,Ä:`A`,ö:`o`,Ö:`O`},hu:{ä:`a`,Ä:`A`,ö:`o`,Ö:`O`,ü:`u`,Ü:`U`,ű:`u`,Ű:`U`},lt:{ą:`a`,č:`c`,ę:`e`,ė:`e`,į:`i`,š:`s`,ų:`u`,ū:`u`,ž:`z`,Ą:`A`,Č:`C`,Ę:`E`,Ė:`E`,Į:`I`,Š:`S`,Ų:`U`,Ū:`U`},lv:{ā:`a`,č:`c`,ē:`e`,ģ:`g`,ī:`i`,ķ:`k`,ļ:`l`,ņ:`n`,š:`s`,ū:`u`,ž:`z`,Ā:`A`,Č:`C`,Ē:`E`,Ģ:`G`,Ī:`i`,Ķ:`k`,Ļ:`L`,Ņ:`N`,Š:`S`,Ū:`u`,Ž:`Z`},pl:{ą:`a`,ć:`c`,ę:`e`,ł:`l`,ń:`n`,ó:`o`,ś:`s`,ź:`z`,ż:`z`,Ą:`A`,Ć:`C`,Ę:`e`,Ł:`L`,Ń:`N`,Ó:`O`,Ś:`S`,Ź:`Z`,Ż:`Z`},sv:{ä:`a`,Ä:`A`,ö:`o`,Ö:`O`},sk:{ä:`a`,Ä:`A`},sr:{љ:`lj`,њ:`nj`,Љ:`Lj`,Њ:`Nj`,đ:`dj`,Đ:`Dj`},tr:{Ü:`U`,Ö:`O`,ü:`u`,ö:`o`}},o={ar:{"∆":`delta`,"∞":`la-nihaya`,"♥":`hob`,"&":`wa`,"|":`aw`,"<":`aqal-men`,">":`akbar-men`,"∑":`majmou`,"¤":`omla`},az:{},ca:{"∆":`delta`,"∞":`infinit`,"♥":`amor`,"&":`i`,"|":`o`,"<":`menys que`,">":`mes que`,"∑":`suma dels`,"¤":`moneda`},cs:{"∆":`delta`,"∞":`nekonecno`,"♥":`laska`,"&":`a`,"|":`nebo`,"<":`mensi nez`,">":`vetsi nez`,"∑":`soucet`,"¤":`mena`},de:{"∆":`delta`,"∞":`unendlich`,"♥":`Liebe`,"&":`und`,"|":`oder`,"<":`kleiner als`,">":`groesser als`,"∑":`Summe von`,"¤":`Waehrung`},dv:{"∆":`delta`,"∞":`kolunulaa`,"♥":`loabi`,"&":`aai`,"|":`noonee`,"<":`ah vure kuda`,">":`ah vure bodu`,"∑":`jumula`,"¤":`faisaa`},en:{"∆":`delta`,"∞":`infinity`,"♥":`love`,"&":`and`,"|":`or`,"<":`less than`,">":`greater than`,"∑":`sum`,"¤":`currency`},es:{"∆":`delta`,"∞":`infinito`,"♥":`amor`,"&":`y`,"|":`u`,"<":`menos que`,">":`mas que`,"∑":`suma de los`,"¤":`moneda`},fa:{"∆":`delta`,"∞":`bi-nahayat`,"♥":`eshgh`,"&":`va`,"|":`ya`,"<":`kamtar-az`,">":`bishtar-az`,"∑":`majmooe`,"¤":`vahed`},fi:{"∆":`delta`,"∞":`aarettomyys`,"♥":`rakkaus`,"&":`ja`,"|":`tai`,"<":`pienempi kuin`,">":`suurempi kuin`,"∑":`summa`,"¤":`valuutta`},fr:{"∆":`delta`,"∞":`infiniment`,"♥":`Amour`,"&":`et`,"|":`ou`,"<":`moins que`,">":`superieure a`,"∑":`somme des`,"¤":`monnaie`},ge:{"∆":`delta`,"∞":`usasruloba`,"♥":`siqvaruli`,"&":`da`,"|":`an`,"<":`naklebi`,">":`meti`,"∑":`jami`,"¤":`valuta`},gr:{},hu:{"∆":`delta`,"∞":`vegtelen`,"♥":`szerelem`,"&":`es`,"|":`vagy`,"<":`kisebb mint`,">":`nagyobb mint`,"∑":`szumma`,"¤":`penznem`},it:{"∆":`delta`,"∞":`infinito`,"♥":`amore`,"&":`e`,"|":`o`,"<":`minore di`,">":`maggiore di`,"∑":`somma`,"¤":`moneta`},lt:{"∆":`delta`,"∞":`begalybe`,"♥":`meile`,"&":`ir`,"|":`ar`,"<":`maziau nei`,">":`daugiau nei`,"∑":`suma`,"¤":`valiuta`},lv:{"∆":`delta`,"∞":`bezgaliba`,"♥":`milestiba`,"&":`un`,"|":`vai`,"<":`mazak neka`,">":`lielaks neka`,"∑":`summa`,"¤":`valuta`},my:{"∆":`kwahkhyaet`,"∞":`asaonasme`,"♥":`akhyait`,"&":`nhin`,"|":`tho`,"<":`ngethaw`,">":`kyithaw`,"∑":`paungld`,"¤":`ngwekye`},mk:{},nl:{"∆":`delta`,"∞":`oneindig`,"♥":`liefde`,"&":`en`,"|":`of`,"<":`kleiner dan`,">":`groter dan`,"∑":`som`,"¤":`valuta`},pl:{"∆":`delta`,"∞":`nieskonczonosc`,"♥":`milosc`,"&":`i`,"|":`lub`,"<":`mniejsze niz`,">":`wieksze niz`,"∑":`suma`,"¤":`waluta`},pt:{"∆":`delta`,"∞":`infinito`,"♥":`amor`,"&":`e`,"|":`ou`,"<":`menor que`,">":`maior que`,"∑":`soma`,"¤":`moeda`},ro:{"∆":`delta`,"∞":`infinit`,"♥":`dragoste`,"&":`si`,"|":`sau`,"<":`mai mic ca`,">":`mai mare ca`,"∑":`suma`,"¤":`valuta`},ru:{"∆":`delta`,"∞":`beskonechno`,"♥":`lubov`,"&":`i`,"|":`ili`,"<":`menshe`,">":`bolshe`,"∑":`summa`,"¤":`valjuta`},sk:{"∆":`delta`,"∞":`nekonecno`,"♥":`laska`,"&":`a`,"|":`alebo`,"<":`menej ako`,">":`viac ako`,"∑":`sucet`,"¤":`mena`},sr:{},tr:{"∆":`delta`,"∞":`sonsuzluk`,"♥":`ask`,"&":`ve`,"|":`veya`,"<":`kucuktur`,">":`buyuktur`,"∑":`toplam`,"¤":`para birimi`},uk:{"∆":`delta`,"∞":`bezkinechnist`,"♥":`lubov`,"&":`i`,"|":`abo`,"<":`menshe`,">":`bilshe`,"∑":`suma`,"¤":`valjuta`},vn:{"∆":`delta`,"∞":`vo cuc`,"♥":`yeu`,"&":`va`,"|":`hoac`,"<":`nho hon`,">":`lon hon`,"∑":`tong`,"¤":`tien te`}},s=[`;`,`?`,`:`,`@`,`&`,`=`,`+`,`$`,`,`,`/`].join(``),c=[`;`,`?`,`:`,`@`,`&`,`=`,`+`,`$`,`,`].join(``),l=[`.`,`!`,`~`,`*`,`'`,`(`,`)`].join(``),u=function(e,t){var u=`-`,d=``,m=``,h=!0,g={},_,v,y,b,x,S,C,w,T,E,D,O,ee,te,ne=``;if(typeof e!=`string`)return``;if(typeof t==`string`&&(u=t),C=o.en,w=a.en,typeof t==`object`)for(D in _=t.maintainCase||!1,g=t.custom&&typeof t.custom==`object`?t.custom:g,y=+t.truncate>1&&t.truncate||!1,b=t.uric||!1,x=t.uricNoSlash||!1,S=t.mark||!1,h=!(t.symbols===!1||t.lang===!1),u=t.separator||u,b&&(ne+=s),x&&(ne+=c),S&&(ne+=l),C=t.lang&&o[t.lang]&&h?o[t.lang]:h?o.en:{},w=t.lang&&a[t.lang]?a[t.lang]:t.lang===!1||t.lang===!0?{}:a.en,t.titleCase&&typeof t.titleCase.length==`number`&&Array.prototype.toString.call(t.titleCase)?(t.titleCase.forEach(function(e){g[e+``]=e+``}),v=!0):v=!!t.titleCase,t.custom&&typeof t.custom.length==`number`&&Array.prototype.toString.call(t.custom)&&t.custom.forEach(function(e){g[e+``]=e+``}),Object.keys(g).forEach(function(t){var n=t.length>1?RegExp(`\\b`+f(t)+`\\b`,`gi`):new RegExp(f(t),`gi`);e=e.replace(n,g[t])}),g)ne+=D;for(ne+=u,ne=f(ne),e=e.replace(/(^\s+|\s+$)/g,``),ee=!1,te=!1,E=0,O=e.length;E<O;E++)D=e[E],p(D,g)?ee=!1:w[D]?(D=ee&&w[D].match(/[A-Za-z0-9]/)?` `+w[D]:w[D],ee=!1):D in n?(E+1<O&&r.indexOf(e[E+1])>=0?(m+=D,D=``):te===!0?(D=i[m]+n[D],m=``):D=ee&&n[D].match(/[A-Za-z0-9]/)?` `+n[D]:n[D],ee=!1,te=!1):D in i?(m+=D,D=``,E===O-1&&(D=i[m]),te=!0):C[D]&&!(b&&s.indexOf(D)!==-1)&&!(x&&c.indexOf(D)!==-1)?(D=ee||d.substr(-1).match(/[A-Za-z0-9]/)?u+C[D]:C[D],D+=e[E+1]!==void 0&&e[E+1].match(/[A-Za-z0-9]/)?u:``,ee=!0):(te===!0?(D=i[m]+D,m=``,te=!1):ee&&(/[A-Za-z0-9]/.test(D)||d.substr(-1).match(/A-Za-z0-9]/))&&(D=` `+D),ee=!1),d+=D.replace(RegExp(`[^\\w\\s`+ne+`_-]`,`g`),u);return v&&(d=d.replace(/(\w)(\S*)/g,function(e,t,n){var r=t.toUpperCase()+(n===null?``:n);return Object.keys(g).indexOf(r.toLowerCase())<0?r:r.toLowerCase()})),d=d.replace(/\s+/g,u).replace(RegExp(`\\`+u+`+`,`g`),u).replace(RegExp(`(^\\`+u+`+|\\`+u+`+$)`,`g`),``),y&&d.length>y&&(T=d.charAt(y)===u,d=d.slice(0,y),T||(d=d.slice(0,d.lastIndexOf(u)))),!_&&!v&&(d=d.toLowerCase()),d},d=function(e){return function(t){return u(t,e)}},f=function(e){return e.replace(/[-\\^$*+?.()|[\]{}\/]/g,`\\$&`)},p=function(e,t){for(var n in t)if(t[n]===e)return!0};if(t!==void 0&&t.exports)t.exports=u,t.exports.createSlug=d;else if(typeof define<`u`&&define.amd)define([],function(){return u});else try{if(e.getSlug||e.createSlug)throw`speakingurl: globals exists /(getSlug|createSlug)/`;e.getSlug=u,e.createSlug=d}catch{}})(e)}}),yy=hy({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(e,t){R(),t.exports=vy()}});R(),R(),R(),R(),R(),R(),R(),R();function by(e){let t=e.name||e._componentTag||e.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__||e.__name;return t===`index`&&e.__file?.endsWith(`index.vue`)?``:t}function xy(e){let t=e.__file;if(t)return ny(ry(t,`.vue`))}function Sy(e,t){return e.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__=t,t}function Cy(e){if(e.__VUE_DEVTOOLS_NEXT_APP_RECORD__)return e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(e.root)return e.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__}function wy(e){let t=e.subTree?.type,n=Cy(e);return n?n?.types?.Fragment===t:!1}function Ty(e){let t=by(e?.type||{});if(t)return t;if(e?.root===e)return`Root`;for(let t in e.parent?.type?.components)if(e.parent.type.components[t]===e?.type)return Sy(e,t);for(let t in e.appContext?.components)if(e.appContext.components[t]===e?.type)return Sy(e,t);return xy(e?.type||{})||`Anonymous Component`}function Ey(e){return`${e?.appContext?.app?.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__??0}:${e===e?.root?`root`:e.uid}`}function Dy(e,t){return t||=`${e.id}:root`,e.instanceMap.get(t)||e.instanceMap.get(`:root`)}function Oy(){let e={top:0,bottom:0,left:0,right:0,get width(){return e.right-e.left},get height(){return e.bottom-e.top}};return e}var ky;function Ay(e){return ky||=document.createRange(),ky.selectNode(e),ky.getBoundingClientRect()}function jy(e){let t=Oy();if(!e.children)return t;for(let n=0,r=e.children.length;n<r;n++){let r=e.children[n],i;if(r.component)i=Py(r.component);else if(r.el){let e=r.el;e.nodeType===1||e.getBoundingClientRect?i=e.getBoundingClientRect():e.nodeType===3&&e.data.trim()&&(i=Ay(e))}i&&My(t,i)}return t}function My(e,t){return(!e.top||t.top<e.top)&&(e.top=t.top),(!e.bottom||t.bottom>e.bottom)&&(e.bottom=t.bottom),(!e.left||t.left<e.left)&&(e.left=t.left),(!e.right||t.right>e.right)&&(e.right=t.right),e}var Ny={top:0,left:0,right:0,bottom:0,width:0,height:0};function Py(e){let t=e.subTree.el;return typeof window>`u`?Ny:wy(e)?jy(e.subTree):t?.nodeType===1?t?.getBoundingClientRect():e.subTree.component?Py(e.subTree.component):Ny}R();function Fy(e){return wy(e)?Iy(e.subTree):e.subTree?[e.subTree.el]:[]}function Iy(e){if(!e.children)return[];let t=[];return e.children.forEach(e=>{e.component?t.push(...Fy(e.component)):e?.el&&t.push(e.el)}),t}var Ly=`__vue-devtools-component-inspector__`,Ry=`__vue-devtools-component-inspector__card__`,zy=`__vue-devtools-component-inspector__name__`,By=`__vue-devtools-component-inspector__indicator__`,Vy={display:`block`,zIndex:2147483640,position:`fixed`,backgroundColor:`#42b88325`,border:`1px solid #42b88350`,borderRadius:`5px`,transition:`all 0.1s ease-in`,pointerEvents:`none`},Hy={fontFamily:`Arial, Helvetica, sans-serif`,padding:`5px 8px`,borderRadius:`4px`,textAlign:`left`,position:`absolute`,left:0,color:`#e9e9e9`,fontSize:`14px`,fontWeight:600,lineHeight:`24px`,backgroundColor:`#42b883`,boxShadow:`0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)`},Uy={display:`inline-block`,fontWeight:400,fontStyle:`normal`,fontSize:`12px`,opacity:.7};function Wy(){return document.getElementById(Ly)}function Gy(){return document.getElementById(Ry)}function Ky(){return document.getElementById(By)}function qy(){return document.getElementById(zy)}function Jy(e){return{left:`${Math.round(e.left*100)/100}px`,top:`${Math.round(e.top*100)/100}px`,width:`${Math.round(e.width*100)/100}px`,height:`${Math.round(e.height*100)/100}px`}}function Yy(e){let t=document.createElement(`div`);t.id=e.elementId??Ly,Object.assign(t.style,{...Vy,...Jy(e.bounds),...e.style});let n=document.createElement(`span`);n.id=Ry,Object.assign(n.style,{...Hy,top:e.bounds.top<35?0:`-35px`});let r=document.createElement(`span`);r.id=zy,r.innerHTML=`&lt;${e.name}&gt;&nbsp;&nbsp;`;let i=document.createElement(`i`);return i.id=By,i.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`,Object.assign(i.style,Uy),n.appendChild(r),n.appendChild(i),t.appendChild(n),document.body.appendChild(t),t}function Xy(e){let t=Wy(),n=Gy(),r=qy(),i=Ky();t&&(Object.assign(t.style,{...Vy,...Jy(e.bounds)}),Object.assign(n.style,{top:e.bounds.top<35?0:`-35px`}),r.innerHTML=`&lt;${e.name}&gt;&nbsp;&nbsp;`,i.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`)}function Zy(e){let t=Py(e);if(!t.width&&!t.height)return;let n=Ty(e);Wy()?Xy({bounds:t,name:n}):Yy({bounds:t,name:n})}function Qy(){let e=Wy();e&&(e.style.display=`none`)}var $y=null;function eb(e){let t=e.target;if(t){let e=t.__vueParentComponent;if(e&&($y=e,e.vnode.el)){let t=Py(e),n=Ty(e);Wy()?Xy({bounds:t,name:n}):Yy({bounds:t,name:n})}}}function tb(e,t){e.preventDefault(),e.stopPropagation(),$y&&t(Ey($y))}var nb=null;function rb(){Qy(),window.removeEventListener(`mouseover`,eb),window.removeEventListener(`click`,nb,!0),nb=null}function ib(){return window.addEventListener(`mouseover`,eb),new Promise(e=>{function t(n){n.preventDefault(),n.stopPropagation(),tb(n,n=>{window.removeEventListener(`click`,t,!0),nb=null,window.removeEventListener(`mouseover`,eb);let r=Wy();r&&(r.style.display=`none`),e(JSON.stringify({id:n}))})}nb=t,window.addEventListener(`click`,t,!0)})}function ab(e){let t=Dy(Rb.value,e.id);if(t){let[n]=Fy(t);if(typeof n.scrollIntoView==`function`)n.scrollIntoView({behavior:`smooth`});else{let e=Py(t),n=document.createElement(`div`),r={...Jy(e),position:`absolute`};Object.assign(n.style,r),document.body.appendChild(n),n.scrollIntoView({behavior:`smooth`}),setTimeout(()=>{document.body.removeChild(n)},2e3)}setTimeout(()=>{let n=Py(t);if(n.width||n.height){let r=Ty(t),i=Wy();i?Xy({...e,name:r,bounds:n}):Yy({...e,name:r,bounds:n}),setTimeout(()=>{i&&(i.style.display=`none`)},1500)}},1200)}}R();var ob;(ob=Qv).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__??(ob.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__=!0);function sb(e){let t=0,n=setInterval(()=>{Qv.__VUE_INSPECTOR__&&(clearInterval(n),t+=30,e()),t>=5e3&&clearInterval(n)},30)}function cb(){let e=Qv.__VUE_INSPECTOR__,t=e.openInEditor;e.openInEditor=async(...n)=>{e.disable(),t(...n)}}function lb(){return new Promise(e=>{function t(){cb(),e(Qv.__VUE_INSPECTOR__)}Qv.__VUE_INSPECTOR__?t():sb(()=>{t()})})}R(),R();function ub(e){return!!(e&&e.__v_isReadonly)}function db(e){return ub(e)?db(e.__v_raw):!!(e&&e.__v_isReactive)}function fb(e){return!!(e&&e.__v_isRef===!0)}function pb(e){let t=e&&e.__v_raw;return t?pb(t):e}var mb=class{constructor(){this.refEditor=new hb}set(e,t,n,r){let i=Array.isArray(t)?t:t.split(`.`);for(;i.length>1;){let t=i.shift();e=e instanceof Map?e.get(t):e instanceof Set?Array.from(e.values())[t]:e[t],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}let a=i[0],o=this.refEditor.get(e)[a];r?r(e,a,n):this.refEditor.isRef(o)?this.refEditor.set(o,n):e[a]=n}get(e,t){let n=Array.isArray(t)?t:t.split(`.`);for(let t=0;t<n.length;t++)if(e=e instanceof Map?e.get(n[t]):e[n[t]],this.refEditor.isRef(e)&&(e=this.refEditor.get(e)),!e)return;return e}has(e,t,n=!1){if(e===void 0)return!1;let r=Array.isArray(t)?t.slice():t.split(`.`),i=n?2:1;for(;e&&r.length>i;){let t=r.shift();e=e[t],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}return e!=null&&Object.prototype.hasOwnProperty.call(e,r[0])}createDefaultSetCallback(e){return(t,n,r)=>{if((e.remove||e.newKey)&&(Array.isArray(t)?t.splice(n,1):pb(t)instanceof Map?t.delete(n):pb(t)instanceof Set?t.delete(Array.from(t.values())[n]):Reflect.deleteProperty(t,n)),!e.remove){let i=t[e.newKey||n];this.refEditor.isRef(i)?this.refEditor.set(i,r):pb(t)instanceof Map?t.set(e.newKey||n,r):pb(t)instanceof Set?t.add(r):t[e.newKey||n]=r}}}},hb=class{set(e,t){if(fb(e))e.value=t;else{if(e instanceof Set&&Array.isArray(t)){e.clear(),t.forEach(t=>e.add(t));return}let n=Object.keys(t);if(e instanceof Map){let r=new Set(e.keys());n.forEach(n=>{e.set(n,Reflect.get(t,n)),r.delete(n)}),r.forEach(t=>e.delete(t));return}let r=new Set(Object.keys(e));n.forEach(n=>{Reflect.set(e,n,Reflect.get(t,n)),r.delete(n)}),r.forEach(t=>Reflect.deleteProperty(e,t))}}get(e){return fb(e)?e.value:e}isRef(e){return fb(e)||db(e)}};new mb,R(),R(),R();var gb=`__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__`;function _b(){if(typeof window>`u`||!Zv||typeof localStorage>`u`||localStorage===null)return{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:``};let e=localStorage.getItem===void 0?null:localStorage.getItem(gb);return e?JSON.parse(e):{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:``}}R(),R(),R();var vb;(vb=Qv).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS??(vb.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS=[]);var yb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS,{get(e,t,n){return Reflect.get(e,t,n)}});function bb(e,t){Hb.timelineLayersState[t.id]=!1,yb.push({...e,descriptorId:t.id,appRecord:Cy(t.app)})}var xb;(xb=Qv).__VUE_DEVTOOLS_KIT_INSPECTOR__??(xb.__VUE_DEVTOOLS_KIT_INSPECTOR__=[]);var Sb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_INSPECTOR__,{get(e,t,n){return Reflect.get(e,t,n)}}),Cb=oy(()=>{Sx.hooks.callHook(`sendInspectorToClient`,Tb())});function wb(e,t){Sb.push({options:e,descriptor:t,treeFilterPlaceholder:e.treeFilterPlaceholder??`Search tree...`,stateFilterPlaceholder:e.stateFilterPlaceholder??`Search state...`,treeFilter:``,selectedNodeId:``,appRecord:Cy(t.app)}),Cb()}function Tb(){return Sb.filter(e=>e.descriptor.app===Rb.value.app).filter(e=>e.descriptor.id!==`components`).map(e=>{let t=e.descriptor,n=e.options;return{id:n.id,label:n.label,logo:t.logo,icon:`custom-ic-baseline-${(n?.icon)?.replace(/_/g,`-`)}`,packageName:t.packageName,homepage:t.homepage,pluginId:t.id}})}function Eb(e,t){return Sb.find(n=>n.options.id===e&&(t?n.descriptor.app===t:!0))}function Db(){let e=fe();e.hook(`addInspector`,({inspector:e,plugin:t})=>{wb(e,t.descriptor)});let t=oy(async({inspectorId:t,plugin:n})=>{if(!t||!n?.descriptor?.app||Hb.highPerfModeEnabled)return;let r=Eb(t,n.descriptor.app),i={app:n.descriptor.app,inspectorId:t,filter:r?.treeFilter||``,rootNodes:[]};await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(i))),t()},`getInspectorTree`)}),e.callHookWith(async e=>{await Promise.all(e.map(e=>e({inspectorId:t,rootNodes:i.rootNodes})))},`sendInspectorTreeToClient`)},120);e.hook(`sendInspectorTree`,t);let n=oy(async({inspectorId:t,plugin:n})=>{if(!t||!n?.descriptor?.app||Hb.highPerfModeEnabled)return;let r=Eb(t,n.descriptor.app),i={app:n.descriptor.app,inspectorId:t,nodeId:r?.selectedNodeId||``,state:null},a={currentTab:`custom-inspector:${t}`};i.nodeId&&await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(i,a))),t()},`getInspectorState`)}),e.callHookWith(async e=>{await Promise.all(e.map(e=>e({inspectorId:t,nodeId:i.nodeId,state:i.state})))},`sendInspectorStateToClient`)},120);return e.hook(`sendInspectorState`,n),e.hook(`customInspectorSelectNode`,({inspectorId:e,nodeId:t,plugin:n})=>{let r=Eb(e,n.descriptor.app);r&&(r.selectedNodeId=t)}),e.hook(`timelineLayerAdded`,({options:e,plugin:t})=>{bb(e,t.descriptor)}),e.hook(`timelineEventAdded`,({options:t,plugin:n})=>{Hb.highPerfModeEnabled||!Hb.timelineLayersState?.[n.descriptor.id]&&![`performance`,`component-event`,`keyboard`,`mouse`].includes(t.layerId)||e.callHookWith(async e=>{await Promise.all(e.map(e=>e(t)))},`sendTimelineEventToClient`)}),e.hook(`getComponentInstances`,async({app:e})=>{let t=e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(!t)return null;let n=t.id.toString();return[...t.instanceMap].filter(([e])=>e.split(`:`)[0]===n).map(([,e])=>e)}),e.hook(`getComponentBounds`,async({instance:e})=>Py(e)),e.hook(`getComponentName`,({instance:e})=>Ty(e)),e.hook(`componentHighlight`,({uid:e})=>{let t=Rb.value.instanceMap.get(e);t&&Zy(t)}),e.hook(`componentUnhighlight`,()=>{Qy()}),e}var Ob;(Ob=Qv).__VUE_DEVTOOLS_KIT_APP_RECORDS__??(Ob.__VUE_DEVTOOLS_KIT_APP_RECORDS__=[]);var kb;(kb=Qv).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__??(kb.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__={});var Ab;(Ab=Qv).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__??(Ab.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=``);var jb;(jb=Qv).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__??(jb.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__=[]);var Mb;(Mb=Qv).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__??(Mb.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__=[]);var Nb=`__VUE_DEVTOOLS_KIT_GLOBAL_STATE__`;function Pb(){return{connected:!1,clientConnected:!1,vitePluginDetected:!0,appRecords:[],activeAppRecordId:``,tabs:[],commands:[],highPerfModeEnabled:!0,devtoolsClientDetected:{},perfUniqueGroupId:0,timelineLayersState:_b()}}var Fb;(Fb=Qv)[Nb]??(Fb[Nb]=Pb());var Ib=oy(e=>{Sx.hooks.callHook(`devtoolsStateUpdated`,{state:e})});oy((e,t)=>{Sx.hooks.callHook(`devtoolsConnectedUpdated`,{state:e,oldState:t})});var Lb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_APP_RECORDS__,{get(e,t,n){return t===`value`?Qv.__VUE_DEVTOOLS_KIT_APP_RECORDS__:Qv.__VUE_DEVTOOLS_KIT_APP_RECORDS__[t]}}),Rb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__,{get(e,t,n){return t===`value`?Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__:t===`id`?Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__:Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[t]}});function zb(){Ib({...Qv[Nb],appRecords:Lb.value,activeAppRecordId:Rb.id,tabs:Qv.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,commands:Qv.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__})}function Bb(e){Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__=e,zb()}function Vb(e){Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=e,zb()}var Hb=new Proxy(Qv[Nb],{get(e,t){return t===`appRecords`?Lb:t===`activeAppRecordId`?Rb.id:t===`tabs`?Qv.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__:t===`commands`?Qv.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__:Qv[Nb][t]},deleteProperty(e,t){return delete e[t],!0},set(e,t,n){return{...Qv[Nb]},e[t]=n,Qv[Nb][t]=n,!0}});function Ub(e={}){let{file:t,host:n,baseUrl:r=window.location.origin,line:i=0,column:a=0}=e;if(t){if(n===`chrome-extension`){let e=t.replace(/\\/g,`\\\\`),n=window.VUE_DEVTOOLS_CONFIG?.openInEditorHost??`/`;fetch(`${n}__open-in-editor?file=${encodeURI(t)}`).then(t=>{if(!t.ok){let t=`Opening component ${e} failed`;console.log(`%c${t}`,`color:red`)}})}else if(Hb.vitePluginDetected){let e=Qv.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__??r;Qv.__VUE_INSPECTOR__.openInEditor(e,t,i,a)}}}R(),R(),R(),R(),R();var Wb;(Wb=Qv).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__??(Wb.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__=[]);var Gb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__,{get(e,t,n){return Reflect.get(e,t,n)}});function Kb(e){let t={};return Object.keys(e).forEach(n=>{t[n]=e[n].defaultValue}),t}function qb(e){return`__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${e}__`}function Jb(e){return(Gb.find(t=>t[0].id===e&&!!t[0]?.settings)?.[0]??null)?.settings??null}function Yb(e,t){let n=qb(e);if(n){let e=localStorage.getItem(n);if(e)return JSON.parse(e)}return Kb(e?(Gb.find(t=>t[0].id===e)?.[0]??null)?.settings??{}:t)}function Xb(e,t){let n=qb(e);localStorage.getItem(n)||localStorage.setItem(n,JSON.stringify(Kb(t)))}function Zb(e,t,n){let r=qb(e),i=localStorage.getItem(r),a=JSON.parse(i||`{}`),o={...a,[t]:n};localStorage.setItem(r,JSON.stringify(o)),Sx.hooks.callHookWith(r=>{r.forEach(r=>r({pluginId:e,key:t,oldValue:a[t],newValue:n,settings:o}))},`setPluginSettings`)}R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R();var Qb,$b=(Qb=Qv).__VUE_DEVTOOLS_HOOK??(Qb.__VUE_DEVTOOLS_HOOK=fe()),ex={on:{vueAppInit(e){$b.hook(`app:init`,e)},vueAppUnmount(e){$b.hook(`app:unmount`,e)},vueAppConnected(e){$b.hook(`app:connected`,e)},componentAdded(e){return $b.hook(`component:added`,e)},componentEmit(e){return $b.hook(`component:emit`,e)},componentUpdated(e){return $b.hook(`component:updated`,e)},componentRemoved(e){return $b.hook(`component:removed`,e)},setupDevtoolsPlugin(e){$b.hook(`devtools-plugin:setup`,e)},perfStart(e){return $b.hook(`perf:start`,e)},perfEnd(e){return $b.hook(`perf:end`,e)}},setupDevToolsPlugin(e,t){return $b.callHook(`devtools-plugin:setup`,e,t)}},tx=class{constructor({plugin:e,ctx:t}){this.hooks=t.hooks,this.plugin=e}get on(){return{visitComponentTree:e=>{this.hooks.hook(`visitComponentTree`,e)},inspectComponent:e=>{this.hooks.hook(`inspectComponent`,e)},editComponentState:e=>{this.hooks.hook(`editComponentState`,e)},getInspectorTree:e=>{this.hooks.hook(`getInspectorTree`,e)},getInspectorState:e=>{this.hooks.hook(`getInspectorState`,e)},editInspectorState:e=>{this.hooks.hook(`editInspectorState`,e)},inspectTimelineEvent:e=>{this.hooks.hook(`inspectTimelineEvent`,e)},timelineCleared:e=>{this.hooks.hook(`timelineCleared`,e)},setPluginSettings:e=>{this.hooks.hook(`setPluginSettings`,e)}}}notifyComponentUpdate(e){if(Hb.highPerfModeEnabled)return;let t=Tb().find(e=>e.packageName===this.plugin.descriptor.packageName);if(t?.id){if(e){let t=[e.appContext.app,e.uid,e.parent?.uid,e];$b.callHook(`component:updated`,...t)}else $b.callHook(`component:updated`);this.hooks.callHook(`sendInspectorState`,{inspectorId:t.id,plugin:this.plugin})}}addInspector(e){this.hooks.callHook(`addInspector`,{inspector:e,plugin:this.plugin}),this.plugin.descriptor.settings&&Xb(e.id,this.plugin.descriptor.settings)}sendInspectorTree(e){Hb.highPerfModeEnabled||this.hooks.callHook(`sendInspectorTree`,{inspectorId:e,plugin:this.plugin})}sendInspectorState(e){Hb.highPerfModeEnabled||this.hooks.callHook(`sendInspectorState`,{inspectorId:e,plugin:this.plugin})}selectInspectorNode(e,t){this.hooks.callHook(`customInspectorSelectNode`,{inspectorId:e,nodeId:t,plugin:this.plugin})}visitComponentTree(e){return this.hooks.callHook(`visitComponentTree`,e)}now(){return Hb.highPerfModeEnabled?0:Date.now()}addTimelineLayer(e){this.hooks.callHook(`timelineLayerAdded`,{options:e,plugin:this.plugin})}addTimelineEvent(e){Hb.highPerfModeEnabled||this.hooks.callHook(`timelineEventAdded`,{options:e,plugin:this.plugin})}getSettings(e){return Yb(e??this.plugin.descriptor.id,this.plugin.descriptor.settings)}getComponentInstances(e){return this.hooks.callHook(`getComponentInstances`,{app:e})}getComponentBounds(e){return this.hooks.callHook(`getComponentBounds`,{instance:e})}getComponentName(e){return this.hooks.callHook(`getComponentName`,{instance:e})}highlightElement(e){let t=e.__VUE_DEVTOOLS_NEXT_UID__;return this.hooks.callHook(`componentHighlight`,{uid:t})}unhighlightElement(){return this.hooks.callHook(`componentUnhighlight`)}};R(),R(),R(),R();var nx=`__vue_devtool_undefined__`,rx=`__vue_devtool_infinity__`,ix=`__vue_devtool_negative_infinity__`,ax=`__vue_devtool_nan__`;R(),R(),Object.entries({[nx]:`undefined`,[ax]:`NaN`,[rx]:`Infinity`,[ix]:`-Infinity`}).reduce((e,[t,n])=>(e[n]=t,e),{}),R(),R(),R(),R(),R();var ox;(ox=Qv).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__??(ox.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__=new Set);function sx(e,t){return ex.setupDevToolsPlugin(e,t)}function cx(e,t){let[n,r]=e;if(n.app!==t)return;let i=new tx({plugin:{setupFn:r,descriptor:n},ctx:Sx});n.packageName===`vuex`&&i.on.editInspectorState(e=>{i.sendInspectorState(e.inspectorId)}),r(i)}function lx(e,t){Qv.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(e)||Hb.highPerfModeEnabled&&!t?.inspectingComponent||(Qv.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(e),Gb.forEach(t=>{cx(t,e)}))}R(),R();var ux=`__VUE_DEVTOOLS_ROUTER__`,dx=`__VUE_DEVTOOLS_ROUTER_INFO__`,fx;(fx=Qv).__VUE_DEVTOOLS_ROUTER_INFO__??(fx.__VUE_DEVTOOLS_ROUTER_INFO__={currentRoute:null,routes:[]});var px;(px=Qv).__VUE_DEVTOOLS_ROUTER__??(px.__VUE_DEVTOOLS_ROUTER__={}),new Proxy(Qv[dx],{get(e,t){return Qv[dx][t]}}),new Proxy(Qv[ux],{get(e,t){if(t===`value`)return Qv[ux]}});function mx(e){let t=new Map;return(e?.getRoutes()||[]).filter(e=>!t.has(e.path)&&t.set(e.path,1))}function hx(e){return e.map(e=>{let{path:t,name:n,children:r,meta:i}=e;return r?.length&&(r=hx(r)),{path:t,name:n,children:r,meta:i}})}function gx(e){if(e){let{fullPath:t,hash:n,href:r,path:i,name:a,matched:o,params:s,query:c}=e;return{fullPath:t,hash:n,href:r,path:i,name:a,params:s,query:c,matched:hx(o)}}return e}function _x(e,t){function n(){let t=e.app?.config.globalProperties.$router,n=gx(t?.currentRoute.value),r=hx(mx(t)),i=console.warn;console.warn=()=>{},Qv[dx]={currentRoute:n?iy(n):{},routes:iy(r)},Qv[ux]=t,console.warn=i}n(),ex.on.componentUpdated(oy(()=>{t.value?.app===e.app&&(n(),!Hb.highPerfModeEnabled&&Sx.hooks.callHook(`routerInfoUpdated`,{state:Qv[dx]}))},200))}function vx(e){return{async getInspectorTree(t){let n={...t,app:Rb.value.app,rootNodes:[]};return await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(n))),t()},`getInspectorTree`)}),n.rootNodes},async getInspectorState(t){let n={...t,app:Rb.value.app,state:null},r={currentTab:`custom-inspector:${t.inspectorId}`};return await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(n,r))),t()},`getInspectorState`)}),n.state},editInspectorState(t){let n=new mb,r={...t,app:Rb.value.app,set:(e,r=t.path,i=t.state.value,a)=>{n.set(e,r,i,a||n.createDefaultSetCallback(t.state))}};e.callHookWith(e=>{e.forEach(e=>e(r))},`editInspectorState`)},sendInspectorState(t){let n=Eb(t);e.callHook(`sendInspectorState`,{inspectorId:t,plugin:{descriptor:n.descriptor,setupFn:()=>({})}})},inspectComponentInspector(){return ib()},cancelInspectComponentInspector(){return rb()},getComponentRenderCode(e){let t=Dy(Rb.value,e);if(t)return typeof t?.type==`function`?t.type.toString():t.render.toString()},scrollToComponent(e){return ab({id:e})},openInEditor:Ub,getVueInspector:lb,toggleApp(e,t){let n=Lb.value.find(t=>t.id===e);n&&(Vb(e),Bb(n),_x(n,Rb),Cb(),lx(n.app,t))},inspectDOM(e){let t=Dy(Rb.value,e);if(t){let[e]=Fy(t);e&&(Qv.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__=e)}},updatePluginSettings(e,t,n){Zb(e,t,n)},getPluginSettings(e){return{options:Jb(e),values:Yb(e)}}}}R();var yx;(yx=Qv).__VUE_DEVTOOLS_ENV__??(yx.__VUE_DEVTOOLS_ENV__={vitePluginDetected:!1});var bx=Db(),xx;(xx=Qv).__VUE_DEVTOOLS_KIT_CONTEXT__??(xx.__VUE_DEVTOOLS_KIT_CONTEXT__={hooks:bx,get state(){return{...Hb,activeAppRecordId:Rb.id,activeAppRecord:Rb.value,appRecords:Lb.value}},api:vx(bx)});var Sx=Qv.__VUE_DEVTOOLS_KIT_CONTEXT__;R(),_y(yy(),1);var Cx;(Cx=Qv).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__??(Cx.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__={id:0,appIds:new Set}),R(),R();function wx(e){Hb.highPerfModeEnabled=e??!Hb.highPerfModeEnabled,!e&&Rb.value&&lx(Rb.value.app)}R(),R(),R();function Tx(e){Hb.devtoolsClientDetected={...Hb.devtoolsClientDetected,...e},wx(!Object.values(Hb.devtoolsClientDetected).some(Boolean))}var Ex;(Ex=Qv).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__??(Ex.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__=Tx),R(),R(),R(),R(),R(),R(),R();var Dx=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},Ox=class{constructor(e){this.generateIdentifier=e,this.kv=new Dx}register(e,t){this.kv.getByValue(e)||(t||=this.generateIdentifier(e),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},kx=class extends Ox{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t==`object`?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};R(),R();function Ax(e){if(`values`in Object)return Object.values(e);let t=[];for(let n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function jx(e,t){let n=Ax(e);if(`find`in n)return n.find(t);let r=n;for(let e=0;e<r.length;e++){let n=r[e];if(t(n))return n}}function Mx(e,t){Object.entries(e).forEach(([e,n])=>t(n,e))}function Nx(e,t){return e.indexOf(t)!==-1}function Px(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(t(r))return r}}var Fx=class{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return jx(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}};R(),R();var Ix=e=>Object.prototype.toString.call(e).slice(8,-1),Lx=e=>e===void 0,Rx=e=>e===null,zx=e=>typeof e!=`object`||!e||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Bx=e=>zx(e)&&Object.keys(e).length===0,Vx=e=>Array.isArray(e),Hx=e=>typeof e==`string`,Ux=e=>typeof e==`number`&&!isNaN(e),Wx=e=>typeof e==`boolean`,Gx=e=>e instanceof RegExp,Kx=e=>e instanceof Map,qx=e=>e instanceof Set,Jx=e=>Ix(e)===`Symbol`,Yx=e=>e instanceof Date&&!isNaN(e.valueOf()),Xx=e=>e instanceof Error,Zx=e=>typeof e==`number`&&isNaN(e),Qx=e=>Wx(e)||Rx(e)||Lx(e)||Ux(e)||Hx(e)||Jx(e),$x=e=>typeof e==`bigint`,eS=e=>e===1/0||e===-1/0,tS=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),nS=e=>e instanceof URL;R();var rS=e=>e.replace(/\./g,`\\.`),iS=e=>e.map(String).map(rS).join(`.`),aS=e=>{let t=[],n=``;for(let r=0;r<e.length;r++){let i=e.charAt(r);if(i===`\\`&&e.charAt(r+1)===`.`){n+=`.`,r++;continue}if(i===`.`){t.push(n),n=``;continue}n+=i}let r=n;return t.push(r),t};R();function oS(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var sS=[oS(Lx,`undefined`,()=>null,()=>void 0),oS($x,`bigint`,e=>e.toString(),e=>typeof BigInt<`u`?BigInt(e):(console.error(`Please add a BigInt polyfill.`),e)),oS(Yx,`Date`,e=>e.toISOString(),e=>new Date(e)),oS(Xx,`Error`,(e,t)=>{let n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(t=>{n[t]=e[t]}),n},(e,t)=>{let n=Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(t=>{n[t]=e[t]}),n}),oS(Gx,`regexp`,e=>``+e,e=>{let t=e.slice(1,e.lastIndexOf(`/`)),n=e.slice(e.lastIndexOf(`/`)+1);return new RegExp(t,n)}),oS(qx,`set`,e=>[...e.values()],e=>new Set(e)),oS(Kx,`map`,e=>[...e.entries()],e=>new Map(e)),oS(e=>Zx(e)||eS(e),`number`,e=>Zx(e)?`NaN`:e>0?`Infinity`:`-Infinity`,Number),oS(e=>e===0&&1/e==-1/0,`number`,()=>`-0`,Number),oS(nS,`URL`,e=>e.toString(),e=>new URL(e))];function cS(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var lS=cS((e,t)=>Jx(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>[`symbol`,t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{let r=n.symbolRegistry.getValue(t[1]);if(!r)throw Error(`Trying to deserialize unknown symbol`);return r}),uS=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),dS=cS(tS,e=>[`typed-array`,e.constructor.name],e=>[...e],(e,t)=>{let n=uS[t[1]];if(!n)throw Error(`Trying to deserialize unknown typed array`);return new n(e)});function fS(e,t){return e?.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var pS=cS(fS,(e,t)=>[`class`,t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{let n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};let r={};return n.forEach(t=>{r[t]=e[t]}),r},(e,t,n)=>{let r=n.classRegistry.getValue(t[1]);if(!r)throw Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(r.prototype),e)}),mS=cS((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>[`custom`,t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{let r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw Error(`Trying to deserialize unknown custom value`);return r.deserialize(e)}),hS=[pS,lS,mS,dS],gS=(e,t)=>{let n=Px(hS,n=>n.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};let r=Px(sS,n=>n.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},_S={};sS.forEach(e=>{_S[e.annotation]=e});var vS=(e,t,n)=>{if(Vx(t))switch(t[0]){case`symbol`:return lS.untransform(e,t,n);case`class`:return pS.untransform(e,t,n);case`custom`:return mS.untransform(e,t,n);case`typed-array`:return dS.untransform(e,t,n);default:throw Error(`Unknown transformation: `+t)}else{let r=_S[t];if(!r)throw Error(`Unknown transformation: `+t);return r.untransform(e,n)}};R();var yS=(e,t)=>{if(t>e.size)throw Error(`index out of bounds`);let n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function bS(e){if(Nx(e,`__proto__`))throw Error(`__proto__ is not allowed as a property`);if(Nx(e,`prototype`))throw Error(`prototype is not allowed as a property`);if(Nx(e,`constructor`))throw Error(`constructor is not allowed as a property`)}var xS=(e,t)=>{bS(t);for(let n=0;n<t.length;n++){let r=t[n];if(qx(e))e=yS(e,+r);else if(Kx(e)){let i=+r,a=+t[++n]==0?`key`:`value`,o=yS(e,i);switch(a){case`key`:e=o;break;case`value`:e=e.get(o);break}}else e=e[r]}return e},SS=(e,t,n)=>{if(bS(t),t.length===0)return n(e);let r=e;for(let e=0;e<t.length-1;e++){let n=t[e];if(Vx(r)){let e=+n;r=r[e]}else if(zx(r))r=r[n];else if(qx(r)){let e=+n;r=yS(r,e)}else if(Kx(r)){if(e===t.length-2)break;let i=+n,a=+t[++e]==0?`key`:`value`,o=yS(r,i);switch(a){case`key`:r=o;break;case`value`:r=r.get(o);break}}}let i=t[t.length-1];if(Vx(r)?r[+i]=n(r[+i]):zx(r)&&(r[i]=n(r[i])),qx(r)){let e=yS(r,+i),t=n(e);e!==t&&(r.delete(e),r.add(t))}if(Kx(r)){let e=+t[t.length-2],a=yS(r,e);switch(+i==0?`key`:`value`){case`key`:{let e=n(a);r.set(e,r.get(a)),e!==a&&r.delete(a);break}case`value`:r.set(a,n(r.get(a)));break}}return e};function CS(e,t,n=[]){if(!e)return;if(!Vx(e)){Mx(e,(e,r)=>CS(e,t,[...n,...aS(r)]));return}let[r,i]=e;i&&Mx(i,(e,r)=>{CS(e,t,[...n,...aS(r)])}),t(r,n)}function wS(e,t,n){return CS(t,(t,r)=>{e=SS(e,r,e=>vS(e,t,n))}),e}function TS(e,t){function n(t,n){let r=xS(e,aS(n));t.map(aS).forEach(t=>{e=SS(e,t,()=>r)})}if(Vx(t)){let[r,i]=t;r.forEach(t=>{e=SS(e,aS(t),()=>e)}),i&&Mx(i,n)}else Mx(t,n);return e}var ES=(e,t)=>zx(e)||Vx(e)||Kx(e)||qx(e)||fS(e,t);function DS(e,t,n){let r=n.get(e);r?r.push(t):n.set(e,[t])}function OS(e,t){let n={},r;return e.forEach(e=>{if(e.length<=1)return;t||(e=e.map(e=>e.map(String)).sort((e,t)=>e.length-t.length));let[i,...a]=e;i.length===0?r=a.map(iS):n[iS(i)]=a.map(iS)}),r?Bx(n)?[r]:[r,n]:Bx(n)?void 0:n}var kS=(e,t,n,r,i=[],a=[],o=new Map)=>{let s=Qx(e);if(!s){DS(e,i,t);let n=o.get(e);if(n)return r?{transformedValue:null}:n}if(!ES(e,n)){let t=gS(e,n),r=t?{transformedValue:t.value,annotations:[t.type]}:{transformedValue:e};return s||o.set(e,r),r}if(Nx(a,e))return{transformedValue:null};let c=gS(e,n),l=c?.value??e,u=Vx(l)?[]:{},d={};Mx(l,(s,c)=>{if(c===`__proto__`||c===`constructor`||c===`prototype`)throw Error(`Detected property ${c}. This is a prototype pollution risk, please remove it from your object.`);let l=kS(s,t,n,r,[...i,c],[...a,e],o);u[c]=l.transformedValue,Vx(l.annotations)?d[c]=l.annotations:zx(l.annotations)&&Mx(l.annotations,(e,t)=>{d[rS(c)+`.`+t]=e})});let f=Bx(d)?{transformedValue:u,annotations:c?[c.type]:void 0}:{transformedValue:u,annotations:c?[c.type,d]:d};return s||o.set(e,f),f};R(),R();function AS(e){return Object.prototype.toString.call(e).slice(8,-1)}function jS(e){return AS(e)===`Array`}function MS(e){if(AS(e)!==`Object`)return!1;let t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function NS(e,t,n,r,i){let a={}.propertyIsEnumerable.call(r,t)?`enumerable`:`nonenumerable`;a===`enumerable`&&(e[t]=n),i&&a===`nonenumerable`&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function PS(e,t={}){if(jS(e))return e.map(e=>PS(e,t));if(!MS(e))return e;let n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((n,r)=>{if(jS(t.props)&&!t.props.includes(r))return n;let i=e[r];return NS(n,r,PS(i,t),e,t.nonenumerable),n},{})}var FS=class{constructor({dedupe:e=!1}={}){this.classRegistry=new kx,this.symbolRegistry=new Ox(e=>e.description??``),this.customTransformerRegistry=new Fx,this.allowedErrorProps=[],this.dedupe=e}serialize(e){let t=new Map,n=kS(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});let i=OS(t,this.dedupe);return i&&(r.meta={...r.meta,referentialEqualities:i}),r}deserialize(e){let{json:t,meta:n}=e,r=PS(t);return n?.values&&(r=wS(r,n.values,this)),n?.referentialEqualities&&(r=TS(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};FS.defaultInstance=new FS,FS.serialize=FS.defaultInstance.serialize.bind(FS.defaultInstance),FS.deserialize=FS.defaultInstance.deserialize.bind(FS.defaultInstance),FS.stringify=FS.defaultInstance.stringify.bind(FS.defaultInstance),FS.parse=FS.defaultInstance.parse.bind(FS.defaultInstance),FS.registerClass=FS.defaultInstance.registerClass.bind(FS.defaultInstance),FS.registerSymbol=FS.defaultInstance.registerSymbol.bind(FS.defaultInstance),FS.registerCustom=FS.defaultInstance.registerCustom.bind(FS.defaultInstance),FS.allowErrorProps=FS.defaultInstance.allowErrorProps.bind(FS.defaultInstance),FS.serialize,FS.deserialize,FS.stringify,FS.parse,FS.registerClass,FS.registerCustom,FS.registerSymbol,FS.allowErrorProps,R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R();var IS;(IS=Qv).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__??(IS.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__=[]);var LS;(LS=Qv).__VUE_DEVTOOLS_KIT_RPC_CLIENT__??(LS.__VUE_DEVTOOLS_KIT_RPC_CLIENT__=null);var RS;(RS=Qv).__VUE_DEVTOOLS_KIT_RPC_SERVER__??(RS.__VUE_DEVTOOLS_KIT_RPC_SERVER__=null);var zS;(zS=Qv).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__??(zS.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__=null);var BS;(BS=Qv).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__??(BS.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__=null);var VS;(VS=Qv).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__??(VS.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__=null),R(),R(),R(),R(),R(),R(),R(),_(),d(),ie();var HS=`5.8.1`;function US(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var WS=US(`html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot`),GS=e=>t=>z_(t)&&e in t&&!!t[e],KS=GS(`isObject3D`),qS=GS(`isMesh`),JS=GS(`isCamera`),YS=GS(`isOrthographicCamera`),XS=GS(`isPerspectiveCamera`),ZS=GS(`isColor`),QS=e=>B_(e)||R_(e)||ZS(e),$S=e=>e instanceof Xr,eC=GS(`isBufferGeometry`),tC=GS(`isMaterial`),nC=GS(`isLight`),rC=GS(`isFog`),iC=GS(`isScene`),aC=e=>typeof e==`object`&&!!e&&`set`in e&&typeof e.set==`function`,oC=e=>aC(e)&&`copy`in e&&typeof e.copy==`function`,sC=e=>!!e?.constructor,cC=e=>JS(e)||YS(e)||XS(e),lC=e=>KS(e)||eC(e)||tC(e)||rC(e),uC=GS(`isPrimitive`),dC=e=>lC(e)&&`__tres`in e,fC=(e,t)=>{let n=0;for(let r=0;r<e.length;r++)t(e[r],r)&&(e[n]=e[r],n++);return e.length=n,e},pC=`[TresJS ▲ ■ ●] `;function mC(...e){typeof e[0]==`string`?e[0]=pC+e[0]:e.unshift(pC),console.error(...e)}function hC(...e){typeof e[0]==`string`?e[0]=pC+e[0]:e.unshift(pC),console.warn(...e)}function gC(e){(e=>`map`in e&&!!e.map)(e)&&e.map.dispose(),e.dispose()}function _C(e){if(e.parent&&e.removeFromParent?.(),delete e.__tres,[...e.children].forEach(e=>_C(e)),!(e instanceof Ci)){let t=e;e&&e.dispose?.(),t.geometry&&t.geometry.dispose(),Array.isArray(t.material)?t.material.forEach(e=>gC(e)):t.material&&gC(t.material)}}function vC(e,t){let n=e;if(t.includes(`-`)){let e=t.split(`-`),r=e.shift();for(;n&&e.length;)r in n?(n=n[r],r=e.shift()):r=yC(r,e.shift());return{target:n,key:yC(r,...e)}}else return{target:n,key:t}}function yC(...e){return e.map((e,t)=>t===0?e:e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function bC(e,t,n){let r=/-\d+$/;if(B_(n)){if(r.test(n)){let{target:t,key:i}=vC(e,n.replace(r,``));if(!Array.isArray(t[i])){let e=t[i],n=[];n.__tresDetach=()=>{n.every(e=>H_(e))&&(t[i]=e)},t[i]=n}}let{target:i,key:a}=vC(e,n);t.__tres.previousAttach=i[a],i[a]=TC(t)}else t.__tres.previousAttach=n(e,t)}function xC(e,t,n){if(B_(n)){let{target:r,key:i}=vC(e,n),a=t.__tres.previousAttach;a===void 0?delete r[i]:r[i]=a,`__tresDetach`in r&&r.__tresDetach()}else t.__tres?.previousAttach?.(e,t);delete t.__tres?.previousAttach}function SC(e,t,n){let r=e;return r.__tres={type:`unknown`,root:n,memoizedProps:{},objects:[],parent:null,previousAttach:null,...t},r.__tres.attach||(tC(r)?r.__tres.attach=`material`:eC(r)?r.__tres.attach=`geometry`:rC(r)&&(r.__tres.attach=`fog`)),r}function CC(e){let t=e?.__tres?.root;t?.renderer&&t.renderer.canBeInvalidated.value&&t.renderer.invalidate()}function wC(e,t,n,r,i){let a=[...t.__tres.objects],o=TC(t);if(e=TC(e),o===e)return!0;let s=SC(e,t.__tres??{},i),c=t.parent??t.__tres.parent??null,l={...t.__tres.memoizedProps};delete l.object;for(let e of a)EC(e,i),DC(e,i);o.__tres.objects=[],r.remove(t);for(let[e,t]of Object.entries(l))r.patchProp(s,e,s[e],t);n(e),r.insert(t,c);for(let e of a)r.insert(e,t);return!0}function TC(e){if(uC(e)){let t=e;return t.object.__tres=t.__tres,t.object}else return e}function EC(e,t){let n=e.__tres?.parent||t.scene.value;e.__tres&&(e.__tres.parent=null),n&&n.__tres&&`objects`in n.__tres&&fC(n.__tres.objects,t=>t!==e),e.__tres?.attach?xC(n,e,e.__tres.attach):(e.parent?.remove?.(TC(e)),e.parent=null)}function DC(e,t){e.traverse?.(e=>{cC(e)&&t.camera.deregisterCamera(e)}),cC(e)&&t.camera.deregisterCamera(e),CC(e)}var OC=({sizes:e})=>{let t=w([]),n=x(()=>t.value[0]),r=e=>{let n=JS(e)?e:t.value.find(t=>t.uuid===e);n&&(t.value=[n,...t.value.filter(({uuid:e})=>e!==n.uuid)])};return ue(()=>{e.aspectRatio.value&&t.value.forEach(t=>{XS(t)&&(t.aspect=e.aspectRatio.value,t.updateProjectionMatrix())})}),{activeCamera:n,cameras:t,registerCamera:(e,n=!1)=>{t.value.some(({uuid:t})=>t===e.uuid)||(t.value.push(e),n&&r(e.uuid))},deregisterCamera:e=>{t.value=t.value.filter(({uuid:t})=>t!==e.uuid)},setActiveCamera:r}};function kC(){let e=new Map,t=new Set,n=0,r=!1,i=()=>{let n=Array.from(e.entries()).sort((e,t)=>{let n=e[1].priority-t[1].priority;return n===0?e[1].addI-t[1].addI:n});t.clear(),n.forEach(e=>t.add(e[0]))},a=n=>{e.delete(n),t.delete(n)};return{on:(t,i=0)=>{e.set(t,{priority:i,addI:n++});let o=()=>a(t);return Xg(o),r=!0,{off:o}},off:a,trigger:(...e)=>(r&&=(i(),!1),Promise.all(Array.from(t).map(t=>t(...e)))),dispose:()=>{e.clear(),t.clear()},get count(){return e.size}}}var AC=w({}),jC=e=>Object.assign(AC.value,e),MC=(e,t,n)=>{if(!L_(e.setPixelRatio))return;let r=0;if(n&&Array.isArray(n)&&n.length>=2){let[e,i]=n;r=pr.clamp(t,e,i)}else r=R_(n)?n:t;r!==e.getPixelRatio?.()&&e.setPixelRatio(r)},NC=Number.parseInt(`184`),PC=179;function FC(){if(NC>=PC){let e=new Wd;return{getDelta:()=>e.getDelta(),getElapsed:()=>e.getElapsed(),update:()=>e.update(),start:()=>{typeof document<`u`&&e.connect(document)},stop:()=>e.disconnect()}}else{let e=new Nf;return{getDelta:()=>e.getDelta(),getElapsed:()=>e.elapsedTime,update:()=>{},start:()=>e.start(),stop:()=>e.stop()}}}var IC=(e,{fpsLimit:t}={})=>{let n=FC(),r={before:Zg(),after:Zg()},{pause:i,resume:a,isActive:o}=w_(()=>{n.update();let t={delta:n.getDelta(),elapsed:n.getElapsed()};r.before.trigger(t),e(),r.after.trigger(t)},{immediate:!1,fpsLimit:t});return{start:()=>{n.start(),a()},stop:()=>{n.stop(),i()},isActive:o,onBeforeLoop:r.before.on,onLoop:r.after.on}},LC=class extends Error{name=`TresRendererError`;constructor(e,t,n){super(e,n),this.code=t}};function RC({scene:t,canvas:n,options:r,fpsLimit:i,contextParts:{sizes:a,camera:o}}){let s=L_(r.renderer)?r.renderer({sizes:a,scene:t,camera:o,canvas:n}):new Yg({...r,canvas:b_(n)}),c=w(oe(r.renderMode)===`manual`?0:1),l=x(()=>oe(r.renderMode)===`on-demand`&&c.value===0),u=()=>t.value.traverse(e=>{e instanceof bo&&e.material instanceof Na&&(e.material.needsUpdate=!0)}),d=(e=1)=>{l.value&&(c.value=Math.min(60,c.value+e))},f=()=>{if(oe(r.renderMode)!==`manual`)throw Error(`advance can only be called in manual render mode.`);c.value=1},p=()=>{oe(r.renderMode)===`on-demand`&&d()},m=x(()=>oe(r.renderMode)===`always`),h=e=>z_(e)&&`isRenderer`in e&&!!e.isRenderer,g=Zg(),_=Zg(),v=!1,y=w(!1),S=w(null),C=async()=>{try{h(s)&&await s.init(),y.value=!0}catch(e){let t=new LC(e instanceof Error?e.message:`Unknown error`,`INITIALIZATION_FAILED`,{cause:e instanceof Error?e:void 0});S.value=t,console.error(`[TresJS] Renderer initialization failed. This may occur if:
4104
+ }`,Bg=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let n=new tc(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){let t=e.cameras[0].viewport,n=new tu({vertexShader:Rg,fragmentShader:zg,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new bo(new Pl(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},Vg=class extends Bn{constructor(e,t){super();let n=this,r=null,i=1,a=null,o=`local-floor`,s=1,c=null,l=null,u=null,d=null,f=null,p=null,m=typeof XRWebGLBinding<`u`,h=new Bg,g={},_=t.getContextAttributes(),v=null,y=null,b=[],x=[],S=new N,C=null,w=new ud;w.viewport=new Nr;let T=new ud;T.viewport=new Nr;let E=[w,T],D=new Ud,O=null,ee=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=b[e];return t===void 0&&(t=new hi,b[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=b[e];return t===void 0&&(t=new hi,b[e]=t),t.getGripSpace()},this.getHand=function(e){let t=b[e];return t===void 0&&(t=new hi,b[e]=t),t.getHandSpace()};function te(e){let t=x.indexOf(e.inputSource);if(t===-1)return;let n=b[t];n!==void 0&&(n.update(e.inputSource,e.frame,c||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function ne(){r.removeEventListener(`select`,te),r.removeEventListener(`selectstart`,te),r.removeEventListener(`selectend`,te),r.removeEventListener(`squeeze`,te),r.removeEventListener(`squeezestart`,te),r.removeEventListener(`squeezeend`,te),r.removeEventListener(`end`,ne),r.removeEventListener(`inputsourceschange`,re);for(let e=0;e<b.length;e++){let t=x[e];t!==null&&(x[e]=null,b[e].disconnect(t))}O=null,ee=null,h.reset();for(let e in g)delete g[e];e.setRenderTarget(v),f=null,d=null,u=null,r=null,y=null,de.stop(),n.isPresenting=!1,e.setPixelRatio(C),e.setSize(S.width,S.height,!1),n.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(e){i=e,n.isPresenting===!0&&j(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(e){o=e,n.isPresenting===!0&&j(`WebXRManager: Cannot change reference space type while presenting.`)},this.getReferenceSpace=function(){return c||a},this.setReferenceSpace=function(e){c=e},this.getBaseLayer=function(){return d===null?f:d},this.getBinding=function(){return u===null&&m&&(u=new XRWebGLBinding(r,t)),u},this.getFrame=function(){return p},this.getSession=function(){return r},this.setSession=async function(l){if(r=l,r!==null){if(v=e.getRenderTarget(),r.addEventListener(`select`,te),r.addEventListener(`selectstart`,te),r.addEventListener(`selectend`,te),r.addEventListener(`squeeze`,te),r.addEventListener(`squeezestart`,te),r.addEventListener(`squeezeend`,te),r.addEventListener(`end`,ne),r.addEventListener(`inputsourceschange`,re),_.xrCompatible!==!0&&await t.makeXRCompatible(),C=e.getPixelRatio(),e.getSize(S),m&&`createProjectionLayer`in XRWebGLBinding.prototype){let n=null,a=null,o=null;_.depth&&(o=_.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,n=_.stencil?Ge:We,a=_.stencil?Re:Ne);let s={colorFormat:t.RGBA8,depthFormat:o,scaleFactor:i};u=this.getBinding(),d=u.createProjectionLayer(s),r.updateRenderState({layers:[d]}),e.setPixelRatio(1),e.setSize(d.textureWidth,d.textureHeight,!1),y=new Fr(d.textureWidth,d.textureHeight,{format:Ue,type:ke,depthTexture:new $s(d.textureWidth,d.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:_.stencil,colorSpace:e.outputColorSpace,samples:_.antialias?4:0,resolveDepthBuffer:d.ignoreDepthValues===!1,resolveStencilBuffer:d.ignoreDepthValues===!1})}else{let n={antialias:_.antialias,alpha:!0,depth:_.depth,stencil:_.stencil,framebufferScaleFactor:i};f=new XRWebGLLayer(r,t,n),r.updateRenderState({baseLayer:f}),e.setPixelRatio(1),e.setSize(f.framebufferWidth,f.framebufferHeight,!1),y=new Fr(f.framebufferWidth,f.framebufferHeight,{format:Ue,type:ke,colorSpace:e.outputColorSpace,stencilBuffer:_.stencil,resolveDepthBuffer:f.ignoreDepthValues===!1,resolveStencilBuffer:f.ignoreDepthValues===!1})}y.isXRRenderTarget=!0,this.setFoveation(s),c=null,a=await r.requestReferenceSpace(o),de.setContext(r),de.start(),n.isPresenting=!0,n.dispatchEvent({type:`sessionstart`})}},this.getEnvironmentBlendMode=function(){if(r!==null)return r.environmentBlendMode},this.getDepthTexture=function(){return h.getDepthTexture()};function re(e){for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=x.indexOf(n);r>=0&&(x[r]=null,b[r].disconnect(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=x.indexOf(n);if(r===-1){for(let e=0;e<b.length;e++)if(e>=x.length){x.push(n),r=e;break}else if(x[e]===null){x[e]=n,r=e;break}if(r===-1)break}let i=b[r];i&&i.connect(n)}}let ie=new P,ae=new P;function oe(e,t,n){ie.setFromMatrixPosition(t.matrixWorld),ae.setFromMatrixPosition(n.matrixWorld);let r=ie.distanceTo(ae),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function se(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(r===null)return;let t=e.near,n=e.far;h.texture!==null&&(h.depthNear>0&&(t=h.depthNear),h.depthFar>0&&(n=h.depthFar)),D.near=T.near=w.near=t,D.far=T.far=w.far=n,(O!==D.near||ee!==D.far)&&(r.updateRenderState({depthNear:D.near,depthFar:D.far}),O=D.near,ee=D.far),D.layers.mask=e.layers.mask|6,w.layers.mask=D.layers.mask&-5,T.layers.mask=D.layers.mask&-3;let i=e.parent,a=D.cameras;se(D,i);for(let e=0;e<a.length;e++)se(a[e],i);a.length===2?oe(D,w,T):D.projectionMatrix.copy(w.projectionMatrix),ce(e,D,i)};function ce(e,t,n){n===null?e.matrix.copy(t.matrixWorld):(e.matrix.copy(n.matrixWorld),e.matrix.invert(),e.matrix.multiply(t.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=Wn*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}this.getCamera=function(){return D},this.getFoveation=function(){if(!(d===null&&f===null))return s},this.setFoveation=function(e){s=e,d!==null&&(d.fixedFoveation=e),f!==null&&f.fixedFoveation!==void 0&&(f.fixedFoveation=e)},this.hasDepthSensing=function(){return h.texture!==null},this.getDepthSensingMesh=function(){return h.getMesh(D)},this.getCameraTexture=function(e){return g[e]};let le=null;function ue(t,i){if(l=i.getViewerPose(c||a),p=i,l!==null){let t=l.views;f!==null&&(e.setRenderTargetFramebuffer(y,f.framebuffer),e.setRenderTarget(y));let i=!1;t.length!==D.cameras.length&&(D.cameras.length=0,i=!0);for(let n=0;n<t.length;n++){let r=t[n],a=null;if(f!==null)a=f.getViewport(r);else{let t=u.getViewSubImage(d,r);a=t.viewport,n===0&&(e.setRenderTargetTextures(y,t.colorTexture,t.depthStencilTexture),e.setRenderTarget(y))}let o=E[n];o===void 0&&(o=new ud,o.layers.enable(n),o.viewport=new Nr,E[n]=o),o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.quaternion,o.scale),o.projectionMatrix.fromArray(r.projectionMatrix),o.projectionMatrixInverse.copy(o.projectionMatrix).invert(),o.viewport.set(a.x,a.y,a.width,a.height),n===0&&(D.matrix.copy(o.matrix),D.matrix.decompose(D.position,D.quaternion,D.scale)),i===!0&&D.cameras.push(o)}let a=r.enabledFeatures;if(a&&a.includes(`depth-sensing`)&&r.depthUsage==`gpu-optimized`&&m){u=n.getBinding();let e=u.getDepthInformation(t[0]);e&&e.isValid&&e.texture&&h.init(e,r.renderState)}if(a&&a.includes(`camera-access`)&&m){e.state.unbindTexture(),u=n.getBinding();for(let e=0;e<t.length;e++){let n=t[e].camera;if(n){let e=g[n];e||(e=new tc,g[n]=e);let t=u.getCameraImage(n);e.sourceTexture=t}}}}for(let e=0;e<b.length;e++){let t=x[e],n=b[e];t!==null&&n!==void 0&&n.update(t,i,c||a)}le&&le(t,i),i.detectedPlanes&&n.dispatchEvent({type:`planesdetected`,data:i}),p=null}let de=new Np;de.setAnimationLoop(ue),this.setAnimationLoop=function(e){le=e},this.dispose=function(){}}},Hg=new F,Ug=new _r;Ug.set(-1,0,0,0,1,0,0,0,1);function Wg(e,t){function n(e,t){e.matrixAutoUpdate===!0&&e.updateMatrix(),t.value.copy(e.matrix)}function r(t,n){n.color.getRGB(t.fogColor.value,Zl(e)),n.isFog?(t.fogNear.value=n.near,t.fogFar.value=n.far):n.isFogExp2&&(t.fogDensity.value=n.density)}function i(e,t,n,r,i){t.isNodeMaterial?t.uniformsNeedUpdate=!1:t.isMeshBasicMaterial?a(e,t):t.isMeshLambertMaterial?(a(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshToonMaterial?(a(e,t),d(e,t)):t.isMeshPhongMaterial?(a(e,t),u(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshStandardMaterial?(a(e,t),f(e,t),t.isMeshPhysicalMaterial&&p(e,t,i)):t.isMeshMatcapMaterial?(a(e,t),m(e,t)):t.isMeshDepthMaterial?a(e,t):t.isMeshDistanceMaterial?(a(e,t),h(e,t)):t.isMeshNormalMaterial?a(e,t):t.isLineBasicMaterial?(o(e,t),t.isLineDashedMaterial&&s(e,t)):t.isPointsMaterial?c(e,t,n,r):t.isSpriteMaterial?l(e,t):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}function a(e,r){e.opacity.value=r.opacity,r.color&&e.diffuse.value.copy(r.color),r.emissive&&e.emissive.value.copy(r.emissive).multiplyScalar(r.emissiveIntensity),r.map&&(e.map.value=r.map,n(r.map,e.mapTransform)),r.alphaMap&&(e.alphaMap.value=r.alphaMap,n(r.alphaMap,e.alphaMapTransform)),r.bumpMap&&(e.bumpMap.value=r.bumpMap,n(r.bumpMap,e.bumpMapTransform),e.bumpScale.value=r.bumpScale,r.side===1&&(e.bumpScale.value*=-1)),r.normalMap&&(e.normalMap.value=r.normalMap,n(r.normalMap,e.normalMapTransform),e.normalScale.value.copy(r.normalScale),r.side===1&&e.normalScale.value.negate()),r.displacementMap&&(e.displacementMap.value=r.displacementMap,n(r.displacementMap,e.displacementMapTransform),e.displacementScale.value=r.displacementScale,e.displacementBias.value=r.displacementBias),r.emissiveMap&&(e.emissiveMap.value=r.emissiveMap,n(r.emissiveMap,e.emissiveMapTransform)),r.specularMap&&(e.specularMap.value=r.specularMap,n(r.specularMap,e.specularMapTransform)),r.alphaTest>0&&(e.alphaTest.value=r.alphaTest);let i=t.get(r),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,e.envMapRotation.value.setFromMatrix4(Hg.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(Ug),e.reflectivity.value=r.reflectivity,e.ior.value=r.ior,e.refractionRatio.value=r.refractionRatio),r.lightMap&&(e.lightMap.value=r.lightMap,e.lightMapIntensity.value=r.lightMapIntensity,n(r.lightMap,e.lightMapTransform)),r.aoMap&&(e.aoMap.value=r.aoMap,e.aoMapIntensity.value=r.aoMapIntensity,n(r.aoMap,e.aoMapTransform))}function o(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,n(t.map,e.mapTransform))}function s(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}function c(e,t,r,i){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*r,e.scale.value=i*.5,t.map&&(e.map.value=t.map,n(t.map,e.uvTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,n(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function l(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,n(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,n(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function u(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}function d(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}function f(e,t){e.metalness.value=t.metalness,t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap,n(t.metalnessMap,e.metalnessMapTransform)),e.roughness.value=t.roughness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap,n(t.roughnessMap,e.roughnessMapTransform)),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}function p(e,t,r){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,n(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,n(t.sheenRoughnessMap,e.sheenRoughnessMapTransform))),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,n(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,n(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,n(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===1&&e.clearcoatNormalScale.value.negate())),t.dispersion>0&&(e.dispersion.value=t.dispersion),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,n(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,n(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform))),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=r.texture,e.transmissionSamplerSize.value.set(r.width,r.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,n(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,n(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,n(t.anisotropyMap,e.anisotropyMapTransform))),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,n(t.specularColorMap,e.specularColorMapTransform)),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,n(t.specularIntensityMap,e.specularIntensityMapTransform))}function m(e,t){t.matcap&&(e.matcap.value=t.matcap)}function h(e,n){let r=t.get(n).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}return{refreshFogUniforms:r,refreshMaterialUniforms:i}}function Gg(e,t,n,r){let i={},a={},o=[],s=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function c(e,t){let n=t.program;r.uniformBlockBinding(e,n)}function l(e,n){let o=i[e.id];o===void 0&&(m(e),o=u(e),i[e.id]=o,e.addEventListener(`dispose`,g));let s=n.program;r.updateUBOMapping(e,s);let c=t.render.frame;a[e.id]!==c&&(f(e),a[e.id]=c)}function u(t){let n=d();t.__bindingPointIndex=n;let r=e.createBuffer(),i=t.__size,a=t.usage;return e.bindBuffer(e.UNIFORM_BUFFER,r),e.bufferData(e.UNIFORM_BUFFER,i,a),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,n,r),r}function d(){for(let e=0;e<s;e++)if(o.indexOf(e)===-1)return o.push(e),e;return M(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function f(t){let n=i[t.id],r=t.uniforms,a=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let t=0,n=r.length;t<n;t++){let n=Array.isArray(r[t])?r[t]:[r[t]];for(let r=0,i=n.length;r<i;r++){let i=n[r];if(p(i,t,r,a)===!0){let t=i.__offset,n=Array.isArray(i.value)?i.value:[i.value],r=0;for(let a=0;a<n.length;a++){let o=n[a],s=h(o);typeof o==`number`||typeof o==`boolean`?(i.__data[0]=o,e.bufferSubData(e.UNIFORM_BUFFER,t+r,i.__data)):o.isMatrix3?(i.__data[0]=o.elements[0],i.__data[1]=o.elements[1],i.__data[2]=o.elements[2],i.__data[3]=0,i.__data[4]=o.elements[3],i.__data[5]=o.elements[4],i.__data[6]=o.elements[5],i.__data[7]=0,i.__data[8]=o.elements[6],i.__data[9]=o.elements[7],i.__data[10]=o.elements[8],i.__data[11]=0):ArrayBuffer.isView(o)?i.__data.set(new o.constructor(o.buffer,o.byteOffset,i.__data.length)):(o.toArray(i.__data,r),r+=s.storage/Float32Array.BYTES_PER_ELEMENT)}e.bufferSubData(e.UNIFORM_BUFFER,t,i.__data)}}}e.bindBuffer(e.UNIFORM_BUFFER,null)}function p(e,t,n,r){let i=e.value,a=t+`_`+n;if(r[a]===void 0)return typeof i==`number`||typeof i==`boolean`?r[a]=i:ArrayBuffer.isView(i)?r[a]=i.slice():r[a]=i.clone(),!0;{let e=r[a];if(typeof i==`number`||typeof i==`boolean`){if(e!==i)return r[a]=i,!0}else if(ArrayBuffer.isView(i))return!0;else if(e.equals(i)===!1)return e.copy(i),!0}return!1}function m(e){let t=e.uniforms,n=0;for(let e=0,r=t.length;e<r;e++){let r=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=Array.isArray(t.value)?t.value:[t.value];for(let e=0,r=i.length;e<r;e++){let r=i[e],a=h(r),o=n%16,s=o%a.boundary,c=o+s;n+=s,c!==0&&16-c<a.storage&&(n+=16-c),t.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),t.__offset=n,n+=a.storage}}}let r=n%16;return r>0&&(n+=16-r),e.__size=n,e.__cache={},this}function h(e){let t={boundary:0,storage:0};return typeof e==`number`||typeof e==`boolean`?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?j(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(e)?(t.boundary=16,t.storage=e.byteLength):j(`WebGLRenderer: Unsupported uniform value type.`,e),t}function g(t){let n=t.target;n.removeEventListener(`dispose`,g);let r=o.indexOf(n.__bindingPointIndex);o.splice(r,1),e.deleteBuffer(i[n.id]),delete i[n.id],delete a[n.id]}function _(){for(let t in i)e.deleteBuffer(i[t]);o=[],i={},a={}}return{bind:c,update:l,dispose:_}}var Kg=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]),qg=null;function Jg(){return qg===null&&(qg=new Po(Kg,16,16,Je,Fe),qg.name=`DFG_LUT`,qg.minFilter=Te,qg.magFilter=Te,qg.wrapS=ve,qg.wrapT=ve,qg.generateMipmaps=!1,qg.needsUpdate=!0),qg}var Yg=class{constructor(e={}){let{canvas:t=kn(),context:n=null,depth:r=!0,stencil:i=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:s=!0,preserveDrawingBuffer:c=!1,powerPreference:l=`default`,failIfMajorPerformanceCaveat:u=!1,reversedDepthBuffer:d=!1,outputBufferType:f=ke}=e;this.isWebGLRenderer=!0;let p;if(n!==null){if(typeof WebGLRenderingContext<`u`&&n instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);p=n.getContextAttributes().alpha}else p=a;let m=f,h=new Set([Ze,Ye,qe]),g=new Set([ke,Ne,je,Re,Ie,Le]),_=new Uint32Array(4),v=new Int32Array(4),y=new P,b=null,x=null,S=[],C=[],w=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=0,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let T=this,E=!1,D=null;this._outputColorSpace=Xt;let O=0,ee=0,te=null,ne=-1,re=null,ie=new Nr,ae=new Nr,oe=null,se=new I(0),ce=0,le=t.width,ue=t.height,de=1,fe=null,pe=null,me=new Nr(0,0,le,ue),he=new Nr(0,0,le,ue),ge=!1,_e=new es,ve=!1,ye=!1,be=new F,xe=new P,Se=new Nr,Ce={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},we=!1;function Te(){return te===null?de:1}let k=n;function Ee(e,n){return t.getContext(e,n)}try{let e={alpha:!0,depth:r,stencil:i,antialias:o,premultipliedAlpha:s,preserveDrawingBuffer:c,powerPreference:l,failIfMajorPerformanceCaveat:u};if(`setAttribute`in t&&t.setAttribute(`data-engine`,`three.js r184`),t.addEventListener(`webglcontextlost`,ct,!1),t.addEventListener(`webglcontextrestored`,lt,!1),t.addEventListener(`webglcontextcreationerror`,ut,!1),k===null){let t=`webgl2`;if(k=Ee(t,e),k===null)throw Ee(t)?Error(`Error creating WebGL context with your selected attributes.`):Error(`Error creating WebGL context.`)}}catch(e){throw M(`WebGLRenderer: `+e.message),e}let Oe,Ae,A,Me,Pe,ze,Be,Ve,He,Ue,We,Ge,Ke,Je,Xe,Qe,$e,et,tt,nt,rt,it,at;function ot(){Oe=new pm(k),Oe.init(),rt=new Lg(k,Oe),Ae=new Up(k,Oe,e,rt),A=new Fg(k,Oe),Ae.reversedDepthBuffer&&d&&A.buffers.depth.setReversed(!0),Me=new gm(k),Pe=new hg,ze=new Ig(k,Oe,A,Pe,Ae,rt,Me),Be=new fm(T),Ve=new Pp(k),it=new Vp(k,Ve),He=new mm(k,Ve,Me,it),Ue=new vm(k,He,Ve,it,Me),et=new _m(k,Ae,ze),Xe=new Wp(Pe),We=new mg(T,Be,Oe,Ae,it,Xe),Ge=new Wg(T,Pe),Ke=new yg,Je=new Eg(Oe),$e=new Bp(T,Be,A,Ue,p,s),Qe=new Pg(T,Ue,Ae),at=new Gg(k,Me,Ae,A),tt=new Hp(k,Oe,Me),nt=new hm(k,Oe,Me),Me.programs=We.programs,T.capabilities=Ae,T.extensions=Oe,T.properties=Pe,T.renderLists=Ke,T.shadowMap=Qe,T.state=A,T.info=Me}ot(),m!==1009&&(w=new bm(m,t.width,t.height,r,i));let st=new Vg(T,k);this.xr=st,this.getContext=function(){return k},this.getContextAttributes=function(){return k.getContextAttributes()},this.forceContextLoss=function(){let e=Oe.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=Oe.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return de},this.setPixelRatio=function(e){e!==void 0&&(de=e,this.setSize(le,ue,!1))},this.getSize=function(e){return e.set(le,ue)},this.setSize=function(e,n,r=!0){if(st.isPresenting){j(`WebGLRenderer: Can't change size while VR device is presenting.`);return}le=e,ue=n,t.width=Math.floor(e*de),t.height=Math.floor(n*de),r===!0&&(t.style.width=e+`px`,t.style.height=n+`px`),w!==null&&w.setSize(t.width,t.height),this.setViewport(0,0,e,n)},this.getDrawingBufferSize=function(e){return e.set(le*de,ue*de).floor()},this.setDrawingBufferSize=function(e,n,r){le=e,ue=n,de=r,t.width=Math.floor(e*r),t.height=Math.floor(n*r),this.setViewport(0,0,e,n)},this.setEffects=function(e){if(m===1009){M(`THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(e){for(let t=0;t<e.length;t++)if(e[t].isOutputPass===!0){j(`THREE.WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}w.setEffects(e||[])},this.getCurrentViewport=function(e){return e.copy(ie)},this.getViewport=function(e){return e.copy(me)},this.setViewport=function(e,t,n,r){e.isVector4?me.set(e.x,e.y,e.z,e.w):me.set(e,t,n,r),A.viewport(ie.copy(me).multiplyScalar(de).round())},this.getScissor=function(e){return e.copy(he)},this.setScissor=function(e,t,n,r){e.isVector4?he.set(e.x,e.y,e.z,e.w):he.set(e,t,n,r),A.scissor(ae.copy(he).multiplyScalar(de).round())},this.getScissorTest=function(){return ge},this.setScissorTest=function(e){A.setScissorTest(ge=e)},this.setOpaqueSort=function(e){fe=e},this.setTransparentSort=function(e){pe=e},this.getClearColor=function(e){return e.copy($e.getClearColor())},this.setClearColor=function(){$e.setClearColor(...arguments)},this.getClearAlpha=function(){return $e.getClearAlpha()},this.setClearAlpha=function(){$e.setClearAlpha(...arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(te!==null){let t=te.texture.format;e=h.has(t)}if(e){let e=te.texture.type,t=g.has(e),n=$e.getClearColor(),r=$e.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(_[0]=i,_[1]=a,_[2]=o,_[3]=r,k.clearBufferuiv(k.COLOR,0,_)):(v[0]=i,v[1]=a,v[2]=o,v[3]=r,k.clearBufferiv(k.COLOR,0,v))}else r|=k.COLOR_BUFFER_BIT}t&&(r|=k.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=k.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&k.clear(r)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.setNodesHandler=function(e){e.setRenderer(this),D=e},this.dispose=function(){t.removeEventListener(`webglcontextlost`,ct,!1),t.removeEventListener(`webglcontextrestored`,lt,!1),t.removeEventListener(`webglcontextcreationerror`,ut,!1),$e.dispose(),Ke.dispose(),Je.dispose(),Pe.dispose(),Be.dispose(),Ue.dispose(),it.dispose(),at.dispose(),We.dispose(),st.dispose(),st.removeEventListener(`sessionstart`,_t),st.removeEventListener(`sessionend`,vt),yt.stop()};function ct(e){e.preventDefault(),Pn(`WebGLRenderer: Context Lost.`),E=!0}function lt(){Pn(`WebGLRenderer: Context Restored.`),E=!1;let e=Me.autoReset,t=Qe.enabled,n=Qe.autoUpdate,r=Qe.needsUpdate,i=Qe.type;ot(),Me.autoReset=e,Qe.enabled=t,Qe.autoUpdate=n,Qe.needsUpdate=r,Qe.type=i}function ut(e){M(`WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function dt(e){let t=e.target;t.removeEventListener(`dispose`,dt),ft(t)}function ft(e){pt(e),Pe.remove(e)}function pt(e){let t=Pe.get(e).programs;t!==void 0&&(t.forEach(function(e){We.releaseProgram(e)}),e.isShaderMaterial&&We.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=Ce);let o=i.isMesh&&i.matrixWorld.determinant()<0,s=kt(e,t,n,r,i);A.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=He.getWireframeAttribute(n),c===void 0)return;l=2}let u=n.drawRange,d=n.attributes.position,f=u.start*l,p=(u.start+u.count)*l;a!==null&&(f=Math.max(f,a.start*l),p=Math.min(p,(a.start+a.count)*l)),c===null?d!=null&&(f=Math.max(f,0),p=Math.min(p,d.count)):(f=Math.max(f,0),p=Math.min(p,c.count));let m=p-f;if(m<0||m===1/0)return;it.setup(i,r,s,n,c);let h,g=tt;if(c!==null&&(h=Ve.get(c),g=nt,g.setIndex(h)),i.isMesh)r.wireframe===!0?(A.setLineWidth(r.wireframeLinewidth*Te()),g.setMode(k.LINES)):g.setMode(k.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),A.setLineWidth(e*Te()),i.isLineSegments?g.setMode(k.LINES):i.isLineLoop?g.setMode(k.LINE_LOOP):g.setMode(k.LINE_STRIP)}else i.isPoints?g.setMode(k.POINTS):i.isSprite&&g.setMode(k.TRIANGLES);if(i.isBatchedMesh)if(Oe.get(`WEBGL_multi_draw`))g.renderMultiDraw(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount);else{let e=i._multiDrawStarts,t=i._multiDrawCounts,n=i._multiDrawCount,a=c?Ve.get(c).bytesPerElement:1,o=Pe.get(r).currentProgram.getUniforms();for(let r=0;r<n;r++)o.setValue(k,`_gl_DrawID`,r),g.render(e[r]/a,t[r])}else if(i.isInstancedMesh)g.renderInstances(f,m,i.count);else if(n.isInstancedBufferGeometry){let e=n._maxInstanceCount===void 0?1/0:n._maxInstanceCount,t=Math.min(n.instanceCount,e);g.renderInstances(f,m,t)}else g.render(f,m)};function mt(e,t,n){e.transparent===!0&&e.side===2&&e.forceSinglePass===!1?(e.side=1,e.needsUpdate=!0,Tt(e,t,n),e.side=0,e.needsUpdate=!0,Tt(e,t,n),e.side=2):Tt(e,t,n)}this.compile=function(e,t,n=null){n===null&&(n=e),x=Je.get(n),x.init(t),C.push(x),n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(x.pushLight(e),e.castShadow&&x.pushShadow(e))}),e!==n&&e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(x.pushLight(e),e.castShadow&&x.pushShadow(e))}),x.setupLights();let r=new Set;return e.traverse(function(e){if(!(e.isMesh||e.isPoints||e.isLine||e.isSprite))return;let t=e.material;if(t)if(Array.isArray(t))for(let i=0;i<t.length;i++){let a=t[i];mt(a,n,e),r.add(a)}else mt(t,n,e),r.add(t)}),x=C.pop(),r},this.compileAsync=function(e,t,n=null){let r=this.compile(e,t,n);return new Promise(t=>{function n(){if(r.forEach(function(e){Pe.get(e).currentProgram.isReady()&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}Oe.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let ht=null;function gt(e){ht&&ht(e)}function _t(){yt.stop()}function vt(){yt.start()}let yt=new Np;yt.setAnimationLoop(gt),typeof self<`u`&&yt.setContext(self),this.setAnimationLoop=function(e){ht=e,st.setAnimationLoop(e),e===null?yt.stop():yt.start()},st.addEventListener(`sessionstart`,_t),st.addEventListener(`sessionend`,vt),this.render=function(e,t){if(t!==void 0&&t.isCamera!==!0){M(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(E===!0)return;D!==null&&D.renderStart(e,t);let n=st.enabled===!0&&st.isPresenting===!0,r=w!==null&&(te===null||n)&&w.begin(T,te);if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),st.enabled===!0&&st.isPresenting===!0&&(w===null||w.isCompositing()===!1)&&(st.cameraAutoUpdate===!0&&st.updateCamera(t),t=st.getCamera()),e.isScene===!0&&e.onBeforeRender(T,e,t,te),x=Je.get(e,C.length),x.init(t),x.state.textureUnits=ze.getTextureUnits(),C.push(x),be.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),_e.setFromProjectionMatrix(be,vn,t.reversedDepth),ye=this.localClippingEnabled,ve=Xe.init(this.clippingPlanes,ye),b=Ke.get(e,S.length),b.init(),S.push(b),st.enabled===!0&&st.isPresenting===!0){let e=T.xr.getDepthSensingMesh();e!==null&&bt(e,t,-1/0,T.sortObjects)}bt(e,t,0,T.sortObjects),b.finish(),T.sortObjects===!0&&b.sort(fe,pe),we=st.enabled===!1||st.isPresenting===!1||st.hasDepthSensing()===!1,we&&$e.addToRenderList(b,e),this.info.render.frame++,ve===!0&&Xe.beginShadows();let i=x.state.shadowsArray;if(Qe.render(i,e,t),ve===!0&&Xe.endShadows(),this.info.autoReset===!0&&this.info.reset(),(r&&w.hasRenderPass())===!1){let n=b.opaque,r=b.transmissive;if(x.setupLights(),t.isArrayCamera){let i=t.cameras;if(r.length>0)for(let t=0,a=i.length;t<a;t++){let a=i[t];St(n,r,e,a)}we&&$e.render(e);for(let t=0,n=i.length;t<n;t++){let n=i[t];xt(b,e,n,n.viewport)}}else r.length>0&&St(n,r,e,t),we&&$e.render(e),xt(b,e,t)}te!==null&&ee===0&&(ze.updateMultisampleRenderTarget(te),ze.updateRenderTargetMipmap(te)),r&&w.end(T),e.isScene===!0&&e.onAfterRender(T,e,t),it.resetDefaultState(),ne=-1,re=null,C.pop(),C.length>0?(x=C[C.length-1],ze.setTextureUnits(x.state.textureUnits),ve===!0&&Xe.setGlobalState(T.clippingPlanes,x.state.camera)):x=null,S.pop(),b=S.length>0?S[S.length-1]:null,D!==null&&D.renderEnd()};function bt(e,t,n,r){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLightProbeGrid)x.pushLightProbeGrid(e);else if(e.isLight)x.pushLight(e),e.castShadow&&x.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||_e.intersectsSprite(e)){r&&Se.setFromMatrixPosition(e.matrixWorld).applyMatrix4(be);let t=Ue.update(e),i=e.material;i.visible&&b.push(e,t,i,n,Se.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||_e.intersectsObject(e))){let t=Ue.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),Se.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),Se.copy(e.boundingSphere.center)),Se.applyMatrix4(e.matrixWorld).applyMatrix4(be)),Array.isArray(i)){let r=t.groups;for(let a=0,o=r.length;a<o;a++){let o=r[a],s=i[o.materialIndex];s&&s.visible&&b.push(e,t,s,n,Se.z,o)}}else i.visible&&b.push(e,t,i,n,Se.z,null)}}let i=e.children;for(let e=0,a=i.length;e<a;e++)bt(i[e],t,n,r)}function xt(e,t,n,r){let{opaque:i,transmissive:a,transparent:o}=e;x.setupLightsView(n),ve===!0&&Xe.setGlobalState(T.clippingPlanes,n),r&&A.viewport(ie.copy(r)),i.length>0&&Ct(i,t,n),a.length>0&&Ct(a,t,n),o.length>0&&Ct(o,t,n),A.buffers.depth.setTest(!0),A.buffers.depth.setMask(!0),A.buffers.color.setMask(!0),A.setPolygonOffset(!1)}function St(e,t,n,r){if((n.isScene===!0?n.overrideMaterial:null)!==null)return;if(x.state.transmissionRenderTarget[r.id]===void 0){let e=Oe.has(`EXT_color_buffer_half_float`)||Oe.has(`EXT_color_buffer_float`);x.state.transmissionRenderTarget[r.id]=new Fr(1,1,{generateMipmaps:!0,type:e?Fe:ke,minFilter:De,samples:Math.max(4,Ae.samples),stencilBuffer:i,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Sr.workingColorSpace})}let a=x.state.transmissionRenderTarget[r.id],o=r.viewport||ie;a.setSize(o.z*T.transmissionResolutionScale,o.w*T.transmissionResolutionScale);let s=T.getRenderTarget(),c=T.getActiveCubeFace(),l=T.getActiveMipmapLevel();T.setRenderTarget(a),T.getClearColor(se),ce=T.getClearAlpha(),ce<1&&T.setClearColor(16777215,.5),T.clear(),we&&$e.render(n);let u=T.toneMapping;T.toneMapping=0;let d=r.viewport;if(r.viewport!==void 0&&(r.viewport=void 0),x.setupLightsView(r),ve===!0&&Xe.setGlobalState(T.clippingPlanes,r),Ct(e,n,r),ze.updateMultisampleRenderTarget(a),ze.updateRenderTargetMipmap(a),Oe.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let i=0,a=t.length;i<a;i++){let{object:a,geometry:o,material:s,group:c}=t[i];if(s.side===2&&a.layers.test(r.layers)){let t=s.side;s.side=1,s.needsUpdate=!0,wt(a,n,r,o,s,c),s.side=t,s.needsUpdate=!0,e=!0}}e===!0&&(ze.updateMultisampleRenderTarget(a),ze.updateRenderTargetMipmap(a))}T.setRenderTarget(s,c,l),T.setClearColor(se,ce),d!==void 0&&(r.viewport=d),T.toneMapping=u}function Ct(e,t,n){let r=t.isScene===!0?t.overrideMaterial:null;for(let i=0,a=e.length;i<a;i++){let a=e[i],{object:o,geometry:s,group:c}=a,l=a.material;l.allowOverride===!0&&r!==null&&(l=r),o.layers.test(n.layers)&&wt(o,t,n,s,l,c)}}function wt(e,t,n,r,i,a){e.onBeforeRender(T,t,n,r,i,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),i.onBeforeRender(T,t,n,r,e,a),i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,i.needsUpdate=!0,T.renderBufferDirect(n,t,r,i,e,a),i.side=0,i.needsUpdate=!0,T.renderBufferDirect(n,t,r,i,e,a),i.side=2):T.renderBufferDirect(n,t,r,i,e,a),e.onAfterRender(T,t,n,r,i,a)}function Tt(e,t,n){t.isScene!==!0&&(t=Ce);let r=Pe.get(e),i=x.state.lights,a=x.state.shadowsArray,o=i.state.version,s=We.getParameters(e,i.state,a,t,n,x.state.lightProbeGridArray),c=We.getProgramCacheKey(s),l=r.programs;r.environment=e.isMeshStandardMaterial||e.isMeshLambertMaterial||e.isMeshPhongMaterial?t.environment:null,r.fog=t.fog;let u=e.isMeshStandardMaterial||e.isMeshLambertMaterial&&!e.envMap||e.isMeshPhongMaterial&&!e.envMap;r.envMap=Be.get(e.envMap||r.environment,u),r.envMapRotation=r.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation,l===void 0&&(e.addEventListener(`dispose`,dt),l=new Map,r.programs=l);let d=l.get(c);if(d!==void 0){if(r.currentProgram===d&&r.lightsStateVersion===o)return Dt(e,s),d}else s.uniforms=We.getUniforms(e),D!==null&&e.isNodeMaterial&&D.build(e,n,s),e.onBeforeCompile(s,T),d=We.acquireProgram(s,c),l.set(c,d),r.uniforms=s.uniforms;let f=r.uniforms;return(!e.isShaderMaterial&&!e.isRawShaderMaterial||e.clipping===!0)&&(f.clippingPlanes=Xe.uniform),Dt(e,s),r.needsLights=jt(e),r.lightsStateVersion=o,r.needsLights&&(f.ambientLightColor.value=i.state.ambient,f.lightProbe.value=i.state.probe,f.directionalLights.value=i.state.directional,f.directionalLightShadows.value=i.state.directionalShadow,f.spotLights.value=i.state.spot,f.spotLightShadows.value=i.state.spotShadow,f.rectAreaLights.value=i.state.rectArea,f.ltc_1.value=i.state.rectAreaLTC1,f.ltc_2.value=i.state.rectAreaLTC2,f.pointLights.value=i.state.point,f.pointLightShadows.value=i.state.pointShadow,f.hemisphereLights.value=i.state.hemi,f.directionalShadowMatrix.value=i.state.directionalShadowMatrix,f.spotLightMatrix.value=i.state.spotLightMatrix,f.spotLightMap.value=i.state.spotLightMap,f.pointShadowMatrix.value=i.state.pointShadowMatrix),r.lightProbeGrid=x.state.lightProbeGridArray.length>0,r.currentProgram=d,r.uniformsList=null,d}function Et(e){if(e.uniformsList===null){let t=e.currentProgram.getUniforms();e.uniformsList=Dh.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function Dt(e,t){let n=Pe.get(e);n.outputColorSpace=t.outputColorSpace,n.batching=t.batching,n.batchingColor=t.batchingColor,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.instancingMorph=t.instancingMorph,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}function Ot(e,t){if(e.length===0)return null;if(e.length===1)return e[0].texture===null?null:e[0];y.setFromMatrixPosition(t.matrixWorld);for(let t=0,n=e.length;t<n;t++){let n=e[t];if(n.texture!==null&&n.boundingBox.containsPoint(y))return n}return null}function kt(e,t,n,r,i){t.isScene!==!0&&(t=Ce),ze.resetTextureUnits();let a=t.fog,o=r.isMeshStandardMaterial||r.isMeshLambertMaterial||r.isMeshPhongMaterial?t.environment:null,s=te===null?T.outputColorSpace:te.isXRRenderTarget===!0?te.texture.colorSpace:Sr.workingColorSpace,c=r.isMeshStandardMaterial||r.isMeshLambertMaterial&&!r.envMap||r.isMeshPhongMaterial&&!r.envMap,l=Be.get(r.envMap||o,c),u=r.vertexColors===!0&&!!n.attributes.color&&n.attributes.color.itemSize===4,d=!!n.attributes.tangent&&(!!r.normalMap||r.anisotropy>0),f=!!n.morphAttributes.position,p=!!n.morphAttributes.normal,m=!!n.morphAttributes.color,h=0;r.toneMapped&&(te===null||te.isXRRenderTarget===!0)&&(h=T.toneMapping);let g=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=g===void 0?0:g.length,v=Pe.get(r),y=x.state.lights;if(ve===!0&&(ye===!0||e!==re)){let t=e===re&&r.id===ne;Xe.setState(r,e,t)}let b=!1;r.version===v.__version?v.needsLights&&v.lightsStateVersion!==y.state.version?b=!0:v.outputColorSpace===s?i.isBatchedMesh&&v.batching===!1||!i.isBatchedMesh&&v.batching===!0||i.isBatchedMesh&&v.batchingColor===!0&&i.colorTexture===null||i.isBatchedMesh&&v.batchingColor===!1&&i.colorTexture!==null||i.isInstancedMesh&&v.instancing===!1||!i.isInstancedMesh&&v.instancing===!0||i.isSkinnedMesh&&v.skinning===!1||!i.isSkinnedMesh&&v.skinning===!0||i.isInstancedMesh&&v.instancingColor===!0&&i.instanceColor===null||i.isInstancedMesh&&v.instancingColor===!1&&i.instanceColor!==null||i.isInstancedMesh&&v.instancingMorph===!0&&i.morphTexture===null||i.isInstancedMesh&&v.instancingMorph===!1&&i.morphTexture!==null?b=!0:v.envMap===l?r.fog===!0&&v.fog!==a||v.numClippingPlanes!==void 0&&(v.numClippingPlanes!==Xe.numPlanes||v.numIntersection!==Xe.numIntersection)?b=!0:v.vertexAlphas===u&&v.vertexTangents===d&&v.morphTargets===f&&v.morphNormals===p&&v.morphColors===m&&v.toneMapping===h&&v.morphTargetsCount===_?!!v.lightProbeGrid!=x.state.lightProbeGridArray.length>0&&(b=!0):b=!0:b=!0:b=!0:(b=!0,v.__version=r.version);let S=v.currentProgram;b===!0&&(S=Tt(r,t,i),D&&r.isNodeMaterial&&D.onUpdateProgram(r,S,v));let C=!1,w=!1,E=!1,O=S.getUniforms(),ee=v.uniforms;if(A.useProgram(S.program)&&(C=!0,w=!0,E=!0),r.id!==ne&&(ne=r.id,w=!0),v.needsLights){let e=Ot(x.state.lightProbeGridArray,i);v.lightProbeGrid!==e&&(v.lightProbeGrid=e,w=!0)}if(C||re!==e){A.buffers.depth.getReversed()&&e.reversedDepth!==!0&&(e._reversedDepth=!0,e.updateProjectionMatrix()),O.setValue(k,`projectionMatrix`,e.projectionMatrix),O.setValue(k,`viewMatrix`,e.matrixWorldInverse);let t=O.map.cameraPosition;t!==void 0&&t.setValue(k,xe.setFromMatrixPosition(e.matrixWorld)),Ae.logarithmicDepthBuffer&&O.setValue(k,`logDepthBufFC`,2/(Math.log(e.far+1)/Math.LN2)),(r.isMeshPhongMaterial||r.isMeshToonMaterial||r.isMeshLambertMaterial||r.isMeshBasicMaterial||r.isMeshStandardMaterial||r.isShaderMaterial)&&O.setValue(k,`isOrthographic`,e.isOrthographicCamera===!0),re!==e&&(re=e,w=!0,E=!0)}if(v.needsLights&&(y.state.directionalShadowMap.length>0&&O.setValue(k,`directionalShadowMap`,y.state.directionalShadowMap,ze),y.state.spotShadowMap.length>0&&O.setValue(k,`spotShadowMap`,y.state.spotShadowMap,ze),y.state.pointShadowMap.length>0&&O.setValue(k,`pointShadowMap`,y.state.pointShadowMap,ze)),i.isSkinnedMesh){O.setOptional(k,i,`bindMatrix`),O.setOptional(k,i,`bindMatrixInverse`);let e=i.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),O.setValue(k,`boneTexture`,e.boneTexture,ze))}i.isBatchedMesh&&(O.setOptional(k,i,`batchingTexture`),O.setValue(k,`batchingTexture`,i._matricesTexture,ze),O.setOptional(k,i,`batchingIdTexture`),O.setValue(k,`batchingIdTexture`,i._indirectTexture,ze),O.setOptional(k,i,`batchingColorTexture`),i._colorsTexture!==null&&O.setValue(k,`batchingColorTexture`,i._colorsTexture,ze));let ie=n.morphAttributes;if((ie.position!==void 0||ie.normal!==void 0||ie.color!==void 0)&&et.update(i,n,S),(w||v.receiveShadow!==i.receiveShadow)&&(v.receiveShadow=i.receiveShadow,O.setValue(k,`receiveShadow`,i.receiveShadow)),(r.isMeshStandardMaterial||r.isMeshLambertMaterial||r.isMeshPhongMaterial)&&r.envMap===null&&t.environment!==null&&(ee.envMapIntensity.value=t.environmentIntensity),ee.dfgLUT!==void 0&&(ee.dfgLUT.value=Jg()),w){if(O.setValue(k,`toneMappingExposure`,T.toneMappingExposure),v.needsLights&&At(ee,E),a&&r.fog===!0&&Ge.refreshFogUniforms(ee,a),Ge.refreshMaterialUniforms(ee,r,de,ue,x.state.transmissionRenderTarget[e.id]),v.needsLights&&v.lightProbeGrid){let e=v.lightProbeGrid;ee.probesSH.value=e.texture,ee.probesMin.value.copy(e.boundingBox.min),ee.probesMax.value.copy(e.boundingBox.max),ee.probesResolution.value.copy(e.resolution)}Dh.upload(k,Et(v),ee,ze)}if(r.isShaderMaterial&&r.uniformsNeedUpdate===!0&&(Dh.upload(k,Et(v),ee,ze),r.uniformsNeedUpdate=!1),r.isSpriteMaterial&&O.setValue(k,`center`,i.center),O.setValue(k,`modelViewMatrix`,i.modelViewMatrix),O.setValue(k,`normalMatrix`,i.normalMatrix),O.setValue(k,`modelMatrix`,i.matrixWorld),r.uniformsGroups!==void 0){let e=r.uniformsGroups;for(let t=0,n=e.length;t<n;t++){let n=e[t];at.update(n,S),at.bind(n,S)}}return S}function At(e,t){e.ambientLightColor.needsUpdate=t,e.lightProbe.needsUpdate=t,e.directionalLights.needsUpdate=t,e.directionalLightShadows.needsUpdate=t,e.pointLights.needsUpdate=t,e.pointLightShadows.needsUpdate=t,e.spotLights.needsUpdate=t,e.spotLightShadows.needsUpdate=t,e.rectAreaLights.needsUpdate=t,e.hemisphereLights.needsUpdate=t}function jt(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&e.lights===!0}this.getActiveCubeFace=function(){return O},this.getActiveMipmapLevel=function(){return ee},this.getRenderTarget=function(){return te},this.setRenderTargetTextures=function(e,t,n){let r=Pe.get(e);r.__autoAllocateDepthBuffer=e.resolveDepthBuffer===!1,r.__autoAllocateDepthBuffer===!1&&(r.__useRenderToTexture=!1),Pe.get(e.texture).__webglTexture=t,Pe.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:n,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,t){let n=Pe.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=t===void 0};let Mt=k.createFramebuffer();this.setRenderTarget=function(e,t=0,n=0){te=e,O=t,ee=n;let r=null,i=!1,a=!1;if(e){let o=Pe.get(e);if(o.__useDefaultFramebuffer!==void 0){A.bindFramebuffer(k.FRAMEBUFFER,o.__webglFramebuffer),ie.copy(e.viewport),ae.copy(e.scissor),oe=e.scissorTest,A.viewport(ie),A.scissor(ae),A.setScissorTest(oe),ne=-1;return}else if(o.__webglFramebuffer===void 0)ze.setupRenderTarget(e);else if(o.__hasExternalTextures)ze.rebindTextures(e,Pe.get(e.texture).__webglTexture,Pe.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(o.__boundDepthTexture!==t){if(t!==null&&Pe.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error(`WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.`);ze.setupDepthRenderbuffer(e)}}let s=e.texture;(s.isData3DTexture||s.isDataArrayTexture||s.isCompressedArrayTexture)&&(a=!0);let c=Pe.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][n]:c[t],i=!0):r=e.samples>0&&ze.useMultisampledRTT(e)===!1?Pe.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,ie.copy(e.viewport),ae.copy(e.scissor),oe=e.scissorTest}else ie.copy(me).multiplyScalar(de).floor(),ae.copy(he).multiplyScalar(de).floor(),oe=ge;if(n!==0&&(r=Mt),A.bindFramebuffer(k.FRAMEBUFFER,r)&&A.drawBuffers(e,r),A.viewport(ie),A.scissor(ae),A.setScissorTest(oe),i){let r=Pe.get(e.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(a){let r=t;for(let t=0;t<e.textures.length;t++){let i=Pe.get(e.textures[t]);k.framebufferTextureLayer(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Pe.get(e.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,t.__webglTexture,n)}ne=-1},this.readRenderTargetPixels=function(e,t,n,r,i,a,o,s=0){if(!(e&&e.isWebGLRenderTarget)){M(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let c=Pe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(c=c[o]),c){A.bindFramebuffer(k.FRAMEBUFFER,c);try{let o=e.textures[s],c=o.format,l=o.type;if(e.textures.length>1&&k.readBuffer(k.COLOR_ATTACHMENT0+s),!Ae.textureFormatReadable(c)){M(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!Ae.textureTypeReadable(l)){M(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}t>=0&&t<=e.width-r&&n>=0&&n<=e.height-i&&k.readPixels(t,n,r,i,rt.convert(c),rt.convert(l),a)}finally{let e=te===null?null:Pe.get(te).__webglFramebuffer;A.bindFramebuffer(k.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,n,r,i,a,o,s=0){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let c=Pe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(c=c[o]),c)if(t>=0&&t<=e.width-r&&n>=0&&n<=e.height-i){A.bindFramebuffer(k.FRAMEBUFFER,c);let o=e.textures[s],l=o.format,u=o.type;if(e.textures.length>1&&k.readBuffer(k.COLOR_ATTACHMENT0+s),!Ae.textureFormatReadable(l))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!Ae.textureTypeReadable(u))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let d=k.createBuffer();k.bindBuffer(k.PIXEL_PACK_BUFFER,d),k.bufferData(k.PIXEL_PACK_BUFFER,a.byteLength,k.STREAM_READ),k.readPixels(t,n,r,i,rt.convert(l),rt.convert(u),0);let f=te===null?null:Pe.get(te).__webglFramebuffer;A.bindFramebuffer(k.FRAMEBUFFER,f);let p=k.fenceSync(k.SYNC_GPU_COMMANDS_COMPLETE,0);return k.flush(),await Rn(k,p,4),k.bindBuffer(k.PIXEL_PACK_BUFFER,d),k.getBufferSubData(k.PIXEL_PACK_BUFFER,0,a),k.deleteBuffer(d),k.deleteSync(p),a}else throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)},this.copyFramebufferToTexture=function(e,t=null,n=0){let r=2**-n,i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=t===null?0:t.x,s=t===null?0:t.y;ze.setTexture2D(e,0),k.copyTexSubImage2D(k.TEXTURE_2D,n,0,0,o,s,i,a),A.unbindTexture()};let Nt=k.createFramebuffer(),Pt=k.createFramebuffer();this.copyTextureToTexture=function(e,t,n=null,r=null,i=0,a=0){let o,s,c,l,u,d,f,p,m,h=e.isCompressedTexture?e.mipmaps[a]:e.image;if(n!==null)o=n.max.x-n.min.x,s=n.max.y-n.min.y,c=n.isBox3?n.max.z-n.min.z:1,l=n.min.x,u=n.min.y,d=n.isBox3?n.min.z:0;else{let t=2**-i;o=Math.floor(h.width*t),s=Math.floor(h.height*t),c=e.isDataArrayTexture?h.depth:e.isData3DTexture?Math.floor(h.depth*t):1,l=0,u=0,d=0}r===null?(f=0,p=0,m=0):(f=r.x,p=r.y,m=r.z);let g=rt.convert(t.format),_=rt.convert(t.type),v;t.isData3DTexture?(ze.setTexture3D(t,0),v=k.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(ze.setTexture2DArray(t,0),v=k.TEXTURE_2D_ARRAY):(ze.setTexture2D(t,0),v=k.TEXTURE_2D),A.activeTexture(k.TEXTURE0),A.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,t.flipY),A.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),A.pixelStorei(k.UNPACK_ALIGNMENT,t.unpackAlignment);let y=A.getParameter(k.UNPACK_ROW_LENGTH),b=A.getParameter(k.UNPACK_IMAGE_HEIGHT),x=A.getParameter(k.UNPACK_SKIP_PIXELS),S=A.getParameter(k.UNPACK_SKIP_ROWS),C=A.getParameter(k.UNPACK_SKIP_IMAGES);A.pixelStorei(k.UNPACK_ROW_LENGTH,h.width),A.pixelStorei(k.UNPACK_IMAGE_HEIGHT,h.height),A.pixelStorei(k.UNPACK_SKIP_PIXELS,l),A.pixelStorei(k.UNPACK_SKIP_ROWS,u),A.pixelStorei(k.UNPACK_SKIP_IMAGES,d);let w=e.isDataArrayTexture||e.isData3DTexture,T=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=Pe.get(e),r=Pe.get(t),h=Pe.get(n.__renderTarget),g=Pe.get(r.__renderTarget);A.bindFramebuffer(k.READ_FRAMEBUFFER,h.__webglFramebuffer),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(k.framebufferTextureLayer(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,Pe.get(e).__webglTexture,i,d+n),k.framebufferTextureLayer(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,Pe.get(t).__webglTexture,a,m+n)),k.blitFramebuffer(l,u,o,s,f,p,o,s,k.DEPTH_BUFFER_BIT,k.NEAREST);A.bindFramebuffer(k.READ_FRAMEBUFFER,null),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Pe.has(e)){let n=Pe.get(e),r=Pe.get(t);A.bindFramebuffer(k.READ_FRAMEBUFFER,Nt),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,Pt);for(let e=0;e<c;e++)w?k.framebufferTextureLayer(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):k.framebufferTexture2D(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,n.__webglTexture,i),T?k.framebufferTextureLayer(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):k.framebufferTexture2D(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,r.__webglTexture,a),i===0?T?k.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):k.copyTexSubImage2D(v,a,f,p,l,u,o,s):k.blitFramebuffer(l,u,o,s,f,p,o,s,k.COLOR_BUFFER_BIT,k.NEAREST);A.bindFramebuffer(k.READ_FRAMEBUFFER,null),A.bindFramebuffer(k.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?k.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?k.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):k.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?k.texSubImage2D(k.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?k.compressedTexSubImage2D(k.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):k.texSubImage2D(k.TEXTURE_2D,a,f,p,o,s,g,_,h);A.pixelStorei(k.UNPACK_ROW_LENGTH,y),A.pixelStorei(k.UNPACK_IMAGE_HEIGHT,b),A.pixelStorei(k.UNPACK_SKIP_PIXELS,x),A.pixelStorei(k.UNPACK_SKIP_ROWS,S),A.pixelStorei(k.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&k.generateMipmap(v),A.unbindTexture()},this.initRenderTarget=function(e){Pe.get(e).__webglFramebuffer===void 0&&ze.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?ze.setTextureCube(e,0):e.isData3DTexture?ze.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?ze.setTexture2DArray(e,0):ze.setTexture2D(e,0),A.unbindTexture()},this.resetState=function(){O=0,ee=0,te=null,A.reset(),it.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return vn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorSpace=Sr._getDrawingBufferColorSpace(e),t.unpackColorSpace=Sr._getUnpackColorSpace()}};d(),_();function Xg(e){return i()?(S(e),!0):!1}function Zg(){let e=new Set,t=t=>{e.delete(t)};return{on:n=>{e.add(n);let r=()=>t(n);return Xg(r),{off:r}},off:t,trigger:(...t)=>Promise.all(Array.from(e).map(e=>e(...t))),clear:()=>{e.clear()}}}var Qg=new WeakMap,$g=(...e)=>{let t=e[0],r=O()?.proxy;if(r==null&&!ee())throw Error(`injectLocal must be called in setup`);return r&&Qg.has(r)&&t in Qg.get(r)?Qg.get(r)[t]:n(...e)};function e_(e,t){let n=O()?.proxy;if(n==null)throw Error(`provideLocal must be called in setup`);Qg.has(n)||Qg.set(n,Object.create(null));let r=Qg.get(n);return r[e]=t,s(e,t)}function t_(e,t){let n=t?.injectionKey||Symbol(e.name||`InjectionState`),r=t?.defaultValue;return[(...t)=>{let r=e(...t);return e_(n,r),r},()=>$g(n,r)]}var n_=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var r_=Object.prototype.toString,i_=e=>r_.call(e)===`[object Object]`,a_=()=>{};function o_(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}function s_(e,t={}){let n,r,i=a_,a=e=>{clearTimeout(e),i(),i=a_},o;return s=>{let c=oe(e),l=oe(t.maxWait);return n&&a(n),c<=0||l!==void 0&&l<=0?(r&&=(a(r),void 0),Promise.resolve(s())):new Promise((e,u)=>{i=t.rejectOnCancel?u:e,o=s,l&&!r&&(r=setTimeout(()=>{n&&a(n),r=void 0,e(o())},l)),n=setTimeout(()=>{r&&a(r),r=void 0,e(s())},c)})}}function c_(e,t=!1,n=`Timeout`){return new Promise((r,i)=>{setTimeout(t?()=>i(n):r,e)})}function l_(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function u_(e){return Array.isArray(e)?e:[e]}function d_(e){return e||O()}function f_(e,t=200,n={}){return o_(s_(t,n),e)}function p_(e,t=200,n={}){let r=w(oe(e)),i=f_(()=>{r.value=e.value},t,n);return le(e,()=>i()),E(r)}function m_(t,n=!0,r){d_(r)?f(t,r):n?t():e(t)}function h_(e,t=1e3,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=null,o=g(!1);function s(){a&&=(clearInterval(a),null)}function c(){o.value=!1,s()}function l(){let n=oe(t);n<=0||(o.value=!0,i&&e(),s(),o.value&&(a=setInterval(e,n)))}return r&&n_&&l(),(y(t)||typeof t==`function`)&&Xg(le(t,()=>{o.value&&n_&&l()})),Xg(c),{isActive:E(o),pause:c,resume:l}}function g_(e,t,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=g(!1),o;function s(){o&&=(clearTimeout(o),void 0)}function c(){a.value=!1,s()}function l(...n){i&&e(),s(),a.value=!0,o=setTimeout(()=>{a.value=!1,o=void 0,e(...n)},oe(t))}return r&&(a.value=!0,n_&&l()),Xg(c),{isPending:E(a),start:l,stop:c}}function __(e=1e3,t={}){let{controls:n=!1,callback:r}=t,i=g_(r??a_,e,t),a=x(()=>!i.isPending.value);return n?{ready:a,...i}:a}function v_(e,t,n){return le(e,t,{...n,immediate:!0})}d(),_();var y_=n_?window:void 0;n_&&window.document,n_&&window.navigator,n_&&window.location;function b_(e){let t=oe(e);return t?.$el??t}function x_(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=x(()=>{let t=u_(oe(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),a=v_(()=>[i.value?.map(e=>b_(e))??[y_].filter(e=>e!=null),u_(oe(i.value?e[1]:e[0])),u_(D(i.value?e[2]:e[1])),oe(i.value?e[3]:e[2])],([e,i,a,o])=>{if(n(),!e?.length||!i?.length||!a?.length)return;let s=i_(o)?{...o}:o;t.push(...e.flatMap(e=>i.flatMap(t=>a.map(n=>r(e,t,n,s)))))},{flush:`post`});return Xg(n),()=>{a(),n()}}function S_(){let e=g(!1),t=O();return t&&f(()=>{e.value=!0},t),e}function C_(e){let t=S_();return x(()=>(t.value,!!e()))}function w_(e,t={}){let{immediate:n=!0,fpsLimit:r=void 0,window:i=y_,once:a=!1}=t,o=g(!1),s=x(()=>r?1e3/oe(r):null),c=0,u=null;function d(t){if(!o.value||!i)return;c||=t;let n=t-c;if(s.value&&n<s.value){u=i.requestAnimationFrame(d);return}if(c=t,e({delta:n,timestamp:t}),a){o.value=!1,u=null;return}u=i.requestAnimationFrame(d)}function f(){!o.value&&i&&(o.value=!0,c=0,u=i.requestAnimationFrame(d))}function p(){o.value=!1,u!=null&&i&&(i.cancelAnimationFrame(u),u=null)}return n&&f(),Xg(p),{isActive:l(o),pause:p,resume:f}}var T_=Symbol(`vueuse-ssr-width`);function E_(){let e=ee()?$g(T_,null):null;return typeof e==`number`?e:void 0}function D_(e,t={}){let{window:n=y_,ssrWidth:r=E_()}=t,i=C_(()=>n&&`matchMedia`in n&&typeof n.matchMedia==`function`),a=g(typeof r==`number`),o=g(),s=g(!1);return ue(()=>{if(a.value){a.value=!i.value;let t=oe(e).split(`,`);s.value=t.some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||i);return n&&a&&(a=r>=l_(n[1])),i&&a&&(a=r<=l_(i[1])),t?!a:a});return}i.value&&(o.value=n.matchMedia(oe(e)),s.value=o.value.matches)}),x_(o,`change`,e=>{s.value=e.matches},{passive:!0}),x(()=>s.value)}function O_(e={}){let{window:t=y_}=e,n=g(1),r=D_(()=>`(resolution: ${n.value}dppx)`,e),i=a_;return t&&(i=v_(r,()=>n.value=t.devicePixelRatio)),{pixelRatio:l(n),stop:i}}function k_(e,t,n={}){let{window:r=y_,...i}=n,a,o=C_(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=le(x(()=>{let t=oe(e);return Array.isArray(t)?t.map(e=>b_(e)):[b_(t)]}),e=>{if(s(),o.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),l=()=>{s(),c()};return Xg(l),{isSupported:o,stop:l}}function A_(e,t={width:0,height:0},n={}){let{window:r=y_,box:i=`content-box`}=n,a=x(()=>(b_(e)?.namespaceURI)?.includes(`svg`)),o=g(t.width),s=g(t.height),{stop:c}=k_(e,([t])=>{let n=i===`border-box`?t.borderBoxSize:i===`content-box`?t.contentBoxSize:t.devicePixelContentBoxSize;if(r&&a.value){let t=b_(e);if(t){let e=t.getBoundingClientRect();o.value=e.width,s.value=e.height}}else if(n){let e=u_(n);o.value=e.reduce((e,{inlineSize:t})=>e+t,0),s.value=e.reduce((e,{blockSize:t})=>e+t,0)}else o.value=t.contentRect.width,s.value=t.contentRect.height},n);m_(()=>{let n=b_(e);n&&(o.value=`offsetWidth`in n?n.offsetWidth:t.width,s.value=`offsetHeight`in n?n.offsetHeight:t.height)});let l=le(()=>b_(e),e=>{o.value=e?t.width:0,s.value=e?t.height:0});function u(){c(),l()}return{width:o,height:s,stop:u}}function j_(e){let t=g(0);if(typeof performance>`u`)return t;let n=e?.every??10,r=performance.now(),i=0;return w_(()=>{if(i+=1,i>=n){let e=performance.now(),n=e-r;t.value=Math.round(1e3/(n/i)),r=e,i=0}}),t}function M_(e={}){let t=w(),n=C_(()=>typeof performance<`u`&&`memory`in performance);if(n.value){let{interval:n=1e3}=e;h_(()=>{t.value=performance.memory},n,{immediate:e.immediate,immediateCallback:e.immediateCallback})}return{isSupported:n,memory:t}}function N_(e={}){let{window:t=y_,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:i=!0,includeScrollbar:a=!0,type:o=`inner`}=e,s=g(n),c=g(r),l=()=>{if(t)if(o===`outer`)s.value=t.outerWidth,c.value=t.outerHeight;else if(o===`visual`&&t.visualViewport){let{width:e,height:n,scale:r}=t.visualViewport;s.value=Math.round(e*r),c.value=Math.round(n*r)}else a?(s.value=t.innerWidth,c.value=t.innerHeight):(s.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};l(),m_(l);let u={passive:!0};return x_(`resize`,l,u),t&&o===`visual`&&t.visualViewport&&x_(t.visualViewport,`resize`,l,u),i&&le(D_(`(orientation: portrait)`),()=>l()),{width:s,height:c}}function P_(e){let t=(e?.replace(/([A-Z])+/g,F_))?.split(/(?=[A-Z])|[\.\-\s_]/).map(e=>e.toLowerCase())??[];return t.length===0?``:t.length===1?t[0]:t.reduce((e,t)=>`${e}${t.charAt(0).toUpperCase()}${t.slice(1)}`)}function F_(e){if(!e||e.length===0)return``;let t=e.toLowerCase();return t.substring(0,1).toUpperCase()+t.substring(1,t.length)}new Map(Object.entries({Æ:`Ae`,Ð:`D`,Ø:`O`,Þ:`Th`,ß:`ss`,æ:`ae`,ð:`d`,ø:`o`,þ:`th`,Đ:`D`,đ:`d`,Ħ:`H`,ħ:`h`,ı:`i`,IJ:`IJ`,ij:`ij`,ĸ:`k`,Ŀ:`L`,ŀ:`l`,Ł:`L`,ł:`l`,ʼn:`'n`,Ŋ:`N`,ŋ:`n`,Œ:`Oe`,œ:`oe`,Ŧ:`T`,ŧ:`t`,ſ:`s`}));function I_(e,t){if(Object.is(e,t))return!0;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=Reflect.ownKeys(e),r=Reflect.ownKeys(t);if(n.length!==r.length)return!1;for(let r=0;r<n.length;r++)if(!Reflect.has(t,n[r])||!I_(e[n[r]],t[n[r]]))return!1;return!0}function L_(e){return typeof e==`function`}function R_(e){return typeof e==`number`&&!Number.isNaN(e)}function z_(e){return V_(e,`[object Object]`)}function B_(e){return typeof e==`string`}function V_(e,t){return Object.prototype.toString.call(e)===t}function H_(e){return e===void 0}var U_=class{nativeEvent;NONE=0;CAPTURING_PHASE=1;AT_TARGET=2;BUBBLING_PHASE=3;relatedTarget=null;get altKey(){return this.getFromNative(`altKey`,!1)}get button(){return this.getFromNative(`button`,0)}get buttons(){return this.getFromNative(`buttons`,0)}get clientX(){return this.getFromNative(`clientX`,0)}get clientY(){return this.getFromNative(`clientY`,0)}get ctrlKey(){return this.getFromNative(`ctrlKey`,!1)}get layerX(){return this.getFromNative(`layerX`,0)}get layerY(){return this.getFromNative(`layerY`,0)}get metaKey(){return this.getFromNative(`metaKey`,!1)}get movementX(){return this.getFromNative(`movementX`,0)}get movementY(){return this.getFromNative(`movementY`,0)}get offsetX(){return this.getFromNative(`offsetX`,0)}get offsetY(){return this.getFromNative(`offsetY`,0)}get pageX(){return this.getFromNative(`pageX`,0)}get pageY(){return this.getFromNative(`pageY`,0)}get screenX(){return this.getFromNative(`screenX`,0)}get screenY(){return this.getFromNative(`screenY`,0)}get shiftKey(){return this.getFromNative(`shiftKey`,!1)}get x(){return this.getFromNative(`x`,0)}get y(){return this.getFromNative(`y`,0)}get detail(){return this.getFromNative(`detail`,0)}get view(){return this.getFromNative(`view`,null)}get which(){return this.getFromNative(`which`,0)}get cancelBubble(){return this.getFromNative(`cancelBubble`,!1)}get composed(){return this.getFromNative(`composed`,!1)}get eventPhase(){return this.getFromNative(`eventPhase`,0)}get isTrusted(){return this.getFromNative(`isTrusted`,!1)}get returnValue(){return this.getFromNative(`returnValue`,!1)}get timeStamp(){return this.getFromNative(`timeStamp`,0)}get cancelable(){return this.getFromNative(`cancelable`,!1)}get defaultPrevented(){return this.getFromNative(`defaultPrevented`,!1)}constructor(e){this.nativeEvent=e}getFromNative(e,t){return e in this.nativeEvent?this.nativeEvent[e]:t}},W_=new P,G_=class e extends U_{type;bubbles;internalPointer;intersection;camera;currentObject;object;propagationState;get pointerId(){return this.internalPointer.id}get pointerType(){return this.internalPointer.type}get pointerState(){return this.internalPointer.state}get distance(){return this.intersection.distance}get distanceToRay(){return this.intersection.distanceToRay}get point(){return this.intersection.point}get index(){return this.intersection.index}get face(){return this.intersection.face}get faceIndex(){return this.intersection.faceIndex}get uv(){return this.intersection.uv}get uv1(){return this.intersection.uv1}get normal(){return this.intersection.normal}get instanceId(){return this.intersection.instanceId}get pointOnLine(){return this.intersection.pointOnLine}get batchId(){return this.intersection.batchId}get pointerPosition(){return this.intersection.pointerPosition}get pointerQuaternion(){return this.intersection.pointerQuaternion}get pointOnFace(){return this.intersection.pointOnFace}get localPoint(){return this.intersection.localPoint}get details(){return this.intersection.details}get target(){return this.object}get currentTarget(){return this.currentObject}get eventObject(){return this.currentObject}get srcElement(){return this.currentObject}_pointer;get pointer(){return this._pointer??=(W_.copy(this.intersection.point).project(this.camera),new N(W_.x,W_.y)),this._pointer}_ray;get ray(){if(this._ray!=null)return this._ray;switch(this.intersection.details.type){case`screen-ray`:case`ray`:case`sphere`:return this._ray=new oo(this.intersection.pointerPosition,new P(0,0,-1).applyQuaternion(this.intersection.pointerQuaternion));case`lines`:return this._ray=new oo(this.intersection.details.line.start,this.intersection.details.line.end.clone().sub(this.intersection.details.line.start).normalize())}}_intersections=[];get intersections(){return this._intersections??=[{...this.intersection,eventObject:this.currentObject}],this._intersections}_unprojectedPoint;get unprojectedPoint(){if(this._unprojectedPoint==null){let e=this.pointer;this._unprojectedPoint=new P(e.x,e.y,0).unproject(this.camera)}return this._unprojectedPoint}get stopped(){return this.propagationState.stoppedImmediate||this.propagationState.stopped}get stoppedImmediate(){return this.propagationState.stoppedImmediate}get delta(){throw Error(`not supported`)}constructor(e,t,n,r,i,a,o=i.object,s=o,c={stopped:!t,stoppedImmediate:!1}){super(n),this.type=e,this.bubbles=t,this.internalPointer=r,this.intersection=i,this.camera=a,this.currentObject=o,this.object=s,this.propagationState=c}stopPropagation(){this.propagationState.stopped=!0}stopImmediatePropagation(){this.propagationState.stoppedImmediate=!0}retarget(t){return new e(this.type,this.bubbles,this.nativeEvent,this.internalPointer,this.intersection,this.camera,t,this.target,this.propagationState)}},K_=class e extends G_{get deltaX(){return this.nativeEvent.deltaX}get deltaY(){return this.nativeEvent.deltaY}get deltaZ(){return this.nativeEvent.deltaZ}constructor(e,t,n,r,i,a){super(`wheel`,!0,e,t,n,r,i,a)}retarget(t){return new e(this.nativeEvent,this.internalPointer,this.intersection,this.camera,t,this.target)}};function q_(e){J_(e,e.currentObject)}function J_(e,t){if(t==null)return;let n=Z_(t,e.type);if(n!=null&&n.length>0){let r=e.retarget(t),i=n.length;for(let e=0;e<i&&!r.stoppedImmediate;e++)n[e](r)}e.stopped||J_(e,t.parent)}var Y_={click:`onClick`,contextmenu:`onContextMenu`,dblclick:`onDoubleClick`,pointercancel:`onPointerCancel`,pointerdown:`onPointerDown`,pointerenter:`onPointerEnter`,pointerleave:`onPointerLeave`,pointermove:`onPointerMove`,pointerout:`onPointerOut`,pointerover:`onPointerOver`,pointerup:`onPointerUp`,wheel:`onWheel`},X_=Object.keys(Y_);function Z_(e,t){if(e._listeners!=null&&t in e._listeners)return e._listeners[t];let n;if(e.isVoidObject&&t===`click`&&e.parent?.__r3f!=null&&(n=e.parent.__r3f.root.getState().onPointerMissed),e.__r3f!=null&&(n=e.__r3f.handlers[Y_[t]]),n!=null)return[n]}var Q_=new Rl(1e10),$_=new Map;function ev(e){let t=$_.get(e);return t??(t=new bo(Q_),t.isVoidObject=!0,t.parent=e,t.pointerEventsOrder=-1/0,$_.set(e,t)),t}function tv(e,t,n){let r=t.normal??t.face?.normal;return r==null?!1:(e.setFromNormalAndCoplanarPoint(r,t.localPoint),e.applyMatrix4(n),!0)}function nv(e,t,n){if(t===`none`||t===`listener`&&!e)return!1;if(n===`all`)return!0;if(typeof n==`function`)return({id:e,type:t,state:r})=>n(e,t,r);let r,i;return`deny`in n?(i=!0,r=n.deny):(i=!1,r=n.allow),Array.isArray(r)?e=>rv(r.includes(e.type),i):e=>rv(r===e.type,i)}function rv(e,t){return t?!e:e}function iv(e,t,n,r=!1,i,a,o){let s=r||av(e,t),c=t.pointerEvents??i,l=c??t.defaultPointerEvents??`listener`,u=t.pointerEventsType??a??`all`,d=t.pointerEventsOrder??o??0,f=nv(s,l,u),p=n.length;if(p===1)(f===!0||typeof f==`function`&&f(n[0]))&&ov(n[0],t,l,u,d);else if(f===!0)for(let e=0;e<p;e++)ov(n[e],t,l,u,d);else if(typeof f==`function`)for(let e=0;e<p;e++){let r=n[e];f(r)&&ov(r,t,l,u,d)}if(t.children.length===0||t.intersectChildren===!1)return;let m=t.interactableDescendants??t.children,h=m.length;for(let t=0;t<h;t++)iv(e,m[t],n,s,c,u,d)}function av(e,t){if(t.ancestorsHaveListeners||e===`pointer`&&t.ancestorsHavePointerListeners||e===`wheel`&&t.ancestorsHaveWheelListeners||t.__r3f!=null&&t.__r3f?.eventCount>0&&(e===`wheel`&&t.__r3f.handlers.onWheel!=null||e===`pointer`&&Object.keys(t.__r3f.handlers).some(e=>e!=`onWheel`)))return!0;if(t._listeners==null)return!1;if(e===`wheel`){let e=t._listeners.wheel;return e!=null&&e.length>0}let n=Object.entries(t._listeners),r=n.length;for(let e=0;e<r;e++){let t=n[e];if(t[0]!==`wheel`&&X_.includes(t[0])&&t[1]!=null&&t[1].length>0)return!0}return!1}function ov({intersector:e,options:t},n,r,i,a){t.filter?.(n,r,i,a)!==!1&&e.executeIntersection(n,a)}function sv(e,t,{customSort:n=cv}={},r){let i,a,o,s=e.length;for(let c=0;c<s;c++){let s=e[c];if(r?.(s)===!1)continue;let l=t?.[c];(i==null||n(s,l,i,a)<0)&&(o=c,i=s,a=l)}return o}function cv(e,t=0,n,r=0){return t==r?e.distance-n.distance:r-t}var lv=1e7;function uv(e,t,n,r,i,a=0){let o=t.direction.clone().multiplyScalar(lv),s=lv;return{distance:s+a,object:ev(e),point:o,normal:t.origin.clone().sub(o).normalize(),details:n(o,s),pointerPosition:r,pointerQuaternion:i,pointOnFace:o,localPoint:o}}function dv(e,t,n){for(;n>0;)e.push(t),--n}var fv=Symbol(`buttonsDownTime`),pv=Symbol(`buttonsClickTime`);globalThis.pointerEventspointerMap??=new Map,fi.prototype.setPointerCapture=function(e){mv(e)?.setCapture(this)},fi.prototype.releasePointerCapture=function(e){let t=mv(e);t==null||!t.hasCaptured(this)||t.setCapture(void 0)},fi.prototype.hasPointerCapture=function(e){return mv(e)?.hasCaptured(this)??!1};function mv(e){return globalThis.pointerEventspointerMap?.get(e)}var hv=class{id;type;state;intersector;getCamera;onMoveCommited;parentSetPointerCapture;parentReleasePointerCapture;options;prevIntersection;intersection;prevEnabled=!0;enabled=!0;wheelIntersection;pointerEntered=[];pointerEnteredHelper=[];pointerCapture;buttonsDownTime=new Map;buttonsDown=new Set;wasMoved=!1;onFirstMove=[];constructor(e,t,n,r,i,a,o,s,c={}){this.id=e,this.type=t,this.state=n,this.intersector=r,this.getCamera=i,this.onMoveCommited=a,this.parentSetPointerCapture=o,this.parentReleasePointerCapture=s,this.options=c,globalThis.pointerEventspointerMap?.set(e,this)}getPointerCapture(){return this.pointerCapture}hasCaptured(e){return this.pointerCapture?.object===e}setCapture(e){this.pointerCapture?.object!==e&&(this.clearPointerCapture(),e!=null&&this.intersection!=null&&(this.pointerCapture={object:e,intersection:this.intersection},this.parentSetPointerCapture?.()))}getButtonsDown(){return this.buttonsDown}getIntersection(){return this.intersection}getEnabled(){return this.enabled}setEnabled(e,t,n=!0){this.enabled!==e&&(!e&&this.pointerCapture!=null&&this.clearPointerCapture(),this.enabled=e,n&&this.commit(t,!1))}computeIntersection(e,t,n){return this.pointerCapture==null?(this.intersector.startIntersection(n),iv(e,t,[this]),this.intersector.finalizeIntersection(t)):this.intersector.intersectPointerCapture(this.pointerCapture,n)}setIntersection(e){this.intersection=e}commit(e,t){let n=this.getCamera(),r=this.prevEnabled?this.prevIntersection:void 0,i=this.enabled?this.intersection:void 0;r!=null&&r.object!=i?.object&&q_(new G_(`pointerout`,!0,e,this,r,n));let a=this.pointerEntered;this.pointerEntered=[],this.pointerEnteredHelper.length=0,gv(i?.object,this.pointerEntered,a,this.pointerEnteredHelper);let o=a.length;for(let t=0;t<o;t++){let i=a[t];q_(new G_(`pointerleave`,!1,e,this,r,n,i))}i!=null&&r?.object!=i.object&&q_(new G_(`pointerover`,!0,e,this,i,n));for(let t=this.pointerEnteredHelper.length-1;t>=0;t--){let r=this.pointerEnteredHelper[t];q_(new G_(`pointerenter`,!1,e,this,i,n,r))}if(t&&i!=null&&q_(new G_(`pointermove`,!0,e,this,i,n)),this.prevIntersection=this.intersection,this.prevEnabled=this.enabled,!this.wasMoved&&this.intersector.isReady()){this.wasMoved=!0;let e=this.onFirstMove.length;for(let t=0;t<e;t++)this.onFirstMove[t](n);this.onFirstMove.length=0}this.onMoveCommited?.(this)}move(e,t){this.intersection=this.computeIntersection(`pointer`,e,t),this.commit(t,!0)}over(e,t){this.wasMoved||(this.intersection=this.computeIntersection(`pointer`,e,t),this.commit(t,!1))}emitMove(e){this.intersection!=null&&q_(new G_(`pointermove`,!0,e,this,this.intersection,this.getCamera()))}down(e){if(this.buttonsDown.add(e.button),!this.enabled)return;if(!this.wasMoved){this.onFirstMove.push(this.down.bind(this,e));return}if(this.intersection==null)return;q_(new G_(`pointerdown`,!0,e,this,this.intersection,this.getCamera()));let{object:t}=this.intersection;t[fv]??=new Map,t[fv].set(e.button,e.timeStamp),this.buttonsDownTime.set(e.button,e.timeStamp)}up(e){if(this.buttonsDown.delete(e.button),!this.enabled)return;if(!this.wasMoved){this.onFirstMove.push(this.up.bind(this,e));return}if(this.intersection==null)return;let{clickThesholdMs:t,contextMenuButton:n=2,dblClickThresholdMs:r=500,clickThresholdMs:i=t??300}=this.options;this.clearPointerCapture();let a=_v(this.buttonsDownTime,this.intersection.object[fv],e.button,e.timeStamp,i),o=this.getCamera();if(a&&e.button===n&&q_(new G_(`contextmenu`,!0,e,this,this.intersection,o)),q_(new G_(`pointerup`,!0,e,this,this.intersection,o)),!a||e.button===n)return;q_(new G_(`click`,!0,e,this,this.intersection,o));let{object:s}=this.intersection,c=s[pv]??=new Map,l=c.get(e.button);if(l==null||e.timeStamp-l>r){c.set(e.button,e.timeStamp);return}q_(new G_(`dblclick`,!0,e,this,this.intersection,o)),c.delete(e.button)}cancel(e){this.buttonsDown.clear(),this.buttonsDownTime.clear(),this.clearPointerCapture(),this.onFirstMove.length=0,!(!this.enabled||!this.wasMoved||this.intersection==null)&&q_(new G_(`pointercancel`,!0,e,this,this.intersection,this.getCamera()))}wheel(e,t,n=!1){if(!this.enabled)return;if(!this.wasMoved&&n){this.onFirstMove.push(this.wheel.bind(this,e,t,n));return}n||(this.wheelIntersection=this.computeIntersection(`wheel`,e,t));let r=n?this.intersection:this.wheelIntersection;r!=null&&q_(new K_(t,this,r,this.getCamera()))}emitWheel(e,t=!1){if(!this.enabled)return;if(!this.wasMoved&&t){this.onFirstMove.push(this.emitWheel.bind(this,e,t));return}let n=t?this.intersection:this.wheelIntersection;n!=null&&q_(new K_(e,this,n,this.getCamera()))}exit(e){(this.buttonsDown.size>0||this.pointerCapture!=null)&&this.cancel(e),this.wasMoved&&(this.intersection=void 0,this.commit(e,!1)),this.onFirstMove.length=0,this.wasMoved=!1}clearPointerCapture(){this.pointerCapture!=null&&(this.parentReleasePointerCapture?.(),this.pointerCapture=void 0)}};function gv(e,t,n,r){if(e==null)return;let i=n.indexOf(e);i==-1?r.push(e):n.splice(i,1),t.push(e),gv(e.parent,t,n,r)}function _v(e,t,n,r,i){if(t==null)return!1;let a=t.get(n);return!(a==null||r-a>i||a!=e.get(n))}var vv=new Li,yv=new Li,bv=new N,xv=new N,Sv=new N,Cv=new P,wv=new F,Tv=new P;function Ev(e,t,n){Tv.copy(t).applyMatrix4(wv.copy(n.matrixWorld).invert());let r=n.geometry.attributes.uv;if(r==null||!(r instanceof sa))return!1;let i;return Dv(n,(e,t,a)=>{n.getVertexPosition(e,vv.a),n.getVertexPosition(t,vv.b),n.getVertexPosition(a,vv.c);let o=vv.closestPointToPoint(Tv,Cv).distanceTo(Tv);i!=null&&o>=i||(i=o,yv.copy(vv),bv.fromBufferAttribute(r,e),xv.fromBufferAttribute(r,t),Sv.fromBufferAttribute(r,a))}),i==null?!1:(yv.closestPointToPoint(Tv,Cv),yv.getInterpolation(Cv,bv,xv,Sv,e),!0)}function Dv(e,t){let n=e.geometry.drawRange;if(e.geometry.index!=null){let r=e.geometry.index,i=Math.max(0,n.start),a=Math.min(r.count,n.start+n.count);for(let e=i;e<a;e+=3)t(r.getX(e),r.getX(e+1),r.getX(e+2));return}let r=e.geometry.attributes.position;if(r==null)return;let i=Math.max(0,n.start),a=Math.min(r.count,n.start+n.count);for(let e=i;e<a;e+=3)t(e,e+1,e+2)}new F,new Kf,new P,new Xo,new oo,new N,new P(0,0,0),new P(0,0,1);var Ov=new F,kv=new P;new P(0,0,-1),new Xo;var Av=new N,jv=new P,Mv=class{prepareTransformation;options;raycaster=new Af;cameraQuaternion=new mr;fromPosition=new P;fromQuaternion=new mr;coords=new N;viewPlane=new Xo;intersects=[];pointerEventsOrders=[];constructor(e,t){this.prepareTransformation=e,this.options=t}isReady(){return!0}intersectPointerCapture({intersection:e,object:t},n){let r=e.details;if(r.type!=`screen-ray`)throw Error(`unable to process a pointer capture of type "${e.details.type}" with a camera ray intersector`);if(!this.startIntersection(n))return e;this.viewPlane.constant-=r.distanceViewPlane;let i=this.raycaster.ray.intersectPlane(this.viewPlane,new P);if(i==null)return e;e.object.updateWorldMatrix(!0,!1),tv(this.viewPlane,e,e.object.matrixWorld);let a=e.uv;return e.object instanceof bo&&Ev(Av,i,e.object)&&(a=Av.clone()),{...e,details:{...r,direction:this.raycaster.ray.direction.clone(),screenPoint:this.coords.clone()},uv:a,object:t,point:i,pointOnFace:i,pointerPosition:this.raycaster.ray.origin.clone(),pointerQuaternion:this.cameraQuaternion.clone()}}startIntersection(e){let t=this.prepareTransformation(e,this.coords);return t==null?!1:(t.updateWorldMatrix(!0,!1),t.matrixWorld.decompose(this.fromPosition,this.fromQuaternion,kv),this.raycaster.setFromCamera(this.coords,t),this.viewPlane.setFromNormalAndCoplanarPoint(t.getWorldDirection(jv),this.raycaster.ray.origin),!0)}executeIntersection(e,t){let n=this.intersects.length;e.raycast(this.raycaster,this.intersects),dv(this.pointerEventsOrders,t,this.intersects.length-n)}finalizeIntersection(e){let t=this.fromPosition.clone(),n=this.cameraQuaternion.clone(),r=this.raycaster.ray.direction.clone(),i=sv(this.intersects,this.pointerEventsOrders,this.options),a=i==null?void 0:this.intersects[i];return this.intersects.length=0,this.pointerEventsOrders.length=0,a==null?uv(e,this.raycaster.ray,(e,t)=>({type:`screen-ray`,distanceViewPlane:t,screenPoint:this.coords.clone(),direction:r}),t,n):(a.object.updateWorldMatrix(!0,!1),Ov.copy(a.object.matrixWorld).invert(),Object.assign(a,{details:{type:`screen-ray`,distanceViewPlane:this.viewPlane.distanceToPoint(a.point),screenPoint:this.coords.clone(),direction:r},pointOnFace:a.point,pointerPosition:t,pointerQuaternion:n,localPoint:a.point.clone().applyMatrix4(Ov)}))}};new P,new N,new F,new P,new mr,new Xo,new ba,new P,new P,new P,new P(1e-4,1e-4,1e-4),new F;var Nv=23412;function Pv(){return Nv++}function Fv(e,t,n){if(!(t instanceof globalThis.MouseEvent))return n.set(0,0);let{width:r,height:i,top:a,left:o}=e.getBoundingClientRect(),s=t.clientX-o,c=t.clientY-a;return n.set(s/r*2-1,-(c/i)*2+1)}function Iv(e,t,n,r){return Lv(e,typeof t==`function`?t:()=>t,n,Fv.bind(null,e),e.setPointerCapture.bind(e),t=>{e.hasPointerCapture(t)&&e.releasePointerCapture(t)},{pointerTypePrefix:`screen-`,...r})}function Lv(e,t,n,r,i,a,o={}){let s=o?.forwardPointerCapture??!0,c=new Map,l=o.pointerTypePrefix??`forward-`,u=(e,u)=>{let d=c.get(e.pointerId);return d??(d=new hv(Pv(),`${l}${e.pointerType}`,e.pointerState,new Mv((e,n)=>(r(e,n),t()),o),t,void 0,s?i.bind(null,e.pointerId):void 0,s?a.bind(null,e.pointerId):void 0,o),u!=`move`&&u!=`wheel`&&(d.setIntersection(d.computeIntersection(`pointer`,n,e)),d.commit(e,!1)),c.set(e.pointerId,d),d)},d=new Map,f=new Map,p=[],m=[],h=(e,t,r)=>{switch(e){case`move`:r.move(n,t);return;case`over`:r.move(n,t);return;case`wheel`:r.wheel(n,t);return;case`cancel`:r.cancel(t);return;case`down`:if(!Rv(t))return;r.down(t);return;case`up`:if(!Rv(t))return;r.up(t);return;case`exit`:f.delete(r),d.delete(r),r.exit(t);return}},g=(e,t)=>{let n=u(t,e);e===`move`&&f.set(n,t),e===`wheel`&&d.set(n,t),o.batchEvents??!0?m.push({type:e,event:t}):h(e,t,n)},_=g.bind(null,`move`),v=g.bind(null,`over`),y=g.bind(null,`cancel`),b=g.bind(null,`down`),x=g.bind(null,`up`),S=g.bind(null,`wheel`),C=g.bind(null,`exit`);return e.addEventListener(`pointermove`,_),e.addEventListener(`pointerover`,v),e.addEventListener(`pointercancel`,y),e.addEventListener(`pointerdown`,b),e.addEventListener(`pointerup`,x),e.addEventListener(`wheel`,S),e.addEventListener(`pointerleave`,C),{destroy(){e.removeEventListener(`pointermove`,_),e.removeEventListener(`pointerover`,v),e.removeEventListener(`pointercancel`,y),e.removeEventListener(`pointerdown`,b),e.removeEventListener(`pointerup`,x),e.removeEventListener(`wheel`,S),e.removeEventListener(`pointerleave`,C),f.clear(),d.clear()},update(){let e=m.length;for(let t=0;t<e;t++){let{type:e,event:n}=m[t],r=u(n,e);if(e===`move`&&(p.push(r),f.get(r)!=n)){r.emitMove(n);continue}if(e===`wheel`&&d.get(r)!=n){r.emitWheel(n);continue}h(e,n,r)}if(m.length=0,o.intersectEveryFrame??!1)for(let[e,t]of f.entries())p.includes(e)||e.move(n,t);p.length=0}}}function Rv(e){return e.button!=null}var zv=Object.create,Bv=Object.defineProperty,Vv=Object.getOwnPropertyDescriptor,Hv=Object.getOwnPropertyNames,Uv=Object.getPrototypeOf,Wv=Object.prototype.hasOwnProperty,Gv=(e,t)=>function(){return e&&(t=(0,e[Hv(e)[0]])(e=0)),t},Kv=(e,t)=>function(){return t||(0,e[Hv(e)[0]])((t={exports:{}}).exports,t),t.exports},qv=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of Hv(t))!Wv.call(e,i)&&i!==n&&Bv(e,i,{get:()=>t[i],enumerable:!(r=Vv(t,i))||r.enumerable});return e},Jv=(e,t,n)=>(n=e==null?{}:zv(Uv(e)),qv(t||!e||!e.__esModule?Bv(n,`default`,{value:e,enumerable:!0}):n,e)),Yv=Gv({"../../node_modules/.pnpm/tsup@8.4.0_@microsoft+api-extractor@7.51.1_@types+node@22.13.14__jiti@2.4.2_postcss@8.5_96eb05a9d65343021e53791dd83f3773/node_modules/tsup/assets/esm_shims.js"(){}}),Xv=Kv({"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js"(e,t){Yv(),t.exports=r;function n(e){return e instanceof Buffer?Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function r(e){if(e||={},e.circles)return i(e);let t=new Map;if(t.set(Date,e=>new Date(e)),t.set(Map,(e,t)=>new Map(a(Array.from(e),t))),t.set(Set,(e,t)=>new Set(a(Array.from(e),t))),e.constructorHandlers)for(let n of e.constructorHandlers)t.set(n[0],n[1]);let r=null;return e.proto?s:o;function a(e,i){let a=Object.keys(e),o=Array(a.length);for(let s=0;s<a.length;s++){let c=a[s],l=e[c];typeof l!=`object`||!l?o[c]=l:l.constructor!==Object&&(r=t.get(l.constructor))?o[c]=r(l,i):ArrayBuffer.isView(l)?o[c]=n(l):o[c]=i(l)}return o}function o(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return a(e,o);if(e.constructor!==Object&&(r=t.get(e.constructor)))return r(e,o);let i={};for(let a in e){if(Object.hasOwnProperty.call(e,a)===!1)continue;let s=e[a];typeof s!=`object`||!s?i[a]=s:s.constructor!==Object&&(r=t.get(s.constructor))?i[a]=r(s,o):ArrayBuffer.isView(s)?i[a]=n(s):i[a]=o(s)}return i}function s(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return a(e,s);if(e.constructor!==Object&&(r=t.get(e.constructor)))return r(e,s);let i={};for(let a in e){let o=e[a];typeof o!=`object`||!o?i[a]=o:o.constructor!==Object&&(r=t.get(o.constructor))?i[a]=r(o,s):ArrayBuffer.isView(o)?i[a]=n(o):i[a]=s(o)}return i}}function i(e){let t=[],r=[],i=new Map;if(i.set(Date,e=>new Date(e)),i.set(Map,(e,t)=>new Map(o(Array.from(e),t))),i.set(Set,(e,t)=>new Set(o(Array.from(e),t))),e.constructorHandlers)for(let t of e.constructorHandlers)i.set(t[0],t[1]);let a=null;return e.proto?c:s;function o(e,o){let s=Object.keys(e),c=Array(s.length);for(let l=0;l<s.length;l++){let u=s[l],d=e[u];if(typeof d!=`object`||!d)c[u]=d;else if(d.constructor!==Object&&(a=i.get(d.constructor)))c[u]=a(d,o);else if(ArrayBuffer.isView(d))c[u]=n(d);else{let e=t.indexOf(d);e===-1?c[u]=o(d):c[u]=r[e]}}return c}function s(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return o(e,s);if(e.constructor!==Object&&(a=i.get(e.constructor)))return a(e,s);let c={};t.push(e),r.push(c);for(let o in e){if(Object.hasOwnProperty.call(e,o)===!1)continue;let l=e[o];if(typeof l!=`object`||!l)c[o]=l;else if(l.constructor!==Object&&(a=i.get(l.constructor)))c[o]=a(l,s);else if(ArrayBuffer.isView(l))c[o]=n(l);else{let e=t.indexOf(l);e===-1?c[o]=s(l):c[o]=r[e]}}return t.pop(),r.pop(),c}function c(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return o(e,c);if(e.constructor!==Object&&(a=i.get(e.constructor)))return a(e,c);let s={};t.push(e),r.push(s);for(let o in e){let l=e[o];if(typeof l!=`object`||!l)s[o]=l;else if(l.constructor!==Object&&(a=i.get(l.constructor)))s[o]=a(l,c);else if(ArrayBuffer.isView(l))s[o]=n(l);else{let e=t.indexOf(l);e===-1?s[o]=c(l):s[o]=r[e]}}return t.pop(),r.pop(),s}}}});Yv(),Yv(),Yv();var Zv=typeof navigator<`u`,Qv=typeof window<`u`?window:typeof globalThis<`u`?globalThis:typeof global<`u`?global:{};Qv.chrome!==void 0&&Qv.chrome.devtools,Zv&&(Qv.self,Qv.top),typeof navigator<`u`&&navigator.userAgent?.toLowerCase().includes(`electron`),typeof window<`u`&&window.__NUXT__,Yv();var $v=Jv(Xv(),1),ey=/(?:^|[-_/])(\w)/g;function ty(e,t){return t?t.toUpperCase():``}function ny(e){return e&&`${e}`.replace(ey,ty)}function ry(e,t){let n=e.replace(/^[a-z]:/i,``).replace(/\\/g,`/`);n.endsWith(`index${t}`)&&(n=n.replace(`/index${t}`,t));let r=n.lastIndexOf(`/`),i=n.substring(r+1);if(t){let e=i.lastIndexOf(t);return i.substring(0,e)}return``}var iy=(0,$v.default)({circles:!0}),ay={trailing:!0};function oy(e,t=25,n={}){if(n={...ay,...n},!Number.isFinite(t))throw TypeError("Expected `wait` to be a finite number");let r,i,a=[],o,s,c=(t,r)=>(o=sy(e,t,r),o.finally(()=>{if(o=null,n.trailing&&s&&!i){let e=c(t,s);return s=null,e}}),o);return function(...e){return o?(n.trailing&&(s=e),o):new Promise(o=>{let s=!i&&n.leading;clearTimeout(i),i=setTimeout(()=>{i=null;let t=n.leading?r:c(this,e);for(let e of a)e(t);a=[]},t),s?(r=c(this,e),o(r)):a.push(o)})}}async function sy(e,t,n){return await e.apply(t,n)}var cy=Object.create,ly=Object.defineProperty,uy=Object.getOwnPropertyDescriptor,dy=Object.getOwnPropertyNames,fy=Object.getPrototypeOf,py=Object.prototype.hasOwnProperty,my=(e,t)=>function(){return e&&(t=(0,e[dy(e)[0]])(e=0)),t},hy=(e,t)=>function(){return t||(0,e[dy(e)[0]])((t={exports:{}}).exports,t),t.exports},gy=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of dy(t))!py.call(e,i)&&i!==n&&ly(e,i,{get:()=>t[i],enumerable:!(r=uy(t,i))||r.enumerable});return e},_y=(e,t,n)=>(n=e==null?{}:cy(fy(e)),gy(t||!e||!e.__esModule?ly(n,`default`,{value:e,enumerable:!0}):n,e)),R=my({"../../node_modules/.pnpm/tsup@8.4.0_@microsoft+api-extractor@7.51.1_@types+node@22.13.14__jiti@2.4.2_postcss@8.5_96eb05a9d65343021e53791dd83f3773/node_modules/tsup/assets/esm_shims.js"(){}}),vy=hy({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(e,t){R(),(function(e){var n={À:`A`,Á:`A`,Â:`A`,Ã:`A`,Ä:`Ae`,Å:`A`,Æ:`AE`,Ç:`C`,È:`E`,É:`E`,Ê:`E`,Ë:`E`,Ì:`I`,Í:`I`,Î:`I`,Ï:`I`,Ð:`D`,Ñ:`N`,Ò:`O`,Ó:`O`,Ô:`O`,Õ:`O`,Ö:`Oe`,Ő:`O`,Ø:`O`,Ù:`U`,Ú:`U`,Û:`U`,Ü:`Ue`,Ű:`U`,Ý:`Y`,Þ:`TH`,ß:`ss`,à:`a`,á:`a`,â:`a`,ã:`a`,ä:`ae`,å:`a`,æ:`ae`,ç:`c`,è:`e`,é:`e`,ê:`e`,ë:`e`,ì:`i`,í:`i`,î:`i`,ï:`i`,ð:`d`,ñ:`n`,ò:`o`,ó:`o`,ô:`o`,õ:`o`,ö:`oe`,ő:`o`,ø:`o`,ù:`u`,ú:`u`,û:`u`,ü:`ue`,ű:`u`,ý:`y`,þ:`th`,ÿ:`y`,ẞ:`SS`,ا:`a`,أ:`a`,إ:`i`,آ:`aa`,ؤ:`u`,ئ:`e`,ء:`a`,ب:`b`,ت:`t`,ث:`th`,ج:`j`,ح:`h`,خ:`kh`,د:`d`,ذ:`th`,ر:`r`,ز:`z`,س:`s`,ش:`sh`,ص:`s`,ض:`dh`,ط:`t`,ظ:`z`,ع:`a`,غ:`gh`,ف:`f`,ق:`q`,ك:`k`,ل:`l`,م:`m`,ن:`n`,ه:`h`,و:`w`,ي:`y`,ى:`a`,ة:`h`,ﻻ:`la`,ﻷ:`laa`,ﻹ:`lai`,ﻵ:`laa`,گ:`g`,چ:`ch`,پ:`p`,ژ:`zh`,ک:`k`,ی:`y`,"َ":`a`,"ً":`an`,"ِ":`e`,"ٍ":`en`,"ُ":`u`,"ٌ":`on`,"ْ":``,"٠":`0`,"١":`1`,"٢":`2`,"٣":`3`,"٤":`4`,"٥":`5`,"٦":`6`,"٧":`7`,"٨":`8`,"٩":`9`,"۰":`0`,"۱":`1`,"۲":`2`,"۳":`3`,"۴":`4`,"۵":`5`,"۶":`6`,"۷":`7`,"۸":`8`,"۹":`9`,က:`k`,ခ:`kh`,ဂ:`g`,ဃ:`ga`,င:`ng`,စ:`s`,ဆ:`sa`,ဇ:`z`,စျ:`za`,ည:`ny`,ဋ:`t`,ဌ:`ta`,ဍ:`d`,ဎ:`da`,ဏ:`na`,တ:`t`,ထ:`ta`,ဒ:`d`,ဓ:`da`,န:`n`,ပ:`p`,ဖ:`pa`,ဗ:`b`,ဘ:`ba`,မ:`m`,ယ:`y`,ရ:`ya`,လ:`l`,ဝ:`w`,သ:`th`,ဟ:`h`,ဠ:`la`,အ:`a`,"ြ":`y`,"ျ":`ya`,"ွ":`w`,"ြွ":`yw`,"ျွ":`ywa`,"ှ":`h`,ဧ:`e`,"၏":`-e`,ဣ:`i`,ဤ:`-i`,ဉ:`u`,ဦ:`-u`,ဩ:`aw`,သြော:`aw`,ဪ:`aw`,"၀":`0`,"၁":`1`,"၂":`2`,"၃":`3`,"၄":`4`,"၅":`5`,"၆":`6`,"၇":`7`,"၈":`8`,"၉":`9`,"္":``,"့":``,"း":``,č:`c`,ď:`d`,ě:`e`,ň:`n`,ř:`r`,š:`s`,ť:`t`,ů:`u`,ž:`z`,Č:`C`,Ď:`D`,Ě:`E`,Ň:`N`,Ř:`R`,Š:`S`,Ť:`T`,Ů:`U`,Ž:`Z`,ހ:`h`,ށ:`sh`,ނ:`n`,ރ:`r`,ބ:`b`,ޅ:`lh`,ކ:`k`,އ:`a`,ވ:`v`,މ:`m`,ފ:`f`,ދ:`dh`,ތ:`th`,ލ:`l`,ގ:`g`,ޏ:`gn`,ސ:`s`,ޑ:`d`,ޒ:`z`,ޓ:`t`,ޔ:`y`,ޕ:`p`,ޖ:`j`,ޗ:`ch`,ޘ:`tt`,ޙ:`hh`,ޚ:`kh`,ޛ:`th`,ޜ:`z`,ޝ:`sh`,ޞ:`s`,ޟ:`d`,ޠ:`t`,ޡ:`z`,ޢ:`a`,ޣ:`gh`,ޤ:`q`,ޥ:`w`,"ަ":`a`,"ާ":`aa`,"ި":`i`,"ީ":`ee`,"ު":`u`,"ޫ":`oo`,"ެ":`e`,"ޭ":`ey`,"ޮ":`o`,"ޯ":`oa`,"ް":``,ა:`a`,ბ:`b`,გ:`g`,დ:`d`,ე:`e`,ვ:`v`,ზ:`z`,თ:`t`,ი:`i`,კ:`k`,ლ:`l`,მ:`m`,ნ:`n`,ო:`o`,პ:`p`,ჟ:`zh`,რ:`r`,ს:`s`,ტ:`t`,უ:`u`,ფ:`p`,ქ:`k`,ღ:`gh`,ყ:`q`,შ:`sh`,ჩ:`ch`,ც:`ts`,ძ:`dz`,წ:`ts`,ჭ:`ch`,ხ:`kh`,ჯ:`j`,ჰ:`h`,α:`a`,β:`v`,γ:`g`,δ:`d`,ε:`e`,ζ:`z`,η:`i`,θ:`th`,ι:`i`,κ:`k`,λ:`l`,μ:`m`,ν:`n`,ξ:`ks`,ο:`o`,π:`p`,ρ:`r`,σ:`s`,τ:`t`,υ:`y`,φ:`f`,χ:`x`,ψ:`ps`,ω:`o`,ά:`a`,έ:`e`,ί:`i`,ό:`o`,ύ:`y`,ή:`i`,ώ:`o`,ς:`s`,ϊ:`i`,ΰ:`y`,ϋ:`y`,ΐ:`i`,Α:`A`,Β:`B`,Γ:`G`,Δ:`D`,Ε:`E`,Ζ:`Z`,Η:`I`,Θ:`TH`,Ι:`I`,Κ:`K`,Λ:`L`,Μ:`M`,Ν:`N`,Ξ:`KS`,Ο:`O`,Π:`P`,Ρ:`R`,Σ:`S`,Τ:`T`,Υ:`Y`,Φ:`F`,Χ:`X`,Ψ:`PS`,Ω:`O`,Ά:`A`,Έ:`E`,Ί:`I`,Ό:`O`,Ύ:`Y`,Ή:`I`,Ώ:`O`,Ϊ:`I`,Ϋ:`Y`,ā:`a`,ē:`e`,ģ:`g`,ī:`i`,ķ:`k`,ļ:`l`,ņ:`n`,ū:`u`,Ā:`A`,Ē:`E`,Ģ:`G`,Ī:`I`,Ķ:`k`,Ļ:`L`,Ņ:`N`,Ū:`U`,Ќ:`Kj`,ќ:`kj`,Љ:`Lj`,љ:`lj`,Њ:`Nj`,њ:`nj`,Тс:`Ts`,тс:`ts`,ą:`a`,ć:`c`,ę:`e`,ł:`l`,ń:`n`,ś:`s`,ź:`z`,ż:`z`,Ą:`A`,Ć:`C`,Ę:`E`,Ł:`L`,Ń:`N`,Ś:`S`,Ź:`Z`,Ż:`Z`,Є:`Ye`,І:`I`,Ї:`Yi`,Ґ:`G`,є:`ye`,і:`i`,ї:`yi`,ґ:`g`,ă:`a`,Ă:`A`,ș:`s`,Ș:`S`,ț:`t`,Ț:`T`,ţ:`t`,Ţ:`T`,а:`a`,б:`b`,в:`v`,г:`g`,д:`d`,е:`e`,ё:`yo`,ж:`zh`,з:`z`,и:`i`,й:`i`,к:`k`,л:`l`,м:`m`,н:`n`,о:`o`,п:`p`,р:`r`,с:`s`,т:`t`,у:`u`,ф:`f`,х:`kh`,ц:`c`,ч:`ch`,ш:`sh`,щ:`sh`,ъ:``,ы:`y`,ь:``,э:`e`,ю:`yu`,я:`ya`,А:`A`,Б:`B`,В:`V`,Г:`G`,Д:`D`,Е:`E`,Ё:`Yo`,Ж:`Zh`,З:`Z`,И:`I`,Й:`I`,К:`K`,Л:`L`,М:`M`,Н:`N`,О:`O`,П:`P`,Р:`R`,С:`S`,Т:`T`,У:`U`,Ф:`F`,Х:`Kh`,Ц:`C`,Ч:`Ch`,Ш:`Sh`,Щ:`Sh`,Ъ:``,Ы:`Y`,Ь:``,Э:`E`,Ю:`Yu`,Я:`Ya`,ђ:`dj`,ј:`j`,ћ:`c`,џ:`dz`,Ђ:`Dj`,Ј:`j`,Ћ:`C`,Џ:`Dz`,ľ:`l`,ĺ:`l`,ŕ:`r`,Ľ:`L`,Ĺ:`L`,Ŕ:`R`,ş:`s`,Ş:`S`,ı:`i`,İ:`I`,ğ:`g`,Ğ:`G`,ả:`a`,Ả:`A`,ẳ:`a`,Ẳ:`A`,ẩ:`a`,Ẩ:`A`,đ:`d`,Đ:`D`,ẹ:`e`,Ẹ:`E`,ẽ:`e`,Ẽ:`E`,ẻ:`e`,Ẻ:`E`,ế:`e`,Ế:`E`,ề:`e`,Ề:`E`,ệ:`e`,Ệ:`E`,ễ:`e`,Ễ:`E`,ể:`e`,Ể:`E`,ỏ:`o`,ọ:`o`,Ọ:`o`,ố:`o`,Ố:`O`,ồ:`o`,Ồ:`O`,ổ:`o`,Ổ:`O`,ộ:`o`,Ộ:`O`,ỗ:`o`,Ỗ:`O`,ơ:`o`,Ơ:`O`,ớ:`o`,Ớ:`O`,ờ:`o`,Ờ:`O`,ợ:`o`,Ợ:`O`,ỡ:`o`,Ỡ:`O`,Ở:`o`,ở:`o`,ị:`i`,Ị:`I`,ĩ:`i`,Ĩ:`I`,ỉ:`i`,Ỉ:`i`,ủ:`u`,Ủ:`U`,ụ:`u`,Ụ:`U`,ũ:`u`,Ũ:`U`,ư:`u`,Ư:`U`,ứ:`u`,Ứ:`U`,ừ:`u`,Ừ:`U`,ự:`u`,Ự:`U`,ữ:`u`,Ữ:`U`,ử:`u`,Ử:`ư`,ỷ:`y`,Ỷ:`y`,ỳ:`y`,Ỳ:`Y`,ỵ:`y`,Ỵ:`Y`,ỹ:`y`,Ỹ:`Y`,ạ:`a`,Ạ:`A`,ấ:`a`,Ấ:`A`,ầ:`a`,Ầ:`A`,ậ:`a`,Ậ:`A`,ẫ:`a`,Ẫ:`A`,ắ:`a`,Ắ:`A`,ằ:`a`,Ằ:`A`,ặ:`a`,Ặ:`A`,ẵ:`a`,Ẵ:`A`,"⓪":`0`,"①":`1`,"②":`2`,"③":`3`,"④":`4`,"⑤":`5`,"⑥":`6`,"⑦":`7`,"⑧":`8`,"⑨":`9`,"⑩":`10`,"⑪":`11`,"⑫":`12`,"⑬":`13`,"⑭":`14`,"⑮":`15`,"⑯":`16`,"⑰":`17`,"⑱":`18`,"⑲":`18`,"⑳":`18`,"⓵":`1`,"⓶":`2`,"⓷":`3`,"⓸":`4`,"⓹":`5`,"⓺":`6`,"⓻":`7`,"⓼":`8`,"⓽":`9`,"⓾":`10`,"⓿":`0`,"⓫":`11`,"⓬":`12`,"⓭":`13`,"⓮":`14`,"⓯":`15`,"⓰":`16`,"⓱":`17`,"⓲":`18`,"⓳":`19`,"⓴":`20`,"Ⓐ":`A`,"Ⓑ":`B`,"Ⓒ":`C`,"Ⓓ":`D`,"Ⓔ":`E`,"Ⓕ":`F`,"Ⓖ":`G`,"Ⓗ":`H`,"Ⓘ":`I`,"Ⓙ":`J`,"Ⓚ":`K`,"Ⓛ":`L`,"Ⓜ":`M`,"Ⓝ":`N`,"Ⓞ":`O`,"Ⓟ":`P`,"Ⓠ":`Q`,"Ⓡ":`R`,"Ⓢ":`S`,"Ⓣ":`T`,"Ⓤ":`U`,"Ⓥ":`V`,"Ⓦ":`W`,"Ⓧ":`X`,"Ⓨ":`Y`,"Ⓩ":`Z`,"ⓐ":`a`,"ⓑ":`b`,"ⓒ":`c`,"ⓓ":`d`,"ⓔ":`e`,"ⓕ":`f`,"ⓖ":`g`,"ⓗ":`h`,"ⓘ":`i`,"ⓙ":`j`,"ⓚ":`k`,"ⓛ":`l`,"ⓜ":`m`,"ⓝ":`n`,"ⓞ":`o`,"ⓟ":`p`,"ⓠ":`q`,"ⓡ":`r`,"ⓢ":`s`,"ⓣ":`t`,"ⓤ":`u`,"ⓦ":`v`,"ⓥ":`w`,"ⓧ":`x`,"ⓨ":`y`,"ⓩ":`z`,"“":`"`,"”":`"`,"‘":`'`,"’":`'`,"∂":`d`,ƒ:`f`,"™":`(TM)`,"©":`(C)`,œ:`oe`,Œ:`OE`,"®":`(R)`,"†":`+`,"℠":`(SM)`,"…":`...`,"˚":`o`,º:`o`,ª:`a`,"•":`*`,"၊":`,`,"။":`.`,$:`USD`,"€":`EUR`,"₢":`BRN`,"₣":`FRF`,"£":`GBP`,"₤":`ITL`,"₦":`NGN`,"₧":`ESP`,"₩":`KRW`,"₪":`ILS`,"₫":`VND`,"₭":`LAK`,"₮":`MNT`,"₯":`GRD`,"₱":`ARS`,"₲":`PYG`,"₳":`ARA`,"₴":`UAH`,"₵":`GHS`,"¢":`cent`,"¥":`CNY`,元:`CNY`,円:`YEN`,"﷼":`IRR`,"₠":`EWE`,"฿":`THB`,"₨":`INR`,"₹":`INR`,"₰":`PF`,"₺":`TRY`,"؋":`AFN`,"₼":`AZN`,лв:`BGN`,"៛":`KHR`,"₡":`CRC`,"₸":`KZT`,ден:`MKD`,zł:`PLN`,"₽":`RUB`,"₾":`GEL`},r=[`်`,`ް`],i={"ာ":`a`,"ါ":`a`,"ေ":`e`,"ဲ":`e`,"ိ":`i`,"ီ":`i`,"ို":`o`,"ု":`u`,"ူ":`u`,"ေါင်":`aung`,"ော":`aw`,"ော်":`aw`,"ေါ":`aw`,"ေါ်":`aw`,"်":`်`,က်:`et`,"ိုက်":`aik`,"ောက်":`auk`,င်:`in`,"ိုင်":`aing`,"ောင်":`aung`,စ်:`it`,ည်:`i`,တ်:`at`,"ိတ်":`eik`,"ုတ်":`ok`,"ွတ်":`ut`,"ေတ်":`it`,ဒ်:`d`,"ိုဒ်":`ok`,"ုဒ်":`ait`,န်:`an`,"ာန်":`an`,"ိန်":`ein`,"ုန်":`on`,"ွန်":`un`,ပ်:`at`,"ိပ်":`eik`,"ုပ်":`ok`,"ွပ်":`ut`,န်ုပ်:`nub`,မ်:`an`,"ိမ်":`ein`,"ုမ်":`on`,"ွမ်":`un`,ယ်:`e`,"ိုလ်":`ol`,ဉ်:`in`,"ံ":`an`,"ိံ":`ein`,"ုံ":`on`,"ައް":`ah`,"ަށް":`ah`},a={en:{},az:{ç:`c`,ə:`e`,ğ:`g`,ı:`i`,ö:`o`,ş:`s`,ü:`u`,Ç:`C`,Ə:`E`,Ğ:`G`,İ:`I`,Ö:`O`,Ş:`S`,Ü:`U`},cs:{č:`c`,ď:`d`,ě:`e`,ň:`n`,ř:`r`,š:`s`,ť:`t`,ů:`u`,ž:`z`,Č:`C`,Ď:`D`,Ě:`E`,Ň:`N`,Ř:`R`,Š:`S`,Ť:`T`,Ů:`U`,Ž:`Z`},fi:{ä:`a`,Ä:`A`,ö:`o`,Ö:`O`},hu:{ä:`a`,Ä:`A`,ö:`o`,Ö:`O`,ü:`u`,Ü:`U`,ű:`u`,Ű:`U`},lt:{ą:`a`,č:`c`,ę:`e`,ė:`e`,į:`i`,š:`s`,ų:`u`,ū:`u`,ž:`z`,Ą:`A`,Č:`C`,Ę:`E`,Ė:`E`,Į:`I`,Š:`S`,Ų:`U`,Ū:`U`},lv:{ā:`a`,č:`c`,ē:`e`,ģ:`g`,ī:`i`,ķ:`k`,ļ:`l`,ņ:`n`,š:`s`,ū:`u`,ž:`z`,Ā:`A`,Č:`C`,Ē:`E`,Ģ:`G`,Ī:`i`,Ķ:`k`,Ļ:`L`,Ņ:`N`,Š:`S`,Ū:`u`,Ž:`Z`},pl:{ą:`a`,ć:`c`,ę:`e`,ł:`l`,ń:`n`,ó:`o`,ś:`s`,ź:`z`,ż:`z`,Ą:`A`,Ć:`C`,Ę:`e`,Ł:`L`,Ń:`N`,Ó:`O`,Ś:`S`,Ź:`Z`,Ż:`Z`},sv:{ä:`a`,Ä:`A`,ö:`o`,Ö:`O`},sk:{ä:`a`,Ä:`A`},sr:{љ:`lj`,њ:`nj`,Љ:`Lj`,Њ:`Nj`,đ:`dj`,Đ:`Dj`},tr:{Ü:`U`,Ö:`O`,ü:`u`,ö:`o`}},o={ar:{"∆":`delta`,"∞":`la-nihaya`,"♥":`hob`,"&":`wa`,"|":`aw`,"<":`aqal-men`,">":`akbar-men`,"∑":`majmou`,"¤":`omla`},az:{},ca:{"∆":`delta`,"∞":`infinit`,"♥":`amor`,"&":`i`,"|":`o`,"<":`menys que`,">":`mes que`,"∑":`suma dels`,"¤":`moneda`},cs:{"∆":`delta`,"∞":`nekonecno`,"♥":`laska`,"&":`a`,"|":`nebo`,"<":`mensi nez`,">":`vetsi nez`,"∑":`soucet`,"¤":`mena`},de:{"∆":`delta`,"∞":`unendlich`,"♥":`Liebe`,"&":`und`,"|":`oder`,"<":`kleiner als`,">":`groesser als`,"∑":`Summe von`,"¤":`Waehrung`},dv:{"∆":`delta`,"∞":`kolunulaa`,"♥":`loabi`,"&":`aai`,"|":`noonee`,"<":`ah vure kuda`,">":`ah vure bodu`,"∑":`jumula`,"¤":`faisaa`},en:{"∆":`delta`,"∞":`infinity`,"♥":`love`,"&":`and`,"|":`or`,"<":`less than`,">":`greater than`,"∑":`sum`,"¤":`currency`},es:{"∆":`delta`,"∞":`infinito`,"♥":`amor`,"&":`y`,"|":`u`,"<":`menos que`,">":`mas que`,"∑":`suma de los`,"¤":`moneda`},fa:{"∆":`delta`,"∞":`bi-nahayat`,"♥":`eshgh`,"&":`va`,"|":`ya`,"<":`kamtar-az`,">":`bishtar-az`,"∑":`majmooe`,"¤":`vahed`},fi:{"∆":`delta`,"∞":`aarettomyys`,"♥":`rakkaus`,"&":`ja`,"|":`tai`,"<":`pienempi kuin`,">":`suurempi kuin`,"∑":`summa`,"¤":`valuutta`},fr:{"∆":`delta`,"∞":`infiniment`,"♥":`Amour`,"&":`et`,"|":`ou`,"<":`moins que`,">":`superieure a`,"∑":`somme des`,"¤":`monnaie`},ge:{"∆":`delta`,"∞":`usasruloba`,"♥":`siqvaruli`,"&":`da`,"|":`an`,"<":`naklebi`,">":`meti`,"∑":`jami`,"¤":`valuta`},gr:{},hu:{"∆":`delta`,"∞":`vegtelen`,"♥":`szerelem`,"&":`es`,"|":`vagy`,"<":`kisebb mint`,">":`nagyobb mint`,"∑":`szumma`,"¤":`penznem`},it:{"∆":`delta`,"∞":`infinito`,"♥":`amore`,"&":`e`,"|":`o`,"<":`minore di`,">":`maggiore di`,"∑":`somma`,"¤":`moneta`},lt:{"∆":`delta`,"∞":`begalybe`,"♥":`meile`,"&":`ir`,"|":`ar`,"<":`maziau nei`,">":`daugiau nei`,"∑":`suma`,"¤":`valiuta`},lv:{"∆":`delta`,"∞":`bezgaliba`,"♥":`milestiba`,"&":`un`,"|":`vai`,"<":`mazak neka`,">":`lielaks neka`,"∑":`summa`,"¤":`valuta`},my:{"∆":`kwahkhyaet`,"∞":`asaonasme`,"♥":`akhyait`,"&":`nhin`,"|":`tho`,"<":`ngethaw`,">":`kyithaw`,"∑":`paungld`,"¤":`ngwekye`},mk:{},nl:{"∆":`delta`,"∞":`oneindig`,"♥":`liefde`,"&":`en`,"|":`of`,"<":`kleiner dan`,">":`groter dan`,"∑":`som`,"¤":`valuta`},pl:{"∆":`delta`,"∞":`nieskonczonosc`,"♥":`milosc`,"&":`i`,"|":`lub`,"<":`mniejsze niz`,">":`wieksze niz`,"∑":`suma`,"¤":`waluta`},pt:{"∆":`delta`,"∞":`infinito`,"♥":`amor`,"&":`e`,"|":`ou`,"<":`menor que`,">":`maior que`,"∑":`soma`,"¤":`moeda`},ro:{"∆":`delta`,"∞":`infinit`,"♥":`dragoste`,"&":`si`,"|":`sau`,"<":`mai mic ca`,">":`mai mare ca`,"∑":`suma`,"¤":`valuta`},ru:{"∆":`delta`,"∞":`beskonechno`,"♥":`lubov`,"&":`i`,"|":`ili`,"<":`menshe`,">":`bolshe`,"∑":`summa`,"¤":`valjuta`},sk:{"∆":`delta`,"∞":`nekonecno`,"♥":`laska`,"&":`a`,"|":`alebo`,"<":`menej ako`,">":`viac ako`,"∑":`sucet`,"¤":`mena`},sr:{},tr:{"∆":`delta`,"∞":`sonsuzluk`,"♥":`ask`,"&":`ve`,"|":`veya`,"<":`kucuktur`,">":`buyuktur`,"∑":`toplam`,"¤":`para birimi`},uk:{"∆":`delta`,"∞":`bezkinechnist`,"♥":`lubov`,"&":`i`,"|":`abo`,"<":`menshe`,">":`bilshe`,"∑":`suma`,"¤":`valjuta`},vn:{"∆":`delta`,"∞":`vo cuc`,"♥":`yeu`,"&":`va`,"|":`hoac`,"<":`nho hon`,">":`lon hon`,"∑":`tong`,"¤":`tien te`}},s=[`;`,`?`,`:`,`@`,`&`,`=`,`+`,`$`,`,`,`/`].join(``),c=[`;`,`?`,`:`,`@`,`&`,`=`,`+`,`$`,`,`].join(``),l=[`.`,`!`,`~`,`*`,`'`,`(`,`)`].join(``),u=function(e,t){var u=`-`,d=``,m=``,h=!0,g={},_,v,y,b,x,S,C,w,T,E,D,O,ee,te,ne=``;if(typeof e!=`string`)return``;if(typeof t==`string`&&(u=t),C=o.en,w=a.en,typeof t==`object`)for(D in _=t.maintainCase||!1,g=t.custom&&typeof t.custom==`object`?t.custom:g,y=+t.truncate>1&&t.truncate||!1,b=t.uric||!1,x=t.uricNoSlash||!1,S=t.mark||!1,h=!(t.symbols===!1||t.lang===!1),u=t.separator||u,b&&(ne+=s),x&&(ne+=c),S&&(ne+=l),C=t.lang&&o[t.lang]&&h?o[t.lang]:h?o.en:{},w=t.lang&&a[t.lang]?a[t.lang]:t.lang===!1||t.lang===!0?{}:a.en,t.titleCase&&typeof t.titleCase.length==`number`&&Array.prototype.toString.call(t.titleCase)?(t.titleCase.forEach(function(e){g[e+``]=e+``}),v=!0):v=!!t.titleCase,t.custom&&typeof t.custom.length==`number`&&Array.prototype.toString.call(t.custom)&&t.custom.forEach(function(e){g[e+``]=e+``}),Object.keys(g).forEach(function(t){var n=t.length>1?RegExp(`\\b`+f(t)+`\\b`,`gi`):new RegExp(f(t),`gi`);e=e.replace(n,g[t])}),g)ne+=D;for(ne+=u,ne=f(ne),e=e.replace(/(^\s+|\s+$)/g,``),ee=!1,te=!1,E=0,O=e.length;E<O;E++)D=e[E],p(D,g)?ee=!1:w[D]?(D=ee&&w[D].match(/[A-Za-z0-9]/)?` `+w[D]:w[D],ee=!1):D in n?(E+1<O&&r.indexOf(e[E+1])>=0?(m+=D,D=``):te===!0?(D=i[m]+n[D],m=``):D=ee&&n[D].match(/[A-Za-z0-9]/)?` `+n[D]:n[D],ee=!1,te=!1):D in i?(m+=D,D=``,E===O-1&&(D=i[m]),te=!0):C[D]&&!(b&&s.indexOf(D)!==-1)&&!(x&&c.indexOf(D)!==-1)?(D=ee||d.substr(-1).match(/[A-Za-z0-9]/)?u+C[D]:C[D],D+=e[E+1]!==void 0&&e[E+1].match(/[A-Za-z0-9]/)?u:``,ee=!0):(te===!0?(D=i[m]+D,m=``,te=!1):ee&&(/[A-Za-z0-9]/.test(D)||d.substr(-1).match(/A-Za-z0-9]/))&&(D=` `+D),ee=!1),d+=D.replace(RegExp(`[^\\w\\s`+ne+`_-]`,`g`),u);return v&&(d=d.replace(/(\w)(\S*)/g,function(e,t,n){var r=t.toUpperCase()+(n===null?``:n);return Object.keys(g).indexOf(r.toLowerCase())<0?r:r.toLowerCase()})),d=d.replace(/\s+/g,u).replace(RegExp(`\\`+u+`+`,`g`),u).replace(RegExp(`(^\\`+u+`+|\\`+u+`+$)`,`g`),``),y&&d.length>y&&(T=d.charAt(y)===u,d=d.slice(0,y),T||(d=d.slice(0,d.lastIndexOf(u)))),!_&&!v&&(d=d.toLowerCase()),d},d=function(e){return function(t){return u(t,e)}},f=function(e){return e.replace(/[-\\^$*+?.()|[\]{}\/]/g,`\\$&`)},p=function(e,t){for(var n in t)if(t[n]===e)return!0};if(t!==void 0&&t.exports)t.exports=u,t.exports.createSlug=d;else if(typeof define<`u`&&define.amd)define([],function(){return u});else try{if(e.getSlug||e.createSlug)throw`speakingurl: globals exists /(getSlug|createSlug)/`;e.getSlug=u,e.createSlug=d}catch{}})(e)}}),yy=hy({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(e,t){R(),t.exports=vy()}});R(),R(),R(),R(),R(),R(),R(),R();function by(e){let t=e.name||e._componentTag||e.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__||e.__name;return t===`index`&&e.__file?.endsWith(`index.vue`)?``:t}function xy(e){let t=e.__file;if(t)return ny(ry(t,`.vue`))}function Sy(e,t){return e.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__=t,t}function Cy(e){if(e.__VUE_DEVTOOLS_NEXT_APP_RECORD__)return e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(e.root)return e.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__}function wy(e){let t=e.subTree?.type,n=Cy(e);return n?n?.types?.Fragment===t:!1}function Ty(e){let t=by(e?.type||{});if(t)return t;if(e?.root===e)return`Root`;for(let t in e.parent?.type?.components)if(e.parent.type.components[t]===e?.type)return Sy(e,t);for(let t in e.appContext?.components)if(e.appContext.components[t]===e?.type)return Sy(e,t);return xy(e?.type||{})||`Anonymous Component`}function Ey(e){return`${e?.appContext?.app?.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__??0}:${e===e?.root?`root`:e.uid}`}function Dy(e,t){return t||=`${e.id}:root`,e.instanceMap.get(t)||e.instanceMap.get(`:root`)}function Oy(){let e={top:0,bottom:0,left:0,right:0,get width(){return e.right-e.left},get height(){return e.bottom-e.top}};return e}var ky;function Ay(e){return ky||=document.createRange(),ky.selectNode(e),ky.getBoundingClientRect()}function jy(e){let t=Oy();if(!e.children)return t;for(let n=0,r=e.children.length;n<r;n++){let r=e.children[n],i;if(r.component)i=Py(r.component);else if(r.el){let e=r.el;e.nodeType===1||e.getBoundingClientRect?i=e.getBoundingClientRect():e.nodeType===3&&e.data.trim()&&(i=Ay(e))}i&&My(t,i)}return t}function My(e,t){return(!e.top||t.top<e.top)&&(e.top=t.top),(!e.bottom||t.bottom>e.bottom)&&(e.bottom=t.bottom),(!e.left||t.left<e.left)&&(e.left=t.left),(!e.right||t.right>e.right)&&(e.right=t.right),e}var Ny={top:0,left:0,right:0,bottom:0,width:0,height:0};function Py(e){let t=e.subTree.el;return typeof window>`u`?Ny:wy(e)?jy(e.subTree):t?.nodeType===1?t?.getBoundingClientRect():e.subTree.component?Py(e.subTree.component):Ny}R();function Fy(e){return wy(e)?Iy(e.subTree):e.subTree?[e.subTree.el]:[]}function Iy(e){if(!e.children)return[];let t=[];return e.children.forEach(e=>{e.component?t.push(...Fy(e.component)):e?.el&&t.push(e.el)}),t}var Ly=`__vue-devtools-component-inspector__`,Ry=`__vue-devtools-component-inspector__card__`,zy=`__vue-devtools-component-inspector__name__`,By=`__vue-devtools-component-inspector__indicator__`,Vy={display:`block`,zIndex:2147483640,position:`fixed`,backgroundColor:`#42b88325`,border:`1px solid #42b88350`,borderRadius:`5px`,transition:`all 0.1s ease-in`,pointerEvents:`none`},Hy={fontFamily:`Arial, Helvetica, sans-serif`,padding:`5px 8px`,borderRadius:`4px`,textAlign:`left`,position:`absolute`,left:0,color:`#e9e9e9`,fontSize:`14px`,fontWeight:600,lineHeight:`24px`,backgroundColor:`#42b883`,boxShadow:`0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)`},Uy={display:`inline-block`,fontWeight:400,fontStyle:`normal`,fontSize:`12px`,opacity:.7};function Wy(){return document.getElementById(Ly)}function Gy(){return document.getElementById(Ry)}function Ky(){return document.getElementById(By)}function qy(){return document.getElementById(zy)}function Jy(e){return{left:`${Math.round(e.left*100)/100}px`,top:`${Math.round(e.top*100)/100}px`,width:`${Math.round(e.width*100)/100}px`,height:`${Math.round(e.height*100)/100}px`}}function Yy(e){let t=document.createElement(`div`);t.id=e.elementId??Ly,Object.assign(t.style,{...Vy,...Jy(e.bounds),...e.style});let n=document.createElement(`span`);n.id=Ry,Object.assign(n.style,{...Hy,top:e.bounds.top<35?0:`-35px`});let r=document.createElement(`span`);r.id=zy,r.innerHTML=`&lt;${e.name}&gt;&nbsp;&nbsp;`;let i=document.createElement(`i`);return i.id=By,i.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`,Object.assign(i.style,Uy),n.appendChild(r),n.appendChild(i),t.appendChild(n),document.body.appendChild(t),t}function Xy(e){let t=Wy(),n=Gy(),r=qy(),i=Ky();t&&(Object.assign(t.style,{...Vy,...Jy(e.bounds)}),Object.assign(n.style,{top:e.bounds.top<35?0:`-35px`}),r.innerHTML=`&lt;${e.name}&gt;&nbsp;&nbsp;`,i.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`)}function Zy(e){let t=Py(e);if(!t.width&&!t.height)return;let n=Ty(e);Wy()?Xy({bounds:t,name:n}):Yy({bounds:t,name:n})}function Qy(){let e=Wy();e&&(e.style.display=`none`)}var $y=null;function eb(e){let t=e.target;if(t){let e=t.__vueParentComponent;if(e&&($y=e,e.vnode.el)){let t=Py(e),n=Ty(e);Wy()?Xy({bounds:t,name:n}):Yy({bounds:t,name:n})}}}function tb(e,t){e.preventDefault(),e.stopPropagation(),$y&&t(Ey($y))}var nb=null;function rb(){Qy(),window.removeEventListener(`mouseover`,eb),window.removeEventListener(`click`,nb,!0),nb=null}function ib(){return window.addEventListener(`mouseover`,eb),new Promise(e=>{function t(n){n.preventDefault(),n.stopPropagation(),tb(n,n=>{window.removeEventListener(`click`,t,!0),nb=null,window.removeEventListener(`mouseover`,eb);let r=Wy();r&&(r.style.display=`none`),e(JSON.stringify({id:n}))})}nb=t,window.addEventListener(`click`,t,!0)})}function ab(e){let t=Dy(Rb.value,e.id);if(t){let[n]=Fy(t);if(typeof n.scrollIntoView==`function`)n.scrollIntoView({behavior:`smooth`});else{let e=Py(t),n=document.createElement(`div`),r={...Jy(e),position:`absolute`};Object.assign(n.style,r),document.body.appendChild(n),n.scrollIntoView({behavior:`smooth`}),setTimeout(()=>{document.body.removeChild(n)},2e3)}setTimeout(()=>{let n=Py(t);if(n.width||n.height){let r=Ty(t),i=Wy();i?Xy({...e,name:r,bounds:n}):Yy({...e,name:r,bounds:n}),setTimeout(()=>{i&&(i.style.display=`none`)},1500)}},1200)}}R();var ob;(ob=Qv).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__??(ob.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__=!0);function sb(e){let t=0,n=setInterval(()=>{Qv.__VUE_INSPECTOR__&&(clearInterval(n),t+=30,e()),t>=5e3&&clearInterval(n)},30)}function cb(){let e=Qv.__VUE_INSPECTOR__,t=e.openInEditor;e.openInEditor=async(...n)=>{e.disable(),t(...n)}}function lb(){return new Promise(e=>{function t(){cb(),e(Qv.__VUE_INSPECTOR__)}Qv.__VUE_INSPECTOR__?t():sb(()=>{t()})})}R(),R();function ub(e){return!!(e&&e.__v_isReadonly)}function db(e){return ub(e)?db(e.__v_raw):!!(e&&e.__v_isReactive)}function fb(e){return!!(e&&e.__v_isRef===!0)}function pb(e){let t=e&&e.__v_raw;return t?pb(t):e}var mb=class{constructor(){this.refEditor=new hb}set(e,t,n,r){let i=Array.isArray(t)?t:t.split(`.`);for(;i.length>1;){let t=i.shift();e=e instanceof Map?e.get(t):e instanceof Set?Array.from(e.values())[t]:e[t],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}let a=i[0],o=this.refEditor.get(e)[a];r?r(e,a,n):this.refEditor.isRef(o)?this.refEditor.set(o,n):e[a]=n}get(e,t){let n=Array.isArray(t)?t:t.split(`.`);for(let t=0;t<n.length;t++)if(e=e instanceof Map?e.get(n[t]):e[n[t]],this.refEditor.isRef(e)&&(e=this.refEditor.get(e)),!e)return;return e}has(e,t,n=!1){if(e===void 0)return!1;let r=Array.isArray(t)?t.slice():t.split(`.`),i=n?2:1;for(;e&&r.length>i;){let t=r.shift();e=e[t],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}return e!=null&&Object.prototype.hasOwnProperty.call(e,r[0])}createDefaultSetCallback(e){return(t,n,r)=>{if((e.remove||e.newKey)&&(Array.isArray(t)?t.splice(n,1):pb(t)instanceof Map?t.delete(n):pb(t)instanceof Set?t.delete(Array.from(t.values())[n]):Reflect.deleteProperty(t,n)),!e.remove){let i=t[e.newKey||n];this.refEditor.isRef(i)?this.refEditor.set(i,r):pb(t)instanceof Map?t.set(e.newKey||n,r):pb(t)instanceof Set?t.add(r):t[e.newKey||n]=r}}}},hb=class{set(e,t){if(fb(e))e.value=t;else{if(e instanceof Set&&Array.isArray(t)){e.clear(),t.forEach(t=>e.add(t));return}let n=Object.keys(t);if(e instanceof Map){let r=new Set(e.keys());n.forEach(n=>{e.set(n,Reflect.get(t,n)),r.delete(n)}),r.forEach(t=>e.delete(t));return}let r=new Set(Object.keys(e));n.forEach(n=>{Reflect.set(e,n,Reflect.get(t,n)),r.delete(n)}),r.forEach(t=>Reflect.deleteProperty(e,t))}}get(e){return fb(e)?e.value:e}isRef(e){return fb(e)||db(e)}};new mb,R(),R(),R();var gb=`__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__`;function _b(){if(typeof window>`u`||!Zv||typeof localStorage>`u`||localStorage===null)return{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:``};let e=localStorage.getItem===void 0?null:localStorage.getItem(gb);return e?JSON.parse(e):{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:``}}R(),R(),R();var vb;(vb=Qv).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS??(vb.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS=[]);var yb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS,{get(e,t,n){return Reflect.get(e,t,n)}});function bb(e,t){Hb.timelineLayersState[t.id]=!1,yb.push({...e,descriptorId:t.id,appRecord:Cy(t.app)})}var xb;(xb=Qv).__VUE_DEVTOOLS_KIT_INSPECTOR__??(xb.__VUE_DEVTOOLS_KIT_INSPECTOR__=[]);var Sb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_INSPECTOR__,{get(e,t,n){return Reflect.get(e,t,n)}}),Cb=oy(()=>{Sx.hooks.callHook(`sendInspectorToClient`,Tb())});function wb(e,t){Sb.push({options:e,descriptor:t,treeFilterPlaceholder:e.treeFilterPlaceholder??`Search tree...`,stateFilterPlaceholder:e.stateFilterPlaceholder??`Search state...`,treeFilter:``,selectedNodeId:``,appRecord:Cy(t.app)}),Cb()}function Tb(){return Sb.filter(e=>e.descriptor.app===Rb.value.app).filter(e=>e.descriptor.id!==`components`).map(e=>{let t=e.descriptor,n=e.options;return{id:n.id,label:n.label,logo:t.logo,icon:`custom-ic-baseline-${(n?.icon)?.replace(/_/g,`-`)}`,packageName:t.packageName,homepage:t.homepage,pluginId:t.id}})}function Eb(e,t){return Sb.find(n=>n.options.id===e&&(t?n.descriptor.app===t:!0))}function Db(){let e=fe();e.hook(`addInspector`,({inspector:e,plugin:t})=>{wb(e,t.descriptor)});let t=oy(async({inspectorId:t,plugin:n})=>{if(!t||!n?.descriptor?.app||Hb.highPerfModeEnabled)return;let r=Eb(t,n.descriptor.app),i={app:n.descriptor.app,inspectorId:t,filter:r?.treeFilter||``,rootNodes:[]};await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(i))),t()},`getInspectorTree`)}),e.callHookWith(async e=>{await Promise.all(e.map(e=>e({inspectorId:t,rootNodes:i.rootNodes})))},`sendInspectorTreeToClient`)},120);e.hook(`sendInspectorTree`,t);let n=oy(async({inspectorId:t,plugin:n})=>{if(!t||!n?.descriptor?.app||Hb.highPerfModeEnabled)return;let r=Eb(t,n.descriptor.app),i={app:n.descriptor.app,inspectorId:t,nodeId:r?.selectedNodeId||``,state:null},a={currentTab:`custom-inspector:${t}`};i.nodeId&&await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(i,a))),t()},`getInspectorState`)}),e.callHookWith(async e=>{await Promise.all(e.map(e=>e({inspectorId:t,nodeId:i.nodeId,state:i.state})))},`sendInspectorStateToClient`)},120);return e.hook(`sendInspectorState`,n),e.hook(`customInspectorSelectNode`,({inspectorId:e,nodeId:t,plugin:n})=>{let r=Eb(e,n.descriptor.app);r&&(r.selectedNodeId=t)}),e.hook(`timelineLayerAdded`,({options:e,plugin:t})=>{bb(e,t.descriptor)}),e.hook(`timelineEventAdded`,({options:t,plugin:n})=>{Hb.highPerfModeEnabled||!Hb.timelineLayersState?.[n.descriptor.id]&&![`performance`,`component-event`,`keyboard`,`mouse`].includes(t.layerId)||e.callHookWith(async e=>{await Promise.all(e.map(e=>e(t)))},`sendTimelineEventToClient`)}),e.hook(`getComponentInstances`,async({app:e})=>{let t=e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(!t)return null;let n=t.id.toString();return[...t.instanceMap].filter(([e])=>e.split(`:`)[0]===n).map(([,e])=>e)}),e.hook(`getComponentBounds`,async({instance:e})=>Py(e)),e.hook(`getComponentName`,({instance:e})=>Ty(e)),e.hook(`componentHighlight`,({uid:e})=>{let t=Rb.value.instanceMap.get(e);t&&Zy(t)}),e.hook(`componentUnhighlight`,()=>{Qy()}),e}var Ob;(Ob=Qv).__VUE_DEVTOOLS_KIT_APP_RECORDS__??(Ob.__VUE_DEVTOOLS_KIT_APP_RECORDS__=[]);var kb;(kb=Qv).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__??(kb.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__={});var Ab;(Ab=Qv).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__??(Ab.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=``);var jb;(jb=Qv).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__??(jb.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__=[]);var Mb;(Mb=Qv).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__??(Mb.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__=[]);var Nb=`__VUE_DEVTOOLS_KIT_GLOBAL_STATE__`;function Pb(){return{connected:!1,clientConnected:!1,vitePluginDetected:!0,appRecords:[],activeAppRecordId:``,tabs:[],commands:[],highPerfModeEnabled:!0,devtoolsClientDetected:{},perfUniqueGroupId:0,timelineLayersState:_b()}}var Fb;(Fb=Qv)[Nb]??(Fb[Nb]=Pb());var Ib=oy(e=>{Sx.hooks.callHook(`devtoolsStateUpdated`,{state:e})});oy((e,t)=>{Sx.hooks.callHook(`devtoolsConnectedUpdated`,{state:e,oldState:t})});var Lb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_APP_RECORDS__,{get(e,t,n){return t===`value`?Qv.__VUE_DEVTOOLS_KIT_APP_RECORDS__:Qv.__VUE_DEVTOOLS_KIT_APP_RECORDS__[t]}}),Rb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__,{get(e,t,n){return t===`value`?Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__:t===`id`?Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__:Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[t]}});function zb(){Ib({...Qv[Nb],appRecords:Lb.value,activeAppRecordId:Rb.id,tabs:Qv.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,commands:Qv.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__})}function Bb(e){Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__=e,zb()}function Vb(e){Qv.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=e,zb()}var Hb=new Proxy(Qv[Nb],{get(e,t){return t===`appRecords`?Lb:t===`activeAppRecordId`?Rb.id:t===`tabs`?Qv.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__:t===`commands`?Qv.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__:Qv[Nb][t]},deleteProperty(e,t){return delete e[t],!0},set(e,t,n){return{...Qv[Nb]},e[t]=n,Qv[Nb][t]=n,!0}});function Ub(e={}){let{file:t,host:n,baseUrl:r=window.location.origin,line:i=0,column:a=0}=e;if(t){if(n===`chrome-extension`){let e=t.replace(/\\/g,`\\\\`),n=window.VUE_DEVTOOLS_CONFIG?.openInEditorHost??`/`;fetch(`${n}__open-in-editor?file=${encodeURI(t)}`).then(t=>{if(!t.ok){let t=`Opening component ${e} failed`;console.log(`%c${t}`,`color:red`)}})}else if(Hb.vitePluginDetected){let e=Qv.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__??r;Qv.__VUE_INSPECTOR__.openInEditor(e,t,i,a)}}}R(),R(),R(),R(),R();var Wb;(Wb=Qv).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__??(Wb.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__=[]);var Gb=new Proxy(Qv.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__,{get(e,t,n){return Reflect.get(e,t,n)}});function Kb(e){let t={};return Object.keys(e).forEach(n=>{t[n]=e[n].defaultValue}),t}function qb(e){return`__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${e}__`}function Jb(e){return(Gb.find(t=>t[0].id===e&&!!t[0]?.settings)?.[0]??null)?.settings??null}function Yb(e,t){let n=qb(e);if(n){let e=localStorage.getItem(n);if(e)return JSON.parse(e)}return Kb(e?(Gb.find(t=>t[0].id===e)?.[0]??null)?.settings??{}:t)}function Xb(e,t){let n=qb(e);localStorage.getItem(n)||localStorage.setItem(n,JSON.stringify(Kb(t)))}function Zb(e,t,n){let r=qb(e),i=localStorage.getItem(r),a=JSON.parse(i||`{}`),o={...a,[t]:n};localStorage.setItem(r,JSON.stringify(o)),Sx.hooks.callHookWith(r=>{r.forEach(r=>r({pluginId:e,key:t,oldValue:a[t],newValue:n,settings:o}))},`setPluginSettings`)}R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R();var Qb,$b=(Qb=Qv).__VUE_DEVTOOLS_HOOK??(Qb.__VUE_DEVTOOLS_HOOK=fe()),ex={on:{vueAppInit(e){$b.hook(`app:init`,e)},vueAppUnmount(e){$b.hook(`app:unmount`,e)},vueAppConnected(e){$b.hook(`app:connected`,e)},componentAdded(e){return $b.hook(`component:added`,e)},componentEmit(e){return $b.hook(`component:emit`,e)},componentUpdated(e){return $b.hook(`component:updated`,e)},componentRemoved(e){return $b.hook(`component:removed`,e)},setupDevtoolsPlugin(e){$b.hook(`devtools-plugin:setup`,e)},perfStart(e){return $b.hook(`perf:start`,e)},perfEnd(e){return $b.hook(`perf:end`,e)}},setupDevToolsPlugin(e,t){return $b.callHook(`devtools-plugin:setup`,e,t)}},tx=class{constructor({plugin:e,ctx:t}){this.hooks=t.hooks,this.plugin=e}get on(){return{visitComponentTree:e=>{this.hooks.hook(`visitComponentTree`,e)},inspectComponent:e=>{this.hooks.hook(`inspectComponent`,e)},editComponentState:e=>{this.hooks.hook(`editComponentState`,e)},getInspectorTree:e=>{this.hooks.hook(`getInspectorTree`,e)},getInspectorState:e=>{this.hooks.hook(`getInspectorState`,e)},editInspectorState:e=>{this.hooks.hook(`editInspectorState`,e)},inspectTimelineEvent:e=>{this.hooks.hook(`inspectTimelineEvent`,e)},timelineCleared:e=>{this.hooks.hook(`timelineCleared`,e)},setPluginSettings:e=>{this.hooks.hook(`setPluginSettings`,e)}}}notifyComponentUpdate(e){if(Hb.highPerfModeEnabled)return;let t=Tb().find(e=>e.packageName===this.plugin.descriptor.packageName);if(t?.id){if(e){let t=[e.appContext.app,e.uid,e.parent?.uid,e];$b.callHook(`component:updated`,...t)}else $b.callHook(`component:updated`);this.hooks.callHook(`sendInspectorState`,{inspectorId:t.id,plugin:this.plugin})}}addInspector(e){this.hooks.callHook(`addInspector`,{inspector:e,plugin:this.plugin}),this.plugin.descriptor.settings&&Xb(e.id,this.plugin.descriptor.settings)}sendInspectorTree(e){Hb.highPerfModeEnabled||this.hooks.callHook(`sendInspectorTree`,{inspectorId:e,plugin:this.plugin})}sendInspectorState(e){Hb.highPerfModeEnabled||this.hooks.callHook(`sendInspectorState`,{inspectorId:e,plugin:this.plugin})}selectInspectorNode(e,t){this.hooks.callHook(`customInspectorSelectNode`,{inspectorId:e,nodeId:t,plugin:this.plugin})}visitComponentTree(e){return this.hooks.callHook(`visitComponentTree`,e)}now(){return Hb.highPerfModeEnabled?0:Date.now()}addTimelineLayer(e){this.hooks.callHook(`timelineLayerAdded`,{options:e,plugin:this.plugin})}addTimelineEvent(e){Hb.highPerfModeEnabled||this.hooks.callHook(`timelineEventAdded`,{options:e,plugin:this.plugin})}getSettings(e){return Yb(e??this.plugin.descriptor.id,this.plugin.descriptor.settings)}getComponentInstances(e){return this.hooks.callHook(`getComponentInstances`,{app:e})}getComponentBounds(e){return this.hooks.callHook(`getComponentBounds`,{instance:e})}getComponentName(e){return this.hooks.callHook(`getComponentName`,{instance:e})}highlightElement(e){let t=e.__VUE_DEVTOOLS_NEXT_UID__;return this.hooks.callHook(`componentHighlight`,{uid:t})}unhighlightElement(){return this.hooks.callHook(`componentUnhighlight`)}};R(),R(),R(),R();var nx=`__vue_devtool_undefined__`,rx=`__vue_devtool_infinity__`,ix=`__vue_devtool_negative_infinity__`,ax=`__vue_devtool_nan__`;R(),R(),Object.entries({[nx]:`undefined`,[ax]:`NaN`,[rx]:`Infinity`,[ix]:`-Infinity`}).reduce((e,[t,n])=>(e[n]=t,e),{}),R(),R(),R(),R(),R();var ox;(ox=Qv).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__??(ox.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__=new Set);function sx(e,t){return ex.setupDevToolsPlugin(e,t)}function cx(e,t){let[n,r]=e;if(n.app!==t)return;let i=new tx({plugin:{setupFn:r,descriptor:n},ctx:Sx});n.packageName===`vuex`&&i.on.editInspectorState(e=>{i.sendInspectorState(e.inspectorId)}),r(i)}function lx(e,t){Qv.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(e)||Hb.highPerfModeEnabled&&!t?.inspectingComponent||(Qv.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(e),Gb.forEach(t=>{cx(t,e)}))}R(),R();var ux=`__VUE_DEVTOOLS_ROUTER__`,dx=`__VUE_DEVTOOLS_ROUTER_INFO__`,fx;(fx=Qv).__VUE_DEVTOOLS_ROUTER_INFO__??(fx.__VUE_DEVTOOLS_ROUTER_INFO__={currentRoute:null,routes:[]});var px;(px=Qv).__VUE_DEVTOOLS_ROUTER__??(px.__VUE_DEVTOOLS_ROUTER__={}),new Proxy(Qv[dx],{get(e,t){return Qv[dx][t]}}),new Proxy(Qv[ux],{get(e,t){if(t===`value`)return Qv[ux]}});function mx(e){let t=new Map;return(e?.getRoutes()||[]).filter(e=>!t.has(e.path)&&t.set(e.path,1))}function hx(e){return e.map(e=>{let{path:t,name:n,children:r,meta:i}=e;return r?.length&&(r=hx(r)),{path:t,name:n,children:r,meta:i}})}function gx(e){if(e){let{fullPath:t,hash:n,href:r,path:i,name:a,matched:o,params:s,query:c}=e;return{fullPath:t,hash:n,href:r,path:i,name:a,params:s,query:c,matched:hx(o)}}return e}function _x(e,t){function n(){let t=e.app?.config.globalProperties.$router,n=gx(t?.currentRoute.value),r=hx(mx(t)),i=console.warn;console.warn=()=>{},Qv[dx]={currentRoute:n?iy(n):{},routes:iy(r)},Qv[ux]=t,console.warn=i}n(),ex.on.componentUpdated(oy(()=>{t.value?.app===e.app&&(n(),!Hb.highPerfModeEnabled&&Sx.hooks.callHook(`routerInfoUpdated`,{state:Qv[dx]}))},200))}function vx(e){return{async getInspectorTree(t){let n={...t,app:Rb.value.app,rootNodes:[]};return await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(n))),t()},`getInspectorTree`)}),n.rootNodes},async getInspectorState(t){let n={...t,app:Rb.value.app,state:null},r={currentTab:`custom-inspector:${t.inspectorId}`};return await new Promise(t=>{e.callHookWith(async e=>{await Promise.all(e.map(e=>e(n,r))),t()},`getInspectorState`)}),n.state},editInspectorState(t){let n=new mb,r={...t,app:Rb.value.app,set:(e,r=t.path,i=t.state.value,a)=>{n.set(e,r,i,a||n.createDefaultSetCallback(t.state))}};e.callHookWith(e=>{e.forEach(e=>e(r))},`editInspectorState`)},sendInspectorState(t){let n=Eb(t);e.callHook(`sendInspectorState`,{inspectorId:t,plugin:{descriptor:n.descriptor,setupFn:()=>({})}})},inspectComponentInspector(){return ib()},cancelInspectComponentInspector(){return rb()},getComponentRenderCode(e){let t=Dy(Rb.value,e);if(t)return typeof t?.type==`function`?t.type.toString():t.render.toString()},scrollToComponent(e){return ab({id:e})},openInEditor:Ub,getVueInspector:lb,toggleApp(e,t){let n=Lb.value.find(t=>t.id===e);n&&(Vb(e),Bb(n),_x(n,Rb),Cb(),lx(n.app,t))},inspectDOM(e){let t=Dy(Rb.value,e);if(t){let[e]=Fy(t);e&&(Qv.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__=e)}},updatePluginSettings(e,t,n){Zb(e,t,n)},getPluginSettings(e){return{options:Jb(e),values:Yb(e)}}}}R();var yx;(yx=Qv).__VUE_DEVTOOLS_ENV__??(yx.__VUE_DEVTOOLS_ENV__={vitePluginDetected:!1});var bx=Db(),xx;(xx=Qv).__VUE_DEVTOOLS_KIT_CONTEXT__??(xx.__VUE_DEVTOOLS_KIT_CONTEXT__={hooks:bx,get state(){return{...Hb,activeAppRecordId:Rb.id,activeAppRecord:Rb.value,appRecords:Lb.value}},api:vx(bx)});var Sx=Qv.__VUE_DEVTOOLS_KIT_CONTEXT__;R(),_y(yy(),1);var Cx;(Cx=Qv).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__??(Cx.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__={id:0,appIds:new Set}),R(),R();function wx(e){Hb.highPerfModeEnabled=e??!Hb.highPerfModeEnabled,!e&&Rb.value&&lx(Rb.value.app)}R(),R(),R();function Tx(e){Hb.devtoolsClientDetected={...Hb.devtoolsClientDetected,...e},wx(!Object.values(Hb.devtoolsClientDetected).some(Boolean))}var Ex;(Ex=Qv).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__??(Ex.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__=Tx),R(),R(),R(),R(),R(),R(),R();var Dx=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},Ox=class{constructor(e){this.generateIdentifier=e,this.kv=new Dx}register(e,t){this.kv.getByValue(e)||(t||=this.generateIdentifier(e),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},kx=class extends Ox{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t==`object`?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};R(),R();function Ax(e){if(`values`in Object)return Object.values(e);let t=[];for(let n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function jx(e,t){let n=Ax(e);if(`find`in n)return n.find(t);let r=n;for(let e=0;e<r.length;e++){let n=r[e];if(t(n))return n}}function Mx(e,t){Object.entries(e).forEach(([e,n])=>t(n,e))}function Nx(e,t){return e.indexOf(t)!==-1}function Px(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(t(r))return r}}var Fx=class{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return jx(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}};R(),R();var Ix=e=>Object.prototype.toString.call(e).slice(8,-1),Lx=e=>e===void 0,Rx=e=>e===null,zx=e=>typeof e!=`object`||!e||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Bx=e=>zx(e)&&Object.keys(e).length===0,Vx=e=>Array.isArray(e),Hx=e=>typeof e==`string`,Ux=e=>typeof e==`number`&&!isNaN(e),Wx=e=>typeof e==`boolean`,Gx=e=>e instanceof RegExp,Kx=e=>e instanceof Map,qx=e=>e instanceof Set,Jx=e=>Ix(e)===`Symbol`,Yx=e=>e instanceof Date&&!isNaN(e.valueOf()),Xx=e=>e instanceof Error,Zx=e=>typeof e==`number`&&isNaN(e),Qx=e=>Wx(e)||Rx(e)||Lx(e)||Ux(e)||Hx(e)||Jx(e),$x=e=>typeof e==`bigint`,eS=e=>e===1/0||e===-1/0,tS=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),nS=e=>e instanceof URL;R();var rS=e=>e.replace(/\./g,`\\.`),iS=e=>e.map(String).map(rS).join(`.`),aS=e=>{let t=[],n=``;for(let r=0;r<e.length;r++){let i=e.charAt(r);if(i===`\\`&&e.charAt(r+1)===`.`){n+=`.`,r++;continue}if(i===`.`){t.push(n),n=``;continue}n+=i}let r=n;return t.push(r),t};R();function oS(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var sS=[oS(Lx,`undefined`,()=>null,()=>void 0),oS($x,`bigint`,e=>e.toString(),e=>typeof BigInt<`u`?BigInt(e):(console.error(`Please add a BigInt polyfill.`),e)),oS(Yx,`Date`,e=>e.toISOString(),e=>new Date(e)),oS(Xx,`Error`,(e,t)=>{let n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(t=>{n[t]=e[t]}),n},(e,t)=>{let n=Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(t=>{n[t]=e[t]}),n}),oS(Gx,`regexp`,e=>``+e,e=>{let t=e.slice(1,e.lastIndexOf(`/`)),n=e.slice(e.lastIndexOf(`/`)+1);return new RegExp(t,n)}),oS(qx,`set`,e=>[...e.values()],e=>new Set(e)),oS(Kx,`map`,e=>[...e.entries()],e=>new Map(e)),oS(e=>Zx(e)||eS(e),`number`,e=>Zx(e)?`NaN`:e>0?`Infinity`:`-Infinity`,Number),oS(e=>e===0&&1/e==-1/0,`number`,()=>`-0`,Number),oS(nS,`URL`,e=>e.toString(),e=>new URL(e))];function cS(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var lS=cS((e,t)=>Jx(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>[`symbol`,t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{let r=n.symbolRegistry.getValue(t[1]);if(!r)throw Error(`Trying to deserialize unknown symbol`);return r}),uS=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),dS=cS(tS,e=>[`typed-array`,e.constructor.name],e=>[...e],(e,t)=>{let n=uS[t[1]];if(!n)throw Error(`Trying to deserialize unknown typed array`);return new n(e)});function fS(e,t){return e?.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var pS=cS(fS,(e,t)=>[`class`,t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{let n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};let r={};return n.forEach(t=>{r[t]=e[t]}),r},(e,t,n)=>{let r=n.classRegistry.getValue(t[1]);if(!r)throw Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(r.prototype),e)}),mS=cS((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>[`custom`,t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{let r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw Error(`Trying to deserialize unknown custom value`);return r.deserialize(e)}),hS=[pS,lS,mS,dS],gS=(e,t)=>{let n=Px(hS,n=>n.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};let r=Px(sS,n=>n.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},_S={};sS.forEach(e=>{_S[e.annotation]=e});var vS=(e,t,n)=>{if(Vx(t))switch(t[0]){case`symbol`:return lS.untransform(e,t,n);case`class`:return pS.untransform(e,t,n);case`custom`:return mS.untransform(e,t,n);case`typed-array`:return dS.untransform(e,t,n);default:throw Error(`Unknown transformation: `+t)}else{let r=_S[t];if(!r)throw Error(`Unknown transformation: `+t);return r.untransform(e,n)}};R();var yS=(e,t)=>{if(t>e.size)throw Error(`index out of bounds`);let n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function bS(e){if(Nx(e,`__proto__`))throw Error(`__proto__ is not allowed as a property`);if(Nx(e,`prototype`))throw Error(`prototype is not allowed as a property`);if(Nx(e,`constructor`))throw Error(`constructor is not allowed as a property`)}var xS=(e,t)=>{bS(t);for(let n=0;n<t.length;n++){let r=t[n];if(qx(e))e=yS(e,+r);else if(Kx(e)){let i=+r,a=+t[++n]==0?`key`:`value`,o=yS(e,i);switch(a){case`key`:e=o;break;case`value`:e=e.get(o);break}}else e=e[r]}return e},SS=(e,t,n)=>{if(bS(t),t.length===0)return n(e);let r=e;for(let e=0;e<t.length-1;e++){let n=t[e];if(Vx(r)){let e=+n;r=r[e]}else if(zx(r))r=r[n];else if(qx(r)){let e=+n;r=yS(r,e)}else if(Kx(r)){if(e===t.length-2)break;let i=+n,a=+t[++e]==0?`key`:`value`,o=yS(r,i);switch(a){case`key`:r=o;break;case`value`:r=r.get(o);break}}}let i=t[t.length-1];if(Vx(r)?r[+i]=n(r[+i]):zx(r)&&(r[i]=n(r[i])),qx(r)){let e=yS(r,+i),t=n(e);e!==t&&(r.delete(e),r.add(t))}if(Kx(r)){let e=+t[t.length-2],a=yS(r,e);switch(+i==0?`key`:`value`){case`key`:{let e=n(a);r.set(e,r.get(a)),e!==a&&r.delete(a);break}case`value`:r.set(a,n(r.get(a)));break}}return e};function CS(e,t,n=[]){if(!e)return;if(!Vx(e)){Mx(e,(e,r)=>CS(e,t,[...n,...aS(r)]));return}let[r,i]=e;i&&Mx(i,(e,r)=>{CS(e,t,[...n,...aS(r)])}),t(r,n)}function wS(e,t,n){return CS(t,(t,r)=>{e=SS(e,r,e=>vS(e,t,n))}),e}function TS(e,t){function n(t,n){let r=xS(e,aS(n));t.map(aS).forEach(t=>{e=SS(e,t,()=>r)})}if(Vx(t)){let[r,i]=t;r.forEach(t=>{e=SS(e,aS(t),()=>e)}),i&&Mx(i,n)}else Mx(t,n);return e}var ES=(e,t)=>zx(e)||Vx(e)||Kx(e)||qx(e)||fS(e,t);function DS(e,t,n){let r=n.get(e);r?r.push(t):n.set(e,[t])}function OS(e,t){let n={},r;return e.forEach(e=>{if(e.length<=1)return;t||(e=e.map(e=>e.map(String)).sort((e,t)=>e.length-t.length));let[i,...a]=e;i.length===0?r=a.map(iS):n[iS(i)]=a.map(iS)}),r?Bx(n)?[r]:[r,n]:Bx(n)?void 0:n}var kS=(e,t,n,r,i=[],a=[],o=new Map)=>{let s=Qx(e);if(!s){DS(e,i,t);let n=o.get(e);if(n)return r?{transformedValue:null}:n}if(!ES(e,n)){let t=gS(e,n),r=t?{transformedValue:t.value,annotations:[t.type]}:{transformedValue:e};return s||o.set(e,r),r}if(Nx(a,e))return{transformedValue:null};let c=gS(e,n),l=c?.value??e,u=Vx(l)?[]:{},d={};Mx(l,(s,c)=>{if(c===`__proto__`||c===`constructor`||c===`prototype`)throw Error(`Detected property ${c}. This is a prototype pollution risk, please remove it from your object.`);let l=kS(s,t,n,r,[...i,c],[...a,e],o);u[c]=l.transformedValue,Vx(l.annotations)?d[c]=l.annotations:zx(l.annotations)&&Mx(l.annotations,(e,t)=>{d[rS(c)+`.`+t]=e})});let f=Bx(d)?{transformedValue:u,annotations:c?[c.type]:void 0}:{transformedValue:u,annotations:c?[c.type,d]:d};return s||o.set(e,f),f};R(),R();function AS(e){return Object.prototype.toString.call(e).slice(8,-1)}function jS(e){return AS(e)===`Array`}function MS(e){if(AS(e)!==`Object`)return!1;let t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function NS(e,t,n,r,i){let a={}.propertyIsEnumerable.call(r,t)?`enumerable`:`nonenumerable`;a===`enumerable`&&(e[t]=n),i&&a===`nonenumerable`&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function PS(e,t={}){if(jS(e))return e.map(e=>PS(e,t));if(!MS(e))return e;let n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((n,r)=>{if(jS(t.props)&&!t.props.includes(r))return n;let i=e[r];return NS(n,r,PS(i,t),e,t.nonenumerable),n},{})}var FS=class{constructor({dedupe:e=!1}={}){this.classRegistry=new kx,this.symbolRegistry=new Ox(e=>e.description??``),this.customTransformerRegistry=new Fx,this.allowedErrorProps=[],this.dedupe=e}serialize(e){let t=new Map,n=kS(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});let i=OS(t,this.dedupe);return i&&(r.meta={...r.meta,referentialEqualities:i}),r}deserialize(e){let{json:t,meta:n}=e,r=PS(t);return n?.values&&(r=wS(r,n.values,this)),n?.referentialEqualities&&(r=TS(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};FS.defaultInstance=new FS,FS.serialize=FS.defaultInstance.serialize.bind(FS.defaultInstance),FS.deserialize=FS.defaultInstance.deserialize.bind(FS.defaultInstance),FS.stringify=FS.defaultInstance.stringify.bind(FS.defaultInstance),FS.parse=FS.defaultInstance.parse.bind(FS.defaultInstance),FS.registerClass=FS.defaultInstance.registerClass.bind(FS.defaultInstance),FS.registerSymbol=FS.defaultInstance.registerSymbol.bind(FS.defaultInstance),FS.registerCustom=FS.defaultInstance.registerCustom.bind(FS.defaultInstance),FS.allowErrorProps=FS.defaultInstance.allowErrorProps.bind(FS.defaultInstance),FS.serialize,FS.deserialize,FS.stringify,FS.parse,FS.registerClass,FS.registerCustom,FS.registerSymbol,FS.allowErrorProps,R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R(),R();var IS;(IS=Qv).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__??(IS.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__=[]);var LS;(LS=Qv).__VUE_DEVTOOLS_KIT_RPC_CLIENT__??(LS.__VUE_DEVTOOLS_KIT_RPC_CLIENT__=null);var RS;(RS=Qv).__VUE_DEVTOOLS_KIT_RPC_SERVER__??(RS.__VUE_DEVTOOLS_KIT_RPC_SERVER__=null);var zS;(zS=Qv).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__??(zS.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__=null);var BS;(BS=Qv).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__??(BS.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__=null);var VS;(VS=Qv).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__??(VS.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__=null),R(),R(),R(),R(),R(),R(),R(),_(),d(),ie();var HS=`5.8.1`;function US(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var WS=US(`html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot`),GS=e=>t=>z_(t)&&e in t&&!!t[e],KS=GS(`isObject3D`),qS=GS(`isMesh`),JS=GS(`isCamera`),YS=GS(`isOrthographicCamera`),XS=GS(`isPerspectiveCamera`),ZS=GS(`isColor`),QS=e=>B_(e)||R_(e)||ZS(e),$S=e=>e instanceof Xr,eC=GS(`isBufferGeometry`),tC=GS(`isMaterial`),nC=GS(`isLight`),rC=GS(`isFog`),iC=GS(`isScene`),aC=e=>typeof e==`object`&&!!e&&`set`in e&&typeof e.set==`function`,oC=e=>aC(e)&&`copy`in e&&typeof e.copy==`function`,sC=e=>!!e?.constructor,cC=e=>JS(e)||YS(e)||XS(e),lC=e=>KS(e)||eC(e)||tC(e)||rC(e),uC=GS(`isPrimitive`),dC=e=>lC(e)&&`__tres`in e,fC=(e,t)=>{let n=0;for(let r=0;r<e.length;r++)t(e[r],r)&&(e[n]=e[r],n++);return e.length=n,e},pC=`[TresJS ▲ ■ ●] `;function mC(...e){typeof e[0]==`string`?e[0]=pC+e[0]:e.unshift(pC),console.error(...e)}function hC(...e){typeof e[0]==`string`?e[0]=pC+e[0]:e.unshift(pC),console.warn(...e)}function gC(e){(e=>`map`in e&&!!e.map)(e)&&e.map.dispose(),e.dispose()}function _C(e){if(e.parent&&e.removeFromParent?.(),delete e.__tres,[...e.children].forEach(e=>_C(e)),!(e instanceof Ci)){let t=e;e&&e.dispose?.(),t.geometry&&t.geometry.dispose(),Array.isArray(t.material)?t.material.forEach(e=>gC(e)):t.material&&gC(t.material)}}function vC(e,t){let n=e;if(t.includes(`-`)){let e=t.split(`-`),r=e.shift();for(;n&&e.length;)r in n?(n=n[r],r=e.shift()):r=yC(r,e.shift());return{target:n,key:yC(r,...e)}}else return{target:n,key:t}}function yC(...e){return e.map((e,t)=>t===0?e:e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function bC(e,t,n){let r=/-\d+$/;if(B_(n)){if(r.test(n)){let{target:t,key:i}=vC(e,n.replace(r,``));if(!Array.isArray(t[i])){let e=t[i],n=[];n.__tresDetach=()=>{n.every(e=>H_(e))&&(t[i]=e)},t[i]=n}}let{target:i,key:a}=vC(e,n);t.__tres.previousAttach=i[a],i[a]=TC(t)}else t.__tres.previousAttach=n(e,t)}function xC(e,t,n){if(B_(n)){let{target:r,key:i}=vC(e,n),a=t.__tres.previousAttach;a===void 0?delete r[i]:r[i]=a,`__tresDetach`in r&&r.__tresDetach()}else t.__tres?.previousAttach?.(e,t);delete t.__tres?.previousAttach}function SC(e,t,n){let r=e;return r.__tres={type:`unknown`,root:n,memoizedProps:{},objects:[],parent:null,previousAttach:null,...t},r.__tres.attach||(tC(r)?r.__tres.attach=`material`:eC(r)?r.__tres.attach=`geometry`:rC(r)&&(r.__tres.attach=`fog`)),r}function CC(e){let t=e?.__tres?.root;t?.renderer&&t.renderer.canBeInvalidated.value&&t.renderer.invalidate()}function wC(e,t,n,r,i){let a=[...t.__tres.objects],o=TC(t);if(e=TC(e),o===e)return!0;let s=SC(e,t.__tres??{},i),c=t.parent??t.__tres.parent??null,l={...t.__tres.memoizedProps};delete l.object;for(let e of a)EC(e,i),DC(e,i);o.__tres.objects=[],r.remove(t);for(let[e,t]of Object.entries(l))r.patchProp(s,e,s[e],t);n(e),r.insert(t,c);for(let e of a)r.insert(e,t);return!0}function TC(e){if(uC(e)){let t=e;return t.object.__tres=t.__tres,t.object}else return e}function EC(e,t){let n=e.__tres?.parent||t.scene.value;e.__tres&&(e.__tres.parent=null),n&&n.__tres&&`objects`in n.__tres&&fC(n.__tres.objects,t=>t!==e),e.__tres?.attach?xC(n,e,e.__tres.attach):(e.parent?.remove?.(TC(e)),e.parent=null)}function DC(e,t){e.traverse?.(e=>{cC(e)&&t.camera.deregisterCamera(e)}),cC(e)&&t.camera.deregisterCamera(e),CC(e)}var OC=({sizes:e})=>{let t=w([]),n=x(()=>t.value[0]),r=e=>{let n=JS(e)?e:t.value.find(t=>t.uuid===e);n&&(t.value=[n,...t.value.filter(({uuid:e})=>e!==n.uuid)])};return ue(()=>{e.aspectRatio.value&&t.value.forEach(t=>{XS(t)&&(t.aspect=e.aspectRatio.value,t.updateProjectionMatrix())})}),{activeCamera:n,cameras:t,registerCamera:(e,n=!1)=>{t.value.some(({uuid:t})=>t===e.uuid)||(t.value.push(e),n&&r(e.uuid))},deregisterCamera:e=>{t.value=t.value.filter(({uuid:t})=>t!==e.uuid)},setActiveCamera:r}};function kC(){let e=new Map,t=new Set,n=0,r=!1,i=()=>{let n=Array.from(e.entries()).sort((e,t)=>{let n=e[1].priority-t[1].priority;return n===0?e[1].addI-t[1].addI:n});t.clear(),n.forEach(e=>t.add(e[0]))},a=n=>{e.delete(n),t.delete(n)};return{on:(t,i=0)=>{e.set(t,{priority:i,addI:n++});let o=()=>a(t);return Xg(o),r=!0,{off:o}},off:a,trigger:(...e)=>(r&&=(i(),!1),Promise.all(Array.from(t).map(t=>t(...e)))),dispose:()=>{e.clear(),t.clear()},get count(){return e.size}}}var AC=w({}),jC=e=>Object.assign(AC.value,e),MC=(e,t,n)=>{if(!L_(e.setPixelRatio))return;let r=0;if(n&&Array.isArray(n)&&n.length>=2){let[e,i]=n;r=pr.clamp(t,e,i)}else r=R_(n)?n:t;r!==e.getPixelRatio?.()&&e.setPixelRatio(r)},NC=Number.parseInt(`184`),PC=179;function FC(){if(NC>=PC){let e=new Wd;return{getDelta:()=>e.getDelta(),getElapsed:()=>e.getElapsed(),update:()=>e.update(),start:()=>{typeof document<`u`&&e.connect(document)},stop:()=>e.disconnect()}}else{let e=new Nf;return{getDelta:()=>e.getDelta(),getElapsed:()=>e.elapsedTime,update:()=>{},start:()=>e.start(),stop:()=>e.stop()}}}var IC=(e,{fpsLimit:t}={})=>{let n=FC(),r={before:Zg(),after:Zg()},{pause:i,resume:a,isActive:o}=w_(()=>{n.update();let t={delta:n.getDelta(),elapsed:n.getElapsed()};r.before.trigger(t),e(),r.after.trigger(t)},{immediate:!1,fpsLimit:t});return{start:()=>{n.start(),a()},stop:()=>{n.stop(),i()},isActive:o,onBeforeLoop:r.before.on,onLoop:r.after.on}},LC=class extends Error{name=`TresRendererError`;constructor(e,t,n){super(e,n),this.code=t}};function RC({scene:t,canvas:n,options:r,fpsLimit:i,contextParts:{sizes:a,camera:o}}){let s=L_(r.renderer)?r.renderer({sizes:a,scene:t,camera:o,canvas:n}):new Yg({...r,canvas:b_(n)}),c=w(oe(r.renderMode)===`manual`?0:1),l=x(()=>oe(r.renderMode)===`on-demand`&&c.value===0),u=()=>t.value.traverse(e=>{e instanceof bo&&e.material instanceof Na&&(e.material.needsUpdate=!0)}),d=(e=1)=>{l.value&&(c.value=Math.min(60,c.value+e))},f=()=>{if(oe(r.renderMode)!==`manual`)throw Error(`advance can only be called in manual render mode.`);c.value=1},p=()=>{oe(r.renderMode)===`on-demand`&&d()},m=x(()=>oe(r.renderMode)===`always`),h=e=>z_(e)&&`isRenderer`in e&&!!e.isRenderer,g=Zg(),_=Zg(),v=!1,y=w(!1),S=w(null),C=async()=>{try{h(s)&&await s.init(),y.value=!0}catch(e){let t=new LC(e instanceof Error?e.message:`Unknown error`,`INITIALIZATION_FAILED`,{cause:e instanceof Error?e:void 0});S.value=t,console.error(`[TresJS] Renderer initialization failed. This may occur if:
4105
4105
  - WebGPU is not supported by your browser
4106
4106
  - GPU is not available or lacks required features
4107
4107
  - GPU drivers are outdated
4108
4108
  Error details: ${t.message}`,t),_.trigger(t)}},T=Zg(),E=()=>{c.value=m.value?1:Math.max(0,c.value-1),T.trigger(s)},D=e=>{o.activeCamera.value&&(s.render(t.value,o.activeCamera.value),e())},O=e=>{D=e},ee=IC(()=>{c.value&&D(E)},{fpsLimit:i});g.on(()=>{y.value&&ee.start()}),le([a.width,a.height,y],()=>{y.value&&(s.setSize(a.width.value,a.height.value),!v&&s.domElement.width&&s.domElement.height&&(v=!0,e(()=>{g.trigger(s)})),p())},{immediate:!0}),ue(()=>{y.value&&MC(s,a.pixelRatio.value,oe(r.dpr))}),C(),oe(r.renderMode)===`on-demand`&&d(),oe(r.renderMode)===`manual`&&__(100,{callback:f});let te=x(()=>{let e=oe(r.clearColor),t=oe(r.clearAlpha),n=typeof e==`string`&&e.length===9&&e.startsWith(`#`);return n&&t!==void 0&&hC(`clearColor with alpha (e.g. ${e}) and clearAlpha cannot both be set, using clearColor as source of truth`),n?{alpha:Number.parseInt(e.slice(7,9),16)/255,color:e.slice(0,7)}:{alpha:t,color:e}});return ue(()=>{if(!y.value)return;let e=te.value;e.color===void 0||e.alpha===void 0||s.setClearColor(e.color,e.alpha)}),ue(()=>{if(!y.value)return;let e=r.toneMapping;e&&(s.toneMapping=e)}),ue(()=>{if(!y.value)return;let e=r.toneMappingExposure;e&&(s.toneMappingExposure=e)}),ue(()=>{if(!y.value)return;let e=r.outputColorSpace;e&&(s.outputColorSpace=e)}),ue(()=>{if(!y.value)return;let e=r.shadows;e!==void 0&&(s.shadowMap.enabled=e,u())}),ue(()=>{if(!y.value)return;let e=r.shadowMapType;e!==void 0&&(s.shadowMap.type=e,u())}),b(()=>{s.dispose(),`forceContextLoss`in s&&s.forceContextLoss()}),{loop:ee,instance:s,advance:f,onReady:g.on,onRender:T.on,onError:_.on,invalidate:d,canBeInvalidated:l,mode:oe(r.renderMode),replaceRenderFunction:O,isInitialized:y,error:S}}function zC(e,t,n=10){let{pixelRatio:r}=O_(),i=oe(e)?N_():A_(x(()=>oe(t).parentElement)),a=l(p_(i.width,n)),o=l(p_(i.height,n));return{width:a,height:o,pixelRatio:r,aspectRatio:x(()=>a.value/o.value)}}function BC({canvas:e,contextParts:{scene:t,camera:n,renderer:r}}){let{update:i,destroy:a}=Iv(oe(e),()=>oe(n.activeCamera),t.value),{off:o}=r.loop.onLoop(i);b(a),b(o);let s=ev(t.value),c=Zg();return s.addEventListener(`click`,c.trigger),{onPointerMissed:c.on}}var VC=`useTres`,[HC,UC]=t_(({scene:e,canvas:t,fpsLimit:n,windowSize:r,rendererOptions:i})=>{let a=g(e),o=zC(r,t),s=OC({sizes:o}),c=RC({scene:a,canvas:t,options:i,fpsLimit:n,contextParts:{sizes:o,camera:s}}),l=BC({canvas:t,contextParts:{scene:a,camera:s,renderer:c}}),u={sizes:o,scene:a,camera:s,renderer:c,controls:w(null),extend:jC,events:l};return u.scene.value.__tres={root:u,objects:[],isUnmounting:!1},u},{injectionKey:`useTres`}),WC=()=>{let e=UC();if(!e)throw Error(`useTresContext must be used together with useTresContextProvider.
4109
4109
  You probably tried to use it above or on the same level as a TresCanvas component.
4110
- It should be used in child components of a TresCanvas instance.`);return e};function GC(){let{scene:e,renderer:t,camera:n,sizes:r,controls:i,extend:a,events:o}=WC();return{scene:e,renderer:t.instance,camera:n.activeCamera,sizes:r,controls:i,extend:a,events:o,invalidate:t.invalidate,advance:t.advance}}var KC=()=>{let e=GC(),{renderer:t}=WC(),n=kC(),r=kC();t.loop.onBeforeLoop(t=>{n.trigger({...e,...t})}),t.loop.onLoop(t=>{r.trigger({...e,...t})});let i=t.replaceRenderFunction;return{stop:t.loop.stop,start:t.loop.start,isActive:t.loop.isActive,onBeforeRender:n.on,onRender:r.on,render:i}};function qC(e,t={},n={}){let r=e,i=e=>{r=e},a=new Proxy({},{});return a=new Proxy({},{has(e,n){return n in t||n in r},get(e,n,i){return n in t?t[n](r):r[n]},set(e,t,o){return n[t]?n[t](o,r,a,i):r[t]=o,!0}}),a}var JC=[`onClick`,`onContextmenu`,`onPointermove`,`onPointerenter`,`onPointerleave`,`onPointerover`,`onPointerout`,`onDblclick`,`onPointerdown`,`onPointerup`,`onPointercancel`,`onLostpointercapture`,`onWheel`],YC={onClick:`click`,onContextmenu:`contextmenu`,onPointermove:`pointermove`,onPointerenter:`pointerenter`,onPointerleave:`pointerleave`,onPointerover:`pointerover`,onPointerout:`pointerout`,onDblclick:`dblclick`,onPointerdown:`pointerdown`,onPointerup:`pointerup`,onPointercancel:`pointercancel`,onLostpointercapture:`lostpointercapture`,onWheel:`wheel`},XC=e=>JC.includes(e),ZC=Symbol(`tresTextNode`),QC=Symbol(`tresComment`),$C=({context:e,options:t={primitivePrefix:``}})=>{let n=e.scene.value,r=()=>{if(!n?.__tres?.isUnmounting)return{[ZC]:!0,__tres:{parent:null}}},i=()=>({[QC]:!0,__tres:{parent:null}}),a=e=>!!e&&typeof e==`object`&&ZC in e,o=e=>!!e&&typeof e==`object`&&QC in e;function s(n,r,i,a){if(a||={},a.args||=[],WS(n))return null;n.includes(`-`)&&(n=n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()).replace(/^[a-z]/,e=>e.toUpperCase()));let o=n.replace(`Tres`,``),s;if(n===`${t?.primitivePrefix??``}primitive`){(!z_(a.object)||y(a.object))&&mC(`Tres primitives need an 'object' prop, whose value is an object or shallowRef<object>`),o=a.object.type;let t={};s=qC(a.object,{object:e=>e,isPrimitive:()=>!0,__tres:()=>t},{object:(t,n,r,i)=>{wC(t,r,i,{patchProp:u,remove:l,insert:c},e)},__tres:e=>{Object.assign(t,e)}})}else{let e=AC.value[o];e||mC(`${o} is not defined on the THREE namespace. Use extend to add it to the catalog.`),s=new e(...a.args)}return s?(cC(s)&&(a?.position||s.position.set(3,3,3),a?.lookAt||s.lookAt(0,0,0)),s=SC(s,{...dC(s)?s.__tres:{},type:o,memoizedProps:a,primitive:n===`primitive`,attach:a.attach},e),s):null}function c(t,r,i){if(!t)return;if(r||=n,a(t)||o(t)){let n=r.__tres?r:SC(r,{},e);if(t.__tres.parent=n,n.__tres.objects){let e=i?n.__tres.objects.findIndex(e=>e===i):-1;e>=0?n.__tres.objects.splice(e,0,t):n.__tres.objects.push(t)}return}let s=t.__tres?t:SC(t,{},e),c=r.__tres?r:SC(r,{},e);if(t=TC(s),r=TC(c),cC(t)&&e.camera?.registerCamera(t),s.__tres.attach?bC(c,s,s.__tres.attach):KS(t)&&KS(c)&&(c.add(t),t.dispatchEvent({type:`added`})),s.__tres.parent=c,c.__tres.objects&&!c.__tres.objects.includes(s)){let e=i?c.__tres.objects.findIndex(e=>e===i):-1;~e?c.__tres.objects.splice(e,0,s):c.__tres.objects.push(s)}}function l(t,n){if(!t)return;if(a(t)||o(t)){let e=t.__tres.parent;e?.__tres?.objects&&fC(e.__tres.objects,e=>e!==t),t.__tres.parent=null;return}n=H_(n)?`default`:n;let r=t.__tres?.dispose;H_(r)||(n=r===null?!1:r);let i=t.__tres?.primitive,s=n==="default"?!i:!!n;if(t.__tres&&`objects`in t.__tres&&[...t.__tres.objects].forEach(e=>l(e,n)),s&&t.children&&[...t.children].forEach(e=>l(e,n)),EC(t,e),DC(t,e),s&&!iC(t)){if(L_(n))n(t);else if(L_(t.dispose))try{t.dispose()}catch{}}`__tres`in t&&delete t.__tres}function u(t,n,r,i){if(!t)return;let a=t,o=n;if(t.__tres&&(t.__tres.memoizedProps[n]=i),n===`attach`){let n=t.__tres?.parent||t.parent;l(t),SC(t,{attach:i},e),n&&c(t,n);return}if(n===`dispose`){t.__tres||(t=SC(t,{},e)),t.__tres.dispose=i;return}XC(n)&&L_(i)&&t.addEventListener(YC[n],i);let s=P_(o),u=a?.[s];if(o===`args`){let e=t,n=r??[],o=i??[],s=t.__tres?.type||t.type;if(s&&n.length&&!I_(n,o)){let t=new AC.value[s](...i);Object.entries(Object.getOwnPropertyDescriptors(t)).forEach(([n,r])=>{if(!(!r.writable&&!r.set)&&n in e)try{e[n]=t[n]}catch(e){console.warn(`Could not set property ${n} on ${s}:`,e)}}),a=e}return}if(a.type===`BufferGeometry`){if(o===`args`)return;a.setAttribute(P_(o),new sa(...i));return}if(o.includes(`-`)&&u===void 0){let e=vC(a,o);if(u=e.target,a=e.target,s=e.key,u&&s){u[s]=i,cC(t)&&t.updateProjectionMatrix(),CC(t);return}}let d=i;if(d===``&&(d=!0),L_(u)){XC(n)||(Array.isArray(d)?t[s](...d):t[s](d)),s.startsWith(`on`)&&L_(d)&&(a[s]=d);return}$S(u)&&$S(d)?u.mask=d.mask:ZS(u)&&QS(d)?u.set(d):oC(u)&&sC(d)&&u.constructor===d.constructor?u.copy(d):aC(u)&&Array.isArray(d)?`fromArray`in u&&typeof u.fromArray==`function`?u.fromArray(d):u.set(...d):aC(u)&&typeof d==`number`?`setScalar`in u&&typeof u.setScalar==`function`?u.setScalar(d):u.set(d):a[s]=d,cC(t)&&t.updateProjectionMatrix(),CC(t)}function d(e){return e?.__tres?.parent||null}function f(e){if(!e||!(`__tres`in e))return null;let t=d(e)?.__tres?.objects||[],n=t.findIndex(t=>t===e);return n<0||n>=t.length-1?null:t[n+1]}let p=()=>{};return{insert:c,remove:l,createElement:s,patchProp:u,parentNode:d,createText:r,createComment:i,setText:p,setElementText:p,nextSibling:f,querySelector:p,setScopeId:p,cloneNode:p,insertStaticContent:p}},ew=new Map,tw=e=>ew.get(e),nw=(e,t)=>{ew.set(e,t)},rw=e=>ew.delete(e),iw=[`asset-load`],aw=class{subscribers=new Set;messageQueue=[];maxQueueSize=100;send(e,t){let n={type:e,data:t,timestamp:Date.now()};this.subscribers.size>0?this.subscribers.forEach(e=>e(n)):iw.includes(e)&&this.queueMessage(n)}queueMessage(e){this.messageQueue.push(e),this.messageQueue.length>this.maxQueueSize&&this.messageQueue.shift()}flushQueue(){this.messageQueue.length===0||this.subscribers.size===0||(this.messageQueue.forEach(e=>{this.subscribers.forEach(t=>t(e))}),this.messageQueue=[])}subscribe(e){return this.subscribers.add(e),this.flushQueue(),()=>{this.subscribers.delete(e)}}get hasSubscribers(){return this.subscribers.size>0}get queueSize(){return this.messageQueue.length}clearQueue(){this.messageQueue=[]}};function ow(e,t){let n=`▲ ■ ●${e}`;typeof sw==`function`?sw(n,t):t===`error`?console.error(n):t===`warn`?console.warn(n):console.log(n)}function sw(e,t){throw Error(e+t)}function cw(e){let t=0;return e.traverse(e=>{if(qS(e)&&e.type!==`HightlightMesh`){let n=e.geometry,r=n.attributes.position.count*3*Float32Array.BYTES_PER_ELEMENT,i=n.index?n.index.count*Uint32Array.BYTES_PER_ELEMENT:0,a=n.attributes.normal?n.attributes.normal.count*3*Float32Array.BYTES_PER_ELEMENT:0,o=n.attributes.uv?n.attributes.uv.count*2*Float32Array.BYTES_PER_ELEMENT:0,s=r+i+a+o;t+=s}}),t}function lw(e,t,n){e.push(t),e.length>n&&e.shift()}function uw(e){return(e/1024).toFixed(2)}function dw(e){if(!e)return;typeof window<`u`&&!window.__TRES__DEVTOOLS__&&(window.__TRES__DEVTOOLS__=new aw);let t={maxFrames:160,fps:{value:0,accumulator:[]},memory:{currentMem:0,allocatedMem:0,accumulator:[]}},n=j_({every:100}),{isSupported:r,memory:i}=M_({interval:100}),a=performance.now(),o=0,s=({timestamp:o})=>{e.scene.value&&(t.memory.allocatedMem=cw(e.scene.value)),o-a>=100&&(a=o,lw(t.fps.accumulator,n.value,160),t.fps.value=n.value,r.value&&i.value?.usedJSHeapSize&&(lw(t.memory.accumulator,i.value.usedJSHeapSize/1024/1024,160),t.memory.accumulator.length>0&&(t.memory.currentMem=t.memory.accumulator.reduce((e,t)=>e+t,0)/t.memory.accumulator.length)))},{pause:c}=w_(({delta:n})=>{window.__TRES__DEVTOOLS__&&(s({timestamp:performance.now()}),o+=n,o>=1&&(window.__TRES__DEVTOOLS__.send(`context`,e),window.__TRES__DEVTOOLS__.send(`performance`,t),o=0))},{immediate:!0});b(()=>{c()})}var fw=(e,t)=>{if(e.uuid===t)return e;for(let n of e.children){let e=fw(n,t);if(e)return e}},pw=class extends bo{type=`HightlightMesh`;createTime;constructor(...e){super(...e),this.createTime=Date.now()}onBeforeRender(){let e=(Date.now()-this.createTime)/1e3,t=1+.07*Math.sin(2.5*e);this.scale.set(t,t,t)}},mw=e=>{let t={id:`scene-${e.uuid}`,label:e.type,children:[],tags:[]};e.name!==``&&t.tags.push({label:e.name,textColor:5750629,backgroundColor:15793395});let n=cw(e);return n>0&&t.tags.push({label:`${uw(n)} KB`,textColor:15707189,backgroundColor:16775644,tooltip:`Memory usage`}),e.type.includes(`Light`)&&(nC(e)&&t.tags.push({label:`${e.intensity}`,textColor:9738662,backgroundColor:16316922,tooltip:`Intensity`}),t.tags.push({label:`#${new I(e.color).getHexString()}`,textColor:9738662,backgroundColor:16316922,tooltip:`Color`})),e.type.includes(`Camera`)&&(t.tags.push({label:`${e.fov}°`,textColor:9738662,backgroundColor:16316922,tooltip:`Field of view`}),t.tags.push({label:`x: ${Math.round(e.position.x)} y: ${Math.round(e.position.y)} z: ${Math.round(e.position.z)}`,textColor:9738662,backgroundColor:16316922,tooltip:`Position`})),t};function hw(e,t,n=``){return{id:`context-${t}-${n?`${n}.${e}`:e}`,label:e,children:[],tags:[]}}function gw(e,t,n=``){e.children.forEach(e=>{if(e.type===`HightlightMesh`||n&&!e.type.includes(n)&&!e.name.includes(n))return;let r=mw(e);t.children.push(r),gw(e,r,n)})}function _w(e,t,n=new WeakSet,r=0,i=4,a,o=``){if(r>=i||!e||n.has(e))return;let s=r===0?e?.scene?.value?.uuid||Math.random().toString(36).slice(2,11):a;n.add(e),Object.entries(e).forEach(([e,a])=>{if(e.startsWith(`_`)||typeof a==`function`)return;let c=o?`${o}.${e}`:e,l=hw(e,s,o);e!==`scene`&&(y(a)?(l.tags.push({label:`Ref<${typeof a.value}>`,textColor:4372611,backgroundColor:15793395}),a.value&&typeof a.value==`object`?_w(a.value,l,n,r+1,i,s,c):l.label=`${e}: ${JSON.stringify(a.value)}`):a&&typeof a==`object`&&!Array.isArray(a)?Object.keys(a).length>0?n.has(a)?l.tags.push({label:`Circular`,textColor:16711680,backgroundColor:16773360}):_w(a,l,n,r+1,i,s,c):l.label=`${e}: {}`:Array.isArray(a)?(l.label=`${e}: Array(${a.length})`,l.tags.push({label:`length: ${a.length}`,textColor:9738662,backgroundColor:16316922})):l.label=`${e}: ${JSON.stringify(a)}`,t.children.push(l))})}var vw=e=>t=>{if(t.inspectorId===Sw){let n=mw(e.scene.value);gw(e.scene.value,n,t.filter);let r={id:`context-root`,label:`Context`,children:[],tags:[]};_w(e,r),t.rootNodes=[n,r]}},yw=(e,{highlightMesh:t,prevInstance:n})=>r=>{if(r.inspectorId!==Sw)return;let i=new so({color:11003607,transparent:!0,opacity:.2,depthTest:!1,side:2});if(r.nodeId.includes(`scene`)){let a=r.nodeId.match(/^scene-(.+)$/),o=a?a[1]:null;if(!o)return;let[s]=e.scene.value.getObjectsByProperty(`uuid`,o);if(!s)return;if(n&&t&&t.parent&&n.remove(t),qS(s)){let e=new pw(s.geometry.clone(),i);s.add(e),t=e,n=s}if(r.state={object:Object.entries(s).map(([e,t])=>e===`children`?{key:e,value:t.filter(e=>e.type!==`HightlightMesh`)}:{key:e,value:t,editable:!0}).filter(({key:e})=>e!==`parent`)},iC(s)){let t={...r.state,state:[{key:`Scene Info`,value:{objects:s.children.length,memory:cw(s),calls:e.renderer.instance.info.render.calls,triangles:e.renderer.instance.info.render.triangles,points:e.renderer.instance.info.render.points,lines:e.renderer.instance.info.render.lines}}]};`programs`in e.renderer.instance.info&&t.state.push({key:`Programs`,value:e.renderer.instance.info.programs?.map(e=>({...e,programName:e.name}))}),r.state=t}}else if(r.nodeId.includes(`context`)){let t=r.nodeId.match(/^context-([^-]+(?:-[^-]+)*)-(.+)$/),n=t?t[2]:`context`;if(!n||n===`context`){r.state={object:Object.entries(e).filter(([e])=>!e.startsWith(`_`)&&e!==`parent`).map(([e,t])=>({key:e,value:y(t)?t.value:t,editable:!1}))};return}let i=n.split(`.`),a=e;for(let e of i){if(!a||typeof a!=`object`)break;a=y(a[e])?a[e].value:a[e]}a!==void 0&&(r.state={object:Object.entries(a).filter(([e])=>!e.startsWith(`_`)&&e!==`parent`).map(([e,t])=>y(t)?{key:e,value:t.value,editable:!1}:typeof t==`function`?{key:e,value:`ƒ()`,editable:!1}:t&&typeof t==`object`?{key:e,value:Array.isArray(t)?`Array(${t.length})`:`Object`,editable:!1}:{key:e,value:t,editable:!1})})}},bw=(e,t,n,r)=>{let i=fw(e,t);if(!i){console.warn(`Object with UUID not found in the scene.`);return}let a=i;for(let e=0;e<n.length-1;e++)if(a[n[e]]!==void 0)a=a[n[e]];else{console.warn(`Property path is not valid: ${n.join(`.`)}`);return}let o=n[n.length-1];a[o]===void 0?console.warn(`Property path is not valid: ${n.join(`.`)}`):a[o]=r},xw=e=>t=>{if(t.inspectorId===Sw&&t.nodeId.includes(`scene`)){let n=t.nodeId.match(/^scene-(.+)$/),r=n?n[1]:null;if(!r)return;bw(e.scene.value,r,t.path,t.state.value)}},Sw=`tres:inspector`;function Cw(e,t){let n={id:`dev.esm.tres`,label:`TresJS 🪐`,logo:`https://raw.githubusercontent.com/Tresjs/tres/main/public/favicon.svg`,packageName:`tresjs`,homepage:`https://docs.tresjs.org`,app:e};dw(t),sx(n,e=>{typeof e.now!=`function`&&ow(`You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.`),e.addInspector({id:Sw,label:`TresJS 🪐`,icon:`account_tree`,treeFilterPlaceholder:`Search instances`}),setInterval(()=>{e.sendInspectorTree(Sw)},1e3),setInterval(()=>{e.notifyComponentUpdate()},5e3),e.on.getInspectorTree(vw(t)),e.on.getInspectorState(yw(t,{highlightMesh:null,prevInstance:null})),e.on.editInspectorState(xw(t))})}var ww=se({__name:`Context`,props:{camera:{type:null,required:!1},windowSize:{type:Boolean,required:!1},fpsLimit:{type:Number,required:!1},enableProvideBridge:{type:Boolean,required:!1},customRendererOptions:{type:Object,required:!1},antialias:{type:Boolean,required:!1},stencil:{type:Boolean,required:!1},depth:{type:Boolean,required:!1},precision:{type:String,required:!1},logarithmicDepthBuffer:{type:Boolean,required:!1},preserveDrawingBuffer:{type:Boolean,required:!1},powerPreference:{type:null,required:!1},alpha:{type:Boolean,required:!1},premultipliedAlpha:{type:Boolean,required:!1},failIfMajorPerformanceCaveat:{type:Boolean,required:!1},clearColor:{type:[Object,String,Number],required:!1},clearAlpha:{type:Number,required:!1},shadows:{type:Boolean,required:!1},toneMapping:{type:null,required:!1},shadowMapType:{type:null,required:!1},useLegacyLights:{type:Boolean,required:!1},outputColorSpace:{type:null,required:!1},toneMappingExposure:{type:Number,required:!1},renderMode:{type:String,required:!1},dpr:{type:[Number,Array],required:!1},renderer:{type:Function,required:!1},canvas:{type:null,required:!0}},emits:[`ready`,`error`,`pointermissed`,`render`,`beforeLoop`,`loop`,`click`,`contextmenu`,`pointermove`,`pointerenter`,`pointerleave`,`pointerover`,`pointerout`,`dblclick`,`pointerdown`,`pointerup`,`pointercancel`,`lostpointercapture`,`wheel`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=re(),o=g(new Ci),c=O();jC(Mp);let l=(e,t)=>se({setup(){let n=O()?.appContext;n&&(n.app=c?.appContext.app);let i={};function o(e){e&&(e.parent&&o(e.parent),e.provides&&Object.assign(i,e.provides))}return c?.parent&&r.enableProvideBridge&&(o(c.parent),Reflect.ownKeys(i).forEach(e=>{s(e,i[e])})),s(VC,e),s(`extend`,jC),typeof window<`u`&&n?.app&&Cw(n?.app,e),()=>(t.value,ne(p,null,a.default?.()??[]))}}),u=e=>{let t=r.canvas;if(tw(t))return;let n=w(0),i=l(e,n),a=T($C({context:e,options:r.customRendererOptions}));a.render(ne(i),o.value),nw(t,{renderer:a,internalComponent:i,hmrTick:n,context:e})},d=(e,t=!1)=>{_C(e.scene.value),t&&(e.renderer.instance.dispose(),e.renderer.instance instanceof Yg&&(e.renderer.instance.renderLists.dispose(),e.renderer.instance.forceContextLoss())),o.value.__tres={root:e,objects:[],isUnmounting:!0}},m=g(HC({scene:o.value,canvas:r.canvas,fpsLimit:()=>r.fpsLimit??1/0,windowSize:r.windowSize??!1,rendererOptions:r}));t({context:m,dispose:()=>d(m.value,!0)});let h=()=>{let e=tw(r.canvas);e&&((e=>iC(e)&&`__tres`in e)(o.value)&&(o.value.__tres.isUnmounting=!0),e.renderer.render(null,o.value),d(m.value),rw(r.canvas))},{camera:_,renderer:v}=m.value,{registerCamera:y,cameras:x,activeCamera:S,deregisterCamera:C}=_,E=()=>{let e=new ud(45,window.innerWidth/window.innerHeight,.1,1e3);e.position.set(3,3,3),e.lookAt(0,0,0),y(e);let t=ue(()=>{x.value.length>=2&&(e.removeFromParent(),C(e),t?.())})};return m.value.events.onPointerMissed(e=>{i(`pointermissed`,e)}),le(()=>r.camera,(e,t)=>{e&&y(oe(e),!0),t&&(oe(t).removeFromParent(),C(oe(t)))},{immediate:!0}),v.onRender(()=>{m.value&&i(`render`,m.value)}),v.loop.onLoop(e=>{m.value&&i(`loop`,{...m.value,...e})}),v.loop.onBeforeLoop(e=>{m.value&&i(`beforeLoop`,{...m.value,...e})}),v.onReady(()=>{u(m.value),i(`ready`,m.value),S.value||E()}),v.onError(e=>{i(`error`,e)}),f(async()=>{await c_(3e3),(!m.value.sizes.width||!m.value.sizes.height.value)&&console.warn(`TresCanvas: The canvas has no area, so nothing can be rendered. Set it manually on the parent element or use the prop windowSize.`)}),b(h),()=>{}}}),Tw=[`data-scene`,`data-tres`],Ew=se({__name:`TresCanvas`,props:{camera:{type:null,required:!1},windowSize:{type:Boolean,required:!1,default:void 0},fpsLimit:{type:Number,required:!1},enableProvideBridge:{type:Boolean,required:!1,default:!0},customRendererOptions:{type:Object,required:!1},antialias:{type:Boolean,required:!1,default:!0},stencil:{type:Boolean,required:!1,default:void 0},depth:{type:Boolean,required:!1,default:void 0},precision:{type:String,required:!1},logarithmicDepthBuffer:{type:Boolean,required:!1,default:void 0},preserveDrawingBuffer:{type:Boolean,required:!1,default:void 0},powerPreference:{type:null,required:!1},alpha:{type:Boolean,required:!1,default:void 0},premultipliedAlpha:{type:Boolean,required:!1},failIfMajorPerformanceCaveat:{type:Boolean,required:!1,default:void 0},clearColor:{type:[Object,String,Number],required:!1,default:`#000000`},clearAlpha:{type:Number,required:!1,default:1},shadows:{type:Boolean,required:!1,default:void 0},toneMapping:{type:null,required:!1,default:4},shadowMapType:{type:null,required:!1,default:2},useLegacyLights:{type:Boolean,required:!1,default:void 0},outputColorSpace:{type:null,required:!1},toneMappingExposure:{type:Number,required:!1},renderMode:{type:String,required:!1,default:`always`},dpr:{type:[Number,Array],required:!1},renderer:{type:Function,required:!1}},emits:[`ready`,`error`,`pointermissed`,`render`,`beforeLoop`,`loop`,`click`,`contextmenu`,`pointermove`,`pointerenter`,`pointerleave`,`pointerover`,`pointerout`,`dblclick`,`pointerdown`,`pointerup`,`pointercancel`,`lostpointercapture`,`wheel`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=w(),l=g();return n({get context(){return l.value?.context},dispose:()=>l.value?.dispose()}),(n,i)=>(v(),c(`canvas`,{ref_key:`canvasRef`,ref:s,"data-scene":l.value?.context?.scene.value.uuid,class:r(n.$attrs.class),"data-tres":`tresjs ${D(HS)}`,style:h({display:`block`,width:`100%`,height:`100%`,position:e.windowSize?`fixed`:`relative`,top:0,left:0,pointerEvents:`auto`,touchAction:`none`,...n.$attrs.style})},[s.value?(v(),u(ww,te({key:0,ref_key:`contextRef`,ref:l,canvas:s.value},a,{onReady:i[0]||=e=>o(`ready`,e),onError:i[1]||=e=>o(`error`,e),onPointermissed:i[2]||=e=>o(`pointermissed`,e),onRender:i[3]||=e=>o(`render`,e),onBeforeLoop:i[4]||=e=>o(`beforeLoop`,e),onLoop:i[5]||=e=>o(`loop`,e),onClick:i[6]||=e=>o(`click`,e),onContextmenu:i[7]||=e=>o(`contextmenu`,e),onPointermove:i[8]||=e=>o(`pointermove`,e),onPointerenter:i[9]||=e=>o(`pointerenter`,e),onPointerleave:i[10]||=e=>o(`pointerleave`,e),onPointerover:i[11]||=e=>o(`pointerover`,e),onPointerout:i[12]||=e=>o(`pointerout`,e),onDblclick:i[13]||=e=>o(`dblclick`,e),onPointerdown:i[14]||=e=>o(`pointerdown`,e),onPointerup:i[15]||=e=>o(`pointerup`,e),onPointercancel:i[16]||=e=>o(`pointercancel`,e),onLostpointercapture:i[17]||=e=>o(`lostpointercapture`,e),onWheel:i[18]||=e=>o(`wheel`,e)}),{default:t(()=>[C(n.$slots,`default`)]),_:3},16,[`canvas`])):ae(`v-if`,!0)],14,Tw))}}),Dw=`alphaMap.alphaTest.anisotropy.anisotropyMap.anisotropyRotation.aoMap.aoMapIntensity.attenuationColor.attenuationDistance.bumpMap.clearcoat.clearcoatMap.clearcoatNormalMap.clearcoatNormalScale.clearcoatRoughness.color.dispersion.displacementMap.emissive.emissiveIntensity.emissiveMap.envMap.envMapIntensity.gradientMap.ior.iridescence.iridescenceIOR.iridescenceMap.iridescenceThicknessMap.lightMap.lightMapIntensity.map.matcap.metalness.metalnessMap.normalMap.normalScale.opacity.roughness.roughnessMap.sheen.sheenColor.sheenColorMap.sheenRoughnessMap.shininess.specular.specularColor.specularColorMap.specularIntensity.specularIntensityMap.specularMap.thickness.transmission.transmissionMap`.split(`.`),Ow=new WeakMap,kw=new WeakMap,Aw=new WeakMap,jw=class{constructor(e){this.renderObjects=new WeakMap,this.hasNode=this.containsNode(e),this.hasAnimation=e.object.isSkinnedMesh===!0,this.refreshUniforms=Dw,this.renderId=0}firstInitialization(e){return this.renderObjects.has(e)===!1?(this.getRenderObjectData(e),!0):!1}needsVelocity(e){let t=e.getMRT();return t!==null&&t.has(`velocity`)}getRenderObjectData(e){let t=this.renderObjects.get(e);if(t===void 0){let{geometry:n,object:r}=e;if(t={geometryId:n.id,worldMatrix:r.matrixWorld.clone()},r.center&&(t.center=r.center.clone()),r.morphTargetInfluences&&(t.morphTargetInfluences=r.morphTargetInfluences.slice()),e.bundle!==null&&(t.version=e.bundle.version),e.material.transmission>0){let{width:n,height:r}=e.context;t.bufferWidth=n,t.bufferHeight=r}t.lights=this.getLightsData(e.lightsNode.getLights()),this.renderObjects.set(e,t)}return t}getAttributesData(e){let t={};for(let n in e){let r=e[n];t[n]={id:r.id,version:r.version}}return t}containsNode(e){let t=e.material;for(let e in t)if(t[e]&&t[e].isNode)return!0;return!!(e.context.modelViewMatrix||e.context.modelNormalViewMatrix||e.context.getAO||e.context.getShadow)}getGeometryData(e){let t=Aw.get(e);return t===void 0&&(t={_renderId:-1,_equal:!1,attributes:this.getAttributesData(e.attributes),indexId:e.index?e.index.id:null,indexVersion:e.index?e.index.version:null,drawRange:{start:e.drawRange.start,count:e.drawRange.count}},Aw.set(e,t)),t}getMaterialData(e){let t=kw.get(e);if(t===void 0){t={_renderId:-1,_equal:!1};for(let n of this.refreshUniforms){let 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)}kw.set(e,t)}return t}equals(e,t,n){let{object:r,material:i,geometry:a}=e,o=this.getRenderObjectData(e);if(o.worldMatrix.equals(r.matrixWorld)!==!0)return o.worldMatrix.copy(r.matrixWorld),!1;let s=this.getMaterialData(e.material);if(s._renderId!==n){s._renderId=n;for(let e in s){let t=s[e],n=i[e];if(e!==`_renderId`&&e!==`_equal`){if(t.equals!==void 0){if(t.equals(n)===!1)return t.copy(n),s._equal=!1,!1}else if(n.isTexture===!0){if(t.id!==n.id||t.version!==n.version)return t.id=n.id,t.version=n.version,s._equal=!1,!1}else if(t!==n)return s[e]=n,s._equal=!1,!1}}if(s.transmission>0){let{width:t,height:n}=e.context;if(o.bufferWidth!==t||o.bufferHeight!==n)return o.bufferWidth=t,o.bufferHeight=n,s._equal=!1,!1}s._equal=!0}else if(s._equal===!1)return!1;if(o.geometryId!==a.id)return o.geometryId=a.id,!1;let c=this.getGeometryData(e.geometry);if(c._renderId!==n){c._renderId=n;let e=a.attributes,t=c.attributes,r=0,i=0;for(let t in e)r++;for(let n in t){i++;let r=t[n],a=e[n];if(a===void 0)return delete t[n],c._equal=!1,!1;if(r.id!==a.id||r.version!==a.version)return r.id=a.id,r.version=a.version,c._equal=!1,!1}if(i!==r)return c.attributes=this.getAttributesData(e),c._equal=!1,!1;let o=a.index,s=c.indexId,l=c.indexVersion,u=o?o.id:null,d=o?o.version:null;if(s!==u||l!==d)return c.indexId=u,c.indexVersion=d,c._equal=!1,!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,c._equal=!1,!1;c._equal=!0}else if(c._equal===!1)return!1;if(o.morphTargetInfluences){let e=!1;for(let t=0;t<o.morphTargetInfluences.length;t++)o.morphTargetInfluences[t]!==r.morphTargetInfluences[t]&&(o.morphTargetInfluences[t]=r.morphTargetInfluences[t],e=!0);if(e)return!1}if(o.lights){for(let e=0;e<t.length;e++)if(o.lights[e].map!==t[e].map)return!1}return o.center&&o.center.equals(r.center)===!1?(o.center.copy(r.center),!0):(e.bundle!==null&&(o.version=e.bundle.version),!0)}getLightsData(e){let t=[];for(let n of e)n.isSpotLight===!0&&n.map!==null&&t.push({map:n.map.version});return t}getLights(e,t){if(Ow.has(e)){let n=Ow.get(e);if(n.renderId===t)return n.lightsData}let n=this.getLightsData(e.getLights());return Ow.set(e,{renderId:t,lightsData:n}),n}needsRefresh(e,t){if(this.hasNode||this.hasAnimation||this.firstInitialization(e)||this.needsVelocity(t.renderer))return!0;let{renderId:n}=t;if(this.renderId!==n)return this.renderId=n,!0;let r=e.object.static===!0,i=e.bundle!==null&&e.bundle.static===!0&&this.getRenderObjectData(e).version===e.bundle.version;if(r||i)return!1;let a=this.getLights(e.lightsNode,n);return this.equals(e,a,n)!==!0}},Mw=[/^StackTrace\.js$/,/^TSLCore\.js$/,/^.*Node\.js$/,/^three\.webgpu.*\.js$/];function Nw(e){let t=/(?:at\s+(.+?)\s+\()?(?:(.+?)@)?([^@\s()]+):(\d+):(\d+)/;return e.split(`
4110
+ It should be used in child components of a TresCanvas instance.`);return e};function GC(){let{scene:e,renderer:t,camera:n,sizes:r,controls:i,extend:a,events:o}=WC();return{scene:e,renderer:t.instance,camera:n.activeCamera,sizes:r,controls:i,extend:a,events:o,invalidate:t.invalidate,advance:t.advance}}var KC=()=>{let e=GC(),{renderer:t}=WC(),n=kC(),r=kC();t.loop.onBeforeLoop(t=>{n.trigger({...e,...t})}),t.loop.onLoop(t=>{r.trigger({...e,...t})});let i=t.replaceRenderFunction;return{stop:t.loop.stop,start:t.loop.start,isActive:t.loop.isActive,onBeforeRender:n.on,onRender:r.on,render:i}};function qC(e,t={},n={}){let r=e,i=e=>{r=e},a=new Proxy({},{});return a=new Proxy({},{has(e,n){return n in t||n in r},get(e,n,i){return n in t?t[n](r):r[n]},set(e,t,o){return n[t]?n[t](o,r,a,i):r[t]=o,!0}}),a}var JC=[`onClick`,`onContextmenu`,`onPointermove`,`onPointerenter`,`onPointerleave`,`onPointerover`,`onPointerout`,`onDblclick`,`onPointerdown`,`onPointerup`,`onPointercancel`,`onLostpointercapture`,`onWheel`],YC={onClick:`click`,onContextmenu:`contextmenu`,onPointermove:`pointermove`,onPointerenter:`pointerenter`,onPointerleave:`pointerleave`,onPointerover:`pointerover`,onPointerout:`pointerout`,onDblclick:`dblclick`,onPointerdown:`pointerdown`,onPointerup:`pointerup`,onPointercancel:`pointercancel`,onLostpointercapture:`lostpointercapture`,onWheel:`wheel`},XC=e=>JC.includes(e),ZC=Symbol(`tresTextNode`),QC=Symbol(`tresComment`),$C=({context:e,options:t={primitivePrefix:``}})=>{let n=e.scene.value,r=()=>{if(!n?.__tres?.isUnmounting)return{[ZC]:!0,__tres:{parent:null}}},i=()=>({[QC]:!0,__tres:{parent:null}}),a=e=>!!e&&typeof e==`object`&&ZC in e,o=e=>!!e&&typeof e==`object`&&QC in e;function s(n,r,i,a){if(a||={},a.args||=[],WS(n))return null;n.includes(`-`)&&(n=n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()).replace(/^[a-z]/,e=>e.toUpperCase()));let o=n.replace(`Tres`,``),s;if(n===`${t?.primitivePrefix??``}primitive`){(!z_(a.object)||y(a.object))&&mC(`Tres primitives need an 'object' prop, whose value is an object or shallowRef<object>`),o=a.object.type;let t={};s=qC(a.object,{object:e=>e,isPrimitive:()=>!0,__tres:()=>t},{object:(t,n,r,i)=>{wC(t,r,i,{patchProp:u,remove:l,insert:c},e)},__tres:e=>{Object.assign(t,e)}})}else{let e=AC.value[o];e||mC(`${o} is not defined on the THREE namespace. Use extend to add it to the catalog.`),s=new e(...a.args)}return s?(cC(s)&&(a?.position||s.position.set(3,3,3),a?.lookAt||s.lookAt(0,0,0)),s=SC(s,{...dC(s)?s.__tres:{},type:o,memoizedProps:a,primitive:n===`primitive`,attach:a.attach},e),s):null}function c(t,r,i){if(!t)return;if(r||=n,a(t)||o(t)){let n=r.__tres?r:SC(r,{},e);if(t.__tres.parent=n,n.__tres.objects){let e=i?n.__tres.objects.findIndex(e=>e===i):-1;e>=0?n.__tres.objects.splice(e,0,t):n.__tres.objects.push(t)}return}let s=t.__tres?t:SC(t,{},e),c=r.__tres?r:SC(r,{},e);if(t=TC(s),r=TC(c),cC(t)&&e.camera?.registerCamera(t),s.__tres.attach?bC(c,s,s.__tres.attach):KS(t)&&KS(c)&&(c.add(t),t.dispatchEvent({type:`added`})),s.__tres.parent=c,c.__tres.objects&&!c.__tres.objects.includes(s)){let e=i?c.__tres.objects.findIndex(e=>e===i):-1;~e?c.__tres.objects.splice(e,0,s):c.__tres.objects.push(s)}}function l(t,n){if(!t)return;if(a(t)||o(t)){let e=t.__tres.parent;e?.__tres?.objects&&fC(e.__tres.objects,e=>e!==t),t.__tres.parent=null;return}n=H_(n)?`default`:n;let r=t.__tres?.dispose;H_(r)||(n=r===null?!1:r);let i=t.__tres?.primitive,s=n==="default"?!i:!!n;if(t.__tres&&`objects`in t.__tres&&[...t.__tres.objects].forEach(e=>l(e,n)),s&&t.children&&[...t.children].forEach(e=>l(e,n)),EC(t,e),DC(t,e),s&&!iC(t)){if(L_(n))n(t);else if(L_(t.dispose))try{t.dispose()}catch{}}`__tres`in t&&delete t.__tres}function u(t,n,r,i){if(!t)return;let a=t,o=n;if(t.__tres&&(t.__tres.memoizedProps[n]=i),n===`attach`){let n=t.__tres?.parent||t.parent;l(t),SC(t,{attach:i},e),n&&c(t,n);return}if(n===`dispose`){t.__tres||(t=SC(t,{},e)),t.__tres.dispose=i;return}XC(n)&&L_(i)&&t.addEventListener(YC[n],i);let s=P_(o),u=a?.[s];if(o===`args`){let e=t,n=r??[],o=i??[],s=t.__tres?.type||t.type;if(s&&n.length&&!I_(n,o)){let t=new AC.value[s](...i),n=Object.getOwnPropertyDescriptors(t);Object.entries(n).forEach(([n,r])=>{if(!(!r.writable&&!r.set)&&n in e)try{e[n]=t[n]}catch(e){console.warn(`Could not set property ${n} on ${s}:`,e)}}),a=e}return}if(a.type===`BufferGeometry`){if(o===`args`)return;a.setAttribute(P_(o),new sa(...i));return}if(o.includes(`-`)&&u===void 0){let e=vC(a,o);if(u=e.target,a=e.target,s=e.key,u&&s){u[s]=i,cC(t)&&t.updateProjectionMatrix(),CC(t);return}}let d=i;if(d===``&&(d=!0),L_(u)){XC(n)||(Array.isArray(d)?t[s](...d):t[s](d)),s.startsWith(`on`)&&L_(d)&&(a[s]=d);return}$S(u)&&$S(d)?u.mask=d.mask:ZS(u)&&QS(d)?u.set(d):oC(u)&&sC(d)&&u.constructor===d.constructor?u.copy(d):aC(u)&&Array.isArray(d)?`fromArray`in u&&typeof u.fromArray==`function`?u.fromArray(d):u.set(...d):aC(u)&&typeof d==`number`?`setScalar`in u&&typeof u.setScalar==`function`?u.setScalar(d):u.set(d):a[s]=d,cC(t)&&t.updateProjectionMatrix(),CC(t)}function d(e){return e?.__tres?.parent||null}function f(e){if(!e||!(`__tres`in e))return null;let t=d(e)?.__tres?.objects||[],n=t.findIndex(t=>t===e);return n<0||n>=t.length-1?null:t[n+1]}let p=()=>{};return{insert:c,remove:l,createElement:s,patchProp:u,parentNode:d,createText:r,createComment:i,setText:p,setElementText:p,nextSibling:f,querySelector:p,setScopeId:p,cloneNode:p,insertStaticContent:p}},ew=new Map,tw=e=>ew.get(e),nw=(e,t)=>{ew.set(e,t)},rw=e=>ew.delete(e),iw=[`asset-load`],aw=class{subscribers=new Set;messageQueue=[];maxQueueSize=100;send(e,t){let n={type:e,data:t,timestamp:Date.now()};this.subscribers.size>0?this.subscribers.forEach(e=>e(n)):iw.includes(e)&&this.queueMessage(n)}queueMessage(e){this.messageQueue.push(e),this.messageQueue.length>this.maxQueueSize&&this.messageQueue.shift()}flushQueue(){this.messageQueue.length===0||this.subscribers.size===0||(this.messageQueue.forEach(e=>{this.subscribers.forEach(t=>t(e))}),this.messageQueue=[])}subscribe(e){return this.subscribers.add(e),this.flushQueue(),()=>{this.subscribers.delete(e)}}get hasSubscribers(){return this.subscribers.size>0}get queueSize(){return this.messageQueue.length}clearQueue(){this.messageQueue=[]}};function ow(e,t){let n=`▲ ■ ●${e}`;typeof sw==`function`?sw(n,t):t===`error`?console.error(n):t===`warn`?console.warn(n):console.log(n)}function sw(e,t){throw Error(e+t)}function cw(e){let t=0;return e.traverse(e=>{if(qS(e)&&e.type!==`HightlightMesh`){let n=e.geometry,r=n.attributes.position.count*3*Float32Array.BYTES_PER_ELEMENT,i=n.index?n.index.count*Uint32Array.BYTES_PER_ELEMENT:0,a=n.attributes.normal?n.attributes.normal.count*3*Float32Array.BYTES_PER_ELEMENT:0,o=n.attributes.uv?n.attributes.uv.count*2*Float32Array.BYTES_PER_ELEMENT:0,s=r+i+a+o;t+=s}}),t}function lw(e,t,n){e.push(t),e.length>n&&e.shift()}function uw(e){return(e/1024).toFixed(2)}function dw(e){if(!e)return;typeof window<`u`&&!window.__TRES__DEVTOOLS__&&(window.__TRES__DEVTOOLS__=new aw);let t={maxFrames:160,fps:{value:0,accumulator:[]},memory:{currentMem:0,allocatedMem:0,accumulator:[]}},n=j_({every:100}),{isSupported:r,memory:i}=M_({interval:100}),a=performance.now(),o=0,s=({timestamp:o})=>{e.scene.value&&(t.memory.allocatedMem=cw(e.scene.value)),o-a>=100&&(a=o,lw(t.fps.accumulator,n.value,160),t.fps.value=n.value,r.value&&i.value?.usedJSHeapSize&&(lw(t.memory.accumulator,i.value.usedJSHeapSize/1024/1024,160),t.memory.accumulator.length>0&&(t.memory.currentMem=t.memory.accumulator.reduce((e,t)=>e+t,0)/t.memory.accumulator.length)))},{pause:c}=w_(({delta:n})=>{window.__TRES__DEVTOOLS__&&(s({timestamp:performance.now()}),o+=n,o>=1&&(window.__TRES__DEVTOOLS__.send(`context`,e),window.__TRES__DEVTOOLS__.send(`performance`,t),o=0))},{immediate:!0});b(()=>{c()})}var fw=(e,t)=>{if(e.uuid===t)return e;for(let n of e.children){let e=fw(n,t);if(e)return e}},pw=class extends bo{type=`HightlightMesh`;createTime;constructor(...e){super(...e),this.createTime=Date.now()}onBeforeRender(){let e=(Date.now()-this.createTime)/1e3,t=1+.07*Math.sin(2.5*e);this.scale.set(t,t,t)}},mw=e=>{let t={id:`scene-${e.uuid}`,label:e.type,children:[],tags:[]};e.name!==``&&t.tags.push({label:e.name,textColor:5750629,backgroundColor:15793395});let n=cw(e);return n>0&&t.tags.push({label:`${uw(n)} KB`,textColor:15707189,backgroundColor:16775644,tooltip:`Memory usage`}),e.type.includes(`Light`)&&(nC(e)&&t.tags.push({label:`${e.intensity}`,textColor:9738662,backgroundColor:16316922,tooltip:`Intensity`}),t.tags.push({label:`#${new I(e.color).getHexString()}`,textColor:9738662,backgroundColor:16316922,tooltip:`Color`})),e.type.includes(`Camera`)&&(t.tags.push({label:`${e.fov}°`,textColor:9738662,backgroundColor:16316922,tooltip:`Field of view`}),t.tags.push({label:`x: ${Math.round(e.position.x)} y: ${Math.round(e.position.y)} z: ${Math.round(e.position.z)}`,textColor:9738662,backgroundColor:16316922,tooltip:`Position`})),t};function hw(e,t,n=``){return{id:`context-${t}-${n?`${n}.${e}`:e}`,label:e,children:[],tags:[]}}function gw(e,t,n=``){e.children.forEach(e=>{if(e.type===`HightlightMesh`||n&&!e.type.includes(n)&&!e.name.includes(n))return;let r=mw(e);t.children.push(r),gw(e,r,n)})}function _w(e,t,n=new WeakSet,r=0,i=4,a,o=``){if(r>=i||!e||n.has(e))return;let s=r===0?e?.scene?.value?.uuid||Math.random().toString(36).slice(2,11):a;n.add(e),Object.entries(e).forEach(([e,a])=>{if(e.startsWith(`_`)||typeof a==`function`)return;let c=o?`${o}.${e}`:e,l=hw(e,s,o);e!==`scene`&&(y(a)?(l.tags.push({label:`Ref<${typeof a.value}>`,textColor:4372611,backgroundColor:15793395}),a.value&&typeof a.value==`object`?_w(a.value,l,n,r+1,i,s,c):l.label=`${e}: ${JSON.stringify(a.value)}`):a&&typeof a==`object`&&!Array.isArray(a)?Object.keys(a).length>0?n.has(a)?l.tags.push({label:`Circular`,textColor:16711680,backgroundColor:16773360}):_w(a,l,n,r+1,i,s,c):l.label=`${e}: {}`:Array.isArray(a)?(l.label=`${e}: Array(${a.length})`,l.tags.push({label:`length: ${a.length}`,textColor:9738662,backgroundColor:16316922})):l.label=`${e}: ${JSON.stringify(a)}`,t.children.push(l))})}var vw=e=>t=>{if(t.inspectorId===Sw){let n=mw(e.scene.value);gw(e.scene.value,n,t.filter);let r={id:`context-root`,label:`Context`,children:[],tags:[]};_w(e,r),t.rootNodes=[n,r]}},yw=(e,{highlightMesh:t,prevInstance:n})=>r=>{if(r.inspectorId!==Sw)return;let i=new so({color:11003607,transparent:!0,opacity:.2,depthTest:!1,side:2});if(r.nodeId.includes(`scene`)){let a=r.nodeId.match(/^scene-(.+)$/),o=a?a[1]:null;if(!o)return;let[s]=e.scene.value.getObjectsByProperty(`uuid`,o);if(!s)return;if(n&&t&&t.parent&&n.remove(t),qS(s)){let e=new pw(s.geometry.clone(),i);s.add(e),t=e,n=s}if(r.state={object:Object.entries(s).map(([e,t])=>e===`children`?{key:e,value:t.filter(e=>e.type!==`HightlightMesh`)}:{key:e,value:t,editable:!0}).filter(({key:e})=>e!==`parent`)},iC(s)){let t={...r.state,state:[{key:`Scene Info`,value:{objects:s.children.length,memory:cw(s),calls:e.renderer.instance.info.render.calls,triangles:e.renderer.instance.info.render.triangles,points:e.renderer.instance.info.render.points,lines:e.renderer.instance.info.render.lines}}]};`programs`in e.renderer.instance.info&&t.state.push({key:`Programs`,value:e.renderer.instance.info.programs?.map(e=>({...e,programName:e.name}))}),r.state=t}}else if(r.nodeId.includes(`context`)){let t=r.nodeId.match(/^context-([^-]+(?:-[^-]+)*)-(.+)$/),n=t?t[2]:`context`;if(!n||n===`context`){r.state={object:Object.entries(e).filter(([e])=>!e.startsWith(`_`)&&e!==`parent`).map(([e,t])=>({key:e,value:y(t)?t.value:t,editable:!1}))};return}let i=n.split(`.`),a=e;for(let e of i){if(!a||typeof a!=`object`)break;a=y(a[e])?a[e].value:a[e]}a!==void 0&&(r.state={object:Object.entries(a).filter(([e])=>!e.startsWith(`_`)&&e!==`parent`).map(([e,t])=>y(t)?{key:e,value:t.value,editable:!1}:typeof t==`function`?{key:e,value:`ƒ()`,editable:!1}:t&&typeof t==`object`?{key:e,value:Array.isArray(t)?`Array(${t.length})`:`Object`,editable:!1}:{key:e,value:t,editable:!1})})}},bw=(e,t,n,r)=>{let i=fw(e,t);if(!i){console.warn(`Object with UUID not found in the scene.`);return}let a=i;for(let e=0;e<n.length-1;e++)if(a[n[e]]!==void 0)a=a[n[e]];else{console.warn(`Property path is not valid: ${n.join(`.`)}`);return}let o=n[n.length-1];a[o]===void 0?console.warn(`Property path is not valid: ${n.join(`.`)}`):a[o]=r},xw=e=>t=>{if(t.inspectorId===Sw&&t.nodeId.includes(`scene`)){let n=t.nodeId.match(/^scene-(.+)$/),r=n?n[1]:null;if(!r)return;bw(e.scene.value,r,t.path,t.state.value)}},Sw=`tres:inspector`;function Cw(e,t){let n={id:`dev.esm.tres`,label:`TresJS 🪐`,logo:`https://raw.githubusercontent.com/Tresjs/tres/main/public/favicon.svg`,packageName:`tresjs`,homepage:`https://docs.tresjs.org`,app:e};dw(t),sx(n,e=>{typeof e.now!=`function`&&ow(`You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.`),e.addInspector({id:Sw,label:`TresJS 🪐`,icon:`account_tree`,treeFilterPlaceholder:`Search instances`}),setInterval(()=>{e.sendInspectorTree(Sw)},1e3),setInterval(()=>{e.notifyComponentUpdate()},5e3),e.on.getInspectorTree(vw(t)),e.on.getInspectorState(yw(t,{highlightMesh:null,prevInstance:null})),e.on.editInspectorState(xw(t))})}var ww=se({__name:`Context`,props:{camera:{type:null,required:!1},windowSize:{type:Boolean,required:!1},fpsLimit:{type:Number,required:!1},enableProvideBridge:{type:Boolean,required:!1},customRendererOptions:{type:Object,required:!1},antialias:{type:Boolean,required:!1},stencil:{type:Boolean,required:!1},depth:{type:Boolean,required:!1},precision:{type:String,required:!1},logarithmicDepthBuffer:{type:Boolean,required:!1},preserveDrawingBuffer:{type:Boolean,required:!1},powerPreference:{type:null,required:!1},alpha:{type:Boolean,required:!1},premultipliedAlpha:{type:Boolean,required:!1},failIfMajorPerformanceCaveat:{type:Boolean,required:!1},clearColor:{type:[Object,String,Number],required:!1},clearAlpha:{type:Number,required:!1},shadows:{type:Boolean,required:!1},toneMapping:{type:null,required:!1},shadowMapType:{type:null,required:!1},useLegacyLights:{type:Boolean,required:!1},outputColorSpace:{type:null,required:!1},toneMappingExposure:{type:Number,required:!1},renderMode:{type:String,required:!1},dpr:{type:[Number,Array],required:!1},renderer:{type:Function,required:!1},canvas:{type:null,required:!0}},emits:[`ready`,`error`,`pointermissed`,`render`,`beforeLoop`,`loop`,`click`,`contextmenu`,`pointermove`,`pointerenter`,`pointerleave`,`pointerover`,`pointerout`,`dblclick`,`pointerdown`,`pointerup`,`pointercancel`,`lostpointercapture`,`wheel`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=re(),o=g(new Ci),c=O();jC(Mp);let l=(e,t)=>se({setup(){let n=O()?.appContext;n&&(n.app=c?.appContext.app);let i={};function o(e){e&&(e.parent&&o(e.parent),e.provides&&Object.assign(i,e.provides))}return c?.parent&&r.enableProvideBridge&&(o(c.parent),Reflect.ownKeys(i).forEach(e=>{s(e,i[e])})),s(VC,e),s(`extend`,jC),typeof window<`u`&&n?.app&&Cw(n?.app,e),()=>(t.value,ne(p,null,a.default?.()??[]))}}),u=e=>{let t=r.canvas;if(tw(t))return;let n=w(0),i=l(e,n),a=T($C({context:e,options:r.customRendererOptions}));a.render(ne(i),o.value),nw(t,{renderer:a,internalComponent:i,hmrTick:n,context:e})},d=(e,t=!1)=>{_C(e.scene.value),t&&(e.renderer.instance.dispose(),e.renderer.instance instanceof Yg&&(e.renderer.instance.renderLists.dispose(),e.renderer.instance.forceContextLoss())),o.value.__tres={root:e,objects:[],isUnmounting:!0}},m=g(HC({scene:o.value,canvas:r.canvas,fpsLimit:()=>r.fpsLimit??1/0,windowSize:r.windowSize??!1,rendererOptions:r}));t({context:m,dispose:()=>d(m.value,!0)});let h=()=>{let e=tw(r.canvas);e&&((e=>iC(e)&&`__tres`in e)(o.value)&&(o.value.__tres.isUnmounting=!0),e.renderer.render(null,o.value),d(m.value),rw(r.canvas))},{camera:_,renderer:v}=m.value,{registerCamera:y,cameras:x,activeCamera:S,deregisterCamera:C}=_,E=()=>{let e=new ud(45,window.innerWidth/window.innerHeight,.1,1e3);e.position.set(3,3,3),e.lookAt(0,0,0),y(e);let t=ue(()=>{x.value.length>=2&&(e.removeFromParent(),C(e),t?.())})};return m.value.events.onPointerMissed(e=>{i(`pointermissed`,e)}),le(()=>r.camera,(e,t)=>{e&&y(oe(e),!0),t&&(oe(t).removeFromParent(),C(oe(t)))},{immediate:!0}),v.onRender(()=>{m.value&&i(`render`,m.value)}),v.loop.onLoop(e=>{m.value&&i(`loop`,{...m.value,...e})}),v.loop.onBeforeLoop(e=>{m.value&&i(`beforeLoop`,{...m.value,...e})}),v.onReady(()=>{u(m.value),i(`ready`,m.value),S.value||E()}),v.onError(e=>{i(`error`,e)}),f(async()=>{await c_(3e3),(!m.value.sizes.width||!m.value.sizes.height.value)&&console.warn(`TresCanvas: The canvas has no area, so nothing can be rendered. Set it manually on the parent element or use the prop windowSize.`)}),b(h),()=>{}}}),Tw=[`data-scene`,`data-tres`],Ew=se({__name:`TresCanvas`,props:{camera:{type:null,required:!1},windowSize:{type:Boolean,required:!1,default:void 0},fpsLimit:{type:Number,required:!1},enableProvideBridge:{type:Boolean,required:!1,default:!0},customRendererOptions:{type:Object,required:!1},antialias:{type:Boolean,required:!1,default:!0},stencil:{type:Boolean,required:!1,default:void 0},depth:{type:Boolean,required:!1,default:void 0},precision:{type:String,required:!1},logarithmicDepthBuffer:{type:Boolean,required:!1,default:void 0},preserveDrawingBuffer:{type:Boolean,required:!1,default:void 0},powerPreference:{type:null,required:!1},alpha:{type:Boolean,required:!1,default:void 0},premultipliedAlpha:{type:Boolean,required:!1},failIfMajorPerformanceCaveat:{type:Boolean,required:!1,default:void 0},clearColor:{type:[Object,String,Number],required:!1,default:`#000000`},clearAlpha:{type:Number,required:!1,default:1},shadows:{type:Boolean,required:!1,default:void 0},toneMapping:{type:null,required:!1,default:4},shadowMapType:{type:null,required:!1,default:2},useLegacyLights:{type:Boolean,required:!1,default:void 0},outputColorSpace:{type:null,required:!1},toneMappingExposure:{type:Number,required:!1},renderMode:{type:String,required:!1,default:`always`},dpr:{type:[Number,Array],required:!1},renderer:{type:Function,required:!1}},emits:[`ready`,`error`,`pointermissed`,`render`,`beforeLoop`,`loop`,`click`,`contextmenu`,`pointermove`,`pointerenter`,`pointerleave`,`pointerover`,`pointerout`,`dblclick`,`pointerdown`,`pointerup`,`pointercancel`,`lostpointercapture`,`wheel`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=w(),l=g();return n({get context(){return l.value?.context},dispose:()=>l.value?.dispose()}),(n,i)=>(v(),c(`canvas`,{ref_key:`canvasRef`,ref:s,"data-scene":l.value?.context?.scene.value.uuid,class:r(n.$attrs.class),"data-tres":`tresjs ${D(HS)}`,style:h({display:`block`,width:`100%`,height:`100%`,position:e.windowSize?`fixed`:`relative`,top:0,left:0,pointerEvents:`auto`,touchAction:`none`,...n.$attrs.style})},[s.value?(v(),u(ww,te({key:0,ref_key:`contextRef`,ref:l,canvas:s.value},a,{onReady:i[0]||=e=>o(`ready`,e),onError:i[1]||=e=>o(`error`,e),onPointermissed:i[2]||=e=>o(`pointermissed`,e),onRender:i[3]||=e=>o(`render`,e),onBeforeLoop:i[4]||=e=>o(`beforeLoop`,e),onLoop:i[5]||=e=>o(`loop`,e),onClick:i[6]||=e=>o(`click`,e),onContextmenu:i[7]||=e=>o(`contextmenu`,e),onPointermove:i[8]||=e=>o(`pointermove`,e),onPointerenter:i[9]||=e=>o(`pointerenter`,e),onPointerleave:i[10]||=e=>o(`pointerleave`,e),onPointerover:i[11]||=e=>o(`pointerover`,e),onPointerout:i[12]||=e=>o(`pointerout`,e),onDblclick:i[13]||=e=>o(`dblclick`,e),onPointerdown:i[14]||=e=>o(`pointerdown`,e),onPointerup:i[15]||=e=>o(`pointerup`,e),onPointercancel:i[16]||=e=>o(`pointercancel`,e),onLostpointercapture:i[17]||=e=>o(`lostpointercapture`,e),onWheel:i[18]||=e=>o(`wheel`,e)}),{default:t(()=>[C(n.$slots,`default`)]),_:3},16,[`canvas`])):ae(`v-if`,!0)],14,Tw))}}),Dw=`alphaMap.alphaTest.anisotropy.anisotropyMap.anisotropyRotation.aoMap.aoMapIntensity.attenuationColor.attenuationDistance.bumpMap.clearcoat.clearcoatMap.clearcoatNormalMap.clearcoatNormalScale.clearcoatRoughness.color.dispersion.displacementMap.emissive.emissiveIntensity.emissiveMap.envMap.envMapIntensity.gradientMap.ior.iridescence.iridescenceIOR.iridescenceMap.iridescenceThicknessMap.lightMap.lightMapIntensity.map.matcap.metalness.metalnessMap.normalMap.normalScale.opacity.roughness.roughnessMap.sheen.sheenColor.sheenColorMap.sheenRoughnessMap.shininess.specular.specularColor.specularColorMap.specularIntensity.specularIntensityMap.specularMap.thickness.transmission.transmissionMap`.split(`.`),Ow=new WeakMap,kw=new WeakMap,Aw=new WeakMap,jw=class{constructor(e){this.renderObjects=new WeakMap,this.hasNode=this.containsNode(e),this.hasAnimation=e.object.isSkinnedMesh===!0,this.refreshUniforms=Dw,this.renderId=0}firstInitialization(e){return this.renderObjects.has(e)===!1?(this.getRenderObjectData(e),!0):!1}needsVelocity(e){let t=e.getMRT();return t!==null&&t.has(`velocity`)}getRenderObjectData(e){let t=this.renderObjects.get(e);if(t===void 0){let{geometry:n,object:r}=e;if(t={geometryId:n.id,worldMatrix:r.matrixWorld.clone()},r.center&&(t.center=r.center.clone()),r.morphTargetInfluences&&(t.morphTargetInfluences=r.morphTargetInfluences.slice()),e.bundle!==null&&(t.version=e.bundle.version),e.material.transmission>0){let{width:n,height:r}=e.context;t.bufferWidth=n,t.bufferHeight=r}t.lights=this.getLightsData(e.lightsNode.getLights()),this.renderObjects.set(e,t)}return t}getAttributesData(e){let t={};for(let n in e){let r=e[n];t[n]={id:r.id,version:r.version}}return t}containsNode(e){let t=e.material;for(let e in t)if(t[e]&&t[e].isNode)return!0;return!!(e.context.modelViewMatrix||e.context.modelNormalViewMatrix||e.context.getAO||e.context.getShadow)}getGeometryData(e){let t=Aw.get(e);return t===void 0&&(t={_renderId:-1,_equal:!1,attributes:this.getAttributesData(e.attributes),indexId:e.index?e.index.id:null,indexVersion:e.index?e.index.version:null,drawRange:{start:e.drawRange.start,count:e.drawRange.count}},Aw.set(e,t)),t}getMaterialData(e){let t=kw.get(e);if(t===void 0){t={_renderId:-1,_equal:!1};for(let n of this.refreshUniforms){let 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)}kw.set(e,t)}return t}equals(e,t,n){let{object:r,material:i,geometry:a}=e,o=this.getRenderObjectData(e);if(o.worldMatrix.equals(r.matrixWorld)!==!0)return o.worldMatrix.copy(r.matrixWorld),!1;let s=this.getMaterialData(e.material);if(s._renderId!==n){s._renderId=n;for(let e in s){let t=s[e],n=i[e];if(e!==`_renderId`&&e!==`_equal`){if(t.equals!==void 0){if(t.equals(n)===!1)return t.copy(n),s._equal=!1,!1}else if(n.isTexture===!0){if(t.id!==n.id||t.version!==n.version)return t.id=n.id,t.version=n.version,s._equal=!1,!1}else if(t!==n)return s[e]=n,s._equal=!1,!1}}if(s.transmission>0){let{width:t,height:n}=e.context;if(o.bufferWidth!==t||o.bufferHeight!==n)return o.bufferWidth=t,o.bufferHeight=n,s._equal=!1,!1}s._equal=!0}else if(s._equal===!1)return!1;if(o.geometryId!==a.id)return o.geometryId=a.id,!1;let c=this.getGeometryData(e.geometry);if(c._renderId!==n){c._renderId=n;let e=a.attributes,t=c.attributes,r=0,i=0;for(let t in e)r++;for(let n in t){i++;let r=t[n],a=e[n];if(a===void 0)return delete t[n],c._equal=!1,!1;if(r.id!==a.id||r.version!==a.version)return r.id=a.id,r.version=a.version,c._equal=!1,!1}if(i!==r)return c.attributes=this.getAttributesData(e),c._equal=!1,!1;let o=a.index,s=c.indexId,l=c.indexVersion,u=o?o.id:null,d=o?o.version:null;if(s!==u||l!==d)return c.indexId=u,c.indexVersion=d,c._equal=!1,!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,c._equal=!1,!1;c._equal=!0}else if(c._equal===!1)return!1;if(o.morphTargetInfluences){let e=!1;for(let t=0;t<o.morphTargetInfluences.length;t++)o.morphTargetInfluences[t]!==r.morphTargetInfluences[t]&&(o.morphTargetInfluences[t]=r.morphTargetInfluences[t],e=!0);if(e)return!1}if(o.lights){for(let e=0;e<t.length;e++)if(o.lights[e].map!==t[e].map)return!1}return o.center&&o.center.equals(r.center)===!1?(o.center.copy(r.center),!0):(e.bundle!==null&&(o.version=e.bundle.version),!0)}getLightsData(e){let t=[];for(let n of e)n.isSpotLight===!0&&n.map!==null&&t.push({map:n.map.version});return t}getLights(e,t){if(Ow.has(e)){let n=Ow.get(e);if(n.renderId===t)return n.lightsData}let n=this.getLightsData(e.getLights());return Ow.set(e,{renderId:t,lightsData:n}),n}needsRefresh(e,t){if(this.hasNode||this.hasAnimation||this.firstInitialization(e)||this.needsVelocity(t.renderer))return!0;let{renderId:n}=t;if(this.renderId!==n)return this.renderId=n,!0;let r=e.object.static===!0,i=e.bundle!==null&&e.bundle.static===!0&&this.getRenderObjectData(e).version===e.bundle.version;if(r||i)return!1;let a=this.getLights(e.lightsNode,n);return this.equals(e,a,n)!==!0}},Mw=[/^StackTrace\.js$/,/^TSLCore\.js$/,/^.*Node\.js$/,/^three\.webgpu.*\.js$/];function Nw(e){let t=/(?:at\s+(.+?)\s+\()?(?:(.+?)@)?([^@\s()]+):(\d+):(\d+)/;return e.split(`
4111
4111
  `).map(e=>{let n=e.match(t);if(!n)return null;let r=n[1]||n[2]||``,i=n[3].split(`?`)[0],a=parseInt(n[4],10),o=parseInt(n[5],10);return{fn:r,file:i.split(`/`).pop(),line:a,column:o}}).filter(e=>e&&!Mw.some(t=>t.test(e.file)))}var Pw=class{constructor(e=null){this.isStackTrace=!0,this.stack=Nw(e||Error().stack)}getLocation(){if(this.stack.length===0)return`[Unknown location]`;let e=this.stack[0],t=e.fn;return`${t?`"${t}()" at `:``}"${e.file}:${e.line}"`}getError(e){return this.stack.length===0?e:`${e}\n${this.stack.map(e=>{let t=`${e.file}:${e.line}:${e.column}`;return e.fn?` at ${e.fn} (${t})`:` at ${t}`}).join(`
4112
- `)}`}};function Fw(e,t=0){let n=3735928559^t,r=1103547991^t;if(Array.isArray(e))for(let t=0,i;t<e.length;t++)i=e[t],n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);else for(let t=0,i;t<e.length;t++)i=e.charCodeAt(t),n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}var Iw=e=>Fw(e),Lw=e=>Fw(e),Rw=(...e)=>Fw(e),zw=new Map([[1,`float`],[2,`vec2`],[3,`vec3`],[4,`vec4`],[9,`mat3`],[16,`mat4`]]),Bw=new WeakMap;function Vw(e){return zw.get(e)}function Hw(e){if(/[iu]?vec\d/.test(e))return e.startsWith(`ivec`)?Int32Array:e.startsWith(`uvec`)?Uint32Array:Float32Array;if(/mat\d/.test(e)||/float/.test(e))return Float32Array;if(/uint/.test(e))return Uint32Array;if(/int/.test(e))return Int32Array;throw Error(`THREE.NodeUtils: Unsupported type: ${e}`)}function Uw(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 9;if(/mat4/.test(e))return 16;M(`TSL: Unsupported type: ${e}`,new Pw)}function Ww(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 12;if(/mat4/.test(e))return 16;M(`TSL: Unsupported type: ${e}`,new Pw)}function Gw(e){if(/float|int|uint/.test(e))return 4;if(/vec2/.test(e))return 8;if(/vec3/.test(e)||/vec4/.test(e))return 16;if(/mat2/.test(e))return 8;if(/mat3/.test(e)||/mat4/.test(e))return 16;M(`TSL: Unsupported type: ${e}`,new Pw)}function Kw(e){if(e==null)return null;let t=typeof e;return e.isNode===!0?`node`:t===`number`?`float`:t===`boolean`?`bool`:t===`string`?`string`:t===`function`?`shader`:e.isVector2===!0?`vec2`:e.isVector3===!0?`vec3`:e.isVector4===!0?`vec4`:e.isMatrix2===!0?`mat2`:e.isMatrix3===!0?`mat3`:e.isMatrix4===!0?`mat4`:e.isColor===!0?`color`:e instanceof ArrayBuffer?`ArrayBuffer`:null}function qw(e,...t){let n=e?e.slice(-4):void 0;return t.length===1&&(n===`vec2`?t=[t[0],t[0]]:n===`vec3`?t=[t[0],t[0],t[0]]:n===`vec4`&&(t=[t[0],t[0],t[0],t[0]])),e===`color`?new I(...t):n===`vec2`?new N(...t):n===`vec3`?new P(...t):n===`vec4`?new Nr(...t):n===`mat2`?new If(...t):n===`mat3`?new _r(...t):n===`mat4`?new F(...t):e===`bool`?t[0]||!1:e===`float`||e===`int`||e===`uint`?t[0]||0:e===`string`?t[0]||``:e===`ArrayBuffer`?Xw(t[0]):null}function Jw(e){let t=Bw.get(e);return t===void 0&&(t={},Bw.set(e,t)),t}function Yw(e){let t=``,n=new Uint8Array(e);for(let e=0;e<n.length;e++)t+=String.fromCharCode(n[e]);return btoa(t)}function Xw(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0)).buffer}var Zw={VERTEX:`vertex`,FRAGMENT:`fragment`},Qw={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},$w={BOOLEAN:`bool`,INTEGER:`int`,FLOAT:`float`,VECTOR2:`vec2`,VECTOR3:`vec3`,VECTOR4:`vec4`,MATRIX2:`mat2`,MATRIX3:`mat3`,MATRIX4:`mat4`},eT={READ_ONLY:`readOnly`,WRITE_ONLY:`writeOnly`,READ_WRITE:`readWrite`},tT=[`fragment`,`vertex`],nT=[`setup`,`analyze`,`generate`],rT=[...tT,`compute`],iT=[`x`,`y`,`z`,`w`],aT={analyze:`setup`,generate:`analyze`},oT=0,sT=class e extends Bn{static get type(){return`Node`}constructor(t=null){super(),this.nodeType=t,this.updateType=Qw.NONE,this.updateBeforeType=Qw.NONE,this.updateAfterType=Qw.NONE,this.version=0,this.name=``,this.global=!1,this.parents=!1,this.isNode=!0,this._beforeNodes=null,this._cacheKey=null,this._uuid=null,this._cacheKeyVersion=0,this.id=oT++,this.stackTrace=null,e.captureStackTrace===!0&&(this.stackTrace=new Pw)}set needsUpdate(e){e===!0&&this.version++}get uuid(){return this._uuid===null&&(this._uuid=pr.generateUUID()),this._uuid}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,Qw.FRAME)}onRenderUpdate(e){return this.onUpdate(e,Qw.RENDER)}onObjectUpdate(e){return this.onUpdate(e,Qw.OBJECT)}onReference(e){return this.updateReference=e.bind(this),this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of this._getChildren())yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}_getChildren(e=new Set){let t=[];e.add(this);for(let n of Object.getOwnPropertyNames(this)){let r=this[n];if(!(n.startsWith(`_`)===!0||e.has(r))){if(Array.isArray(r)===!0)for(let e=0;e<r.length;e++){let i=r[e];i&&i.isNode===!0&&t.push({property:n,index:e,childNode:i})}else if(r&&r.isNode===!0)t.push({property:n,childNode:r});else if(r&&Object.getPrototypeOf(r)===Object.prototype)for(let e in r){if(e.startsWith(`_`)===!0)continue;let i=r[e];i&&i.isNode===!0&&t.push({property:n,index:e,childNode:i})}}}return t}getCacheKey(e=!1,t=null){if(e||=this.version!==this._cacheKeyVersion,e===!0||this._cacheKey===null){t===null&&(t=new Set);let n=[];for(let{property:r,childNode:i}of this._getChildren(t))n.push(Iw(r.slice(0,-4)),i.getCacheKey(e,t));this._cacheKey=Rw(Lw(n),this.customCacheKey()),this._cacheKeyVersion=this.version}return this._cacheKey}customCacheKey(){return this.id}getScope(){return this}getHash(){return String(this.id)}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getMemberType(){return`void`}getNodeType(e,t=null){let n=e.getDataFromNode(this),r;return t===null?(r=n.type,r===void 0&&(r=this.generateNodeType(e),n.type=r)):(n.typeFromOutput=n.typeFromOutput||{},r=n.typeFromOutput[t],r===void 0&&(r=this.generateNodeType(e,t),n.typeFromOutput[t]=r)),r}generateNodeType(e,t=null){let n=e.getNodeProperties(this);return n.outputNode?n.outputNode.getNodeType(e,t):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}getArrayCount(){return null}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return t.outputNode||null}analyze(e,t=null){let n=e.increaseUsage(this);if(this.parents===!0){let n=e.getDataFromNode(this,`any`);n.stages=n.stages||{},n.stages[e.shaderStage]=n.stages[e.shaderStage]||[],n.stages[e.shaderStage].push(t)}if(n===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e,this)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){j(`Abstract function.`)}updateAfter(){j(`Abstract function.`)}update(){j(`Abstract function.`)}before(e){return this._beforeNodes===null&&(this._beforeNodes=[]),this._beforeNodes.push(e),this}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);if(this._beforeNodes!==null){let n=this._beforeNodes;this._beforeNodes=null;for(let r of n)r.build(e,t);this._beforeNodes=n}let r=e.getDataFromNode(this);r.buildStages=r.buildStages||{},r.buildStages[e.buildStage]=!0;let i=aT[e.buildStage];if(i&&r.buildStages[i]!==!0){let t=e.getBuildStage();e.setBuildStage(i),this.build(e),e.setBuildStage(t)}e.addChain(this);let a=null,o=e.getBuildStage();if(o===`setup`){e.addNode(this),this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){t.initialized=!0,t.outputNode=this.setup(e)||t.outputNode||null;for(let n of Object.values(t))if(n&&n.isNode===!0){if(n.parents===!0){let t=e.getNodeProperties(n);t.parents=t.parents||[],t.parents.push(this)}n.build(e)}e.addSequentialNode(this)}a=t.outputNode}else if(o===`analyze`)this.analyze(e,t);else if(o===`generate`){if(this.generate.length<2){let n=this.getNodeType(e),r=e.getDataFromNode(this);a=r.snippet,a===void 0?r.generated===void 0?(r.generated=!0,a=this.generate(e)||``,r.snippet=a):(j(`Node: Recursion detected.`,this),a=`/* Recursion detected. */`):r.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),a=e.format(a,n,t)}else a=this.generate(e,t)||``;a===``&&t!==null&&t!==`void`&&t!==`OutputType`&&(M(`TSL: Invalid generated code, expected a "${t}".`),a=e.generateConst(t))}return e.removeChain(this),a}getSerializeChildren(){return this._getChildren()}serialize(e){let t=this.getSerializeChildren(),n={};for(let{property:r,index:i,childNode:a}of t)i===void 0?n[r]=a.toJSON(e.meta).uuid:(n[r]===void 0&&(n[r]=Number.isInteger(i)?[]:{}),n[r][i]=a.toJSON(e.meta).uuid);Object.keys(n).length>0&&(e.inputNodes=n)}deserialize(e){if(e.inputNodes!==void 0){let t=e.meta.nodes;for(let n in e.inputNodes)if(Array.isArray(e.inputNodes[n])){let r=[];for(let i of e.inputNodes[n])r.push(t[i]);this[n]=r}else if(typeof e.inputNodes[n]==`object`){let r={};for(let i in e.inputNodes[n])r[i]=t[e.inputNodes[n][i]];this[n]=r}else{let r=e.inputNodes[n];this[n]=t[r]}}}toJSON(e){let{uuid:t,type:n}=this,r=e===void 0||typeof e==`string`;r&&(e={textures:{},images:{},nodes:{}});let i=e.nodes[t];i===void 0&&(i={uuid:t,type:n,meta:e,metadata:{version:4.7,type:`Node`,generator:`Node.toJSON`}},r!==!0&&(e.nodes[i.uuid]=i),this.serialize(i),delete i.meta);function a(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(r){let t=a(e.textures),n=a(e.images),r=a(e.nodes);t.length>0&&(i.textures=t),n.length>0&&(i.images=n),r.length>0&&(i.nodes=r)}return i}};sT.captureStackTrace=!1;var cT=class extends sT{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}generateNodeType(e){return this.node.getElementType(e)}getMemberType(e,t){return this.node.getMemberType(e,t)}generate(e){let t=this.indexNode.getNodeType(e);return`${this.node.build(e)}[ ${this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:`uint`)} ]`}},lT=class extends sT{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}generateNodeType(e){let t=this.node.getNodeType(e),n=null;for(let 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){let n=this.node,r=this.getNodeType(e),i=n.build(e,r);return e.format(i,r,t)}},uT=class extends sT{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`){let n=e.getVectorType(this.getNodeType(e,t)),r=e.getDataFromNode(this);if(r.propertyName!==void 0)return e.format(r.propertyName,n,t);if(n!==`void`&&t!==`void`&&this.hasDependencies(e)){let i=super.build(e,n),a=e.getVarFromNode(this,null,n),o=e.getPropertyName(a);return e.addLineFlowCode(`${o} = ${i}`,this),r.snippet=i,r.propertyName=o,e.format(r.propertyName,n,t)}}return super.build(e,t)}},dT=class extends uT{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}generateNodeType(e){return this.nodeType===null?e.getTypeFromLength(this.nodes.reduce((t,n)=>t+e.getTypeLength(n.getNodeType(e)),0)):e.getVectorType(this.nodeType)}generate(e,t){let n=this.getNodeType(e),r=e.getTypeLength(n),i=this.nodes,a=e.getComponentType(n),o=[],s=0;for(let t of i){if(s>=r){M(`TSL: Length of parameters exceeds maximum length of function '${n}()' type.`,this.stackTrace);break}let i=t.getNodeType(e),c=e.getTypeLength(i),l;if(s+c>r&&(M(`TSL: Length of '${n}()' data exceeds maximum length of output type.`,this.stackTrace),c=r-s,i=e.getTypeFromLength(c)),s+=c,l=t.build(e,i),e.getComponentType(i)!==a){let t=e.getTypeFromLength(c,a);l=e.format(l,i,t)}o.push(l)}let c=`${e.getType(n)}( ${o.join(`, `)} )`;return e.format(c,n,t)}},fT=iT.join(``),pT=class extends sT{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(let t of this.components)e=Math.max(iT.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}generateNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}getScope(){return this.node.getScope()}generate(e,t){let n=this.node,r=e.getTypeLength(n.getNodeType(e)),i=null;if(r>1){let a=null;this.getVectorLength()>=r&&(a=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));let o=n.build(e,a);i=this.components.length===r&&this.components===fT.slice(0,this.components.length)?e.format(o,a,t):e.format(`${o}.${this.components}`,this.getNodeType(e),t)}else i=n.build(e,t);return i}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}},mT=class extends uT{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getComponentType(r.getNodeType(e)),o=e.getTypeFromLength(n.length,a),s=r.build(e,o),c=t.build(e,i),l=e.getTypeLength(i),u=[];for(let e=0;e<l;e++){let t=iT[e];t===n[0]?(u.push(s),e+=n.length-1):u.push(c+`.`+t)}return`${e.getType(i)}( ${u.join(`, `)} )`}},hT=class extends uT{static get type(){return`FlipNode`}constructor(e,t){super(),this.sourceNode=e,this.components=t}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{components:t,sourceNode:n}=this,r=this.getNodeType(e),i=n.build(e),a=e.getVarFromNode(this),o=e.getPropertyName(a);e.addLineFlowCode(o+` = `+i,this);let s=e.getTypeLength(r),c=[],l=0;for(let e=0;e<s;e++){let n=iT[e];n===t[l]?(c.push(`1.0 - `+(o+`.`+n)),l++):c.push(o+`.`+n)}return`${e.getType(r)}( ${c.join(`, `)} )`}},gT=class extends sT{static get type(){return`InputNode`}constructor(e,t=null){super(t),this.isInputNode=!0,this.value=e,this.precision=null}generateNodeType(){return this.nodeType===null?Kw(this.value):this.nodeType}getInputType(e){return this.getNodeType(e)}setPrecision(e){return this.precision=e,this}serialize(e){super.serialize(e),e.value=this.value,this.value&&this.value.toArray&&(e.value=this.value.toArray()),e.valueType=Kw(this.value),e.nodeType=this.nodeType,e.valueType===`ArrayBuffer`&&(e.value=Yw(e.value)),e.precision=this.precision}deserialize(e){super.deserialize(e),this.nodeType=e.nodeType,this.value=Array.isArray(e.value)?qw(e.valueType,...e.value):e.value,this.precision=e.precision||null,this.value&&this.value.fromArray&&(this.value=this.value.fromArray(e.value))}generate(){j(`Abstract function.`)}},_T=/float|u?int/,vT=class extends gT{static get type(){return`ConstNode`}constructor(e,t=null){super(e,t),this.isConstNode=!0}generateConst(e){return e.generateConst(this.getNodeType(e),this.value)}generate(e,t){let n=this.getNodeType(e);return _T.test(n)&&_T.test(t)?e.generateConst(t,this.value):e.format(this.generateConst(e),n,t)}},yT=class extends sT{static get type(){return`MemberNode`}constructor(e,t){super(),this.structNode=e,this.property=t,this.isMemberNode=!0}hasMember(e){return this.structNode.isMemberNode&&this.structNode.hasMember(e)===!1?!1:this.structNode.getMemberType(e,this.property)!==`void`}generateNodeType(e){return this.hasMember(e)===!1?`float`:this.structNode.getMemberType(e,this.property)}getMemberType(e,t){if(this.hasMember(e)===!1)return`float`;let n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}generate(e){if(this.hasMember(e)===!1){j(`TSL: Member "${this.property}" does not exist in struct.`,this.stackTrace);let t=this.getNodeType(e);return e.generateConst(t)}return this.structNode.build(e)+`.`+this.property}},bT=null,xT=new Map;function z(e,t){if(xT.has(e)){j(`TSL: Redefinition of method chaining '${e}'.`);return}if(typeof t!=`function`)throw Error(`THREE.TSL: Node element ${e} is not a function`);xT.set(e,t),e!==`assign`&&(sT.prototype[e]=function(...e){return this.isStackNode?this.addToStack(t(...e)):t(this,...e)},sT.prototype[e+`Assign`]=function(...e){return this.isStackNode?this.assign(e[0],t(...e)):this.assign(t(this,...e))})}var ST=e=>e.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),CT=e=>ST(e).split(``).sort().join(``);sT.prototype.assign=function(...e){if(this.isStackNode!==!0)return bT===null?M(`TSL: No stack defined for assign operation. Make sure the assign is inside a Fn().`,new Pw):bT.assign(this,...e),this;{let t=xT.get(`assign`);return this.addToStack(t(...e))}},sT.prototype.toVarIntent=function(){return this},sT.prototype.get=function(e){return new yT(this,e)};var wT={};function TT(e,t,n){wT[e]=wT[t]=wT[n]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new pT(this,e),this._cache[e]=t),t},set(t){this[e].assign(B(t))}};let r=e.toUpperCase(),i=t.toUpperCase(),a=n.toUpperCase();sT.prototype[`set`+r]=sT.prototype[`set`+i]=sT.prototype[`set`+a]=function(t){let n=CT(e);return new mT(this,n,B(t))},sT.prototype[`flip`+r]=sT.prototype[`flip`+i]=sT.prototype[`flip`+a]=function(){let t=CT(e);return new hT(this,t)}}var ET=[`x`,`y`,`z`,`w`],DT=[`r`,`g`,`b`,`a`],OT=[`s`,`t`,`p`,`q`];for(let e=0;e<4;e++){let t=ET[e],n=DT[e],r=OT[e];TT(t,n,r);for(let i=0;i<4;i++){t=ET[e]+ET[i],n=DT[e]+DT[i],r=OT[e]+OT[i],TT(t,n,r);for(let a=0;a<4;a++){t=ET[e]+ET[i]+ET[a],n=DT[e]+DT[i]+DT[a],r=OT[e]+OT[i]+OT[a],TT(t,n,r);for(let o=0;o<4;o++)t=ET[e]+ET[i]+ET[a]+ET[o],n=DT[e]+DT[i]+DT[a]+DT[o],r=OT[e]+OT[i]+OT[a]+OT[o],TT(t,n,r)}}}for(let e=0;e<32;e++)wT[e]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new cT(this,new vT(e,`uint`)),this._cache[e]=t),t},set(t){this[e].assign(B(t))}};Object.defineProperties(sT.prototype,wT);var kT=new WeakMap,AT=function(e,t=null){let n=Kw(e);return n===`node`?e:t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`?B(YT(e,t)):n===`shader`?e.isFn?e:U(e):e},jT=function(e,t=null){for(let n in e)e[n]=B(e[n],t);return e},MT=function(e,t=null){let n=e.length;for(let r=0;r<n;r++)e[r]=B(e[r],t);return e},NT=function(e,t=null,n=null,r=null){function i(e){return r===null?e=B(e):(e=B(Object.assign(e,r)),r.intent===!0&&(e=e.toVarIntent())),e}let a,o=t,s,c;function l(t){let n;return n=o?/[a-z]/i.test(o)?o+`()`:o:e.type,s!==void 0&&t.length<s?(M(`TSL: "${n}" parameter length is less than minimum required.`,new Pw),t.concat(Array(s-t.length).fill(0))):c!==void 0&&t.length>c?(M(`TSL: "${n}" parameter length exceeds limit.`,new Pw),t.slice(0,c)):t}return t===null?a=(...t)=>i(new e(...nE(l(t)))):n===null?a=(...n)=>i(new e(t,...nE(l(n)))):(n=B(n),a=(...r)=>i(new e(t,...nE(l(r)),n))),a.setParameterLength=(...e)=>(e.length===1?s=c=e[0]:e.length===2&&([s,c]=e),a),a.setName=e=>(o=e,a),a},PT=function(e,...t){return new e(...nE(t))},FT=class extends sT{constructor(e,t){super(),this.shaderNode=e,this.rawInputs=t,this.isShaderCallNodeInternal=!0}generateNodeType(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){let{shaderNode:t,rawInputs:n}=this,r=e.getNodeProperties(t),i=e.getClosestSubBuild(t.subBuilds)||``,a=i||`default`;if(r[a])return r[a];let o=e.subBuildFn,s=e.fnCall;e.subBuildFn=i,e.fnCall=this;let c=null;if(t.layout){let r=kT.get(e.constructor);r===void 0&&(r=new WeakMap,kT.set(e.constructor,r));let i=r.get(t);i===void 0&&(i=B(e.buildFunctionNode(t)),r.set(t,i)),e.addInclude(i);let a=n?IT(n):null;c=B(i.call(a))}else{let r=new Proxy(e,{get:(e,t,n)=>{let r;return r=Symbol.iterator===t?function*(){yield void 0}:Reflect.get(e,t,n),r}}),i=n?LT(n):null,a=Array.isArray(n)?n.length>0:n!==null,o=t.jsFunc;c=B(a||o.length>1?o(i,r):o(r))}return e.subBuildFn=o,e.fnCall=s,t.once&&(r[a]=c),c}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){let 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,r=e.getBuildStage(),i=e.getNodeProperties(this),a=e.getSubBuildOutput(this),o=this.getOutputNode(e),s=e.fnCall;if(e.fnCall=this,r===`setup`){let t=e.getSubBuildProperty(`initialized`,this);if(i[t]!==!0&&(i[t]=!0,i[a]=this.getOutputNode(e),i[a].build(e),this.shaderNode.subBuilds))for(let t of e.chaining){let n=e.getDataFromNode(t,`any`);n.subBuilds=n.subBuilds||new Set;for(let e of this.shaderNode.subBuilds)n.subBuilds.add(e)}n=i[a]}else r===`analyze`?o.build(e,t):r===`generate`&&(n=o.build(e,t)||``);return e.fnCall=s,n}};function IT(e){let t;return tE(e),t=e[0]&&(e[0].isNode||Object.getPrototypeOf(e[0])!==Object.prototype)?[...e]:e[0],t}function LT(e){let t=0;return tE(e),new Proxy(e,{get:(n,r,i)=>{let a;if(r===`length`)return a=e.length,a;if(Symbol.iterator===r)a=function*(){for(let t of e)yield B(t)};else{if(e.length>0)if(Object.getPrototypeOf(e[0])===Object.prototype){let n=e[0];a=n[r]===void 0?n[t++]:Reflect.get(n,r,i)}else e[0]instanceof sT&&(a=e[r]===void 0?e[t++]:Reflect.get(e,r,i));else a=Reflect.get(n,r,i);a=B(a)}return a}})}var RT=class extends sT{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 FT(this,e)}setup(){return this.call()}},zT=[!1,!0],BT=[0,1,2,3],VT=[-1,-2],HT=[.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],UT=new Map;for(let e of zT)UT.set(e,new vT(e));var WT=new Map;for(let e of BT)WT.set(e,new vT(e,`uint`));var GT=new Map([...WT].map(e=>new vT(e.value,`int`)));for(let e of VT)GT.set(e,new vT(e,`int`));var KT=new Map([...GT].map(e=>new vT(e.value)));for(let e of HT)KT.set(e,new vT(e));for(let e of HT)KT.set(-e,new vT(-e));var qT={bool:UT,uint:WT,ints:GT,float:KT},JT=new Map([...UT,...KT]),YT=(e,t)=>JT.has(e)?JT.get(e):e.isNode===!0?e:new vT(e,t),XT=function(e,t=null){return(...n)=>{for(let t of n)if(t===void 0)return M(`TSL: Invalid parameter for the type "${e}".`,new Pw),new vT(0,e);if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>{let t=typeof e;return t!==`object`&&t!==`function`}))&&(n=[qw(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return eE(t.get(n[0]));if(n.length===1){let t=YT(n[0],e);return t.nodeType===e?eE(t):eE(new lT(t,e))}return eE(new dT(n.map(e=>YT(e)),e))}};function ZT(e){return e&&e.isNode&&e.traverse(t=>{t.isConstNode&&(e=t.value)}),!!e}var QT=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function $T(e,t){return new RT(e,t)}var B=(e,t=null)=>AT(e,t),eE=(e,t=null)=>B(e,t).toVarIntent(),tE=(e,t=null)=>new jT(e,t),nE=(e,t=null)=>new MT(e,t),rE=(e,t=null,n=null,r=null)=>new NT(e,t,n,r),V=(e,...t)=>new PT(e,...t),H=(e,t=null,n=null,r={})=>new NT(e,t,n,{...r,intent:!0}),iE=0,aE=class extends sT{constructor(e,t=null){super();let n=null;t!==null&&(typeof t==`object`?n=t.return:(typeof t==`string`?n=t:M(`TSL: Invalid layout type.`,new Pw),t=null)),this.shaderNode=new $T(e,n),t!==null&&this.setLayout(t),this.isFn=!0}setLayout(e){let t=this.shaderNode.nodeType;if(typeof e.inputs!=`object`){let n={name:`fn`+ iE++,type:t,inputs:[]};for(let t in e)t!==`return`&&n.inputs.push({name:t,type:e[t]});e=n}return this.shaderNode.setLayout(e),this}generateNodeType(e){return this.shaderNode.getNodeType(e)||`float`}call(...e){let 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){let t=this.getNodeType(e);return M(`TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".`,this.stackTrace),e.generateConst(t)}};function U(e,t=null){let n=new aE(e,t);return new Proxy(()=>{},{apply(e,t,r){return n.call(...r)},get(e,t,r){return Reflect.get(n,t,r)},set(e,t,r,i){return Reflect.set(n,t,r,i)}})}var oE=e=>{bT=e},sE=()=>bT,cE=(...e)=>bT.If(...e),lE=(...e)=>bT.Switch(...e);function uE(e){return bT&&bT.addToStack(e),e}z(`toStack`,uE);var dE=new XT(`color`),W=new XT(`float`,qT.float),G=new XT(`int`,qT.ints),K=new XT(`uint`,qT.uint),fE=new XT(`bool`,qT.bool),q=new XT(`vec2`),pE=new XT(`ivec2`),mE=new XT(`uvec2`),hE=new XT(`bvec2`),J=new XT(`vec3`),gE=new XT(`ivec3`),_E=new XT(`uvec3`),vE=new XT(`bvec3`),yE=new XT(`vec4`),bE=new XT(`ivec4`),xE=new XT(`uvec4`),SE=new XT(`bvec4`),CE=new XT(`mat2`),wE=new XT(`mat3`),TE=new XT(`mat4`),EE=(e=``)=>new vT(e,`string`),DE=e=>new vT(e,`ArrayBuffer`);z(`toColor`,dE),z(`toFloat`,W),z(`toInt`,G),z(`toUint`,K),z(`toBool`,fE),z(`toVec2`,q),z(`toIVec2`,pE),z(`toUVec2`,mE),z(`toBVec2`,hE),z(`toVec3`,J),z(`toIVec3`,gE),z(`toUVec3`,_E),z(`toBVec3`,vE),z(`toVec4`,yE),z(`toIVec4`,bE),z(`toUVec4`,xE),z(`toBVec4`,SE),z(`toMat2`,CE),z(`toMat3`,wE),z(`toMat4`,TE);var OE=rE(cT).setParameterLength(2),kE=(e,t)=>new lT(B(e),t),AE=(e,t)=>new pT(B(e),t);z(`element`,OE),z(`convert`,kE);var jE=e=>(j(`TSL: append() has been renamed to Stack().`,new Pw),uE(e));z(`append`,e=>(j(`TSL: .append() has been renamed to .toStack().`,new Pw),uE(e)));var ME=class extends sT{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 Iw(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)}},NE=(e,t)=>new ME(e,t),PE=(e,t)=>new ME(e,t,!0),FE=V(ME,`vec4`,`DiffuseColor`),IE=V(ME,`vec3`,`DiffuseContribution`),LE=V(ME,`vec3`,`EmissiveColor`),RE=V(ME,`float`,`Roughness`),zE=V(ME,`float`,`Metalness`),BE=V(ME,`float`,`Clearcoat`),VE=V(ME,`float`,`ClearcoatRoughness`),HE=V(ME,`vec3`,`Sheen`),UE=V(ME,`float`,`SheenRoughness`),WE=V(ME,`float`,`Iridescence`),GE=V(ME,`float`,`IridescenceIOR`),KE=V(ME,`float`,`IridescenceThickness`),qE=V(ME,`float`,`AlphaT`),JE=V(ME,`float`,`Anisotropy`),YE=V(ME,`vec3`,`AnisotropyT`),XE=V(ME,`vec3`,`AnisotropyB`),ZE=V(ME,`color`,`SpecularColor`),QE=V(ME,`color`,`SpecularColorBlended`),$E=V(ME,`float`,`SpecularF90`),eD=V(ME,`float`,`Shininess`),tD=V(ME,`vec4`,`Output`),nD=V(ME,`float`,`dashSize`),rD=V(ME,`float`,`gapSize`),iD=V(ME,`float`,`pointWidth`),aD=V(ME,`float`,`IOR`),oD=V(ME,`float`,`Transmission`),sD=V(ME,`float`,`Thickness`),cD=V(ME,`float`,`AttenuationDistance`),lD=V(ME,`color`,`AttenuationColor`),uD=V(ME,`float`,`Dispersion`),dD=class extends sT{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1,r=null){super(`string`),this.name=e,this.shared=t,this.order=n,this.updateType=r,this.isUniformGroup=!0}update(){this.needsUpdate=!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}},fD=(e,t=1,n=null)=>new dD(e,!1,t,n),pD=(e,t=0,n=null)=>new dD(e,!0,t,n),mD=pD(`frame`,0,Qw.FRAME),hD=pD(`render`,0,Qw.RENDER),gD=fD(`object`,1,Qw.OBJECT),_D=class extends gT{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=gD}setName(e){return this.name=e,this}label(e){return j(`TSL: "label()" has been deprecated. Use "setName()" instead.`,new Pw),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(t=>{let n=e(t,this);n!==void 0&&(this.value=n)},t)}getInputType(e){let t=super.getInputType(e);return t===`bool`&&(t=`uint`),t}generate(e,t){let n=this.getNodeType(e),r=this.getUniformHash(e),i=e.getNodeFromHash(r);i===void 0&&(e.setHashNode(this,r),i=this);let a=i.getInputType(e),o=e.getUniformFromNode(i,a,e.shaderStage,this.name||e.context.nodeName),s=e.getPropertyName(o);e.context.nodeName!==void 0&&delete e.context.nodeName;let c=s;if(n===`bool`){let t=e.getDataFromNode(this),r=t.propertyName;if(r===void 0){let i=e.getVarFromNode(this,null,`bool`);r=e.getPropertyName(i),t.propertyName=r,c=e.format(s,a,n),e.addLineFlowCode(`${r} = ${c}`,this)}c=r}return e.format(c,n,t)}},vD=(e,t)=>{let n=QT(t||e);if(n===e&&(e=qw(n)),e&&e.isNode===!0){let t=e.value;e.traverse(e=>{e.isConstNode===!0&&(t=e.value)}),e=t}return new _D(e,n)},yD=class extends uT{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}generateNodeType(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){let t=this.getNodeType(e);return e.generateArray(t,this.count,this.values)}},bD=(...e)=>{let t;if(e.length===1){let n=e[0];t=new yD(null,n.length,n)}else{let n=e[0],r=e[1];t=new yD(n,r)}return B(t)};z(`toArray`,(e,t)=>bD(Array(t).fill(e)));var xD=rE(class extends uT{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t,this.isAssignNode=!0}hasDependencies(){return!1}generateNodeType(e,t){return t===`void`?`void`:this.targetNode.getNodeType(e)}needsSplitAssign(e){let{targetNode:t}=this;if(e.isAvailable(`swizzleAssign`)===!1&&t.isSplitNode&&t.components.length>1){let n=e.getTypeLength(t.node.getNodeType(e));return iT.join(``).slice(0,n)!==t.components}return!1}setup(e){let{targetNode:t,sourceNode:n}=this,r=t.getScope(),i=e.getDataFromNode(r);i.assign=!0;let a=e.getNodeProperties(this);a.sourceNode=n,a.targetNode=t.context({assign:!0})}generate(e,t){let{targetNode:n,sourceNode:r}=e.getNodeProperties(this),i=this.needsSplitAssign(e),a=n.build(e),o=n.getNodeType(e),s=r.build(e,o),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=a);else if(i){let r=e.getVarFromNode(this,null,o),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node,l=c.node.context({assign:!0}).build(e);for(let t=0;t<c.components.length;t++){let n=c.components[t];e.addLineFlowCode(`${l}.${n} = ${i}[ ${t} ]`,this)}t!==`void`&&(u=a)}else u=`${a} = ${s}`,(t===`void`||c===`void`)&&(e.addLineFlowCode(u,this),t!==`void`&&(u=a));return l.initialized=!0,e.format(u,o,t)}}).setParameterLength(2);z(`assign`,xD);var SD=class extends uT{static get type(){return`FunctionCallNode`}constructor(e=null,t={}){super(),this.functionNode=e,this.parameters=t}setParameters(e){return this.parameters=e,this}getParameters(){return this.parameters}generateNodeType(e){return this.functionNode.getNodeType(e)}getMemberType(e,t){return this.functionNode.getMemberType(e,t)}generate(e){let t=[],n=this.functionNode,r=n.getInputs(e),i=this.parameters,a=(t,n)=>{let r=n.type,i=r===`pointer`,a;return a=i?`&`+t.build(e):t.build(e,r),a};if(Array.isArray(i)){if(i.length>r.length)M(`TSL: The number of provided parameters exceeds the expected number of inputs in 'Fn()'.`),i.length=r.length;else if(i.length<r.length)for(M(`TSL: The number of provided parameters is less than the expected number of inputs in 'Fn()'.`);i.length<r.length;)i.push(W(0));for(let e=0;e<i.length;e++)t.push(a(i[e],r[e]))}else for(let e of r){let n=i[e.name];n===void 0?(M(`TSL: Input '${e.name}' not found in \'Fn()\'.`),t.push(a(W(0),e))):t.push(a(n,e))}return`${n.build(e,`property`)}( ${t.join(`, `)} )`}},CD=(e,...t)=>(t=t.length>1||t[0]&&t[0].isNode===!0?nE(t):tE(t[0]),new SD(B(e),t));z(`call`,CD);var wD={"==":`equal`,"!=":`notEqual`,"<":`lessThan`,">":`greaterThan`,"<=":`lessThanEqual`,">=":`greaterThanEqual`,"%":`mod`},TD=class e extends uT{static get type(){return`OperatorNode`}constructor(t,n,r,...i){if(super(),i.length>0){let a=new e(t,n,r);for(let n=0;n<i.length-1;n++)a=new e(t,a,i[n]);n=a,r=i[i.length-1]}this.op=t,this.aNode=n,this.bNode=r,this.isOperatorNode=!0}getOperatorMethod(e,t){return e.getMethod(wD[this.op],t)}generateNodeType(e,t=null){let n=this.op,r=this.aNode,i=this.bNode,a=r.getNodeType(e),o=i?i.getNodeType(e):null;if(a===`void`||o===`void`)return t||`void`;if(n===`%`)return a;if(n===`~`||n===`&`||n===`|`||n===`^`||n===`>>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`){let t=Math.max(e.getTypeLength(a),e.getTypeLength(o));return t>1?`bvec${t}`:`bool`}else{if(e.isMatrix(a)){if(o===`float`)return a;if(e.isVector(o))return e.getVectorFromMatrix(a);if(e.isMatrix(o))return a}else if(e.isMatrix(o)){if(a===`float`)return o;if(e.isVector(a))return e.getVectorFromMatrix(o)}return e.getTypeLength(o)>e.getTypeLength(a)?o:a}}generate(e,t){let n=this.op,{aNode:r,bNode:i}=this,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i?i.getNodeType(e):null,n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`||n===`!=`?e.isVector(o)?s=o:e.isVector(s)?o=s:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):n===`%`?(o=a,s=e.isInteger(o)&&e.isInteger(s)?s:o):e.isMatrix(o)?s===`float`?s=`float`:e.isVector(s)?s=e.getVectorFromMatrix(o):e.isMatrix(s)||(o=s=a):o=e.isMatrix(s)?o===`float`?`float`:e.isVector(o)?e.getVectorFromMatrix(s):s=a:s=a);let c=r.build(e,o),l=i?i.build(e,s):null,u=e.getFunctionOperator(n);if(t!==`void`){let r=e.renderer.coordinateSystem===vn;if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`)return r&&e.isVector(o)?e.format(`${this.getOperatorMethod(e,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(n===`%`)return e.isInteger(s)?e.format(`( ${c} % ${l} )`,a,t):e.format(`${this.getOperatorMethod(e,a)}( ${c}, ${l} )`,a,t);if(n===`!`||n===`~`)return e.format(`(${n}${c})`,o,t);if(u)return e.format(`${u}( ${c}, ${l} )`,a,t);if(e.isMatrix(o)&&s===`float`)return e.format(`( ${l} ${n} ${c} )`,a,t);if(o===`float`&&e.isMatrix(s))return e.format(`${c} ${n} ${l}`,a,t);{let i=`( ${c} ${n} ${l} )`;return!r&&a===`bool`&&e.isVector(o)&&e.isVector(s)&&(i=`all${i}`),e.format(i,a,t)}}else if(o!==`void`)return u?e.format(`${u}( ${c}, ${l} )`,a,t):e.isMatrix(o)&&s===`float`?e.format(`${l} ${n} ${c}`,a,t):e.format(`${c} ${n} ${l}`,a,t)}serialize(e){super.serialize(e),e.op=this.op}deserialize(e){super.deserialize(e),this.op=e.op}},ED=H(TD,`+`).setParameterLength(2,1/0).setName(`add`),DD=H(TD,`-`).setParameterLength(2,1/0).setName(`sub`),OD=H(TD,`*`).setParameterLength(2,1/0).setName(`mul`),kD=H(TD,`/`).setParameterLength(2,1/0).setName(`div`),AD=H(TD,`%`).setParameterLength(2).setName(`mod`),jD=H(TD,`==`).setParameterLength(2).setName(`equal`),MD=H(TD,`!=`).setParameterLength(2).setName(`notEqual`),ND=H(TD,`<`).setParameterLength(2).setName(`lessThan`),PD=H(TD,`>`).setParameterLength(2).setName(`greaterThan`),FD=H(TD,`<=`).setParameterLength(2).setName(`lessThanEqual`),ID=H(TD,`>=`).setParameterLength(2).setName(`greaterThanEqual`),LD=H(TD,`&&`).setParameterLength(2,1/0).setName(`and`),RD=H(TD,`||`).setParameterLength(2,1/0).setName(`or`),zD=H(TD,`!`).setParameterLength(1).setName(`not`),BD=H(TD,`^^`).setParameterLength(2).setName(`xor`),VD=H(TD,`&`).setParameterLength(2).setName(`bitAnd`),HD=H(TD,`~`).setParameterLength(1).setName(`bitNot`),UD=H(TD,`|`).setParameterLength(2).setName(`bitOr`),WD=H(TD,`^`).setParameterLength(2).setName(`bitXor`),GD=H(TD,`<<`).setParameterLength(2).setName(`shiftLeft`),KD=H(TD,`>>`).setParameterLength(2).setName(`shiftRight`),qD=U(([e])=>(e.addAssign(1),e)),JD=U(([e])=>(e.subAssign(1),e)),YD=U(([e])=>{let t=G(e).toConst();return e.addAssign(1),t}),XD=U(([e])=>{let t=G(e).toConst();return e.subAssign(1),t});z(`add`,ED),z(`sub`,DD),z(`mul`,OD),z(`div`,kD),z(`mod`,AD),z(`equal`,jD),z(`notEqual`,MD),z(`lessThan`,ND),z(`greaterThan`,PD),z(`lessThanEqual`,FD),z(`greaterThanEqual`,ID),z(`and`,LD),z(`or`,RD),z(`not`,zD),z(`xor`,BD),z(`bitAnd`,VD),z(`bitNot`,HD),z(`bitOr`,UD),z(`bitXor`,WD),z(`shiftLeft`,GD),z(`shiftRight`,KD),z(`incrementBefore`,qD),z(`decrementBefore`,JD),z(`increment`,YD),z(`decrement`,XD);var ZD=(e,t)=>(j(`TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.`,new Pw),AD(G(e),G(t)));z(`modInt`,ZD);var Y=class e extends uT{static get type(){return`MathNode`}constructor(t,n,r=null,i=null){if(super(),(t===e.MAX||t===e.MIN)&&arguments.length>3){let a=new e(t,n,r);for(let n=2;n<arguments.length-1;n++)a=new e(t,a,arguments[n]);n=a,r=arguments[arguments.length-1],i=null}this.method=t,this.aNode=n,this.bNode=r,this.cNode=i,this.isMathNode=!0}getInputType(e){let t=this.aNode.getNodeType(e),n=this.bNode?this.bNode.getNodeType(e):null,r=this.cNode?this.cNode.getNodeType(e):null,i=e.isMatrix(t)?0:e.getTypeLength(t),a=e.isMatrix(n)?0:e.getTypeLength(n),o=e.isMatrix(r)?0:e.getTypeLength(r);return i>a&&i>o?t:a>o?n:o>i?r:t}generateNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL||n===e.ANY?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):this.getInputType(t)}setup(t){let{aNode:n,bNode:r,method:i}=this,a=null;if(i===e.ONE_MINUS)a=DD(1,n);else if(i===e.RECIPROCAL)a=kD(1,n);else if(i===e.DIFFERENCE)a=AO(DD(n,r));else if(i===e.TRANSFORM_DIRECTION){let e=n,i=r;t.isMatrix(e.getNodeType(t))?i=yE(J(i),0):e=yE(J(e),0);let o=OD(e,i).xyz;a=gO(o)}return a===null?super.setup(t):a}generate(t,n){if(t.getNodeProperties(this).outputNode)return super.generate(t,n);let r=this.method,i=this.getNodeType(t),a=this.getInputType(t),o=this.aNode,s=this.bNode,c=this.cNode,l=t.renderer.coordinateSystem;if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);{let u=[];return r===e.CROSS?u.push(o.build(t,i),s.build(t,i)):l===2e3&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l===2e3&&(r===e.MIN||r===e.MAX)?u.push(o.build(t,a),s.build(t,t.getTypeLength(s.getNodeType(t))===1?`float`:a)):r===e.REFRACT?u.push(o.build(t,a),s.build(t,a),c.build(t,`float`)):r===e.MIX?u.push(o.build(t,a),s.build(t,a),c.build(t,t.getTypeLength(c.getNodeType(t))===1?`float`:a)):(l===2001&&r===e.ATAN&&s!==null&&(r=`atan2`),t.shaderStage!==`fragment`&&(r===e.DFDX||r===e.DFDY)&&(j(`TSL: '${r}' is not supported in the ${t.shaderStage} stage.`,this.stackTrace),r=`/*`+r+`*/`),u.push(o.build(t,a)),s!==null&&u.push(s.build(t,a)),c!==null&&u.push(c.build(t,a))),t.format(`${t.getMethod(r,i)}( ${u.join(`, `)} )`,i,n)}}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};Y.ALL=`all`,Y.ANY=`any`,Y.RADIANS=`radians`,Y.DEGREES=`degrees`,Y.EXP=`exp`,Y.EXP2=`exp2`,Y.LOG=`log`,Y.LOG2=`log2`,Y.SQRT=`sqrt`,Y.INVERSE_SQRT=`inversesqrt`,Y.FLOOR=`floor`,Y.CEIL=`ceil`,Y.NORMALIZE=`normalize`,Y.FRACT=`fract`,Y.SIN=`sin`,Y.SINH=`sinh`,Y.COS=`cos`,Y.COSH=`cosh`,Y.TAN=`tan`,Y.TANH=`tanh`,Y.ASIN=`asin`,Y.ASINH=`asinh`,Y.ACOS=`acos`,Y.ACOSH=`acosh`,Y.ATAN=`atan`,Y.ATANH=`atanh`,Y.ABS=`abs`,Y.SIGN=`sign`,Y.LENGTH=`length`,Y.NEGATE=`negate`,Y.ONE_MINUS=`oneMinus`,Y.DFDX=`dFdx`,Y.DFDY=`dFdy`,Y.ROUND=`round`,Y.RECIPROCAL=`reciprocal`,Y.TRUNC=`trunc`,Y.FWIDTH=`fwidth`,Y.TRANSPOSE=`transpose`,Y.DETERMINANT=`determinant`,Y.INVERSE=`inverse`,Y.EQUALS=`equals`,Y.MIN=`min`,Y.MAX=`max`,Y.STEP=`step`,Y.REFLECT=`reflect`,Y.DISTANCE=`distance`,Y.DIFFERENCE=`difference`,Y.DOT=`dot`,Y.CROSS=`cross`,Y.POW=`pow`,Y.TRANSFORM_DIRECTION=`transformDirection`,Y.MIX=`mix`,Y.CLAMP=`clamp`,Y.REFRACT=`refract`,Y.SMOOTHSTEP=`smoothstep`,Y.FACEFORWARD=`faceforward`;var QD=W(1e-6),$D=W(1e6),eO=W(Math.PI),tO=W(Math.PI*2),nO=W(Math.PI*2),rO=W(Math.PI*.5),iO=H(Y,Y.ALL).setParameterLength(1),aO=H(Y,Y.ANY).setParameterLength(1),oO=H(Y,Y.RADIANS).setParameterLength(1),sO=H(Y,Y.DEGREES).setParameterLength(1),cO=H(Y,Y.EXP).setParameterLength(1),lO=H(Y,Y.EXP2).setParameterLength(1),uO=H(Y,Y.LOG).setParameterLength(1),dO=H(Y,Y.LOG2).setParameterLength(1),fO=H(Y,Y.SQRT).setParameterLength(1),pO=H(Y,Y.INVERSE_SQRT).setParameterLength(1),mO=H(Y,Y.FLOOR).setParameterLength(1),hO=H(Y,Y.CEIL).setParameterLength(1),gO=H(Y,Y.NORMALIZE).setParameterLength(1),_O=H(Y,Y.FRACT).setParameterLength(1),vO=H(Y,Y.SIN).setParameterLength(1),yO=H(Y,Y.SINH).setParameterLength(1),bO=H(Y,Y.COS).setParameterLength(1),xO=H(Y,Y.COSH).setParameterLength(1),SO=H(Y,Y.TAN).setParameterLength(1),CO=H(Y,Y.TANH).setParameterLength(1),wO=H(Y,Y.ASIN).setParameterLength(1),TO=H(Y,Y.ASINH).setParameterLength(1),EO=H(Y,Y.ACOS).setParameterLength(1),DO=H(Y,Y.ACOSH).setParameterLength(1),OO=H(Y,Y.ATAN).setParameterLength(1,2),kO=H(Y,Y.ATANH).setParameterLength(1),AO=H(Y,Y.ABS).setParameterLength(1),jO=H(Y,Y.SIGN).setParameterLength(1),MO=H(Y,Y.LENGTH).setParameterLength(1),NO=H(Y,Y.NEGATE).setParameterLength(1),PO=H(Y,Y.ONE_MINUS).setParameterLength(1),FO=H(Y,Y.DFDX).setParameterLength(1),IO=H(Y,Y.DFDY).setParameterLength(1),LO=H(Y,Y.ROUND).setParameterLength(1),RO=H(Y,Y.RECIPROCAL).setParameterLength(1),zO=H(Y,Y.TRUNC).setParameterLength(1),BO=H(Y,Y.FWIDTH).setParameterLength(1),VO=H(Y,Y.TRANSPOSE).setParameterLength(1),HO=H(Y,Y.DETERMINANT).setParameterLength(1),UO=H(Y,Y.INVERSE).setParameterLength(1),WO=H(Y,Y.MIN).setParameterLength(2,1/0),GO=H(Y,Y.MAX).setParameterLength(2,1/0),KO=H(Y,Y.STEP).setParameterLength(2),qO=H(Y,Y.REFLECT).setParameterLength(2),JO=H(Y,Y.DISTANCE).setParameterLength(2),YO=H(Y,Y.DIFFERENCE).setParameterLength(2),XO=H(Y,Y.DOT).setParameterLength(2),ZO=H(Y,Y.CROSS).setParameterLength(2),QO=H(Y,Y.POW).setParameterLength(2),$O=e=>OD(e,e),ek=e=>OD(e,e,e),tk=e=>OD(e,e,e,e),nk=H(Y,Y.TRANSFORM_DIRECTION).setParameterLength(2),rk=e=>OD(jO(e),QO(AO(e),1/3)),ik=e=>XO(e,e),ak=H(Y,Y.MIX).setParameterLength(3),ok=(e,t=0,n=1)=>new Y(Y.CLAMP,B(e),B(t),B(n)),sk=e=>ok(e),ck=H(Y,Y.REFRACT).setParameterLength(3),lk=H(Y,Y.SMOOTHSTEP).setParameterLength(3),uk=H(Y,Y.FACEFORWARD).setParameterLength(3),dk=U(([e])=>_O(vO(AD(XO(e.xy,q(12.9898,78.233)),eO)).mul(43758.5453))),fk=(e,t,n)=>ak(t,n,e),pk=(e,t,n)=>lk(t,n,e),mk=(e,t)=>KO(t,e),hk=uk,gk=pO;z(`all`,iO),z(`any`,aO),z(`radians`,oO),z(`degrees`,sO),z(`exp`,cO),z(`exp2`,lO),z(`log`,uO),z(`log2`,dO),z(`sqrt`,fO),z(`inverseSqrt`,pO),z(`floor`,mO),z(`ceil`,hO),z(`normalize`,gO),z(`fract`,_O),z(`sin`,vO),z(`sinh`,yO),z(`cos`,bO),z(`cosh`,xO),z(`tan`,SO),z(`tanh`,CO),z(`asin`,wO),z(`asinh`,TO),z(`acos`,EO),z(`acosh`,DO),z(`atan`,OO),z(`atanh`,kO),z(`abs`,AO),z(`sign`,jO),z(`length`,MO),z(`lengthSq`,ik),z(`negate`,NO),z(`oneMinus`,PO),z(`dFdx`,FO),z(`dFdy`,IO),z(`round`,LO),z(`reciprocal`,RO),z(`trunc`,zO),z(`fwidth`,BO),z(`min`,WO),z(`max`,GO),z(`step`,mk),z(`reflect`,qO),z(`distance`,JO),z(`dot`,XO),z(`cross`,ZO),z(`pow`,QO),z(`pow2`,$O),z(`pow3`,ek),z(`pow4`,tk),z(`transformDirection`,nk),z(`mix`,fk),z(`clamp`,ok),z(`refract`,ck),z(`smoothstep`,pk),z(`faceForward`,uk),z(`difference`,YO),z(`saturate`,sk),z(`cbrt`,rk),z(`transpose`,VO),z(`determinant`,HO),z(`inverse`,UO),z(`rand`,dk);var _k=rE(class extends sT{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}generateNodeType(e){let{ifNode:t,elseNode:n}=e.getNodeProperties(this);if(t===void 0)return e.flowBuildStage(this,`setup`),this.getNodeType(e);let r=t.getNodeType(e);if(n!==null){let t=n.getNodeType(e);if(e.getTypeLength(t)>e.getTypeLength(r))return t}return r}setup(e){let t=this.condNode,n=this.ifNode.isolate(),r=this.elseNode?this.elseNode.isolate():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.context.uniformFlow,o=e.getNodeProperties(this);o.condNode=t,o.ifNode=a?n:n.context({nodeBlock:n}),o.elseNode=r?a?r:r.context({nodeBlock:r}):null}generate(e,t){let n=this.getNodeType(e),r=e.getDataFromNode(this);if(r.nodeProperty!==void 0)return r.nodeProperty;let{condNode:i,ifNode:a,elseNode:o}=e.getNodeProperties(this),s=e.currentFunctionNode,c=t!==`void`,l=c?NE(n).build(e):``;r.nodeProperty=l;let u=i.build(e,`bool`);if(e.context.uniformFlow&&o!==null){let r=a.build(e,n),i=o.build(e,n),s=e.getTernary(u,r,i);return e.format(s,n,t)}e.addFlowCode(`\n${e.tab}if ( ${u} ) {\n\n`).addFlowTab();let d=a.build(e,n);if(d&&(c?d=l+` = `+d+`;`:(d=`return `+d+`;`,s===null&&(j(`TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values.`,this.stackTrace),d=`// `+d))),e.removeFlowTab().addFlowCode(e.tab+` `+d+`
4112
+ `)}`}};function Fw(e,t=0){let n=3735928559^t,r=1103547991^t;if(Array.isArray(e))for(let t=0,i;t<e.length;t++)i=e[t],n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);else for(let t=0,i;t<e.length;t++)i=e.charCodeAt(t),n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}var Iw=e=>Fw(e),Lw=e=>Fw(e),Rw=(...e)=>Fw(e),zw=new Map([[1,`float`],[2,`vec2`],[3,`vec3`],[4,`vec4`],[9,`mat3`],[16,`mat4`]]),Bw=new WeakMap;function Vw(e){return zw.get(e)}function Hw(e){if(/[iu]?vec\d/.test(e))return e.startsWith(`ivec`)?Int32Array:e.startsWith(`uvec`)?Uint32Array:Float32Array;if(/mat\d/.test(e)||/float/.test(e))return Float32Array;if(/uint/.test(e))return Uint32Array;if(/int/.test(e))return Int32Array;throw Error(`THREE.NodeUtils: Unsupported type: ${e}`)}function Uw(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 9;if(/mat4/.test(e))return 16;M(`TSL: Unsupported type: ${e}`,new Pw)}function Ww(e){if(/float|int|uint/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 12;if(/mat4/.test(e))return 16;M(`TSL: Unsupported type: ${e}`,new Pw)}function Gw(e){if(/float|int|uint/.test(e))return 4;if(/vec2/.test(e))return 8;if(/vec3/.test(e)||/vec4/.test(e))return 16;if(/mat2/.test(e))return 8;if(/mat3/.test(e)||/mat4/.test(e))return 16;M(`TSL: Unsupported type: ${e}`,new Pw)}function Kw(e){if(e==null)return null;let t=typeof e;return e.isNode===!0?`node`:t===`number`?`float`:t===`boolean`?`bool`:t===`string`?`string`:t===`function`?`shader`:e.isVector2===!0?`vec2`:e.isVector3===!0?`vec3`:e.isVector4===!0?`vec4`:e.isMatrix2===!0?`mat2`:e.isMatrix3===!0?`mat3`:e.isMatrix4===!0?`mat4`:e.isColor===!0?`color`:e instanceof ArrayBuffer?`ArrayBuffer`:null}function qw(e,...t){let n=e?e.slice(-4):void 0;return t.length===1&&(n===`vec2`?t=[t[0],t[0]]:n===`vec3`?t=[t[0],t[0],t[0]]:n===`vec4`&&(t=[t[0],t[0],t[0],t[0]])),e===`color`?new I(...t):n===`vec2`?new N(...t):n===`vec3`?new P(...t):n===`vec4`?new Nr(...t):n===`mat2`?new If(...t):n===`mat3`?new _r(...t):n===`mat4`?new F(...t):e===`bool`?t[0]||!1:e===`float`||e===`int`||e===`uint`?t[0]||0:e===`string`?t[0]||``:e===`ArrayBuffer`?Xw(t[0]):null}function Jw(e){let t=Bw.get(e);return t===void 0&&(t={},Bw.set(e,t)),t}function Yw(e){let t=``,n=new Uint8Array(e);for(let e=0;e<n.length;e++)t+=String.fromCharCode(n[e]);return btoa(t)}function Xw(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0)).buffer}var Zw={VERTEX:`vertex`,FRAGMENT:`fragment`},Qw={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},$w={BOOLEAN:`bool`,INTEGER:`int`,FLOAT:`float`,VECTOR2:`vec2`,VECTOR3:`vec3`,VECTOR4:`vec4`,MATRIX2:`mat2`,MATRIX3:`mat3`,MATRIX4:`mat4`},eT={READ_ONLY:`readOnly`,WRITE_ONLY:`writeOnly`,READ_WRITE:`readWrite`},tT=[`fragment`,`vertex`],nT=[`setup`,`analyze`,`generate`],rT=[...tT,`compute`],iT=[`x`,`y`,`z`,`w`],aT={analyze:`setup`,generate:`analyze`},oT=0,sT=class e extends Bn{static get type(){return`Node`}constructor(t=null){super(),this.nodeType=t,this.updateType=Qw.NONE,this.updateBeforeType=Qw.NONE,this.updateAfterType=Qw.NONE,this.version=0,this.name=``,this.global=!1,this.parents=!1,this.isNode=!0,this._beforeNodes=null,this._cacheKey=null,this._uuid=null,this._cacheKeyVersion=0,this.id=oT++,this.stackTrace=null,e.captureStackTrace===!0&&(this.stackTrace=new Pw)}set needsUpdate(e){e===!0&&this.version++}get uuid(){return this._uuid===null&&(this._uuid=pr.generateUUID()),this._uuid}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,Qw.FRAME)}onRenderUpdate(e){return this.onUpdate(e,Qw.RENDER)}onObjectUpdate(e){return this.onUpdate(e,Qw.OBJECT)}onReference(e){return this.updateReference=e.bind(this),this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of this._getChildren())yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}_getChildren(e=new Set){let t=[];e.add(this);for(let n of Object.getOwnPropertyNames(this)){let r=this[n];if(!(n.startsWith(`_`)===!0||e.has(r))){if(Array.isArray(r)===!0)for(let e=0;e<r.length;e++){let i=r[e];i&&i.isNode===!0&&t.push({property:n,index:e,childNode:i})}else if(r&&r.isNode===!0)t.push({property:n,childNode:r});else if(r&&Object.getPrototypeOf(r)===Object.prototype)for(let e in r){if(e.startsWith(`_`)===!0)continue;let i=r[e];i&&i.isNode===!0&&t.push({property:n,index:e,childNode:i})}}}return t}getCacheKey(e=!1,t=null){if(e||=this.version!==this._cacheKeyVersion,e===!0||this._cacheKey===null){t===null&&(t=new Set);let n=[];for(let{property:r,childNode:i}of this._getChildren(t))n.push(Iw(r.slice(0,-4)),i.getCacheKey(e,t));this._cacheKey=Rw(Lw(n),this.customCacheKey()),this._cacheKeyVersion=this.version}return this._cacheKey}customCacheKey(){return this.id}getScope(){return this}getHash(){return String(this.id)}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getMemberType(){return`void`}getNodeType(e,t=null){let n=e.getDataFromNode(this),r;return t===null?(r=n.type,r===void 0&&(r=this.generateNodeType(e),n.type=r)):(n.typeFromOutput=n.typeFromOutput||{},r=n.typeFromOutput[t],r===void 0&&(r=this.generateNodeType(e,t),n.typeFromOutput[t]=r)),r}generateNodeType(e,t=null){let n=e.getNodeProperties(this);return n.outputNode?n.outputNode.getNodeType(e,t):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}getArrayCount(){return null}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+n++]=e;return t.outputNode||null}analyze(e,t=null){let n=e.increaseUsage(this);if(this.parents===!0){let n=e.getDataFromNode(this,`any`);n.stages=n.stages||{},n.stages[e.shaderStage]=n.stages[e.shaderStage]||[],n.stages[e.shaderStage].push(t)}if(n===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e,this)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){j(`Abstract function.`)}updateAfter(){j(`Abstract function.`)}update(){j(`Abstract function.`)}before(e){return this._beforeNodes===null&&(this._beforeNodes=[]),this._beforeNodes.push(e),this}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);if(this._beforeNodes!==null){let n=this._beforeNodes;this._beforeNodes=null;for(let r of n)r.build(e,t);this._beforeNodes=n}let r=e.getDataFromNode(this);r.buildStages=r.buildStages||{},r.buildStages[e.buildStage]=!0;let i=aT[e.buildStage];if(i&&r.buildStages[i]!==!0){let t=e.getBuildStage();e.setBuildStage(i),this.build(e),e.setBuildStage(t)}e.addChain(this);let a=null,o=e.getBuildStage();if(o===`setup`){e.addNode(this),this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){t.initialized=!0,t.outputNode=this.setup(e)||t.outputNode||null;for(let n of Object.values(t))if(n&&n.isNode===!0){if(n.parents===!0){let t=e.getNodeProperties(n);t.parents=t.parents||[],t.parents.push(this)}n.build(e)}e.addSequentialNode(this)}a=t.outputNode}else if(o===`analyze`)this.analyze(e,t);else if(o===`generate`){if(this.generate.length<2){let n=this.getNodeType(e),r=e.getDataFromNode(this);a=r.snippet,a===void 0?r.generated===void 0?(r.generated=!0,a=this.generate(e)||``,r.snippet=a):(j(`Node: Recursion detected.`,this),a=`/* Recursion detected. */`):r.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),a=e.format(a,n,t)}else a=this.generate(e,t)||``;a===``&&t!==null&&t!==`void`&&t!==`OutputType`&&(M(`TSL: Invalid generated code, expected a "${t}".`),a=e.generateConst(t))}return e.removeChain(this),a}getSerializeChildren(){return this._getChildren()}serialize(e){let t=this.getSerializeChildren(),n={};for(let{property:r,index:i,childNode:a}of t)i===void 0?n[r]=a.toJSON(e.meta).uuid:(n[r]===void 0&&(n[r]=Number.isInteger(i)?[]:{}),n[r][i]=a.toJSON(e.meta).uuid);Object.keys(n).length>0&&(e.inputNodes=n)}deserialize(e){if(e.inputNodes!==void 0){let t=e.meta.nodes;for(let n in e.inputNodes)if(Array.isArray(e.inputNodes[n])){let r=[];for(let i of e.inputNodes[n])r.push(t[i]);this[n]=r}else if(typeof e.inputNodes[n]==`object`){let r={};for(let i in e.inputNodes[n])r[i]=t[e.inputNodes[n][i]];this[n]=r}else{let r=e.inputNodes[n];this[n]=t[r]}}}toJSON(e){let{uuid:t,type:n}=this,r=e===void 0||typeof e==`string`;r&&(e={textures:{},images:{},nodes:{}});let i=e.nodes[t];i===void 0&&(i={uuid:t,type:n,meta:e,metadata:{version:4.7,type:`Node`,generator:`Node.toJSON`}},r!==!0&&(e.nodes[i.uuid]=i),this.serialize(i),delete i.meta);function a(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(r){let t=a(e.textures),n=a(e.images),r=a(e.nodes);t.length>0&&(i.textures=t),n.length>0&&(i.images=n),r.length>0&&(i.nodes=r)}return i}};sT.captureStackTrace=!1;var cT=class extends sT{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}generateNodeType(e){return this.node.getElementType(e)}getMemberType(e,t){return this.node.getMemberType(e,t)}generate(e){let t=this.indexNode.getNodeType(e);return`${this.node.build(e)}[ ${this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:`uint`)} ]`}},lT=class extends sT{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}generateNodeType(e){let t=this.node.getNodeType(e),n=null;for(let 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){let n=this.node,r=this.getNodeType(e),i=n.build(e,r);return e.format(i,r,t)}},uT=class extends sT{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`){let n=e.getVectorType(this.getNodeType(e,t)),r=e.getDataFromNode(this);if(r.propertyName!==void 0)return e.format(r.propertyName,n,t);if(n!==`void`&&t!==`void`&&this.hasDependencies(e)){let i=super.build(e,n),a=e.getVarFromNode(this,null,n),o=e.getPropertyName(a);return e.addLineFlowCode(`${o} = ${i}`,this),r.snippet=i,r.propertyName=o,e.format(r.propertyName,n,t)}}return super.build(e,t)}},dT=class extends uT{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}generateNodeType(e){return this.nodeType===null?e.getTypeFromLength(this.nodes.reduce((t,n)=>t+e.getTypeLength(n.getNodeType(e)),0)):e.getVectorType(this.nodeType)}generate(e,t){let n=this.getNodeType(e),r=e.getTypeLength(n),i=this.nodes,a=e.getComponentType(n),o=[],s=0;for(let t of i){if(s>=r){M(`TSL: Length of parameters exceeds maximum length of function '${n}()' type.`,this.stackTrace);break}let i=t.getNodeType(e),c=e.getTypeLength(i),l;if(s+c>r&&(M(`TSL: Length of '${n}()' data exceeds maximum length of output type.`,this.stackTrace),c=r-s,i=e.getTypeFromLength(c)),s+=c,l=t.build(e,i),e.getComponentType(i)!==a){let t=e.getTypeFromLength(c,a);l=e.format(l,i,t)}o.push(l)}let c=`${e.getType(n)}( ${o.join(`, `)} )`;return e.format(c,n,t)}},fT=iT.join(``),pT=class extends sT{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(let t of this.components)e=Math.max(iT.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}generateNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}getScope(){return this.node.getScope()}generate(e,t){let n=this.node,r=e.getTypeLength(n.getNodeType(e)),i=null;if(r>1){let a=null;this.getVectorLength()>=r&&(a=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));let o=n.build(e,a);i=this.components.length===r&&this.components===fT.slice(0,this.components.length)?e.format(o,a,t):e.format(`${o}.${this.components}`,this.getNodeType(e),t)}else i=n.build(e,t);return i}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}},mT=class extends uT{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getComponentType(r.getNodeType(e)),o=e.getTypeFromLength(n.length,a),s=r.build(e,o),c=t.build(e,i),l=e.getTypeLength(i),u=[];for(let e=0;e<l;e++){let t=iT[e];t===n[0]?(u.push(s),e+=n.length-1):u.push(c+`.`+t)}return`${e.getType(i)}( ${u.join(`, `)} )`}},hT=class extends uT{static get type(){return`FlipNode`}constructor(e,t){super(),this.sourceNode=e,this.components=t}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{components:t,sourceNode:n}=this,r=this.getNodeType(e),i=n.build(e),a=e.getVarFromNode(this),o=e.getPropertyName(a);e.addLineFlowCode(o+` = `+i,this);let s=e.getTypeLength(r),c=[],l=0;for(let e=0;e<s;e++){let n=iT[e];n===t[l]?(c.push(`1.0 - `+(o+`.`+n)),l++):c.push(o+`.`+n)}return`${e.getType(r)}( ${c.join(`, `)} )`}},gT=class extends sT{static get type(){return`InputNode`}constructor(e,t=null){super(t),this.isInputNode=!0,this.value=e,this.precision=null}generateNodeType(){return this.nodeType===null?Kw(this.value):this.nodeType}getInputType(e){return this.getNodeType(e)}setPrecision(e){return this.precision=e,this}serialize(e){super.serialize(e),e.value=this.value,this.value&&this.value.toArray&&(e.value=this.value.toArray()),e.valueType=Kw(this.value),e.nodeType=this.nodeType,e.valueType===`ArrayBuffer`&&(e.value=Yw(e.value)),e.precision=this.precision}deserialize(e){super.deserialize(e),this.nodeType=e.nodeType,this.value=Array.isArray(e.value)?qw(e.valueType,...e.value):e.value,this.precision=e.precision||null,this.value&&this.value.fromArray&&(this.value=this.value.fromArray(e.value))}generate(){j(`Abstract function.`)}},_T=/float|u?int/,vT=class extends gT{static get type(){return`ConstNode`}constructor(e,t=null){super(e,t),this.isConstNode=!0}generateConst(e){return e.generateConst(this.getNodeType(e),this.value)}generate(e,t){let n=this.getNodeType(e);return _T.test(n)&&_T.test(t)?e.generateConst(t,this.value):e.format(this.generateConst(e),n,t)}},yT=class extends sT{static get type(){return`MemberNode`}constructor(e,t){super(),this.structNode=e,this.property=t,this.isMemberNode=!0}hasMember(e){return this.structNode.isMemberNode&&this.structNode.hasMember(e)===!1?!1:this.structNode.getMemberType(e,this.property)!==`void`}generateNodeType(e){return this.hasMember(e)===!1?`float`:this.structNode.getMemberType(e,this.property)}getMemberType(e,t){if(this.hasMember(e)===!1)return`float`;let n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}generate(e){if(this.hasMember(e)===!1){j(`TSL: Member "${this.property}" does not exist in struct.`,this.stackTrace);let t=this.getNodeType(e);return e.generateConst(t)}return this.structNode.build(e)+`.`+this.property}},bT=null,xT=new Map;function z(e,t){if(xT.has(e)){j(`TSL: Redefinition of method chaining '${e}'.`);return}if(typeof t!=`function`)throw Error(`THREE.TSL: Node element ${e} is not a function`);xT.set(e,t),e!==`assign`&&(sT.prototype[e]=function(...e){return this.isStackNode?this.addToStack(t(...e)):t(this,...e)},sT.prototype[e+`Assign`]=function(...e){return this.isStackNode?this.assign(e[0],t(...e)):this.assign(t(this,...e))})}var ST=e=>e.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),CT=e=>ST(e).split(``).sort().join(``);sT.prototype.assign=function(...e){if(this.isStackNode!==!0)return bT===null?M(`TSL: No stack defined for assign operation. Make sure the assign is inside a Fn().`,new Pw):bT.assign(this,...e),this;{let t=xT.get(`assign`);return this.addToStack(t(...e))}},sT.prototype.toVarIntent=function(){return this},sT.prototype.get=function(e){return new yT(this,e)};var wT={};function TT(e,t,n){wT[e]=wT[t]=wT[n]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new pT(this,e),this._cache[e]=t),t},set(t){this[e].assign(B(t))}};let r=e.toUpperCase(),i=t.toUpperCase(),a=n.toUpperCase();sT.prototype[`set`+r]=sT.prototype[`set`+i]=sT.prototype[`set`+a]=function(t){let n=CT(e);return new mT(this,n,B(t))},sT.prototype[`flip`+r]=sT.prototype[`flip`+i]=sT.prototype[`flip`+a]=function(){let t=CT(e);return new hT(this,t)}}var ET=[`x`,`y`,`z`,`w`],DT=[`r`,`g`,`b`,`a`],OT=[`s`,`t`,`p`,`q`];for(let e=0;e<4;e++){let t=ET[e],n=DT[e],r=OT[e];TT(t,n,r);for(let i=0;i<4;i++){t=ET[e]+ET[i],n=DT[e]+DT[i],r=OT[e]+OT[i],TT(t,n,r);for(let a=0;a<4;a++){t=ET[e]+ET[i]+ET[a],n=DT[e]+DT[i]+DT[a],r=OT[e]+OT[i]+OT[a],TT(t,n,r);for(let o=0;o<4;o++)t=ET[e]+ET[i]+ET[a]+ET[o],n=DT[e]+DT[i]+DT[a]+DT[o],r=OT[e]+OT[i]+OT[a]+OT[o],TT(t,n,r)}}}for(let e=0;e<32;e++)wT[e]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new cT(this,new vT(e,`uint`)),this._cache[e]=t),t},set(t){this[e].assign(B(t))}};Object.defineProperties(sT.prototype,wT);var kT=new WeakMap,AT=function(e,t=null){let n=Kw(e);return n===`node`?e:t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`?B(YT(e,t)):n===`shader`?e.isFn?e:U(e):e},jT=function(e,t=null){for(let n in e)e[n]=B(e[n],t);return e},MT=function(e,t=null){let n=e.length;for(let r=0;r<n;r++)e[r]=B(e[r],t);return e},NT=function(e,t=null,n=null,r=null){function i(e){return r===null?e=B(e):(e=B(Object.assign(e,r)),r.intent===!0&&(e=e.toVarIntent())),e}let a,o=t,s,c;function l(t){let n;return n=o?/[a-z]/i.test(o)?o+`()`:o:e.type,s!==void 0&&t.length<s?(M(`TSL: "${n}" parameter length is less than minimum required.`,new Pw),t.concat(Array(s-t.length).fill(0))):c!==void 0&&t.length>c?(M(`TSL: "${n}" parameter length exceeds limit.`,new Pw),t.slice(0,c)):t}return t===null?a=(...t)=>i(new e(...nE(l(t)))):n===null?a=(...n)=>i(new e(t,...nE(l(n)))):(n=B(n),a=(...r)=>i(new e(t,...nE(l(r)),n))),a.setParameterLength=(...e)=>(e.length===1?s=c=e[0]:e.length===2&&([s,c]=e),a),a.setName=e=>(o=e,a),a},PT=function(e,...t){return new e(...nE(t))},FT=class extends sT{constructor(e,t){super(),this.shaderNode=e,this.rawInputs=t,this.isShaderCallNodeInternal=!0}generateNodeType(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){let{shaderNode:t,rawInputs:n}=this,r=e.getNodeProperties(t),i=e.getClosestSubBuild(t.subBuilds)||``,a=i||`default`;if(r[a])return r[a];let o=e.subBuildFn,s=e.fnCall;e.subBuildFn=i,e.fnCall=this;let c=null;if(t.layout){let r=kT.get(e.constructor);r===void 0&&(r=new WeakMap,kT.set(e.constructor,r));let i=r.get(t);i===void 0&&(i=B(e.buildFunctionNode(t)),r.set(t,i)),e.addInclude(i);let a=n?IT(n):null;c=B(i.call(a))}else{let r=new Proxy(e,{get:(e,t,n)=>{let r;return r=Symbol.iterator===t?function*(){yield void 0}:Reflect.get(e,t,n),r}}),i=n?LT(n):null,a=Array.isArray(n)?n.length>0:n!==null,o=t.jsFunc;c=B(a||o.length>1?o(i,r):o(r))}return e.subBuildFn=o,e.fnCall=s,t.once&&(r[a]=c),c}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){let 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,r=e.getBuildStage(),i=e.getNodeProperties(this),a=e.getSubBuildOutput(this),o=this.getOutputNode(e),s=e.fnCall;if(e.fnCall=this,r===`setup`){let t=e.getSubBuildProperty(`initialized`,this);if(i[t]!==!0&&(i[t]=!0,i[a]=this.getOutputNode(e),i[a].build(e),this.shaderNode.subBuilds))for(let t of e.chaining){let n=e.getDataFromNode(t,`any`);n.subBuilds=n.subBuilds||new Set;for(let e of this.shaderNode.subBuilds)n.subBuilds.add(e)}n=i[a]}else r===`analyze`?o.build(e,t):r===`generate`&&(n=o.build(e,t)||``);return e.fnCall=s,n}};function IT(e){let t;return tE(e),t=e[0]&&(e[0].isNode||Object.getPrototypeOf(e[0])!==Object.prototype)?[...e]:e[0],t}function LT(e){let t=0;return tE(e),new Proxy(e,{get:(n,r,i)=>{let a;if(r===`length`)return a=e.length,a;if(Symbol.iterator===r)a=function*(){for(let t of e)yield B(t)};else{if(e.length>0)if(Object.getPrototypeOf(e[0])===Object.prototype){let n=e[0];a=n[r]===void 0?n[t++]:Reflect.get(n,r,i)}else e[0]instanceof sT&&(a=e[r]===void 0?e[t++]:Reflect.get(e,r,i));else a=Reflect.get(n,r,i);a=B(a)}return a}})}var RT=class extends sT{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 FT(this,e)}setup(){return this.call()}},zT=[!1,!0],BT=[0,1,2,3],VT=[-1,-2],HT=[.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],UT=new Map;for(let e of zT)UT.set(e,new vT(e));var WT=new Map;for(let e of BT)WT.set(e,new vT(e,`uint`));var GT=new Map([...WT].map(e=>new vT(e.value,`int`)));for(let e of VT)GT.set(e,new vT(e,`int`));var KT=new Map([...GT].map(e=>new vT(e.value)));for(let e of HT)KT.set(e,new vT(e));for(let e of HT)KT.set(-e,new vT(-e));var qT={bool:UT,uint:WT,ints:GT,float:KT},JT=new Map([...UT,...KT]),YT=(e,t)=>JT.has(e)?JT.get(e):e.isNode===!0?e:new vT(e,t),XT=function(e,t=null){return(...n)=>{for(let t of n)if(t===void 0)return M(`TSL: Invalid parameter for the type "${e}".`,new Pw),new vT(0,e);if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>{let t=typeof e;return t!==`object`&&t!==`function`}))&&(n=[qw(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return eE(t.get(n[0]));if(n.length===1){let t=YT(n[0],e);return t.nodeType===e?eE(t):eE(new lT(t,e))}return eE(new dT(n.map(e=>YT(e)),e))}};function ZT(e){return e&&e.isNode&&e.traverse(t=>{t.isConstNode&&(e=t.value)}),!!e}var QT=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function $T(e,t){return new RT(e,t)}var B=(e,t=null)=>AT(e,t),eE=(e,t=null)=>B(e,t).toVarIntent(),tE=(e,t=null)=>new jT(e,t),nE=(e,t=null)=>new MT(e,t),rE=(e,t=null,n=null,r=null)=>new NT(e,t,n,r),V=(e,...t)=>new PT(e,...t),H=(e,t=null,n=null,r={})=>new NT(e,t,n,{...r,intent:!0}),iE=0,aE=class extends sT{constructor(e,t=null){super();let n=null;t!==null&&(typeof t==`object`?n=t.return:(typeof t==`string`?n=t:M(`TSL: Invalid layout type.`,new Pw),t=null)),this.shaderNode=new $T(e,n),t!==null&&this.setLayout(t),this.isFn=!0}setLayout(e){let t=this.shaderNode.nodeType;if(typeof e.inputs!=`object`){let n={name:`fn`+iE++,type:t,inputs:[]};for(let t in e)t!==`return`&&n.inputs.push({name:t,type:e[t]});e=n}return this.shaderNode.setLayout(e),this}generateNodeType(e){return this.shaderNode.getNodeType(e)||`float`}call(...e){let 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){let t=this.getNodeType(e);return M(`TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".`,this.stackTrace),e.generateConst(t)}};function U(e,t=null){let n=new aE(e,t);return new Proxy(()=>{},{apply(e,t,r){return n.call(...r)},get(e,t,r){return Reflect.get(n,t,r)},set(e,t,r,i){return Reflect.set(n,t,r,i)}})}var oE=e=>{bT=e},sE=()=>bT,cE=(...e)=>bT.If(...e),lE=(...e)=>bT.Switch(...e);function uE(e){return bT&&bT.addToStack(e),e}z(`toStack`,uE);var dE=new XT(`color`),W=new XT(`float`,qT.float),G=new XT(`int`,qT.ints),K=new XT(`uint`,qT.uint),fE=new XT(`bool`,qT.bool),q=new XT(`vec2`),pE=new XT(`ivec2`),mE=new XT(`uvec2`),hE=new XT(`bvec2`),J=new XT(`vec3`),gE=new XT(`ivec3`),_E=new XT(`uvec3`),vE=new XT(`bvec3`),yE=new XT(`vec4`),bE=new XT(`ivec4`),xE=new XT(`uvec4`),SE=new XT(`bvec4`),CE=new XT(`mat2`),wE=new XT(`mat3`),TE=new XT(`mat4`),EE=(e=``)=>new vT(e,`string`),DE=e=>new vT(e,`ArrayBuffer`);z(`toColor`,dE),z(`toFloat`,W),z(`toInt`,G),z(`toUint`,K),z(`toBool`,fE),z(`toVec2`,q),z(`toIVec2`,pE),z(`toUVec2`,mE),z(`toBVec2`,hE),z(`toVec3`,J),z(`toIVec3`,gE),z(`toUVec3`,_E),z(`toBVec3`,vE),z(`toVec4`,yE),z(`toIVec4`,bE),z(`toUVec4`,xE),z(`toBVec4`,SE),z(`toMat2`,CE),z(`toMat3`,wE),z(`toMat4`,TE);var OE=rE(cT).setParameterLength(2),kE=(e,t)=>new lT(B(e),t),AE=(e,t)=>new pT(B(e),t);z(`element`,OE),z(`convert`,kE);var jE=e=>(j(`TSL: append() has been renamed to Stack().`,new Pw),uE(e));z(`append`,e=>(j(`TSL: .append() has been renamed to .toStack().`,new Pw),uE(e)));var ME=class extends sT{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 Iw(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)}},NE=(e,t)=>new ME(e,t),PE=(e,t)=>new ME(e,t,!0),FE=V(ME,`vec4`,`DiffuseColor`),IE=V(ME,`vec3`,`DiffuseContribution`),LE=V(ME,`vec3`,`EmissiveColor`),RE=V(ME,`float`,`Roughness`),zE=V(ME,`float`,`Metalness`),BE=V(ME,`float`,`Clearcoat`),VE=V(ME,`float`,`ClearcoatRoughness`),HE=V(ME,`vec3`,`Sheen`),UE=V(ME,`float`,`SheenRoughness`),WE=V(ME,`float`,`Iridescence`),GE=V(ME,`float`,`IridescenceIOR`),KE=V(ME,`float`,`IridescenceThickness`),qE=V(ME,`float`,`AlphaT`),JE=V(ME,`float`,`Anisotropy`),YE=V(ME,`vec3`,`AnisotropyT`),XE=V(ME,`vec3`,`AnisotropyB`),ZE=V(ME,`color`,`SpecularColor`),QE=V(ME,`color`,`SpecularColorBlended`),$E=V(ME,`float`,`SpecularF90`),eD=V(ME,`float`,`Shininess`),tD=V(ME,`vec4`,`Output`),nD=V(ME,`float`,`dashSize`),rD=V(ME,`float`,`gapSize`),iD=V(ME,`float`,`pointWidth`),aD=V(ME,`float`,`IOR`),oD=V(ME,`float`,`Transmission`),sD=V(ME,`float`,`Thickness`),cD=V(ME,`float`,`AttenuationDistance`),lD=V(ME,`color`,`AttenuationColor`),uD=V(ME,`float`,`Dispersion`),dD=class extends sT{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1,r=null){super(`string`),this.name=e,this.shared=t,this.order=n,this.updateType=r,this.isUniformGroup=!0}update(){this.needsUpdate=!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}},fD=(e,t=1,n=null)=>new dD(e,!1,t,n),pD=(e,t=0,n=null)=>new dD(e,!0,t,n),mD=pD(`frame`,0,Qw.FRAME),hD=pD(`render`,0,Qw.RENDER),gD=fD(`object`,1,Qw.OBJECT),_D=class extends gT{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=gD}setName(e){return this.name=e,this}label(e){return j(`TSL: "label()" has been deprecated. Use "setName()" instead.`,new Pw),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(t=>{let n=e(t,this);n!==void 0&&(this.value=n)},t)}getInputType(e){let t=super.getInputType(e);return t===`bool`&&(t=`uint`),t}generate(e,t){let n=this.getNodeType(e),r=this.getUniformHash(e),i=e.getNodeFromHash(r);i===void 0&&(e.setHashNode(this,r),i=this);let a=i.getInputType(e),o=e.getUniformFromNode(i,a,e.shaderStage,this.name||e.context.nodeName),s=e.getPropertyName(o);e.context.nodeName!==void 0&&delete e.context.nodeName;let c=s;if(n===`bool`){let t=e.getDataFromNode(this),r=t.propertyName;if(r===void 0){let i=e.getVarFromNode(this,null,`bool`);r=e.getPropertyName(i),t.propertyName=r,c=e.format(s,a,n),e.addLineFlowCode(`${r} = ${c}`,this)}c=r}return e.format(c,n,t)}},vD=(e,t)=>{let n=QT(t||e);if(n===e&&(e=qw(n)),e&&e.isNode===!0){let t=e.value;e.traverse(e=>{e.isConstNode===!0&&(t=e.value)}),e=t}return new _D(e,n)},yD=class extends uT{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}generateNodeType(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){let t=this.getNodeType(e);return e.generateArray(t,this.count,this.values)}},bD=(...e)=>{let t;if(e.length===1){let n=e[0];t=new yD(null,n.length,n)}else{let n=e[0],r=e[1];t=new yD(n,r)}return B(t)};z(`toArray`,(e,t)=>bD(Array(t).fill(e)));var xD=rE(class extends uT{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t,this.isAssignNode=!0}hasDependencies(){return!1}generateNodeType(e,t){return t===`void`?`void`:this.targetNode.getNodeType(e)}needsSplitAssign(e){let{targetNode:t}=this;if(e.isAvailable(`swizzleAssign`)===!1&&t.isSplitNode&&t.components.length>1){let n=e.getTypeLength(t.node.getNodeType(e));return iT.join(``).slice(0,n)!==t.components}return!1}setup(e){let{targetNode:t,sourceNode:n}=this,r=t.getScope(),i=e.getDataFromNode(r);i.assign=!0;let a=e.getNodeProperties(this);a.sourceNode=n,a.targetNode=t.context({assign:!0})}generate(e,t){let{targetNode:n,sourceNode:r}=e.getNodeProperties(this),i=this.needsSplitAssign(e),a=n.build(e),o=n.getNodeType(e),s=r.build(e,o),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=a);else if(i){let r=e.getVarFromNode(this,null,o),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node,l=c.node.context({assign:!0}).build(e);for(let t=0;t<c.components.length;t++){let n=c.components[t];e.addLineFlowCode(`${l}.${n} = ${i}[ ${t} ]`,this)}t!==`void`&&(u=a)}else u=`${a} = ${s}`,(t===`void`||c===`void`)&&(e.addLineFlowCode(u,this),t!==`void`&&(u=a));return l.initialized=!0,e.format(u,o,t)}}).setParameterLength(2);z(`assign`,xD);var SD=class extends uT{static get type(){return`FunctionCallNode`}constructor(e=null,t={}){super(),this.functionNode=e,this.parameters=t}setParameters(e){return this.parameters=e,this}getParameters(){return this.parameters}generateNodeType(e){return this.functionNode.getNodeType(e)}getMemberType(e,t){return this.functionNode.getMemberType(e,t)}generate(e){let t=[],n=this.functionNode,r=n.getInputs(e),i=this.parameters,a=(t,n)=>{let r=n.type,i=r===`pointer`,a;return a=i?`&`+t.build(e):t.build(e,r),a};if(Array.isArray(i)){if(i.length>r.length)M(`TSL: The number of provided parameters exceeds the expected number of inputs in 'Fn()'.`),i.length=r.length;else if(i.length<r.length)for(M(`TSL: The number of provided parameters is less than the expected number of inputs in 'Fn()'.`);i.length<r.length;)i.push(W(0));for(let e=0;e<i.length;e++)t.push(a(i[e],r[e]))}else for(let e of r){let n=i[e.name];n===void 0?(M(`TSL: Input '${e.name}' not found in \'Fn()\'.`),t.push(a(W(0),e))):t.push(a(n,e))}return`${n.build(e,`property`)}( ${t.join(`, `)} )`}},CD=(e,...t)=>(t=t.length>1||t[0]&&t[0].isNode===!0?nE(t):tE(t[0]),new SD(B(e),t));z(`call`,CD);var wD={"==":`equal`,"!=":`notEqual`,"<":`lessThan`,">":`greaterThan`,"<=":`lessThanEqual`,">=":`greaterThanEqual`,"%":`mod`},TD=class e extends uT{static get type(){return`OperatorNode`}constructor(t,n,r,...i){if(super(),i.length>0){let a=new e(t,n,r);for(let n=0;n<i.length-1;n++)a=new e(t,a,i[n]);n=a,r=i[i.length-1]}this.op=t,this.aNode=n,this.bNode=r,this.isOperatorNode=!0}getOperatorMethod(e,t){return e.getMethod(wD[this.op],t)}generateNodeType(e,t=null){let n=this.op,r=this.aNode,i=this.bNode,a=r.getNodeType(e),o=i?i.getNodeType(e):null;if(a===`void`||o===`void`)return t||`void`;if(n===`%`)return a;if(n===`~`||n===`&`||n===`|`||n===`^`||n===`>>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`){let t=Math.max(e.getTypeLength(a),e.getTypeLength(o));return t>1?`bvec${t}`:`bool`}else{if(e.isMatrix(a)){if(o===`float`)return a;if(e.isVector(o))return e.getVectorFromMatrix(a);if(e.isMatrix(o))return a}else if(e.isMatrix(o)){if(a===`float`)return o;if(e.isVector(a))return e.getVectorFromMatrix(o)}return e.getTypeLength(o)>e.getTypeLength(a)?o:a}}generate(e,t){let n=this.op,{aNode:r,bNode:i}=this,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i?i.getNodeType(e):null,n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`||n===`!=`?e.isVector(o)?s=o:e.isVector(s)?o=s:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):n===`%`?(o=a,s=e.isInteger(o)&&e.isInteger(s)?s:o):e.isMatrix(o)?s===`float`?s=`float`:e.isVector(s)?s=e.getVectorFromMatrix(o):e.isMatrix(s)||(o=s=a):o=e.isMatrix(s)?o===`float`?`float`:e.isVector(o)?e.getVectorFromMatrix(s):s=a:s=a);let c=r.build(e,o),l=i?i.build(e,s):null,u=e.getFunctionOperator(n);if(t!==`void`){let r=e.renderer.coordinateSystem===vn;if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`)return r&&e.isVector(o)?e.format(`${this.getOperatorMethod(e,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(n===`%`)return e.isInteger(s)?e.format(`( ${c} % ${l} )`,a,t):e.format(`${this.getOperatorMethod(e,a)}( ${c}, ${l} )`,a,t);if(n===`!`||n===`~`)return e.format(`(${n}${c})`,o,t);if(u)return e.format(`${u}( ${c}, ${l} )`,a,t);if(e.isMatrix(o)&&s===`float`)return e.format(`( ${l} ${n} ${c} )`,a,t);if(o===`float`&&e.isMatrix(s))return e.format(`${c} ${n} ${l}`,a,t);{let i=`( ${c} ${n} ${l} )`;return!r&&a===`bool`&&e.isVector(o)&&e.isVector(s)&&(i=`all${i}`),e.format(i,a,t)}}else if(o!==`void`)return u?e.format(`${u}( ${c}, ${l} )`,a,t):e.isMatrix(o)&&s===`float`?e.format(`${l} ${n} ${c}`,a,t):e.format(`${c} ${n} ${l}`,a,t)}serialize(e){super.serialize(e),e.op=this.op}deserialize(e){super.deserialize(e),this.op=e.op}},ED=H(TD,`+`).setParameterLength(2,1/0).setName(`add`),DD=H(TD,`-`).setParameterLength(2,1/0).setName(`sub`),OD=H(TD,`*`).setParameterLength(2,1/0).setName(`mul`),kD=H(TD,`/`).setParameterLength(2,1/0).setName(`div`),AD=H(TD,`%`).setParameterLength(2).setName(`mod`),jD=H(TD,`==`).setParameterLength(2).setName(`equal`),MD=H(TD,`!=`).setParameterLength(2).setName(`notEqual`),ND=H(TD,`<`).setParameterLength(2).setName(`lessThan`),PD=H(TD,`>`).setParameterLength(2).setName(`greaterThan`),FD=H(TD,`<=`).setParameterLength(2).setName(`lessThanEqual`),ID=H(TD,`>=`).setParameterLength(2).setName(`greaterThanEqual`),LD=H(TD,`&&`).setParameterLength(2,1/0).setName(`and`),RD=H(TD,`||`).setParameterLength(2,1/0).setName(`or`),zD=H(TD,`!`).setParameterLength(1).setName(`not`),BD=H(TD,`^^`).setParameterLength(2).setName(`xor`),VD=H(TD,`&`).setParameterLength(2).setName(`bitAnd`),HD=H(TD,`~`).setParameterLength(1).setName(`bitNot`),UD=H(TD,`|`).setParameterLength(2).setName(`bitOr`),WD=H(TD,`^`).setParameterLength(2).setName(`bitXor`),GD=H(TD,`<<`).setParameterLength(2).setName(`shiftLeft`),KD=H(TD,`>>`).setParameterLength(2).setName(`shiftRight`),qD=U(([e])=>(e.addAssign(1),e)),JD=U(([e])=>(e.subAssign(1),e)),YD=U(([e])=>{let t=G(e).toConst();return e.addAssign(1),t}),XD=U(([e])=>{let t=G(e).toConst();return e.subAssign(1),t});z(`add`,ED),z(`sub`,DD),z(`mul`,OD),z(`div`,kD),z(`mod`,AD),z(`equal`,jD),z(`notEqual`,MD),z(`lessThan`,ND),z(`greaterThan`,PD),z(`lessThanEqual`,FD),z(`greaterThanEqual`,ID),z(`and`,LD),z(`or`,RD),z(`not`,zD),z(`xor`,BD),z(`bitAnd`,VD),z(`bitNot`,HD),z(`bitOr`,UD),z(`bitXor`,WD),z(`shiftLeft`,GD),z(`shiftRight`,KD),z(`incrementBefore`,qD),z(`decrementBefore`,JD),z(`increment`,YD),z(`decrement`,XD);var ZD=(e,t)=>(j(`TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.`,new Pw),AD(G(e),G(t)));z(`modInt`,ZD);var Y=class e extends uT{static get type(){return`MathNode`}constructor(t,n,r=null,i=null){if(super(),(t===e.MAX||t===e.MIN)&&arguments.length>3){let a=new e(t,n,r);for(let n=2;n<arguments.length-1;n++)a=new e(t,a,arguments[n]);n=a,r=arguments[arguments.length-1],i=null}this.method=t,this.aNode=n,this.bNode=r,this.cNode=i,this.isMathNode=!0}getInputType(e){let t=this.aNode.getNodeType(e),n=this.bNode?this.bNode.getNodeType(e):null,r=this.cNode?this.cNode.getNodeType(e):null,i=e.isMatrix(t)?0:e.getTypeLength(t),a=e.isMatrix(n)?0:e.getTypeLength(n),o=e.isMatrix(r)?0:e.getTypeLength(r);return i>a&&i>o?t:a>o?n:o>i?r:t}generateNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL||n===e.ANY?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):this.getInputType(t)}setup(t){let{aNode:n,bNode:r,method:i}=this,a=null;if(i===e.ONE_MINUS)a=DD(1,n);else if(i===e.RECIPROCAL)a=kD(1,n);else if(i===e.DIFFERENCE)a=AO(DD(n,r));else if(i===e.TRANSFORM_DIRECTION){let e=n,i=r;t.isMatrix(e.getNodeType(t))?i=yE(J(i),0):e=yE(J(e),0);let o=OD(e,i).xyz;a=gO(o)}return a===null?super.setup(t):a}generate(t,n){if(t.getNodeProperties(this).outputNode)return super.generate(t,n);let r=this.method,i=this.getNodeType(t),a=this.getInputType(t),o=this.aNode,s=this.bNode,c=this.cNode,l=t.renderer.coordinateSystem;if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);{let u=[];return r===e.CROSS?u.push(o.build(t,i),s.build(t,i)):l===2e3&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l===2e3&&(r===e.MIN||r===e.MAX)?u.push(o.build(t,a),s.build(t,t.getTypeLength(s.getNodeType(t))===1?`float`:a)):r===e.REFRACT?u.push(o.build(t,a),s.build(t,a),c.build(t,`float`)):r===e.MIX?u.push(o.build(t,a),s.build(t,a),c.build(t,t.getTypeLength(c.getNodeType(t))===1?`float`:a)):(l===2001&&r===e.ATAN&&s!==null&&(r=`atan2`),t.shaderStage!==`fragment`&&(r===e.DFDX||r===e.DFDY)&&(j(`TSL: '${r}' is not supported in the ${t.shaderStage} stage.`,this.stackTrace),r=`/*`+r+`*/`),u.push(o.build(t,a)),s!==null&&u.push(s.build(t,a)),c!==null&&u.push(c.build(t,a))),t.format(`${t.getMethod(r,i)}( ${u.join(`, `)} )`,i,n)}}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};Y.ALL=`all`,Y.ANY=`any`,Y.RADIANS=`radians`,Y.DEGREES=`degrees`,Y.EXP=`exp`,Y.EXP2=`exp2`,Y.LOG=`log`,Y.LOG2=`log2`,Y.SQRT=`sqrt`,Y.INVERSE_SQRT=`inversesqrt`,Y.FLOOR=`floor`,Y.CEIL=`ceil`,Y.NORMALIZE=`normalize`,Y.FRACT=`fract`,Y.SIN=`sin`,Y.SINH=`sinh`,Y.COS=`cos`,Y.COSH=`cosh`,Y.TAN=`tan`,Y.TANH=`tanh`,Y.ASIN=`asin`,Y.ASINH=`asinh`,Y.ACOS=`acos`,Y.ACOSH=`acosh`,Y.ATAN=`atan`,Y.ATANH=`atanh`,Y.ABS=`abs`,Y.SIGN=`sign`,Y.LENGTH=`length`,Y.NEGATE=`negate`,Y.ONE_MINUS=`oneMinus`,Y.DFDX=`dFdx`,Y.DFDY=`dFdy`,Y.ROUND=`round`,Y.RECIPROCAL=`reciprocal`,Y.TRUNC=`trunc`,Y.FWIDTH=`fwidth`,Y.TRANSPOSE=`transpose`,Y.DETERMINANT=`determinant`,Y.INVERSE=`inverse`,Y.EQUALS=`equals`,Y.MIN=`min`,Y.MAX=`max`,Y.STEP=`step`,Y.REFLECT=`reflect`,Y.DISTANCE=`distance`,Y.DIFFERENCE=`difference`,Y.DOT=`dot`,Y.CROSS=`cross`,Y.POW=`pow`,Y.TRANSFORM_DIRECTION=`transformDirection`,Y.MIX=`mix`,Y.CLAMP=`clamp`,Y.REFRACT=`refract`,Y.SMOOTHSTEP=`smoothstep`,Y.FACEFORWARD=`faceforward`;var QD=W(1e-6),$D=W(1e6),eO=W(Math.PI),tO=W(Math.PI*2),nO=W(Math.PI*2),rO=W(Math.PI*.5),iO=H(Y,Y.ALL).setParameterLength(1),aO=H(Y,Y.ANY).setParameterLength(1),oO=H(Y,Y.RADIANS).setParameterLength(1),sO=H(Y,Y.DEGREES).setParameterLength(1),cO=H(Y,Y.EXP).setParameterLength(1),lO=H(Y,Y.EXP2).setParameterLength(1),uO=H(Y,Y.LOG).setParameterLength(1),dO=H(Y,Y.LOG2).setParameterLength(1),fO=H(Y,Y.SQRT).setParameterLength(1),pO=H(Y,Y.INVERSE_SQRT).setParameterLength(1),mO=H(Y,Y.FLOOR).setParameterLength(1),hO=H(Y,Y.CEIL).setParameterLength(1),gO=H(Y,Y.NORMALIZE).setParameterLength(1),_O=H(Y,Y.FRACT).setParameterLength(1),vO=H(Y,Y.SIN).setParameterLength(1),yO=H(Y,Y.SINH).setParameterLength(1),bO=H(Y,Y.COS).setParameterLength(1),xO=H(Y,Y.COSH).setParameterLength(1),SO=H(Y,Y.TAN).setParameterLength(1),CO=H(Y,Y.TANH).setParameterLength(1),wO=H(Y,Y.ASIN).setParameterLength(1),TO=H(Y,Y.ASINH).setParameterLength(1),EO=H(Y,Y.ACOS).setParameterLength(1),DO=H(Y,Y.ACOSH).setParameterLength(1),OO=H(Y,Y.ATAN).setParameterLength(1,2),kO=H(Y,Y.ATANH).setParameterLength(1),AO=H(Y,Y.ABS).setParameterLength(1),jO=H(Y,Y.SIGN).setParameterLength(1),MO=H(Y,Y.LENGTH).setParameterLength(1),NO=H(Y,Y.NEGATE).setParameterLength(1),PO=H(Y,Y.ONE_MINUS).setParameterLength(1),FO=H(Y,Y.DFDX).setParameterLength(1),IO=H(Y,Y.DFDY).setParameterLength(1),LO=H(Y,Y.ROUND).setParameterLength(1),RO=H(Y,Y.RECIPROCAL).setParameterLength(1),zO=H(Y,Y.TRUNC).setParameterLength(1),BO=H(Y,Y.FWIDTH).setParameterLength(1),VO=H(Y,Y.TRANSPOSE).setParameterLength(1),HO=H(Y,Y.DETERMINANT).setParameterLength(1),UO=H(Y,Y.INVERSE).setParameterLength(1),WO=H(Y,Y.MIN).setParameterLength(2,1/0),GO=H(Y,Y.MAX).setParameterLength(2,1/0),KO=H(Y,Y.STEP).setParameterLength(2),qO=H(Y,Y.REFLECT).setParameterLength(2),JO=H(Y,Y.DISTANCE).setParameterLength(2),YO=H(Y,Y.DIFFERENCE).setParameterLength(2),XO=H(Y,Y.DOT).setParameterLength(2),ZO=H(Y,Y.CROSS).setParameterLength(2),QO=H(Y,Y.POW).setParameterLength(2),$O=e=>OD(e,e),ek=e=>OD(e,e,e),tk=e=>OD(e,e,e,e),nk=H(Y,Y.TRANSFORM_DIRECTION).setParameterLength(2),rk=e=>OD(jO(e),QO(AO(e),1/3)),ik=e=>XO(e,e),ak=H(Y,Y.MIX).setParameterLength(3),ok=(e,t=0,n=1)=>new Y(Y.CLAMP,B(e),B(t),B(n)),sk=e=>ok(e),ck=H(Y,Y.REFRACT).setParameterLength(3),lk=H(Y,Y.SMOOTHSTEP).setParameterLength(3),uk=H(Y,Y.FACEFORWARD).setParameterLength(3),dk=U(([e])=>_O(vO(AD(XO(e.xy,q(12.9898,78.233)),eO)).mul(43758.5453))),fk=(e,t,n)=>ak(t,n,e),pk=(e,t,n)=>lk(t,n,e),mk=(e,t)=>KO(t,e),hk=uk,gk=pO;z(`all`,iO),z(`any`,aO),z(`radians`,oO),z(`degrees`,sO),z(`exp`,cO),z(`exp2`,lO),z(`log`,uO),z(`log2`,dO),z(`sqrt`,fO),z(`inverseSqrt`,pO),z(`floor`,mO),z(`ceil`,hO),z(`normalize`,gO),z(`fract`,_O),z(`sin`,vO),z(`sinh`,yO),z(`cos`,bO),z(`cosh`,xO),z(`tan`,SO),z(`tanh`,CO),z(`asin`,wO),z(`asinh`,TO),z(`acos`,EO),z(`acosh`,DO),z(`atan`,OO),z(`atanh`,kO),z(`abs`,AO),z(`sign`,jO),z(`length`,MO),z(`lengthSq`,ik),z(`negate`,NO),z(`oneMinus`,PO),z(`dFdx`,FO),z(`dFdy`,IO),z(`round`,LO),z(`reciprocal`,RO),z(`trunc`,zO),z(`fwidth`,BO),z(`min`,WO),z(`max`,GO),z(`step`,mk),z(`reflect`,qO),z(`distance`,JO),z(`dot`,XO),z(`cross`,ZO),z(`pow`,QO),z(`pow2`,$O),z(`pow3`,ek),z(`pow4`,tk),z(`transformDirection`,nk),z(`mix`,fk),z(`clamp`,ok),z(`refract`,ck),z(`smoothstep`,pk),z(`faceForward`,uk),z(`difference`,YO),z(`saturate`,sk),z(`cbrt`,rk),z(`transpose`,VO),z(`determinant`,HO),z(`inverse`,UO),z(`rand`,dk);var _k=rE(class extends sT{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}generateNodeType(e){let{ifNode:t,elseNode:n}=e.getNodeProperties(this);if(t===void 0)return e.flowBuildStage(this,`setup`),this.getNodeType(e);let r=t.getNodeType(e);if(n!==null){let t=n.getNodeType(e);if(e.getTypeLength(t)>e.getTypeLength(r))return t}return r}setup(e){let t=this.condNode,n=this.ifNode.isolate(),r=this.elseNode?this.elseNode.isolate():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.context.uniformFlow,o=e.getNodeProperties(this);o.condNode=t,o.ifNode=a?n:n.context({nodeBlock:n}),o.elseNode=r?a?r:r.context({nodeBlock:r}):null}generate(e,t){let n=this.getNodeType(e),r=e.getDataFromNode(this);if(r.nodeProperty!==void 0)return r.nodeProperty;let{condNode:i,ifNode:a,elseNode:o}=e.getNodeProperties(this),s=e.currentFunctionNode,c=t!==`void`,l=c?NE(n).build(e):``;r.nodeProperty=l;let u=i.build(e,`bool`);if(e.context.uniformFlow&&o!==null){let r=a.build(e,n),i=o.build(e,n),s=e.getTernary(u,r,i);return e.format(s,n,t)}e.addFlowCode(`\n${e.tab}if ( ${u} ) {\n\n`).addFlowTab();let d=a.build(e,n);if(d&&(c?d=l+` = `+d+`;`:(d=`return `+d+`;`,s===null&&(j(`TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values.`,this.stackTrace),d=`// `+d))),e.removeFlowTab().addFlowCode(e.tab+` `+d+`
4113
4113
 
4114
4114
  `+e.tab+`}`),o!==null){e.addFlowCode(` else {
4115
4115
 
@@ -4123,19 +4123,19 @@ Error details: ${t.message}`,t),_.trigger(t)}},T=Zg(),E=()=>{c.value=m.value?1:M
4123
4123
  `,i+=e.flow.code.replace(/^\t/gm,``)+`
4124
4124
  `,i+=`/* ... */ `+n+` /* ... */
4125
4125
  `,i+=`// #`+r+`#
4126
- `,Pn(i)}return n}},DA=(e,t=null)=>new EA(B(e),t).toStack();z(`debug`,DA);var OA=class extends Bn{constructor(){super(),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(){}},kA=class extends sT{static get type(){return`InspectorNode`}constructor(e,t=``,n=null){super(),this.node=e,this.name=t,this.callback=n,this.updateType=Qw.FRAME,this.isInspectorNode=!0}getName(){return this.name||this.node.name}update(e){e.renderer.inspector.inspect(this)}generateNodeType(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!==OA&&In(`TSL: ".toInspector()" is only available with WebGPU.`),t}};function AA(e,t=``,n=null){return e=B(e),e.before(new kA(e,t,n))}z(`toInspector`,AA);function jA(e){j(`TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add`,e)}var MA=class extends sT{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}generateNodeType(e){let t=this.nodeType;if(t===null){let n=this.getAttributeName(e);if(e.hasGeometryAttribute(n)){let 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){let t=this.getAttributeName(e),n=this.getNodeType(e);if(e.hasGeometryAttribute(t)===!0){let r=e.geometry.getAttribute(t),i=e.getTypeFromAttribute(r),a=e.getAttribute(t,i);return e.shaderStage===`vertex`?e.format(a.name,i,n):Mk(this).build(e,n)}else return j(`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}},NA=(e,t=null)=>new MA(e,t),PA=(e=0)=>NA(`uv`+(e>0?e:``),`vec2`),FA=rE(class extends sT{static get type(){return`TextureSizeNode`}constructor(e,t=null){super(`uvec2`),this.isTextureSizeNode=!0,this.textureNode=e,this.levelNode=t}generate(e,t){let 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)}}).setParameterLength(1,2),IA=rE(class extends _D{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=Qw.FRAME}get textureNode(){return this._textureNode}get texture(){return this._textureNode.value}update(){let 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){let{width:e,height:t}=n;this.value=Math.log2(Math.max(e,t))}}}).setParameterLength(1),LA=class extends Error{constructor(e,t=null){super(e),this.name=`NodeError`,this.stackTrace=t}},RA=new Mr,zA=class extends _D{static get type(){return`TextureNode`}constructor(e=RA,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=Qw.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}generateNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return PA(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=vD(this.value.matrix)),this._matrixUniform.mul(J(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this}setupUV(e,t){return e.isFlipY()&&(this._flipYUniform===null&&(this._flipYUniform=vD(!1)),t=t.toVar(),t=this.sampler?this._flipYUniform.select(t.flipY(),t):this._flipYUniform.select(t.setY(G(FA(this,this.levelNode).y).sub(t.y).sub(1)),t)),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.value;if(!n||n.isTexture!==!0)throw new LA("THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().",this.stackTrace);let r=U(()=>{let t=this.uvNode;return(t===null||e.context.forceUVContext===!0)&&e.context.getUV&&(t=e.context.getUV(this,e)),t||=this.getDefaultUV(),this.updateMatrix===!0&&(t=this.getTransformedUV(t)),t=this.setupUV(e,t),this.updateType=this._matrixUniform!==null||this._flipYUniform!==null?Qw.OBJECT:Qw.NONE,t})(),i=this.levelNode;i===null&&e.context.getTextureLevel&&(i=e.context.getTextureLevel(this));let a=null,o=null;if(this.compareNode!==null)if(e.renderer.hasCompatibility(Cn.TEXTURE_COMPARE))a=this.compareNode;else{let e=n.compareFunction;e===null||e===513||e===515||e===516||e===518?o=this.compareNode:(a=this.compareNode,In(`TSL: Only "LessCompare", "LessEqualCompare", "GreaterCompare" and "GreaterEqualCompare" are supported for depth texture comparison fallback.`))}t.uvNode=r,t.levelNode=i,t.biasNode=this.biasNode,t.compareNode=a,t.compareStepNode=o,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,i,a,o,s,c){let l=this.value,u;return u=i?e.generateTextureBias(l,t,n,i,a,c):s?e.generateTextureGrad(l,t,n,s,a,c):o?e.generateTextureCompare(l,t,n,o,a,c):this.sampler===!1?e.generateTextureLoad(l,t,n,r,a,c):r?e.generateTextureLevel(l,t,n,r,a,c):e.generateTexture(l,t,n,a,c),u}generate(e,t){let n=this.value,r=e.getNodeProperties(this),i=super.generate(e,`property`);if(/^sampler/.test(t))return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=this.getNodeType(e),s=a.propertyName;if(s===void 0){let{uvNode:t,levelNode:c,biasNode:l,compareNode:u,compareStepNode:d,depthNode:f,gradNode:p,offsetNode:m}=r,h=this.generateUV(e,t),g=c?c.build(e,`float`):null,_=l?l.build(e,`float`):null,v=f?f.build(e,`int`):null,y=u?u.build(e,`float`):null,b=d?d.build(e,`float`):null,x=p?[p[0].build(e,`vec2`),p[1].build(e,`vec2`)]:null,S=m?this.generateOffset(e,m):null,C=v;C===null&&n.isArrayTexture&&this.isTexture3DNode!==!0&&(C=`0`);let w=e.getVarFromNode(this);s=e.getPropertyName(w);let T=this.generateSnippet(e,i,h,g,_,C,y,x,S);if(b!==null){let t=n.compareFunction;T=t===516||t===518?KO(xA(T,o),xA(b,`float`)).build(e,o):KO(xA(b,`float`),xA(T,o)).build(e,o)}e.addLineFlowCode(`${s} = ${T}`,this),a.snippet=T,a.propertyName=s}let c=s;return e.needsToWorkingColorSpace(n)&&(c=Bk(xA(c,o),n.colorSpace).setup(e).build(e,o)),e.format(c,o,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}sample(e){let t=this.clone();return t.uvNode=B(e),t.referenceNode=this.getBase(),B(t)}load(e){return this.sample(e).setSampler(!1)}blur(e){let t=this.clone();t.biasNode=B(e).mul(IA(t)),t.referenceNode=this.getBase();let n=t.value;return t.generateMipmaps===!1&&(n&&n.generateMipmaps===!1||n.minFilter===1003||n.magFilter===1003)&&(j(`TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture.`),t.biasNode=null),B(t)}level(e){let t=this.clone();return t.levelNode=B(e),t.referenceNode=this.getBase(),B(t)}size(e){return FA(this,e)}bias(e){let t=this.clone();return t.biasNode=B(e),t.referenceNode=this.getBase(),B(t)}getBase(){return this.referenceNode?this.referenceNode.getBase():this}compare(e){let t=this.clone();return t.compareNode=B(e),t.referenceNode=this.getBase(),B(t)}grad(e,t){let n=this.clone();return n.gradNode=[B(e),B(t)],n.referenceNode=this.getBase(),B(n)}depth(e){let t=this.clone();return t.depthNode=B(e),t.referenceNode=this.getBase(),B(t)}offset(e){let t=this.clone();return t.offsetNode=B(e),t.referenceNode=this.getBase(),B(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(){let e=this.value,t=this._matrixUniform;t!==null&&(t.value=e.matrix),e.matrixAutoUpdate===!0&&e.updateMatrix();let n=this._flipYUniform;n!==null&&(n.value=e.image instanceof ImageBitmap&&e.flipY===!0||e.isRenderTargetTexture===!0||e.isFramebufferTexture===!0||e.isDepthTexture===!0)}clone(){let 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}},BA=rE(zA).setParameterLength(1,4).setName(`texture`),VA=(e=RA,t=null,n=null,r=null)=>{let i;return e&&e.isTextureNode===!0?(i=B(e.clone()),i.referenceNode=e.getBase(),t!==null&&(i.uvNode=B(t)),n!==null&&(i.levelNode=B(n)),r!==null&&(i.biasNode=B(r))):i=BA(e,t,n,r),i},HA=(e=RA)=>VA(e),UA=(...e)=>VA(...e).setSampler(!1),WA=(e,t,n)=>VA(e,t).level(n),GA=e=>(e.isNode===!0?e:VA(e)).convert(`sampler`),KA=e=>(e.isNode===!0?e:VA(e)).convert(`samplerComparison`),qA=class extends _D{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`}},JA=(e,t,n)=>new qA(e,t,n),YA=class extends cT{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType(e),r=this.node.getPaddedType();return e.format(t,r,n)}},XA=class extends qA{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null),this.array=e,this.elementType=t===null?Kw(e[0]):t,this.paddedType=this.getPaddedType(),this.updateType=Qw.RENDER,this.isArrayBufferNode=!0}generateNodeType(){return this.paddedType}getElementType(){return this.elementType}getPaddedType(){let e=this.elementType,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(){let{array:e,value:t}=this,n=this.elementType;if(n===`float`||n===`int`||n===`uint`)for(let n=0;n<e.length;n++){let r=n*4;t[r]=e[n]}else if(n===`color`)for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.r,t[r+1]=i.g,t[r+2]=i.b||0}else if(n===`mat2`)for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.elements[0],t[r+1]=i.elements[1],t[r+2]=i.elements[2],t[r+3]=i.elements[3]}else if(n===`mat3`)for(let n=0;n<e.length;n++){let r=n*16,i=e[n];t[r]=i.elements[0],t[r+1]=i.elements[1],t[r+2]=i.elements[2],t[r+4]=i.elements[3],t[r+5]=i.elements[4],t[r+6]=i.elements[5],t[r+8]=i.elements[6],t[r+9]=i.elements[7],t[r+10]=i.elements[8],t[r+15]=1}else if(n===`mat4`)for(let n=0;n<e.length;n++){let r=n*16,i=e[n];for(let e=0;e<i.elements.length;e++)t[r+e]=i.elements[e]}else for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.x,t[r+1]=i.y,t[r+2]=i.z||0,t[r+3]=i.w||0}}setup(e){let t=this.array.length,n=this.elementType,r=Float32Array,i=this.paddedType,a=e.getTypeLength(i);return n.charAt(0)===`i`&&(r=Int32Array),n.charAt(0)===`u`&&(r=Uint32Array),this.value=new r(t*a),this.bufferCount=t,this.bufferType=i,this.update(),super.setup(e)}element(e){return new YA(this,B(e))}},ZA=(e,t)=>new XA(e,t),QA=rE(class extends sT{constructor(e){super(`float`),this.name=e,this.isBuiltinNode=!0}generate(){return this.name}}).setParameterLength(1),$A,ej,tj=class e extends sT{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this._output=null,this.isViewportNode=!0}generateNodeType(){return this.scope===e.DPR?`float`:this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=Qw.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT||this.scope===e.DPR)&&(t=Qw.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(ej),ej.multiplyScalar(t.getPixelRatio())):ej.copy(n.viewport):this.scope===e.DPR?this._output.value=t.getPixelRatio():n===null?t.getDrawingBufferSize($A):($A.width=n.width,$A.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?vD($A||=new N):t===e.VIEWPORT?vD(ej||=new Nr):t===e.DPR?vD(1):q(aj.div(ij)),this._output=n,n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(ij).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};tj.COORDINATE=`coordinate`,tj.VIEWPORT=`viewport`,tj.SIZE=`size`,tj.UV=`uv`,tj.DPR=`dpr`;var nj=V(tj,tj.DPR),rj=V(tj,tj.UV),ij=V(tj,tj.SIZE),aj=V(tj,tj.COORDINATE),oj=V(tj,tj.VIEWPORT),sj=oj.zw,cj=aj.sub(oj.xy),lj=cj.div(sj),uj=U(()=>(j(`TSL: "viewportResolution" is deprecated. Use "screenSize" instead.`,new Pw),ij),`vec2`).once()(),dj=null,fj=null,pj=null,mj=null,hj=null,gj=null,_j=null,vj=null,yj=null,bj=null,xj=null,Sj=null,Cj=null,wj=null,Tj=vD(0,`uint`).setName(`u_cameraIndex`).setGroup(pD(`cameraIndex`)).toVarying(`v_cameraIndex`),Ej=vD(`float`).setName(`cameraNear`).setGroup(hD).onRenderUpdate(({camera:e})=>e.near),Dj=vD(`float`).setName(`cameraFar`).setGroup(hD).onRenderUpdate(({camera:e})=>e.far),Oj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.projectionMatrix);fj===null?fj=ZA(n).setGroup(hD).setName(`cameraProjectionMatrices`):fj.array=n,t=fj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraProjectionMatrix`)}else dj===null&&(dj=vD(e.projectionMatrix).setName(`cameraProjectionMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.projectionMatrix)),t=dj;return t}).once()(),kj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.projectionMatrixInverse);mj===null?mj=ZA(n).setGroup(hD).setName(`cameraProjectionMatricesInverse`):mj.array=n,t=mj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraProjectionMatrixInverse`)}else pj===null&&(pj=vD(e.projectionMatrixInverse).setName(`cameraProjectionMatrixInverse`).setGroup(hD).onRenderUpdate(({camera:e})=>e.projectionMatrixInverse)),t=pj;return t}).once()(),Aj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.matrixWorldInverse);gj===null?gj=ZA(n).setGroup(hD).setName(`cameraViewMatrices`):gj.array=n,t=gj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraViewMatrix`)}else hj===null&&(hj=vD(e.matrixWorldInverse).setName(`cameraViewMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.matrixWorldInverse)),t=hj;return t}).once()(),jj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.matrixWorld);vj===null?vj=ZA(n).setGroup(hD).setName(`cameraWorldMatrices`):vj.array=n,t=vj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraWorldMatrix`)}else _j===null&&(_j=vD(e.matrixWorld).setName(`cameraWorldMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.matrixWorld)),t=_j;return t}).once()(),Mj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.normalMatrix);bj===null?bj=ZA(n).setGroup(hD).setName(`cameraNormalMatrices`):bj.array=n,t=bj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraNormalMatrix`)}else yj===null&&(yj=vD(e.normalMatrix).setName(`cameraNormalMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.normalMatrix)),t=yj;return t}).once()(),Nj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t=0,r=e.cameras.length;t<r;t++)n.push(new P);Sj===null?Sj=ZA(n).setGroup(hD).setName(`cameraPositions`).onRenderUpdate(({camera:e},t)=>{let n=e.cameras,r=t.array;for(let e=0,t=n.length;e<t;e++)r[e].setFromMatrixPosition(n[e].matrixWorld)}):Sj.array=n,t=Sj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraPosition`)}else xj===null&&(xj=vD(new P).setName(`cameraPosition`).setGroup(hD).onRenderUpdate(({camera:e},t)=>t.value.setFromMatrixPosition(e.matrixWorld))),t=xj;return t}).once()(),Pj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.viewport);wj===null?wj=ZA(n,`vec4`).setGroup(hD).setName(`cameraViewports`):wj.array=n,t=wj.element(Tj).toConst(`cameraViewport`)}else Cj===null&&(Cj=yE(0,0,ij.x,ij.y).toConst(`cameraViewport`)),t=Cj;return t}).once()(),Fj=new ba,Ij=class e extends sT{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=Qw.OBJECT,this.uniformNode=new _D(null)}generateNodeType(){let t=this.scope;if(t===e.WORLD_MATRIX)return`mat4`;if(t===e.POSITION||t===e.VIEW_POSITION||t===e.DIRECTION||t===e.SCALE)return`vec3`;if(t===e.RADIUS)return`float`}update(t){let n=this.object3d,r=this.uniformNode,i=this.scope;if(i===e.WORLD_MATRIX)r.value=n.matrixWorld;else if(i===e.POSITION)r.value=r.value||new P,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new P,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new P,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new P,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}else if(i===e.RADIUS){let e=t.object.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),Fj.copy(e.boundingSphere).applyMatrix4(n.matrixWorld),r.value=Fj.radius}}generate(t){let n=this.scope;return n===e.WORLD_MATRIX?this.uniformNode.nodeType=`mat4`:n===e.POSITION||n===e.VIEW_POSITION||n===e.DIRECTION||n===e.SCALE?this.uniformNode.nodeType=`vec3`:n===e.RADIUS&&(this.uniformNode.nodeType=`float`),this.uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};Ij.WORLD_MATRIX=`worldMatrix`,Ij.POSITION=`position`,Ij.SCALE=`scale`,Ij.VIEW_POSITION=`viewPosition`,Ij.DIRECTION=`direction`,Ij.RADIUS=`radius`;var Lj=rE(Ij,Ij.DIRECTION).setParameterLength(1),Rj=rE(Ij,Ij.WORLD_MATRIX).setParameterLength(1),zj=rE(Ij,Ij.POSITION).setParameterLength(1),Bj=rE(Ij,Ij.SCALE).setParameterLength(1),Vj=rE(Ij,Ij.VIEW_POSITION).setParameterLength(1),Hj=rE(Ij,Ij.RADIUS).setParameterLength(1),Uj=class extends Ij{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}},Wj=V(Uj,Uj.DIRECTION),Gj=V(Uj,Uj.WORLD_MATRIX),Kj=V(Uj,Uj.POSITION),qj=V(Uj,Uj.SCALE),Jj=V(Uj,Uj.VIEW_POSITION),Yj=V(Uj,Uj.RADIUS),Xj=vD(new _r).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),Zj=vD(new F).onObjectUpdate(({object:e},t)=>t.value.copy(e.matrixWorld).invert()),Qj=U(e=>e.context.modelViewMatrix||$j).once()().toVar(`modelViewMatrix`),$j=Aj.mul(Gj),eM=U(e=>(e.context.isHighPrecisionModelViewMatrix=!0,vD(`mat4`).onObjectUpdate(({object:e,camera:t})=>e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld)))).once()().toVar(`highpModelViewMatrix`),tM=U(e=>{let t=e.context.isHighPrecisionModelViewMatrix;return vD(`mat3`).onObjectUpdate(({object:e,camera:n})=>(t!==!0&&e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix)))}).once()().toVar(`highpModelNormalViewMatrix`),nM=U(e=>e.shaderStage===`fragment`?e.context.clipSpace.toVarying(`v_clipSpace`):(In("TSL: `clipSpace` is only available in fragment stage."),yE())).once()(),rM=NA(`position`,`vec3`),iM=rM.toVarying(`positionLocal`),aM=rM.toVarying(`positionPrevious`),oM=U(e=>Gj.mul(iM).xyz.toVarying(e.getSubBuildProperty(`v_positionWorld`)),`vec3`).once([`POSITION`])(),sM=U(()=>iM.transformDirection(Gj).toVarying(`v_positionWorldDirection`).normalize().toVar(`positionWorldDirection`),`vec3`).once([`POSITION`])(),cM=U(e=>{if(e.shaderStage===`fragment`&&e.material.vertexNode){let e=kj.mul(nM);return e.xyz.div(e.w).toVar(`positionView`)}return e.context.setupPositionView().toVarying(`v_positionView`)},`vec3`).once([`POSITION`,`VERTEX`])(),lM=U(e=>{let t;return t=e.camera.isOrthographicCamera?J(0,0,1):cM.negate().toVarying(`v_positionViewDirection`).normalize(),t.toVar(`positionViewDirection`)},`vec3`).once([`POSITION`])(),uM=V(class extends sT{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){if(e.shaderStage!==`fragment`)return`true`;let{material:t}=e;return t.side===1?`false`:e.getFrontFacing()}}),dM=W(uM).mul(2).sub(1),fM=U(([e],{material:t})=>{let n=t.side;return n===1?e=e.mul(-1):n===2&&(e=e.mul(dM)),e}),pM=NA(`normal`,`vec3`),mM=U(e=>e.geometry.hasAttribute(`normal`)===!1?(j(`TSL: Vertex attribute "normal" not found on geometry.`),J(0,1,0)):pM,`vec3`).once()().toVar(`normalLocal`),hM=cM.dFdx().cross(cM.dFdy()).normalize().toVar(`normalFlat`),gM=U(e=>{let t;return t=e.isFlatShading()?hM:SM(mM).toVarying(`v_normalViewGeometry`).normalize(),t},`vec3`).once()().toVar(`normalViewGeometry`),_M=U(e=>{let t=gM.transformDirection(Aj);return e.isFlatShading()!==!0&&(t=t.toVarying(`v_normalWorldGeometry`)),t.normalize().toVar(`normalWorldGeometry`)},`vec3`).once()(),vM=U(e=>{let t;return e.subBuildFn===`NORMAL`||e.subBuildFn===`VERTEX`?(t=gM,e.isFlatShading()!==!0&&(t=fM(t))):t=e.context.setupNormal().context({getUV:null,getTextureLevel:null}),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`normalView`),yM=vM.transformDirection(Aj).toVar(`normalWorld`),bM=U(({subBuildFn:e,context:t})=>{let n;return n=e===`NORMAL`||e===`VERTEX`?vM:t.setupClearcoatNormal().context({getUV:null,getTextureLevel:null}),n},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`clearcoatNormalView`),xM=U(([e,t=Gj])=>{let n=wE(t),r=e.div(J(n[0].dot(n[0]),n[1].dot(n[1]),n[2].dot(n[2])));return n.mul(r).xyz}),SM=U(([e],t)=>{let n=t.context.modelNormalViewMatrix;if(n)return n.transformDirection(e);let r=Xj.mul(e);return Aj.transformDirection(r)}),CM=U(()=>(j(`TSL: "transformedNormalView" is deprecated. Use "normalView" instead.`),vM)).once([`NORMAL`,`VERTEX`])(),wM=U(()=>(j(`TSL: "transformedNormalWorld" is deprecated. Use "normalWorld" instead.`),yM)).once([`NORMAL`,`VERTEX`])(),TM=U(()=>(j(`TSL: "transformedClearcoatNormalView" is deprecated. Use "clearcoatNormalView" instead.`),bM)).once([`NORMAL`,`VERTEX`])(),EM=new F,DM=vD(0).onReference(({material:e})=>e).onObjectUpdate(({material:e})=>e.refractionRatio),OM=vD(1).onReference(({material:e})=>e).onObjectUpdate(function({material:e,scene:t}){return e.envMap?e.envMapIntensity:t.environmentIntensity}),kM=vD(new F).onReference(function(e){return e.material}).onObjectUpdate(function({material:e,scene:t}){let n=t.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation;return n?EM.makeRotationFromEuler(n).transpose():EM.identity(),EM}),AM=lM.negate().reflect(vM),jM=lM.negate().refract(vM,DM),MM=AM.transformDirection(Aj).toVar(`reflectVector`),NM=jM.transformDirection(Aj).toVar(`reflectVector`),PM=new Xs,FM=rE(class extends zA{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(){let e=this.value;return e.mapping===301?MM:e.mapping===302?NM:(M(`CubeTextureNode: Mapping "%s" not supported.`,e.mapping),J(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return n.isDepthTexture===!0?e.renderer.coordinateSystem===2001?J(t.x,t.y.negate(),t.z):t:(t=kM.mul(t),(e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture)&&(t=J(t.x.negate(),t.yz)),t)}generateUV(e,t){return t.build(e,this.sampler===!0?`vec3`:`ivec3`)}}).setParameterLength(1,4).setName(`cubeTexture`),IM=(e=PM,t=null,n=null,r=null)=>{let i;return e&&e.isCubeTextureNode===!0?(i=B(e.clone()),i.referenceNode=e,t!==null&&(i.uvNode=B(t)),n!==null&&(i.levelNode=B(n)),r!==null&&(i.biasNode=B(r))):i=FM(e,t,n,r),i},LM=(e=PM)=>FM(e),RM=class extends cT{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}generateNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(e),r=this.getNodeType(e);return e.format(t,n,r)}},zM=class extends sT{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=Qw.OBJECT}element(e){return new RM(this,B(e))}setGroup(e){return this.group=e,this}setName(e){return this.name=e,this}label(e){return j(`TSL: "label()" has been deprecated. Use "setName()" instead.`),this.setName(e)}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?ZA(null,e):e===`texture`?VA(null):e===`cubeTexture`?IM(null):vD(null,e):JA(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.setName(this.name),this.node=t}generateNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;e<t.length;e++)n=n[t[e]];return n}updateReference(e){return this.reference=this.object===null?e.object:this.object,this.reference}setup(){return this.updateValue(),this.node}update(){this.updateValue()}updateValue(){this.node===null&&this.setNodeType(this.uniformType);let e=this.getValueFromReference();Array.isArray(e)?this.node.array=e:this.node.value=e}},BM=(e,t,n)=>new zM(e,t,n),VM=(e,t,n,r)=>new zM(e,t,r,n),HM=class extends zM{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?e.material:this.material,this.reference}},UM=(e,t,n=null)=>new HM(e,t,n),WM=PA(),GM=cM.dFdx(),KM=cM.dFdy(),qM=WM.dFdx(),JM=WM.dFdy(),YM=vM,XM=KM.cross(YM),ZM=YM.cross(GM),QM=XM.mul(qM.x).add(ZM.mul(JM.x)),$M=XM.mul(qM.y).add(ZM.mul(JM.y)),eN=QM.dot(QM).max($M.dot($M)),tN=eN.equal(0).select(0,eN.inverseSqrt()),nN=QM.mul(tN).toVar(`tangentViewFrame`),rN=$M.mul(tN).toVar(`bitangentViewFrame`),iN=NA(`tangent`,`vec4`),aN=iN.xyz.toVar(`tangentLocal`),oN=U(e=>{let t;return t=e.subBuildFn===`VERTEX`||e.geometry.hasAttribute(`tangent`)?Qj.mul(yE(aN,0)).xyz.toVarying(`v_tangentView`).normalize():nN,e.isFlatShading()!==!0&&(t=fM(t)),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`tangentView`),sN=oN.transformDirection(Aj).toVarying(`v_tangentWorld`).normalize().toVar(`tangentWorld`),cN=U(([e,t],n)=>{let r=e.mul(iN.w).xyz;return n.subBuildFn===`NORMAL`&&n.isFlatShading()!==!0&&(r=r.toVarying(t)),r}).once([`NORMAL`]),lN=cN(pM.cross(iN),`v_bitangentGeometry`).normalize().toVar(`bitangentGeometry`),uN=cN(mM.cross(aN),`v_bitangentLocal`).normalize().toVar(`bitangentLocal`),dN=U(e=>{let t;return t=e.subBuildFn===`VERTEX`||e.geometry.hasAttribute(`tangent`)?cN(vM.cross(oN),`v_bitangentView`).normalize():rN,e.isFlatShading()!==!0&&(t=fM(t)),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`bitangentView`),fN=cN(yM.cross(sN),`v_bitangentWorld`).normalize().toVar(`bitangentWorld`),pN=wE(oN,dN,vM).toVar(`TBNViewMatrix`),mN=lM.mul(pN),hN=(e,t)=>e.sub(mN.mul(t)),gN=U(()=>{let e=XE.cross(lM);return e=e.cross(XE).normalize(),e=ak(e,vM,JE.mul(RE.oneMinus()).oneMinus().pow2().pow2()).normalize(),e}).once()(),_N=e=>B(e).mul(.5).add(.5),vN=e=>B(e).mul(2).sub(1),yN=e=>J(e,fO(sk(W(1).sub(XO(e,e))))),bN=rE(class extends uT{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0,this.unpackNormalMode=``}setup(e){let{normalMapType:t,scaleNode:n,unpackNormalMode:r}=this,i=this.node.mul(2).sub(1);if(t===0?r===`rg`?i=yN(i.xy):r===`ga`?i=yN(i.yw):r!==``&&M(`THREE.NodeMaterial: Unexpected unpack normal mode: ${r}`):r!==``&&M(`THREE.NodeMaterial: Normal map type '${t}' is not compatible with unpack normal mode '${r}'`),n!==null){let t=n;e.isFlatShading()===!0&&(t=fM(t)),i=J(i.xy.mul(t),i.z)}let a=null;return t===1?a=SM(i):t===0?a=pN.mul(i).normalize():(M(`NodeMaterial: Unsupported normal map type: ${t}`),a=vM),a}}).setParameterLength(1,2),xN=U(({textureNode:e,bumpScale:t})=>{let n=t=>e.isolate().context({getUV:e=>t(e.uvNode||PA()),forceUVContext:!0}),r=W(n(e=>e));return q(W(n(e=>e.add(e.dFdx()))).sub(r),W(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),SN=U(e=>{let{surf_pos:t,surf_norm:n,dHdxy:r}=e,i=t.dFdx().normalize(),a=t.dFdy().normalize(),o=n,s=a.cross(o),c=o.cross(i),l=i.dot(s).mul(dM),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),CN=rE(class extends uT{static get type(){return`BumpMapNode`}constructor(e,t=null){super(`vec3`),this.textureNode=e,this.scaleNode=t}setup(){let e=this.scaleNode===null?1:this.scaleNode;return SN({surf_pos:cM,surf_norm:vM,dHdxy:xN({textureNode:this.textureNode,bumpScale:e})})}}).setParameterLength(1,2),wN=new Map,X=class e extends sT{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=wN.get(e);return n===void 0&&(n=UM(e,t),wN.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(t){let n=t.context.material,r=this.scope,i=null;if(r===e.COLOR){let e=n.color===void 0?J():this.getColor(r);i=n.map&&n.map.isTexture===!0?e.mul(this.getTexture(`map`)):e}else if(r===e.OPACITY){let e=this.getFloat(r);i=n.alphaMap&&n.alphaMap.isTexture===!0?e.mul(this.getTexture(`alpha`)):e}else if(r===e.SPECULAR_STRENGTH)i=n.specularMap&&n.specularMap.isTexture===!0?this.getTexture(`specular`).r:W(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularIntensityMap&&n.specularIntensityMap.isTexture===!0?e.mul(this.getTexture(r).a):e}else if(r===e.SPECULAR_COLOR){let e=this.getColor(r);i=n.specularColorMap&&n.specularColorMap.isTexture===!0?e.mul(this.getTexture(r).rgb):e}else if(r===e.ROUGHNESS){let e=this.getFloat(r);i=n.roughnessMap&&n.roughnessMap.isTexture===!0?e.mul(this.getTexture(r).g):e}else if(r===e.METALNESS){let e=this.getFloat(r);i=n.metalnessMap&&n.metalnessMap.isTexture===!0?e.mul(this.getTexture(r).b):e}else if(r===e.EMISSIVE){let e=this.getFloat(`emissiveIntensity`),t=this.getColor(r).mul(e);i=n.emissiveMap&&n.emissiveMap.isTexture===!0?t.mul(this.getTexture(r)):t}else if(r===e.NORMAL)n.normalMap?(i=bN(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType,(n.normalMap.format==1030||n.normalMap.format==36285||n.normalMap.format==37490)&&(i.unpackNormalMode=`rg`)):i=n.bumpMap?CN(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):vM;else if(r===e.CLEARCOAT){let e=this.getFloat(r);i=n.clearcoatMap&&n.clearcoatMap.isTexture===!0?e.mul(this.getTexture(r).r):e}else if(r===e.CLEARCOAT_ROUGHNESS){let e=this.getFloat(r);i=n.clearcoatRoughnessMap&&n.clearcoatRoughnessMap.isTexture===!0?e.mul(this.getTexture(r).r):e}else if(r===e.CLEARCOAT_NORMAL)i=n.clearcoatNormalMap?bN(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):vM;else if(r===e.SHEEN){let e=this.getColor(`sheenColor`).mul(this.getFloat(`sheen`));i=n.sheenColorMap&&n.sheenColorMap.isTexture===!0?e.mul(this.getTexture(`sheenColor`).rgb):e}else if(r===e.SHEEN_ROUGHNESS){let e=this.getFloat(r);i=n.sheenRoughnessMap&&n.sheenRoughnessMap.isTexture===!0?e.mul(this.getTexture(r).a):e,i=i.clamp(1e-4,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=CE(cP.x,cP.y,cP.y.negate(),cP.x).mul(e.rg.mul(2).sub(q(1)).normalize().mul(e.b))}else i=cP;else if(r===e.IRIDESCENCE_THICKNESS){let e=BM(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=BM(`0`,`float`,n.iridescenceThicknessRange);i=e.sub(t).mul(this.getTexture(r).g).add(t)}else i=e}else if(r===e.TRANSMISSION){let e=this.getFloat(r);i=n.transmissionMap?e.mul(this.getTexture(r).r):e}else if(r===e.THICKNESS){let e=this.getFloat(r);i=n.thicknessMap?e.mul(this.getTexture(r).g):e}else if(r===e.IOR)i=this.getFloat(r);else if(r===e.LIGHT_MAP)i=this.getTexture(r).rgb.mul(this.getFloat(`lightMapIntensity`));else if(r===e.AO)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else if(r===e.LINE_DASH_OFFSET)i=n.dashOffset?this.getFloat(r):W(0);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};X.ALPHA_TEST=`alphaTest`,X.COLOR=`color`,X.OPACITY=`opacity`,X.SHININESS=`shininess`,X.SPECULAR=`specular`,X.SPECULAR_STRENGTH=`specularStrength`,X.SPECULAR_INTENSITY=`specularIntensity`,X.SPECULAR_COLOR=`specularColor`,X.REFLECTIVITY=`reflectivity`,X.ROUGHNESS=`roughness`,X.METALNESS=`metalness`,X.NORMAL=`normal`,X.CLEARCOAT=`clearcoat`,X.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,X.CLEARCOAT_NORMAL=`clearcoatNormal`,X.EMISSIVE=`emissive`,X.ROTATION=`rotation`,X.SHEEN=`sheen`,X.SHEEN_ROUGHNESS=`sheenRoughness`,X.ANISOTROPY=`anisotropy`,X.IRIDESCENCE=`iridescence`,X.IRIDESCENCE_IOR=`iridescenceIOR`,X.IRIDESCENCE_THICKNESS=`iridescenceThickness`,X.IOR=`ior`,X.TRANSMISSION=`transmission`,X.THICKNESS=`thickness`,X.ATTENUATION_DISTANCE=`attenuationDistance`,X.ATTENUATION_COLOR=`attenuationColor`,X.LINE_SCALE=`scale`,X.LINE_DASH_SIZE=`dashSize`,X.LINE_GAP_SIZE=`gapSize`,X.LINE_WIDTH=`linewidth`,X.LINE_DASH_OFFSET=`dashOffset`,X.POINT_SIZE=`size`,X.DISPERSION=`dispersion`,X.LIGHT_MAP=`light`,X.AO=`ao`;var TN=V(X,X.ALPHA_TEST),EN=V(X,X.COLOR),DN=V(X,X.SHININESS),ON=V(X,X.EMISSIVE),kN=V(X,X.OPACITY),AN=V(X,X.SPECULAR),jN=V(X,X.SPECULAR_INTENSITY),MN=V(X,X.SPECULAR_COLOR),NN=V(X,X.SPECULAR_STRENGTH),PN=V(X,X.REFLECTIVITY),FN=V(X,X.ROUGHNESS),IN=V(X,X.METALNESS),LN=V(X,X.NORMAL),RN=V(X,X.CLEARCOAT),zN=V(X,X.CLEARCOAT_ROUGHNESS),BN=V(X,X.CLEARCOAT_NORMAL),VN=V(X,X.ROTATION),HN=V(X,X.SHEEN),UN=V(X,X.SHEEN_ROUGHNESS),WN=V(X,X.ANISOTROPY),GN=V(X,X.IRIDESCENCE),KN=V(X,X.IRIDESCENCE_IOR),qN=V(X,X.IRIDESCENCE_THICKNESS),JN=V(X,X.TRANSMISSION),YN=V(X,X.THICKNESS),XN=V(X,X.IOR),ZN=V(X,X.ATTENUATION_DISTANCE),QN=V(X,X.ATTENUATION_COLOR),$N=V(X,X.LINE_SCALE),eP=V(X,X.LINE_DASH_SIZE),tP=V(X,X.LINE_GAP_SIZE),nP=V(X,X.LINE_WIDTH),rP=V(X,X.LINE_DASH_OFFSET),iP=V(X,X.POINT_SIZE),aP=V(X,X.DISPERSION),oP=V(X,X.LIGHT_MAP),sP=V(X,X.AO),cP=vD(new N).onReference(function(e){return e.material}).onRenderUpdate(function({material:e}){this.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation))}),lP=U(e=>e.context.setupModelViewProjection(),`vec4`).once()().toVarying(`v_modelViewProjection`),uP=rE(class extends cT{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){let 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,r=e.context.assign;if(n=e.isAvailable(`storageBuffer`)===!1?this.node.isPBO===!0&&r!==!0&&(this.node.value.isInstancedBufferAttribute||e.shaderStage!==`compute`)?e.generatePBO(this):this.node.build(e):super.generate(e),r!==!0){let r=this.getNodeType(e);n=e.format(n,r,t)}return n}}).setParameterLength(2),dP=class extends qA{static get type(){return`StorageBufferNode`}constructor(e,t=null,n=0){let r,i=null;t&&t.isStruct?(r=`struct`,i=t.layout,(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)&&(n=e.count)):t===null&&(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)?(r=Vw(e.itemSize),n=e.count):r=t,super(e,r,n),this.isStorageBufferNode=!0,this.structTypeNode=i,this.access=eT.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){let t;if(this.bufferCount===0){let n=e.globalCache.getData(this.value);n===void 0&&(n={node:this},e.globalCache.setData(this.value,n)),t=n.node.id}else t=this.id;return String(t)}getInputType(){return this.value.isIndirectStorageBufferAttribute?`indirectStorageBuffer`:`storageBuffer`}element(e){return uP(this,e)}setPBO(e){return this.isPBO=e,this}getPBO(){return this.isPBO}setAccess(e){return this.access=e,this}toReadOnly(){return this.setAccess(eT.READ_ONLY)}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}getAttributeData(){return this._attribute===null&&(this._attribute=eA(this.value),this._varying=Mk(this._attribute)),{attribute:this._attribute,varying:this._varying}}generateNodeType(e){if(this.structTypeNode!==null)return this.structTypeNode.getNodeType(e);if(e.isAvailable(`storageBuffer`)||e.isAvailable(`indirectStorageBuffer`))return super.generateNodeType(e);let{attribute:t}=this.getAttributeData();return t.getNodeType(e)}getMemberType(e,t){return this.structTypeNode===null?`void`:this.structTypeNode.getMemberType(e,t)}generate(e){if(this.structTypeNode!==null&&this.structTypeNode.build(e),e.isAvailable(`storageBuffer`)||e.isAvailable(`indirectStorageBuffer`))return super.generate(e);let{attribute:t,varying:n}=this.getAttributeData(),r=n.build(e);return e.registerTransform(r,t),r}},fP=(e,t=null,n=0)=>new dP(e,t,n),pP=class extends sT{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=Qw.FRAME,this.buffer=null,this.bufferColor=null,this.previousInstanceMatrixNode=null}get isStorageMatrix(){let{instanceMatrix:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}get isStorageColor(){let{instanceColor:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}setup(e){let{instanceMatrixNode:t,instanceColorNode:n}=this;t===null&&(t=this._createInstanceMatrixNode(!0,e),this.instanceMatrixNode=t);let{instanceColor:r,isStorageColor:i}=this;if(r&&n===null){if(i)n=fP(r,`vec3`,Math.max(r.count,1)).element(oA);else{let e=new Ro(r.array,3),t=r.usage===35048?rA:nA;this.bufferColor=e,n=J(t(e,`vec3`,3,0))}this.instanceColorNode=n}let a=t.mul(iM).xyz;if(iM.assign(a),e.needsPreviousData()&&aM.assign(this.getPreviousInstancedPosition(e)),e.hasGeometryAttribute(`normal`)){let e=xM(mM,t);mM.assign(e)}this.instanceColorNode!==null&&PE(`vec3`,`vInstanceColor`).assign(this.instanceColorNode)}update(e){this.buffer!==null&&this.isStorageMatrix!==!0&&(this.buffer.clearUpdateRanges(),this.buffer.updateRanges.push(...this.instanceMatrix.updateRanges),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.version!==this.bufferColor.version&&(this.bufferColor.version=this.instanceColor.version)),this.previousInstanceMatrixNode!==null&&e.object.previousInstanceMatrix.array.set(this.instanceMatrix.array)}getPreviousInstancedPosition(e){let t=e.object;return this.previousInstanceMatrixNode===null&&(t.previousInstanceMatrix=this.instanceMatrix.clone(),this.previousInstanceMatrixNode=this._createInstanceMatrixNode(!1,e)),this.previousInstanceMatrixNode.mul(aM).xyz}_createInstanceMatrixNode(e,t){let n,{instanceMatrix:r}=this,{count:i}=r;if(this.isStorageMatrix)n=fP(r,`mat4`,Math.max(i,1)).element(oA);else if(i*16*4<=t.getUniformBufferLimit())n=JA(r.array,`mat4`,Math.max(i,1)).element(oA);else{let t=new Df(r.array,16,1);e===!0&&(this.buffer=t);let i=r.usage===35048?rA:nA;n=TE(i(t,`vec4`,16,0),i(t,`vec4`,16,4),i(t,`vec4`,16,8),i(t,`vec4`,16,12))}return n}},mP=rE(pP).setParameterLength(2,3),hP=rE(class extends pP{static get type(){return`InstancedMeshNode`}constructor(e){let{count:t,instanceMatrix:n,instanceColor:r}=e;super(t,n,r),this.instancedMesh=e}}).setParameterLength(1),gP=rE(class extends sT{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=oA:this.batchingIdNode=uA);let t=U(([e])=>{let t=G(FA(UA(this.batchMesh._indirectTexture),0).x).toConst(),n=G(e).mod(t).toConst(),r=G(e).div(t).toConst();return UA(this.batchMesh._indirectTexture,pE(n,r)).x}).setLayout({name:`getIndirectIndex`,type:`uint`,inputs:[{name:`id`,type:`int`}]})(G(this.batchingIdNode)),n=this.batchMesh._matricesTexture,r=G(FA(UA(n),0).x).toConst(),i=W(t).mul(4).toInt().toConst(),a=i.mod(r).toConst(),o=i.div(r).toConst(),s=TE(UA(n,pE(a,o)),UA(n,pE(a.add(1),o)),UA(n,pE(a.add(2),o)),UA(n,pE(a.add(3),o))),c=this.batchMesh._colorsTexture;if(c!==null){let e=U(([e])=>{let t=G(FA(UA(c),0).x).toConst(),n=e;return UA(c,pE(n.mod(t).toConst(),n.div(t).toConst())).rgb}).setLayout({name:`getBatchingColor`,type:`vec3`,inputs:[{name:`id`,type:`int`}]})(t);PE(`vec3`,`vBatchColor`).assign(e)}let l=wE(s);iM.assign(s.mul(iM));let u=mM.div(J(l[0].dot(l[0]),l[1].dot(l[1]),l[2].dot(l[2]))),d=l.mul(u).xyz;mM.assign(d),e.hasGeometryAttribute(`tangent`)&&aN.mulAssign(l)}}).setParameterLength(1),_P=new WeakMap,vP=class extends sT{static get type(){return`SkinningNode`}constructor(e){super(`void`),this.skinnedMesh=e,this.updateType=Qw.OBJECT,this.skinIndexNode=NA(`skinIndex`,`uvec4`),this.skinWeightNode=NA(`skinWeight`,`vec4`),this.bindMatrixNode=BM(`bindMatrix`,`mat4`),this.bindMatrixInverseNode=BM(`bindMatrixInverse`,`mat4`),this.boneMatricesNode=VM(`skeleton.boneMatrices`,`mat4`,e.skeleton.bones.length),this.positionNode=iM,this.toPositionNode=iM,this.previousBoneMatricesNode=null}getSkinnedPosition(e=this.boneMatricesNode,t=this.positionNode){let{skinIndexNode:n,skinWeightNode:r,bindMatrixNode:i,bindMatrixInverseNode:a}=this,o=e.element(n.x),s=e.element(n.y),c=e.element(n.z),l=e.element(n.w),u=i.mul(t),d=ED(o.mul(r.x).mul(u),s.mul(r.y).mul(u),c.mul(r.z).mul(u),l.mul(r.w).mul(u));return a.mul(d).xyz}getSkinnedNormalAndTangent(e=this.boneMatricesNode,t=mM,n=aN){let{skinIndexNode:r,skinWeightNode:i,bindMatrixNode:a,bindMatrixInverseNode:o}=this,s=e.element(r.x),c=e.element(r.y),l=e.element(r.z),u=e.element(r.w),d=ED(i.x.mul(s),i.y.mul(c),i.z.mul(l),i.w.mul(u));return d=o.mul(d).mul(a),{skinNormal:d.transformDirection(t).xyz,skinTangent:d.transformDirection(n).xyz}}getPreviousSkinnedPosition(e){let t=e.object;return this.previousBoneMatricesNode===null&&(t.skeleton.previousBoneMatrices=new Float32Array(t.skeleton.boneMatrices),this.previousBoneMatricesNode=VM(`skeleton.previousBoneMatrices`,`mat4`,t.skeleton.bones.length)),this.getSkinnedPosition(this.previousBoneMatricesNode,aM)}setup(e){e.needsPreviousData()&&aM.assign(this.getPreviousSkinnedPosition(e));let t=this.getSkinnedPosition();if(this.toPositionNode&&this.toPositionNode.assign(t),e.hasGeometryAttribute(`normal`)){let{skinNormal:t,skinTangent:n}=this.getSkinnedNormalAndTangent();mM.assign(t),e.hasGeometryAttribute(`tangent`)&&aN.assign(n)}return t}generate(e,t){if(t!==`void`)return super.generate(e,t)}update(e){let t=e.object&&e.object.skeleton?e.object.skeleton:this.skinnedMesh.skeleton;_P.get(t)!==e.frameId&&(_P.set(t,e.frameId),this.previousBoneMatricesNode!==null&&(t.previousBoneMatrices===null&&(t.previousBoneMatrices=new Float32Array(t.boneMatrices)),t.previousBoneMatrices.set(t.boneMatrices)),t.update())}},yP=e=>new vP(e),bP=(e,t=null)=>{let n=new vP(e);return n.positionNode=fP(new Ro(e.geometry.getAttribute(`position`).array,3),`vec3`).setPBO(!0).toReadOnly().element(oA).toVar(),n.skinIndexNode=fP(new Ro(new Uint32Array(e.geometry.getAttribute(`skinIndex`).array),4),`uvec4`).setPBO(!0).toReadOnly().element(oA).toVar(),n.skinWeightNode=fP(new Ro(e.geometry.getAttribute(`skinWeight`).array,4),`vec4`).setPBO(!0).toReadOnly().element(oA).toVar(),n.bindMatrixNode=vD(e.bindMatrix,`mat4`),n.bindMatrixInverseNode=vD(e.bindMatrixInverse,`mat4`),n.boneMatricesNode=JA(e.skeleton.boneMatrices,`mat4`,e.skeleton.bones.length),n.toPositionNode=t,B(n)},xP=class extends sT{static get type(){return`LoopNode`}constructor(e=[]){super(`void`),this.params=e}getVarName(e){return String.fromCharCode(105+e)}getProperties(e){let t=e.getNodeProperties(this);if(t.stackNode!==void 0)return t;let n={};for(let e=0,t=this.params.length-1;e<t;e++){let t=this.params[e],r=t.isNode!==!0&&t.name||this.getVarName(e);n[r]=xA(r,t.isNode!==!0&&t.type||`int`)}let r=e.addStack(),i=this.params[this.params.length-1](n);t.returnsNode=i.context({nodeLoop:i}),t.stackNode=r;let a=this.params[0];if(a.isNode!==!0&&typeof a.update==`function`){let e=U(this.params[0].update)(n);t.updateNode=e.context({nodeLoop:e})}return e.removeStack(),t}setup(e){if(this.getProperties(e),e.fnCall){let t=e.getDataFromNode(e.fnCall.shaderNode);t.hasLoop=!0}}generate(e){let t=this.getProperties(e),n=this.params,r=t.stackNode;for(let r=0,i=n.length-1;r<i;r++){let i=n[r],a=!1,o=null,s=null,c=null,l=null,u=null,d=null;i.isNode?i.getNodeType(e)===`bool`?(a=!0,l=`bool`,s=i.build(e,l)):(l=`int`,c=this.getVarName(r),o=`0`,s=i.build(e,l),u=`<`):(l=i.type||`int`,c=i.name||this.getVarName(r),o=i.start,s=i.end,u=i.condition,d=i.update,typeof o==`number`?o=e.generateConst(l,o):o&&o.isNode&&(o=o.build(e,l)),typeof s==`number`?s=e.generateConst(l,s):s&&s.isNode&&(s=s.build(e,l)),o!==void 0&&s===void 0?(o+=` - 1`,s=`0`,u=`>=`):s!==void 0&&o===void 0&&(o=`0`,u=`<`),u===void 0&&(u=Number(o)>Number(s)?`>=`:`<`));let f;if(a)f=`while ( ${s} )`;else{let n={start:o,end:s},r=n.start,i=n.end,a,p=()=>u.includes(`<`)?`+=`:`-=`;if(d!=null)switch(typeof d){case`function`:a=e.flowStagesNode(t.updateNode,`void`).code.replace(/\t|;/g,``);break;case`number`:a=c+` `+p()+` `+e.generateConst(l,d);break;case`string`:a=c+` `+d;break;default:d.isNode?a=c+` `+p()+` `+d.build(e):(M(`TSL: 'Loop( { update: ... } )' is not a function, string or number.`,this.stackTrace),a=`break /* invalid update */`)}else d=l===`int`||l===`uint`?u.includes(`<`)?`++`:`--`:p()+` 1.`,a=c+` `+d;f=`for ( ${e.getVar(l,c)+` = `+r}; ${c+` `+u+` `+i}; ${a} )`}e.addFlowCode((r===0?`
4126
+ `,Pn(i)}return n}},DA=(e,t=null)=>new EA(B(e),t).toStack();z(`debug`,DA);var OA=class extends Bn{constructor(){super(),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(){}},kA=class extends sT{static get type(){return`InspectorNode`}constructor(e,t=``,n=null){super(),this.node=e,this.name=t,this.callback=n,this.updateType=Qw.FRAME,this.isInspectorNode=!0}getName(){return this.name||this.node.name}update(e){e.renderer.inspector.inspect(this)}generateNodeType(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!==OA&&In(`TSL: ".toInspector()" is only available with WebGPU.`),t}};function AA(e,t=``,n=null){return e=B(e),e.before(new kA(e,t,n))}z(`toInspector`,AA);function jA(e){j(`TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add`,e)}var MA=class extends sT{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}generateNodeType(e){let t=this.nodeType;if(t===null){let n=this.getAttributeName(e);if(e.hasGeometryAttribute(n)){let 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){let t=this.getAttributeName(e),n=this.getNodeType(e);if(e.hasGeometryAttribute(t)===!0){let r=e.geometry.getAttribute(t),i=e.getTypeFromAttribute(r),a=e.getAttribute(t,i);return e.shaderStage===`vertex`?e.format(a.name,i,n):Mk(this).build(e,n)}else return j(`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}},NA=(e,t=null)=>new MA(e,t),PA=(e=0)=>NA(`uv`+(e>0?e:``),`vec2`),FA=rE(class extends sT{static get type(){return`TextureSizeNode`}constructor(e,t=null){super(`uvec2`),this.isTextureSizeNode=!0,this.textureNode=e,this.levelNode=t}generate(e,t){let 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)}}).setParameterLength(1,2),IA=rE(class extends _D{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=Qw.FRAME}get textureNode(){return this._textureNode}get texture(){return this._textureNode.value}update(){let 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){let{width:e,height:t}=n;this.value=Math.log2(Math.max(e,t))}}}).setParameterLength(1),LA=class extends Error{constructor(e,t=null){super(e),this.name=`NodeError`,this.stackTrace=t}},RA=new Mr,zA=class extends _D{static get type(){return`TextureNode`}constructor(e=RA,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=Qw.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}generateNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return PA(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=vD(this.value.matrix)),this._matrixUniform.mul(J(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this}setupUV(e,t){return e.isFlipY()&&(this._flipYUniform===null&&(this._flipYUniform=vD(!1)),t=t.toVar(),t=this.sampler?this._flipYUniform.select(t.flipY(),t):this._flipYUniform.select(t.setY(G(FA(this,this.levelNode).y).sub(t.y).sub(1)),t)),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.value;if(!n||n.isTexture!==!0)throw new LA("THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().",this.stackTrace);let r=U(()=>{let t=this.uvNode;return(t===null||e.context.forceUVContext===!0)&&e.context.getUV&&(t=e.context.getUV(this,e)),t||=this.getDefaultUV(),this.updateMatrix===!0&&(t=this.getTransformedUV(t)),t=this.setupUV(e,t),this.updateType=this._matrixUniform!==null||this._flipYUniform!==null?Qw.OBJECT:Qw.NONE,t})(),i=this.levelNode;i===null&&e.context.getTextureLevel&&(i=e.context.getTextureLevel(this));let a=null,o=null;if(this.compareNode!==null)if(e.renderer.hasCompatibility(Cn.TEXTURE_COMPARE))a=this.compareNode;else{let e=n.compareFunction;e===null||e===513||e===515||e===516||e===518?o=this.compareNode:(a=this.compareNode,In(`TSL: Only "LessCompare", "LessEqualCompare", "GreaterCompare" and "GreaterEqualCompare" are supported for depth texture comparison fallback.`))}t.uvNode=r,t.levelNode=i,t.biasNode=this.biasNode,t.compareNode=a,t.compareStepNode=o,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,i,a,o,s,c){let l=this.value,u;return u=i?e.generateTextureBias(l,t,n,i,a,c):s?e.generateTextureGrad(l,t,n,s,a,c):o?e.generateTextureCompare(l,t,n,o,a,c):this.sampler===!1?e.generateTextureLoad(l,t,n,r,a,c):r?e.generateTextureLevel(l,t,n,r,a,c):e.generateTexture(l,t,n,a,c),u}generate(e,t){let n=this.value,r=e.getNodeProperties(this),i=super.generate(e,`property`);if(/^sampler/.test(t))return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=this.getNodeType(e),s=a.propertyName;if(s===void 0){let{uvNode:t,levelNode:c,biasNode:l,compareNode:u,compareStepNode:d,depthNode:f,gradNode:p,offsetNode:m}=r,h=this.generateUV(e,t),g=c?c.build(e,`float`):null,_=l?l.build(e,`float`):null,v=f?f.build(e,`int`):null,y=u?u.build(e,`float`):null,b=d?d.build(e,`float`):null,x=p?[p[0].build(e,`vec2`),p[1].build(e,`vec2`)]:null,S=m?this.generateOffset(e,m):null,C=v;C===null&&n.isArrayTexture&&this.isTexture3DNode!==!0&&(C=`0`);let w=e.getVarFromNode(this);s=e.getPropertyName(w);let T=this.generateSnippet(e,i,h,g,_,C,y,x,S);if(b!==null){let t=n.compareFunction;T=t===516||t===518?KO(xA(T,o),xA(b,`float`)).build(e,o):KO(xA(b,`float`),xA(T,o)).build(e,o)}e.addLineFlowCode(`${s} = ${T}`,this),a.snippet=T,a.propertyName=s}let c=s;return e.needsToWorkingColorSpace(n)&&(c=Bk(xA(c,o),n.colorSpace).setup(e).build(e,o)),e.format(c,o,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}sample(e){let t=this.clone();return t.uvNode=B(e),t.referenceNode=this.getBase(),B(t)}load(e){return this.sample(e).setSampler(!1)}blur(e){let t=this.clone();t.biasNode=B(e).mul(IA(t)),t.referenceNode=this.getBase();let n=t.value;return t.generateMipmaps===!1&&(n&&n.generateMipmaps===!1||n.minFilter===1003||n.magFilter===1003)&&(j(`TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture.`),t.biasNode=null),B(t)}level(e){let t=this.clone();return t.levelNode=B(e),t.referenceNode=this.getBase(),B(t)}size(e){return FA(this,e)}bias(e){let t=this.clone();return t.biasNode=B(e),t.referenceNode=this.getBase(),B(t)}getBase(){return this.referenceNode?this.referenceNode.getBase():this}compare(e){let t=this.clone();return t.compareNode=B(e),t.referenceNode=this.getBase(),B(t)}grad(e,t){let n=this.clone();return n.gradNode=[B(e),B(t)],n.referenceNode=this.getBase(),B(n)}depth(e){let t=this.clone();return t.depthNode=B(e),t.referenceNode=this.getBase(),B(t)}offset(e){let t=this.clone();return t.offsetNode=B(e),t.referenceNode=this.getBase(),B(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(){let e=this.value,t=this._matrixUniform;t!==null&&(t.value=e.matrix),e.matrixAutoUpdate===!0&&e.updateMatrix();let n=this._flipYUniform;n!==null&&(n.value=e.image instanceof ImageBitmap&&e.flipY===!0||e.isRenderTargetTexture===!0||e.isFramebufferTexture===!0||e.isDepthTexture===!0)}clone(){let 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}},BA=rE(zA).setParameterLength(1,4).setName(`texture`),VA=(e=RA,t=null,n=null,r=null)=>{let i;return e&&e.isTextureNode===!0?(i=B(e.clone()),i.referenceNode=e.getBase(),t!==null&&(i.uvNode=B(t)),n!==null&&(i.levelNode=B(n)),r!==null&&(i.biasNode=B(r))):i=BA(e,t,n,r),i},HA=(e=RA)=>VA(e),UA=(...e)=>VA(...e).setSampler(!1),WA=(e,t,n)=>VA(e,t).level(n),GA=e=>(e.isNode===!0?e:VA(e)).convert(`sampler`),KA=e=>(e.isNode===!0?e:VA(e)).convert(`samplerComparison`),qA=class extends _D{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`}},JA=(e,t,n)=>new qA(e,t,n),YA=class extends cT{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType(e),r=this.node.getPaddedType();return e.format(t,r,n)}},XA=class extends qA{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null),this.array=e,this.elementType=t===null?Kw(e[0]):t,this.paddedType=this.getPaddedType(),this.updateType=Qw.RENDER,this.isArrayBufferNode=!0}generateNodeType(){return this.paddedType}getElementType(){return this.elementType}getPaddedType(){let e=this.elementType,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(){let{array:e,value:t}=this,n=this.elementType;if(n===`float`||n===`int`||n===`uint`)for(let n=0;n<e.length;n++){let r=n*4;t[r]=e[n]}else if(n===`color`)for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.r,t[r+1]=i.g,t[r+2]=i.b||0}else if(n===`mat2`)for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.elements[0],t[r+1]=i.elements[1],t[r+2]=i.elements[2],t[r+3]=i.elements[3]}else if(n===`mat3`)for(let n=0;n<e.length;n++){let r=n*16,i=e[n];t[r]=i.elements[0],t[r+1]=i.elements[1],t[r+2]=i.elements[2],t[r+4]=i.elements[3],t[r+5]=i.elements[4],t[r+6]=i.elements[5],t[r+8]=i.elements[6],t[r+9]=i.elements[7],t[r+10]=i.elements[8],t[r+15]=1}else if(n===`mat4`)for(let n=0;n<e.length;n++){let r=n*16,i=e[n];for(let e=0;e<i.elements.length;e++)t[r+e]=i.elements[e]}else for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.x,t[r+1]=i.y,t[r+2]=i.z||0,t[r+3]=i.w||0}}setup(e){let t=this.array.length,n=this.elementType,r=Float32Array,i=this.paddedType,a=e.getTypeLength(i);return n.charAt(0)===`i`&&(r=Int32Array),n.charAt(0)===`u`&&(r=Uint32Array),this.value=new r(t*a),this.bufferCount=t,this.bufferType=i,this.update(),super.setup(e)}element(e){return new YA(this,B(e))}},ZA=(e,t)=>new XA(e,t),QA=rE(class extends sT{constructor(e){super(`float`),this.name=e,this.isBuiltinNode=!0}generate(){return this.name}}).setParameterLength(1),$A,ej,tj=class e extends sT{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this._output=null,this.isViewportNode=!0}generateNodeType(){return this.scope===e.DPR?`float`:this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=Qw.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT||this.scope===e.DPR)&&(t=Qw.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(ej),ej.multiplyScalar(t.getPixelRatio())):ej.copy(n.viewport):this.scope===e.DPR?this._output.value=t.getPixelRatio():n===null?t.getDrawingBufferSize($A):($A.width=n.width,$A.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?vD($A||=new N):t===e.VIEWPORT?vD(ej||=new Nr):t===e.DPR?vD(1):q(aj.div(ij)),this._output=n,n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(ij).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};tj.COORDINATE=`coordinate`,tj.VIEWPORT=`viewport`,tj.SIZE=`size`,tj.UV=`uv`,tj.DPR=`dpr`;var nj=V(tj,tj.DPR),rj=V(tj,tj.UV),ij=V(tj,tj.SIZE),aj=V(tj,tj.COORDINATE),oj=V(tj,tj.VIEWPORT),sj=oj.zw,cj=aj.sub(oj.xy),lj=cj.div(sj),uj=U(()=>(j(`TSL: "viewportResolution" is deprecated. Use "screenSize" instead.`,new Pw),ij),`vec2`).once()(),dj=null,fj=null,pj=null,mj=null,hj=null,gj=null,_j=null,vj=null,yj=null,bj=null,xj=null,Sj=null,Cj=null,wj=null,Tj=vD(0,`uint`).setName(`u_cameraIndex`).setGroup(pD(`cameraIndex`)).toVarying(`v_cameraIndex`),Ej=vD(`float`).setName(`cameraNear`).setGroup(hD).onRenderUpdate(({camera:e})=>e.near),Dj=vD(`float`).setName(`cameraFar`).setGroup(hD).onRenderUpdate(({camera:e})=>e.far),Oj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.projectionMatrix);fj===null?fj=ZA(n).setGroup(hD).setName(`cameraProjectionMatrices`):fj.array=n,t=fj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraProjectionMatrix`)}else dj===null&&(dj=vD(e.projectionMatrix).setName(`cameraProjectionMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.projectionMatrix)),t=dj;return t}).once()(),kj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.projectionMatrixInverse);mj===null?mj=ZA(n).setGroup(hD).setName(`cameraProjectionMatricesInverse`):mj.array=n,t=mj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraProjectionMatrixInverse`)}else pj===null&&(pj=vD(e.projectionMatrixInverse).setName(`cameraProjectionMatrixInverse`).setGroup(hD).onRenderUpdate(({camera:e})=>e.projectionMatrixInverse)),t=pj;return t}).once()(),Aj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.matrixWorldInverse);gj===null?gj=ZA(n).setGroup(hD).setName(`cameraViewMatrices`):gj.array=n,t=gj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraViewMatrix`)}else hj===null&&(hj=vD(e.matrixWorldInverse).setName(`cameraViewMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.matrixWorldInverse)),t=hj;return t}).once()(),jj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.matrixWorld);vj===null?vj=ZA(n).setGroup(hD).setName(`cameraWorldMatrices`):vj.array=n,t=vj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraWorldMatrix`)}else _j===null&&(_j=vD(e.matrixWorld).setName(`cameraWorldMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.matrixWorld)),t=_j;return t}).once()(),Mj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.normalMatrix);bj===null?bj=ZA(n).setGroup(hD).setName(`cameraNormalMatrices`):bj.array=n,t=bj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraNormalMatrix`)}else yj===null&&(yj=vD(e.normalMatrix).setName(`cameraNormalMatrix`).setGroup(hD).onRenderUpdate(({camera:e})=>e.normalMatrix)),t=yj;return t}).once()(),Nj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t=0,r=e.cameras.length;t<r;t++)n.push(new P);Sj===null?Sj=ZA(n).setGroup(hD).setName(`cameraPositions`).onRenderUpdate(({camera:e},t)=>{let n=e.cameras,r=t.array;for(let e=0,t=n.length;e<t;e++)r[e].setFromMatrixPosition(n[e].matrixWorld)}):Sj.array=n,t=Sj.element(e.isMultiViewCamera?QA(`gl_ViewID_OVR`):Tj).toConst(`cameraPosition`)}else xj===null&&(xj=vD(new P).setName(`cameraPosition`).setGroup(hD).onRenderUpdate(({camera:e},t)=>t.value.setFromMatrixPosition(e.matrixWorld))),t=xj;return t}).once()(),Pj=U(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.viewport);wj===null?wj=ZA(n,`vec4`).setGroup(hD).setName(`cameraViewports`):wj.array=n,t=wj.element(Tj).toConst(`cameraViewport`)}else Cj===null&&(Cj=yE(0,0,ij.x,ij.y).toConst(`cameraViewport`)),t=Cj;return t}).once()(),Fj=new ba,Ij=class e extends sT{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=Qw.OBJECT,this.uniformNode=new _D(null)}generateNodeType(){let t=this.scope;if(t===e.WORLD_MATRIX)return`mat4`;if(t===e.POSITION||t===e.VIEW_POSITION||t===e.DIRECTION||t===e.SCALE)return`vec3`;if(t===e.RADIUS)return`float`}update(t){let n=this.object3d,r=this.uniformNode,i=this.scope;if(i===e.WORLD_MATRIX)r.value=n.matrixWorld;else if(i===e.POSITION)r.value=r.value||new P,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new P,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new P,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new P,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}else if(i===e.RADIUS){let e=t.object.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),Fj.copy(e.boundingSphere).applyMatrix4(n.matrixWorld),r.value=Fj.radius}}generate(t){let n=this.scope;return n===e.WORLD_MATRIX?this.uniformNode.nodeType=`mat4`:n===e.POSITION||n===e.VIEW_POSITION||n===e.DIRECTION||n===e.SCALE?this.uniformNode.nodeType=`vec3`:n===e.RADIUS&&(this.uniformNode.nodeType=`float`),this.uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};Ij.WORLD_MATRIX=`worldMatrix`,Ij.POSITION=`position`,Ij.SCALE=`scale`,Ij.VIEW_POSITION=`viewPosition`,Ij.DIRECTION=`direction`,Ij.RADIUS=`radius`;var Lj=rE(Ij,Ij.DIRECTION).setParameterLength(1),Rj=rE(Ij,Ij.WORLD_MATRIX).setParameterLength(1),zj=rE(Ij,Ij.POSITION).setParameterLength(1),Bj=rE(Ij,Ij.SCALE).setParameterLength(1),Vj=rE(Ij,Ij.VIEW_POSITION).setParameterLength(1),Hj=rE(Ij,Ij.RADIUS).setParameterLength(1),Uj=class extends Ij{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}},Wj=V(Uj,Uj.DIRECTION),Gj=V(Uj,Uj.WORLD_MATRIX),Kj=V(Uj,Uj.POSITION),qj=V(Uj,Uj.SCALE),Jj=V(Uj,Uj.VIEW_POSITION),Yj=V(Uj,Uj.RADIUS),Xj=vD(new _r).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),Zj=vD(new F).onObjectUpdate(({object:e},t)=>t.value.copy(e.matrixWorld).invert()),Qj=U(e=>e.context.modelViewMatrix||$j).once()().toVar(`modelViewMatrix`),$j=Aj.mul(Gj),eM=U(e=>(e.context.isHighPrecisionModelViewMatrix=!0,vD(`mat4`).onObjectUpdate(({object:e,camera:t})=>e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld)))).once()().toVar(`highpModelViewMatrix`),tM=U(e=>{let t=e.context.isHighPrecisionModelViewMatrix;return vD(`mat3`).onObjectUpdate(({object:e,camera:n})=>(t!==!0&&e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix)))}).once()().toVar(`highpModelNormalViewMatrix`),nM=U(e=>e.shaderStage===`fragment`?e.context.clipSpace.toVarying(`v_clipSpace`):(In("TSL: `clipSpace` is only available in fragment stage."),yE())).once()(),rM=NA(`position`,`vec3`),iM=rM.toVarying(`positionLocal`),aM=rM.toVarying(`positionPrevious`),oM=U(e=>Gj.mul(iM).xyz.toVarying(e.getSubBuildProperty(`v_positionWorld`)),`vec3`).once([`POSITION`])(),sM=U(()=>iM.transformDirection(Gj).toVarying(`v_positionWorldDirection`).normalize().toVar(`positionWorldDirection`),`vec3`).once([`POSITION`])(),cM=U(e=>{if(e.shaderStage===`fragment`&&e.material.vertexNode){let e=kj.mul(nM);return e.xyz.div(e.w).toVar(`positionView`)}return e.context.setupPositionView().toVarying(`v_positionView`)},`vec3`).once([`POSITION`,`VERTEX`])(),lM=U(e=>{let t;return t=e.camera.isOrthographicCamera?J(0,0,1):cM.negate().toVarying(`v_positionViewDirection`).normalize(),t.toVar(`positionViewDirection`)},`vec3`).once([`POSITION`])(),uM=V(class extends sT{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){if(e.shaderStage!==`fragment`)return`true`;let{material:t}=e;return t.side===1?`false`:e.getFrontFacing()}}),dM=W(uM).mul(2).sub(1),fM=U(([e],{material:t})=>{let n=t.side;return n===1?e=e.mul(-1):n===2&&(e=e.mul(dM)),e}),pM=NA(`normal`,`vec3`),mM=U(e=>e.geometry.hasAttribute(`normal`)===!1?(j(`TSL: Vertex attribute "normal" not found on geometry.`),J(0,1,0)):pM,`vec3`).once()().toVar(`normalLocal`),hM=cM.dFdx().cross(cM.dFdy()).normalize().toVar(`normalFlat`),gM=U(e=>{let t;return t=e.isFlatShading()?hM:SM(mM).toVarying(`v_normalViewGeometry`).normalize(),t},`vec3`).once()().toVar(`normalViewGeometry`),_M=U(e=>{let t=gM.transformDirection(Aj);return e.isFlatShading()!==!0&&(t=t.toVarying(`v_normalWorldGeometry`)),t.normalize().toVar(`normalWorldGeometry`)},`vec3`).once()(),vM=U(e=>{let t;return e.subBuildFn===`NORMAL`||e.subBuildFn===`VERTEX`?(t=gM,e.isFlatShading()!==!0&&(t=fM(t))):t=e.context.setupNormal().context({getUV:null,getTextureLevel:null}),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`normalView`),yM=vM.transformDirection(Aj).toVar(`normalWorld`),bM=U(({subBuildFn:e,context:t})=>{let n;return n=e===`NORMAL`||e===`VERTEX`?vM:t.setupClearcoatNormal().context({getUV:null,getTextureLevel:null}),n},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`clearcoatNormalView`),xM=U(([e,t=Gj])=>{let n=wE(t),r=e.div(J(n[0].dot(n[0]),n[1].dot(n[1]),n[2].dot(n[2])));return n.mul(r).xyz}),SM=U(([e],t)=>{let n=t.context.modelNormalViewMatrix;if(n)return n.transformDirection(e);let r=Xj.mul(e);return Aj.transformDirection(r)}),CM=U(()=>(j(`TSL: "transformedNormalView" is deprecated. Use "normalView" instead.`),vM)).once([`NORMAL`,`VERTEX`])(),wM=U(()=>(j(`TSL: "transformedNormalWorld" is deprecated. Use "normalWorld" instead.`),yM)).once([`NORMAL`,`VERTEX`])(),TM=U(()=>(j(`TSL: "transformedClearcoatNormalView" is deprecated. Use "clearcoatNormalView" instead.`),bM)).once([`NORMAL`,`VERTEX`])(),EM=new F,DM=vD(0).onReference(({material:e})=>e).onObjectUpdate(({material:e})=>e.refractionRatio),OM=vD(1).onReference(({material:e})=>e).onObjectUpdate(function({material:e,scene:t}){return e.envMap?e.envMapIntensity:t.environmentIntensity}),kM=vD(new F).onReference(function(e){return e.material}).onObjectUpdate(function({material:e,scene:t}){let n=t.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation;return n?EM.makeRotationFromEuler(n).transpose():EM.identity(),EM}),AM=lM.negate().reflect(vM),jM=lM.negate().refract(vM,DM),MM=AM.transformDirection(Aj).toVar(`reflectVector`),NM=jM.transformDirection(Aj).toVar(`reflectVector`),PM=new Xs,FM=rE(class extends zA{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(){let e=this.value;return e.mapping===301?MM:e.mapping===302?NM:(M(`CubeTextureNode: Mapping "%s" not supported.`,e.mapping),J(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return n.isDepthTexture===!0?e.renderer.coordinateSystem===2001?J(t.x,t.y.negate(),t.z):t:(t=kM.mul(t),(e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture)&&(t=J(t.x.negate(),t.yz)),t)}generateUV(e,t){return t.build(e,this.sampler===!0?`vec3`:`ivec3`)}}).setParameterLength(1,4).setName(`cubeTexture`),IM=(e=PM,t=null,n=null,r=null)=>{let i;return e&&e.isCubeTextureNode===!0?(i=B(e.clone()),i.referenceNode=e,t!==null&&(i.uvNode=B(t)),n!==null&&(i.levelNode=B(n)),r!==null&&(i.biasNode=B(r))):i=FM(e,t,n,r),i},LM=(e=PM)=>FM(e),RM=class extends cT{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}generateNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(e),r=this.getNodeType(e);return e.format(t,n,r)}},zM=class extends sT{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=Qw.OBJECT}element(e){return new RM(this,B(e))}setGroup(e){return this.group=e,this}setName(e){return this.name=e,this}label(e){return j(`TSL: "label()" has been deprecated. Use "setName()" instead.`),this.setName(e)}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?ZA(null,e):e===`texture`?VA(null):e===`cubeTexture`?IM(null):vD(null,e):JA(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.setName(this.name),this.node=t}generateNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;e<t.length;e++)n=n[t[e]];return n}updateReference(e){return this.reference=this.object===null?e.object:this.object,this.reference}setup(){return this.updateValue(),this.node}update(){this.updateValue()}updateValue(){this.node===null&&this.setNodeType(this.uniformType);let e=this.getValueFromReference();Array.isArray(e)?this.node.array=e:this.node.value=e}},BM=(e,t,n)=>new zM(e,t,n),VM=(e,t,n,r)=>new zM(e,t,r,n),HM=class extends zM{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?e.material:this.material,this.reference}},UM=(e,t,n=null)=>new HM(e,t,n),WM=PA(),GM=cM.dFdx(),KM=cM.dFdy(),qM=WM.dFdx(),JM=WM.dFdy(),YM=vM,XM=KM.cross(YM),ZM=YM.cross(GM),QM=XM.mul(qM.x).add(ZM.mul(JM.x)),$M=XM.mul(qM.y).add(ZM.mul(JM.y)),eN=QM.dot(QM).max($M.dot($M)),tN=eN.equal(0).select(0,eN.inverseSqrt()),nN=QM.mul(tN).toVar(`tangentViewFrame`),rN=$M.mul(tN).toVar(`bitangentViewFrame`),iN=NA(`tangent`,`vec4`),aN=iN.xyz.toVar(`tangentLocal`),oN=U(e=>{let t;return t=e.subBuildFn===`VERTEX`||e.geometry.hasAttribute(`tangent`)?Qj.mul(yE(aN,0)).xyz.toVarying(`v_tangentView`).normalize():nN,e.isFlatShading()!==!0&&(t=fM(t)),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`tangentView`),sN=oN.transformDirection(Aj).toVarying(`v_tangentWorld`).normalize().toVar(`tangentWorld`),cN=U(([e,t],n)=>{let r=e.mul(iN.w).xyz;return n.subBuildFn===`NORMAL`&&n.isFlatShading()!==!0&&(r=r.toVarying(t)),r}).once([`NORMAL`]),lN=cN(pM.cross(iN),`v_bitangentGeometry`).normalize().toVar(`bitangentGeometry`),uN=cN(mM.cross(aN),`v_bitangentLocal`).normalize().toVar(`bitangentLocal`),dN=U(e=>{let t;return t=e.subBuildFn===`VERTEX`||e.geometry.hasAttribute(`tangent`)?cN(vM.cross(oN),`v_bitangentView`).normalize():rN,e.isFlatShading()!==!0&&(t=fM(t)),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`bitangentView`),fN=cN(yM.cross(sN),`v_bitangentWorld`).normalize().toVar(`bitangentWorld`),pN=wE(oN,dN,vM).toVar(`TBNViewMatrix`),mN=lM.mul(pN),hN=(e,t)=>e.sub(mN.mul(t)),gN=U(()=>{let e=XE.cross(lM);return e=e.cross(XE).normalize(),e=ak(e,vM,JE.mul(RE.oneMinus()).oneMinus().pow2().pow2()).normalize(),e}).once()(),_N=e=>B(e).mul(.5).add(.5),vN=e=>B(e).mul(2).sub(1),yN=e=>J(e,fO(sk(W(1).sub(XO(e,e))))),bN=rE(class extends uT{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0,this.unpackNormalMode=``}setup(e){let{normalMapType:t,scaleNode:n,unpackNormalMode:r}=this,i=this.node.mul(2).sub(1);if(t===0?r===`rg`?i=yN(i.xy):r===`ga`?i=yN(i.yw):r!==``&&M(`THREE.NodeMaterial: Unexpected unpack normal mode: ${r}`):r!==``&&M(`THREE.NodeMaterial: Normal map type '${t}' is not compatible with unpack normal mode '${r}'`),n!==null){let t=n;e.isFlatShading()===!0&&(t=fM(t)),i=J(i.xy.mul(t),i.z)}let a=null;return t===1?a=SM(i):t===0?a=pN.mul(i).normalize():(M(`NodeMaterial: Unsupported normal map type: ${t}`),a=vM),a}}).setParameterLength(1,2),xN=U(({textureNode:e,bumpScale:t})=>{let n=t=>e.isolate().context({getUV:e=>t(e.uvNode||PA()),forceUVContext:!0}),r=W(n(e=>e));return q(W(n(e=>e.add(e.dFdx()))).sub(r),W(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),SN=U(e=>{let{surf_pos:t,surf_norm:n,dHdxy:r}=e,i=t.dFdx().normalize(),a=t.dFdy().normalize(),o=n,s=a.cross(o),c=o.cross(i),l=i.dot(s).mul(dM),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),CN=rE(class extends uT{static get type(){return`BumpMapNode`}constructor(e,t=null){super(`vec3`),this.textureNode=e,this.scaleNode=t}setup(){let e=this.scaleNode===null?1:this.scaleNode;return SN({surf_pos:cM,surf_norm:vM,dHdxy:xN({textureNode:this.textureNode,bumpScale:e})})}}).setParameterLength(1,2),wN=new Map,X=class e extends sT{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=wN.get(e);return n===void 0&&(n=UM(e,t),wN.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(t){let n=t.context.material,r=this.scope,i=null;if(r===e.COLOR){let e=n.color===void 0?J():this.getColor(r);i=n.map&&n.map.isTexture===!0?e.mul(this.getTexture(`map`)):e}else if(r===e.OPACITY){let e=this.getFloat(r);i=n.alphaMap&&n.alphaMap.isTexture===!0?e.mul(this.getTexture(`alpha`)):e}else if(r===e.SPECULAR_STRENGTH)i=n.specularMap&&n.specularMap.isTexture===!0?this.getTexture(`specular`).r:W(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularIntensityMap&&n.specularIntensityMap.isTexture===!0?e.mul(this.getTexture(r).a):e}else if(r===e.SPECULAR_COLOR){let e=this.getColor(r);i=n.specularColorMap&&n.specularColorMap.isTexture===!0?e.mul(this.getTexture(r).rgb):e}else if(r===e.ROUGHNESS){let e=this.getFloat(r);i=n.roughnessMap&&n.roughnessMap.isTexture===!0?e.mul(this.getTexture(r).g):e}else if(r===e.METALNESS){let e=this.getFloat(r);i=n.metalnessMap&&n.metalnessMap.isTexture===!0?e.mul(this.getTexture(r).b):e}else if(r===e.EMISSIVE){let e=this.getFloat(`emissiveIntensity`),t=this.getColor(r).mul(e);i=n.emissiveMap&&n.emissiveMap.isTexture===!0?t.mul(this.getTexture(r)):t}else if(r===e.NORMAL)n.normalMap?(i=bN(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType,(n.normalMap.format==1030||n.normalMap.format==36285||n.normalMap.format==37490)&&(i.unpackNormalMode=`rg`)):i=n.bumpMap?CN(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):vM;else if(r===e.CLEARCOAT){let e=this.getFloat(r);i=n.clearcoatMap&&n.clearcoatMap.isTexture===!0?e.mul(this.getTexture(r).r):e}else if(r===e.CLEARCOAT_ROUGHNESS){let e=this.getFloat(r);i=n.clearcoatRoughnessMap&&n.clearcoatRoughnessMap.isTexture===!0?e.mul(this.getTexture(r).r):e}else if(r===e.CLEARCOAT_NORMAL)i=n.clearcoatNormalMap?bN(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):vM;else if(r===e.SHEEN){let e=this.getColor(`sheenColor`).mul(this.getFloat(`sheen`));i=n.sheenColorMap&&n.sheenColorMap.isTexture===!0?e.mul(this.getTexture(`sheenColor`).rgb):e}else if(r===e.SHEEN_ROUGHNESS){let e=this.getFloat(r);i=n.sheenRoughnessMap&&n.sheenRoughnessMap.isTexture===!0?e.mul(this.getTexture(r).a):e,i=i.clamp(1e-4,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=CE(cP.x,cP.y,cP.y.negate(),cP.x).mul(e.rg.mul(2).sub(q(1)).normalize().mul(e.b))}else i=cP;else if(r===e.IRIDESCENCE_THICKNESS){let e=BM(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=BM(`0`,`float`,n.iridescenceThicknessRange);i=e.sub(t).mul(this.getTexture(r).g).add(t)}else i=e}else if(r===e.TRANSMISSION){let e=this.getFloat(r);i=n.transmissionMap?e.mul(this.getTexture(r).r):e}else if(r===e.THICKNESS){let e=this.getFloat(r);i=n.thicknessMap?e.mul(this.getTexture(r).g):e}else if(r===e.IOR)i=this.getFloat(r);else if(r===e.LIGHT_MAP)i=this.getTexture(r).rgb.mul(this.getFloat(`lightMapIntensity`));else if(r===e.AO)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else if(r===e.LINE_DASH_OFFSET)i=n.dashOffset?this.getFloat(r):W(0);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};X.ALPHA_TEST=`alphaTest`,X.COLOR=`color`,X.OPACITY=`opacity`,X.SHININESS=`shininess`,X.SPECULAR=`specular`,X.SPECULAR_STRENGTH=`specularStrength`,X.SPECULAR_INTENSITY=`specularIntensity`,X.SPECULAR_COLOR=`specularColor`,X.REFLECTIVITY=`reflectivity`,X.ROUGHNESS=`roughness`,X.METALNESS=`metalness`,X.NORMAL=`normal`,X.CLEARCOAT=`clearcoat`,X.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,X.CLEARCOAT_NORMAL=`clearcoatNormal`,X.EMISSIVE=`emissive`,X.ROTATION=`rotation`,X.SHEEN=`sheen`,X.SHEEN_ROUGHNESS=`sheenRoughness`,X.ANISOTROPY=`anisotropy`,X.IRIDESCENCE=`iridescence`,X.IRIDESCENCE_IOR=`iridescenceIOR`,X.IRIDESCENCE_THICKNESS=`iridescenceThickness`,X.IOR=`ior`,X.TRANSMISSION=`transmission`,X.THICKNESS=`thickness`,X.ATTENUATION_DISTANCE=`attenuationDistance`,X.ATTENUATION_COLOR=`attenuationColor`,X.LINE_SCALE=`scale`,X.LINE_DASH_SIZE=`dashSize`,X.LINE_GAP_SIZE=`gapSize`,X.LINE_WIDTH=`linewidth`,X.LINE_DASH_OFFSET=`dashOffset`,X.POINT_SIZE=`size`,X.DISPERSION=`dispersion`,X.LIGHT_MAP=`light`,X.AO=`ao`;var TN=V(X,X.ALPHA_TEST),EN=V(X,X.COLOR),DN=V(X,X.SHININESS),ON=V(X,X.EMISSIVE),kN=V(X,X.OPACITY),AN=V(X,X.SPECULAR),jN=V(X,X.SPECULAR_INTENSITY),MN=V(X,X.SPECULAR_COLOR),NN=V(X,X.SPECULAR_STRENGTH),PN=V(X,X.REFLECTIVITY),FN=V(X,X.ROUGHNESS),IN=V(X,X.METALNESS),LN=V(X,X.NORMAL),RN=V(X,X.CLEARCOAT),zN=V(X,X.CLEARCOAT_ROUGHNESS),BN=V(X,X.CLEARCOAT_NORMAL),VN=V(X,X.ROTATION),HN=V(X,X.SHEEN),UN=V(X,X.SHEEN_ROUGHNESS),WN=V(X,X.ANISOTROPY),GN=V(X,X.IRIDESCENCE),KN=V(X,X.IRIDESCENCE_IOR),qN=V(X,X.IRIDESCENCE_THICKNESS),JN=V(X,X.TRANSMISSION),YN=V(X,X.THICKNESS),XN=V(X,X.IOR),ZN=V(X,X.ATTENUATION_DISTANCE),QN=V(X,X.ATTENUATION_COLOR),$N=V(X,X.LINE_SCALE),eP=V(X,X.LINE_DASH_SIZE),tP=V(X,X.LINE_GAP_SIZE),nP=V(X,X.LINE_WIDTH),rP=V(X,X.LINE_DASH_OFFSET),iP=V(X,X.POINT_SIZE),aP=V(X,X.DISPERSION),oP=V(X,X.LIGHT_MAP),sP=V(X,X.AO),cP=vD(new N).onReference(function(e){return e.material}).onRenderUpdate(function({material:e}){this.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation))}),lP=U(e=>e.context.setupModelViewProjection(),`vec4`).once()().toVarying(`v_modelViewProjection`),uP=rE(class extends cT{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){let 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,r=e.context.assign;if(n=e.isAvailable(`storageBuffer`)===!1?this.node.isPBO===!0&&r!==!0&&(this.node.value.isInstancedBufferAttribute||e.shaderStage!==`compute`)?e.generatePBO(this):this.node.build(e):super.generate(e),r!==!0){let r=this.getNodeType(e);n=e.format(n,r,t)}return n}}).setParameterLength(2),dP=class extends qA{static get type(){return`StorageBufferNode`}constructor(e,t=null,n=0){let r,i=null;t&&t.isStruct?(r=`struct`,i=t.layout,(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)&&(n=e.count)):t===null&&(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)?(r=Vw(e.itemSize),n=e.count):r=t,super(e,r,n),this.isStorageBufferNode=!0,this.structTypeNode=i,this.access=eT.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){let t;if(this.bufferCount===0){let n=e.globalCache.getData(this.value);n===void 0&&(n={node:this},e.globalCache.setData(this.value,n)),t=n.node.id}else t=this.id;return String(t)}getInputType(){return this.value.isIndirectStorageBufferAttribute?`indirectStorageBuffer`:`storageBuffer`}element(e){return uP(this,e)}setPBO(e){return this.isPBO=e,this}getPBO(){return this.isPBO}setAccess(e){return this.access=e,this}toReadOnly(){return this.setAccess(eT.READ_ONLY)}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}getAttributeData(){return this._attribute===null&&(this._attribute=eA(this.value),this._varying=Mk(this._attribute)),{attribute:this._attribute,varying:this._varying}}generateNodeType(e){if(this.structTypeNode!==null)return this.structTypeNode.getNodeType(e);if(e.isAvailable(`storageBuffer`)||e.isAvailable(`indirectStorageBuffer`))return super.generateNodeType(e);let{attribute:t}=this.getAttributeData();return t.getNodeType(e)}getMemberType(e,t){return this.structTypeNode===null?`void`:this.structTypeNode.getMemberType(e,t)}generate(e){if(this.structTypeNode!==null&&this.structTypeNode.build(e),e.isAvailable(`storageBuffer`)||e.isAvailable(`indirectStorageBuffer`))return super.generate(e);let{attribute:t,varying:n}=this.getAttributeData(),r=n.build(e);return e.registerTransform(r,t),r}},fP=(e,t=null,n=0)=>new dP(e,t,n),pP=class extends sT{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=Qw.FRAME,this.buffer=null,this.bufferColor=null,this.previousInstanceMatrixNode=null}get isStorageMatrix(){let{instanceMatrix:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}get isStorageColor(){let{instanceColor:e}=this;return e&&e.isStorageInstancedBufferAttribute===!0}setup(e){let{instanceMatrixNode:t,instanceColorNode:n}=this;t===null&&(t=this._createInstanceMatrixNode(!0,e),this.instanceMatrixNode=t);let{instanceColor:r,isStorageColor:i}=this;if(r&&n===null){if(i)n=fP(r,`vec3`,Math.max(r.count,1)).element(oA);else{let e=new Ro(r.array,3),t=r.usage===35048?rA:nA;this.bufferColor=e,n=J(t(e,`vec3`,3,0))}this.instanceColorNode=n}let a=t.mul(iM).xyz;if(iM.assign(a),e.needsPreviousData()&&aM.assign(this.getPreviousInstancedPosition(e)),e.hasGeometryAttribute(`normal`)){let e=xM(mM,t);mM.assign(e)}this.instanceColorNode!==null&&PE(`vec3`,`vInstanceColor`).assign(this.instanceColorNode)}update(e){this.buffer!==null&&this.isStorageMatrix!==!0&&(this.buffer.clearUpdateRanges(),this.buffer.updateRanges.push(...this.instanceMatrix.updateRanges),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.version!==this.bufferColor.version&&(this.bufferColor.version=this.instanceColor.version)),this.previousInstanceMatrixNode!==null&&e.object.previousInstanceMatrix.array.set(this.instanceMatrix.array)}getPreviousInstancedPosition(e){let t=e.object;return this.previousInstanceMatrixNode===null&&(t.previousInstanceMatrix=this.instanceMatrix.clone(),this.previousInstanceMatrixNode=this._createInstanceMatrixNode(!1,e)),this.previousInstanceMatrixNode.mul(aM).xyz}_createInstanceMatrixNode(e,t){let n,{instanceMatrix:r}=this,{count:i}=r;if(this.isStorageMatrix)n=fP(r,`mat4`,Math.max(i,1)).element(oA);else if(i*16*4<=t.getUniformBufferLimit())n=JA(r.array,`mat4`,Math.max(i,1)).element(oA);else{let t=new Df(r.array,16,1);e===!0&&(this.buffer=t);let i=r.usage===35048?rA:nA;n=TE(i(t,`vec4`,16,0),i(t,`vec4`,16,4),i(t,`vec4`,16,8),i(t,`vec4`,16,12))}return n}},mP=rE(pP).setParameterLength(2,3),hP=rE(class extends pP{static get type(){return`InstancedMeshNode`}constructor(e){let{count:t,instanceMatrix:n,instanceColor:r}=e;super(t,n,r),this.instancedMesh=e}}).setParameterLength(1),gP=rE(class extends sT{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=oA:this.batchingIdNode=uA);let t=U(([e])=>{let t=G(FA(UA(this.batchMesh._indirectTexture),0).x).toConst(),n=G(e).mod(t).toConst(),r=G(e).div(t).toConst();return UA(this.batchMesh._indirectTexture,pE(n,r)).x}).setLayout({name:`getIndirectIndex`,type:`uint`,inputs:[{name:`id`,type:`int`}]})(G(this.batchingIdNode)),n=this.batchMesh._matricesTexture,r=G(FA(UA(n),0).x).toConst(),i=W(t).mul(4).toInt().toConst(),a=i.mod(r).toConst(),o=i.div(r).toConst(),s=TE(UA(n,pE(a,o)),UA(n,pE(a.add(1),o)),UA(n,pE(a.add(2),o)),UA(n,pE(a.add(3),o))),c=this.batchMesh._colorsTexture;if(c!==null){let e=U(([e])=>{let t=G(FA(UA(c),0).x).toConst(),n=e,r=n.mod(t).toConst(),i=n.div(t).toConst();return UA(c,pE(r,i)).rgb}).setLayout({name:`getBatchingColor`,type:`vec3`,inputs:[{name:`id`,type:`int`}]})(t);PE(`vec3`,`vBatchColor`).assign(e)}let l=wE(s);iM.assign(s.mul(iM));let u=mM.div(J(l[0].dot(l[0]),l[1].dot(l[1]),l[2].dot(l[2]))),d=l.mul(u).xyz;mM.assign(d),e.hasGeometryAttribute(`tangent`)&&aN.mulAssign(l)}}).setParameterLength(1),_P=new WeakMap,vP=class extends sT{static get type(){return`SkinningNode`}constructor(e){super(`void`),this.skinnedMesh=e,this.updateType=Qw.OBJECT,this.skinIndexNode=NA(`skinIndex`,`uvec4`),this.skinWeightNode=NA(`skinWeight`,`vec4`),this.bindMatrixNode=BM(`bindMatrix`,`mat4`),this.bindMatrixInverseNode=BM(`bindMatrixInverse`,`mat4`),this.boneMatricesNode=VM(`skeleton.boneMatrices`,`mat4`,e.skeleton.bones.length),this.positionNode=iM,this.toPositionNode=iM,this.previousBoneMatricesNode=null}getSkinnedPosition(e=this.boneMatricesNode,t=this.positionNode){let{skinIndexNode:n,skinWeightNode:r,bindMatrixNode:i,bindMatrixInverseNode:a}=this,o=e.element(n.x),s=e.element(n.y),c=e.element(n.z),l=e.element(n.w),u=i.mul(t),d=ED(o.mul(r.x).mul(u),s.mul(r.y).mul(u),c.mul(r.z).mul(u),l.mul(r.w).mul(u));return a.mul(d).xyz}getSkinnedNormalAndTangent(e=this.boneMatricesNode,t=mM,n=aN){let{skinIndexNode:r,skinWeightNode:i,bindMatrixNode:a,bindMatrixInverseNode:o}=this,s=e.element(r.x),c=e.element(r.y),l=e.element(r.z),u=e.element(r.w),d=ED(i.x.mul(s),i.y.mul(c),i.z.mul(l),i.w.mul(u));return d=o.mul(d).mul(a),{skinNormal:d.transformDirection(t).xyz,skinTangent:d.transformDirection(n).xyz}}getPreviousSkinnedPosition(e){let t=e.object;return this.previousBoneMatricesNode===null&&(t.skeleton.previousBoneMatrices=new Float32Array(t.skeleton.boneMatrices),this.previousBoneMatricesNode=VM(`skeleton.previousBoneMatrices`,`mat4`,t.skeleton.bones.length)),this.getSkinnedPosition(this.previousBoneMatricesNode,aM)}setup(e){e.needsPreviousData()&&aM.assign(this.getPreviousSkinnedPosition(e));let t=this.getSkinnedPosition();if(this.toPositionNode&&this.toPositionNode.assign(t),e.hasGeometryAttribute(`normal`)){let{skinNormal:t,skinTangent:n}=this.getSkinnedNormalAndTangent();mM.assign(t),e.hasGeometryAttribute(`tangent`)&&aN.assign(n)}return t}generate(e,t){if(t!==`void`)return super.generate(e,t)}update(e){let t=e.object&&e.object.skeleton?e.object.skeleton:this.skinnedMesh.skeleton;_P.get(t)!==e.frameId&&(_P.set(t,e.frameId),this.previousBoneMatricesNode!==null&&(t.previousBoneMatrices===null&&(t.previousBoneMatrices=new Float32Array(t.boneMatrices)),t.previousBoneMatrices.set(t.boneMatrices)),t.update())}},yP=e=>new vP(e),bP=(e,t=null)=>{let n=new vP(e);return n.positionNode=fP(new Ro(e.geometry.getAttribute(`position`).array,3),`vec3`).setPBO(!0).toReadOnly().element(oA).toVar(),n.skinIndexNode=fP(new Ro(new Uint32Array(e.geometry.getAttribute(`skinIndex`).array),4),`uvec4`).setPBO(!0).toReadOnly().element(oA).toVar(),n.skinWeightNode=fP(new Ro(e.geometry.getAttribute(`skinWeight`).array,4),`vec4`).setPBO(!0).toReadOnly().element(oA).toVar(),n.bindMatrixNode=vD(e.bindMatrix,`mat4`),n.bindMatrixInverseNode=vD(e.bindMatrixInverse,`mat4`),n.boneMatricesNode=JA(e.skeleton.boneMatrices,`mat4`,e.skeleton.bones.length),n.toPositionNode=t,B(n)},xP=class extends sT{static get type(){return`LoopNode`}constructor(e=[]){super(`void`),this.params=e}getVarName(e){return String.fromCharCode(105+e)}getProperties(e){let t=e.getNodeProperties(this);if(t.stackNode!==void 0)return t;let n={};for(let e=0,t=this.params.length-1;e<t;e++){let t=this.params[e],r=t.isNode!==!0&&t.name||this.getVarName(e);n[r]=xA(r,t.isNode!==!0&&t.type||`int`)}let r=e.addStack(),i=this.params[this.params.length-1](n);t.returnsNode=i.context({nodeLoop:i}),t.stackNode=r;let a=this.params[0];if(a.isNode!==!0&&typeof a.update==`function`){let e=U(this.params[0].update)(n);t.updateNode=e.context({nodeLoop:e})}return e.removeStack(),t}setup(e){if(this.getProperties(e),e.fnCall){let t=e.getDataFromNode(e.fnCall.shaderNode);t.hasLoop=!0}}generate(e){let t=this.getProperties(e),n=this.params,r=t.stackNode;for(let r=0,i=n.length-1;r<i;r++){let i=n[r],a=!1,o=null,s=null,c=null,l=null,u=null,d=null;i.isNode?i.getNodeType(e)===`bool`?(a=!0,l=`bool`,s=i.build(e,l)):(l=`int`,c=this.getVarName(r),o=`0`,s=i.build(e,l),u=`<`):(l=i.type||`int`,c=i.name||this.getVarName(r),o=i.start,s=i.end,u=i.condition,d=i.update,typeof o==`number`?o=e.generateConst(l,o):o&&o.isNode&&(o=o.build(e,l)),typeof s==`number`?s=e.generateConst(l,s):s&&s.isNode&&(s=s.build(e,l)),o!==void 0&&s===void 0?(o+=` - 1`,s=`0`,u=`>=`):s!==void 0&&o===void 0&&(o=`0`,u=`<`),u===void 0&&(u=Number(o)>Number(s)?`>=`:`<`));let f;if(a)f=`while ( ${s} )`;else{let n={start:o,end:s},r=n.start,i=n.end,a,p=()=>u.includes(`<`)?`+=`:`-=`;if(d!=null)switch(typeof d){case`function`:a=e.flowStagesNode(t.updateNode,`void`).code.replace(/\t|;/g,``);break;case`number`:a=c+` `+p()+` `+e.generateConst(l,d);break;case`string`:a=c+` `+d;break;default:d.isNode?a=c+` `+p()+` `+d.build(e):(M(`TSL: 'Loop( { update: ... } )' is not a function, string or number.`,this.stackTrace),a=`break /* invalid update */`)}else d=l===`int`||l===`uint`?u.includes(`<`)?`++`:`--`:p()+` 1.`,a=c+` `+d;f=`for ( ${e.getVar(l,c)+` = `+r}; ${c+` `+u+` `+i}; ${a} )`}e.addFlowCode((r===0?`
4127
4127
  `:``)+e.tab+f+` {
4128
4128
 
4129
4129
  `).addFlowTab()}let i=r.build(e,`void`);t.returnsNode.build(e,`void`),e.removeFlowTab().addFlowCode(`
4130
4130
  `+e.tab+i);for(let t=0,n=this.params.length-1;t<n;t++)e.addFlowCode((t===0?``:e.tab)+`}
4131
4131
 
4132
- `).removeFlowTab();e.addFlowTab()}},SP=(...e)=>new xP(nE(e,`int`)).toStack(),CP=()=>xA(`continue`).toStack(),wP=()=>xA(`break`).toStack(),TP=new WeakMap,EP=new Nr,DP=U(({bufferMap:e,influence:t,stride:n,width:r,depth:i,offset:a})=>{let o=G(aA).mul(n).add(a),s=o.div(r);return UA(e,pE(o.sub(s.mul(r)),s)).depth(i).xyz.mul(t)});function OP(e){let t=e.morphAttributes.position!==void 0,n=e.morphAttributes.normal!==void 0,r=e.morphAttributes.color!==void 0,i=e.morphAttributes.position||e.morphAttributes.normal||e.morphAttributes.color,a=i===void 0?0:i.length,o=TP.get(e);if(o===void 0||o.count!==a){o!==void 0&&o.texture.dispose();let i=e.morphAttributes.position||[],s=e.morphAttributes.normal||[],c=e.morphAttributes.color||[],l=0;t===!0&&(l=1),n===!0&&(l=2),r===!0&&(l=3);let u=e.attributes.position.count*l,d=1,f=4096;u>f&&(d=Math.ceil(u/f),u=f);let p=new Float32Array(u*d*4*a),m=new Ir(p,u,d,a);m.type=Pe,m.needsUpdate=!0;let h=l*4;for(let e=0;e<a;e++){let a=i[e],o=s[e],l=c[e],f=u*d*4*e;for(let e=0;e<a.count;e++){let i=e*h;t===!0&&(EP.fromBufferAttribute(a,e),p[f+i+0]=EP.x,p[f+i+1]=EP.y,p[f+i+2]=EP.z,p[f+i+3]=0),n===!0&&(EP.fromBufferAttribute(o,e),p[f+i+4]=EP.x,p[f+i+5]=EP.y,p[f+i+6]=EP.z,p[f+i+7]=0),r===!0&&(EP.fromBufferAttribute(l,e),p[f+i+8]=EP.x,p[f+i+9]=EP.y,p[f+i+10]=EP.z,p[f+i+11]=l.itemSize===4?EP.w:1)}}o={count:a,texture:m,stride:l,size:new N(u,d)},TP.set(e,o);function g(){m.dispose(),TP.delete(e),e.removeEventListener(`dispose`,g)}e.addEventListener(`dispose`,g)}return o}var kP=rE(class extends sT{static get type(){return`MorphNode`}constructor(e){super(`void`),this.mesh=e,this.morphBaseInfluence=vD(1),this.updateType=Qw.OBJECT}setup(e){let{geometry:t}=e,n=t.morphAttributes.position!==void 0,r=t.hasAttribute(`normal`)&&t.morphAttributes.normal!==void 0,i=t.morphAttributes.position||t.morphAttributes.normal||t.morphAttributes.color,a=i===void 0?0:i.length,{texture:o,stride:s,size:c}=OP(t);n===!0&&iM.mulAssign(this.morphBaseInfluence),r===!0&&mM.mulAssign(this.morphBaseInfluence);let l=G(c.width);SP(a,({i:e})=>{let t=W(0).toVar();this.mesh.count>1&&this.mesh.morphTexture!==null&&this.mesh.morphTexture!==void 0?t.assign(UA(this.mesh.morphTexture,pE(G(e).add(1),G(oA))).r):t.assign(BM(`morphTargetInfluences`,`float`).element(e).toVar()),cE(t.notEqual(0),()=>{n===!0&&iM.addAssign(DP({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:G(0)})),r===!0&&mM.addAssign(DP({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:G(1)}))})})}update(){let e=this.morphBaseInfluence;this.mesh.geometry.morphTargetsRelative?e.value=1:e.value=1-this.mesh.morphTargetInfluences.reduce((e,t)=>e+t,0)}}).setParameterLength(1),AP=class extends sT{static get type(){return`LightingNode`}constructor(){super(`vec3`),this.isLightingNode=!0}},jP=class extends AP{static get type(){return`AONode`}constructor(e=null){super(),this.aoNode=e}setup(e){e.context.ambientOcclusion.mulAssign(this.aoNode)}},MP=rE(class extends vk{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(){let{backdropNode:e,backdropAlphaNode:t}=this,n={directDiffuse:J().toVar(`directDiffuse`),directSpecular:J().toVar(`directSpecular`),indirectDiffuse:J().toVar(`indirectDiffuse`),indirectSpecular:J().toVar(`indirectSpecular`)};return{radiance:J().toVar(`radiance`),irradiance:J().toVar(`irradiance`),iblIrradiance:J().toVar(`iblIrradiance`),ambientOcclusion:W(1).toVar(`ambientOcclusion`),reflectedLight:n,backdrop:e,backdropAlpha:t}}setup(e){return this.value=this._value||=this.getContext(),this.value.lightingModel=this.lightingModel||e.context.lightingModel,super.setup(e)}}),NP=class extends AP{static get type(){return`IrradianceNode`}constructor(e){super(),this.node=e}setup(e){e.context.irradiance.addAssign(this.node)}},PP=new N,FP=class extends zA{static get type(){return`ViewportTextureNode`}constructor(e=rj,t=null,n=null){let r=null;n===null?(r=new Ks,r.minFilter=De,n=r):r=n,super(n,e,t),this.generateMipmaps=!1,this.defaultFramebuffer=r,this.isOutputTextureNode=!0,this.updateBeforeType=Qw.RENDER,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){let r=t.clone();n.set(e,r)}return n.get(e)}updateReference(e){let t=e.renderer,n=t.getRenderTarget(),r=t.getCanvasTarget(),i=n||r;return this.value=this.getTextureForReference(i),this.value}updateBefore(e){let t=e.renderer,n=t.getRenderTarget(),r=t.getCanvasTarget(),i=n||r;i===null?t.getDrawingBufferSize(PP):i.getDrawingBufferSize?i.getDrawingBufferSize(PP):PP.set(i.width,i.height);let a=this.getTextureForReference(i);(a.image.width!==PP.width||a.image.height!==PP.height)&&(a.image.width=PP.width,a.image.height=PP.height,a.needsUpdate=!0);let o=a.generateMipmaps;a.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(a),a.generateMipmaps=o}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}},IP=rE(FP).setParameterLength(0,3),LP=rE(FP,null,null,{generateMipmaps:!0}).setParameterLength(0,3),RP=LP(),zP=(e=rj,t=null)=>RP.sample(e,t),BP=null,VP=rE(class extends FP{static get type(){return`ViewportDepthTextureNode`}constructor(e=rj,t=null,n=null){n===null&&(BP===null&&(BP=new $s),n=BP),super(e,t,n)}}).setParameterLength(0,3),HP=class e extends sT{static get type(){return`ViewportDepthNode`}constructor(e,t=null){super(`float`),this.scope=e,this.valueNode=t,this.isViewportDepthNode=!0}generate(t){let{scope:n}=this;return n===e.DEPTH_BASE?t.getFragDepth():super.generate(t)}setup({camera:t}){let{scope:n}=this,r=this.valueNode,i=null;return n===e.DEPTH_BASE?r!==null&&(i=ZP().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?KP(cM.z,Ej,Dj):UP(cM.z,Ej,Dj):n===e.LINEAR_DEPTH&&(i=r===null?UP(cM.z,Ej,Dj):t.isPerspectiveCamera?UP(JP(r,Ej,Dj),Ej,Dj):r),i}};HP.DEPTH_BASE=`depthBase`,HP.DEPTH=`depth`,HP.LINEAR_DEPTH=`linearDepth`;var UP=(e,t,n)=>e.add(t).div(t.sub(n)),WP=(e,t,n)=>e.add(n).div(n.sub(t)),GP=U(([e,t,n],r)=>r.renderer.reversedDepthBuffer===!0?n.sub(t).mul(e).sub(n):t.sub(n).mul(e).sub(t)),KP=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),qP=(e,t,n)=>t.mul(e.add(n)).div(e.mul(t.sub(n))),JP=U(([e,t,n],r)=>r.renderer.reversedDepthBuffer===!0?t.mul(n).div(t.sub(n).mul(e).sub(t)):t.mul(n).div(n.sub(t).mul(e).sub(n))),YP=(e,t,n)=>{t=t.max(1e-6).toVar();let r=dO(e.negate().div(t)),i=dO(n.div(t));return r.div(i)},XP=(e,t,n)=>{let r=e.mul(uO(n.div(t)));return W(Math.E).pow(r).mul(t).negate()},ZP=rE(HP,HP.DEPTH_BASE),QP=V(HP,HP.DEPTH),$P=rE(HP,HP.LINEAR_DEPTH).setParameterLength(0,1),eF=$P(VP());QP.assign=e=>ZP(e);var tF=class e extends sT{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let{intersectionPlanes:n,unionPlanes:r}=t.clippingContext;return this.hardwareClipping=t.material.hardwareClipping,this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n,r):this.scope===e.HARDWARE?this.setupHardwareClipping(r,t):this.setupDefault(n,r)}setupAlphaToCoverage(e,t){return U(()=>{let n=W().toVar(`distanceToPlane`),r=W().toVar(`distanceToGradient`),i=W(1).toVar(`clipOpacity`),a=t.length;if(this.hardwareClipping===!1&&a>0){let e=ZA(t).setGroup(hD);SP(a,({i:t})=>{let a=e.element(t);n.assign(cM.dot(a.xyz).negate().add(a.w)),r.assign(n.fwidth().div(2)),i.mulAssign(lk(r.negate(),r,n))})}let o=e.length;if(o>0){let t=ZA(e).setGroup(hD),a=W(1).toVar(`intersectionClipOpacity`);SP(o,({i:e})=>{let i=t.element(e);n.assign(cM.dot(i.xyz).negate().add(i.w)),r.assign(n.fwidth().div(2)),a.mulAssign(lk(r.negate(),r,n).oneMinus())}),i.mulAssign(a.oneMinus())}FE.a.mulAssign(i),FE.a.equal(0).discard()})()}setupDefault(e,t){return U(()=>{let n=t.length;if(this.hardwareClipping===!1&&n>0){let e=ZA(t).setGroup(hD);SP(n,({i:t})=>{let n=e.element(t);cM.dot(n.xyz).greaterThan(n.w).discard()})}let r=e.length;if(r>0){let t=ZA(e).setGroup(hD),n=fE(!0).toVar(`clipped`);SP(r,({i:e})=>{let r=t.element(e);n.assign(cM.dot(r.xyz).greaterThan(r.w).and(n))}),n.discard()}})()}setupHardwareClipping(e,t){let n=e.length;return t.enableHardwareClipping(n),U(()=>{let r=ZA(e).setGroup(hD),i=QA(t.getClipDistance());SP(n,({i:e})=>{let t=r.element(e),n=cM.dot(t.xyz).sub(t.w).negate();i.element(e).assign(n)})})()}};tF.ALPHA_TO_COVERAGE=`alphaToCoverage`,tF.DEFAULT=`default`,tF.HARDWARE=`hardware`;var nF=()=>new tF,rF=()=>new tF(tF.ALPHA_TO_COVERAGE),iF=()=>new tF(tF.HARDWARE),aF=.05,oF=U(([e])=>_O(OD(1e4,vO(OD(17,e.x).add(OD(.1,e.y)))).mul(ED(.1,AO(vO(OD(13,e.y).add(e.x))))))),sF=U(([e])=>oF(q(oF(e.xy),e.z))),cF=U(([e])=>{let t=GO(MO(FO(e.xyz)),MO(IO(e.xyz))),n=W(1).div(W(aF).mul(t)).toVar(`pixScale`),r=q(lO(mO(dO(n))),lO(hO(dO(n)))),i=q(sF(mO(r.x.mul(e.xyz))),sF(mO(r.y.mul(e.xyz)))),a=_O(dO(n)),o=ED(OD(a.oneMinus(),i.x),OD(a,i.y)),s=WO(a,a.oneMinus()),c=J(o.mul(o).div(OD(2,s).mul(DD(1,s))),o.sub(OD(.5,s)).div(DD(1,s)),DD(1,DD(1,o).mul(DD(1,o)).div(OD(2,s).mul(DD(1,s)))));return ok(o.lessThan(s.oneMinus()).select(o.lessThan(s).select(c.x,c.y),c.z),1e-6,1)}).setLayout({name:`getAlphaHashThreshold`,type:`float`,inputs:[{name:`position`,type:`vec3`}]}),lF=class extends MA{static get type(){return`VertexColorNode`}constructor(e){super(null,`vec4`),this.isVertexColorNode=!0,this.index=e}getAttributeName(){let e=this.index;return`color`+(e>0?e:``)}generate(e){let t=this.getAttributeName(e),n=e.hasGeometryAttribute(t),r;return r=n===!0?super.generate(e):e.generateConst(this.nodeType,new Nr(1,1,1,1)),r}serialize(e){super.serialize(e),e.index=this.index}deserialize(e){super.deserialize(e),this.index=e.index}},uF=(e=0)=>new lF(e),dF=U(([e,t])=>WO(1,e.oneMinus().div(t)).oneMinus()).setLayout({name:`blendBurn`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),fF=U(([e,t])=>WO(e.div(t.oneMinus()),1)).setLayout({name:`blendDodge`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),pF=U(([e,t])=>e.oneMinus().mul(t.oneMinus()).oneMinus()).setLayout({name:`blendScreen`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),mF=U(([e,t])=>ak(e.mul(2).mul(t),e.oneMinus().mul(2).mul(t.oneMinus()).oneMinus(),KO(.5,e))).setLayout({name:`blendOverlay`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),hF=U(([e,t])=>{let n=t.a.add(e.a.mul(t.a.oneMinus()));return yE(t.rgb.mul(t.a).add(e.rgb.mul(e.a).mul(t.a.oneMinus())).div(n),n)}).setLayout({name:`blendColor`,type:`vec4`,inputs:[{name:`base`,type:`vec4`},{name:`blend`,type:`vec4`}]}),gF=U(([e])=>yE(e.rgb.mul(e.a),e.a),{color:`vec4`,return:`vec4`}),_F=U(([e])=>(cE(e.a.equal(0),()=>yE(0)),yE(e.rgb.div(e.a),e.a)),{color:`vec4`,return:`vec4`}),vF=class extends Na{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.maskShadowNode=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}_getNodeChildren(){let e=[];for(let t of Object.getOwnPropertyNames(this)){if(t.startsWith(`_`)===!0)continue;let n=this[t];n&&n.isNode===!0&&e.push({property:t,childNode:n})}return e}customProgramCacheKey(){let e=[];for(let{property:t,childNode:n}of this._getNodeChildren())e.push(Iw(t.slice(0,-4)),n.getCacheKey());return this.type+Lw(e)}build(e){this.setup(e)}setupObserver(e){return new jw(e)}setup(e){e.context.setupNormal=()=>jk(this.setupNormal(e),`NORMAL`,`vec3`),e.context.setupPositionView=()=>this.setupPositionView(e),e.context.setupModelViewProjection=()=>this.setupModelViewProjection(e);let t=e.renderer,n=t.getRenderTarget();e.addStack();let r=this.setupVertex(e),i=jk(this.vertexNode||r,`VERTEX`);e.context.clipSpace=i,e.stack.outputNode=i,this.setupHardwareClipping(e),this.geometryNode!==null&&(e.stack.outputNode=e.stack.outputNode.bypass(this.geometryNode)),e.addFlow(`vertex`,e.removeStack()),e.addStack();let a,o=this.setupClipping(e);if((this.depthWrite===!0||this.depthTest===!0)&&(n===null?t.depth===!0&&this.setupDepth(e):n.depthBuffer===!0&&this.setupDepth(e)),this.fragmentNode===null){this.setupDiffuseColor(e),this.setupVariants(e);let r=this.setupLighting(e);o!==null&&e.stack.addToStack(o);let i=yE(r,FE.a).max(0);a=this.setupOutput(e,i),tD.assign(a);let s=this.outputNode!==null;if(s&&(a=this.outputNode),e.context.getOutput&&(a=e.context.getOutput(a,e)),n!==null){let e=t.getMRT(),n=this.mrtNode;e===null?n!==null&&(a=n):(s&&tD.assign(a),a=e,n!==null&&(a=e.merge(n)))}}else{let t=this.fragmentNode;t.isOutputStructNode!==!0&&(t=yE(t)),a=this.setupOutput(e,t)}e.stack.outputNode=a,e.addFlow(`fragment`,e.removeStack()),e.observer=this.setupObserver(e)}setupClipping(e){if(e.clippingContext===null)return null;let{unionPlanes:t,intersectionPlanes:n}=e.clippingContext,r=null;if(t.length>0||n.length>0){let t=e.renderer.currentSamples;this.alphaToCoverage&&t>1?r=rF():e.stack.addToStack(nF())}return r}setupHardwareClipping(e){if(this.hardwareClipping=!1,e.clippingContext===null)return;let t=e.clippingContext.unionPlanes.length;t>0&&t<=8&&e.isAvailable(`clipDistance`)&&(e.stack.addToStack(iF()),this.hardwareClipping=!0)}setupDepth(e){let{renderer:t,camera:n}=e,r=this.depthNode;if(r===null){let e=t.getMRT();e&&e.has(`depth`)?r=e.get(`depth`):t.logarithmicDepthBuffer===!0&&(r=n.isPerspectiveCamera?YP(cM.z,Ej,Dj):UP(cM.z,Ej,Dj))}r!==null&&QP.assign(r).toStack()}setupPositionView(){return Qj.mul(iM).xyz}setupModelViewProjection(){return Oj.mul(cM)}setupVertex(e){return e.addStack(),this.setupPosition(e),e.context.position=e.removeStack(),lP}setupPosition(e){let{object:t,geometry:n}=e;if((n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color)&&kP(t).toStack(),t.isSkinnedMesh===!0&&yP(t).toStack(),this.displacementMap){let e=UM(`displacementMap`,`texture`),t=UM(`displacementScale`,`float`),n=UM(`displacementBias`,`float`);iM.addAssign(mM.normalize().mul(e.x.mul(t).add(n)))}return t.isBatchedMesh&&gP(t).toStack(),t.isInstancedMesh&&t.instanceMatrix&&t.instanceMatrix.isInstancedBufferAttribute===!0&&hP(t).toStack(),this.positionNode!==null&&iM.assign(jk(this.positionNode,`POSITION`,`vec3`)),iM}setupDiffuseColor(e){let{object:t,geometry:n}=e;this.maskNode!==null&&fE(this.maskNode).not().discard();let r=this.colorNode?yE(this.colorNode):EN;this.vertexColors===!0&&n.hasAttribute(`color`)&&(r=r.mul(uF())),t.instanceColor&&(r=PE(`vec3`,`vInstanceColor`).mul(r)),t.isBatchedMesh&&t._colorsTexture&&(r=PE(`vec3`,`vBatchColor`).mul(r)),FE.assign(r);let i=this.opacityNode?W(this.opacityNode):kN;FE.a.assign(FE.a.mul(i));let a=null;(this.alphaTestNode!==null||this.alphaTest>0)&&(a=this.alphaTestNode===null?TN:W(this.alphaTestNode),this.alphaToCoverage===!0?(FE.a=lk(a,a.add(BO(FE.a)),FE.a),FE.a.lessThanEqual(0).discard()):FE.a.lessThanEqual(a).discard()),this.alphaHash===!0&&FE.a.lessThan(cF(iM)).discard(),e.isOpaque()&&FE.a.assign(1)}setupVariants(){}setupOutgoingLight(){return this.lights===!0?J(0):FE.rgb}setupNormal(){return this.normalNode?J(this.normalNode):LN}setupEnvironment(){let e=null;return this.envNode?e=this.envNode:this.envMap&&(e=this.envMap.isCubeTexture?UM(`envMap`,`cubeTexture`):UM(`envMap`,`texture`)),e}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new NP(oP)),t}setupLights(e){let t=[],n=this.setupEnvironment(e);n&&n.isLightingNode&&t.push(n);let r=this.setupLightMap(e);r&&r.isLightingNode&&t.push(r);let i=this.aoNode;i===null&&e.material.aoMap&&(i=sP),e.context.getAO&&(i=e.context.getAO(i,e)),i&&t.push(new jP(i));let a=this.lightsNode||e.lightsNode;return t.length>0&&(a=e.renderer.lighting.createNode([...a.getLights(),...t])),a}setupLightingModel(){}setupLighting(e){let{material:t}=e,{backdropNode:n,backdropAlphaNode:r,emissiveNode:i}=this,a=this.lights===!0||this.lightsNode!==null?this.setupLights(e):null,o=this.setupOutgoingLight(e);return a&&a.getScope().hasLights?o=MP(a,this.setupLightingModel(e)||null,n,r):n!==null&&(o=J(r===null?n:ak(o,n,r))),(i&&i.isNode===!0||t.emissive&&t.emissive.isColor===!0)&&(LE.assign(J(i||ON)),o=o.add(LE)),o}setupFog(e,t){let n=e.fogNode;return n&&(tD.assign(t),t=yE(n.toVar())),t}setupPremultipliedAlpha(e,t){return gF(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(let t in e){let n=e[t];this[t]===void 0&&(this[t]=n,n&&n.clone&&(this[t]=n.clone()))}let t=Object.getOwnPropertyDescriptors(e.constructor.prototype);for(let e in t)Object.getOwnPropertyDescriptor(this.constructor.prototype,e)===void 0&&t[e].get!==void 0&&Object.defineProperty(this.constructor.prototype,e,t[e])}toJSON(e){let t=e===void 0||typeof e==`string`;t&&(e={textures:{},images:{},nodes:{}});let n=Na.prototype.toJSON.call(this,e);n.inputNodes={};for(let{property:t,childNode:r}of this._getNodeChildren())n.inputNodes[t]=r.toJSON(e).uuid;function r(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(t){let t=r(e.textures),i=r(e.images),a=r(e.nodes);t.length>0&&(n.textures=t),i.length>0&&(n.images=i),a.length>0&&(n.nodes=a)}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.maskShadowNode=e.maskShadowNode,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)}},yF=new Cs,bF=class extends vF{static get type(){return`LineBasicNodeMaterial`}constructor(e){super(),this.isLineBasicNodeMaterial=!0,this.setDefaultValues(yF),this.setValues(e)}},xF=new fu,SF=class extends vF{static get type(){return`LineDashedNodeMaterial`}constructor(e){super(),this.isLineDashedNodeMaterial=!0,this.setDefaultValues(xF),this.dashOffset=0,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setupVariants(){let e=this.offsetNode?W(this.offsetNode):rP,t=this.dashScaleNode?W(this.dashScaleNode):$N,n=this.dashSizeNode?W(this.dashSizeNode):eP,r=this.gapSizeNode?W(this.gapSizeNode):tP;nD.assign(n),rD.assign(r);let i=Mk(NA(`lineDistance`).mul(t));(e?i.add(e):i).mod(nD.add(rD)).greaterThan(nD).discard()}},CF=new su,wF=class extends vF{static get type(){return`MeshNormalNodeMaterial`}constructor(e){super(),this.isMeshNormalNodeMaterial=!0,this.setDefaultValues(CF),this.setValues(e)}setupDiffuseColor(){let e=this.opacityNode?W(this.opacityNode):kN;FE.assign(Bk(yE(_N(vM),e),Xt))}},TF=U(([e=sM])=>q(e.z.atan(e.x).mul(1/(Math.PI*2)).add(.5),e.y.clamp(-1,1).asin().mul(1/Math.PI).add(.5))),EF=class extends Pr{constructor(e=1,t={}){super(e,e,t),this.isCubeRenderTarget=!0;let n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new Xs(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){let 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;let i=new nc(5,5,5),a=TF(sM),o=new vF;o.colorNode=VA(t,a,0),o.side=1,o.blending=0;let s=new bo(i,o),c=new Ci;c.add(s),t.minFilter===1008&&(t.minFilter=Te);let l=new Hd(1,10,this),u=e.getMRT();return e.setMRT(null),l.update(e,c),e.setMRT(u),t.minFilter=n,t.generateMipmaps=r,s.geometry.dispose(),s.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){let i=e.getRenderTarget();for(let i=0;i<6;i++)e.setRenderTarget(this,i),e.clear(t,n,r);e.setRenderTarget(i)}},DF=new WeakMap,OF=class extends uT{static get type(){return`CubeMapNode`}constructor(e){super(`vec3`),this.envNode=e,this._cubeTexture=null,this._cubeTextureNode=IM(null);let t=new Xs;t.isRenderTargetTexture=!0,this._defaultTexture=t,this.updateBeforeType=Qw.RENDER}updateBefore(e){let{renderer:t,material:n}=e,r=this.envNode;if(r.isTextureNode||r.isMaterialReferenceNode){let e=r.isTextureNode?r.value:n[r.property];if(e&&e.isTexture){let n=e.mapping;if(n===303||n===304){if(DF.has(e)){let t=DF.get(e);jF(t,e.mapping),this._cubeTexture=t}else{let n=e.image;if(kF(n)){let r=new EF(n.height);r.fromEquirectangularTexture(t,e),jF(r.texture,e.mapping),this._cubeTexture=r.texture,DF.set(e,r.texture),e.addEventListener(`dispose`,AF)}else this._cubeTexture=this._defaultTexture}this._cubeTextureNode.value=this._cubeTexture}else this._cubeTextureNode=this.envNode}}}setup(e){return this.updateBefore(e),this._cubeTextureNode}};function kF(e){return e==null?!1:e.height>0}function AF(e){let t=e.target;t.removeEventListener(`dispose`,AF);let n=DF.get(t);n!==void 0&&(DF.delete(t),n.dispose())}function jF(e,t){t===303?e.mapping=301:t===304&&(e.mapping=302)}var MF=rE(OF).setParameterLength(1),NF=class extends AP{static get type(){return`BasicEnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){e.context.environment=MF(this.envNode)}},PF=class extends AP{static get type(){return`BasicLightMapNode`}constructor(e=null){super(),this.lightMapNode=e}setup(e){let t=W(1/Math.PI);e.context.irradianceLightMap=this.lightMapNode.mul(t)}},FF=class{start(e){e.lightsNode.setupLights(e,e.lightsNode.getLightNodes(e)),this.indirect(e)}finish(){}direct(){}directRectArea(){}indirect(){}ambientOcclusion(){}},IF=class extends FF{constructor(){super()}indirect({context:e}){let t=e.ambientOcclusion,n=e.reflectedLight,r=e.irradianceLightMap;n.indirectDiffuse.assign(yE(0)),r?n.indirectDiffuse.addAssign(r):n.indirectDiffuse.addAssign(yE(1,1,1,0)),n.indirectDiffuse.mulAssign(t),n.indirectDiffuse.mulAssign(FE.rgb)}finish(e){let{material:t,context:n}=e,r=n.outgoingLight,i=e.context.environment;if(i)switch(t.combine){case 0:r.rgb.assign(ak(r.rgb,r.rgb.mul(i.rgb),NN.mul(PN)));break;case 1:r.rgb.assign(ak(r.rgb,i.rgb,NN.mul(PN)));break;case 2:r.rgb.addAssign(i.rgb.mul(NN.mul(PN)));break;default:j(`BasicLightingModel: Unsupported .combine value:`,t.combine);break}}},LF=new so,RF=class extends vF{static get type(){return`MeshBasicNodeMaterial`}constructor(e){super(),this.isMeshBasicNodeMaterial=!0,this.lights=!0,this.setDefaultValues(LF),this.setValues(e)}setupNormal(){return fM(gM)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new NF(t):null}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new PF(oP)),t}setupOutgoingLight(){return FE.rgb}setupLightingModel(){return new IF}},zF=U(({f0:e,f90:t,dotVH:n})=>{let r=n.mul(-5.55473).sub(6.98316).mul(n).exp2();return e.mul(r.oneMinus()).add(t.mul(r))}),BF=U(e=>e.diffuseColor.mul(1/Math.PI)),VF=()=>W(.25),HF=U(({dotNH:e})=>eD.mul(W(.5)).add(1).mul(W(1/Math.PI)).mul(e.pow(eD))),UF=U(({lightDirection:e})=>{let t=e.add(lM).normalize(),n=vM.dot(t).clamp(),r=zF({f0:ZE,f90:1,dotVH:lM.dot(t).clamp()}),i=VF(),a=HF({dotNH:n});return r.mul(i).mul(a)}),WF=class extends IF{constructor(e=!0){super(),this.specular=e}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=vM.dot(e).clamp().mul(t);n.directDiffuse.addAssign(r.mul(BF({diffuseColor:FE.rgb}))),this.specular===!0&&n.directSpecular.addAssign(r.mul(UF({lightDirection:e})).mul(NN))}indirect(e){let{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(BF({diffuseColor:FE}))),r.indirectDiffuse.mulAssign(t)}},GF=new cu,KF=class extends vF{static get type(){return`MeshLambertNodeMaterial`}constructor(e){super(),this.isMeshLambertNodeMaterial=!0,this.lights=!0,this.setDefaultValues(GF),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new NF(t):null}setupLightingModel(){return new WF(!1)}},qF=new au,JF=class extends vF{static get type(){return`MeshPhongNodeMaterial`}constructor(e){super(),this.isMeshPhongNodeMaterial=!0,this.lights=!0,this.shininessNode=null,this.specularNode=null,this.setDefaultValues(qF),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new NF(t):null}setupLightingModel(){return new WF}setupVariants(){let e=(this.shininessNode?W(this.shininessNode):DN).max(1e-4);eD.assign(e);let t=this.specularNode||AN;ZE.assign(t)}copy(e){return this.shininessNode=e.shininessNode,this.specularNode=e.specularNode,super.copy(e)}},YF=U(e=>{if(e.geometry.hasAttribute(`normal`)===!1)return W(0);let t=gM.dFdx().abs().max(gM.dFdy().abs());return t.x.max(t.y).max(t.z)}),XF=U(e=>{let{roughness:t}=e,n=YF(),r=t.max(.0525);return r=r.add(n),r=r.min(1),r}),ZF=U(({alpha:e,dotNL:t,dotNV:n})=>{let r=e.pow2(),i=t.mul(r.add(r.oneMinus().mul(n.pow2())).sqrt()),a=n.mul(r.add(r.oneMinus().mul(t.pow2())).sqrt());return kD(.5,i.add(a).max(QD))}).setLayout({name:`V_GGX_SmithCorrelated`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNL`,type:`float`},{name:`dotNV`,type:`float`}]}),QF=U(({alphaT:e,alphaB:t,dotTV:n,dotBV:r,dotTL:i,dotBL:a,dotNV:o,dotNL:s})=>{let c=s.mul(J(e.mul(n),t.mul(r),o).length()),l=o.mul(J(e.mul(i),t.mul(a),s).length());return kD(.5,c.add(l).max(QD))}).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`}]}),$F=U(({alpha:e,dotNH:t})=>{let n=e.pow2(),r=t.pow2().mul(n.oneMinus()).oneMinus();return n.div(r.pow2()).mul(1/Math.PI)}).setLayout({name:`D_GGX`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNH`,type:`float`}]}),eI=W(1/Math.PI),tI=U(({alphaT:e,alphaB:t,dotNH:n,dotTH:r,dotBH:i})=>{let a=e.mul(t),o=J(t.mul(r),e.mul(i),a.mul(n)),s=o.dot(o),c=a.div(s);return eI.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`}]}),nI=U(({lightDirection:e,f0:t,f90:n,roughness:r,f:i,normalView:a=vM,USE_IRIDESCENCE:o,USE_ANISOTROPY:s})=>{let c=r.pow2(),l=e.add(lM).normalize(),u=a.dot(e).clamp(),d=a.dot(lM).clamp(),f=a.dot(l).clamp(),p=zF({f0:t,f90:n,dotVH:lM.dot(l).clamp()}),m,h;if(ZT(o)&&(p=WE.mix(p,i)),ZT(s)){let t=YE.dot(e),n=YE.dot(lM),r=YE.dot(l),i=XE.dot(e),a=XE.dot(lM),o=XE.dot(l);m=QF({alphaT:qE,alphaB:c,dotTV:n,dotBV:a,dotTL:t,dotBL:i,dotNV:d,dotNL:u}),h=tI({alphaT:qE,alphaB:c,dotNH:f,dotTH:r,dotBH:o})}else m=ZF({alpha:c,dotNL:u,dotNV:d}),h=$F({alpha:c,dotNH:f});return p.mul(m).mul(h)}),rI=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]),iI=null,aI=U(({roughness:e,dotNV:t})=>{iI===null&&(iI=new Po(rI,16,16,Je,Fe),iI.name=`DFG_LUT`,iI.minFilter=Te,iI.magFilter=Te,iI.wrapS=ve,iI.wrapT=ve,iI.generateMipmaps=!1,iI.needsUpdate=!0);let n=q(e,t);return VA(iI,n).rg}),oI=U(({lightDirection:e,f0:t,f90:n,roughness:r,f:i,USE_IRIDESCENCE:a,USE_ANISOTROPY:o})=>{let s=nI({lightDirection:e,f0:t,f90:n,roughness:r,f:i,USE_IRIDESCENCE:a,USE_ANISOTROPY:o}),c=vM.dot(e).clamp(),l=aI({roughness:r,dotNV:vM.dot(lM).clamp()}),u=aI({roughness:r,dotNV:c}),d=t.mul(l.x).add(n.mul(l.y)),f=t.mul(u.x).add(n.mul(u.y)),p=l.x.add(l.y),m=u.x.add(u.y),h=W(1).sub(p),g=W(1).sub(m),_=t.add(t.oneMinus().mul(.047619)),v=d.mul(f).mul(_).div(W(1).sub(h.mul(g).mul(_).mul(_)).add(QD)),y=h.mul(g),b=v.mul(y);return s.add(b)}),sI=U(e=>{let{dotNV:t,specularColor:n,specularF90:r,roughness:i}=e,a=aI({dotNV:t,roughness:i});return n.mul(a.x).add(r.mul(a.y))}),cI=U(({f:e,f90:t,dotVH:n})=>{let r=n.oneMinus().saturate(),i=r.mul(r),a=r.mul(i,i).clamp(0,.9999);return e.sub(J(t).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`}]}),lI=U(({roughness:e,dotNH:t})=>{let n=e.pow2(),r=W(1).div(n),i=t.pow2().oneMinus().max(.0078125);return W(2).add(r).mul(i.pow(r.mul(.5))).div(2*Math.PI)}).setLayout({name:`D_Charlie`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`dotNH`,type:`float`}]}),uI=U(({dotNV:e,dotNL:t})=>W(1).div(W(4).mul(t.add(e).sub(t.mul(e))))).setLayout({name:`V_Neubelt`,type:`float`,inputs:[{name:`dotNV`,type:`float`},{name:`dotNL`,type:`float`}]}),dI=U(({lightDirection:e})=>{let t=e.add(lM).normalize(),n=vM.dot(e).clamp(),r=vM.dot(lM).clamp(),i=lI({roughness:UE,dotNH:vM.dot(t).clamp()}),a=uI({dotNV:r,dotNL:n});return HE.mul(i).mul(a)}),fI=U(({N:e,V:t,roughness:n})=>{let r=q(n,e.dot(t).saturate().oneMinus().sqrt());return r.assign(r.mul(.984375).add(.0078125)),r}).setLayout({name:`LTC_Uv`,type:`vec2`,inputs:[{name:`N`,type:`vec3`},{name:`V`,type:`vec3`},{name:`roughness`,type:`float`}]}),pI=U(({f:e})=>{let t=e.length();return GO(t.mul(t).add(e.z).div(t.add(1)),0)}).setLayout({name:`LTC_ClippedSphereFormFactor`,type:`float`,inputs:[{name:`f`,type:`vec3`}]}),mI=U(({v1:e,v2:t})=>{let n=e.dot(t),r=n.abs().toVar(),i=r.mul(.0145206).add(.4965155).mul(r).add(.8543985).toVar(),a=r.add(4.1616724).mul(r).add(3.417594).toVar(),o=i.div(a),s=n.greaterThan(0).select(o,GO(n.mul(n).oneMinus(),1e-7).inverseSqrt().mul(.5).sub(o));return e.cross(t).mul(s)}).setLayout({name:`LTC_EdgeVectorFormFactor`,type:`vec3`,inputs:[{name:`v1`,type:`vec3`},{name:`v2`,type:`vec3`}]}),hI=U(({N:e,V:t,P:n,mInv:r,p0:i,p1:a,p2:o,p3:s})=>{let c=a.sub(i).toVar(),l=s.sub(i).toVar(),u=c.cross(l),d=J().toVar();return cE(u.dot(n.sub(i)).greaterThanEqual(0),()=>{let c=t.sub(e.mul(t.dot(e))).normalize(),l=e.cross(c).negate(),u=r.mul(wE(c,l,e).transpose()).toVar(),f=u.mul(i.sub(n)).normalize().toVar(),p=u.mul(a.sub(n)).normalize().toVar(),m=u.mul(o.sub(n)).normalize().toVar(),h=u.mul(s.sub(n)).normalize().toVar(),g=J(0).toVar();g.addAssign(mI({v1:f,v2:p})),g.addAssign(mI({v1:p,v2:m})),g.addAssign(mI({v1:m,v2:h})),g.addAssign(mI({v1:h,v2:f})),d.assign(J(pI({f:g})))}),d}).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`}]}),gI=1/6,_I=e=>OD(gI,OD(e,OD(e,e.negate().add(3)).sub(3)).add(1)),vI=e=>OD(gI,OD(e,OD(e,OD(3,e).sub(6))).add(4)),yI=e=>OD(gI,OD(e,OD(e,OD(-3,e).add(3)).add(3)).add(1)),bI=e=>OD(gI,QO(e,3)),xI=e=>_I(e).add(vI(e)),SI=e=>yI(e).add(bI(e)),CI=e=>ED(-1,vI(e).div(_I(e).add(vI(e)))),wI=e=>ED(1,bI(e).div(yI(e).add(bI(e)))),TI=(e,t,n)=>{let r=e.uvNode,i=OD(r,t.zw).add(.5),a=mO(i),o=_O(i),s=xI(o.x),c=SI(o.x),l=CI(o.x),u=wI(o.x),d=CI(o.y),f=wI(o.y),p=q(a.x.add(l),a.y.add(d)).sub(.5).mul(t.xy),m=q(a.x.add(u),a.y.add(d)).sub(.5).mul(t.xy),h=q(a.x.add(l),a.y.add(f)).sub(.5).mul(t.xy),g=q(a.x.add(u),a.y.add(f)).sub(.5).mul(t.xy),_=xI(o.y).mul(ED(s.mul(e.sample(p).level(n)),c.mul(e.sample(m).level(n)))),v=SI(o.y).mul(ED(s.mul(e.sample(h).level(n)),c.mul(e.sample(g).level(n))));return _.add(v)},EI=U(([e,t])=>{let n=q(e.size(G(t))),r=q(e.size(G(t.add(1)))),i=kD(1,n),a=kD(1,r),o=TI(e,yE(i,n),mO(t)),s=TI(e,yE(a,r),hO(t));return _O(t).mix(o,s)}),DI=U(([e,t])=>EI(e,t.mul(IA(e)))),OI=U(([e,t,n,r,i])=>{let a=J(ck(t.negate(),gO(e),kD(1,r))),o=J(MO(i[0].xyz),MO(i[1].xyz),MO(i[2].xyz));return gO(a).mul(n.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`}]}),kI=U(([e,t])=>e.mul(ok(t.mul(2).sub(2),0,1))).setLayout({name:`applyIorToRoughness`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`ior`,type:`float`}]}),AI=LP(),jI=zP(),MI=U(([e,t,n],{material:r})=>EI((r.side===1?AI:jI).sample(e),dO(ij.x).mul(kI(t,n)))),NI=U(([e,t,n])=>(cE(n.notEqual(0),()=>cO(uO(t).negate().div(n).negate().mul(e))),J(1))).setLayout({name:`volumeAttenuation`,type:`vec3`,inputs:[{name:`transmissionDistance`,type:`float`},{name:`attenuationColor`,type:`vec3`},{name:`attenuationDistance`,type:`float`}]}),PI=U(([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m])=>{let h,g;if(m){h=yE().toVar(),g=J().toVar();let i=u.sub(1).mul(m.mul(.025)),a=J(u.sub(i),u,u.add(i));SP({start:0,end:3},({i})=>{let u=a.element(i),m=OI(e,t,d,u,s),_=o.add(m),v=l.mul(c.mul(yE(_,1))),y=q(v.xy.div(v.w)).toVar();y.addAssign(1),y.divAssign(2),y.assign(q(y.x,y.y.oneMinus()));let b=MI(y,n,u);h.element(i).assign(b.element(i)),h.a.addAssign(b.a),g.element(i).assign(r.element(i).mul(NI(MO(m),f,p).element(i)))}),h.a.divAssign(3)}else{let i=OI(e,t,d,u,s),a=o.add(i),m=l.mul(c.mul(yE(a,1))),_=q(m.xy.div(m.w)).toVar();_.addAssign(1),_.divAssign(2),_.assign(q(_.x,_.y.oneMinus())),h=MI(_,n,u),g=r.mul(NI(MO(i),f,p))}let _=g.rgb.mul(h.rgb),v=J(sI({dotNV:e.dot(t).clamp(),specularColor:i,specularF90:a,roughness:n})),y=g.r.add(g.g,g.b).div(3);return yE(v.oneMinus().mul(_),h.a.oneMinus().mul(y).oneMinus())}),FI=wE(3.2404542,-.969266,.0556434,-1.5371385,1.8760108,-.2040259,-.4985314,.041556,1.0572252),II=e=>{let t=e.sqrt();return J(1).add(t).div(J(1).sub(t))},LI=(e,t)=>e.sub(t).div(e.add(t)).pow2(),RI=(e,t)=>{let n=e.mul(2*Math.PI*1e-9),r=J(54856e-17,44201e-17,52481e-17),i=J(1681e3,1795300,2208400),a=J(43278e5,93046e5,66121e5),o=W(9747e-17*Math.sqrt(2*Math.PI*45282e5)).mul(n.mul(2239900).add(t.x).cos()).mul(n.pow2().mul(-45282e5).exp()),s=r.mul(a.mul(2*Math.PI).sqrt()).mul(i.mul(n).add(t).cos()).mul(n.pow2().negate().mul(a).exp());return s=J(s.x.add(o),s.y,s.z).div(1.0685e-7),FI.mul(s)},zI=U(({outsideIOR:e,eta2:t,cosTheta1:n,thinFilmThickness:r,baseF0:i})=>{let a=ak(e,t,lk(0,.03,r)),o=e.div(a).pow2().mul(n.pow2().oneMinus()).oneMinus();cE(o.lessThan(0),()=>J(1));let s=o.sqrt(),c=zF({f0:LI(a,e),f90:1,dotVH:n}),l=c.oneMinus(),u=a.lessThan(e).select(Math.PI,0),d=W(Math.PI).sub(u),f=II(i.clamp(0,.9999)),p=zF({f0:LI(f,a.toVec3()),f90:1,dotVH:s}),m=J(f.x.lessThan(a).select(Math.PI,0),f.y.lessThan(a).select(Math.PI,0),f.z.lessThan(a).select(Math.PI,0)),h=a.mul(r,s,2),g=J(d).add(m),_=c.mul(p).clamp(1e-5,.9999),v=_.sqrt(),y=l.pow2().mul(p).div(J(1).sub(_)),b=c.add(y).toVar(),x=y.sub(l).toVar();return SP({start:1,end:2,condition:`<=`,name:`m`},({m:e})=>{x.mulAssign(v);let t=RI(W(e).mul(h),W(e).mul(g)).mul(2);b.addAssign(x.mul(t))}),b.max(J(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`}]}),BI=U(({normal:e,viewDir:t,roughness:n})=>{let r=e.dot(t).saturate(),i=n.mul(n),a=n.add(.1).reciprocal(),o=W(-1.9362).add(n.mul(1.0678)).add(i.mul(.4573)).sub(a.mul(.8469)),s=W(-.6014).add(n.mul(.5538)).sub(i.mul(.467)).sub(a.mul(.1255));return o.mul(r).add(s).exp().saturate()}),VI=J(.04),HI=W(1),UI=class extends FF{constructor(e=!1,t=!1,n=!1,r=!1,i=!1,a=!1){super(),this.clearcoat=e,this.sheen=t,this.iridescence=n,this.anisotropy=r,this.transmission=i,this.dispersion=a,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=J().toVar(`clearcoatRadiance`),this.clearcoatSpecularDirect=J().toVar(`clearcoatSpecularDirect`),this.clearcoatSpecularIndirect=J().toVar(`clearcoatSpecularIndirect`)),this.sheen===!0&&(this.sheenSpecularDirect=J().toVar(`sheenSpecularDirect`),this.sheenSpecularIndirect=J().toVar(`sheenSpecularIndirect`)),this.iridescence===!0){let e=vM.dot(lM).clamp(),t=zI({outsideIOR:W(1),eta2:GE,cosTheta1:e,thinFilmThickness:KE,baseF0:ZE}),n=zI({outsideIOR:W(1),eta2:GE,cosTheta1:e,thinFilmThickness:KE,baseF0:FE.rgb});this.iridescenceFresnel=ak(t,n,zE),this.iridescenceF0Dielectric=cI({f:t,f90:1,dotVH:e}),this.iridescenceF0Metallic=cI({f:n,f90:1,dotVH:e}),this.iridescenceF0=ak(this.iridescenceF0Dielectric,this.iridescenceF0Metallic,zE)}if(this.transmission===!0){let t=oM,n=Nj.sub(oM).normalize(),r=yM,i=e.context;i.backdrop=PI(r,n,RE,IE,QE,$E,t,Gj,Aj,Oj,aD,sD,lD,cD,this.dispersion?uD:null),i.backdropAlpha=oD,FE.a.mulAssign(ak(1,i.backdrop.a,oD))}super.start(e)}computeMultiscattering(e,t,n,r,i=null){let a=aI({roughness:RE,dotNV:vM.dot(lM).clamp()}),o=i?WE.mix(r,i):r,s=o.mul(a.x).add(n.mul(a.y)),c=a.x.add(a.y).oneMinus(),l=o.add(o.oneMinus().mul(.047619)),u=s.mul(l).div(c.mul(l).oneMinus());e.addAssign(s),t.addAssign(u.mul(c))}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=vM.dot(e).clamp().mul(t).toVar();if(this.sheen===!0){this.sheenSpecularDirect.addAssign(r.mul(dI({lightDirection:e})));let t=BI({normal:vM,viewDir:lM,roughness:UE}),n=BI({normal:vM,viewDir:e,roughness:UE}),i=HE.r.max(HE.g).max(HE.b).mul(t.max(n)).oneMinus();r.mulAssign(i)}if(this.clearcoat===!0){let n=bM.dot(e).clamp().mul(t);this.clearcoatSpecularDirect.addAssign(n.mul(nI({lightDirection:e,f0:VI,f90:HI,roughness:VE,normalView:bM})))}n.directDiffuse.addAssign(r.mul(BF({diffuseColor:IE}))),n.directSpecular.addAssign(r.mul(oI({lightDirection:e,f0:QE,f90:1,roughness:RE,f:this.iridescenceFresnel,USE_IRIDESCENCE:this.iridescence,USE_ANISOTROPY:this.anisotropy})))}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:r,reflectedLight:i,ltc_1:a,ltc_2:o}){let s=t.add(n).sub(r),c=t.sub(n).sub(r),l=t.sub(n).add(r),u=t.add(n).add(r),d=vM,f=lM,p=cM.toVar(),m=fI({N:d,V:f,roughness:RE}),h=a.sample(m).toVar(),g=o.sample(m).toVar(),_=wE(J(h.x,0,h.y),J(0,1,0),J(h.z,0,h.w)).toVar(),v=QE.mul(g.x).add($E.sub(QE).mul(g.y)).toVar();if(i.directSpecular.addAssign(e.mul(v).mul(hI({N:d,V:f,P:p,mInv:_,p0:s,p1:c,p2:l,p3:u}))),i.directDiffuse.addAssign(e.mul(IE).mul(hI({N:d,V:f,P:p,mInv:wE(1,0,0,0,1,0,0,0,1),p0:s,p1:c,p2:l,p3:u}))),this.clearcoat===!0){let t=bM,n=fI({N:t,V:f,roughness:VE}),r=a.sample(n),i=o.sample(n),d=wE(J(r.x,0,r.y),J(0,1,0),J(r.z,0,r.w)),m=VI.mul(i.x).add(HI.sub(VI).mul(i.y));this.clearcoatSpecularDirect.addAssign(e.mul(m).mul(hI({N:t,V:f,P:p,mInv:d,p0:s,p1:c,p2:l,p3:u})))}}indirect(e){this.indirectDiffuse(e),this.indirectSpecular(e),this.ambientOcclusion(e)}indirectDiffuse(e){let{irradiance:t,reflectedLight:n}=e.context,r=t.mul(BF({diffuseColor:IE})).toVar();if(this.sheen===!0){let e=BI({normal:vM,viewDir:lM,roughness:UE}),t=HE.r.max(HE.g).max(HE.b).mul(e).oneMinus();r.mulAssign(t)}n.indirectDiffuse.addAssign(r)}indirectSpecular(e){let{radiance:t,iblIrradiance:n,reflectedLight:r}=e.context;if(this.sheen===!0&&this.sheenSpecularIndirect.addAssign(n.mul(HE,BI({normal:vM,viewDir:lM,roughness:UE}))),this.clearcoat===!0){let e=sI({dotNV:bM.dot(lM).clamp(),specularColor:VI,specularF90:HI,roughness:VE});this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(e))}let i=J().toVar(`singleScatteringDielectric`),a=J().toVar(`multiScatteringDielectric`),o=J().toVar(`singleScatteringMetallic`),s=J().toVar(`multiScatteringMetallic`);this.computeMultiscattering(i,a,$E,ZE,this.iridescenceF0Dielectric),this.computeMultiscattering(o,s,$E,FE.rgb,this.iridescenceF0Metallic);let c=ak(i,o,zE),l=ak(a,s,zE),u=i.add(a),d=IE.mul(u.oneMinus()),f=n.mul(1/Math.PI),p=t.mul(c).add(l.mul(f)).toVar(),m=d.mul(f).toVar();if(this.sheen===!0){let e=BI({normal:vM,viewDir:lM,roughness:UE}),t=HE.r.max(HE.g).max(HE.b).mul(e).oneMinus();p.mulAssign(t),m.mulAssign(t)}r.indirectSpecular.addAssign(p),r.indirectDiffuse.addAssign(m)}ambientOcclusion(e){let{ambientOcclusion:t,reflectedLight:n}=e.context,r=vM.dot(lM).clamp().add(t),i=RE.mul(-16).oneMinus().negate().exp2(),a=t.sub(r.pow(i).oneMinus()).clamp();this.clearcoat===!0&&this.clearcoatSpecularIndirect.mulAssign(t),this.sheen===!0&&this.sheenSpecularIndirect.mulAssign(t),n.indirectDiffuse.mulAssign(t),n.indirectSpecular.mulAssign(a)}finish({context:e}){let{outgoingLight:t}=e;if(this.clearcoat===!0){let e=zF({dotVH:bM.dot(lM).clamp(),f0:VI,f90:HI}),n=t.mul(BE.mul(e).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(BE));t.assign(n)}if(this.sheen===!0){let e=t.add(this.sheenSpecularDirect,this.sheenSpecularIndirect.mul(1/Math.PI));t.assign(e)}}},WI=W(1),GI=W(-2),KI=W(.8),qI=W(-1),JI=W(.4),YI=W(2),XI=W(.305),ZI=W(3),QI=W(.21),$I=W(4),eL=W(4),tL=W(16),nL=U(([e])=>{let t=J(AO(e)).toVar(),n=W(-1).toVar();return cE(t.x.greaterThan(t.z),()=>{cE(t.x.greaterThan(t.y),()=>{n.assign(_k(e.x.greaterThan(0),0,3))}).Else(()=>{n.assign(_k(e.y.greaterThan(0),1,4))})}).Else(()=>{cE(t.z.greaterThan(t.y),()=>{n.assign(_k(e.z.greaterThan(0),2,5))}).Else(()=>{n.assign(_k(e.y.greaterThan(0),1,4))})}),n}).setLayout({name:`getFace`,type:`float`,inputs:[{name:`direction`,type:`vec3`}]}),rL=U(([e,t])=>{let n=q().toVar();return cE(t.equal(0),()=>{n.assign(q(e.z,e.y).div(AO(e.x)))}).ElseIf(t.equal(1),()=>{n.assign(q(e.x.negate(),e.z.negate()).div(AO(e.y)))}).ElseIf(t.equal(2),()=>{n.assign(q(e.x.negate(),e.y).div(AO(e.z)))}).ElseIf(t.equal(3),()=>{n.assign(q(e.z.negate(),e.y).div(AO(e.x)))}).ElseIf(t.equal(4),()=>{n.assign(q(e.x.negate(),e.z).div(AO(e.y)))}).Else(()=>{n.assign(q(e.x,e.y).div(AO(e.z)))}),OD(.5,n.add(1))}).setLayout({name:`getUV`,type:`vec2`,inputs:[{name:`direction`,type:`vec3`},{name:`face`,type:`float`}]}),iL=U(([e])=>{let t=W(0).toVar();return cE(e.greaterThanEqual(KI),()=>{t.assign(WI.sub(e).mul(qI.sub(GI)).div(WI.sub(KI)).add(GI))}).ElseIf(e.greaterThanEqual(JI),()=>{t.assign(KI.sub(e).mul(YI.sub(qI)).div(KI.sub(JI)).add(qI))}).ElseIf(e.greaterThanEqual(XI),()=>{t.assign(JI.sub(e).mul(ZI.sub(YI)).div(JI.sub(XI)).add(YI))}).ElseIf(e.greaterThanEqual(QI),()=>{t.assign(XI.sub(e).mul($I.sub(ZI)).div(XI.sub(QI)).add(ZI))}).Else(()=>{t.assign(W(-2).mul(dO(OD(1.16,e))))}),t}).setLayout({name:`roughnessToMip`,type:`float`,inputs:[{name:`roughness`,type:`float`}]}),aL=U(([e,t])=>{let n=e.toVar();n.assign(OD(2,n).sub(1));let r=J(n,1).toVar();return cE(t.equal(0),()=>{r.assign(r.zyx)}).ElseIf(t.equal(1),()=>{r.assign(r.xzy),r.xz.mulAssign(-1)}).ElseIf(t.equal(2),()=>{r.x.mulAssign(-1)}).ElseIf(t.equal(3),()=>{r.assign(r.zyx),r.xz.mulAssign(-1)}).ElseIf(t.equal(4),()=>{r.assign(r.xzy),r.xy.mulAssign(-1)}).ElseIf(t.equal(5),()=>{r.z.mulAssign(-1)}),r}).setLayout({name:`getDirection`,type:`vec3`,inputs:[{name:`uv`,type:`vec2`},{name:`face`,type:`float`}]}),oL=U(([e,t,n,r,i,a])=>{let o=W(n),s=J(t),c=ok(iL(o),GI,a),l=_O(c),u=mO(c),d=J(sL(e,s,u,r,i,a)).toVar();return cE(l.notEqual(0),()=>{let t=J(sL(e,s,u.add(1),r,i,a)).toVar();d.assign(ak(d,t,l))}),d}),sL=U(([e,t,n,r,i,a])=>{let o=W(n).toVar(),s=J(t),c=W(nL(s)).toVar(),l=W(GO(eL.sub(o),0)).toVar();o.assign(GO(o,eL));let u=W(lO(o)).toVar(),d=q(rL(s,c).mul(u.sub(2)).add(1)).toVar();return cE(c.greaterThan(2),()=>{d.y.addAssign(u),c.subAssign(3)}),d.x.addAssign(c.mul(u)),d.x.addAssign(l.mul(OD(3,tL))),d.y.addAssign(OD(4,lO(a).sub(u))),d.x.mulAssign(r),d.y.mulAssign(i),e.sample(d).grad(q(),q())}),cL=U(({envMap:e,mipInt:t,outputDirection:n,theta:r,axis:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:s})=>{let c=bO(r);return sL(e,n.mul(c).add(i.cross(n).mul(vO(r))).add(i.mul(i.dot(n).mul(c.oneMinus()))),t,a,o,s)}),lL=U(({n:e,latitudinal:t,poleAxis:n,outputDirection:r,weights:i,samples:a,dTheta:o,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d})=>{let f=J(_k(t,n,ZO(n,r))).toVar();cE(f.equal(J(0)),()=>{f.assign(J(r.z,0,r.x.negate()))}),f.assign(gO(f));let p=J().toVar();return p.addAssign(i.element(0).mul(cL({theta:0,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d}))),SP({start:G(1),end:e},({i:e})=>{cE(e.greaterThanEqual(a),()=>{wP()});let t=W(o.mul(W(e))).toVar();p.addAssign(i.element(e).mul(cL({theta:t.mul(-1),axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d}))),p.addAssign(i.element(e).mul(cL({theta:t,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d})))}),yE(p,1)}),uL=U(([e])=>{let t=K(e).toVar();return t.assign(t.shiftLeft(K(16)).bitOr(t.shiftRight(K(16)))),t.assign(t.bitAnd(K(1431655765)).shiftLeft(K(1)).bitOr(t.bitAnd(K(2863311530)).shiftRight(K(1)))),t.assign(t.bitAnd(K(858993459)).shiftLeft(K(2)).bitOr(t.bitAnd(K(3435973836)).shiftRight(K(2)))),t.assign(t.bitAnd(K(252645135)).shiftLeft(K(4)).bitOr(t.bitAnd(K(4042322160)).shiftRight(K(4)))),t.assign(t.bitAnd(K(16711935)).shiftLeft(K(8)).bitOr(t.bitAnd(K(4278255360)).shiftRight(K(8)))),W(t).mul(23283064365386963e-26)}),dL=U(([e,t])=>q(W(e).div(W(t)),uL(e))),fL=U(([e,t,n])=>{let r=n.mul(n).toConst(),i=J(1,0,0).toConst(),a=ZO(t,i).toConst(),o=fO(e.x).toConst(),s=OD(2,3.14159265359).mul(e.y).toConst(),c=o.mul(bO(s)).toConst(),l=o.mul(vO(s)).toVar(),u=OD(.5,t.z.add(1)).toConst();l.assign(u.oneMinus().mul(fO(c.mul(c).oneMinus())).add(u.mul(l)));let d=i.mul(c).add(a.mul(l)).add(t.mul(fO(GO(0,c.mul(c).add(l.mul(l)).oneMinus()))));return gO(J(r.mul(d.x),r.mul(d.y),GO(0,d.z)))}),pL=U(({roughness:e,mipInt:t,envMap:n,N_immutable:r,GGX_SAMPLES:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:s})=>{let c=J(r).toVar(),l=J(0).toVar(),u=W(0).toVar();return cE(e.lessThan(.001),()=>{l.assign(sL(n,c,t,a,o,s))}).Else(()=>{let r=gO(ZO(_k(AO(c.z).lessThan(.999),J(0,0,1),J(1,0,0)),c)).toVar(),d=ZO(c,r).toVar();SP({start:K(0),end:i},({i:f})=>{let p=fL(dL(f,i),J(0,0,1),e),m=gO(r.mul(p.x).add(d.mul(p.y)).add(c.mul(p.z))),h=gO(m.mul(XO(c,m).mul(2)).sub(c)),g=GO(XO(c,h),0);cE(g.greaterThan(0),()=>{let e=sL(n,h,t,a,o,s);l.addAssign(e.mul(g)),u.addAssign(g)})}),cE(u.greaterThan(0),()=>{l.assign(l.div(u))})}),yE(l,1)}),mL=4,hL=[.125,.215,.35,.446,.526,.582],gL=20,_L=512,vL=new hd(-1,1,1,-1,0,1),yL=new ud(90,1),bL=new I,xL=null,SL=0,CL=0,wL=new P,TL=new WeakMap,EL=[3,1,5,0,4,2],DL=aL(PA(),NA(`faceIndex`)).normalize(),OL=J(DL.x,DL.y,DL.z),kL=class{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,i={}){let{size:a=256,position:o=wL,renderTarget:s=null}=i;if(this._setSize(a),this._hasInitialized===!1){j(`PMREMGenerator: ".fromScene()" called before the backend is initialized. Try using "await renderer.init()" instead.`);let a=s||this._allocateTarget();return i.renderTarget=a,this.fromSceneAsync(e,t,n,r,i),a}xL=this._renderer.getRenderTarget(),SL=this._renderer.getActiveCubeFace(),CL=this._renderer.getActiveMipmapLevel();let c=s||this._allocateTarget();return c.depthBuffer=!0,this._init(c),this._sceneToCubeUV(e,n,r,c,o),t>0&&this._blur(c,0,0,t),this._applyPMREM(c),this._cleanup(c),c}async fromSceneAsync(e,t=0,n=.1,r=100,i={}){return In(`PMREMGenerator: ".fromSceneAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this.fromScene(e,t,n,r,i)}fromEquirectangular(e,t=null){if(this._hasInitialized===!1){j(`PMREMGenerator: .fromEquirectangular() called before the backend is initialized. Try using "await renderer.init()" instead.`),this._setSizeFromTexture(e);let n=t||this._allocateTarget();return this.fromEquirectangularAsync(e,n),n}return this._fromTexture(e,t)}async fromEquirectangularAsync(e,t=null){return In(`PMREMGenerator: ".fromEquirectangularAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this._fromTexture(e,t)}fromCubemap(e,t=null){if(this._hasInitialized===!1){j(`PMREMGenerator: .fromCubemap() called before the backend is initialized. Try using .fromCubemapAsync() instead.`),this._setSizeFromTexture(e);let n=t||this._allocateTarget();return this.fromCubemapAsync(e,t),n}return this._fromTexture(e,t)}async fromCubemapAsync(e,t=null){return In(`PMREMGenerator: ".fromCubemapAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this._fromTexture(e,t)}async compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=FL(),await this._compileMaterial(this._cubemapMaterial))}async compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=IL(),await 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===301||e.mapping===302?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=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;e<this._lodMeshes.length;e++)this._lodMeshes[e].geometry.dispose()}_cleanup(e){this._renderer.setRenderTarget(xL,SL,CL),e.scissorTest=!1,this._setViewport(e,0,0,e.width,e.height)}_fromTexture(e,t){this._setSizeFromTexture(e),xL=this._renderer.getRenderTarget(),SL=this._renderer.getActiveCubeFace(),CL=this._renderer.getActiveMipmapLevel();let n=t||this._allocateTarget();return this._init(n),this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTarget(){return jL(3*Math.max(this._cubeSize,112),4*this._cubeSize)}_init(e){if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e.width||this._pingPongRenderTarget.height!==e.height){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=jL(e.width,e.height);let{_lodMax:t}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods,sigmas:this._sigmas}=AL(t)),this._blurMaterial=NL(t,e.width,e.height),this._ggxMaterial=PL(t,e.width,e.height)}}async _compileMaterial(e){let t=new bo(new Oa,e);await this._renderer.compile(t,vL)}_sceneToCubeUV(e,t,n,r,i){let a=yL;a.near=t,a.far=n;let o=[1,1,1,1,-1,1],s=[1,-1,1,-1,1,-1],c=this._renderer,l=c.autoClear;c.getClearColor(bL),c.autoClear=!1,this._backgroundBox===null&&(this._backgroundBox=new bo(new nc,new so({name:`PMREM.Background`,side:1,depthWrite:!1,depthTest:!1})));let u=this._backgroundBox,d=u.material,f=!1,p=e.background;p?p.isColor&&(d.color.copy(p),e.background=null,f=!0):(d.color.copy(bL),f=!0),c.setRenderTarget(r),c.clear(),f&&c.render(u,a);for(let t=0;t<6;t++){let n=t%3;n===0?(a.up.set(0,o[t],0),a.position.set(i.x,i.y,i.z),a.lookAt(i.x+s[t],i.y,i.z)):n===1?(a.up.set(0,0,o[t]),a.position.set(i.x,i.y,i.z),a.lookAt(i.x,i.y+s[t],i.z)):(a.up.set(0,o[t],0),a.position.set(i.x,i.y,i.z),a.lookAt(i.x,i.y,i.z+s[t]));let l=this._cubeSize;this._setViewport(r,n*l,t>2?l:0,l,l),c.render(e,a)}c.autoClear=l,e.background=p}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?this._cubemapMaterial===null&&(this._cubemapMaterial=FL(e)):this._equirectMaterial===null&&(this._equirectMaterial=IL(e));let i=r?this._cubemapMaterial:this._equirectMaterial;i.fragmentNode.value=e;let a=this._lodMeshes[0];a.material=i;let o=this._cubeSize;this._setViewport(t,0,0,3*o,2*o),n.setRenderTarget(t),n.render(a,vL)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let t=1;t<r;t++)this._applyGGXFilter(e,t-1,t);t.autoClear=n}_applyGGXFilter(e,t,n){let r=this._renderer,i=this._pingPongRenderTarget,a=this._ggxMaterial,o=this._lodMeshes[n];o.material=a;let s=TL.get(a),c=n/(this._lodMeshes.length-1),l=t/(this._lodMeshes.length-1),u=Math.sqrt(c*c-l*l)*(0+c*1.25),{_lodMax:d}=this,f=this._sizeLods[n],p=3*f*(n>d-mL?n-d+mL:0),m=4*(this._cubeSize-f);e.texture.frame=(e.texture.frame||0)+1,s.envMap.value=e.texture,s.roughness.value=u,s.mipInt.value=d-t,this._setViewport(i,p,m,3*f,2*f),r.setRenderTarget(i),r.render(o,vL),i.texture.frame=(i.texture.frame||0)+1,s.envMap.value=i.texture,s.roughness.value=0,s.mipInt.value=d-n,this._setViewport(e,p,m,3*f,2*f),r.setRenderTarget(e),r.render(o,vL)}_blur(e,t,n,r,i){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,r,`latitudinal`,i),this._halfBlur(a,e,n,n,r,`longitudinal`,i)}_halfBlur(e,t,n,r,i,a,o){let s=this._renderer,c=this._blurMaterial;a!==`latitudinal`&&a!==`longitudinal`&&M(`blur direction must be either latitudinal or longitudinal!`);let l=this._lodMeshes[r];l.material=c;let u=TL.get(c),d=this._sizeLods[n]-1,f=isFinite(i)?Math.PI/(2*d):2*Math.PI/(2*gL-1),p=i/f,m=isFinite(i)?1+Math.floor(3*p):gL;m>gL&&j(`sigmaRadians, ${i}, is too large and will clip, as it requested ${m} samples when the maximum is set to ${gL}`);let h=[],g=0;for(let e=0;e<gL;++e){let t=e/p,n=Math.exp(-t*t/2);h.push(n),e===0?g+=n:e<m&&(g+=2*n)}for(let e=0;e<h.length;e++)h[e]=h[e]/g;e.texture.frame=(e.texture.frame||0)+1,u.envMap.value=e.texture,u.samples.value=m,u.weights.array=h,u.latitudinal.value=+(a===`latitudinal`),o&&(u.poleAxis.value=o);let{_lodMax:_}=this;u.dTheta.value=f,u.mipInt.value=_-n;let v=this._sizeLods[r],y=3*v*(r>_-mL?r-_+mL:0),b=4*(this._cubeSize-v);this._setViewport(t,y,b,3*v,2*v),s.setRenderTarget(t),s.render(l,vL)}_setViewport(e,t,n,r,i){this._renderer.isWebGLRenderer?(e.viewport.set(t,e.height-i-n,r,i),e.scissor.set(t,e.height-i-n,r,i)):(e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i))}};function AL(e){let t=[],n=[],r=[],i=e,a=e-mL+1+hL.length;for(let o=0;o<a;o++){let a=2**i;t.push(a);let s=1/a;o>e-mL?s=hL[o-e+mL-1]:o===0&&(s=0),n.push(s);let c=1/(a-2),l=-c,u=1+c,d=[l,l,u,l,u,u,l,l,u,u,l,u],f=new Float32Array(108),p=new Float32Array(72),m=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,r=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0],i=EL[e];f.set(r,18*i),p.set(d,12*i);let a=[i,i,i,i,i,i];m.set(a,6*i)}let h=new Oa;h.setAttribute(`position`,new sa(f,3)),h.setAttribute(`uv`,new sa(p,2)),h.setAttribute(`faceIndex`,new sa(m,1)),r.push(new bo(h,null)),i>mL&&i--}return{lodMeshes:r,sizeLods:t,sigmas:n}}function jL(e,t){let n=new Pr(e,t,{magFilter:Te,minFilter:Te,generateMipmaps:!1,type:Fe,format:Ue,colorSpace:Zt});return n.texture.mapping=306,n.texture.name=`PMREM.cubeUv`,n.texture.isPMREMTexture=!0,n.scissorTest=!0,n}function ML(e){let t=new vF;return t.depthTest=!1,t.depthWrite=!1,t.blending=0,t.name=`PMREM_${e}`,t}function NL(e,t,n){let r=ZA(Array(gL).fill(0)),i=vD(new P(0,1,0)),a=vD(0),o=W(gL),s=vD(0),c={n:o,latitudinal:s,weights:r,poleAxis:i,outputDirection:OL,dTheta:a,samples:vD(1),envMap:VA(),mipInt:vD(0),CUBEUV_TEXEL_WIDTH:W(1/t),CUBEUV_TEXEL_HEIGHT:W(1/n),CUBEUV_MAX_MIP:W(e)},l=ML(`blur`);return l.fragmentNode=lL({...c,latitudinal:s.equal(1)}),TL.set(l,c),l}function PL(e,t,n){let r={envMap:VA(),roughness:vD(0),mipInt:vD(0),CUBEUV_TEXEL_WIDTH:W(1/t),CUBEUV_TEXEL_HEIGHT:W(1/n),CUBEUV_MAX_MIP:W(e)},i=ML(`ggx`);return i.fragmentNode=pL({...r,N_immutable:OL,GGX_SAMPLES:K(_L)}),TL.set(i,r),i}function FL(e){let t=ML(`cubemap`);return t.fragmentNode=IM(e,OL),t}function IL(e){let t=ML(`equirect`);return t.fragmentNode=VA(e,TF(OL),0),t}var LL=new WeakMap;function RL(e){let t=Math.log2(e)-2,n=1/e;return{texelWidth:1/(3*Math.max(2**t,112)),texelHeight:n,maxMip:t}}function zL(e,t,n){let r=BL(t),i=r.get(e);if((i===void 0?-1:i.pmremVersion)!==e.pmremVersion){let t=e.image;if(e.isCubeTexture)if(HL(t))i=n.fromCubemap(e,i);else return null;else if(UL(t))i=n.fromEquirectangular(e,i);else return null;i.pmremVersion=e.pmremVersion,r.set(e,i)}return i.texture}function BL(e){let t=LL.get(e);return t===void 0&&(t=new WeakMap,LL.set(e,t)),t}var VL=class extends uT{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;let r=new Mr;r.isRenderTargetTexture=!0,this._texture=VA(r),this._width=vD(0),this._height=vD(0),this._maxMip=vD(0),this.updateBeforeType=Qw.RENDER}set value(e){this._value=e,this._pmrem=null}get value(){return this._value}updateFromTexture(e){let t=RL(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,n=t?t.pmremVersion:-1,r=this._value;n!==r.pmremVersion&&(t=r.isPMREMTexture===!0?r:zL(r,e.renderer,this._generator),t!==null&&(this._pmrem=t,this.updateFromTexture(t)))}setup(e){this._generator===null&&(this._generator=new kL(e.renderer)),this.updateBefore(e);let t=this.uvNode;t===null&&e.context.getUV&&(t=e.context.getUV(this,e)),t=kM.mul(J(t.x,t.y.negate(),t.z));let n=this.levelNode;return n===null&&e.context.getTextureLevel&&(n=e.context.getTextureLevel(this)),oL(this._texture,t,n,this._width,this._height,this._maxMip)}dispose(){super.dispose(),this._generator!==null&&this._generator.dispose()}};function HL(e){if(e==null)return!1;let t=0;for(let n=0;n<6;n++)e[n]!==void 0&&t++;return t===6}function UL(e){return e==null?!1:e.height>0}var WL=rE(VL).setParameterLength(1,3),GL=new WeakMap,KL=class extends AP{static get type(){return`EnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){let{material:t}=e,n=this.envNode;if(n.isTextureNode||n.isMaterialReferenceNode){let r=n.isTextureNode?n.value:t[n.property],i=this._getPMREMNodeCache(e.renderer),a=i.get(r);a===void 0&&(a=WL(r),i.set(r,a)),n=a}let r=t.useAnisotropy===!0||t.anisotropy>0?gN:vM,i=n.context(qL(RE,r)).mul(OM),a=n.context(JL(yM)).mul(Math.PI).mul(OM),o=hA(i),s=hA(a);e.context.radiance.addAssign(o),e.context.iblIrradiance.addAssign(s);let c=e.context.lightingModel.clearcoatRadiance;if(c){let e=hA(n.context(qL(VE,bM)).mul(OM));c.addAssign(e)}}_getPMREMNodeCache(e){let t=GL.get(e);return t===void 0&&(t=new WeakMap,GL.set(e,t)),t}},qL=(e,t)=>{let n=null;return{getUV:()=>(n===null&&(n=lM.negate().reflect(t),n=tk(e).mix(n,t).normalize(),n=n.transformDirection(Aj)),n),getTextureLevel:()=>e}},JL=e=>({getUV:()=>e,getTextureLevel:()=>W(1)}),YL=new ru,XL=class extends vF{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(YL),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t===null&&e.environmentNode&&(t=e.environmentNode),t?new KL(t):null}setupLightingModel(){return new UI}setupSpecular(){let e=ak(J(.04),FE.rgb,zE);ZE.assign(J(.04)),QE.assign(e),$E.assign(1)}setupVariants(){let e=this.metalnessNode?W(this.metalnessNode):IN;zE.assign(e);let t=this.roughnessNode?W(this.roughnessNode):FN;t=XF({roughness:t}),RE.assign(t),this.setupSpecular(),IE.assign(FE.rgb.mul(e.oneMinus()))}copy(e){return this.emissiveNode=e.emissiveNode,this.metalnessNode=e.metalnessNode,this.roughnessNode=e.roughnessNode,super.copy(e)}},ZL=new iu,QL=class extends XL{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(ZL),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(){let e=this.iorNode?W(this.iorNode):XN;aD.assign(e),ZE.assign(WO($O(aD.sub(1).div(aD.add(1))).mul(MN),J(1)).mul(jN)),QE.assign(ak(ZE,FE.rgb,zE)),$E.assign(ak(jN,1,zE))}setupLightingModel(){return new UI(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion)}setupVariants(e){if(super.setupVariants(e),this.useClearcoat){let e=this.clearcoatNode?W(this.clearcoatNode):RN,t=this.clearcoatRoughnessNode?W(this.clearcoatRoughnessNode):zN;BE.assign(e),VE.assign(XF({roughness:t}))}if(this.useSheen){let e=this.sheenNode?J(this.sheenNode):HN,t=this.sheenRoughnessNode?W(this.sheenRoughnessNode):UN;HE.assign(e),UE.assign(t)}if(this.useIridescence){let e=this.iridescenceNode?W(this.iridescenceNode):GN,t=this.iridescenceIORNode?W(this.iridescenceIORNode):KN,n=this.iridescenceThicknessNode?W(this.iridescenceThicknessNode):qN;WE.assign(e),GE.assign(t),KE.assign(n)}if(this.useAnisotropy){let e=(this.anisotropyNode?q(this.anisotropyNode):WN).toVar();JE.assign(e.length()),cE(JE.equal(0),()=>{e.assign(q(1,0))}).Else(()=>{e.divAssign(q(JE)),JE.assign(JE.saturate())}),qE.assign(JE.pow2().mix(RE.pow2(),1)),YE.assign(pN[0].mul(e.x).add(pN[1].mul(e.y))),XE.assign(pN[1].mul(e.x).sub(pN[0].mul(e.y)))}if(this.useTransmission){let e=this.transmissionNode?W(this.transmissionNode):JN,t=this.thicknessNode?W(this.thicknessNode):YN,n=this.attenuationDistanceNode?W(this.attenuationDistanceNode):ZN,r=this.attenuationColorNode?J(this.attenuationColorNode):QN;if(oD.assign(e),sD.assign(t),cD.assign(n),lD.assign(r),this.useDispersion){let e=this.dispersionNode?W(this.dispersionNode):aP;uD.assign(e)}}}setupClearcoatNormal(){return this.clearcoatNormalNode?J(this.clearcoatNormalNode):BN}setup(e){e.context.setupClearcoatNormal=()=>jk(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.iorNode=e.iorNode,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)}},$L=U(({normal:e,lightDirection:t,builder:n})=>{let r=q(e.dot(t).mul(.5).add(.5),0);if(n.material.gradientMap)return J(UM(`gradientMap`,`texture`).context({getUV:()=>r}).r);{let e=r.fwidth().mul(.5);return ak(J(.7),J(1),lk(W(.7).sub(e.x),W(.7).add(e.x),r.x))}}),eR=class extends FF{direct({lightDirection:e,lightColor:t,reflectedLight:n},r){let i=$L({normal:pM,lightDirection:e,builder:r}).mul(t);n.directDiffuse.addAssign(i.mul(BF({diffuseColor:FE.rgb})))}indirect(e){let{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(BF({diffuseColor:FE}))),r.indirectDiffuse.mulAssign(t)}},tR=new ou,nR=class extends vF{static get type(){return`MeshToonNodeMaterial`}constructor(e){super(),this.isMeshToonNodeMaterial=!0,this.lights=!0,this.setDefaultValues(tR),this.setValues(e)}setupLightingModel(){return new eR}},rR=U(()=>{let e=J(lM.z,0,lM.x.negate()).normalize(),t=lM.cross(e);return q(e.dot(vM),t.dot(vM)).mul(.495).add(.5)}).once([`NORMAL`,`VERTEX`])().toVar(`matcapUV`),iR=new du,aR=class extends vF{static get type(){return`MeshMatcapNodeMaterial`}constructor(e){super(),this.isMeshMatcapNodeMaterial=!0,this.setDefaultValues(iR),this.setValues(e)}setupVariants(e){let t=rR,n;n=e.material.matcap?UM(`matcap`,`texture`).context({getUV:()=>t}):J(ak(.2,.8,t.y)),FE.rgb.mulAssign(n.rgb)}},oR=rE(class extends uT{static get type(){return`RotateNode`}constructor(e,t){super(),this.positionNode=e,this.rotationNode=t}generateNodeType(e){return this.positionNode.getNodeType(e)}setup(e){let{rotationNode:t,positionNode:n}=this;if(this.getNodeType(e)===`vec2`){let e=t.cos(),r=t.sin();return CE(e,r,r.negate(),e).mul(n)}else{let e=t,r=TE(yE(1,0,0,0),yE(0,bO(e.x),vO(e.x).negate(),0),yE(0,vO(e.x),bO(e.x),0),yE(0,0,0,1)),i=TE(yE(bO(e.y),0,vO(e.y),0),yE(0,1,0,0),yE(vO(e.y).negate(),0,bO(e.y),0),yE(0,0,0,1)),a=TE(yE(bO(e.z),vO(e.z).negate(),0,0),yE(vO(e.z),bO(e.z),0,0),yE(0,0,1,0),yE(0,0,0,1));return r.mul(i).mul(a).mul(yE(n,1)).xyz}}}).setParameterLength(2),sR=new Pa,cR=class extends vF{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(sR),this.setValues(e)}setupPositionView(e){let{object:t,camera:n}=e,{positionNode:r,rotationNode:i,scaleNode:a,sizeAttenuation:o}=this,s=Qj.mul(J(r||0)),c=q(Gj[0].xyz.length(),Gj[1].xyz.length());a!==null&&(c=c.mul(q(a))),n.isPerspectiveCamera&&o===!1&&(c=c.mul(s.z.negate()));let l=rM.xy;if(t.center&&t.center.isVector2===!0){let e=Wk(`center`,`vec2`,t);l=l.sub(e.sub(.5))}l=l.mul(c);let u=W(i||VN),d=oR(l,u);return yE(s.xy.add(d),s.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)}},lR=new Ls,uR=new N,dR=class extends cR{static get type(){return`PointsNodeMaterial`}constructor(e){super(),this.sizeNode=null,this.isPointsNodeMaterial=!0,this.setDefaultValues(lR),this.setValues(e)}setupPositionView(){let{positionNode:e}=this;return Qj.mul(J(e||iM)).xyz}setupVertexSprite(e){let{material:t,camera:n}=e,{rotationNode:r,scaleNode:i,sizeNode:a,sizeAttenuation:o}=this,s=super.setupVertex(e);if(t.isNodeMaterial!==!0)return s;let c=a===null?iP:q(a);c=c.mul(nj),n.isPerspectiveCamera&&o===!0&&(c=c.mul(fR.div(cM.z.negate()))),i&&i.isNode&&(c=c.mul(q(i)));let l=rM.xy;if(r&&r.isNode){let e=W(r);l=oR(l,e)}return l=l.mul(c),l=l.div(sj.div(2)),l=l.mul(s.w),s=s.add(yE(l,0,0)),s}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)}},fR=vD(1).onFrameUpdate(function({renderer:e}){let t=e.getSize(uR);this.value=.5*t.y}),pR=class extends FF{constructor(){super(),this.shadowNode=W(1).toVar(`shadowMask`)}direct({lightNode:e}){e.shadowNode!==null&&this.shadowNode.mulAssign(e.shadowNode)}finish({context:e}){FE.a.mulAssign(this.shadowNode.oneMinus()),e.outgoingLight.rgb.assign(FE.rgb)}},mR=new Kl,hR=class extends vF{static get type(){return`ShadowNodeMaterial`}constructor(e){super(),this.isShadowNodeMaterial=!0,this.lights=!0,this.transparent=!0,this.setDefaultValues(mR),this.setValues(e)}setupLightingModel(){return new pR}};NE(`vec3`),NE(`vec3`),NE(`vec3`);var gR=class{constructor(e,t,n){this.renderer=e,this.nodes=t,this.info=n,this._context=typeof self<`u`?self:null,this._animationLoop=null,this._requestId=null}start(){let 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!==null&&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()}},_R=class{constructor(){this.weakMaps={}}_getWeakMap(e){let t=e.length,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<e.length-1;n++)if(t=t.get(e[n]),t===void 0)return;return t.get(e[e.length-1])}set(e,t){let n=this._getWeakMap(e);for(let t=0;t<e.length-1;t++){let r=e[t];n.has(r)===!1&&n.set(r,new WeakMap),n=n.get(r)}return n.set(e[e.length-1],t),this}delete(e){let t=this._getWeakMap(e);for(let n=0;n<e.length-1;n++)if(t=t.get(e[n]),t===void 0)return!1;return t.delete(e[e.length-1])}},vR=0;function yR(e){let t=Object.keys(e),n=Object.getPrototypeOf(e);for(;n;){let e=Object.getOwnPropertyDescriptors(n);for(let n in e)if(e[n]!==void 0){let r=e[n];r&&typeof r.get==`function`&&t.push(n)}n=Object.getPrototypeOf(n)}return t}var bR=class{constructor(e,t,n,r,i,a,o,s,c,l){this.id=vR++,this._nodes=e,this._geometries=t,this.renderer=n,this.object=r,this.material=i,this.scene=a,this.camera=o,this.lightsNode=s,this.context=c,this.geometry=r.geometry,this.version=i.version,this.drawRange=null,this.attributes=null,this.attributesId=null,this.pipeline=null,this.group=null,this.vertexBuffers=null,this.drawParams=null,this.bundle=null,this.clippingContext=l,this.clippingContextCacheKey=l===null?``:l.cacheKey,this.initialNodesCacheKey=this.getDynamicCacheKey(),this.initialCacheKey=this.getCacheKey(),this._nodeBuilderState=null,this._bindings=null,this._monitor=null,this.onDispose=null,this.isRenderObject=!0,this.onMaterialDispose=()=>{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._nodes.getForRender(this)}getMonitor(){return this._monitor||=this.getNodeBuilderState().observer}getBindings(){return this._bindings||=this.getNodeBuilderState().createBindings()}getBindingGroup(e){for(let 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;let e=this.getNodeBuilderState().nodeAttributes,t=this.geometry,n=[],r=new Set,i={};for(let a of e){let e;if(a.node&&a.node.attribute?e=a.node.attribute:(e=t.getAttribute(a.name),i[a.name]=e.id),e===void 0)continue;n.push(e);let o=e.isInterleavedBufferAttribute?e.data:e;r.add(o)}return this.attributes=n,this.attributesId=i,this.vertexBuffers=Array.from(r.values()),n}getVertexBuffers(){return this.vertexBuffers===null&&this.getAttributes(),this.vertexBuffers}getDrawParameters(){let{object:e,material:t,geometry:n,group:r,drawRange:i}=this,a=this.drawParams||={vertexCount:0,firstVertex:0,instanceCount:0,firstInstance:0},o=this.getIndex(),s=o!==null,c=1;if(n.isInstancedBufferGeometry===!0?c=n.instanceCount:e.count!==void 0&&(c=Math.max(0,e.count)),c===0)return null;if(a.instanceCount=c,e.isBatchedMesh===!0)return a;let l=1;t.wireframe===!0&&!e.isPoints&&!e.isLineSegments&&!e.isLine&&!e.isLineLoop&&(l=2);let u=i.start*l,d=(i.start+i.count)*l;r!==null&&(u=Math.max(u,r.start*l),d=Math.min(d,(r.start+r.count)*l));let f=n.attributes.position,p=1/0;s?p=o.count:f!=null&&(p=f.count),u=Math.max(u,0),d=Math.min(d,p);let m=d-u;return m<0||m===1/0?null:(a.vertexCount=m,a.firstVertex=u,a)}getGeometryCacheKey(){let{geometry:e}=this,t=``;for(let n of Object.keys(e.attributes).sort()){let 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(let n of Object.keys(e.morphAttributes).sort()){let r=e.morphAttributes[n];t+=`morph-`+n+`,`;for(let e=0,n=r.length;e<n;e++){let n=r[e];t+=n.id+`,`}}return e.index&&(t+=`index,`),t}getMaterialCacheKey(){let{object:e,material:t,renderer:n}=this,r=t.customProgramCacheKey();for(let e of yR(t)){if(/^(is[A-Z]|_)|^(visible|version|uuid|name|opacity|userData)$/.test(e))continue;let i=t[e],a;if(i!==null){let e=typeof i;e===`number`?a=i===0?`0`:`1`:e===`object`?(a=`{`,i.isTexture&&(a+=i.mapping,n.backend.isWebGPUBackend===!0&&(a+=i.magFilter,a+=i.minFilter,a+=i.wrapS,a+=i.wrapT,a+=i.wrapR)),a+=`}`):a=String(i)}else a=String(i);r+=a+`,`}return r+=this.clippingContextCacheKey+`,`,e.geometry&&(r+=this.getGeometryCacheKey()),e.skeleton&&(r+=e.skeleton.bones.length+`,`),e.isBatchedMesh&&(r+=e._matricesTexture.uuid+`,`,e._colorsTexture!==null&&(r+=e._colorsTexture.uuid+`,`)),(e.isInstancedMesh||e.count>1||Array.isArray(e.morphTargetInfluences))&&(r+=e.uuid+`,`),r+=this.context.id+`,`,r+=e.receiveShadow+`,`,Iw(r)}get needsGeometryUpdate(){if(this.geometry.id!==this.object.geometry.id)return!0;if(this.attributes!==null){let e=this.attributesId;for(let t in e){let 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=Rw(e,this.camera.cameras.length)),this.object.receiveShadow&&(e=Rw(e,1)),e=Rw(e,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()}},xR=[],SR=class{constructor(e,t,n,r,i,a){this.renderer=e,this.nodes=t,this.geometries=n,this.pipelines=r,this.bindings=i,this.info=a,this.chainMaps={}}get(e,t,n,r,i,a,o,s){let c=this.getChainMap(s);xR[0]=e,xR[1]=t,xR[2]=a,xR[3]=i;let l=c.get(xR);return l===void 0?(l=this.createRenderObject(this.nodes,this.geometries,this.renderer,e,t,n,r,i,a,o,s),c.set(xR,l)):(l.camera=r,l.updateClipping(o),l.needsGeometryUpdate&&l.setGeometry(e.geometry),(l.version!==t.version||l.needsUpdate)&&(l.initialCacheKey===l.getCacheKey()?l.version=t.version:(l.dispose(),l=this.get(e,t,n,r,i,a,o,s)))),xR[0]=null,xR[1]=null,xR[2]=null,xR[3]=null,l}getChainMap(e=`default`){return this.chainMaps[e]||(this.chainMaps[e]=new _R)}dispose(){this.chainMaps={}}createRenderObject(e,t,n,r,i,a,o,s,c,l,u){let d=this.getChainMap(u),f=new bR(e,t,n,r,i,a,o,s,c,l);return f.onDispose=()=>{this.pipelines.delete(f),this.bindings.deleteForRender(f),this.nodes.delete(f),d.delete(f.getChainArray())},f}},CR=class{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}},wR={VERTEX:1,INDEX:2,STORAGE:3,INDIRECT:4},TR=16,ER=211,DR=212,OR=class extends CR{constructor(e,t){super(),this.backend=e,this.info=t}delete(e){let t=super.delete(e);return t!==null&&(this.backend.destroyAttribute(e),this.info.destroyAttribute(e)),t}update(e,t){let n=this.get(e);if(n.version===void 0)t===wR.VERTEX?(this.backend.createAttribute(e),this.info.createAttribute(e)):t===wR.INDEX?(this.backend.createIndexAttribute(e),this.info.createIndexAttribute(e)):t===wR.STORAGE?(this.backend.createStorageAttribute(e),this.info.createStorageAttribute(e)):t===wR.INDIRECT&&(this.backend.createIndirectStorageAttribute(e),this.info.createIndirectStorageAttribute(e)),n.version=this._getBufferAttribute(e).version;else{let t=this._getBufferAttribute(e);(n.version<t.version||t.usage===35048)&&(this.backend.updateAttribute(e),n.version=t.version)}}_getBufferAttribute(e){return e.isInterleavedBufferAttribute&&(e=e.data),e}};function kR(e){return e.index===null?e.attributes.position.version:e.index.version}function AR(e){return e.index===null?e.attributes.position.id:e.index.id}function jR(e){let t=[],n=e.index,r=e.attributes.position;if(n!==null){let e=n.array;for(let n=0,r=e.length;n<r;n+=3){let r=e[n+0],i=e[n+1],a=e[n+2];t.push(r,i,i,a,a,r)}}else{let e=r.array;for(let n=0,r=e.length/3-1;n<r;n+=3){let e=n+0,r=n+1,i=n+2;t.push(e,r,r,i,i,e)}}let i=new(r.count>=65535?ma:fa)(t,1);return i.version=kR(e),i.__id=AR(e),i}var MR=class extends CR{constructor(e,t){super(),this.attributes=e,this.info=t,this.wireframes=new WeakMap,this.attributeCall=new WeakMap,this._geometryDisposeListeners=new Map}has(e){let t=e.geometry;return super.has(t)&&this.get(t).initialized===!0}updateForRender(e){this.has(e)===!1&&this.initGeometry(e),this.updateAttributes(e)}initGeometry(e){let t=e.geometry,n=this.get(t);n.initialized=!0,this.info.memory.geometries++;let r=()=>{this.info.memory.geometries--;let n=t.index,i=e.getAttributes();n!==null&&this.attributes.delete(n);for(let e of i)this.attributes.delete(e);let a=this.wireframes.get(t);a!==void 0&&this.attributes.delete(a),t.removeEventListener(`dispose`,r),this._geometryDisposeListeners.delete(t)};t.addEventListener(`dispose`,r),this._geometryDisposeListeners.set(t,r)}updateAttributes(e){let t=e.getAttributes();for(let e of t)e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute?this.updateAttribute(e,wR.STORAGE):this.updateAttribute(e,wR.VERTEX);let n=this.getIndex(e);n!==null&&this.updateAttribute(n,wR.INDEX);let r=e.geometry.indirect;r!==null&&this.updateAttribute(r,wR.INDIRECT)}updateAttribute(e,t){let 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){let{geometry:t,material:n}=e,r=t.index;if(n.wireframe===!0){let e=this.wireframes,n=e.get(t);n===void 0?(n=jR(t),e.set(t,n)):(n.version!==kR(t)||n.__id!==AR(t))&&(this.attributes.delete(n),n=jR(t),e.set(t,n)),r=n}return r}dispose(){for(let[e,t]of this._geometryDisposeListeners.entries())e.removeEventListener(`dispose`,t);this._geometryDisposeListeners.clear()}},NR=class{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,attributes:0,indexAttributes:0,storageAttributes:0,indirectStorageAttributes:0,readbackBuffers:0,programs:0,renderTargets:0,total:0,texturesSize:0,attributesSize:0,indexAttributesSize:0,storageAttributesSize:0,indirectStorageAttributesSize:0,readbackBuffersSize:0,programsSize:0},this.memoryMap=new Map}update(e,t,n){this.render.drawCalls++,e.isMesh||e.isSprite?this.render.triangles+=t/3*n:e.isPoints?this.render.points+=n*t:e.isLineSegments?this.render.lines+=t/2*n:e.isLine?this.render.lines+=n*(t-1):M(`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;for(let e in this.memory)this.memory[e]=0;this.memoryMap.clear()}createTexture(e){let t=this._getTextureMemorySize(e);this.memoryMap.set(e,t),this.memory.textures++,this.memory.total+=t,this.memory.texturesSize+=t}destroyTexture(e){let t=this.memoryMap.get(e)||0;this.memoryMap.delete(e),this.memory.textures--,this.memory.total-=t,this.memory.texturesSize-=t}_createAttribute(e,t){let n=this._getAttributeMemorySize(e);this.memoryMap.set(e,{size:n,type:t}),this.memory[t]++,this.memory.total+=n,this.memory[t+`Size`]+=n}createAttribute(e){this._createAttribute(e,`attributes`)}createIndexAttribute(e){this._createAttribute(e,`indexAttributes`)}createStorageAttribute(e){this._createAttribute(e,`storageAttributes`)}createIndirectStorageAttribute(e){this._createAttribute(e,`indirectStorageAttributes`)}destroyAttribute(e){let t=this.memoryMap.get(e);t&&(this.memoryMap.delete(e),this.memory[t.type]--,this.memory.total-=t.size,this.memory[t.type+`Size`]-=t.size)}createReadbackBuffer(e){let t=e.maxByteLength;this.memoryMap.set(e,{size:t,type:`readbackBuffers`}),this.memory.readbackBuffers++,this.memory.total+=t,this.memory.readbackBuffersSize+=t}destroyReadbackBuffer(e){let{size:t}=this.memoryMap.get(e);this.memoryMap.delete(e),this.memory.readbackBuffers--,this.memory.total-=t,this.memory.readbackBuffersSize-=t}createProgram(e){let t=e.code.length;this.memoryMap.set(e,t),this.memory.programs++,this.memory.total+=t,this.memory.programsSize+=t}destroyProgram(e){let t=this.memoryMap.get(e)||0;this.memoryMap.delete(e),this.memory.programs--,this.memory.total-=t,this.memory.programsSize-=t}_getTextureMemorySize(e){if(e.isCompressedTexture)return 1;let t=1;e.type===1010||e.type===1009?t=1:e.type===1011||e.type===1012||e.type===1016?t=2:(e.type===1013||e.type===1014||e.type===1015)&&(t=4);let n=4;e.format===1021||e.format===1028||e.format===1029||e.format===1026||e.format===1027?n=1:e.format===1030||e.format===1031?n=2:(e.format===1022||e.format===1032)&&(n=3);let r=t*n;e.type===1017||e.type===1018?r=2:(e.type===1020||e.type===35902||e.type===35899)&&(r=4);let i=e.width||1,a=e.height||1,o=e.isCubeTexture?6:e.depth||1,s=i*a*o*r,c=e.mipmaps;if(c&&c.length>0){let e=0;for(let t=0;t<c.length;t++){let n=c[t];if(n.data)e+=n.data.byteLength;else{let s=n.width||Math.max(1,i>>t),c=n.height||Math.max(1,a>>t);e+=s*c*o*r}}s+=e}else e.generateMipmaps&&(s*=1.333);return Math.round(s)}_getAttributeMemorySize(e){return e.isInterleavedBufferAttribute&&(e=e.data),e.array?e.array.byteLength:e.count&&e.itemSize?e.count*e.itemSize*4:0}},PR=class{constructor(e){this.cacheKey=e,this.usedTimes=0}},FR=class extends PR{constructor(e,t,n){super(e),this.vertexProgram=t,this.fragmentProgram=n}},IR=class extends PR{constructor(e,t){super(e),this.computeProgram=t,this.isComputePipeline=!0}},LR=0,RR=class{constructor(e,t,n,r=null,i=null){this.id=LR++,this.code=e,this.stage=t,this.name=n,this.transforms=r,this.attributes=i,this.usedTimes=0}},zR=class extends CR{constructor(e,t,n){super(),this.backend=e,this.nodes=t,this.info=n,this.bindings=null,this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}getForCompute(e,t){let{backend:n}=this,r=this.get(e);if(this._needsComputeUpdate(e)){let i=r.pipeline;i&&(i.usedTimes--,i.computeProgram.usedTimes--);let a=this.nodes.getForCompute(e),o=this.programs.compute.get(a.computeShader);o===void 0&&(i&&i.computeProgram.usedTimes===0&&this._releaseProgram(i.computeProgram),o=new RR(a.computeShader,`compute`,e.name,a.transforms,a.nodeAttributes),this.programs.compute.set(a.computeShader,o),n.createProgram(o),this.info.createProgram(o));let s=this._getComputeCacheKey(e,o),c=this.caches.get(s);c===void 0&&(i&&i.usedTimes===0&&this._releasePipeline(i),c=this._getComputePipeline(e,o,s,t)),c.usedTimes++,o.usedTimes++,r.version=e.version,r.pipeline=c}return r.pipeline}getForRender(e,t=null){let{backend:n}=this,r=this.get(e);if(this._needsRenderUpdate(e)){let i=r.pipeline;i&&(i.usedTimes--,i.vertexProgram.usedTimes--,i.fragmentProgram.usedTimes--);let a=e.getNodeBuilderState(),o=e.material?e.material.name:``,s=this.programs.vertex.get(a.vertexShader);s===void 0&&(i&&i.vertexProgram.usedTimes===0&&this._releaseProgram(i.vertexProgram),s=new RR(a.vertexShader,`vertex`,o),this.programs.vertex.set(a.vertexShader,s),n.createProgram(s),this.info.createProgram(s));let c=this.programs.fragment.get(a.fragmentShader);c===void 0&&(i&&i.fragmentProgram.usedTimes===0&&this._releaseProgram(i.fragmentProgram),c=new RR(a.fragmentShader,`fragment`,o),this.programs.fragment.set(a.fragmentShader,c),n.createProgram(c),this.info.createProgram(c));let l=this._getRenderCacheKey(e,s,c),u=this.caches.get(l);u===void 0?(i&&i.usedTimes===0&&this._releasePipeline(i),u=this._getRenderPipeline(e,s,c,l,t)):e.pipeline=u,u.usedTimes++,s.usedTimes++,c.usedTimes++,r.pipeline=u}return r.pipeline}isReady(e){let t=this.get(e).pipeline;if(t===void 0)return!1;let n=this.backend.get(t);return n.pipeline!==void 0&&n.pipeline!==null}delete(e){let 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||=this._getComputeCacheKey(e,t);let i=this.caches.get(n);return i===void 0&&(i=new IR(n,t),this.caches.set(n,i),this.backend.createComputePipeline(i,r)),i}_getRenderPipeline(e,t,n,r,i){r||=this._getRenderCacheKey(e,t,n);let a=this.caches.get(r);return a===void 0&&(a=new FR(r,t,n),this.caches.set(r,a),e.pipeline=a,this.backend.createRenderPipeline(e,i)),a}_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){let t=e.code,n=e.stage;this.programs[n].delete(t),this.info.destroyProgram(e)}_needsComputeUpdate(e){let 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)}},BR=class extends CR{constructor(e,t,n,r,i,a){super(),this.backend=e,this.textures=n,this.pipelines=i,this.attributes=r,this.nodes=t,this.info=a,this.pipelines.bindings=this}getForRender(e){let t=e.getBindings();for(let e of t){let n=this.get(e);n.bindGroup===void 0&&(this._init(e),this.backend.createBindings(e,t,0),n.bindGroup=e)}return t}getForCompute(e){let t=this.nodes.getForCompute(e).bindings;for(let e of t){let n=this.get(e);n.bindGroup===void 0&&(this._init(e),this.backend.createBindings(e,t,0),n.bindGroup=e)}return t}updateForCompute(e){this._updateBindings(this.getForCompute(e))}updateForRender(e){this._updateBindings(this.getForRender(e))}deleteForCompute(e){let t=this.nodes.getForCompute(e).bindings;for(let e of t)this.backend.deleteBindGroupData(e),this.delete(e)}deleteForRender(e){let t=e.getBindings();for(let e of t)this.backend.deleteBindGroupData(e),this.delete(e)}_updateBindings(e){for(let t of e)this._update(t,e)}_init(e){for(let 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){let e=t.attribute,n=e.isIndirectStorageBufferAttribute?wR.INDIRECT:wR.STORAGE;this.attributes.update(e,n)}}_update(e,t){let{backend:n}=this,r=!1,i=!0,a=0,o=0;for(let t of e.bindings)if(this.nodes.updateGroup(t)!==!1){if(t.isStorageBuffer){let e=t.attribute,i=e.isIndirectStorageBufferAttribute?wR.INDIRECT:wR.STORAGE,a=n.get(t);this.attributes.update(e,i),a.attribute!==e&&(a.attribute=e,r=!0)}if(t.isUniformBuffer)t.update()&&n.updateBinding(t);else if(t.isSampledTexture){let s=t.update(),c=t.texture,l=this.textures.get(c);if(s&&(this.textures.updateTexture(c),t.generation!==l.generation&&(t.generation=l.generation,r=!0),l.bindGroups.add(e)),n.get(c).externalTexture!==void 0||l.isDefaultTexture?i=!1:(a=a*10+c.id,o+=c.version),c.isStorageTexture===!0&&c.mipmapsAutoUpdate===!0){let e=this.get(c);t.store===!0?e.needsMipmap=!0:this.textures.needsMipmaps(c)&&e.needsMipmap===!0&&(this.backend.generateMipmaps(c),e.needsMipmap=!1)}}else if(t.isSampler&&t.update()){let e=this.textures.updateSampler(t.texture);t.samplerKey!==e&&(t.samplerKey=e,r=!0)}t.isBuffer&&t.updateRanges.length>0&&t.clearUpdateRanges()}r===!0&&this.backend.updateBindings(e,t,i?a:0,o)}};function VR(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:e.z-t.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function HR(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:t.z-e.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function UR(e){return(e.transmission>0||e.transmissionNode&&e.transmissionNode.isNode)&&e.side===2&&e.forceSinglePass===!1}var WR=class{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,i,a,o){let s=this.renderItems[this.renderItemsIndex];return s===void 0?(s={id:e.id,object:e,geometry:t,material:n,groupOrder:r,renderOrder:e.renderOrder,z:i,group:a,clippingContext:o},this.renderItems[this.renderItemsIndex]=s):(s.id=e.id,s.object=e,s.geometry=t,s.material=n,s.groupOrder=r,s.renderOrder=e.renderOrder,s.z=i,s.group=a,s.clippingContext=o),this.renderItemsIndex++,s}push(e,t,n,r,i,a,o){let s=this.getNextRenderItem(e,t,n,r,i,a,o);e.occlusionTest===!0&&this.occlusionQueryCount++,n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(UR(n)&&this.transparentDoublePass.push(s),this.transparent.push(s)):this.opaque.push(s)}unshift(e,t,n,r,i,a,o){let s=this.getNextRenderItem(e,t,n,r,i,a,o);n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(UR(n)&&this.transparentDoublePass.unshift(s),this.transparent.unshift(s)):this.opaque.unshift(s)}pushBundle(e){this.bundles.push(e)}pushLight(e){this.lightsArray.push(e)}sort(e,t){this.opaque.length>1&&this.opaque.sort(e||VR),this.transparentDoublePass.length>1&&this.transparentDoublePass.sort(t||HR),this.transparent.length>1&&this.transparent.sort(t||HR)}finish(){this.lightsNode.setLights(this.lightsArray);for(let e=this.renderItemsIndex,t=this.renderItems.length;e<t;e++){let t=this.renderItems[e];if(t.id===null)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.groupOrder=null,t.renderOrder=null,t.z=null,t.group=null,t.clippingContext=null}}},GR=[],KR=class{constructor(e){this.lighting=e,this.lists=new _R}get(e,t){let n=this.lists;GR[0]=e,GR[1]=t;let r=n.get(GR);return r===void 0&&(r=new WR(this.lighting,e,t),n.set(GR,r)),GR[0]=null,GR[1]=null,r}dispose(){this.lists=new _R}},qR=0,JR=class{constructor(){this.id=qR++,this.mrt=null,this.color=!0,this.clearColor=!0,this.clearColorValue={r:0,g:0,b:0,a:1},this.depth=!0,this.clearDepth=!0,this.clearDepthValue=1,this.stencil=!1,this.clearStencil=!0,this.clearStencilValue=1,this.viewport=!1,this.viewportValue=new Nr,this.scissor=!1,this.scissorValue=new Nr,this.renderTarget=null,this.textures=null,this.depthTexture=null,this.activeCubeFace=0,this.activeMipmapLevel=0,this.sampleCount=1,this.width=0,this.height=0,this.occlusionQueryCount=0,this.clippingContext=null,this.camera=null,this.isRenderContext=!0}getCacheKey(){return YR(this)}};function YR(e){let{textures:t,activeCubeFace:n,activeMipmapLevel:r}=e,i=[n,r];for(let e of t)i.push(e.id);return Lw(i)}var XR=class{constructor(e){this.renderer=e,this._renderContexts={}}get(e=null,t=null,n=0){let r;if(e===null)r=`default`;else{let t=e.texture.format,n=e.texture.type;r=`${e.textures.length}:${t}:${n}:${e.samples}:${e.depthBuffer}:${e.stencilBuffer}`}let i=t===null?`default`:t.id,a=r+`-`+i+`-`+n,o=this._renderContexts[a];return o===void 0&&(o=new JR,o.mrt=t,this._renderContexts[a]=o),e!==null&&(o.sampleCount=e.samples===0?1:e.samples),o.clearDepthValue=this.renderer.getClearDepth(),o.clearStencilValue=this.renderer.getClearStencil(),o}dispose(){this._renderContexts={}}},ZR=new P,QR=class extends CR{constructor(e,t,n){super(),this.renderer=e,this.backend=t,this.info=n,this._htmlTextures=new Set}updateRenderTarget(e,t=0){let n=this.get(e),r=e.samples===0?1:e.samples,i=n.depthTextureMips||={},a=e.textures,o=this.getSize(a[0]),s=o.width>>t,c=o.height>>t,l=e.depthTexture||i[t],u=e.depthBuffer===!0||e.stencilBuffer===!0,d=!1;l===void 0&&u&&(l=new $s,l.format=e.stencilBuffer?Ge:We,l.type=e.stencilBuffer?Re:Ne,l.image.width=s,l.image.height=c,l.image.depth=o.depth,l.renderTarget=e,l.isArrayTexture=e.multiview===!0&&o.depth>1,i[t]=l),(n.width!==o.width||o.height!==n.height)&&(d=!0,l&&(l.needsUpdate=!0,l.image.width=s,l.image.height=c,l.image.depth=l.isArrayTexture?l.image.depth:1)),n.width=o.width,n.height=o.height,n.textures=a,n.depthTexture=l||null,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,n.renderTarget=e,n.sampleCount!==r&&(d=!0,l&&(l.needsUpdate=!0),n.sampleCount=r);let f={sampleCount:r};if(e.isXRRenderTarget!==!0){for(let e=0;e<a.length;e++){let t=a[e];d&&(t.needsUpdate=!0),this.updateTexture(t,f)}l&&this.updateTexture(l,f)}n.initialized!==!0&&(n.initialized=!0,this.info.memory.renderTargets++,n.onDispose=()=>{this._destroyRenderTarget(e)},e.addEventListener(`dispose`,n.onDispose))}updateTexture(e,t={}){let n=this.get(e);if(n.initialized===!0&&n.version===e.version)return;let r=e.isRenderTargetTexture||e.isDepthTexture||e.isFramebufferTexture,i=this.backend;if(r&&n.initialized===!0&&i.destroyTexture(e),e.isFramebufferTexture){let t=this.renderer.getRenderTarget();t?e.type=t.texture.type:e.type=ke}if(e.isHTMLTexture&&e.image){let t=this.renderer.domElement;if(`requestPaint`in t){if(t.hasAttribute(`layoutsubtree`)||t.setAttribute(`layoutsubtree`,`true`),e.image.parentNode!==t&&t.appendChild(e.image),this._htmlTextures.size===0){let e=this._htmlTextures;t.onpaint=t=>{let n=t&&t.changedElements;for(let t of e)(!n||n.includes(t.image))&&(t.needsUpdate=!0)}}this._htmlTextures.add(e)}}let{width:a,height:o,depth:s}=this.getSize(e);if(t.width=a,t.height=o,t.depth=s,t.needsMipmaps=this.needsMipmaps(e),t.levels=t.needsMipmaps?this.getMipLevels(e,a,o):1,e.isCubeTexture&&e.mipmaps.length>0&&t.levels++,r||e.isStorageTexture===!0||e.isExternalTexture===!0)i.createTexture(e,t),n.generation=e.version;else if(e.version>0){let r=e.image;if(r===void 0)j(`Renderer: Texture marked for update but image is undefined.`);else if(r.complete===!1)j(`Renderer: Texture marked for update but image is incomplete.`);else{if(e.images){let n=[];for(let t of e.images)n.push(t);t.images=n}else t.image=r;(n.isDefaultTexture===void 0||n.isDefaultTexture===!0)&&(i.createTexture(e,t),n.isDefaultTexture=!1,n.generation=e.version),e.source.dataReady===!0&&i.updateTexture(e,t);let a=e.isStorageTexture===!0&&e.mipmapsAutoUpdate===!1;t.needsMipmaps&&e.mipmaps.length===0&&!a&&i.generateMipmaps(e),e.onUpdate&&e.onUpdate(e)}}else i.createDefaultTexture(e),n.isDefaultTexture=!0,n.generation=e.version;n.initialized!==!0&&(n.initialized=!0,n.generation=e.version,n.bindGroups=new Set,this.info.createTexture(e),e.isVideoTexture&&Sr.enabled===!0&&Sr.getTransfer(e.colorSpace)!==`srgb`&&j(`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=ZR){let n=e.images?e.images[0]:e.image;return n?(n.image!==void 0&&(n=n.image),e.isHTMLTexture?(t.width=n.offsetWidth||1,t.height=n.offsetHeight||1,t.depth=1):typeof HTMLVideoElement<`u`&&n instanceof HTMLVideoElement?(t.width=n.videoWidth||1,t.height=n.videoHeight||1,t.depth=1):typeof VideoFrame<`u`&&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 r=e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture===!0?1: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){let t=this.get(e),n=t.textures,r=t.depthTexture;e.removeEventListener(`dispose`,t.onDispose);for(let e=0;e<n.length;e++)this._destroyTexture(n[e]);r&&this._destroyTexture(r),this.delete(e),this.backend.delete(e),this.info.memory.renderTargets--}}_destroyTexture(e){if(this.has(e)===!0){let t=this.get(e);e.removeEventListener(`dispose`,t.onDispose);let n=t.isDefaultTexture;if(this.backend.destroyTexture(e,n),t.bindGroups)for(let e of t.bindGroups){let t=this.backend.get(e);t.groups=void 0,t.versions=void 0}this._htmlTextures.delete(e),this.delete(e),this.info.destroyTexture(e)}}},$R=class extends I{constructor(e,t,n,r=1){super(e,t,n),this.a=r}set(e,t,n,r=1){return this.a=r,super.set(e,t,n)}copy(e){return e.a!==void 0&&(this.a=e.a),super.copy(e)}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}},ez=class extends ME{static get type(){return`ParameterNode`}constructor(e,t=null){super(e,t),this.isParameterNode=!0}getMemberType(e,t){let n=this.getNodeType(e),r=e.getStructTypeNode(n),i;return r===null?(M(`TSL: Member "${t}" not found in struct "${n}".`,new Pw),i=`float`):i=r.getMemberType(e,t),i}getHash(){return String(this.id)}generate(){return this.name}},tz=(e,t)=>new ez(e,t),nz=rE(class extends sT{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(e)?this.outputNode.getElementType(e):`void`}generateNodeType(e){return this.hasOutput(e)?this.outputNode.getNodeType(e):`void`}getMemberType(e,t){return this.hasOutput(e)?this.outputNode.getMemberType(e,t):`void`}addToStack(e,t=this.nodes.length){return e.isNode===!0?(this.nodes.splice(t,0,e),this):(M(`TSL: Invalid node added to stack.`,new Pw),this)}addToStackBefore(e){let t=this._currentNode?this.nodes.indexOf(this._currentNode):0;return this.addToStack(e,t)}If(e,t){let n=new $T(t);return this._currentCond=_k(e,n),this.addToStack(this._currentCond)}ElseIf(e,t){let n=_k(e,new $T(t));return this._currentCond.elseNode=n,this._currentCond=n,this}Else(e){return this._currentCond.elseNode=new $T(e),this}Switch(e){return this._expressionNode=B(e),this}Case(...e){let t=[];if(e.length>=2)for(let n=0;n<e.length-1;n++)t.push(this._expressionNode.equal(B(e[n])));else M(`TSL: Invalid parameter length. Case() requires at least two parameters.`,new Pw);let n=e[e.length-1],r=new $T(n),i=t[0];for(let e=1;e<t.length;e++)i=i.or(t[e]);let a=_k(i,r);return this._currentCond===null?(this._currentCond=a,this.addToStack(this._currentCond)):(this._currentCond.elseNode=a,this._currentCond=a,this)}Default(e){return this.Else(e),this}setup(e){let t=e.getNodeProperties(this),n=0;for(let r of this.getChildren())r.isVarNode&&r.isIntent(e)&&r.isAssign(e)!==!0||(t[`node`+ n++]=r);return t.outputNode||null}hasOutput(e){return this.outputNode&&this.outputNode.isNode&&this.outputNode.getNodeType(e)!==`void`}build(e,...t){let n=sE(),r=e.buildStage;oE(this),e.setActiveStack(this);let i=t=>{if(this._currentNode=t,!(t.isVarNode&&t.isIntent(e)&&t.isAssign(e)!==!0)){if(r===`setup`)t.build(e);else if(r===`analyze`)t.build(e,this);else if(r===`generate`){let n=e.getDataFromNode(t,`any`).stages,r=n&&n[e.shaderStage];if(t.isVarNode&&r&&r.length===1&&r[0]&&r[0].isStackNode)return;t.build(e,`void`)}}},a=[...this.nodes];for(let e of a)i(e);this._currentNode=null;let o=this.nodes.filter(e=>a.indexOf(e)===-1);for(let e of o)i(e);let s;return s=this.hasOutput(e)?this.outputNode.build(e,...t):super.build(e,...t),oE(n),e.removeActiveStack(this),s}}).setParameterLength(0,1);function rz(e){return Object.entries(e).map(([e,t])=>typeof t==`string`?{name:e,type:t,atomic:!1}:{name:e,type:t.type,atomic:t.atomic||!1})}var iz=class extends sT{static get type(){return`StructTypeNode`}constructor(e,t=null){super(`struct`),this.membersLayout=rz(e),this.name=t,this.isStructLayoutNode=!0}getLength(){let e=Float32Array.BYTES_PER_ELEMENT,t=1,n=0;for(let r of this.membersLayout){let i=r.type,a=Ww(i),o=Gw(i)/e;t=Math.max(t,o);let s=n%t%o;s!==0&&(n+=o-s),n+=a}return Math.ceil(n/t)*t}getMemberType(e,t){let n=this.membersLayout.find(e=>e.name===t);return n?n.type:`void`}generateNodeType(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)}},az=class extends sT{static get type(){return`StructNode`}constructor(e,t){super(`vec3`),this.structTypeNode=e,this.values=t,this.isStructNode=!0}generateNodeType(e){return this.structTypeNode.getNodeType(e)}getMemberType(e,t){return this.structTypeNode.getMemberType(e,t)}_getChildren(){let e=super._getChildren(),t=e.find(e=>e.childNode===this.structTypeNode);return e.splice(e.indexOf(t),1),e.push(t),e}generate(e){let 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}},oz=(e,t=null)=>{let n=new iz(e,t),r=(...t)=>{let r=null;if(t.length>0)if(t[0].isNode){r={};let n=Object.keys(e);for(let e=0;e<t.length;e++)r[n[e]]=t[e]}else r=t[0];return new az(n,r)};return r.layout=n,r.isStruct=!0,r},sz=class extends sT{static get type(){return`OutputStructNode`}constructor(...e){super(),this.members=e,this.isOutputStructNode=!0}generateNodeType(){return`OutputType`}generate(e){let t=e.getDataFromNode(this);if(t.membersLayout===void 0){let n=this.members,r=[];for(let t=0;t<n.length;t++){let i=`m`+t,a=n[t].getNodeType(e);r.push({name:i,type:a,index:t})}t.membersLayout=r,t.structType=e.getOutputStructTypeFromNode(this,t.membersLayout)}let n=e.getOutputStructName(),r=this.members,i=n===``?``:n+`.`;for(let t=0;t<r.length;t++){let n=r[t].build(e);e.addLineFlowCode(`${i}m${t} = ${n}`,this)}return n}},cz=rE(sz),lz=class{constructor(e=1){this.blending=e,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.premultiplyAlpha=!1}copy(e){return this.blending=e.blending,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.premultiplyAlpha=e.premultiplyAlpha,this}clone(){return new this.constructor().copy(this)}},uz=new lz(0),dz=new lz(6);function fz(e,t){for(let n=0;n<e.length;n++)if(e[n].name===t)return n;return-1}var pz=rE(class extends sz{static get type(){return`MRTNode`}constructor(e){super(),this.outputNodes=e,this.blendModes={output:dz},this.isMRTNode=!0}setBlendMode(e,t){return this.blendModes[e]=t,this}getBlendMode(e){return this.blendModes[e]||uz}has(e){return this.outputNodes[e]!==void 0}get(e){return this.outputNodes[e]}merge(e){let t={...this.outputNodes,...e.outputNodes},n={...this.blendModes,...e.blendModes},r=pz(t);return r.blendings=n,r}setup(e){let t=this.outputNodes,n=e.renderer.getRenderTarget(),r=[],i=n.textures;for(let e in t){let n=fz(i,e);r[n]=yE(t[e])}return this.members=r,super.setup(e)}}),mz=class extends uT{static get type(){return`BitcastNode`}constructor(e,t,n=null){super(),this.valueNode=e,this.conversionType=t,this.inputType=n,this.isBitcastNode=!0}generateNodeType(e){if(this.inputType!==null){let t=this.valueNode.getNodeType(e),n=e.getTypeLength(t);return e.getTypeFromLength(n,this.conversionType)}return this.conversionType}generate(e){let t=this.getNodeType(e),n=``;if(this.inputType!==null){let t=this.valueNode.getNodeType(e);n=e.getTypeLength(t)===1?this.inputType:e.changeComponentType(t,this.inputType)}else n=this.valueNode.getNodeType(e);return`${e.getBitcastMethod(t,n)}( ${this.valueNode.build(e,n)} )`}},hz=H(mz).setParameterLength(2),gz=e=>new mz(e,`int`,`float`),_z=e=>new mz(e,`uint`,`float`),vz=e=>new mz(e,`float`,`int`),yz=e=>new mz(e,`float`,`uint`),bz={},xz=class e extends Y{static get type(){return`BitcountNode`}constructor(e,t){super(e,t),this.isBitcountNode=!0}_resolveElementType(e,t,n){n===`int`?t.assign(hz(e,`uint`)):t.assign(e)}_returnDataNode(e){switch(e){case`uint`:return K;case`int`:return G;case`uvec2`:return mE;case`uvec3`:return _E;case`uvec4`:return xE;case`ivec2`:return pE;case`ivec3`:return gE;case`ivec4`:return bE}}_createTrailingZerosBaseLayout(e,t){let n=this._returnDataNode(t);return U(([e])=>{let r=K(0);return this._resolveElementType(e,r,t),n(_z(W(r.bitAnd(NO(r)))).shiftRight(23).sub(127))}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createLeadingZerosBaseLayout(e,t){let n=this._returnDataNode(t);return U(([e])=>{cE(e.equal(K(0)),()=>K(32));let r=K(0),i=K(0);return this._resolveElementType(e,r,t),cE(r.shiftRight(16).equal(0),()=>{i.addAssign(16),r.shiftLeftAssign(16)}),cE(r.shiftRight(24).equal(0),()=>{i.addAssign(8),r.shiftLeftAssign(8)}),cE(r.shiftRight(28).equal(0),()=>{i.addAssign(4),r.shiftLeftAssign(4)}),cE(r.shiftRight(30).equal(0),()=>{i.addAssign(2),r.shiftLeftAssign(2)}),cE(r.shiftRight(31).equal(0),()=>{i.addAssign(1)}),n(i)}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createOneBitsBaseLayout(e,t){let n=this._returnDataNode(t);return U(([e])=>{let r=K(0);return this._resolveElementType(e,r,t),r.assign(r.sub(r.shiftRight(K(1)).bitAnd(K(1431655765)))),r.assign(r.bitAnd(K(858993459)).add(r.shiftRight(K(2)).bitAnd(K(858993459)))),n(r.add(r.shiftRight(K(4))).bitAnd(K(252645135)).mul(K(16843009)).shiftRight(K(24)))}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createMainLayout(e,t,n,r){let i=this._returnDataNode(t);return U(([e])=>{if(n===1)return i(r(e));{let t=i(0),a=[`x`,`y`,`z`,`w`];for(let i=0;i<n;i++){let n=a[i];t[n].assign(r(e[n]))}return t}}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}setup(t){let{method:n,aNode:r}=this,{renderer:i}=t;if(i.backend.isWebGPUBackend)return super.setup(t);let a=this.getInputType(t),o=t.getElementType(a),s=t.getTypeLength(a),c=`${n}_base_${o}`,l=`${n}_${a}`,u=bz[c];if(u===void 0){switch(n){case e.COUNT_LEADING_ZEROS:u=this._createLeadingZerosBaseLayout(c,o);break;case e.COUNT_TRAILING_ZEROS:u=this._createTrailingZerosBaseLayout(c,o);break;case e.COUNT_ONE_BITS:u=this._createOneBitsBaseLayout(c,o);break}bz[c]=u}let d=bz[l];return d===void 0&&(d=this._createMainLayout(l,a,s,u),bz[l]=d),U(()=>d(r))()}};xz.COUNT_TRAILING_ZEROS=`countTrailingZeros`,xz.COUNT_LEADING_ZEROS=`countLeadingZeros`,xz.COUNT_ONE_BITS=`countOneBits`;var Sz=H(xz,xz.COUNT_TRAILING_ZEROS).setParameterLength(1),Cz=H(xz,xz.COUNT_LEADING_ZEROS).setParameterLength(1),wz=H(xz,xz.COUNT_ONE_BITS).setParameterLength(1),Tz=U(([e])=>{let t=e.toUint().mul(747796405).add(2891336453),n=t.shiftRight(t.shiftRight(28).add(4)).bitXor(t).mul(277803737);return n.shiftRight(22).bitXor(n).toFloat().mul(1/2**32)}),Ez=(e,t)=>QO(OD(4,e.mul(DD(1,e))),t),Dz=(e,t)=>e.lessThan(.5)?Ez(e.mul(2),t).div(2):DD(1,Ez(OD(DD(1,e),2),t).div(2)),Oz=(e,t,n)=>QO(kD(QO(e,t),ED(QO(e,t),QO(DD(1,e),n))),1/t),kz=(e,t)=>vO(eO.mul(t.mul(e).sub(1))).div(eO.mul(t.mul(e).sub(1))),Az=class extends uT{static get type(){return`PackFloatNode`}constructor(e,t){super(),this.vectorNode=t,this.encoding=e,this.isPackFloatNode=!0}generateNodeType(){return`uint`}generate(e){let t=this.vectorNode.getNodeType(e);return`${e.getFloatPackingMethod(this.encoding)}(${this.vectorNode.build(e,t)})`}},jz=H(Az,`snorm`).setParameterLength(1),Mz=H(Az,`unorm`).setParameterLength(1),Nz=H(Az,`float16`).setParameterLength(1),Pz=class extends uT{static get type(){return`UnpackFloatNode`}constructor(e,t){super(),this.uintNode=t,this.encoding=e,this.isUnpackFloatNode=!0}generateNodeType(){return`vec2`}generate(e){let t=this.uintNode.getNodeType(e);return`${e.getFloatUnpackingMethod(this.encoding)}(${this.uintNode.build(e,t)})`}},Fz=H(Pz,`snorm`).setParameterLength(1),Iz=H(Pz,`unorm`).setParameterLength(1),Lz=H(Pz,`float16`).setParameterLength(1),Rz=U(([e])=>e.fract().sub(.5).abs()).setLayout({name:`tri`,type:`float`,inputs:[{name:`x`,type:`float`}]}),zz=U(([e])=>J(Rz(e.z.add(Rz(e.y.mul(1)))),Rz(e.z.add(Rz(e.x.mul(1)))),Rz(e.y.add(Rz(e.x.mul(1)))))).setLayout({name:`tri3`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),Bz=U(([e,t,n])=>{let r=J(e).toVar(),i=W(1.4).toVar(),a=W(0).toVar(),o=J(r).toVar();return SP({start:W(0),end:W(3),type:`float`,condition:`<=`},()=>{let e=J(zz(o.mul(2))).toVar();r.addAssign(e.add(n.mul(W(.1).mul(t)))),o.mulAssign(1.8),i.mulAssign(1.5),r.mulAssign(1.2);let s=W(Rz(r.z.add(Rz(r.x.add(Rz(r.y)))))).toVar();a.addAssign(s.div(i)),o.addAssign(.14)}),a}).setLayout({name:`triNoise3D`,type:`float`,inputs:[{name:`position`,type:`vec3`},{name:`speed`,type:`float`},{name:`time`,type:`float`}]}),Vz=rE(class extends sT{static get type(){return`FunctionOverloadingNode`}constructor(e=[],...t){super(),this.functionNodes=e,this.parametersNodes=t,this._candidateFn=null,this.global=!0}generateNodeType(e){return this.getCandidateFn(e).shaderNode.layout.type}getCandidateFn(e){let t=this.parametersNodes,n=this._candidateFn;if(n===null){let r=null,i=-1;for(let n of this.functionNodes){let a=n.shaderNode.layout;if(a===null)throw Error(`FunctionOverloadingNode: FunctionNode must be a layout.`);let o=a.inputs;if(t.length===o.length){let a=0;for(let n=0;n<t.length;n++){let r=t[n],i=o[n];r.getNodeType(e)===i.type&&a++}a>i&&(r=n,i=a)}}this._candidateFn=n=r}return n}setup(e){return this.getCandidateFn(e)(...this.parametersNodes)}}),Hz=e=>(...t)=>Vz(e,...t),Uz=vD(0).setGroup(hD).onRenderUpdate(e=>e.time),Wz=vD(0).setGroup(hD).onRenderUpdate(e=>e.deltaTime),Gz=vD(0,`uint`).setGroup(hD).onRenderUpdate(e=>e.frameId),Kz=(e=Uz)=>e.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5),qz=(e=Uz)=>e.fract().round(),Jz=(e=Uz)=>e.add(.5).fract().mul(2).sub(1).abs(),Yz=(e=Uz)=>e.fract();function Xz(e,t=null){return yk(t,{getUV:typeof e==`function`?e:()=>e})}var Zz=U(([e,t,n=q(.5)])=>oR(e.sub(n),t).add(n)),Qz=U(([e,t,n=q(.5)])=>{let r=e.sub(n),i=r.dot(r),a=i.mul(i).mul(t);return e.add(r.mul(a))}),$z=U(({position:e=null,horizontal:t=!0,vertical:n=!1})=>{let r;e===null?r=Gj:(r=Gj.toVar(),r[3][0]=e.x,r[3][1]=e.y,r[3][2]=e.z);let i=Aj.mul(r);return ZT(t)&&(i[0][0]=Gj[0].length(),i[0][1]=0,i[0][2]=0),ZT(n)&&(i[1][0]=0,i[1][1]=Gj[1].length(),i[1][2]=0),i[2][0]=0,i[2][1]=0,i[2][2]=1,Oj.mul(i).mul(iM)}),eB=U(([e=null])=>{let t=$P();return $P(VP(e)).sub(t).lessThan(0).select(rj,e)}),tB=U(([e,t=PA(),n=W(0)])=>{let r=e.x,i=e.y,a=n.mod(r.mul(i)).floor(),o=a.mod(r),s=i.sub(a.add(1).div(r).ceil()),c=e.reciprocal(),l=q(o,s);return t.add(l).mul(c)}),nB=U(([e,t=null,n=null,r=W(1),i=iM,a=mM])=>{let o=a.abs().normalize();o=o.div(o.dot(J(1)));let s=i.yz.mul(r),c=i.zx.mul(r),l=i.xy.mul(r),u=e.value,d=t===null?u:t.value,f=n===null?u:n.value;return ED(VA(u,s).mul(o.x),VA(d,c).mul(o.y),VA(f,l).mul(o.z))}),rB=(...e)=>nB(...e),iB=new Xo,aB=new P,oB=new P,sB=new P,cB=new F,lB=new P(0,0,-1),uB=new Nr,dB=new P,fB=new P,pB=new Nr,mB=new N,hB=new Pr,gB=rj.flipX();hB.depthTexture=new $s(1,1);var _B=!1,vB=class e extends zA{static get type(){return`ReflectorNode`}constructor(e={}){super(e.defaultTexture||hB.texture,gB),this._reflectorBaseNode=e.reflector||new yB(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 Error(`THREE.ReflectorNode: Depth node can only be requested when the reflector is created with { depth: true }. `);this._depthNode=new e({defaultTexture:hB.depthTexture,reflector:this._reflectorBaseNode})}return this._depthNode}setup(e){return e.object.isQuadMesh||this._reflectorBaseNode.build(e),super.setup(e)}clone(){let 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()}},yB=class extends sT{static get type(){return`ReflectorBaseNode`}constructor(e,t={}){super();let{target:n=new fi,resolutionScale:r=1,generateMipmaps:i=!1,bounces:a=!0,depth:o=!1,samples:s=0}=t;this.textureNode=e,this.target=n,this.resolutionScale=r,t.resolution!==void 0&&(In(`ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".`),this.resolutionScale=t.resolution),this.generateMipmaps=i,this.bounces=a,this.depth=o,this.samples=s,this.updateBeforeType=a?Qw.RENDER:Qw.FRAME,this.virtualCameras=new WeakMap,this.renderTargets=new Map,this.forceUpdate=!1,this.hasOutput=!1}_updateResolution(e,t){let n=this.resolutionScale;t.getDrawingBufferSize(mB),e.setSize(Math.round(mB.width*n),Math.round(mB.height*n))}setup(e){return this._updateResolution(hB,e.renderer),super.setup(e)}dispose(){super.dispose();for(let 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 Pr(0,0,{type:Fe,samples:this.samples}),this.generateMipmaps===!0&&(t.texture.minFilter=Oe,t.texture.generateMipmaps=!0),this.depth===!0&&(t.depthTexture=new $s),this.renderTargets.set(e,t)),t}updateBefore(e){if(this.bounces===!1&&_B)return!1;_B=!0;let{scene:t,camera:n,renderer:r,material:i}=e,{target:a}=this,o=this.getVirtualCamera(n),s=this.getRenderTarget(o);r.getDrawingBufferSize(mB),this._updateResolution(s,r),oB.setFromMatrixPosition(a.matrixWorld),sB.setFromMatrixPosition(n.matrixWorld),cB.extractRotation(a.matrixWorld),aB.set(0,0,1),aB.applyMatrix4(cB),dB.subVectors(oB,sB);let c=dB.dot(aB)>0,l=!1;if(c===!0&&this.forceUpdate===!1){if(this.hasOutput===!1){_B=!1;return}l=!0}dB.reflect(aB).negate(),dB.add(oB),cB.extractRotation(n.matrixWorld),lB.set(0,0,-1),lB.applyMatrix4(cB),lB.add(sB),fB.subVectors(oB,lB),fB.reflect(aB).negate(),fB.add(oB),o.coordinateSystem=n.coordinateSystem,o.position.copy(dB),o.up.set(0,1,0),o.up.applyMatrix4(cB),o.up.reflect(aB),o.lookAt(fB),o.near=n.near,o.far=n.far,o.updateMatrixWorld(),o.projectionMatrix.copy(n.projectionMatrix),iB.setFromNormalAndCoplanarPoint(aB,oB),iB.applyMatrix4(o.matrixWorldInverse),uB.set(iB.normal.x,iB.normal.y,iB.normal.z,iB.constant);let u=o.projectionMatrix;pB.x=(Math.sign(uB.x)+u.elements[8])/u.elements[0],pB.y=(Math.sign(uB.y)+u.elements[9])/u.elements[5],pB.z=-1,pB.w=(1+u.elements[10])/u.elements[14],uB.multiplyScalar(1/uB.dot(pB)),u.elements[2]=uB.x,u.elements[6]=uB.y,u.elements[10]=r.coordinateSystem===2001?uB.z-0:uB.z+1-0,u.elements[14]=uB.w,this.textureNode.value=s.texture,this.depth===!0&&(this.textureNode.getDepthNode().value=s.depthTexture),i.visible=!1;let d=r.getRenderTarget(),f=r.getMRT(),p=r.autoClear;r.setMRT(null),r.setRenderTarget(s),r.autoClear=!0;let m=t.name;t.name=(t.name||`Scene`)+` [ Reflector ]`,l?(r.clear(),this.hasOutput=!1):(r.render(t,o),this.hasOutput=!0),t.name=m,r.setMRT(f),r.setRenderTarget(d),r.autoClear=p,i.visible=!0,_B=!1,this.forceUpdate=!1}get resolution(){return In(`ReflectorNode: The "resolution" property has been renamed to "resolutionScale".`),this.resolutionScale}set resolution(e){In(`ReflectorNode: The "resolution" property has been renamed to "resolutionScale".`),this.resolutionScale=e}},bB=e=>new vB(e),xB=new hd(-1,1,1,-1,0,1),SB=new class extends Oa{constructor(e=!1){super();let t=e===!1?[0,-1,0,1,2,1]:[0,2,0,0,2,0];this.setAttribute(`position`,new ga([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new ga(t,2))}},CB=class extends bo{constructor(e=null){super(SB,e),this.camera=xB,this.isQuadMesh=!0}async renderAsync(e){In(`QuadMesh: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.`),await e.init(),e.render(this,xB)}render(e){e.render(this,xB)}},wB=new N,TB=class extends zA{static get type(){return`RTTNode`}constructor(e,t=null,n=null,r={type:Fe}){let i=new Pr(t,n,r);super(i.texture,PA()),this.isRTTNode=!0,this.node=e,this.width=t,this.height=n,this.pixelRatio=1,this.renderTarget=i,this.textureNeedsUpdate=!0,this.autoUpdate=!0,this._rttNode=null,this._quadMesh=new CB(new vF),this.updateBeforeType=Qw.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;let 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){let t=e.getPixelRatio(),n=e.getSize(wB),r=Math.floor(n.width*t),i=Math.floor(n.height*t);(r!==this.renderTarget.width||i!==this.renderTarget.height)&&(this.renderTarget.setSize(r,i),this.textureNeedsUpdate=!0)}let t=`RTT`;this.node.name&&(t=this.node.name+` [ `+t+` ]`),this._quadMesh.material.fragmentNode=this._rttNode,this._quadMesh.name=t;let n=e.getRenderTarget();e.setRenderTarget(this.renderTarget),this._quadMesh.render(e),e.setRenderTarget(n)}clone(){let e=new zA(this.value,this.uvNode,this.levelNode);return e.sampler=this.sampler,e.referenceNode=this,e}},EB=(e,...t)=>new TB(B(e),...t),DB=(e,...t)=>e.isSampleNode||e.isTextureNode?e:e.isPassNode?e.getTextureNode():EB(e,...t),OB=U(([e,t,n],r)=>{let i;r.renderer.coordinateSystem===2001?(e=q(e.x,e.y.oneMinus()).mul(2).sub(1),i=yE(J(e,t),1)):i=yE(J(e.x,e.y.oneMinus(),t).mul(2).sub(1),1);let a=yE(n.mul(i));return a.xyz.div(a.w)}),kB=U(([e,t])=>{let n=t.mul(yE(e,1)),r=n.xy.div(n.w).mul(.5).add(.5).toVar();return q(r.x,r.y.oneMinus())}),AB=U(([e,t,n])=>{let r=FA(UA(t)),i=pE(e.mul(r)).toVar(),a=UA(t,i).toVar(),o=UA(t,i.sub(pE(2,0))).toVar(),s=UA(t,i.sub(pE(1,0))).toVar(),c=UA(t,i.add(pE(1,0))).toVar(),l=UA(t,i.add(pE(2,0))).toVar(),u=UA(t,i.add(pE(0,2))).toVar(),d=UA(t,i.add(pE(0,1))).toVar(),f=UA(t,i.sub(pE(0,1))).toVar(),p=UA(t,i.sub(pE(0,2))).toVar(),m=AO(DD(W(2).mul(s).sub(o),a)).toVar(),h=AO(DD(W(2).mul(c).sub(l),a)).toVar(),g=AO(DD(W(2).mul(d).sub(u),a)).toVar(),_=AO(DD(W(2).mul(f).sub(p),a)).toVar(),v=OB(e,a,n).toVar();return gO(ZO(m.lessThan(h).select(v.sub(OB(e.sub(q(W(1).div(r.x),0)),s,n)),v.negate().add(OB(e.add(q(W(1).div(r.x),0)),c,n))),g.lessThan(_).select(v.sub(OB(e.add(q(0,W(1).div(r.y))),d,n)),v.negate().add(OB(e.sub(q(0,W(1).div(r.y))),f,n)))))}),jB=U(([e])=>_O(W(52.9829189).mul(_O(XO(e,q(.06711056,.00583715)))))).setLayout({name:`interleavedGradientNoise`,type:`float`,inputs:[{name:`position`,type:`vec2`}]}),MB=U(([e,t,n])=>{let r=W(2.399963229728653),i=fO(W(e).add(.5).div(W(t))),a=W(e).mul(r).add(n);return q(bO(a),vO(a)).mul(i)}).setLayout({name:`vogelDiskSample`,type:`vec2`,inputs:[{name:`sampleIndex`,type:`int`},{name:`samplesCount`,type:`int`},{name:`phi`,type:`float`}]}),NB=class extends sT{static get type(){return`SampleNode`}constructor(e,t=null){super(),this.callback=e,this.uvNode=t,this.isSampleNode=!0}setup(){return this.sample(PA())}sample(e){return this.callback(e)}},PB=(e,t=null)=>new NB(e,B(t)),FB=class e extends sT{static get type(){return`EventNode`}constructor(t,n){super(`void`),this.eventType=t,this.callback=n,t===e.OBJECT?this.updateType=Qw.OBJECT:t===e.MATERIAL?this.updateType=Qw.RENDER:t===e.FRAME?this.updateType=Qw.FRAME:t===e.BEFORE_OBJECT?this.updateBeforeType=Qw.OBJECT:t===e.BEFORE_MATERIAL?this.updateBeforeType=Qw.RENDER:t===e.BEFORE_FRAME&&(this.updateBeforeType=Qw.FRAME)}update(e){this.callback(e)}updateBefore(e){this.callback(e)}};FB.OBJECT=`object`,FB.MATERIAL=`material`,FB.FRAME=`frame`,FB.BEFORE_OBJECT=`beforeObject`,FB.BEFORE_MATERIAL=`beforeMaterial`,FB.BEFORE_FRAME=`beforeFrame`;var IB=(e,t)=>new FB(e,t).toStack(),LB=e=>IB(FB.OBJECT,e),RB=e=>IB(FB.MATERIAL,e),zB=e=>IB(FB.FRAME,e),BB=e=>IB(FB.BEFORE_OBJECT,e),VB=e=>IB(FB.BEFORE_MATERIAL,e),HB=e=>IB(FB.BEFORE_FRAME,e),UB=class extends Ro{constructor(e,t,n=Float32Array){let r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageInstancedBufferAttribute=!0}},WB=class extends sa{constructor(e,t,n=Float32Array){let r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageBufferAttribute=!0}},GB=(e,t=`float`)=>{let n,r;return t.isStruct===!0?(n=t.layout.getLength(),r=Hw(`float`)):(n=Uw(t),r=Hw(t)),fP(new WB(e,n,r),t,e)},KB=(e,t=`float`)=>{let n,r;t.isStruct===!0?(n=t.layout.getLength(),r=Hw(`float`)):(n=Uw(t),r=Hw(t));let i=new UB(e,n,r);return fP(i,t,i.count)},qB=V(class extends sT{static get type(){return`PointUVNode`}constructor(){super(`vec2`),this.isPointUVNode=!0}generate(){return`vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )`}}),JB=new F,YB=vD(0).setGroup(hD).onRenderUpdate(({scene:e})=>e.backgroundBlurriness),XB=vD(1).setGroup(hD).onRenderUpdate(({scene:e})=>e.backgroundIntensity),ZB=vD(new F).setGroup(hD).onRenderUpdate(({scene:e})=>{let t=e.background;return t!==null&&t.isTexture&&t.mapping!==300?JB.makeRotationFromEuler(e.backgroundRotation).transpose():JB.identity(),JB}),QB=rE(class extends zA{static get type(){return`StorageTextureNode`}constructor(e,t,n=null){super(e,t),this.storeNode=n,this.mipLevel=0,this.isStorageTextureNode=!0,this.access=eT.WRITE_ONLY}getInputType(){return`storageTexture`}setup(e){super.setup(e);let 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){return this.storeNode===null?super.generate(e,t):(this.generateStore(e),``)}generateSnippet(e,t,n,r,i,a,o,s,c){let l=this.value;return e.generateStorageTextureLoad(l,t,n,r,a,c)}toReadWrite(){return this.setAccess(eT.READ_WRITE)}toReadOnly(){return this.setAccess(eT.READ_ONLY)}toWriteOnly(){return this.setAccess(eT.WRITE_ONLY)}generateStore(e){let{uvNode:t,storeNode:n,depthNode:r}=e.getNodeProperties(this),i=super.generate(e,`property`),a=t.build(e,this.value.is3DTexture===!0?`uvec3`:`uvec2`),o=n.build(e,`vec4`),s=r?r.build(e,`int`):null,c=e.generateTextureStore(this.value,i,a,s,o);e.addLineFlowCode(c,this)}clone(){let e=super.clone();return e.storeNode=this.storeNode,e.mipLevel=this.mipLevel,e.access=this.access,e}}).setParameterLength(1,3),$B=(e,t,n)=>{let r;return e.isStorageTextureNode===!0?(r=e.clone(),r.uvNode=t,r.storeNode=n):r=QB(e,t,n),n!==null&&r.toStack(),r},eV=U(({texture:e,uv:t})=>{let n=1e-4,r=J().toVar();return cE(t.x.lessThan(n),()=>{r.assign(J(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(J(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(J(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(J(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(J(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(J(0,0,-1))}).Else(()=>{let n=.01,i=e.sample(t.add(J(-.01,0,0))).r.sub(e.sample(t.add(J(n,0,0))).r),a=e.sample(t.add(J(0,-.01,0))).r.sub(e.sample(t.add(J(0,n,0))).r),o=e.sample(t.add(J(0,0,-.01))).r.sub(e.sample(t.add(J(0,0,n))).r);r.assign(J(i,a,o))}),r.normalize()}),tV=rE(class extends zA{static get type(){return`Texture3DNode`}constructor(e,t=null,n=null){super(e,t,n),this.isTexture3DNode=!0}getInputType(){return`texture3D`}getDefaultUV(){return J(.5,.5,.5)}setUpdateMatrix(){}generateUV(e,t){return t.build(e,this.sampler===!0?`vec3`:`ivec3`)}generateOffset(e,t){return t.build(e,`ivec3`)}normal(e){return eV({texture:this,uv:e})}}).setParameterLength(1,3),nV=(...e)=>tV(...e).setSampler(!1),rV=(e,t,n)=>tV(e,t).level(n),iV=class extends zM{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?e.object.userData:this.userData,this.reference}},aV=(e,t,n)=>new iV(e,t,n),oV=new WeakMap,sV=class extends uT{static get type(){return`VelocityNode`}constructor(){super(`vec2`),this.projectionMatrix=null,this.updateType=Qw.OBJECT,this.updateAfterType=Qw.OBJECT,this.previousModelWorldMatrix=vD(new F),this.previousProjectionMatrix=vD(new F).setGroup(hD),this.previousCameraViewMatrix=vD(new F)}setProjectionMatrix(e){this.projectionMatrix=e}update({frameId:e,camera:t,object:n}){let r=lV(n);this.previousModelWorldMatrix.value.copy(r);let i=cV(t);i.frameId!==e&&(i.frameId=e,i.previousProjectionMatrix===void 0?(i.previousProjectionMatrix=new F,i.previousCameraViewMatrix=new F,i.currentProjectionMatrix=new F,i.currentCameraViewMatrix=new F,i.previousProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),i.previousCameraViewMatrix.copy(t.matrixWorldInverse)):(i.previousProjectionMatrix.copy(i.currentProjectionMatrix),i.previousCameraViewMatrix.copy(i.currentCameraViewMatrix)),i.currentProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),i.currentCameraViewMatrix.copy(t.matrixWorldInverse),this.previousProjectionMatrix.value.copy(i.previousProjectionMatrix),this.previousCameraViewMatrix.value.copy(i.previousCameraViewMatrix))}updateAfter({object:e}){lV(e).copy(e.matrixWorld)}setup(){let e=this.projectionMatrix===null?Oj:vD(this.projectionMatrix),t=this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix),n=e.mul(Qj).mul(iM),r=this.previousProjectionMatrix.mul(t).mul(aM);return DD(n.xy.div(n.w),r.xy.div(r.w))}};function cV(e){let t=oV.get(e);return t===void 0&&(t={},oV.set(e,t)),t}function lV(e,t=0){let n=cV(e),r=n[t];return r===void 0&&(n[t]=r=new F,n[t].copy(e.matrixWorld)),r}var uV=V(sV),dV=U(([e])=>hV(e.rgb)),fV=U(([e,t=W(1)])=>t.mix(hV(e.rgb),e.rgb)),pV=U(([e,t=W(1)])=>{let n=ED(e.r,e.g,e.b).div(3),r=e.r.max(e.g.max(e.b)),i=r.sub(n).mul(t).mul(-3);return ak(e.rgb,r,i)}),mV=U(([e,t=W(1)])=>{let n=J(.57735,.57735,.57735),r=t.cos();return J(e.rgb.mul(r).add(n.cross(e.rgb).mul(t.sin()).add(n.mul(XO(n,e.rgb).mul(r.oneMinus())))))}),hV=(e,t=J(Sr.getLuminanceCoefficients(new P)))=>XO(e,t),gV=U(([e,t=J(1),n=J(0),r=J(1),i=W(1),a=J(Sr.getLuminanceCoefficients(new P,Zt))])=>{let o=e.rgb.dot(J(a)),s=GO(e.rgb.mul(t).add(n),0).toVar(),c=s.pow(r).toVar();return cE(s.r.greaterThan(0),()=>{s.r.assign(c.r)}),cE(s.g.greaterThan(0),()=>{s.g.assign(c.g)}),cE(s.b.greaterThan(0),()=>{s.b.assign(c.b)}),s.assign(o.add(s.sub(o).mul(i))),yE(s.rgb,e.a)}),_V=U(([e,t])=>e.mul(t).floor().div(t)),vV=null,yV=rE(class extends FP{static get type(){return`ViewportSharedTextureNode`}constructor(e=rj,t=null){vV===null&&(vV=new Ks),super(e,t,vV)}getTextureForReference(){return vV}updateReference(){return this}}).setParameterLength(0,2),bV=new N,xV=class extends zA{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.isPassTextureNode=!0,this.setUpdateMatrix(!1)}setup(e){let t=e.getNodeProperties(this);return t.passNode=this.passNode,super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},SV=class extends xV{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n,this.isPassMultipleTextureNode=!0}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){let 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}},CV=class e extends uT{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;let i=new $s;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new Pr(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:Fe,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.overrideMaterial=null,this.transparent=!0,this.opaque=!0,this.contextNode=null,this._contextNodeCache=null,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=vD(0),this._cameraFar=vD(0),this._mrt=null,this._layers=null,this._resolutionScale=1,this._viewport=null,this._scissor=null,this.isPassNode=!0,this.updateBeforeType=Qw.FRAME,this.global=!0}setResolutionScale(e){return this._resolutionScale=e,this}getResolutionScale(){return this._resolutionScale}setResolution(e){return j(`PassNode: .setResolution() is deprecated. Use .setResolutionScale() instead.`),this.setResolutionScale(e)}getResolution(){return j(`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){let t=this._previousTextures[e];if(t!==void 0){let 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 SV(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 SV(this,e,!0),t.updateTexture(),this._previousTextureNodes[e]=t),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=JP(this.getTextureNode(e),n,r)}return t}getLinearDepthNode(e=`depth`){let t=this._linearDepthNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar,i=this.getViewZNode(e);this._linearDepthNodes[e]=t=UP(i,n,r)}return t}async compileAsync(e){let t=e.getRenderTarget(),n=e.getMRT();e.setRenderTarget(this.renderTarget),e.setMRT(this._mrt),await e.compileAsync(this.scene,this.camera),e.setRenderTarget(t),e.setMRT(n)}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,this.renderTarget.texture.type=t.getOutputBufferType(),t.reversedDepthBuffer===!0&&(this.renderTarget.depthTexture.type=Pe),this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n}=this,r,i,a=t.getOutputRenderTarget();a&&a.isXRRenderTarget===!0?(i=1,r=t.xr.getCamera(),t.xr.updateCamera(r),bV.set(a.width,a.height)):(r=this.camera,i=t.getPixelRatio(),t.getSize(bV)),this._pixelRatio=i,this.setSize(bV.width,bV.height);let o=t.getRenderTarget(),s=t.getMRT(),c=t.autoClear,l=t.transparent,u=t.opaque,d=r.layers.mask,f=t.contextNode,p=n.overrideMaterial;this._cameraNear.value=r.near,this._cameraFar.value=r.far,this._layers!==null&&(r.layers.mask=this._layers.mask);for(let e in this._previousTextures)this.toggleTexture(e);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:yk({...t.contextNode.getFlowContextData(),...this.contextNode.getFlowContextData()})}),t.contextNode=this._contextNodeCache.context);let m=n.name;n.name=this.name?this.name:n.name,t.render(n,r),n.name=m,n.overrideMaterial=p,t.setRenderTarget(o),t.setMRT(s),t.autoClear=c,t.transparent=l,t.opaque=u,t.contextNode=f,r.layers.mask=d}setSize(e,t){this._width=e,this._height=t;let 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.scissorTest=!1:(this.renderTarget.scissor.copy(this._scissor).multiplyScalar(this._pixelRatio*this._resolutionScale).floor(),this.renderTarget.scissorTest=!0),this._viewport!==null&&this.renderTarget.viewport.copy(this._viewport).multiplyScalar(this._pixelRatio*this._resolutionScale).floor()}setScissor(e,t,n,r){e===null?this._scissor=null:(this._scissor===null&&(this._scissor=new Nr),e.isVector4?this._scissor.copy(e):this._scissor.set(e,t,n,r))}setViewport(e,t,n,r){e===null?this._viewport=null:(this._viewport===null&&(this._viewport=new Nr),e.isVector4?this._viewport.copy(e):this._viewport.set(e,t,n,r))}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};CV.COLOR=`color`,CV.DEPTH=`depth`;var wV=(e,t,n)=>new CV(CV.COLOR,e,t,n),TV=(e,t)=>new xV(e,t),EV=(e,t,n)=>new CV(CV.DEPTH,e,t,n),DV=class extends CV{static get type(){return`ToonOutlinePassNode`}constructor(e,t,n,r,i){super(CV.COLOR,e,t),this.colorNode=n,this.thicknessNode=r,this.alphaNode=i,this._materialCache=new WeakMap,this.name=`Outline Pass`}updateBefore(e){let{renderer:t}=e,n=t.getRenderObjectFunction();t.setRenderObjectFunction((e,n,r,i,a,o,s,c)=>{if((a.isMeshToonMaterial||a.isMeshToonNodeMaterial)&&a.wireframe===!1){let l=this._getOutlineMaterial(a);t.renderObject(e,n,r,i,l,o,s,c)}t.renderObject(e,n,r,i,a,o,s,c)}),super.updateBefore(e),t.setRenderObjectFunction(n)}_createMaterial(){let e=new vF;e.isMeshToonOutlineMaterial=!0,e.name=`Toon_Outline`,e.side=1;let t=mM.negate(),n=Oj.mul(Qj),r=W(1),i=n.mul(yE(iM,1)),a=n.mul(yE(iM.add(t),1)),o=gO(i.sub(a));return e.vertexNode=i.add(o.mul(this.thicknessNode).mul(i.w).mul(r)),e.colorNode=yE(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}},OV=(e,t,n=new I(0,0,0),r=.003,i=1)=>new DV(e,t,B(n),B(r),B(i)),kV=U(([e,t])=>e.mul(t).clamp()).setLayout({name:`linearToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),AV=U(([e,t])=>(e=e.mul(t),e.div(e.add(1)).clamp())).setLayout({name:`reinhardToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),jV=U(([e,t])=>{e=e.mul(t),e=e.sub(.004).max(0);let n=e.mul(e.mul(6.2).add(.5)),r=e.mul(e.mul(6.2).add(1.7)).add(.06);return n.div(r).pow(2.2)}).setLayout({name:`cineonToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),MV=U(([e])=>{let t=e.mul(e.add(.0245786)).sub(90537e-9),n=e.mul(e.add(.432951).mul(.983729)).add(.238081);return t.div(n)}),NV=U(([e,t])=>{let n=wE(.59719,.35458,.04823,.076,.90834,.01566,.0284,.13383,.83777),r=wE(1.60475,-.53108,-.07367,-.10208,1.10813,-.00605,-.00327,-.07276,1.07602);return e=e.mul(t).div(.6),e=n.mul(e),e=MV(e),e=r.mul(e),e.clamp()}).setLayout({name:`acesFilmicToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),PV=wE(J(1.6605,-.1246,-.0182),J(-.5876,1.1329,-.1006),J(-.0728,-.0083,1.1187)),FV=wE(J(.6274,.0691,.0164),J(.3293,.9195,.088),J(.0433,.0113,.8956)),IV=U(([e])=>{let t=J(e).toVar(),n=J(t.mul(t)).toVar(),r=J(n.mul(n)).toVar();return W(15.5).mul(r.mul(n)).sub(OD(40.14,r.mul(t))).add(OD(31.96,r).sub(OD(6.868,n.mul(t))).add(OD(.4298,n).add(OD(.1191,t).sub(.00232))))}),LV=U(([e,t])=>{let n=J(e).toVar(),r=wE(J(.856627153315983,.137318972929847,.11189821299995),J(.0951212405381588,.761241990602591,.0767994186031903),J(.0482516061458583,.101439036467562,.811302368396859)),i=wE(J(1.1271005818144368,-.1413297634984383,-.14132976349843826),J(-.11060664309660323,1.157823702216272,-.11060664309660294),J(-.016493938717834573,-.016493938717834257,1.2519364065950405)),a=W(-12.47393),o=W(4.026069);return n.mulAssign(t),n.assign(FV.mul(n)),n.assign(r.mul(n)),n.assign(GO(n,1e-10)),n.assign(dO(n)),n.assign(n.sub(a).div(o.sub(a))),n.assign(ok(n,0,1)),n.assign(IV(n)),n.assign(i.mul(n)),n.assign(QO(GO(J(0),n),J(2.2))),n.assign(PV.mul(n)),n.assign(ok(n,0,1)),n}).setLayout({name:`agxToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),RV=U(([e,t])=>{let n=W(.76),r=W(.15);e=e.mul(t);let i=WO(e.r,WO(e.g,e.b)),a=_k(i.lessThan(.08),i.sub(OD(6.25,i.mul(i))),.04);e.subAssign(a);let o=GO(e.r,GO(e.g,e.b));cE(o.lessThan(n),()=>e);let s=DD(1,n),c=DD(1,s.mul(s).div(o.add(s.sub(n))));e.mulAssign(c.div(o));let l=DD(1,kD(1,r.mul(o.sub(c)).add(1)));return ak(e,J(c),l)}).setLayout({name:`neutralToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),zV=class extends sT{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){let t=this.getIncludes(e);for(let n of t)n.build(e);let 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}},BV=rE(zV).setParameterLength(1,3),VV=(e,t)=>BV(e,t,`js`),HV=(e,t)=>BV(e,t,`wgsl`),UV=(e,t)=>BV(e,t,`glsl`),WV=class extends zV{static get type(){return`FunctionNode`}constructor(e=``,t=[],n=``){super(e,t,n)}generateNodeType(e){return this.getNodeFunction(e).type}getMemberType(e,t){let n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}getInputs(e){return this.getNodeFunction(e).inputs}getNodeFunction(e){let t=e.getDataFromNode(this),n=t.nodeFunction;return n===void 0&&(n=e.parser.parseFunction(this.code),t.nodeFunction=n),n}generate(e,t){super.generate(e);let n=this.getNodeFunction(e),r=n.name,i=n.type,a=e.getCodeFromNode(this,i);r!==``&&(a.name=r);let o=e.getPropertyName(a);return a.code=this.getNodeFunction(e).getCode(o)+`
4133
- `,t===`property`?o:e.format(`${o}()`,i,t)}},GV=(e,t=[],n=``)=>{for(let e=0;e<t.length;e++){let n=t[e];typeof n==`function`&&(t[e]=n.functionNode)}let r=new WV(e,t,n),i=(...e)=>r.call(...e);return i.functionNode=r,i},KV=(e,t)=>GV(e,t,`glsl`),qV=(e,t)=>GV(e,t,`wgsl`);function JV(e){let t,n=e.context.getViewZ;return n!==void 0&&(t=n(this)),(t||cM.z).negate()}var YV=U(([e,t],n)=>lk(e,t,JV(n))),XV=U(([e],t)=>{let n=JV(t);return e.mul(e,n,n).negate().exp().oneMinus()}),ZV=U(([e,t],n)=>{let r=JV(n),i=t.sub(oM.y).max(0).toConst().mul(r).toConst();return e.mul(e,i,i).negate().exp().oneMinus()}),QV=U(([e,t])=>yE(t.toFloat().mix(tD.rgb,e.toVec3()),tD.a)),$V=null,eH=null,tH=rE(class extends sT{static get type(){return`RangeNode`}constructor(e=W(),t=W()){super(),this.minNode=e,this.maxNode=t}getVectorLength(e){let t=this.getConstNode(this.minNode),n=this.getConstNode(this.maxNode),r=e.getTypeLength(Kw(t.value)),i=e.getTypeLength(Kw(n.value));return r>i?r:i}generateNodeType(e){return e.object.count>1?e.getTypeFromLength(this.getVectorLength(e)):`float`}getConstNode(e){let t=null;if(e.traverse(e=>{e.isConstNode===!0&&(t=e)}),t===null)throw new LA(`THREE.TSL: No "ConstNode" found in node graph.`,this.stackTrace);return t}setup(e){let t=e.object,n=null;if(t.count>1){let r=this.getConstNode(this.minNode),i=this.getConstNode(this.maxNode),a=r.value,o=i.value,s=e.getTypeLength(Kw(a)),c=e.getTypeLength(Kw(o));$V||=new Nr,eH||=new Nr,$V.setScalar(0),eH.setScalar(0),s===1?$V.setScalar(a):a.isColor?$V.set(a.r,a.g,a.b,1):$V.set(a.x,a.y,a.z||0,a.w||0),c===1?eH.setScalar(o):o.isColor?eH.set(o.r,o.g,o.b,1):eH.set(o.x,o.y,o.z||0,o.w||0);let l=4*t.count,u=new Float32Array(l);for(let e=0;e<l;e++){let t=e%4,n=$V.getComponent(t),r=eH.getComponent(t);u[e]=pr.lerp(n,r,Math.random())}let d=this.getNodeType(e);if(t.count*4*4<=e.getUniformBufferLimit())n=JA(u,`vec4`,t.count).element(oA).convert(d);else{let t=new Ro(u,4);e.geometry.setAttribute(`__range`+this.id,t),n=nA(t).convert(d)}}else n=W(0);return n}}).setParameterLength(2),nH=class extends sT{static get type(){return`ComputeBuiltinNode`}constructor(e,t){super(t),this._builtinName=e}getHash(e){return this.getBuiltinName(e)}generateNodeType(){return this.nodeType}setBuiltinName(e){return this._builtinName=e,this}getBuiltinName(){return this._builtinName}hasBuiltin(e){return e.hasBuiltin(this._builtinName)}generate(e,t){let n=this.getBuiltinName(e),r=this.getNodeType(e);return e.shaderStage===`compute`?e.format(n,r,t):(j(`ComputeBuiltinNode: Compute built-in value ${n} can not be accessed in the ${e.shaderStage} stage`),e.generateConst(r))}serialize(e){super.serialize(e),e.global=this.global,e._builtinName=this._builtinName}deserialize(e){super.deserialize(e),this.global=e.global,this._builtinName=e._builtinName}},rH=(e,t)=>new nH(e,t),iH=rH(`numWorkgroups`,`uvec3`),aH=rH(`workgroupId`,`uvec3`),oH=rH(`globalId`,`uvec3`),sH=rH(`localId`,`uvec3`),cH=rH(`subgroupSize`,`uint`),lH=rE(class extends sT{constructor(e){super(),this.scope=e,this.isBarrierNode=!0}setup(e){e.allowEarlyReturns=!1,e.allowGlobalVariables=!1}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}}),uH=()=>lH(`workgroup`).toStack(),dH=()=>lH(`storage`).toStack(),fH=()=>lH(`texture`).toStack(),pH=class extends cT{constructor(e,t){super(e,t),this.isWorkgroupInfoElementNode=!0}generate(e,t){let n,r=e.context.assign;if(n=super.generate(e),r!==!0){let r=this.getNodeType(e);n=e.format(n,r,t)}return n}},mH=class extends sT{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 j(`TSL: "label()" has been deprecated. Use "setName()" instead.`,new Pw),this.setName(e)}setScope(e){return this.scope=e,this}getElementType(){return this.elementType}getInputType(){return`${this.scope}Array`}element(e){return new pH(this,e)}generate(e){let t=this.name===``?`${this.scope}Array_${this.id}`:this.name;return e.getScopedArray(t,this.scope.toLowerCase(),this.bufferType,this.bufferCount)}},hH=(e,t)=>new mH(`Workgroup`,e,t),gH=class extends sT{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)}generateNodeType(e){return this.getInputType(e)}generate(e){let t=e.getNodeProperties(this),n=t.parents,r=this.method,i=this.getNodeType(e),a=this.getInputType(e),o=this.pointerNode,s=this.valueNode,c=[];c.push(`&${o.build(e,a)}`),s!==null&&c.push(s.build(e,a));let l=`${e.getMethod(r,i)}( ${c.join(`, `)} )`;if(n&&n.length===1&&n[0].isStackNode===!0)e.addLineFlowCode(l,this);else return t.constNode===void 0&&(t.constNode=xA(l,i).toConst()),t.constNode.build(e)}};gH.ATOMIC_LOAD=`atomicLoad`,gH.ATOMIC_STORE=`atomicStore`,gH.ATOMIC_ADD=`atomicAdd`,gH.ATOMIC_SUB=`atomicSub`,gH.ATOMIC_MAX=`atomicMax`,gH.ATOMIC_MIN=`atomicMin`,gH.ATOMIC_AND=`atomicAnd`,gH.ATOMIC_OR=`atomicOr`,gH.ATOMIC_XOR=`atomicXor`;var _H=rE(gH),vH=(e,t,n)=>_H(e,t,n).toStack(),yH=e=>vH(gH.ATOMIC_LOAD,e,null),bH=(e,t)=>vH(gH.ATOMIC_STORE,e,t),xH=(e,t)=>vH(gH.ATOMIC_ADD,e,t),SH=(e,t)=>vH(gH.ATOMIC_SUB,e,t),CH=(e,t)=>vH(gH.ATOMIC_MAX,e,t),wH=(e,t)=>vH(gH.ATOMIC_MIN,e,t),TH=(e,t)=>vH(gH.ATOMIC_AND,e,t),EH=(e,t)=>vH(gH.ATOMIC_OR,e,t),DH=(e,t)=>vH(gH.ATOMIC_XOR,e,t),Z=class e extends uT{static get type(){return`SubgroupFunctionNode`}constructor(e,t=null,n=null){super(),this.method=e,this.aNode=t,this.bNode=n}getInputType(e){let t=this.aNode?this.aNode.getNodeType(e):null,n=this.bNode?this.bNode.getNodeType(e):null;return(e.isMatrix(t)?0:e.getTypeLength(t))>(e.isMatrix(n)?0:e.getTypeLength(n))?t:n}generateNodeType(t){let n=this.method;return n===e.SUBGROUP_ELECT?`bool`:n===e.SUBGROUP_BALLOT?`uvec4`:this.getInputType(t)}generate(t,n){let r=this.method,i=this.getNodeType(t),a=this.getInputType(t),o=this.aNode,s=this.bNode,c=[];if(r===e.SUBGROUP_BROADCAST||r===e.SUBGROUP_SHUFFLE||r===e.QUAD_BROADCAST){let e=s.getNodeType(t);c.push(o.build(t,i),s.build(t,e===`float`?`int`:i))}else r===e.SUBGROUP_SHUFFLE_XOR||r===e.SUBGROUP_SHUFFLE_DOWN||r===e.SUBGROUP_SHUFFLE_UP?c.push(o.build(t,i),s.build(t,`uint`)):(o!==null&&c.push(o.build(t,a)),s!==null&&c.push(s.build(t,a)));let l=c.length===0?`()`:`( ${c.join(`, `)} )`;return t.format(`${t.getMethod(r,i)}${l}`,i,n)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};Z.SUBGROUP_ELECT=`subgroupElect`,Z.SUBGROUP_BALLOT=`subgroupBallot`,Z.SUBGROUP_ADD=`subgroupAdd`,Z.SUBGROUP_INCLUSIVE_ADD=`subgroupInclusiveAdd`,Z.SUBGROUP_EXCLUSIVE_AND=`subgroupExclusiveAdd`,Z.SUBGROUP_MUL=`subgroupMul`,Z.SUBGROUP_INCLUSIVE_MUL=`subgroupInclusiveMul`,Z.SUBGROUP_EXCLUSIVE_MUL=`subgroupExclusiveMul`,Z.SUBGROUP_AND=`subgroupAnd`,Z.SUBGROUP_OR=`subgroupOr`,Z.SUBGROUP_XOR=`subgroupXor`,Z.SUBGROUP_MIN=`subgroupMin`,Z.SUBGROUP_MAX=`subgroupMax`,Z.SUBGROUP_ALL=`subgroupAll`,Z.SUBGROUP_ANY=`subgroupAny`,Z.SUBGROUP_BROADCAST_FIRST=`subgroupBroadcastFirst`,Z.QUAD_SWAP_X=`quadSwapX`,Z.QUAD_SWAP_Y=`quadSwapY`,Z.QUAD_SWAP_DIAGONAL=`quadSwapDiagonal`,Z.SUBGROUP_BROADCAST=`subgroupBroadcast`,Z.SUBGROUP_SHUFFLE=`subgroupShuffle`,Z.SUBGROUP_SHUFFLE_XOR=`subgroupShuffleXor`,Z.SUBGROUP_SHUFFLE_UP=`subgroupShuffleUp`,Z.SUBGROUP_SHUFFLE_DOWN=`subgroupShuffleDown`,Z.QUAD_BROADCAST=`quadBroadcast`;var OH=H(Z,Z.SUBGROUP_ELECT).setParameterLength(0),kH=H(Z,Z.SUBGROUP_BALLOT).setParameterLength(1),AH=H(Z,Z.SUBGROUP_ADD).setParameterLength(1),jH=H(Z,Z.SUBGROUP_INCLUSIVE_ADD).setParameterLength(1),MH=H(Z,Z.SUBGROUP_EXCLUSIVE_AND).setParameterLength(1),NH=H(Z,Z.SUBGROUP_MUL).setParameterLength(1),PH=H(Z,Z.SUBGROUP_INCLUSIVE_MUL).setParameterLength(1),FH=H(Z,Z.SUBGROUP_EXCLUSIVE_MUL).setParameterLength(1),IH=H(Z,Z.SUBGROUP_AND).setParameterLength(1),LH=H(Z,Z.SUBGROUP_OR).setParameterLength(1),RH=H(Z,Z.SUBGROUP_XOR).setParameterLength(1),zH=H(Z,Z.SUBGROUP_MIN).setParameterLength(1),BH=H(Z,Z.SUBGROUP_MAX).setParameterLength(1),VH=H(Z,Z.SUBGROUP_ALL).setParameterLength(0),HH=H(Z,Z.SUBGROUP_ANY).setParameterLength(0),UH=H(Z,Z.SUBGROUP_BROADCAST_FIRST).setParameterLength(2),WH=H(Z,Z.QUAD_SWAP_X).setParameterLength(1),GH=H(Z,Z.QUAD_SWAP_Y).setParameterLength(1),KH=H(Z,Z.QUAD_SWAP_DIAGONAL).setParameterLength(1),qH=H(Z,Z.SUBGROUP_BROADCAST).setParameterLength(2),JH=H(Z,Z.SUBGROUP_SHUFFLE).setParameterLength(2),YH=H(Z,Z.SUBGROUP_SHUFFLE_XOR).setParameterLength(2),XH=H(Z,Z.SUBGROUP_SHUFFLE_UP).setParameterLength(2),ZH=H(Z,Z.SUBGROUP_SHUFFLE_DOWN).setParameterLength(2),QH=H(Z,Z.QUAD_BROADCAST).setParameterLength(1),$H;function eU(e){$H||=new WeakMap;let t=$H.get(e);return t===void 0&&$H.set(e,t={}),t}function tU(e){let t=eU(e);return t.shadowMatrix||=vD(`mat4`).setGroup(hD).onRenderUpdate(t=>((e.castShadow!==!0||t.renderer.shadowMap.enabled===!1)&&(e.shadow.camera.coordinateSystem!==t.camera.coordinateSystem&&(e.shadow.camera.coordinateSystem=t.camera.coordinateSystem,e.shadow.camera.updateProjectionMatrix()),e.shadow.updateMatrices(e)),e.shadow.matrix))}function nU(e,t=oM){let n=tU(e).mul(t);return n.xyz.div(n.w)}function rU(e){let t=eU(e);return t.position||=vD(new P).setGroup(hD).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.matrixWorld))}function iU(e){let t=eU(e);return t.targetPosition||=vD(new P).setGroup(hD).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.target.matrixWorld))}function aU(e){let t=eU(e);return t.viewPosition||=vD(new P).setGroup(hD).onRenderUpdate(({camera:t},n)=>{n.value=n.value||new P,n.value.setFromMatrixPosition(e.matrixWorld),n.value.applyMatrix4(t.matrixWorldInverse)})}var oU=e=>Aj.transformDirection(rU(e).sub(iU(e))),sU=e=>e.sort((e,t)=>e.id-t.id),cU=(e,t)=>{for(let n of t)if(n.isAnalyticLightNode&&n.light.id===e)return n;return null},lU=new WeakMap,uU=[],dU=class extends sT{static get type(){return`LightsNode`}constructor(){super(`vec3`),this.totalDiffuseNode=NE(`vec3`,`totalDiffuse`),this.totalSpecularNode=NE(`vec3`,`totalSpecular`),this.outgoingLightNode=NE(`vec3`,`outgoingLight`),this._lights=[],this._lightNodes=null,this._lightNodesHash=null,this.global=!0}customCacheKey(){let e=this._lights;for(let t=0;t<e.length;t++){let n=e[t];if(uU.push(n.id),uU.push(+!!n.castShadow),n.isSpotLight===!0){let e=n.map===null?-1:n.map.id,t=n.colorNode?n.colorNode.getCacheKey():-1;uU.push(e,t)}}let t=Lw(uU);return uU.length=0,t}getHash(e){if(this._lightNodesHash===null){this._lightNodes===null&&this.setupLightsNode(e);let t=[];for(let e of this._lightNodes)t.push(e.getHash());this._lightNodesHash=`lights-`+t.join(`,`)}return this._lightNodesHash}analyze(e){let t=e.getNodeProperties(this);for(let n of t.nodes)n.build(e);t.outputNode.build(e)}setupLightsNode(e){let t=[],n=this._lightNodes,r=sU(this._lights),i=e.renderer.library;for(let e of r)if(e.isNode)t.push(B(e));else{let r=null;if(n!==null&&(r=cU(e.id,n)),r===null){let t=i.getLightNodeClass(e.constructor);if(t===null){j(`LightsNode.setupNodeLights: Light node not found for ${e.constructor.name}`);continue}lU.has(e)===!1&&lU.set(e,new t(e)),r=lU.get(e)}t.push(r)}this._lightNodes=t}setupDirectLight(e,t,n){let{lightingModel:r,reflectedLight:i}=e.context;r.direct({...n,lightNode:t,reflectedLight:i},e)}setupDirectRectAreaLight(e,t,n){let{lightingModel:r,reflectedLight:i}=e.context;r.directRectArea({...n,lightNode:t,reflectedLight:i},e)}setupLights(e,t){for(let n of t)n.build(e)}getLightNodes(e){return this._lightNodes===null&&this.setupLightsNode(e),this._lightNodes}setup(e){let t=e.lightsNode;e.lightsNode=this;let n=this.outgoingLightNode,r=e.context,i=r.lightingModel,a=e.getNodeProperties(this);if(i){let{totalDiffuseNode:t,totalSpecularNode:o}=this;r.outgoingLight=n,a.nodes=e.addStack().nodes,i.start(e);let{backdrop:s,backdropAlpha:c}=r,{directDiffuse:l,directSpecular:u,indirectDiffuse:d,indirectSpecular:f}=r.reflectedLight,p=l.add(d);s!==null&&(p=J(c===null?s:c.mix(p,s))),t.assign(p),o.assign(u.add(f)),n.assign(t.add(o)),i.finish(e),n=n.bypass(e.removeStack())}else a.nodes=[];return e.lightsNode=t,n}setLights(e){return this._lights=e,this._lightNodes=null,this._lightNodesHash=null,this}getLights(){return this._lights}get hasLights(){return this._lights.length>0}},fU=(e=[])=>new dU().setLights(e),pU=class extends sT{static get type(){return`ShadowBaseNode`}constructor(e){super(),this.light=e,this.updateBeforeType=Qw.RENDER,this.isShadowBaseNode=!0}setupShadowPosition({context:e,material:t}){mU.assign(t.receivedShadowPositionNode||e.shadowPositionWorld||oM)}},mU=NE(`vec3`,`shadowPositionWorld`);function hU(e,t={}){return t.toneMapping=e.toneMapping,t.toneMappingExposure=e.toneMappingExposure,t.outputColorSpace=e.outputColorSpace,t.renderTarget=e.getRenderTarget(),t.activeCubeFace=e.getActiveCubeFace(),t.activeMipmapLevel=e.getActiveMipmapLevel(),t.renderObjectFunction=e.getRenderObjectFunction(),t.pixelRatio=e.getPixelRatio(),t.mrt=e.getMRT(),t.clearColor=e.getClearColor(t.clearColor||new I),t.clearAlpha=e.getClearAlpha(),t.autoClear=e.autoClear,t.scissorTest=e.getScissorTest(),t}function gU(e,t){return t=hU(e,t),e.setMRT(null),e.setRenderObjectFunction(null),e.setClearColor(0,1),e.autoClear=!0,t}function _U(e,t){e.toneMapping=t.toneMapping,e.toneMappingExposure=t.toneMappingExposure,e.outputColorSpace=t.outputColorSpace,e.setRenderTarget(t.renderTarget,t.activeCubeFace,t.activeMipmapLevel),e.setRenderObjectFunction(t.renderObjectFunction),e.setPixelRatio(t.pixelRatio),e.setMRT(t.mrt),e.setClearColor(t.clearColor,t.clearAlpha),e.autoClear=t.autoClear,e.setScissorTest(t.scissorTest)}function vU(e,t={}){return t.background=e.background,t.backgroundNode=e.backgroundNode,t.overrideMaterial=e.overrideMaterial,t}function yU(e,t){return t=vU(e,t),e.background=null,e.backgroundNode=null,e.overrideMaterial=null,t}function bU(e,t){e.background=t.background,e.backgroundNode=t.backgroundNode,e.overrideMaterial=t.overrideMaterial}function xU(e,t,n){return n=gU(e,n),n=yU(t,n),n}function SU(e,t,n){_U(e,n),bU(t,n)}var CU=new WeakMap,wU=U(({depthTexture:e,shadowCoord:t,depthLayer:n})=>{let r=VA(e,t.xy).setName(`t_basic`);return e.isArrayTexture&&(r=r.depth(n)),r.compare(t.z)}),TU=U(({depthTexture:e,shadowCoord:t,shadow:n,depthLayer:r})=>{let i=(t,n)=>{let i=VA(e,t);return e.isArrayTexture&&(i=i.depth(r)),i.compare(n)},a=BM(`mapSize`,`vec2`,n).setGroup(hD),o=BM(`radius`,`float`,n).setGroup(hD),s=q(1).div(a),c=o.mul(s.x),l=jB(aj.xy).mul(6.28318530718);return ED(i(t.xy.add(MB(0,5,l).mul(c)),t.z),i(t.xy.add(MB(1,5,l).mul(c)),t.z),i(t.xy.add(MB(2,5,l).mul(c)),t.z),i(t.xy.add(MB(3,5,l).mul(c)),t.z),i(t.xy.add(MB(4,5,l).mul(c)),t.z)).mul(1/5)}),EU=U(({depthTexture:e,shadowCoord:t,shadow:n,depthLayer:r})=>{let i=(t,n)=>{let i=VA(e,t);return e.isArrayTexture&&(i=i.depth(r)),i.compare(n)},a=BM(`mapSize`,`vec2`,n).setGroup(hD),o=q(1).div(a),s=o.x,c=o.y,l=t.xy,u=_O(l.mul(a).add(.5));return l.subAssign(u.mul(o)),ED(i(l,t.z),i(l.add(q(s,0)),t.z),i(l.add(q(0,c)),t.z),i(l.add(o),t.z),ak(i(l.add(q(s.negate(),0)),t.z),i(l.add(q(s.mul(2),0)),t.z),u.x),ak(i(l.add(q(s.negate(),c)),t.z),i(l.add(q(s.mul(2),c)),t.z),u.x),ak(i(l.add(q(0,c.negate())),t.z),i(l.add(q(0,c.mul(2))),t.z),u.y),ak(i(l.add(q(s,c.negate())),t.z),i(l.add(q(s,c.mul(2))),t.z),u.y),ak(ak(i(l.add(q(s.negate(),c.negate())),t.z),i(l.add(q(s.mul(2),c.negate())),t.z),u.x),ak(i(l.add(q(s.negate(),c.mul(2))),t.z),i(l.add(q(s.mul(2),c.mul(2))),t.z),u.x),u.y)).mul(1/9)}),DU=U(({depthTexture:e,shadowCoord:t,depthLayer:n},r)=>{let i=VA(e).sample(t.xy);e.isArrayTexture&&(i=i.depth(n)),i=i.rg;let a=i.x,o=GO(1e-7,i.y.mul(i.y)),s=r.renderer.reversedDepthBuffer?KO(a,t.z):KO(t.z,a),c=W(1).toVar();return cE(s.notEqual(1),()=>{let e=t.z.sub(a),n=o.div(o.add(e.mul(e)));n=ok(DD(n,.3).div(.65)),c.assign(GO(s,n))}),c}),OU=e=>{let t=CU.get(e);return t===void 0&&(t=new vF,t.colorNode=yE(0,0,0,1),t.isShadowPassMaterial=!0,t.name=`ShadowMaterial`,t.blending=0,t.fog=!1,CU.set(e,t)),t},kU=e=>{let t=CU.get(e);t!==void 0&&(t.dispose(),CU.delete(e))},AU=new _R,jU=[],MU=(e,t,n,r)=>{jU[0]=e,jU[1]=t;let i=AU.get(jU);return(i===void 0||i.shadowType!==n||i.useVelocity!==r)&&(i=(i,a,o,s,c,l,...u)=>{(i.castShadow===!0||i.receiveShadow&&n===3)&&(r&&(Jw(i).useVelocity=!0),i.onBeforeShadow(e,i,o,t.camera,s,a.overrideMaterial,l),e.renderObject(i,a,o,s,c,l,...u),i.onAfterShadow(e,i,o,t.camera,s,a.overrideMaterial,l))},i.shadowType=n,i.useVelocity=r,AU.set(jU,i)),jU[0]=null,jU[1]=null,i},NU=U(({samples:e,radius:t,size:n,shadowPass:r,depthLayer:i})=>{let a=W(0).toVar(`meanVertical`),o=W(0).toVar(`squareMeanVertical`),s=e.lessThanEqual(W(1)).select(W(0),W(2).div(e.sub(1))),c=e.lessThanEqual(W(1)).select(W(0),W(-1));return SP({start:G(0),end:G(e),type:`int`,condition:`<`},({i:e})=>{let l=c.add(W(e).mul(s)),u=r.sample(ED(aj.xy,q(0,l).mul(t)).div(n));r.value.isArrayTexture&&(u=u.depth(i)),u=u.x,a.addAssign(u),o.addAssign(u.mul(u))}),a.divAssign(e),o.divAssign(e),q(a,fO(o.sub(a.mul(a)).max(0)))}),PU=U(({samples:e,radius:t,size:n,shadowPass:r,depthLayer:i})=>{let a=W(0).toVar(`meanHorizontal`),o=W(0).toVar(`squareMeanHorizontal`),s=e.lessThanEqual(W(1)).select(W(0),W(2).div(e.sub(1))),c=e.lessThanEqual(W(1)).select(W(0),W(-1));return SP({start:G(0),end:G(e),type:`int`,condition:`<`},({i:e})=>{let l=c.add(W(e).mul(s)),u=r.sample(ED(aj.xy,q(l,0).mul(t)).div(n));r.value.isArrayTexture&&(u=u.depth(i)),a.addAssign(u.x),o.addAssign(ED(u.y.mul(u.y),u.x.mul(u.x)))}),a.divAssign(e),o.divAssign(e),q(a,fO(o.sub(a.mul(a)).max(0)))}),FU=[wU,TU,EU,DU],IU,LU=new CB,RU=class extends pU{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:i,depthLayer:a}){let o=r.x.greaterThanEqual(0).and(r.x.lessThanEqual(1)).and(r.y.greaterThanEqual(0)).and(r.y.lessThanEqual(1)).and(r.z.lessThanEqual(1)),s=t({depthTexture:n,shadowCoord:r,shadow:i,depthLayer:a});return o.select(s,W(1))}setupShadowCoord(e,t){let{shadow:n}=this,{renderer:r}=e,i=n.biasNode||BM(`bias`,`float`,n).setGroup(hD),a=t,o;if(n.camera.isOrthographicCamera||r.logarithmicDepthBuffer!==!0)a=a.xyz.div(a.w),o=a.z;else{let e=a.w;a=a.xy.div(e);let t=BM(`near`,`float`,n.camera).setGroup(hD),r=BM(`far`,`float`,n.camera).setGroup(hD);o=YP(e.negate(),t,r)}return a=J(a.x,a.y.oneMinus(),r.reversedDepthBuffer?o.sub(i):o.add(i)),a}getShadowFilterFn(e){return FU[e]}setupRenderTarget(e,t){let n=new $s(e.mapSize.width,e.mapSize.height);n.name=`ShadowDepthTexture`,n.compareFunction=t.renderer.reversedDepthBuffer?518:515;let 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){let{renderer:t,camera:n}=e,{light:r,shadow:i}=this,{depthTexture:a,shadowMap:o}=this.setupRenderTarget(i,e),s=t.shadowMap.type,c=t.hasCompatibility(Cn.TEXTURE_COMPARE);if((s===1||s===2)&&c?(a.minFilter=Te,a.magFilter=Te):(a.minFilter=be,a.magFilter=be),i.camera.coordinateSystem=n.coordinateSystem,i.camera.updateProjectionMatrix(),s===3&&i.isPointLightShadow!==!0){a.compareFunction=null,o.depth>1?(o._vsmShadowMapVertical||(o._vsmShadowMapVertical=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depth:o.depth,depthBuffer:!1}),o._vsmShadowMapVertical.texture.name=`VSMVertical`),this.vsmShadowMapVertical=o._vsmShadowMapVertical,o._vsmShadowMapHorizontal||(o._vsmShadowMapHorizontal=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depth:o.depth,depthBuffer:!1}),o._vsmShadowMapHorizontal.texture.name=`VSMHorizontal`),this.vsmShadowMapHorizontal=o._vsmShadowMapHorizontal):(this.vsmShadowMapVertical=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depthBuffer:!1}),this.vsmShadowMapHorizontal=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depthBuffer:!1}));let t=VA(a);a.isArrayTexture&&(t=t.depth(this.depthLayer));let n=VA(this.vsmShadowMapVertical.texture);a.isArrayTexture&&(n=n.depth(this.depthLayer));let r=BM(`blurSamples`,`float`,i).setGroup(hD),s=BM(`radius`,`float`,i).setGroup(hD),c=BM(`mapSize`,`vec2`,i).setGroup(hD),l=this.vsmMaterialVertical||=new vF;l.fragmentNode=NU({samples:r,radius:s,size:c,shadowPass:t,depthLayer:this.depthLayer}).context(e.getSharedContext()),l.name=`VSMVertical`,l=this.vsmMaterialHorizontal||=new vF,l.fragmentNode=PU({samples:r,radius:s,size:c,shadowPass:n,depthLayer:this.depthLayer}).context(e.getSharedContext()),l.name=`VSMHorizontal`}let l=BM(`intensity`,`float`,i).setGroup(hD),u=BM(`normalBias`,`float`,i).setGroup(hD),d=tU(r),f=yM.mul(u),p;p=!t.highPrecision||e.material.receivedShadowPositionNode||e.context.shadowPositionWorld?d.mul(mU.add(f)):vD(`mat4`).onObjectUpdate(({object:e},t)=>t.value.multiplyMatrices(d.value,e.matrixWorld)).mul(iM).add(d.mul(yE(f,0)));let m=this.setupShadowCoord(e,p),h=i.filterNode||this.getShadowFilterFn(t.shadowMap.type)||null;if(h===null)throw Error(`THREE.WebGPURenderer: Shadow map type not supported yet.`);let g=s===3&&i.isPointLightShadow!==!0?this.vsmShadowMapHorizontal.texture:a,_=this.setupShadowFilter(e,{filterFn:h,shadowTexture:o.texture,depthTexture:g,shadowCoord:m,shadow:i,depthLayer:this.depthLayer}),v;t.shadowMap.transmitted===!0&&(o.texture.isCubeTexture?v=IM(o.texture,m.xyz):(v=VA(o.texture,m),a.isArrayTexture&&(v=v.depth(this.depthLayer))));let y;y=v?ak(1,_.rgb.mix(v,1),l.mul(v.a)).toVar():ak(1,_,l).toVar(),this.shadowMap=o,this.shadow.map=o;let b=`${this.light.type} Shadow [ ${this.light.name||`ID: `+this.light.id} ]`;return v&&y.toInspector(`${b} / Color`,()=>this.shadowMap.texture.isCubeTexture?IM(this.shadowMap.texture):VA(this.shadowMap.texture)),y.toInspector(`${b} / Depth`,()=>this.shadowMap.texture.isCubeTexture?IM(this.shadowMap.texture).r.oneMinus():UA(this.shadowMap.depthTexture,PA().mul(FA(VA(this.shadowMap.depthTexture)))).r.oneMinus())}setup(e){if(e.renderer.shadowMap.enabled!==!1)return U(()=>{let 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.receivedShadowNode&&(n=e.material.receivedShadowNode(n)),n})()}renderShadow(e){let{shadow:t,shadowMap:n,light:r}=this,{renderer:i,scene:a}=e;t.updateMatrices(r),n.setSize(t.mapSize.width,t.mapSize.height,n.depth);let o=a.name;a.name=`Shadow Map [ ${r.name||`ID: `+r.id} ]`,i.render(a,t.camera),a.name=o}updateShadow(e){let{shadowMap:t,light:n,shadow:r}=this,{renderer:i,scene:a,camera:o}=e,s=i.shadowMap.type,c=t.depthTexture.version;this._depthVersionCached=c;let l=r.camera.layers.mask;r.camera.layers.mask&4294967294||(r.camera.layers.mask=o.layers.mask);let u=i.getRenderObjectFunction(),d=i.getMRT(),f=d?d.has(`velocity`):!1;IU=xU(i,a,IU),a.overrideMaterial=OU(n),i.setRenderObjectFunction(MU(i,r,s,f)),i.setClearColor(0,0),i.setRenderTarget(t),this.renderShadow(e),i.setRenderObjectFunction(u),s===3&&r.isPointLightShadow!==!0&&this.vsmPass(i),r.camera.layers.mask=l,SU(i,a,IU)}vsmPass(e){let{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),LU.material=this.vsmMaterialVertical,LU.render(e),e.setRenderTarget(this.vsmShadowMapHorizontal),LU.material=this.vsmMaterialHorizontal,LU.render(e)}dispose(){this._reset(),super.dispose()}_reset(){this._currentShadowType=null,kU(this.light),this.shadowMap&&=(this.shadowMap.dispose(),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){let{shadow:t}=this,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))}},zU=(e,t)=>new RU(e,t),BU=new I,VU=new F,HU=new P,UU=new P,WU=[new P(1,0,0),new P(-1,0,0),new P(0,-1,0),new P(0,1,0),new P(0,0,1),new P(0,0,-1)],GU=[new P(0,-1,0),new P(0,-1,0),new P(0,0,-1),new P(0,0,1),new P(0,-1,0),new P(0,-1,0)],KU=[new P(1,0,0),new P(-1,0,0),new P(0,1,0),new P(0,-1,0),new P(0,0,1),new P(0,0,-1)],qU=[new P(0,-1,0),new P(0,-1,0),new P(0,0,1),new P(0,0,-1),new P(0,-1,0),new P(0,-1,0)],JU=U(({depthTexture:e,bd3D:t,dp:n})=>IM(e,t).compare(n)),YU=U(({depthTexture:e,bd3D:t,dp:n,shadow:r})=>{let i=BM(`radius`,`float`,r).setGroup(hD),a=BM(`mapSize`,`vec2`,r).setGroup(hD),o=i.div(a.x),s=AO(t),c=gO(ZO(t,s.x.greaterThan(s.z).select(J(0,1,0),J(1,0,0)))),l=ZO(t,c),u=jB(aj.xy).mul(6.28318530718),d=MB(0,5,u),f=MB(1,5,u),p=MB(2,5,u),m=MB(3,5,u),h=MB(4,5,u);return IM(e,t.add(c.mul(d.x).add(l.mul(d.y)).mul(o))).compare(n).add(IM(e,t.add(c.mul(f.x).add(l.mul(f.y)).mul(o))).compare(n)).add(IM(e,t.add(c.mul(p.x).add(l.mul(p.y)).mul(o))).compare(n)).add(IM(e,t.add(c.mul(m.x).add(l.mul(m.y)).mul(o))).compare(n)).add(IM(e,t.add(c.mul(h.x).add(l.mul(h.y)).mul(o))).compare(n)).mul(1/5)}),XU=U(({filterFn:e,depthTexture:t,shadowCoord:n,shadow:r},i)=>{let a=n.xyz.toConst(),o=a.abs().toConst(),s=o.x.max(o.y).max(o.z),c=vD(`float`).setGroup(hD).onRenderUpdate(()=>r.camera.near),l=vD(`float`).setGroup(hD).onRenderUpdate(()=>r.camera.far),u=BM(`bias`,`float`,r).setGroup(hD),d=W(1).toVar();return cE(s.sub(l).lessThanEqual(0).and(s.sub(c).greaterThanEqual(0)),()=>{let n;i.renderer.reversedDepthBuffer?(n=qP(s.negate(),c,l),n.subAssign(u)):(n=KP(s.negate(),c,l),n.addAssign(u));let o=a.normalize();d.assign(e({depthTexture:t,bd3D:o,dp:n,shadow:r}))}),d}),ZU=class extends RU{static get type(){return`PointShadowNode`}constructor(e,t=null){super(e,t)}getShadowFilterFn(e){return e===0?JU:YU}setupShadowCoord(e,t){return t}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:r,shadow:i}){return XU({filterFn:t,depthTexture:n,shadowCoord:r,shadow:i})}setupRenderTarget(e,t){let n=new ec(e.mapSize.width);n.name=`PointShadowDepthTexture`,n.compareFunction=t.renderer.reversedDepthBuffer?518:515;let r=t.createCubeRenderTarget(e.mapSize.width);return r.texture.name=`PointShadowMap`,r.depthTexture=n,{shadowMap:r,depthTexture:n}}renderShadow(e){let{shadow:t,shadowMap:n,light:r}=this,{renderer:i,scene:a}=e,o=t.camera,s=t.matrix,c=i.coordinateSystem===yn,l=c?WU:KU,u=c?GU:qU;n.setSize(t.mapSize.width,t.mapSize.width);let d=i.autoClear,f=i.getClearColor(BU),p=i.getClearAlpha();i.autoClear=!1,i.setClearColor(t.clearColor,t.clearAlpha);for(let e=0;e<6;e++){i.setRenderTarget(n,e),i.clear();let c=r.distance||o.far;c!==o.far&&(o.far=c,o.updateProjectionMatrix()),HU.setFromMatrixPosition(r.matrixWorld),o.position.copy(HU),UU.copy(o.position),UU.add(l[e]),o.up.copy(u[e]),o.lookAt(UU),o.updateMatrixWorld(),s.makeTranslation(-HU.x,-HU.y,-HU.z),VU.multiplyMatrices(o.projectionMatrix,o.matrixWorldInverse),t._frustum.setFromProjectionMatrix(VU,o.coordinateSystem,o.reversedDepth);let d=a.name;a.name=`Point Light Shadow [ ${r.name||`ID: `+r.id} ] - Face ${e+1}`,i.render(a,o),a.name=d}i.autoClear=d,i.setClearColor(f,p)}},QU=(e,t)=>new ZU(e,t),$U=class extends AP{static get type(){return`AnalyticLightNode`}constructor(e=null){super(),this.light=e,this.color=new I,this.colorNode=e&&e.colorNode||vD(this.color).setGroup(hD),this.baseColorNode=null,this.shadowNode=null,this.shadowColorNode=null,this.isAnalyticLightNode=!0,this.updateType=Qw.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 aU(this.light).sub(e.context.positionView||cM)}setupDirect(){}setupDirectRectArea(){}setupShadowNode(){return zU(this.light)}setupShadow(e){let{renderer:t}=e;if(t.shadowMap.enabled===!1)return;let n=this.shadowColorNode;if(n===null){let e=this.light.shadow.shadowNode,t;t=e===void 0?this.setupShadowNode():B(e),this.shadowNode=t,this.shadowColorNode=n=this.colorNode.mul(t),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);let t=this.setupDirect(e),n=this.setupDirectRectArea(e);t&&e.lightsNode.setupDirectLight(e,this,t),n&&e.lightsNode.setupDirectRectAreaLight(e,this,n)}update(){let{light:e}=this;this.color.copy(e.color).multiplyScalar(e.intensity)}},eW=U(({lightDistance:e,cutoffDistance:t,decayExponent:n})=>{let r=e.pow(n).max(.01).reciprocal();return t.greaterThan(0).select(r.mul(e.div(t).pow4().oneMinus().clamp().pow2()),r)}),tW=({color:e,lightVector:t,cutoffDistance:n,decayExponent:r})=>{let i=t.normalize(),a=eW({lightDistance:t.length(),cutoffDistance:n,decayExponent:r});return{lightDirection:i,lightColor:e.mul(a)}},nW=class extends $U{static get type(){return`PointLightNode`}constructor(e=null){super(e),this.cutoffDistanceNode=vD(0).setGroup(hD),this.decayExponentNode=vD(2).setGroup(hD)}update(e){let{light:t}=this;super.update(e),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}setupShadowNode(){return QU(this.light)}setupDirect(e){return tW({color:this.colorNode,lightVector:this.getLightVector(e),cutoffDistance:this.cutoffDistanceNode,decayExponent:this.decayExponentNode})}},rW=U(([e=PA()])=>{let t=e.mul(2),n=t.x.floor(),r=t.y.floor();return n.add(r).mod(2).sign()}),iW=U(([e=PA()],{renderer:t,material:n})=>{let r=ik(e.mul(2).sub(1)),i;if(n.alphaToCoverage&&t.currentSamples>0){let e=W(r.fwidth()).toVar();i=lk(e.oneMinus(),e.add(1),r).oneMinus()}else i=_k(r.greaterThan(1),0,1);return i}),aW=U(([e,t,n])=>{let r=W(n).toVar(),i=W(t).toVar();return _k(fE(e).toVar(),i,r)}).setLayout({name:`mx_select`,type:`float`,inputs:[{name:`b`,type:`bool`},{name:`t`,type:`float`},{name:`f`,type:`float`}]}),oW=U(([e,t])=>{let n=fE(t).toVar(),r=W(e).toVar();return _k(n,r.negate(),r)}).setLayout({name:`mx_negate_if`,type:`float`,inputs:[{name:`val`,type:`float`},{name:`b`,type:`bool`}]}),sW=U(([e])=>G(mO(W(e).toVar()))).setLayout({name:`mx_floor`,type:`int`,inputs:[{name:`x`,type:`float`}]}),cW=U(([e,t])=>{let n=W(e).toVar();return t.assign(sW(n)),n.sub(W(t))}),lW=Hz([U(([e,t,n,r,i,a])=>{let o=W(a).toVar(),s=W(i).toVar(),c=W(r).toVar(),l=W(n).toVar(),u=W(t).toVar(),d=W(e).toVar(),f=W(DD(1,s)).toVar();return DD(1,o).mul(d.mul(f).add(u.mul(s))).add(o.mul(l.mul(f).add(c.mul(s))))}).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`}]}),U(([e,t,n,r,i,a])=>{let o=W(a).toVar(),s=W(i).toVar(),c=J(r).toVar(),l=J(n).toVar(),u=J(t).toVar(),d=J(e).toVar(),f=W(DD(1,s)).toVar();return DD(1,o).mul(d.mul(f).add(u.mul(s))).add(o.mul(l.mul(f).add(c.mul(s))))}).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`}]})]),uW=Hz([U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=W(u).toVar(),f=W(l).toVar(),p=W(c).toVar(),m=W(s).toVar(),h=W(o).toVar(),g=W(a).toVar(),_=W(i).toVar(),v=W(r).toVar(),y=W(n).toVar(),b=W(t).toVar(),x=W(e).toVar(),S=W(DD(1,p)).toVar(),C=W(DD(1,f)).toVar();return W(DD(1,d)).toVar().mul(C.mul(x.mul(S).add(b.mul(p))).add(f.mul(y.mul(S).add(v.mul(p))))).add(d.mul(C.mul(_.mul(S).add(g.mul(p))).add(f.mul(h.mul(S).add(m.mul(p))))))}).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`}]}),U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=W(u).toVar(),f=W(l).toVar(),p=W(c).toVar(),m=J(s).toVar(),h=J(o).toVar(),g=J(a).toVar(),_=J(i).toVar(),v=J(r).toVar(),y=J(n).toVar(),b=J(t).toVar(),x=J(e).toVar(),S=W(DD(1,p)).toVar(),C=W(DD(1,f)).toVar();return W(DD(1,d)).toVar().mul(C.mul(x.mul(S).add(b.mul(p))).add(f.mul(y.mul(S).add(v.mul(p))))).add(d.mul(C.mul(_.mul(S).add(g.mul(p))).add(f.mul(h.mul(S).add(m.mul(p))))))}).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`}]})]),dW=Hz([U(([e,t,n])=>{let r=W(n).toVar(),i=W(t).toVar(),a=K(K(e).toVar().bitAnd(K(7))).toVar(),o=W(aW(a.lessThan(K(4)),i,r)).toVar(),s=W(OD(2,aW(a.lessThan(K(4)),r,i))).toVar();return oW(o,fE(a.bitAnd(K(1)))).add(oW(s,fE(a.bitAnd(K(2)))))}).setLayout({name:`mx_gradient_float_0`,type:`float`,inputs:[{name:`hash`,type:`uint`},{name:`x`,type:`float`},{name:`y`,type:`float`}]}),U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=W(t).toVar(),s=K(K(e).toVar().bitAnd(K(15))).toVar(),c=W(aW(s.lessThan(K(8)),o,a)).toVar(),l=W(aW(s.lessThan(K(4)),a,aW(s.equal(K(12)).or(s.equal(K(14))),o,i))).toVar();return oW(c,fE(s.bitAnd(K(1)))).add(oW(l,fE(s.bitAnd(K(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`}]})]),fW=Hz([U(([e,t,n])=>{let r=W(n).toVar(),i=W(t).toVar(),a=_E(e).toVar();return J(dW(a.x,i,r),dW(a.y,i,r),dW(a.z,i,r))}).setLayout({name:`mx_gradient_vec3_0`,type:`vec3`,inputs:[{name:`hash`,type:`uvec3`},{name:`x`,type:`float`},{name:`y`,type:`float`}]}),U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=W(t).toVar(),s=_E(e).toVar();return J(dW(s.x,o,a,i),dW(s.y,o,a,i),dW(s.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`}]})]),pW=U(([e])=>OD(.6616,W(e).toVar())).setLayout({name:`mx_gradient_scale2d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),mW=U(([e])=>OD(.982,W(e).toVar())).setLayout({name:`mx_gradient_scale3d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),hW=Hz([pW,U(([e])=>OD(.6616,J(e).toVar())).setLayout({name:`mx_gradient_scale2d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),gW=Hz([mW,U(([e])=>OD(.982,J(e).toVar())).setLayout({name:`mx_gradient_scale3d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),_W=U(([e,t])=>{let n=G(t).toVar(),r=K(e).toVar();return r.shiftLeft(n).bitOr(r.shiftRight(G(32).sub(n)))}).setLayout({name:`mx_rotl32`,type:`uint`,inputs:[{name:`x`,type:`uint`},{name:`k`,type:`int`}]}),vW=U(([e,t,n])=>{e.subAssign(n),e.bitXorAssign(_W(n,G(4))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(_W(e,G(6))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(_W(t,G(8))),t.addAssign(e),e.subAssign(n),e.bitXorAssign(_W(n,G(16))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(_W(e,G(19))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(_W(t,G(4))),t.addAssign(e)}),yW=U(([e,t,n])=>{let r=K(n).toVar(),i=K(t).toVar(),a=K(e).toVar();return r.bitXorAssign(i),r.subAssign(_W(i,G(14))),a.bitXorAssign(r),a.subAssign(_W(r,G(11))),i.bitXorAssign(a),i.subAssign(_W(a,G(25))),r.bitXorAssign(i),r.subAssign(_W(i,G(16))),a.bitXorAssign(r),a.subAssign(_W(r,G(4))),i.bitXorAssign(a),i.subAssign(_W(a,G(14))),r.bitXorAssign(i),r.subAssign(_W(i,G(24))),r}).setLayout({name:`mx_bjfinal`,type:`uint`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`},{name:`c`,type:`uint`}]}),bW=U(([e])=>W(K(e).toVar()).div(W(K(G(4294967295))))).setLayout({name:`mx_bits_to_01`,type:`float`,inputs:[{name:`bits`,type:`uint`}]}),xW=U(([e])=>{let t=W(e).toVar();return t.mul(t).mul(t).mul(t.mul(t.mul(6).sub(15)).add(10))}).setLayout({name:`mx_fade`,type:`float`,inputs:[{name:`t`,type:`float`}]}),SW=Hz([U(([e])=>{let t=G(e).toVar(),n=K(K(1)).toVar(),r=K(K(G(3735928559)).add(n.shiftLeft(K(2))).add(K(13))).toVar();return yW(r.add(K(t)),r,r)}).setLayout({name:`mx_hash_int_0`,type:`uint`,inputs:[{name:`x`,type:`int`}]}),U(([e,t])=>{let n=G(t).toVar(),r=G(e).toVar(),i=K(K(2)).toVar(),a=K().toVar(),o=K().toVar(),s=K().toVar();return a.assign(o.assign(s.assign(K(G(3735928559)).add(i.shiftLeft(K(2))).add(K(13))))),a.addAssign(K(r)),o.addAssign(K(n)),yW(a,o,s)}).setLayout({name:`mx_hash_int_1`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`}]}),U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=G(e).toVar(),o=K(K(3)).toVar(),s=K().toVar(),c=K().toVar(),l=K().toVar();return s.assign(c.assign(l.assign(K(G(3735928559)).add(o.shiftLeft(K(2))).add(K(13))))),s.addAssign(K(a)),c.addAssign(K(i)),l.addAssign(K(r)),yW(s,c,l)}).setLayout({name:`mx_hash_int_2`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]}),U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=G(t).toVar(),s=G(e).toVar(),c=K(K(4)).toVar(),l=K().toVar(),u=K().toVar(),d=K().toVar();return l.assign(u.assign(d.assign(K(G(3735928559)).add(c.shiftLeft(K(2))).add(K(13))))),l.addAssign(K(s)),u.addAssign(K(o)),d.addAssign(K(a)),vW(l,u,d),l.addAssign(K(i)),yW(l,u,d)}).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`}]}),U(([e,t,n,r,i])=>{let a=G(i).toVar(),o=G(r).toVar(),s=G(n).toVar(),c=G(t).toVar(),l=G(e).toVar(),u=K(K(5)).toVar(),d=K().toVar(),f=K().toVar(),p=K().toVar();return d.assign(f.assign(p.assign(K(G(3735928559)).add(u.shiftLeft(K(2))).add(K(13))))),d.addAssign(K(l)),f.addAssign(K(c)),p.addAssign(K(s)),vW(d,f,p),d.addAssign(K(o)),f.addAssign(K(a)),yW(d,f,p)}).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`}]})]),CW=Hz([U(([e,t])=>{let n=G(t).toVar(),r=K(SW(G(e).toVar(),n)).toVar(),i=_E().toVar();return i.x.assign(r.bitAnd(G(255))),i.y.assign(r.shiftRight(G(8)).bitAnd(G(255))),i.z.assign(r.shiftRight(G(16)).bitAnd(G(255))),i}).setLayout({name:`mx_hash_vec3_0`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`}]}),U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=K(SW(G(e).toVar(),i,r)).toVar(),o=_E().toVar();return o.x.assign(a.bitAnd(G(255))),o.y.assign(a.shiftRight(G(8)).bitAnd(G(255))),o.z.assign(a.shiftRight(G(16)).bitAnd(G(255))),o}).setLayout({name:`mx_hash_vec3_1`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]})]),wW=Hz([U(([e])=>{let t=q(e).toVar(),n=G().toVar(),r=G().toVar(),i=W(cW(t.x,n)).toVar(),a=W(cW(t.y,r)).toVar(),o=W(xW(i)).toVar(),s=W(xW(a)).toVar();return hW(W(lW(dW(SW(n,r),i,a),dW(SW(n.add(G(1)),r),i.sub(1),a),dW(SW(n,r.add(G(1))),i,a.sub(1)),dW(SW(n.add(G(1)),r.add(G(1))),i.sub(1),a.sub(1)),o,s)).toVar())}).setLayout({name:`mx_perlin_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar(),n=G().toVar(),r=G().toVar(),i=G().toVar(),a=W(cW(t.x,n)).toVar(),o=W(cW(t.y,r)).toVar(),s=W(cW(t.z,i)).toVar(),c=W(xW(a)).toVar(),l=W(xW(o)).toVar(),u=W(xW(s)).toVar();return gW(W(uW(dW(SW(n,r,i),a,o,s),dW(SW(n.add(G(1)),r,i),a.sub(1),o,s),dW(SW(n,r.add(G(1)),i),a,o.sub(1),s),dW(SW(n.add(G(1)),r.add(G(1)),i),a.sub(1),o.sub(1),s),dW(SW(n,r,i.add(G(1))),a,o,s.sub(1)),dW(SW(n.add(G(1)),r,i.add(G(1))),a.sub(1),o,s.sub(1)),dW(SW(n,r.add(G(1)),i.add(G(1))),a,o.sub(1),s.sub(1)),dW(SW(n.add(G(1)),r.add(G(1)),i.add(G(1))),a.sub(1),o.sub(1),s.sub(1)),c,l,u)).toVar())}).setLayout({name:`mx_perlin_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec3`}]})]),TW=Hz([U(([e])=>{let t=q(e).toVar(),n=G().toVar(),r=G().toVar(),i=W(cW(t.x,n)).toVar(),a=W(cW(t.y,r)).toVar(),o=W(xW(i)).toVar(),s=W(xW(a)).toVar();return hW(J(lW(fW(CW(n,r),i,a),fW(CW(n.add(G(1)),r),i.sub(1),a),fW(CW(n,r.add(G(1))),i,a.sub(1)),fW(CW(n.add(G(1)),r.add(G(1))),i.sub(1),a.sub(1)),o,s)).toVar())}).setLayout({name:`mx_perlin_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar(),n=G().toVar(),r=G().toVar(),i=G().toVar(),a=W(cW(t.x,n)).toVar(),o=W(cW(t.y,r)).toVar(),s=W(cW(t.z,i)).toVar(),c=W(xW(a)).toVar(),l=W(xW(o)).toVar(),u=W(xW(s)).toVar();return gW(J(uW(fW(CW(n,r,i),a,o,s),fW(CW(n.add(G(1)),r,i),a.sub(1),o,s),fW(CW(n,r.add(G(1)),i),a,o.sub(1),s),fW(CW(n.add(G(1)),r.add(G(1)),i),a.sub(1),o.sub(1),s),fW(CW(n,r,i.add(G(1))),a,o,s.sub(1)),fW(CW(n.add(G(1)),r,i.add(G(1))),a.sub(1),o,s.sub(1)),fW(CW(n,r.add(G(1)),i.add(G(1))),a,o.sub(1),s.sub(1)),fW(CW(n.add(G(1)),r.add(G(1)),i.add(G(1))),a.sub(1),o.sub(1),s.sub(1)),c,l,u)).toVar())}).setLayout({name:`mx_perlin_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]})]),EW=Hz([U(([e])=>bW(SW(G(sW(W(e).toVar())).toVar()))).setLayout({name:`mx_cell_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=q(e).toVar();return bW(SW(G(sW(t.x)).toVar(),G(sW(t.y)).toVar()))}).setLayout({name:`mx_cell_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar();return bW(SW(G(sW(t.x)).toVar(),G(sW(t.y)).toVar(),G(sW(t.z)).toVar()))}).setLayout({name:`mx_cell_noise_float_2`,type:`float`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=yE(e).toVar();return bW(SW(G(sW(t.x)).toVar(),G(sW(t.y)).toVar(),G(sW(t.z)).toVar(),G(sW(t.w)).toVar()))}).setLayout({name:`mx_cell_noise_float_3`,type:`float`,inputs:[{name:`p`,type:`vec4`}]})]),DW=Hz([U(([e])=>{let t=G(sW(W(e).toVar())).toVar();return J(bW(SW(t,G(0))),bW(SW(t,G(1))),bW(SW(t,G(2))))}).setLayout({name:`mx_cell_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=q(e).toVar(),n=G(sW(t.x)).toVar(),r=G(sW(t.y)).toVar();return J(bW(SW(n,r,G(0))),bW(SW(n,r,G(1))),bW(SW(n,r,G(2))))}).setLayout({name:`mx_cell_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar(),n=G(sW(t.x)).toVar(),r=G(sW(t.y)).toVar(),i=G(sW(t.z)).toVar();return J(bW(SW(n,r,i,G(0))),bW(SW(n,r,i,G(1))),bW(SW(n,r,i,G(2))))}).setLayout({name:`mx_cell_noise_vec3_2`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=yE(e).toVar(),n=G(sW(t.x)).toVar(),r=G(sW(t.y)).toVar(),i=G(sW(t.z)).toVar(),a=G(sW(t.w)).toVar();return J(bW(SW(n,r,i,a,G(0))),bW(SW(n,r,i,a,G(1))),bW(SW(n,r,i,a,G(2))))}).setLayout({name:`mx_cell_noise_vec3_3`,type:`vec3`,inputs:[{name:`p`,type:`vec4`}]})]),OW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar(),c=W(0).toVar(),l=W(1).toVar();return SP(o,()=>{c.addAssign(l.mul(wW(s))),l.mulAssign(i),s.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`}]}),kW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar(),c=J(0).toVar(),l=W(1).toVar();return SP(o,()=>{c.addAssign(l.mul(TW(s))),l.mulAssign(i),s.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`}]}),AW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar();return q(OW(s,o,a,i),OW(s.add(J(G(19),G(193),G(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`}]}),jW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar();return yE(J(kW(s,o,a,i)).toVar(),W(OW(s.add(J(G(19),G(193),G(17))),o,a,i)).toVar())}).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`}]}),MW=Hz([U(([e,t,n,r,i,a,o])=>{let s=G(o).toVar(),c=W(a).toVar(),l=G(i).toVar(),u=G(r).toVar(),d=G(n).toVar(),f=G(t).toVar(),p=q(e).toVar(),m=J(DW(q(f.add(u),d.add(l)))).toVar(),h=q(m.x,m.y).toVar();h.subAssign(.5),h.mulAssign(c),h.addAssign(.5);let g=q(q(q(W(f),W(d)).add(h)).toVar().sub(p)).toVar();return cE(s.equal(G(2)),()=>AO(g.x).add(AO(g.y))),cE(s.equal(G(3)),()=>GO(AO(g.x),AO(g.y))),XO(g,g)}).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`}]}),U(([e,t,n,r,i,a,o,s,c])=>{let l=G(c).toVar(),u=W(s).toVar(),d=G(o).toVar(),f=G(a).toVar(),p=G(i).toVar(),m=G(r).toVar(),h=G(n).toVar(),g=G(t).toVar(),_=J(e).toVar(),v=J(DW(J(g.add(p),h.add(f),m.add(d)))).toVar();v.subAssign(.5),v.mulAssign(u),v.addAssign(.5);let y=J(J(J(W(g),W(h),W(m)).add(v)).toVar().sub(_)).toVar();return cE(l.equal(G(2)),()=>AO(y.x).add(AO(y.y)).add(AO(y.z))),cE(l.equal(G(3)),()=>GO(AO(y.x),AO(y.y),AO(y.z))),XO(y,y)}).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`}]})]),NW=U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=q(e).toVar(),o=G().toVar(),s=G().toVar(),c=q(cW(a.x,o),cW(a.y,s)).toVar(),l=W(1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{let n=W(MW(c,e,t,o,s,i,r)).toVar();l.assign(WO(l,n))})}),cE(r.equal(G(0)),()=>{l.assign(fO(l))}),l}).setLayout({name:`mx_worley_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),PW=U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=q(e).toVar(),o=G().toVar(),s=G().toVar(),c=q(cW(a.x,o),cW(a.y,s)).toVar(),l=q(1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{let n=W(MW(c,e,t,o,s,i,r)).toVar();cE(n.lessThan(l.x),()=>{l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.y.assign(n)})})}),cE(r.equal(G(0)),()=>{l.assign(fO(l))}),l}).setLayout({name:`mx_worley_noise_vec2_0`,type:`vec2`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),FW=U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=q(e).toVar(),o=G().toVar(),s=G().toVar(),c=q(cW(a.x,o),cW(a.y,s)).toVar(),l=J(1e6,1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{let n=W(MW(c,e,t,o,s,i,r)).toVar();cE(n.lessThan(l.x),()=>{l.z.assign(l.y),l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.z.assign(l.y),l.y.assign(n)}).ElseIf(n.lessThan(l.z),()=>{l.z.assign(n)})})}),cE(r.equal(G(0)),()=>{l.assign(fO(l))}),l}).setLayout({name:`mx_worley_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),IW=Hz([NW,U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=J(e).toVar(),o=G().toVar(),s=G().toVar(),c=G().toVar(),l=J(cW(a.x,o),cW(a.y,s),cW(a.z,c)).toVar(),u=W(1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{SP({start:-1,end:G(1),name:`z`,condition:`<=`},({z:n})=>{let a=W(MW(l,e,t,n,o,s,c,i,r)).toVar();u.assign(WO(u,a))})})}),cE(r.equal(G(0)),()=>{u.assign(fO(u))}),u}).setLayout({name:`mx_worley_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),LW=Hz([PW,U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=J(e).toVar(),o=G().toVar(),s=G().toVar(),c=G().toVar(),l=J(cW(a.x,o),cW(a.y,s),cW(a.z,c)).toVar(),u=q(1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{SP({start:-1,end:G(1),name:`z`,condition:`<=`},({z:n})=>{let a=W(MW(l,e,t,n,o,s,c,i,r)).toVar();cE(a.lessThan(u.x),()=>{u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.y.assign(a)})})})}),cE(r.equal(G(0)),()=>{u.assign(fO(u))}),u}).setLayout({name:`mx_worley_noise_vec2_1`,type:`vec2`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),RW=Hz([FW,U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=J(e).toVar(),o=G().toVar(),s=G().toVar(),c=G().toVar(),l=J(cW(a.x,o),cW(a.y,s),cW(a.z,c)).toVar(),u=J(1e6,1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{SP({start:-1,end:G(1),name:`z`,condition:`<=`},({z:n})=>{let a=W(MW(l,e,t,n,o,s,c,i,r)).toVar();cE(a.lessThan(u.x),()=>{u.z.assign(u.y),u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.z.assign(u.y),u.y.assign(a)}).ElseIf(a.lessThan(u.z),()=>{u.z.assign(a)})})})}),cE(r.equal(G(0)),()=>{u.assign(fO(u))}),u}).setLayout({name:`mx_worley_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),zW=U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=G(e).toVar(),f=q(t).toVar(),p=q(n).toVar(),m=q(r).toVar(),h=W(i).toVar(),g=W(a).toVar(),_=W(o).toVar(),v=fE(s).toVar(),y=G(c).toVar(),b=W(l).toVar(),x=W(u).toVar(),S=f.mul(p).add(m),C=W(0).toVar();return cE(d.equal(G(0)),()=>{C.assign(TW(S))}),cE(d.equal(G(1)),()=>{C.assign(DW(S))}),cE(d.equal(G(2)),()=>{C.assign(RW(S,h,G(0)))}),cE(d.equal(G(3)),()=>{C.assign(kW(J(S,0),y,b,x))}),C.assign(C.mul(_.sub(g)).add(g)),cE(v,()=>{C.assign(ok(C,g,_))}),C}).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`}]}),BW=U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=G(e).toVar(),f=J(t).toVar(),p=J(n).toVar(),m=J(r).toVar(),h=W(i).toVar(),g=W(a).toVar(),_=W(o).toVar(),v=fE(s).toVar(),y=G(c).toVar(),b=W(l).toVar(),x=W(u).toVar(),S=f.mul(p).add(m),C=W(0).toVar();return cE(d.equal(G(0)),()=>{C.assign(TW(S))}),cE(d.equal(G(1)),()=>{C.assign(DW(S))}),cE(d.equal(G(2)),()=>{C.assign(RW(S,h,G(0)))}),cE(d.equal(G(3)),()=>{C.assign(kW(S,y,b,x))}),C.assign(C.mul(_.sub(g)).add(g)),cE(v,()=>{C.assign(ok(C,g,_))}),C}).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`}]}),VW=U(([e])=>{let t=e.y,n=e.z,r=J().toVar();return cE(t.lessThan(1e-4),()=>{r.assign(J(n,n,n))}).Else(()=>{let i=e.x;i=i.sub(mO(i)).mul(6).toVar();let a=G(zO(i)),o=i.sub(W(a)),s=n.mul(t.oneMinus()),c=n.mul(t.mul(o).oneMinus()),l=n.mul(t.mul(o.oneMinus()).oneMinus());cE(a.equal(G(0)),()=>{r.assign(J(n,l,s))}).ElseIf(a.equal(G(1)),()=>{r.assign(J(c,n,s))}).ElseIf(a.equal(G(2)),()=>{r.assign(J(s,n,l))}).ElseIf(a.equal(G(3)),()=>{r.assign(J(s,c,n))}).ElseIf(a.equal(G(4)),()=>{r.assign(J(l,s,n))}).Else(()=>{r.assign(J(n,s,c))})}),r}).setLayout({name:`mx_hsvtorgb`,type:`vec3`,inputs:[{name:`hsv`,type:`vec3`}]}),HW=U(([e])=>{let t=J(e).toVar(),n=W(t.x).toVar(),r=W(t.y).toVar(),i=W(t.z).toVar(),a=W(WO(n,WO(r,i))).toVar(),o=W(GO(n,GO(r,i))).toVar(),s=W(o.sub(a)).toVar(),c=W().toVar(),l=W().toVar(),u=W().toVar();return u.assign(o),cE(o.greaterThan(0),()=>{l.assign(s.div(o))}).Else(()=>{l.assign(0)}),cE(l.lessThanEqual(0),()=>{c.assign(0)}).Else(()=>{cE(n.greaterThanEqual(o),()=>{c.assign(r.sub(i).div(s))}).ElseIf(r.greaterThanEqual(o),()=>{c.assign(ED(2,i.sub(n).div(s)))}).Else(()=>{c.assign(ED(4,n.sub(r).div(s)))}),c.mulAssign(1/6),cE(c.lessThan(0),()=>{c.addAssign(1)})}),J(c,l,u)}).setLayout({name:`mx_rgbtohsv`,type:`vec3`,inputs:[{name:`c`,type:`vec3`}]}),UW=U(([e])=>{let t=J(e).toVar(),n=vE(PD(t,J(.04045))).toVar();return ak(J(t.div(12.92)).toVar(),J(QO(GO(t.add(J(.055)),J(0)).div(1.055),J(2.4))).toVar(),n)}).setLayout({name:`mx_srgb_texture_to_lin_rec709`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),WW=(e,t)=>{e=W(e),t=W(t);let n=q(t.dFdx(),t.dFdy()).length().mul(.7071067811865476);return lk(e.sub(n),e.add(n),t)},GW=(e,t,n,r)=>ak(e,t,n[r].clamp()),KW=(e,t,n=PA())=>GW(e,t,n,`x`),qW=(e,t,n=PA())=>GW(e,t,n,`y`),JW=(e,t,n,r,i=PA())=>{let a=i.x.clamp(),o=i.y.clamp();return ak(ak(e,t,a),ak(n,r,a),o)},YW=(e,t,n,r,i)=>ak(e,t,WW(n,r[i])),XW=(e,t,n,r=PA())=>YW(e,t,n,r,`x`),ZW=(e,t,n,r=PA())=>YW(e,t,n,r,`y`),QW=(e=1,t=0,n=PA())=>n.mul(e).add(t),$W=(e,t=1)=>(e=W(e),e.abs().pow(t).mul(e.sign())),eG=(e,t=1,n=.5)=>W(e).sub(n).mul(t).add(n),tG=(e=PA(),t=1,n=0)=>wW(e.convert(`vec2|vec3`)).mul(t).add(n),nG=(e=PA(),t=1,n=0)=>TW(e.convert(`vec2|vec3`)).mul(t).add(n),rG=(e=PA(),t=1,n=0)=>(e=e.convert(`vec2|vec3`),yE(TW(e),wW(e.add(q(19,73)))).mul(t).add(n)),iG=(e,t=PA(),n=q(1,1),r=q(0,0),i=1,a=0,o=1,s=!1,c=1,l=2,u=.5)=>zW(e,t.convert(`vec2|vec3`),n,r,i,a,o,s,c,l,u),aG=(e,t=PA(),n=q(1,1),r=q(0,0),i=1,a=0,o=1,s=!1,c=1,l=2,u=.5)=>BW(e,t.convert(`vec2|vec3`),n,r,i,a,o,s,c,l,u),oG=(e=PA(),t=1)=>IW(e.convert(`vec2|vec3`),t,G(1)),sG=(e=PA(),t=1)=>LW(e.convert(`vec2|vec3`),t,G(1)),cG=(e=PA(),t=1)=>RW(e.convert(`vec2|vec3`),t,G(1)),lG=(e=PA())=>EW(e.convert(`vec2|vec3`)),uG=(e=PA(),t=3,n=2,r=.5,i=1)=>OW(e,G(t),n,r).mul(i),dG=(e=PA(),t=3,n=2,r=.5,i=1)=>AW(e,G(t),n,r).mul(i),fG=(e=PA(),t=3,n=2,r=.5,i=1)=>kW(e,G(t),n,r).mul(i),pG=(e=PA(),t=3,n=2,r=.5,i=1)=>jW(e,G(t),n,r).mul(i),mG=(e,t=W(0))=>ED(e,t),hG=(e,t=W(0))=>DD(e,t),gG=(e,t=W(1))=>OD(e,t),_G=(e,t=W(1))=>kD(e,t),vG=(e,t=W(1))=>AD(e,t),yG=(e,t=W(1))=>QO(e,t),bG=(e=W(0),t=W(1))=>OO(e,t),xG=()=>Uz,SG=()=>Gz,CG=(e,t=W(1))=>DD(t,e),wG=(e,t,n,r)=>e.greaterThan(t).mix(n,r),TG=(e,t,n,r)=>e.greaterThanEqual(t).mix(n,r),EG=(e,t,n,r)=>e.equal(t).mix(n,r),DG=(e,t=null)=>{if(typeof t==`string`){let n={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3},r=t.replace(/^out/,``).toLowerCase();if(n[r]!==void 0)return e.element(n[r])}if(typeof t==`number`)return e.element(t);if(typeof t==`string`&&t.length===1){let n={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3};if(n[t]!==void 0)return e.element(n[t])}return e},OG=(e,t=q(.5,.5),n=q(1,1),r=W(0),i=q(0,0))=>{let a=e;if(t&&(a=a.sub(t)),n&&(a=a.mul(n)),r){let e=r.mul(Math.PI/180),t=e.cos(),n=e.sin();a=q(a.x.mul(t).sub(a.y.mul(n)),a.x.mul(n).add(a.y.mul(t)))}return t&&(a=a.add(t)),i&&(a=a.add(i)),a},kG=(e,t)=>{e=q(e),t=W(t);let n=t.mul(Math.PI/180);return oR(e,n)},AG=(e,t,n)=>{e=J(e),t=W(t),n=J(n);let r=t.mul(Math.PI/180),i=n.normalize(),a=r.cos(),o=r.sin(),s=W(1).sub(a);return e.mul(a).add(i.cross(e).mul(o)).add(i.mul(i.dot(e)).mul(s))},jG=(e,t)=>(e=J(e),t=W(t),CN(e,t)),MG=U(([e,t,n])=>{let r=gO(e).toVar(),i=DD(W(.5).mul(t.sub(n)),oM).div(r).toVar(),a=DD(W(-.5).mul(t.sub(n)),oM).div(r).toVar(),o=J().toVar();o.x=r.x.greaterThan(W(0)).select(i.x,a.x),o.y=r.y.greaterThan(W(0)).select(i.y,a.y),o.z=r.z.greaterThan(W(0)).select(i.z,a.z);let s=WO(o.x,o.y,o.z).toVar();return oM.add(r.mul(s)).toVar().sub(n)}),NG=U(([e,t])=>{let n=e.x,r=e.y,i=e.z,a=t.element(0).mul(.886227);return a=a.add(t.element(1).mul(2*.511664).mul(r)),a=a.add(t.element(2).mul(2*.511664).mul(i)),a=a.add(t.element(3).mul(2*.511664).mul(n)),a=a.add(t.element(4).mul(2*.429043).mul(n).mul(r)),a=a.add(t.element(5).mul(2*.429043).mul(r).mul(i)),a=a.add(t.element(6).mul(i.mul(i).mul(.743125).sub(.247708))),a=a.add(t.element(7).mul(2*.429043).mul(n).mul(i)),a=a.add(t.element(8).mul(.429043).mul(OD(n,n).sub(OD(r,r)))),a}),Q=Object.freeze({__proto__:null,BRDF_GGX:nI,BRDF_Lambert:BF,BasicPointShadowFilter:JU,BasicShadowFilter:wU,Break:wP,Const:Ok,Continue:CP,DFGLUT:aI,D_GGX:$F,Discard:SA,EPSILON:QD,F_Schlick:zF,Fn:U,HALF_PI:rO,INFINITY:$D,If:cE,Loop:SP,NodeAccess:eT,NodeShaderStage:Zw,NodeType:$w,NodeUpdateType:Qw,OnBeforeFrameUpdate:HB,OnBeforeMaterialUpdate:VB,OnBeforeObjectUpdate:BB,OnFrameUpdate:zB,OnMaterialUpdate:RB,OnObjectUpdate:LB,PCFShadowFilter:TU,PCFSoftShadowFilter:EU,PI:eO,PI2:tO,PointShadowFilter:YU,Return:CA,Schlick_to_F0:cI,ShaderNode:$T,Stack:uE,Switch:lE,TBNViewMatrix:pN,TWO_PI:nO,VSMShadowFilter:DU,V_GGX_SmithCorrelated:ZF,Var:Dk,VarIntent:kk,abs:AO,acesFilmicToneMapping:NV,acos:EO,acosh:DO,add:ED,addMethodChaining:z,addNodeElement:jA,agxToneMapping:LV,all:iO,alphaT:qE,and:LD,anisotropy:JE,anisotropyB:XE,anisotropyT:YE,any:aO,append:jE,array:bD,arrayBuffer:DE,asin:wO,asinh:TO,assign:xD,atan:OO,atanh:kO,atomicAdd:xH,atomicAnd:TH,atomicFunc:vH,atomicLoad:yH,atomicMax:CH,atomicMin:wH,atomicOr:EH,atomicStore:bH,atomicSub:SH,atomicXor:DH,attenuationColor:lD,attenuationDistance:cD,attribute:NA,attributeArray:GB,backgroundBlurriness:YB,backgroundIntensity:XB,backgroundRotation:ZB,batch:gP,bentNormalView:gN,billboarding:$z,bitAnd:VD,bitNot:HD,bitOr:UD,bitXor:WD,bitangentGeometry:lN,bitangentLocal:uN,bitangentView:dN,bitangentWorld:fN,bitcast:hz,blendBurn:dF,blendColor:hF,blendDodge:fF,blendOverlay:mF,blendScreen:pF,blur:lL,bool:fE,buffer:JA,bufferAttribute:eA,builtin:QA,builtinAOContext:Ck,builtinShadowContext:Sk,bumpMap:CN,bvec2:hE,bvec3:vE,bvec4:SE,bypass:_A,cache:gA,call:CD,cameraFar:Dj,cameraIndex:Tj,cameraNear:Ej,cameraNormalMatrix:Mj,cameraPosition:Nj,cameraProjectionMatrix:Oj,cameraProjectionMatrixInverse:kj,cameraViewMatrix:Aj,cameraViewport:Pj,cameraWorldMatrix:jj,cbrt:rk,cdl:gV,ceil:hO,checker:rW,cineonToneMapping:jV,clamp:ok,clearcoat:BE,clearcoatNormalView:bM,clearcoatRoughness:VE,clipSpace:nM,code:BV,color:dE,colorSpaceToWorking:Bk,colorToDirection:vN,compute:pA,computeKernel:fA,computeSkinning:bP,context:yk,convert:kE,convertColorSpace:Vk,convertToTexture:DB,cos:bO,cosh:xO,countLeadingZeros:Cz,countOneBits:wz,countTrailingZeros:Sz,cross:ZO,cubeTexture:IM,cubeTextureBase:FM,dFdx:FO,dFdy:IO,dashSize:nD,debug:DA,decrement:XD,decrementBefore:JD,defaultBuildStages:nT,defaultShaderStages:tT,defined:ZT,degrees:sO,deltaTime:Wz,densityFogFactor:XV,depth:QP,depthPass:EV,determinant:HO,difference:YO,diffuseColor:FE,diffuseContribution:IE,directPointLight:tW,directionToColor:_N,directionToFaceDirection:fM,dispersion:uD,disposeShadowMaterial:kU,distance:JO,div:kD,dot:XO,drawIndex:uA,dynamicBufferAttribute:tA,element:OE,emissive:LE,equal:jD,equirectUV:TF,exp:cO,exp2:lO,exponentialHeightFogFactor:ZV,expression:xA,faceDirection:dM,faceForward:uk,faceforward:hk,float:W,floatBitsToInt:gz,floatBitsToUint:_z,floor:mO,fog:QV,fract:_O,frameGroup:mD,frameId:Gz,frontFacing:uM,fwidth:BO,gain:Dz,gapSize:rD,getConstNodeType:QT,getCurrentStack:sE,getDirection:aL,getDistanceAttenuation:eW,getGeometryRoughness:YF,getNormalFromDepth:AB,getParallaxCorrectNormal:MG,getRoughness:XF,getScreenPosition:kB,getShIrradianceAt:NG,getShadowMaterial:OU,getShadowRenderObjectFunction:MU,getTextureIndex:fz,getViewPosition:OB,ggxConvolution:pL,globalId:oH,glsl:UV,glslFn:KV,grayscale:dV,greaterThan:PD,greaterThanEqual:ID,hash:Tz,highpModelNormalViewMatrix:tM,highpModelViewMatrix:eM,hue:mV,increment:YD,incrementBefore:qD,inspector:AA,instance:mP,instanceIndex:oA,instancedArray:KB,instancedBufferAttribute:nA,instancedDynamicBufferAttribute:rA,instancedMesh:hP,int:G,intBitsToFloat:vz,interleavedGradientNoise:jB,inverse:UO,inverseSqrt:pO,inversesqrt:gk,invocationLocalIndex:lA,invocationSubgroupIndex:cA,ior:aD,iridescence:WE,iridescenceIOR:GE,iridescenceThickness:KE,isolate:hA,ivec2:pE,ivec3:gE,ivec4:bE,js:VV,label:wk,length:MO,lengthSq:ik,lessThan:ND,lessThanEqual:FD,lightPosition:rU,lightProjectionUV:nU,lightShadowMatrix:tU,lightTargetDirection:oU,lightTargetPosition:iU,lightViewPosition:aU,lightingContext:MP,lights:fU,linearDepth:$P,linearToneMapping:kV,localId:sH,log:uO,log2:dO,logarithmicDepthToViewZ:XP,luminance:hV,mat2:CE,mat3:wE,mat4:TE,matcapUV:rR,materialAO:sP,materialAlphaTest:TN,materialAnisotropy:WN,materialAnisotropyVector:cP,materialAttenuationColor:QN,materialAttenuationDistance:ZN,materialClearcoat:RN,materialClearcoatNormal:BN,materialClearcoatRoughness:zN,materialColor:EN,materialDispersion:aP,materialEmissive:ON,materialEnvIntensity:OM,materialEnvRotation:kM,materialIOR:XN,materialIridescence:GN,materialIridescenceIOR:KN,materialIridescenceThickness:qN,materialLightMap:oP,materialLineDashOffset:rP,materialLineDashSize:eP,materialLineGapSize:tP,materialLineScale:$N,materialLineWidth:nP,materialMetalness:IN,materialNormal:LN,materialOpacity:kN,materialPointSize:iP,materialReference:UM,materialReflectivity:PN,materialRefractionRatio:DM,materialRotation:VN,materialRoughness:FN,materialSheen:HN,materialSheenRoughness:UN,materialShininess:DN,materialSpecular:AN,materialSpecularColor:MN,materialSpecularIntensity:jN,materialSpecularStrength:NN,materialThickness:YN,materialTransmission:JN,max:GO,maxMipLevel:IA,mediumpModelViewMatrix:$j,metalness:zE,min:WO,mix:ak,mixElement:fk,mod:AD,modInt:ZD,modelDirection:Wj,modelNormalMatrix:Xj,modelPosition:Kj,modelRadius:Yj,modelScale:qj,modelViewMatrix:Qj,modelViewPosition:Jj,modelViewProjection:lP,modelWorldMatrix:Gj,modelWorldMatrixInverse:Zj,morphReference:kP,mrt:pz,mul:OD,mx_aastep:WW,mx_add:mG,mx_atan2:bG,mx_cell_noise_float:lG,mx_contrast:eG,mx_divide:_G,mx_fractal_noise_float:uG,mx_fractal_noise_vec2:dG,mx_fractal_noise_vec3:fG,mx_fractal_noise_vec4:pG,mx_frame:SG,mx_heighttonormal:jG,mx_hsvtorgb:VW,mx_ifequal:EG,mx_ifgreater:wG,mx_ifgreatereq:TG,mx_invert:CG,mx_modulo:vG,mx_multiply:gG,mx_noise_float:tG,mx_noise_vec3:nG,mx_noise_vec4:rG,mx_place2d:OG,mx_power:yG,mx_ramp4:JW,mx_ramplr:KW,mx_ramptb:qW,mx_rgbtohsv:HW,mx_rotate2d:kG,mx_rotate3d:AG,mx_safepower:$W,mx_separate:DG,mx_splitlr:XW,mx_splittb:ZW,mx_srgb_texture_to_lin_rec709:UW,mx_subtract:hG,mx_timer:xG,mx_transform_uv:QW,mx_unifiednoise2d:iG,mx_unifiednoise3d:aG,mx_worley_noise_float:oG,mx_worley_noise_vec2:sG,mx_worley_noise_vec3:cG,negate:NO,neutralToneMapping:RV,nodeArray:nE,nodeImmutable:V,nodeObject:B,nodeObjectIntent:eE,nodeObjects:tE,nodeProxy:rE,nodeProxyIntent:H,normalFlat:hM,normalGeometry:pM,normalLocal:mM,normalMap:bN,normalView:vM,normalViewGeometry:gM,normalWorld:yM,normalWorldGeometry:_M,normalize:gO,not:zD,notEqual:MD,numWorkgroups:iH,objectDirection:Lj,objectGroup:gD,objectPosition:zj,objectRadius:Hj,objectScale:Bj,objectViewPosition:Vj,objectWorldMatrix:Rj,oneMinus:PO,or:RD,orthographicDepthToViewZ:GP,oscSawtooth:Yz,oscSine:Kz,oscSquare:qz,oscTriangle:Jz,output:tD,outputStruct:cz,overloadingFn:Hz,packHalf2x16:Nz,packSnorm2x16:jz,packUnorm2x16:Mz,parabola:Ez,parallaxDirection:mN,parallaxUV:hN,parameter:tz,pass:wV,passTexture:TV,pcurve:Oz,perspectiveDepthToViewZ:JP,pmremTexture:WL,pointShadow:QU,pointUV:qB,pointWidth:iD,positionGeometry:rM,positionLocal:iM,positionPrevious:aM,positionView:cM,positionViewDirection:lM,positionWorld:oM,positionWorldDirection:sM,posterize:_V,pow:QO,pow2:$O,pow3:ek,pow4:tk,premultiplyAlpha:gF,property:NE,quadBroadcast:QH,quadSwapDiagonal:KH,quadSwapX:WH,quadSwapY:GH,radians:oO,rand:dk,range:tH,rangeFogFactor:YV,reciprocal:RO,reference:BM,referenceBuffer:VM,reflect:qO,reflectVector:MM,reflectView:AM,reflector:bB,refract:ck,refractVector:NM,refractView:jM,reinhardToneMapping:AV,remap:vA,remapClamp:yA,renderGroup:hD,renderOutput:TA,rendererReference:Kk,replaceDefaultUV:Xz,rotate:oR,rotateUV:Zz,roughness:RE,round:LO,rtt:EB,sRGBTransferEOTF:Pk,sRGBTransferOETF:Fk,sample:PB,sampler:GA,samplerComparison:KA,saturate:sk,saturation:fV,screenCoordinate:aj,screenDPR:nj,screenSize:ij,screenUV:rj,select:_k,setCurrentStack:oE,setName:xk,shaderStages:rT,shadow:zU,shadowPositionWorld:mU,shapeCircle:iW,sharedUniformGroup:pD,sheen:HE,sheenRoughness:UE,shiftLeft:GD,shiftRight:KD,shininess:eD,sign:jO,sin:vO,sinc:kz,sinh:yO,skinning:yP,smoothstep:lk,smoothstepElement:pk,specularColor:ZE,specularColorBlended:QE,specularF90:$E,spherizeUV:Qz,split:AE,spritesheetUV:tB,sqrt:fO,stack:nz,step:KO,stepElement:mk,storage:fP,storageBarrier:dH,storageTexture:QB,string:EE,struct:oz,sub:DD,subBuild:jk,subgroupAdd:AH,subgroupAll:VH,subgroupAnd:IH,subgroupAny:HH,subgroupBallot:kH,subgroupBroadcast:qH,subgroupBroadcastFirst:UH,subgroupElect:OH,subgroupExclusiveAdd:MH,subgroupExclusiveMul:FH,subgroupInclusiveAdd:jH,subgroupInclusiveMul:PH,subgroupIndex:sA,subgroupMax:BH,subgroupMin:zH,subgroupMul:NH,subgroupOr:LH,subgroupShuffle:JH,subgroupShuffleDown:ZH,subgroupShuffleUp:XH,subgroupShuffleXor:YH,subgroupSize:cH,subgroupXor:RH,tan:SO,tangentGeometry:iN,tangentLocal:aN,tangentView:oN,tangentWorld:sN,tanh:CO,texture:VA,texture3D:tV,texture3DLevel:rV,texture3DLoad:nV,textureBarrier:fH,textureBicubic:DI,textureBicubicLevel:EI,textureCubeUV:oL,textureLevel:WA,textureLoad:UA,textureSize:FA,textureStore:$B,thickness:sD,time:Uz,toneMapping:Jk,toneMappingExposure:Yk,toonOutlinePass:OV,transformDirection:nk,transformNormal:xM,transformNormalToView:SM,transformedClearcoatNormalView:TM,transformedNormalView:CM,transformedNormalWorld:wM,transmission:oD,transpose:VO,triNoise3D:Bz,triplanarTexture:rB,triplanarTextures:nB,trunc:zO,uint:K,uintBitsToFloat:yz,uniform:vD,uniformArray:ZA,uniformCubeTexture:LM,uniformFlow:bk,uniformGroup:fD,uniformTexture:HA,unpackHalf2x16:Lz,unpackNormal:yN,unpackSnorm2x16:Fz,unpackUnorm2x16:Iz,unpremultiplyAlpha:_F,userData:aV,uv:PA,uvec2:mE,uvec3:_E,uvec4:xE,varying:Mk,varyingProperty:PE,vec2:q,vec3:J,vec4:yE,vectorComponents:iT,velocity:uV,vertexColor:uF,vertexIndex:aA,vertexStage:Nk,vibrance:pV,viewZToLogarithmicDepth:YP,viewZToOrthographicDepth:UP,viewZToPerspectiveDepth:KP,viewZToReversedOrthographicDepth:WP,viewZToReversedPerspectiveDepth:qP,viewport:oj,viewportCoordinate:cj,viewportDepthTexture:VP,viewportLinearDepth:eF,viewportMipTexture:LP,viewportOpaqueMipTexture:zP,viewportResolution:uj,viewportSafeUV:eB,viewportSharedTexture:yV,viewportSize:sj,viewportTexture:IP,viewportUV:lj,vogelDiskSample:MB,wgsl:HV,wgslFn:qV,workgroupArray:hH,workgroupBarrier:uH,workgroupId:aH,workingToColorSpace:zk,xor:BD}),PG=new $R,FG=class extends CR{constructor(e,t){super(),this.renderer=e,this.nodes=t}update(e,t,n){let r=this.renderer,i=this.nodes.getBackgroundNode(e)||e.background,a=!1;if(i===null)r._clearColor.getRGB(PG),PG.a=r._clearColor.a;else if(i.isColor===!0)i.getRGB(PG),PG.a=1,a=!0;else if(i.isNode===!0){let n=this.get(e),a=i;PG.copy(r._clearColor);let o=n.backgroundMesh;if(o===void 0){let e=yE(a).mul(XB).context({getUV:()=>ZB.mul(_M),getTextureLevel:()=>YB}),t=Oj.element(3).element(3).equal(1),r=kD(1,Oj.element(1).element(1)).mul(3),s=t.select(iM.mul(r),iM),c=Qj.mul(yE(s,0)),l=Oj.mul(yE(c.xyz,1));l=l.setZ(l.w);let u=new vF;u.name=`Background.material`,u.side=1,u.depthTest=!1,u.depthWrite=!1,u.allowOverride=!1,u.fog=!1,u.lights=!1,u.vertexNode=l,u.colorNode=e,n.backgroundMeshNode=e,n.backgroundMesh=o=new bo(new Rl(1,32,32),u),o.frustumCulled=!1,o.name=`Background.mesh`;function d(){i.removeEventListener(`dispose`,d),o.material.dispose(),o.geometry.dispose()}i.addEventListener(`dispose`,d)}let s=a.getCacheKey();n.backgroundCacheKey!==s&&(n.backgroundMeshNode.node=yE(a).mul(XB),n.backgroundMeshNode.needsUpdate=!0,o.material.needsUpdate=!0,n.backgroundCacheKey=s),t.unshift(o,o.geometry,o.material,0,0,null,null)}else M(`Renderer: Unsupported background configuration.`,i);let o=r.xr.getEnvironmentBlendMode();if(o===`additive`?PG.set(0,0,0,1):o===`alpha-blend`&&PG.set(0,0,0,0),r.autoClear===!0||a===!0){let e=n.clearColorValue;e.r=PG.r,e.g=PG.g,e.b=PG.b,e.a=PG.a,(r.backend.isWebGLBackend===!0||r.alpha===!0)&&(e.r*=e.a,e.g*=e.a,e.b*=e.a),n.depthClearValue=r.getClearDepth(),n.stencilClearValue=r.getClearStencil(),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}},IG=0,LG=class{constructor(e=``,t=[]){this.name=e,this.bindings=t,this.id=IG++}},RG=class{constructor(e,t,n,r,i,a,o,s,c,l=[]){this.vertexShader=e,this.fragmentShader=t,this.computeShader=n,this.transforms=l,this.nodeAttributes=r,this.bindings=i,this.updateNodes=a,this.updateBeforeNodes=o,this.updateAfterNodes=s,this.observer=c,this.usedTimes=0}createBindings(){let e=[];for(let t of this.bindings)if(t.bindings[0].groupNode.shared!==!0){let n=new LG(t.name,[]);e.push(n);for(let e of t.bindings)n.bindings.push(e.clone())}else e.push(t);return e}},zG=class{constructor(e,t,n=null){this.isNodeAttribute=!0,this.name=e,this.type=t,this.node=n}},BG=class{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}},VG=class{constructor(e,t,n=!1,r=null){this.isNodeVar=!0,this.name=e,this.type=t,this.readOnly=n,this.count=r}},HG=class extends VG{constructor(e,t,n=null,r=null){super(e,t),this.needsInterpolation=!1,this.isNodeVarying=!0,this.interpolationType=n,this.interpolationSampling=r}},UG=class{constructor(e,t,n=``){this.name=e,this.type=t,this.code=n,Object.defineProperty(this,"isNodeCode",{value:!0})}},WG=0,GG=class{constructor(e=null){this.id=WG++,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)}},KG=class{constructor(e,t){this.name=e,this.members=t,this.output=!1}},qG=class{constructor(e,t){this.name=e,this.value=t,this.boundary=0,this.itemSize=0,this.offset=0,this.index=-1}setValue(e){this.value=e}getValue(){return this.value}},JG=class extends qG{constructor(e,t=0){super(e,t),this.isNumberUniform=!0,this.boundary=4,this.itemSize=1}},YG=class extends qG{constructor(e,t=new N){super(e,t),this.isVector2Uniform=!0,this.boundary=8,this.itemSize=2}},XG=class extends qG{constructor(e,t=new P){super(e,t),this.isVector3Uniform=!0,this.boundary=16,this.itemSize=3}},ZG=class extends qG{constructor(e,t=new Nr){super(e,t),this.isVector4Uniform=!0,this.boundary=16,this.itemSize=4}},QG=class extends qG{constructor(e,t=new I){super(e,t),this.isColorUniform=!0,this.boundary=16,this.itemSize=3}},$G=class extends qG{constructor(e,t=new If){super(e,t),this.isMatrix2Uniform=!0,this.boundary=8,this.itemSize=4}},eK=class extends qG{constructor(e,t=new _r){super(e,t),this.isMatrix3Uniform=!0,this.boundary=48,this.itemSize=12}},tK=class extends qG{constructor(e,t=new F){super(e,t),this.isMatrix4Uniform=!0,this.boundary=64,this.itemSize=16}},nK=class extends JG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},rK=class extends YG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},iK=class extends XG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},aK=class extends ZG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},oK=class extends QG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},sK=class extends $G{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},cK=class extends eK{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},lK=class extends tK{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},uK=0,dK=new WeakMap,fK=new WeakMap,pK=new Map([[Int8Array,`int`],[Int16Array,`int`],[Int32Array,`int`],[Uint8Array,`uint`],[Uint16Array,`uint`],[Uint32Array,`uint`],[Float32Array,`float`]]),mK=e=>/e/g.test(e)?String(e).replace(/\+/g,``):(e=Number(e),e+(e%1?``:`.0`)),hK=class{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=nz(),this.stacks=[],this.tab=` `,this.currentFunctionNode=null,this.context={material:this.material},this.cache=new GG,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:uK++})}isFlatShading(){return this.material.flatShading===!0||this.geometry.hasAttribute(`normal`)===!1}isOpaque(){let e=this.material;return e.transparent===!1&&e.blending===1&&e.alphaToCoverage===!1}createRenderTarget(e,t,n){return new Pr(e,t,n)}createCubeRenderTarget(e,t){return new EF(e,t)}includes(e){return this.nodes.includes(e)}getOutputStructName(){}_getBindGroup(e,t){let n=t[0].groupNode,r=n.shared;if(r)for(let e=1;e<t.length;e++)n!==t[e].groupNode&&(r=!1);let i;if(r){let n=``;for(let e of t)if(e.isNodeUniformsGroup){e.uniforms.sort((e,t)=>e.nodeUniform.node.id-t.nodeUniform.node.id);for(let t of e.uniforms)n+=t.nodeUniform.node.id}else n+=e.nodeUniform.id;let r=this.renderer._currentRenderContext||this.renderer,a=dK.get(r);a===void 0&&(a=new Map,dK.set(r,a));let o=Iw(n);i=a.get(o),i===void 0&&(i=new LG(e,t),a.set(o,i))}else i=new LG(e,t);return i}getBindGroupArray(e,t){let n=this.bindings[t],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){let t={},n=this.bindings;for(let e of rT)for(let r in n[e]){let i=n[e][r],a=t[r]||(t[r]=[]);for(let e of i)a.includes(e)===!1&&a.push(e)}e=[];for(let n in t){let r=t[n],i=this._getBindGroup(n,r);e.push(i)}this.bindGroups=e}return e}sortBindingGroups(){let e=this.getBindings();e.sort((e,t)=>e.bindings[0].groupNode.order-t.bindings[0].groupNode.order);for(let t=0;t<e.length;t++){let n=e[t];this.bindingsIndexes[n.name].group=t}}setHashNode(e,t){this.hashNodes[t]=e}addNode(e){this.nodes.includes(e)===!1&&(this.nodes.push(e),this.setHashNode(e,e.getHash(this)))}addSequentialNode(e){let t=e.getUpdateBeforeType(),n=e.getUpdateAfterType();(t!==Qw.NONE||n!==Qw.NONE)&&this.sequentialNodes.includes(e)===!1&&this.sequentialNodes.push(e)}buildUpdateNodes(){for(let e of this.nodes)e.getUpdateType()!==Qw.NONE&&this.updateNodes.push(e);for(let e of this.sequentialNodes){let t=e.getUpdateBeforeType(),n=e.getUpdateAfterType();t!==Qw.NONE&&this.updateBeforeNodes.push(e),n!==Qw.NONE&&this.updateAfterNodes.push(e)}}get currentNode(){return this.chaining[this.chaining.length-1]}isFilteredTexture(e){return e.magFilter===1006||e.magFilter===1007||e.magFilter===1005||e.magFilter===1008||e.minFilter===1006||e.minFilter===1007||e.minFilter===1005||e.minFilter===1008}getUniformBufferLimit(){return this.renderer.backend.capabilities.getUniformBufferLimit()}addChain(e){this.chaining.push(e)}removeChain(e){if(this.chaining.pop()!==e)throw Error(`NodeBuilder: Invalid node chaining!`)}getMethod(e){return e}getTernary(){return null}getNodeFromHash(e){return this.hashNodes[e]}addFlow(e,t){return this.flowNodes[e].push(t),t}setContext(e){this.context=e}getContext(){return this.context}addContext(e){let t=this.getContext();return this.setContext({...this.context,...e}),t}getSharedContext(){let e={...this.context};return delete e.material,delete e.getUV,delete e.getOutput,delete e.getTextureLevel,delete e.getAO,delete e.getShadow,e}setCache(e){this.cache=e}getCache(){return this.cache}getCacheFromNode(e,t=!0){let n=this.getDataFromNode(e);return n.cache===void 0&&(n.cache=new GG(t?this.getCache():null)),n.cache}isAvailable(){return!1}getVertexIndex(){j(`Abstract function.`)}getInstanceIndex(){j(`Abstract function.`)}getDrawIndex(){j(`Abstract function.`)}getFrontFacing(){j(`Abstract function.`)}getFragCoord(){j(`Abstract function.`)}isFlipY(){return!1}increaseUsage(e){let t=this.getDataFromNode(e);return t.usageCount=t.usageCount===void 0?1:t.usageCount+1,t.usageCount}generateTexture(){j(`Abstract function.`)}generateTextureLod(){j(`Abstract function.`)}generateArrayDeclaration(e,t){return this.getType(e)+`[ `+t+` ]`}generateArray(e,t,n=null){let r=this.generateArrayDeclaration(e,t)+`( `;for(let i=0;i<t;i++){let a=n?n[i]:null;a===null?r+=this.generateConst(e):r+=a.build(this,e),i<t-1&&(r+=`, `)}return r+=` )`,r}generateStruct(e,t,n=null){let r=[];for(let e of t){let{name:t,type:i}=e;n&&n[t]&&n[t].isNode?r.push(n[t].build(this,i)):r.push(this.generateConst(i))}return e+`( `+r.join(`, `)+` )`}generateConst(e,t=null){if(t===null&&(e===`float`||e===`int`||e===`uint`?t=0:e===`bool`?t=!1:e===`color`?t=new I:e===`vec2`||e===`uvec2`||e===`ivec2`?t=new N:e===`vec3`||e===`uvec3`||e===`ivec3`?t=new P:(e===`vec4`||e===`uvec4`||e===`ivec4`)&&(t=new Nr)),e===`float`)return mK(t);if(e===`int`)return`${Math.round(t)}`;if(e===`uint`)return t>=0?`${Math.round(t)}u`:`0u`;if(e===`bool`)return t?`true`:`false`;if(e===`color`)return`${this.getType(`vec3`)}( ${mK(t.r)}, ${mK(t.g)}, ${mK(t.b)} )`;let n=this.getTypeLength(e),r=this.getComponentType(e),i=e=>this.generateConst(r,e);if(n===2)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)} )`;if(n===3)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)} )`;if(n===4&&e!==`mat2`)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)}, ${i(t.w)} )`;if(n>=4&&t&&(t.isMatrix2||t.isMatrix3||t.isMatrix4))return`${this.getType(e)}( ${t.elements.map(i).join(`, `)} )`;if(n>4)return`${this.getType(e)}()`;throw 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){let n=this.attributes;for(let t of n)if(t.name===e)return t;let r=new zG(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){let t=e.type;if(e.isDataTexture){if(t===1013)return`int`;if(t===1014)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;let 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=Vw(e),r=t===`float`?``:t[0];return/mat2/.test(t)===!0&&(n=n.replace(`vec`,`mat`)),r+n}getTypeFromArray(e){return pK.get(e.constructor)}isInteger(e){return/int|uint|(i|u)vec/.test(e)}getTypeFromAttribute(e){let t=e;e.isInterleavedBufferAttribute&&(t=e.data);let n=t.array,r=e.itemSize,i=e.normalized,a;return!(e instanceof ha)&&i!==!0&&(a=this.getTypeFromArray(n)),this.getTypeFromLength(r,a)}getTypeLength(e){let t=this.getVectorType(e),n=/vec([2-4])/.exec(t);return n===null?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:Number(n[1])}getVectorFromMatrix(e){return e.replace(`mat`,`vec`)}changeComponentType(e,t){return this.getTypeFromLength(this.getTypeLength(e),t)}getIntegerType(e){let 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 Error(`NodeBuilder: Invalid active stack removal.`)}getActiveStack(){return this.activeStacks[this.activeStacks.length-1]}getBaseStack(){return this.activeStacks[0]}addStack(){this.stack=nz(this.stack);let e=sE();return this.stacks.push(e),oE(this.stack),this.stack}removeStack(){let e=this.stack;for(let t of e.nodes){let n=this.getDataFromNode(t);n.stack=e}return this.stack=e.parent,oE(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 i=r[t],a=r.any?r.any.subBuilds:null,o=this.getClosestSubBuild(a);return o&&(i.subBuildsCache===void 0&&(i.subBuildsCache={}),i=i.subBuildsCache[o]||(i.subBuildsCache[o]={}),i.subBuilds=a),i}getNodeProperties(e,t=`any`){let n=this.getDataFromNode(e,t);return n.properties||={outputNode:null}}getBufferAttributeFromNode(e,t){let n=this.getDataFromNode(e,`vertex`),r=n.bufferAttribute;return r===void 0&&(r=new zG(`nodeAttribute`+ this.uniforms.index++,t,e),this.bufferAttributes.push(r),n.bufferAttribute=r),r}getStructTypeNode(e,t=this.shaderStage){return this.types[t][e]||null}getStructTypeFromNode(e,t,n=null,r=this.shaderStage){let i=this.getDataFromNode(e,r,this.globalCache),a=i.structType;if(a===void 0){let o=this.structs.index++;n===null&&(n=`StructType`+o),a=new KG(n,t),this.structs[r].push(a),this.types[r][n]=e,i.structType=a}return a}getOutputStructTypeFromNode(e,t){let n=this.getStructTypeFromNode(e,t,`OutputType`,`fragment`);return n.output=!0,n}getUniformFromNode(e,t,n=this.shaderStage,r=null){let i=this.getDataFromNode(e,n,this.globalCache),a=i.uniform;if(a===void 0){let o=this.uniforms.index++;a=new BG(r||`nodeUniform`+o,t,e),this.uniforms[n].push(a),this.registerDeclaration(a),i.uniform=a}return a}getVarFromNode(e,t=null,n=e.getNodeType(this),r=this.shaderStage,i=!1){let a=this.getDataFromNode(e,r),o=this.getSubBuildProperty(`variable`,a.subBuilds),s=a[o];if(s===void 0){let c=i?`_const`:`_var`,l=this.vars[r]||(this.vars[r]=[]),u=this.vars[c]||(this.vars[c]=0);t===null&&(t=(i?`nodeConst`:`nodeVar`)+u,this.vars[c]++),o!==`variable`&&(t=this.getSubBuildProperty(t,a.subBuilds));let d=e.getArrayCount(this);s=new VG(t,n,i,d),i||l.push(s),this.registerDeclaration(s),a[o]=s}return s}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(let 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,i=null){let a=this.getDataFromNode(e,`any`),o=this.getSubBuildProperty(`varying`,a.subBuilds),s=a[o];if(s===void 0){let e=this.varyings,c=e.length;t===null&&(t=`nodeVarying`+c),o!==`varying`&&(t=this.getSubBuildProperty(t,a.subBuilds)),s=new HG(t,n,r,i),e.push(s),this.registerDeclaration(s),a[o]=s}return s}registerDeclaration(e){let t=this.shaderStage,n=this.declarations[t]||(this.declarations[t]={}),r=this.getPropertyName(e),i=1,a=r;for(;n[a]!==void 0;)a=r+`_`+ i++;i>1&&(e.name=a,j(`TSL: Declaration name '${r}' of '${e.type}' already in use. Renamed to '${a}'.`)),n[a]=e}getCodeFromNode(e,t,n=this.shaderStage){let r=this.getDataFromNode(e),i=r.code;if(i===void 0){let e=this.codes[n]||(this.codes[n]=[]),a=e.length;i=new UG(`nodeCode`+a,t),e.push(i),r.code=i}return i}addFlowCodeHierarchy(e,t){let{flowCodes:n,flowCodeBlock:r}=this.getDataFromNode(e),i=!0,a=t;for(;a;){if(r.get(a)===!0){i=!1;break}a=this.getDataFromNode(a).parentNodeBlock}if(i)for(let e of n)this.addLineFlowCode(e)}addLineFlowCodeBlock(e,t,n){let r=this.getDataFromNode(e),i=r.flowCodes||=[],a=r.flowCodeBlock||=new WeakMap;i.push(t),a.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+=`;
4132
+ `).removeFlowTab();e.addFlowTab()}},SP=(...e)=>new xP(nE(e,`int`)).toStack(),CP=()=>xA(`continue`).toStack(),wP=()=>xA(`break`).toStack(),TP=new WeakMap,EP=new Nr,DP=U(({bufferMap:e,influence:t,stride:n,width:r,depth:i,offset:a})=>{let o=G(aA).mul(n).add(a),s=o.div(r);return UA(e,pE(o.sub(s.mul(r)),s)).depth(i).xyz.mul(t)});function OP(e){let t=e.morphAttributes.position!==void 0,n=e.morphAttributes.normal!==void 0,r=e.morphAttributes.color!==void 0,i=e.morphAttributes.position||e.morphAttributes.normal||e.morphAttributes.color,a=i===void 0?0:i.length,o=TP.get(e);if(o===void 0||o.count!==a){o!==void 0&&o.texture.dispose();let i=e.morphAttributes.position||[],s=e.morphAttributes.normal||[],c=e.morphAttributes.color||[],l=0;t===!0&&(l=1),n===!0&&(l=2),r===!0&&(l=3);let u=e.attributes.position.count*l,d=1,f=4096;u>f&&(d=Math.ceil(u/f),u=f);let p=new Float32Array(u*d*4*a),m=new Ir(p,u,d,a);m.type=Pe,m.needsUpdate=!0;let h=l*4;for(let e=0;e<a;e++){let a=i[e],o=s[e],l=c[e],f=u*d*4*e;for(let e=0;e<a.count;e++){let i=e*h;t===!0&&(EP.fromBufferAttribute(a,e),p[f+i+0]=EP.x,p[f+i+1]=EP.y,p[f+i+2]=EP.z,p[f+i+3]=0),n===!0&&(EP.fromBufferAttribute(o,e),p[f+i+4]=EP.x,p[f+i+5]=EP.y,p[f+i+6]=EP.z,p[f+i+7]=0),r===!0&&(EP.fromBufferAttribute(l,e),p[f+i+8]=EP.x,p[f+i+9]=EP.y,p[f+i+10]=EP.z,p[f+i+11]=l.itemSize===4?EP.w:1)}}o={count:a,texture:m,stride:l,size:new N(u,d)},TP.set(e,o);function g(){m.dispose(),TP.delete(e),e.removeEventListener(`dispose`,g)}e.addEventListener(`dispose`,g)}return o}var kP=rE(class extends sT{static get type(){return`MorphNode`}constructor(e){super(`void`),this.mesh=e,this.morphBaseInfluence=vD(1),this.updateType=Qw.OBJECT}setup(e){let{geometry:t}=e,n=t.morphAttributes.position!==void 0,r=t.hasAttribute(`normal`)&&t.morphAttributes.normal!==void 0,i=t.morphAttributes.position||t.morphAttributes.normal||t.morphAttributes.color,a=i===void 0?0:i.length,{texture:o,stride:s,size:c}=OP(t);n===!0&&iM.mulAssign(this.morphBaseInfluence),r===!0&&mM.mulAssign(this.morphBaseInfluence);let l=G(c.width);SP(a,({i:e})=>{let t=W(0).toVar();this.mesh.count>1&&this.mesh.morphTexture!==null&&this.mesh.morphTexture!==void 0?t.assign(UA(this.mesh.morphTexture,pE(G(e).add(1),G(oA))).r):t.assign(BM(`morphTargetInfluences`,`float`).element(e).toVar()),cE(t.notEqual(0),()=>{n===!0&&iM.addAssign(DP({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:G(0)})),r===!0&&mM.addAssign(DP({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:G(1)}))})})}update(){let e=this.morphBaseInfluence;this.mesh.geometry.morphTargetsRelative?e.value=1:e.value=1-this.mesh.morphTargetInfluences.reduce((e,t)=>e+t,0)}}).setParameterLength(1),AP=class extends sT{static get type(){return`LightingNode`}constructor(){super(`vec3`),this.isLightingNode=!0}},jP=class extends AP{static get type(){return`AONode`}constructor(e=null){super(),this.aoNode=e}setup(e){e.context.ambientOcclusion.mulAssign(this.aoNode)}},MP=rE(class extends vk{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(){let{backdropNode:e,backdropAlphaNode:t}=this,n={directDiffuse:J().toVar(`directDiffuse`),directSpecular:J().toVar(`directSpecular`),indirectDiffuse:J().toVar(`indirectDiffuse`),indirectSpecular:J().toVar(`indirectSpecular`)};return{radiance:J().toVar(`radiance`),irradiance:J().toVar(`irradiance`),iblIrradiance:J().toVar(`iblIrradiance`),ambientOcclusion:W(1).toVar(`ambientOcclusion`),reflectedLight:n,backdrop:e,backdropAlpha:t}}setup(e){return this.value=this._value||=this.getContext(),this.value.lightingModel=this.lightingModel||e.context.lightingModel,super.setup(e)}}),NP=class extends AP{static get type(){return`IrradianceNode`}constructor(e){super(),this.node=e}setup(e){e.context.irradiance.addAssign(this.node)}},PP=new N,FP=class extends zA{static get type(){return`ViewportTextureNode`}constructor(e=rj,t=null,n=null){let r=null;n===null?(r=new Ks,r.minFilter=De,n=r):r=n,super(n,e,t),this.generateMipmaps=!1,this.defaultFramebuffer=r,this.isOutputTextureNode=!0,this.updateBeforeType=Qw.RENDER,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){let r=t.clone();n.set(e,r)}return n.get(e)}updateReference(e){let t=e.renderer,n=t.getRenderTarget(),r=t.getCanvasTarget(),i=n||r;return this.value=this.getTextureForReference(i),this.value}updateBefore(e){let t=e.renderer,n=t.getRenderTarget(),r=t.getCanvasTarget(),i=n||r;i===null?t.getDrawingBufferSize(PP):i.getDrawingBufferSize?i.getDrawingBufferSize(PP):PP.set(i.width,i.height);let a=this.getTextureForReference(i);(a.image.width!==PP.width||a.image.height!==PP.height)&&(a.image.width=PP.width,a.image.height=PP.height,a.needsUpdate=!0);let o=a.generateMipmaps;a.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(a),a.generateMipmaps=o}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}},IP=rE(FP).setParameterLength(0,3),LP=rE(FP,null,null,{generateMipmaps:!0}).setParameterLength(0,3),RP=LP(),zP=(e=rj,t=null)=>RP.sample(e,t),BP=null,VP=rE(class extends FP{static get type(){return`ViewportDepthTextureNode`}constructor(e=rj,t=null,n=null){n===null&&(BP===null&&(BP=new $s),n=BP),super(e,t,n)}}).setParameterLength(0,3),HP=class e extends sT{static get type(){return`ViewportDepthNode`}constructor(e,t=null){super(`float`),this.scope=e,this.valueNode=t,this.isViewportDepthNode=!0}generate(t){let{scope:n}=this;return n===e.DEPTH_BASE?t.getFragDepth():super.generate(t)}setup({camera:t}){let{scope:n}=this,r=this.valueNode,i=null;return n===e.DEPTH_BASE?r!==null&&(i=ZP().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?KP(cM.z,Ej,Dj):UP(cM.z,Ej,Dj):n===e.LINEAR_DEPTH&&(i=r===null?UP(cM.z,Ej,Dj):t.isPerspectiveCamera?UP(JP(r,Ej,Dj),Ej,Dj):r),i}};HP.DEPTH_BASE=`depthBase`,HP.DEPTH=`depth`,HP.LINEAR_DEPTH=`linearDepth`;var UP=(e,t,n)=>e.add(t).div(t.sub(n)),WP=(e,t,n)=>e.add(n).div(n.sub(t)),GP=U(([e,t,n],r)=>r.renderer.reversedDepthBuffer===!0?n.sub(t).mul(e).sub(n):t.sub(n).mul(e).sub(t)),KP=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),qP=(e,t,n)=>t.mul(e.add(n)).div(e.mul(t.sub(n))),JP=U(([e,t,n],r)=>r.renderer.reversedDepthBuffer===!0?t.mul(n).div(t.sub(n).mul(e).sub(t)):t.mul(n).div(n.sub(t).mul(e).sub(n))),YP=(e,t,n)=>{t=t.max(1e-6).toVar();let r=dO(e.negate().div(t)),i=dO(n.div(t));return r.div(i)},XP=(e,t,n)=>{let r=e.mul(uO(n.div(t)));return W(Math.E).pow(r).mul(t).negate()},ZP=rE(HP,HP.DEPTH_BASE),QP=V(HP,HP.DEPTH),$P=rE(HP,HP.LINEAR_DEPTH).setParameterLength(0,1),eF=$P(VP());QP.assign=e=>ZP(e);var tF=class e extends sT{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let{intersectionPlanes:n,unionPlanes:r}=t.clippingContext;return this.hardwareClipping=t.material.hardwareClipping,this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n,r):this.scope===e.HARDWARE?this.setupHardwareClipping(r,t):this.setupDefault(n,r)}setupAlphaToCoverage(e,t){return U(()=>{let n=W().toVar(`distanceToPlane`),r=W().toVar(`distanceToGradient`),i=W(1).toVar(`clipOpacity`),a=t.length;if(this.hardwareClipping===!1&&a>0){let e=ZA(t).setGroup(hD);SP(a,({i:t})=>{let a=e.element(t);n.assign(cM.dot(a.xyz).negate().add(a.w)),r.assign(n.fwidth().div(2)),i.mulAssign(lk(r.negate(),r,n))})}let o=e.length;if(o>0){let t=ZA(e).setGroup(hD),a=W(1).toVar(`intersectionClipOpacity`);SP(o,({i:e})=>{let i=t.element(e);n.assign(cM.dot(i.xyz).negate().add(i.w)),r.assign(n.fwidth().div(2)),a.mulAssign(lk(r.negate(),r,n).oneMinus())}),i.mulAssign(a.oneMinus())}FE.a.mulAssign(i),FE.a.equal(0).discard()})()}setupDefault(e,t){return U(()=>{let n=t.length;if(this.hardwareClipping===!1&&n>0){let e=ZA(t).setGroup(hD);SP(n,({i:t})=>{let n=e.element(t);cM.dot(n.xyz).greaterThan(n.w).discard()})}let r=e.length;if(r>0){let t=ZA(e).setGroup(hD),n=fE(!0).toVar(`clipped`);SP(r,({i:e})=>{let r=t.element(e);n.assign(cM.dot(r.xyz).greaterThan(r.w).and(n))}),n.discard()}})()}setupHardwareClipping(e,t){let n=e.length;return t.enableHardwareClipping(n),U(()=>{let r=ZA(e).setGroup(hD),i=QA(t.getClipDistance());SP(n,({i:e})=>{let t=r.element(e),n=cM.dot(t.xyz).sub(t.w).negate();i.element(e).assign(n)})})()}};tF.ALPHA_TO_COVERAGE=`alphaToCoverage`,tF.DEFAULT=`default`,tF.HARDWARE=`hardware`;var nF=()=>new tF,rF=()=>new tF(tF.ALPHA_TO_COVERAGE),iF=()=>new tF(tF.HARDWARE),aF=.05,oF=U(([e])=>_O(OD(1e4,vO(OD(17,e.x).add(OD(.1,e.y)))).mul(ED(.1,AO(vO(OD(13,e.y).add(e.x))))))),sF=U(([e])=>oF(q(oF(e.xy),e.z))),cF=U(([e])=>{let t=GO(MO(FO(e.xyz)),MO(IO(e.xyz))),n=W(1).div(W(aF).mul(t)).toVar(`pixScale`),r=q(lO(mO(dO(n))),lO(hO(dO(n)))),i=q(sF(mO(r.x.mul(e.xyz))),sF(mO(r.y.mul(e.xyz)))),a=_O(dO(n)),o=ED(OD(a.oneMinus(),i.x),OD(a,i.y)),s=WO(a,a.oneMinus()),c=J(o.mul(o).div(OD(2,s).mul(DD(1,s))),o.sub(OD(.5,s)).div(DD(1,s)),DD(1,DD(1,o).mul(DD(1,o)).div(OD(2,s).mul(DD(1,s)))));return ok(o.lessThan(s.oneMinus()).select(o.lessThan(s).select(c.x,c.y),c.z),1e-6,1)}).setLayout({name:`getAlphaHashThreshold`,type:`float`,inputs:[{name:`position`,type:`vec3`}]}),lF=class extends MA{static get type(){return`VertexColorNode`}constructor(e){super(null,`vec4`),this.isVertexColorNode=!0,this.index=e}getAttributeName(){let e=this.index;return`color`+(e>0?e:``)}generate(e){let t=this.getAttributeName(e),n=e.hasGeometryAttribute(t),r;return r=n===!0?super.generate(e):e.generateConst(this.nodeType,new Nr(1,1,1,1)),r}serialize(e){super.serialize(e),e.index=this.index}deserialize(e){super.deserialize(e),this.index=e.index}},uF=(e=0)=>new lF(e),dF=U(([e,t])=>WO(1,e.oneMinus().div(t)).oneMinus()).setLayout({name:`blendBurn`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),fF=U(([e,t])=>WO(e.div(t.oneMinus()),1)).setLayout({name:`blendDodge`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),pF=U(([e,t])=>e.oneMinus().mul(t.oneMinus()).oneMinus()).setLayout({name:`blendScreen`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),mF=U(([e,t])=>ak(e.mul(2).mul(t),e.oneMinus().mul(2).mul(t.oneMinus()).oneMinus(),KO(.5,e))).setLayout({name:`blendOverlay`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),hF=U(([e,t])=>{let n=t.a.add(e.a.mul(t.a.oneMinus()));return yE(t.rgb.mul(t.a).add(e.rgb.mul(e.a).mul(t.a.oneMinus())).div(n),n)}).setLayout({name:`blendColor`,type:`vec4`,inputs:[{name:`base`,type:`vec4`},{name:`blend`,type:`vec4`}]}),gF=U(([e])=>yE(e.rgb.mul(e.a),e.a),{color:`vec4`,return:`vec4`}),_F=U(([e])=>(cE(e.a.equal(0),()=>yE(0)),yE(e.rgb.div(e.a),e.a)),{color:`vec4`,return:`vec4`}),vF=class extends Na{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.maskShadowNode=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}_getNodeChildren(){let e=[];for(let t of Object.getOwnPropertyNames(this)){if(t.startsWith(`_`)===!0)continue;let n=this[t];n&&n.isNode===!0&&e.push({property:t,childNode:n})}return e}customProgramCacheKey(){let e=[];for(let{property:t,childNode:n}of this._getNodeChildren())e.push(Iw(t.slice(0,-4)),n.getCacheKey());return this.type+Lw(e)}build(e){this.setup(e)}setupObserver(e){return new jw(e)}setup(e){e.context.setupNormal=()=>jk(this.setupNormal(e),`NORMAL`,`vec3`),e.context.setupPositionView=()=>this.setupPositionView(e),e.context.setupModelViewProjection=()=>this.setupModelViewProjection(e);let t=e.renderer,n=t.getRenderTarget();e.addStack();let r=this.setupVertex(e),i=jk(this.vertexNode||r,`VERTEX`);e.context.clipSpace=i,e.stack.outputNode=i,this.setupHardwareClipping(e),this.geometryNode!==null&&(e.stack.outputNode=e.stack.outputNode.bypass(this.geometryNode)),e.addFlow(`vertex`,e.removeStack()),e.addStack();let a,o=this.setupClipping(e);if((this.depthWrite===!0||this.depthTest===!0)&&(n===null?t.depth===!0&&this.setupDepth(e):n.depthBuffer===!0&&this.setupDepth(e)),this.fragmentNode===null){this.setupDiffuseColor(e),this.setupVariants(e);let r=this.setupLighting(e);o!==null&&e.stack.addToStack(o);let i=yE(r,FE.a).max(0);a=this.setupOutput(e,i),tD.assign(a);let s=this.outputNode!==null;if(s&&(a=this.outputNode),e.context.getOutput&&(a=e.context.getOutput(a,e)),n!==null){let e=t.getMRT(),n=this.mrtNode;e===null?n!==null&&(a=n):(s&&tD.assign(a),a=e,n!==null&&(a=e.merge(n)))}}else{let t=this.fragmentNode;t.isOutputStructNode!==!0&&(t=yE(t)),a=this.setupOutput(e,t)}e.stack.outputNode=a,e.addFlow(`fragment`,e.removeStack()),e.observer=this.setupObserver(e)}setupClipping(e){if(e.clippingContext===null)return null;let{unionPlanes:t,intersectionPlanes:n}=e.clippingContext,r=null;if(t.length>0||n.length>0){let t=e.renderer.currentSamples;this.alphaToCoverage&&t>1?r=rF():e.stack.addToStack(nF())}return r}setupHardwareClipping(e){if(this.hardwareClipping=!1,e.clippingContext===null)return;let t=e.clippingContext.unionPlanes.length;t>0&&t<=8&&e.isAvailable(`clipDistance`)&&(e.stack.addToStack(iF()),this.hardwareClipping=!0)}setupDepth(e){let{renderer:t,camera:n}=e,r=this.depthNode;if(r===null){let e=t.getMRT();e&&e.has(`depth`)?r=e.get(`depth`):t.logarithmicDepthBuffer===!0&&(r=n.isPerspectiveCamera?YP(cM.z,Ej,Dj):UP(cM.z,Ej,Dj))}r!==null&&QP.assign(r).toStack()}setupPositionView(){return Qj.mul(iM).xyz}setupModelViewProjection(){return Oj.mul(cM)}setupVertex(e){return e.addStack(),this.setupPosition(e),e.context.position=e.removeStack(),lP}setupPosition(e){let{object:t,geometry:n}=e;if((n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color)&&kP(t).toStack(),t.isSkinnedMesh===!0&&yP(t).toStack(),this.displacementMap){let e=UM(`displacementMap`,`texture`),t=UM(`displacementScale`,`float`),n=UM(`displacementBias`,`float`);iM.addAssign(mM.normalize().mul(e.x.mul(t).add(n)))}return t.isBatchedMesh&&gP(t).toStack(),t.isInstancedMesh&&t.instanceMatrix&&t.instanceMatrix.isInstancedBufferAttribute===!0&&hP(t).toStack(),this.positionNode!==null&&iM.assign(jk(this.positionNode,`POSITION`,`vec3`)),iM}setupDiffuseColor(e){let{object:t,geometry:n}=e;this.maskNode!==null&&fE(this.maskNode).not().discard();let r=this.colorNode?yE(this.colorNode):EN;this.vertexColors===!0&&n.hasAttribute(`color`)&&(r=r.mul(uF())),t.instanceColor&&(r=PE(`vec3`,`vInstanceColor`).mul(r)),t.isBatchedMesh&&t._colorsTexture&&(r=PE(`vec3`,`vBatchColor`).mul(r)),FE.assign(r);let i=this.opacityNode?W(this.opacityNode):kN;FE.a.assign(FE.a.mul(i));let a=null;(this.alphaTestNode!==null||this.alphaTest>0)&&(a=this.alphaTestNode===null?TN:W(this.alphaTestNode),this.alphaToCoverage===!0?(FE.a=lk(a,a.add(BO(FE.a)),FE.a),FE.a.lessThanEqual(0).discard()):FE.a.lessThanEqual(a).discard()),this.alphaHash===!0&&FE.a.lessThan(cF(iM)).discard(),e.isOpaque()&&FE.a.assign(1)}setupVariants(){}setupOutgoingLight(){return this.lights===!0?J(0):FE.rgb}setupNormal(){return this.normalNode?J(this.normalNode):LN}setupEnvironment(){let e=null;return this.envNode?e=this.envNode:this.envMap&&(e=this.envMap.isCubeTexture?UM(`envMap`,`cubeTexture`):UM(`envMap`,`texture`)),e}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new NP(oP)),t}setupLights(e){let t=[],n=this.setupEnvironment(e);n&&n.isLightingNode&&t.push(n);let r=this.setupLightMap(e);r&&r.isLightingNode&&t.push(r);let i=this.aoNode;i===null&&e.material.aoMap&&(i=sP),e.context.getAO&&(i=e.context.getAO(i,e)),i&&t.push(new jP(i));let a=this.lightsNode||e.lightsNode;return t.length>0&&(a=e.renderer.lighting.createNode([...a.getLights(),...t])),a}setupLightingModel(){}setupLighting(e){let{material:t}=e,{backdropNode:n,backdropAlphaNode:r,emissiveNode:i}=this,a=this.lights===!0||this.lightsNode!==null?this.setupLights(e):null,o=this.setupOutgoingLight(e);return a&&a.getScope().hasLights?o=MP(a,this.setupLightingModel(e)||null,n,r):n!==null&&(o=J(r===null?n:ak(o,n,r))),(i&&i.isNode===!0||t.emissive&&t.emissive.isColor===!0)&&(LE.assign(J(i||ON)),o=o.add(LE)),o}setupFog(e,t){let n=e.fogNode;return n&&(tD.assign(t),t=yE(n.toVar())),t}setupPremultipliedAlpha(e,t){return gF(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(let t in e){let n=e[t];this[t]===void 0&&(this[t]=n,n&&n.clone&&(this[t]=n.clone()))}let t=Object.getOwnPropertyDescriptors(e.constructor.prototype);for(let e in t)Object.getOwnPropertyDescriptor(this.constructor.prototype,e)===void 0&&t[e].get!==void 0&&Object.defineProperty(this.constructor.prototype,e,t[e])}toJSON(e){let t=e===void 0||typeof e==`string`;t&&(e={textures:{},images:{},nodes:{}});let n=Na.prototype.toJSON.call(this,e);n.inputNodes={};for(let{property:t,childNode:r}of this._getNodeChildren())n.inputNodes[t]=r.toJSON(e).uuid;function r(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(t){let t=r(e.textures),i=r(e.images),a=r(e.nodes);t.length>0&&(n.textures=t),i.length>0&&(n.images=i),a.length>0&&(n.nodes=a)}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.maskShadowNode=e.maskShadowNode,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)}},yF=new Cs,bF=class extends vF{static get type(){return`LineBasicNodeMaterial`}constructor(e){super(),this.isLineBasicNodeMaterial=!0,this.setDefaultValues(yF),this.setValues(e)}},xF=new fu,SF=class extends vF{static get type(){return`LineDashedNodeMaterial`}constructor(e){super(),this.isLineDashedNodeMaterial=!0,this.setDefaultValues(xF),this.dashOffset=0,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setupVariants(){let e=this.offsetNode?W(this.offsetNode):rP,t=this.dashScaleNode?W(this.dashScaleNode):$N,n=this.dashSizeNode?W(this.dashSizeNode):eP,r=this.gapSizeNode?W(this.gapSizeNode):tP;nD.assign(n),rD.assign(r);let i=Mk(NA(`lineDistance`).mul(t));(e?i.add(e):i).mod(nD.add(rD)).greaterThan(nD).discard()}},CF=new su,wF=class extends vF{static get type(){return`MeshNormalNodeMaterial`}constructor(e){super(),this.isMeshNormalNodeMaterial=!0,this.setDefaultValues(CF),this.setValues(e)}setupDiffuseColor(){let e=this.opacityNode?W(this.opacityNode):kN;FE.assign(Bk(yE(_N(vM),e),Xt))}},TF=U(([e=sM])=>q(e.z.atan(e.x).mul(1/(Math.PI*2)).add(.5),e.y.clamp(-1,1).asin().mul(1/Math.PI).add(.5))),EF=class extends Pr{constructor(e=1,t={}){super(e,e,t),this.isCubeRenderTarget=!0;let n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new Xs(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){let 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;let i=new nc(5,5,5),a=TF(sM),o=new vF;o.colorNode=VA(t,a,0),o.side=1,o.blending=0;let s=new bo(i,o),c=new Ci;c.add(s),t.minFilter===1008&&(t.minFilter=Te);let l=new Hd(1,10,this),u=e.getMRT();return e.setMRT(null),l.update(e,c),e.setMRT(u),t.minFilter=n,t.generateMipmaps=r,s.geometry.dispose(),s.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){let i=e.getRenderTarget();for(let i=0;i<6;i++)e.setRenderTarget(this,i),e.clear(t,n,r);e.setRenderTarget(i)}},DF=new WeakMap,OF=class extends uT{static get type(){return`CubeMapNode`}constructor(e){super(`vec3`),this.envNode=e,this._cubeTexture=null,this._cubeTextureNode=IM(null);let t=new Xs;t.isRenderTargetTexture=!0,this._defaultTexture=t,this.updateBeforeType=Qw.RENDER}updateBefore(e){let{renderer:t,material:n}=e,r=this.envNode;if(r.isTextureNode||r.isMaterialReferenceNode){let e=r.isTextureNode?r.value:n[r.property];if(e&&e.isTexture){let n=e.mapping;if(n===303||n===304){if(DF.has(e)){let t=DF.get(e);jF(t,e.mapping),this._cubeTexture=t}else{let n=e.image;if(kF(n)){let r=new EF(n.height);r.fromEquirectangularTexture(t,e),jF(r.texture,e.mapping),this._cubeTexture=r.texture,DF.set(e,r.texture),e.addEventListener(`dispose`,AF)}else this._cubeTexture=this._defaultTexture}this._cubeTextureNode.value=this._cubeTexture}else this._cubeTextureNode=this.envNode}}}setup(e){return this.updateBefore(e),this._cubeTextureNode}};function kF(e){return e==null?!1:e.height>0}function AF(e){let t=e.target;t.removeEventListener(`dispose`,AF);let n=DF.get(t);n!==void 0&&(DF.delete(t),n.dispose())}function jF(e,t){t===303?e.mapping=301:t===304&&(e.mapping=302)}var MF=rE(OF).setParameterLength(1),NF=class extends AP{static get type(){return`BasicEnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){e.context.environment=MF(this.envNode)}},PF=class extends AP{static get type(){return`BasicLightMapNode`}constructor(e=null){super(),this.lightMapNode=e}setup(e){let t=W(1/Math.PI);e.context.irradianceLightMap=this.lightMapNode.mul(t)}},FF=class{start(e){e.lightsNode.setupLights(e,e.lightsNode.getLightNodes(e)),this.indirect(e)}finish(){}direct(){}directRectArea(){}indirect(){}ambientOcclusion(){}},IF=class extends FF{constructor(){super()}indirect({context:e}){let t=e.ambientOcclusion,n=e.reflectedLight,r=e.irradianceLightMap;n.indirectDiffuse.assign(yE(0)),r?n.indirectDiffuse.addAssign(r):n.indirectDiffuse.addAssign(yE(1,1,1,0)),n.indirectDiffuse.mulAssign(t),n.indirectDiffuse.mulAssign(FE.rgb)}finish(e){let{material:t,context:n}=e,r=n.outgoingLight,i=e.context.environment;if(i)switch(t.combine){case 0:r.rgb.assign(ak(r.rgb,r.rgb.mul(i.rgb),NN.mul(PN)));break;case 1:r.rgb.assign(ak(r.rgb,i.rgb,NN.mul(PN)));break;case 2:r.rgb.addAssign(i.rgb.mul(NN.mul(PN)));break;default:j(`BasicLightingModel: Unsupported .combine value:`,t.combine);break}}},LF=new so,RF=class extends vF{static get type(){return`MeshBasicNodeMaterial`}constructor(e){super(),this.isMeshBasicNodeMaterial=!0,this.lights=!0,this.setDefaultValues(LF),this.setValues(e)}setupNormal(){return fM(gM)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new NF(t):null}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new PF(oP)),t}setupOutgoingLight(){return FE.rgb}setupLightingModel(){return new IF}},zF=U(({f0:e,f90:t,dotVH:n})=>{let r=n.mul(-5.55473).sub(6.98316).mul(n).exp2();return e.mul(r.oneMinus()).add(t.mul(r))}),BF=U(e=>e.diffuseColor.mul(1/Math.PI)),VF=()=>W(.25),HF=U(({dotNH:e})=>eD.mul(W(.5)).add(1).mul(W(1/Math.PI)).mul(e.pow(eD))),UF=U(({lightDirection:e})=>{let t=e.add(lM).normalize(),n=vM.dot(t).clamp(),r=zF({f0:ZE,f90:1,dotVH:lM.dot(t).clamp()}),i=VF(),a=HF({dotNH:n});return r.mul(i).mul(a)}),WF=class extends IF{constructor(e=!0){super(),this.specular=e}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=vM.dot(e).clamp().mul(t);n.directDiffuse.addAssign(r.mul(BF({diffuseColor:FE.rgb}))),this.specular===!0&&n.directSpecular.addAssign(r.mul(UF({lightDirection:e})).mul(NN))}indirect(e){let{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(BF({diffuseColor:FE}))),r.indirectDiffuse.mulAssign(t)}},GF=new cu,KF=class extends vF{static get type(){return`MeshLambertNodeMaterial`}constructor(e){super(),this.isMeshLambertNodeMaterial=!0,this.lights=!0,this.setDefaultValues(GF),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new NF(t):null}setupLightingModel(){return new WF(!1)}},qF=new au,JF=class extends vF{static get type(){return`MeshPhongNodeMaterial`}constructor(e){super(),this.isMeshPhongNodeMaterial=!0,this.lights=!0,this.shininessNode=null,this.specularNode=null,this.setDefaultValues(qF),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new NF(t):null}setupLightingModel(){return new WF}setupVariants(){let e=(this.shininessNode?W(this.shininessNode):DN).max(1e-4);eD.assign(e);let t=this.specularNode||AN;ZE.assign(t)}copy(e){return this.shininessNode=e.shininessNode,this.specularNode=e.specularNode,super.copy(e)}},YF=U(e=>{if(e.geometry.hasAttribute(`normal`)===!1)return W(0);let t=gM.dFdx().abs().max(gM.dFdy().abs());return t.x.max(t.y).max(t.z)}),XF=U(e=>{let{roughness:t}=e,n=YF(),r=t.max(.0525);return r=r.add(n),r=r.min(1),r}),ZF=U(({alpha:e,dotNL:t,dotNV:n})=>{let r=e.pow2(),i=t.mul(r.add(r.oneMinus().mul(n.pow2())).sqrt()),a=n.mul(r.add(r.oneMinus().mul(t.pow2())).sqrt());return kD(.5,i.add(a).max(QD))}).setLayout({name:`V_GGX_SmithCorrelated`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNL`,type:`float`},{name:`dotNV`,type:`float`}]}),QF=U(({alphaT:e,alphaB:t,dotTV:n,dotBV:r,dotTL:i,dotBL:a,dotNV:o,dotNL:s})=>{let c=s.mul(J(e.mul(n),t.mul(r),o).length()),l=o.mul(J(e.mul(i),t.mul(a),s).length());return kD(.5,c.add(l).max(QD))}).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`}]}),$F=U(({alpha:e,dotNH:t})=>{let n=e.pow2(),r=t.pow2().mul(n.oneMinus()).oneMinus();return n.div(r.pow2()).mul(1/Math.PI)}).setLayout({name:`D_GGX`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNH`,type:`float`}]}),eI=W(1/Math.PI),tI=U(({alphaT:e,alphaB:t,dotNH:n,dotTH:r,dotBH:i})=>{let a=e.mul(t),o=J(t.mul(r),e.mul(i),a.mul(n)),s=o.dot(o),c=a.div(s);return eI.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`}]}),nI=U(({lightDirection:e,f0:t,f90:n,roughness:r,f:i,normalView:a=vM,USE_IRIDESCENCE:o,USE_ANISOTROPY:s})=>{let c=r.pow2(),l=e.add(lM).normalize(),u=a.dot(e).clamp(),d=a.dot(lM).clamp(),f=a.dot(l).clamp(),p=zF({f0:t,f90:n,dotVH:lM.dot(l).clamp()}),m,h;if(ZT(o)&&(p=WE.mix(p,i)),ZT(s)){let t=YE.dot(e),n=YE.dot(lM),r=YE.dot(l),i=XE.dot(e),a=XE.dot(lM),o=XE.dot(l);m=QF({alphaT:qE,alphaB:c,dotTV:n,dotBV:a,dotTL:t,dotBL:i,dotNV:d,dotNL:u}),h=tI({alphaT:qE,alphaB:c,dotNH:f,dotTH:r,dotBH:o})}else m=ZF({alpha:c,dotNL:u,dotNV:d}),h=$F({alpha:c,dotNH:f});return p.mul(m).mul(h)}),rI=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]),iI=null,aI=U(({roughness:e,dotNV:t})=>{iI===null&&(iI=new Po(rI,16,16,Je,Fe),iI.name=`DFG_LUT`,iI.minFilter=Te,iI.magFilter=Te,iI.wrapS=ve,iI.wrapT=ve,iI.generateMipmaps=!1,iI.needsUpdate=!0);let n=q(e,t);return VA(iI,n).rg}),oI=U(({lightDirection:e,f0:t,f90:n,roughness:r,f:i,USE_IRIDESCENCE:a,USE_ANISOTROPY:o})=>{let s=nI({lightDirection:e,f0:t,f90:n,roughness:r,f:i,USE_IRIDESCENCE:a,USE_ANISOTROPY:o}),c=vM.dot(e).clamp(),l=aI({roughness:r,dotNV:vM.dot(lM).clamp()}),u=aI({roughness:r,dotNV:c}),d=t.mul(l.x).add(n.mul(l.y)),f=t.mul(u.x).add(n.mul(u.y)),p=l.x.add(l.y),m=u.x.add(u.y),h=W(1).sub(p),g=W(1).sub(m),_=t.add(t.oneMinus().mul(.047619)),v=d.mul(f).mul(_).div(W(1).sub(h.mul(g).mul(_).mul(_)).add(QD)),y=h.mul(g),b=v.mul(y);return s.add(b)}),sI=U(e=>{let{dotNV:t,specularColor:n,specularF90:r,roughness:i}=e,a=aI({dotNV:t,roughness:i});return n.mul(a.x).add(r.mul(a.y))}),cI=U(({f:e,f90:t,dotVH:n})=>{let r=n.oneMinus().saturate(),i=r.mul(r),a=r.mul(i,i).clamp(0,.9999);return e.sub(J(t).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`}]}),lI=U(({roughness:e,dotNH:t})=>{let n=e.pow2(),r=W(1).div(n),i=t.pow2().oneMinus().max(.0078125);return W(2).add(r).mul(i.pow(r.mul(.5))).div(2*Math.PI)}).setLayout({name:`D_Charlie`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`dotNH`,type:`float`}]}),uI=U(({dotNV:e,dotNL:t})=>W(1).div(W(4).mul(t.add(e).sub(t.mul(e))))).setLayout({name:`V_Neubelt`,type:`float`,inputs:[{name:`dotNV`,type:`float`},{name:`dotNL`,type:`float`}]}),dI=U(({lightDirection:e})=>{let t=e.add(lM).normalize(),n=vM.dot(e).clamp(),r=vM.dot(lM).clamp(),i=lI({roughness:UE,dotNH:vM.dot(t).clamp()}),a=uI({dotNV:r,dotNL:n});return HE.mul(i).mul(a)}),fI=U(({N:e,V:t,roughness:n})=>{let r=q(n,e.dot(t).saturate().oneMinus().sqrt());return r.assign(r.mul(.984375).add(.0078125)),r}).setLayout({name:`LTC_Uv`,type:`vec2`,inputs:[{name:`N`,type:`vec3`},{name:`V`,type:`vec3`},{name:`roughness`,type:`float`}]}),pI=U(({f:e})=>{let t=e.length();return GO(t.mul(t).add(e.z).div(t.add(1)),0)}).setLayout({name:`LTC_ClippedSphereFormFactor`,type:`float`,inputs:[{name:`f`,type:`vec3`}]}),mI=U(({v1:e,v2:t})=>{let n=e.dot(t),r=n.abs().toVar(),i=r.mul(.0145206).add(.4965155).mul(r).add(.8543985).toVar(),a=r.add(4.1616724).mul(r).add(3.417594).toVar(),o=i.div(a),s=n.greaterThan(0).select(o,GO(n.mul(n).oneMinus(),1e-7).inverseSqrt().mul(.5).sub(o));return e.cross(t).mul(s)}).setLayout({name:`LTC_EdgeVectorFormFactor`,type:`vec3`,inputs:[{name:`v1`,type:`vec3`},{name:`v2`,type:`vec3`}]}),hI=U(({N:e,V:t,P:n,mInv:r,p0:i,p1:a,p2:o,p3:s})=>{let c=a.sub(i).toVar(),l=s.sub(i).toVar(),u=c.cross(l),d=J().toVar();return cE(u.dot(n.sub(i)).greaterThanEqual(0),()=>{let c=t.sub(e.mul(t.dot(e))).normalize(),l=e.cross(c).negate(),u=r.mul(wE(c,l,e).transpose()).toVar(),f=u.mul(i.sub(n)).normalize().toVar(),p=u.mul(a.sub(n)).normalize().toVar(),m=u.mul(o.sub(n)).normalize().toVar(),h=u.mul(s.sub(n)).normalize().toVar(),g=J(0).toVar();g.addAssign(mI({v1:f,v2:p})),g.addAssign(mI({v1:p,v2:m})),g.addAssign(mI({v1:m,v2:h})),g.addAssign(mI({v1:h,v2:f})),d.assign(J(pI({f:g})))}),d}).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`}]}),gI=1/6,_I=e=>OD(gI,OD(e,OD(e,e.negate().add(3)).sub(3)).add(1)),vI=e=>OD(gI,OD(e,OD(e,OD(3,e).sub(6))).add(4)),yI=e=>OD(gI,OD(e,OD(e,OD(-3,e).add(3)).add(3)).add(1)),bI=e=>OD(gI,QO(e,3)),xI=e=>_I(e).add(vI(e)),SI=e=>yI(e).add(bI(e)),CI=e=>ED(-1,vI(e).div(_I(e).add(vI(e)))),wI=e=>ED(1,bI(e).div(yI(e).add(bI(e)))),TI=(e,t,n)=>{let r=e.uvNode,i=OD(r,t.zw).add(.5),a=mO(i),o=_O(i),s=xI(o.x),c=SI(o.x),l=CI(o.x),u=wI(o.x),d=CI(o.y),f=wI(o.y),p=q(a.x.add(l),a.y.add(d)).sub(.5).mul(t.xy),m=q(a.x.add(u),a.y.add(d)).sub(.5).mul(t.xy),h=q(a.x.add(l),a.y.add(f)).sub(.5).mul(t.xy),g=q(a.x.add(u),a.y.add(f)).sub(.5).mul(t.xy),_=xI(o.y).mul(ED(s.mul(e.sample(p).level(n)),c.mul(e.sample(m).level(n)))),v=SI(o.y).mul(ED(s.mul(e.sample(h).level(n)),c.mul(e.sample(g).level(n))));return _.add(v)},EI=U(([e,t])=>{let n=q(e.size(G(t))),r=q(e.size(G(t.add(1)))),i=kD(1,n),a=kD(1,r),o=TI(e,yE(i,n),mO(t)),s=TI(e,yE(a,r),hO(t));return _O(t).mix(o,s)}),DI=U(([e,t])=>EI(e,t.mul(IA(e)))),OI=U(([e,t,n,r,i])=>{let a=J(ck(t.negate(),gO(e),kD(1,r))),o=J(MO(i[0].xyz),MO(i[1].xyz),MO(i[2].xyz));return gO(a).mul(n.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`}]}),kI=U(([e,t])=>e.mul(ok(t.mul(2).sub(2),0,1))).setLayout({name:`applyIorToRoughness`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`ior`,type:`float`}]}),AI=LP(),jI=zP(),MI=U(([e,t,n],{material:r})=>EI((r.side===1?AI:jI).sample(e),dO(ij.x).mul(kI(t,n)))),NI=U(([e,t,n])=>(cE(n.notEqual(0),()=>cO(uO(t).negate().div(n).negate().mul(e))),J(1))).setLayout({name:`volumeAttenuation`,type:`vec3`,inputs:[{name:`transmissionDistance`,type:`float`},{name:`attenuationColor`,type:`vec3`},{name:`attenuationDistance`,type:`float`}]}),PI=U(([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m])=>{let h,g;if(m){h=yE().toVar(),g=J().toVar();let i=u.sub(1).mul(m.mul(.025)),a=J(u.sub(i),u,u.add(i));SP({start:0,end:3},({i})=>{let u=a.element(i),m=OI(e,t,d,u,s),_=o.add(m),v=l.mul(c.mul(yE(_,1))),y=q(v.xy.div(v.w)).toVar();y.addAssign(1),y.divAssign(2),y.assign(q(y.x,y.y.oneMinus()));let b=MI(y,n,u);h.element(i).assign(b.element(i)),h.a.addAssign(b.a),g.element(i).assign(r.element(i).mul(NI(MO(m),f,p).element(i)))}),h.a.divAssign(3)}else{let i=OI(e,t,d,u,s),a=o.add(i),m=l.mul(c.mul(yE(a,1))),_=q(m.xy.div(m.w)).toVar();_.addAssign(1),_.divAssign(2),_.assign(q(_.x,_.y.oneMinus())),h=MI(_,n,u),g=r.mul(NI(MO(i),f,p))}let _=g.rgb.mul(h.rgb),v=J(sI({dotNV:e.dot(t).clamp(),specularColor:i,specularF90:a,roughness:n})),y=g.r.add(g.g,g.b).div(3);return yE(v.oneMinus().mul(_),h.a.oneMinus().mul(y).oneMinus())}),FI=wE(3.2404542,-.969266,.0556434,-1.5371385,1.8760108,-.2040259,-.4985314,.041556,1.0572252),II=e=>{let t=e.sqrt();return J(1).add(t).div(J(1).sub(t))},LI=(e,t)=>e.sub(t).div(e.add(t)).pow2(),RI=(e,t)=>{let n=e.mul(2*Math.PI*1e-9),r=J(54856e-17,44201e-17,52481e-17),i=J(1681e3,1795300,2208400),a=J(43278e5,93046e5,66121e5),o=W(9747e-17*Math.sqrt(2*Math.PI*45282e5)).mul(n.mul(2239900).add(t.x).cos()).mul(n.pow2().mul(-45282e5).exp()),s=r.mul(a.mul(2*Math.PI).sqrt()).mul(i.mul(n).add(t).cos()).mul(n.pow2().negate().mul(a).exp());return s=J(s.x.add(o),s.y,s.z).div(1.0685e-7),FI.mul(s)},zI=U(({outsideIOR:e,eta2:t,cosTheta1:n,thinFilmThickness:r,baseF0:i})=>{let a=ak(e,t,lk(0,.03,r)),o=e.div(a).pow2().mul(n.pow2().oneMinus()).oneMinus();cE(o.lessThan(0),()=>J(1));let s=o.sqrt(),c=zF({f0:LI(a,e),f90:1,dotVH:n}),l=c.oneMinus(),u=a.lessThan(e).select(Math.PI,0),d=W(Math.PI).sub(u),f=II(i.clamp(0,.9999)),p=zF({f0:LI(f,a.toVec3()),f90:1,dotVH:s}),m=J(f.x.lessThan(a).select(Math.PI,0),f.y.lessThan(a).select(Math.PI,0),f.z.lessThan(a).select(Math.PI,0)),h=a.mul(r,s,2),g=J(d).add(m),_=c.mul(p).clamp(1e-5,.9999),v=_.sqrt(),y=l.pow2().mul(p).div(J(1).sub(_)),b=c.add(y).toVar(),x=y.sub(l).toVar();return SP({start:1,end:2,condition:`<=`,name:`m`},({m:e})=>{x.mulAssign(v);let t=RI(W(e).mul(h),W(e).mul(g)).mul(2);b.addAssign(x.mul(t))}),b.max(J(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`}]}),BI=U(({normal:e,viewDir:t,roughness:n})=>{let r=e.dot(t).saturate(),i=n.mul(n),a=n.add(.1).reciprocal(),o=W(-1.9362).add(n.mul(1.0678)).add(i.mul(.4573)).sub(a.mul(.8469)),s=W(-.6014).add(n.mul(.5538)).sub(i.mul(.467)).sub(a.mul(.1255));return o.mul(r).add(s).exp().saturate()}),VI=J(.04),HI=W(1),UI=class extends FF{constructor(e=!1,t=!1,n=!1,r=!1,i=!1,a=!1){super(),this.clearcoat=e,this.sheen=t,this.iridescence=n,this.anisotropy=r,this.transmission=i,this.dispersion=a,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=J().toVar(`clearcoatRadiance`),this.clearcoatSpecularDirect=J().toVar(`clearcoatSpecularDirect`),this.clearcoatSpecularIndirect=J().toVar(`clearcoatSpecularIndirect`)),this.sheen===!0&&(this.sheenSpecularDirect=J().toVar(`sheenSpecularDirect`),this.sheenSpecularIndirect=J().toVar(`sheenSpecularIndirect`)),this.iridescence===!0){let e=vM.dot(lM).clamp(),t=zI({outsideIOR:W(1),eta2:GE,cosTheta1:e,thinFilmThickness:KE,baseF0:ZE}),n=zI({outsideIOR:W(1),eta2:GE,cosTheta1:e,thinFilmThickness:KE,baseF0:FE.rgb});this.iridescenceFresnel=ak(t,n,zE),this.iridescenceF0Dielectric=cI({f:t,f90:1,dotVH:e}),this.iridescenceF0Metallic=cI({f:n,f90:1,dotVH:e}),this.iridescenceF0=ak(this.iridescenceF0Dielectric,this.iridescenceF0Metallic,zE)}if(this.transmission===!0){let t=oM,n=Nj.sub(oM).normalize(),r=yM,i=e.context;i.backdrop=PI(r,n,RE,IE,QE,$E,t,Gj,Aj,Oj,aD,sD,lD,cD,this.dispersion?uD:null),i.backdropAlpha=oD,FE.a.mulAssign(ak(1,i.backdrop.a,oD))}super.start(e)}computeMultiscattering(e,t,n,r,i=null){let a=aI({roughness:RE,dotNV:vM.dot(lM).clamp()}),o=i?WE.mix(r,i):r,s=o.mul(a.x).add(n.mul(a.y)),c=a.x.add(a.y).oneMinus(),l=o.add(o.oneMinus().mul(.047619)),u=s.mul(l).div(c.mul(l).oneMinus());e.addAssign(s),t.addAssign(u.mul(c))}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=vM.dot(e).clamp().mul(t).toVar();if(this.sheen===!0){this.sheenSpecularDirect.addAssign(r.mul(dI({lightDirection:e})));let t=BI({normal:vM,viewDir:lM,roughness:UE}),n=BI({normal:vM,viewDir:e,roughness:UE}),i=HE.r.max(HE.g).max(HE.b).mul(t.max(n)).oneMinus();r.mulAssign(i)}if(this.clearcoat===!0){let n=bM.dot(e).clamp().mul(t);this.clearcoatSpecularDirect.addAssign(n.mul(nI({lightDirection:e,f0:VI,f90:HI,roughness:VE,normalView:bM})))}n.directDiffuse.addAssign(r.mul(BF({diffuseColor:IE}))),n.directSpecular.addAssign(r.mul(oI({lightDirection:e,f0:QE,f90:1,roughness:RE,f:this.iridescenceFresnel,USE_IRIDESCENCE:this.iridescence,USE_ANISOTROPY:this.anisotropy})))}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:r,reflectedLight:i,ltc_1:a,ltc_2:o}){let s=t.add(n).sub(r),c=t.sub(n).sub(r),l=t.sub(n).add(r),u=t.add(n).add(r),d=vM,f=lM,p=cM.toVar(),m=fI({N:d,V:f,roughness:RE}),h=a.sample(m).toVar(),g=o.sample(m).toVar(),_=wE(J(h.x,0,h.y),J(0,1,0),J(h.z,0,h.w)).toVar(),v=QE.mul(g.x).add($E.sub(QE).mul(g.y)).toVar();if(i.directSpecular.addAssign(e.mul(v).mul(hI({N:d,V:f,P:p,mInv:_,p0:s,p1:c,p2:l,p3:u}))),i.directDiffuse.addAssign(e.mul(IE).mul(hI({N:d,V:f,P:p,mInv:wE(1,0,0,0,1,0,0,0,1),p0:s,p1:c,p2:l,p3:u}))),this.clearcoat===!0){let t=bM,n=fI({N:t,V:f,roughness:VE}),r=a.sample(n),i=o.sample(n),d=wE(J(r.x,0,r.y),J(0,1,0),J(r.z,0,r.w)),m=VI.mul(i.x).add(HI.sub(VI).mul(i.y));this.clearcoatSpecularDirect.addAssign(e.mul(m).mul(hI({N:t,V:f,P:p,mInv:d,p0:s,p1:c,p2:l,p3:u})))}}indirect(e){this.indirectDiffuse(e),this.indirectSpecular(e),this.ambientOcclusion(e)}indirectDiffuse(e){let{irradiance:t,reflectedLight:n}=e.context,r=t.mul(BF({diffuseColor:IE})).toVar();if(this.sheen===!0){let e=BI({normal:vM,viewDir:lM,roughness:UE}),t=HE.r.max(HE.g).max(HE.b).mul(e).oneMinus();r.mulAssign(t)}n.indirectDiffuse.addAssign(r)}indirectSpecular(e){let{radiance:t,iblIrradiance:n,reflectedLight:r}=e.context;if(this.sheen===!0&&this.sheenSpecularIndirect.addAssign(n.mul(HE,BI({normal:vM,viewDir:lM,roughness:UE}))),this.clearcoat===!0){let e=sI({dotNV:bM.dot(lM).clamp(),specularColor:VI,specularF90:HI,roughness:VE});this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(e))}let i=J().toVar(`singleScatteringDielectric`),a=J().toVar(`multiScatteringDielectric`),o=J().toVar(`singleScatteringMetallic`),s=J().toVar(`multiScatteringMetallic`);this.computeMultiscattering(i,a,$E,ZE,this.iridescenceF0Dielectric),this.computeMultiscattering(o,s,$E,FE.rgb,this.iridescenceF0Metallic);let c=ak(i,o,zE),l=ak(a,s,zE),u=i.add(a),d=IE.mul(u.oneMinus()),f=n.mul(1/Math.PI),p=t.mul(c).add(l.mul(f)).toVar(),m=d.mul(f).toVar();if(this.sheen===!0){let e=BI({normal:vM,viewDir:lM,roughness:UE}),t=HE.r.max(HE.g).max(HE.b).mul(e).oneMinus();p.mulAssign(t),m.mulAssign(t)}r.indirectSpecular.addAssign(p),r.indirectDiffuse.addAssign(m)}ambientOcclusion(e){let{ambientOcclusion:t,reflectedLight:n}=e.context,r=vM.dot(lM).clamp().add(t),i=RE.mul(-16).oneMinus().negate().exp2(),a=t.sub(r.pow(i).oneMinus()).clamp();this.clearcoat===!0&&this.clearcoatSpecularIndirect.mulAssign(t),this.sheen===!0&&this.sheenSpecularIndirect.mulAssign(t),n.indirectDiffuse.mulAssign(t),n.indirectSpecular.mulAssign(a)}finish({context:e}){let{outgoingLight:t}=e;if(this.clearcoat===!0){let e=zF({dotVH:bM.dot(lM).clamp(),f0:VI,f90:HI}),n=t.mul(BE.mul(e).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(BE));t.assign(n)}if(this.sheen===!0){let e=t.add(this.sheenSpecularDirect,this.sheenSpecularIndirect.mul(1/Math.PI));t.assign(e)}}},WI=W(1),GI=W(-2),KI=W(.8),qI=W(-1),JI=W(.4),YI=W(2),XI=W(.305),ZI=W(3),QI=W(.21),$I=W(4),eL=W(4),tL=W(16),nL=U(([e])=>{let t=J(AO(e)).toVar(),n=W(-1).toVar();return cE(t.x.greaterThan(t.z),()=>{cE(t.x.greaterThan(t.y),()=>{n.assign(_k(e.x.greaterThan(0),0,3))}).Else(()=>{n.assign(_k(e.y.greaterThan(0),1,4))})}).Else(()=>{cE(t.z.greaterThan(t.y),()=>{n.assign(_k(e.z.greaterThan(0),2,5))}).Else(()=>{n.assign(_k(e.y.greaterThan(0),1,4))})}),n}).setLayout({name:`getFace`,type:`float`,inputs:[{name:`direction`,type:`vec3`}]}),rL=U(([e,t])=>{let n=q().toVar();return cE(t.equal(0),()=>{n.assign(q(e.z,e.y).div(AO(e.x)))}).ElseIf(t.equal(1),()=>{n.assign(q(e.x.negate(),e.z.negate()).div(AO(e.y)))}).ElseIf(t.equal(2),()=>{n.assign(q(e.x.negate(),e.y).div(AO(e.z)))}).ElseIf(t.equal(3),()=>{n.assign(q(e.z.negate(),e.y).div(AO(e.x)))}).ElseIf(t.equal(4),()=>{n.assign(q(e.x.negate(),e.z).div(AO(e.y)))}).Else(()=>{n.assign(q(e.x,e.y).div(AO(e.z)))}),OD(.5,n.add(1))}).setLayout({name:`getUV`,type:`vec2`,inputs:[{name:`direction`,type:`vec3`},{name:`face`,type:`float`}]}),iL=U(([e])=>{let t=W(0).toVar();return cE(e.greaterThanEqual(KI),()=>{t.assign(WI.sub(e).mul(qI.sub(GI)).div(WI.sub(KI)).add(GI))}).ElseIf(e.greaterThanEqual(JI),()=>{t.assign(KI.sub(e).mul(YI.sub(qI)).div(KI.sub(JI)).add(qI))}).ElseIf(e.greaterThanEqual(XI),()=>{t.assign(JI.sub(e).mul(ZI.sub(YI)).div(JI.sub(XI)).add(YI))}).ElseIf(e.greaterThanEqual(QI),()=>{t.assign(XI.sub(e).mul($I.sub(ZI)).div(XI.sub(QI)).add(ZI))}).Else(()=>{t.assign(W(-2).mul(dO(OD(1.16,e))))}),t}).setLayout({name:`roughnessToMip`,type:`float`,inputs:[{name:`roughness`,type:`float`}]}),aL=U(([e,t])=>{let n=e.toVar();n.assign(OD(2,n).sub(1));let r=J(n,1).toVar();return cE(t.equal(0),()=>{r.assign(r.zyx)}).ElseIf(t.equal(1),()=>{r.assign(r.xzy),r.xz.mulAssign(-1)}).ElseIf(t.equal(2),()=>{r.x.mulAssign(-1)}).ElseIf(t.equal(3),()=>{r.assign(r.zyx),r.xz.mulAssign(-1)}).ElseIf(t.equal(4),()=>{r.assign(r.xzy),r.xy.mulAssign(-1)}).ElseIf(t.equal(5),()=>{r.z.mulAssign(-1)}),r}).setLayout({name:`getDirection`,type:`vec3`,inputs:[{name:`uv`,type:`vec2`},{name:`face`,type:`float`}]}),oL=U(([e,t,n,r,i,a])=>{let o=W(n),s=J(t),c=ok(iL(o),GI,a),l=_O(c),u=mO(c),d=J(sL(e,s,u,r,i,a)).toVar();return cE(l.notEqual(0),()=>{let t=J(sL(e,s,u.add(1),r,i,a)).toVar();d.assign(ak(d,t,l))}),d}),sL=U(([e,t,n,r,i,a])=>{let o=W(n).toVar(),s=J(t),c=W(nL(s)).toVar(),l=W(GO(eL.sub(o),0)).toVar();o.assign(GO(o,eL));let u=W(lO(o)).toVar(),d=q(rL(s,c).mul(u.sub(2)).add(1)).toVar();return cE(c.greaterThan(2),()=>{d.y.addAssign(u),c.subAssign(3)}),d.x.addAssign(c.mul(u)),d.x.addAssign(l.mul(OD(3,tL))),d.y.addAssign(OD(4,lO(a).sub(u))),d.x.mulAssign(r),d.y.mulAssign(i),e.sample(d).grad(q(),q())}),cL=U(({envMap:e,mipInt:t,outputDirection:n,theta:r,axis:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:s})=>{let c=bO(r);return sL(e,n.mul(c).add(i.cross(n).mul(vO(r))).add(i.mul(i.dot(n).mul(c.oneMinus()))),t,a,o,s)}),lL=U(({n:e,latitudinal:t,poleAxis:n,outputDirection:r,weights:i,samples:a,dTheta:o,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d})=>{let f=J(_k(t,n,ZO(n,r))).toVar();cE(f.equal(J(0)),()=>{f.assign(J(r.z,0,r.x.negate()))}),f.assign(gO(f));let p=J().toVar();return p.addAssign(i.element(0).mul(cL({theta:0,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d}))),SP({start:G(1),end:e},({i:e})=>{cE(e.greaterThanEqual(a),()=>{wP()});let t=W(o.mul(W(e))).toVar();p.addAssign(i.element(e).mul(cL({theta:t.mul(-1),axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d}))),p.addAssign(i.element(e).mul(cL({theta:t,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d})))}),yE(p,1)}),uL=U(([e])=>{let t=K(e).toVar();return t.assign(t.shiftLeft(K(16)).bitOr(t.shiftRight(K(16)))),t.assign(t.bitAnd(K(1431655765)).shiftLeft(K(1)).bitOr(t.bitAnd(K(2863311530)).shiftRight(K(1)))),t.assign(t.bitAnd(K(858993459)).shiftLeft(K(2)).bitOr(t.bitAnd(K(3435973836)).shiftRight(K(2)))),t.assign(t.bitAnd(K(252645135)).shiftLeft(K(4)).bitOr(t.bitAnd(K(4042322160)).shiftRight(K(4)))),t.assign(t.bitAnd(K(16711935)).shiftLeft(K(8)).bitOr(t.bitAnd(K(4278255360)).shiftRight(K(8)))),W(t).mul(23283064365386963e-26)}),dL=U(([e,t])=>q(W(e).div(W(t)),uL(e))),fL=U(([e,t,n])=>{let r=n.mul(n).toConst(),i=J(1,0,0).toConst(),a=ZO(t,i).toConst(),o=fO(e.x).toConst(),s=OD(2,3.14159265359).mul(e.y).toConst(),c=o.mul(bO(s)).toConst(),l=o.mul(vO(s)).toVar(),u=OD(.5,t.z.add(1)).toConst();l.assign(u.oneMinus().mul(fO(c.mul(c).oneMinus())).add(u.mul(l)));let d=i.mul(c).add(a.mul(l)).add(t.mul(fO(GO(0,c.mul(c).add(l.mul(l)).oneMinus()))));return gO(J(r.mul(d.x),r.mul(d.y),GO(0,d.z)))}),pL=U(({roughness:e,mipInt:t,envMap:n,N_immutable:r,GGX_SAMPLES:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:s})=>{let c=J(r).toVar(),l=J(0).toVar(),u=W(0).toVar();return cE(e.lessThan(.001),()=>{l.assign(sL(n,c,t,a,o,s))}).Else(()=>{let r=gO(ZO(_k(AO(c.z).lessThan(.999),J(0,0,1),J(1,0,0)),c)).toVar(),d=ZO(c,r).toVar();SP({start:K(0),end:i},({i:f})=>{let p=fL(dL(f,i),J(0,0,1),e),m=gO(r.mul(p.x).add(d.mul(p.y)).add(c.mul(p.z))),h=gO(m.mul(XO(c,m).mul(2)).sub(c)),g=GO(XO(c,h),0);cE(g.greaterThan(0),()=>{let e=sL(n,h,t,a,o,s);l.addAssign(e.mul(g)),u.addAssign(g)})}),cE(u.greaterThan(0),()=>{l.assign(l.div(u))})}),yE(l,1)}),mL=4,hL=[.125,.215,.35,.446,.526,.582],gL=20,_L=512,vL=new hd(-1,1,1,-1,0,1),yL=new ud(90,1),bL=new I,xL=null,SL=0,CL=0,wL=new P,TL=new WeakMap,EL=[3,1,5,0,4,2],DL=aL(PA(),NA(`faceIndex`)).normalize(),OL=J(DL.x,DL.y,DL.z),kL=class{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,i={}){let{size:a=256,position:o=wL,renderTarget:s=null}=i;if(this._setSize(a),this._hasInitialized===!1){j(`PMREMGenerator: ".fromScene()" called before the backend is initialized. Try using "await renderer.init()" instead.`);let a=s||this._allocateTarget();return i.renderTarget=a,this.fromSceneAsync(e,t,n,r,i),a}xL=this._renderer.getRenderTarget(),SL=this._renderer.getActiveCubeFace(),CL=this._renderer.getActiveMipmapLevel();let c=s||this._allocateTarget();return c.depthBuffer=!0,this._init(c),this._sceneToCubeUV(e,n,r,c,o),t>0&&this._blur(c,0,0,t),this._applyPMREM(c),this._cleanup(c),c}async fromSceneAsync(e,t=0,n=.1,r=100,i={}){return In(`PMREMGenerator: ".fromSceneAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this.fromScene(e,t,n,r,i)}fromEquirectangular(e,t=null){if(this._hasInitialized===!1){j(`PMREMGenerator: .fromEquirectangular() called before the backend is initialized. Try using "await renderer.init()" instead.`),this._setSizeFromTexture(e);let n=t||this._allocateTarget();return this.fromEquirectangularAsync(e,n),n}return this._fromTexture(e,t)}async fromEquirectangularAsync(e,t=null){return In(`PMREMGenerator: ".fromEquirectangularAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this._fromTexture(e,t)}fromCubemap(e,t=null){if(this._hasInitialized===!1){j(`PMREMGenerator: .fromCubemap() called before the backend is initialized. Try using .fromCubemapAsync() instead.`),this._setSizeFromTexture(e);let n=t||this._allocateTarget();return this.fromCubemapAsync(e,t),n}return this._fromTexture(e,t)}async fromCubemapAsync(e,t=null){return In(`PMREMGenerator: ".fromCubemapAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this._fromTexture(e,t)}async compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=FL(),await this._compileMaterial(this._cubemapMaterial))}async compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=IL(),await 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===301||e.mapping===302?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=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;e<this._lodMeshes.length;e++)this._lodMeshes[e].geometry.dispose()}_cleanup(e){this._renderer.setRenderTarget(xL,SL,CL),e.scissorTest=!1,this._setViewport(e,0,0,e.width,e.height)}_fromTexture(e,t){this._setSizeFromTexture(e),xL=this._renderer.getRenderTarget(),SL=this._renderer.getActiveCubeFace(),CL=this._renderer.getActiveMipmapLevel();let n=t||this._allocateTarget();return this._init(n),this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTarget(){return jL(3*Math.max(this._cubeSize,112),4*this._cubeSize)}_init(e){if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e.width||this._pingPongRenderTarget.height!==e.height){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=jL(e.width,e.height);let{_lodMax:t}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods,sigmas:this._sigmas}=AL(t)),this._blurMaterial=NL(t,e.width,e.height),this._ggxMaterial=PL(t,e.width,e.height)}}async _compileMaterial(e){let t=new bo(new Oa,e);await this._renderer.compile(t,vL)}_sceneToCubeUV(e,t,n,r,i){let a=yL;a.near=t,a.far=n;let o=[1,1,1,1,-1,1],s=[1,-1,1,-1,1,-1],c=this._renderer,l=c.autoClear;c.getClearColor(bL),c.autoClear=!1,this._backgroundBox===null&&(this._backgroundBox=new bo(new nc,new so({name:`PMREM.Background`,side:1,depthWrite:!1,depthTest:!1})));let u=this._backgroundBox,d=u.material,f=!1,p=e.background;p?p.isColor&&(d.color.copy(p),e.background=null,f=!0):(d.color.copy(bL),f=!0),c.setRenderTarget(r),c.clear(),f&&c.render(u,a);for(let t=0;t<6;t++){let n=t%3;n===0?(a.up.set(0,o[t],0),a.position.set(i.x,i.y,i.z),a.lookAt(i.x+s[t],i.y,i.z)):n===1?(a.up.set(0,0,o[t]),a.position.set(i.x,i.y,i.z),a.lookAt(i.x,i.y+s[t],i.z)):(a.up.set(0,o[t],0),a.position.set(i.x,i.y,i.z),a.lookAt(i.x,i.y,i.z+s[t]));let l=this._cubeSize;this._setViewport(r,n*l,t>2?l:0,l,l),c.render(e,a)}c.autoClear=l,e.background=p}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?this._cubemapMaterial===null&&(this._cubemapMaterial=FL(e)):this._equirectMaterial===null&&(this._equirectMaterial=IL(e));let i=r?this._cubemapMaterial:this._equirectMaterial;i.fragmentNode.value=e;let a=this._lodMeshes[0];a.material=i;let o=this._cubeSize;this._setViewport(t,0,0,3*o,2*o),n.setRenderTarget(t),n.render(a,vL)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let t=1;t<r;t++)this._applyGGXFilter(e,t-1,t);t.autoClear=n}_applyGGXFilter(e,t,n){let r=this._renderer,i=this._pingPongRenderTarget,a=this._ggxMaterial,o=this._lodMeshes[n];o.material=a;let s=TL.get(a),c=n/(this._lodMeshes.length-1),l=t/(this._lodMeshes.length-1),u=Math.sqrt(c*c-l*l)*(0+c*1.25),{_lodMax:d}=this,f=this._sizeLods[n],p=3*f*(n>d-mL?n-d+mL:0),m=4*(this._cubeSize-f);e.texture.frame=(e.texture.frame||0)+1,s.envMap.value=e.texture,s.roughness.value=u,s.mipInt.value=d-t,this._setViewport(i,p,m,3*f,2*f),r.setRenderTarget(i),r.render(o,vL),i.texture.frame=(i.texture.frame||0)+1,s.envMap.value=i.texture,s.roughness.value=0,s.mipInt.value=d-n,this._setViewport(e,p,m,3*f,2*f),r.setRenderTarget(e),r.render(o,vL)}_blur(e,t,n,r,i){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,r,`latitudinal`,i),this._halfBlur(a,e,n,n,r,`longitudinal`,i)}_halfBlur(e,t,n,r,i,a,o){let s=this._renderer,c=this._blurMaterial;a!==`latitudinal`&&a!==`longitudinal`&&M(`blur direction must be either latitudinal or longitudinal!`);let l=this._lodMeshes[r];l.material=c;let u=TL.get(c),d=this._sizeLods[n]-1,f=isFinite(i)?Math.PI/(2*d):2*Math.PI/(2*gL-1),p=i/f,m=isFinite(i)?1+Math.floor(3*p):gL;m>gL&&j(`sigmaRadians, ${i}, is too large and will clip, as it requested ${m} samples when the maximum is set to ${gL}`);let h=[],g=0;for(let e=0;e<gL;++e){let t=e/p,n=Math.exp(-t*t/2);h.push(n),e===0?g+=n:e<m&&(g+=2*n)}for(let e=0;e<h.length;e++)h[e]=h[e]/g;e.texture.frame=(e.texture.frame||0)+1,u.envMap.value=e.texture,u.samples.value=m,u.weights.array=h,u.latitudinal.value=+(a===`latitudinal`),o&&(u.poleAxis.value=o);let{_lodMax:_}=this;u.dTheta.value=f,u.mipInt.value=_-n;let v=this._sizeLods[r],y=3*v*(r>_-mL?r-_+mL:0),b=4*(this._cubeSize-v);this._setViewport(t,y,b,3*v,2*v),s.setRenderTarget(t),s.render(l,vL)}_setViewport(e,t,n,r,i){this._renderer.isWebGLRenderer?(e.viewport.set(t,e.height-i-n,r,i),e.scissor.set(t,e.height-i-n,r,i)):(e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i))}};function AL(e){let t=[],n=[],r=[],i=e,a=e-mL+1+hL.length;for(let o=0;o<a;o++){let a=2**i;t.push(a);let s=1/a;o>e-mL?s=hL[o-e+mL-1]:o===0&&(s=0),n.push(s);let c=1/(a-2),l=-c,u=1+c,d=[l,l,u,l,u,u,l,l,u,u,l,u],f=new Float32Array(108),p=new Float32Array(72),m=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,r=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0],i=EL[e];f.set(r,18*i),p.set(d,12*i);let a=[i,i,i,i,i,i];m.set(a,6*i)}let h=new Oa;h.setAttribute(`position`,new sa(f,3)),h.setAttribute(`uv`,new sa(p,2)),h.setAttribute(`faceIndex`,new sa(m,1)),r.push(new bo(h,null)),i>mL&&i--}return{lodMeshes:r,sizeLods:t,sigmas:n}}function jL(e,t){let n=new Pr(e,t,{magFilter:Te,minFilter:Te,generateMipmaps:!1,type:Fe,format:Ue,colorSpace:Zt});return n.texture.mapping=306,n.texture.name=`PMREM.cubeUv`,n.texture.isPMREMTexture=!0,n.scissorTest=!0,n}function ML(e){let t=new vF;return t.depthTest=!1,t.depthWrite=!1,t.blending=0,t.name=`PMREM_${e}`,t}function NL(e,t,n){let r=ZA(Array(gL).fill(0)),i=vD(new P(0,1,0)),a=vD(0),o=W(gL),s=vD(0),c={n:o,latitudinal:s,weights:r,poleAxis:i,outputDirection:OL,dTheta:a,samples:vD(1),envMap:VA(),mipInt:vD(0),CUBEUV_TEXEL_WIDTH:W(1/t),CUBEUV_TEXEL_HEIGHT:W(1/n),CUBEUV_MAX_MIP:W(e)},l=ML(`blur`);return l.fragmentNode=lL({...c,latitudinal:s.equal(1)}),TL.set(l,c),l}function PL(e,t,n){let r={envMap:VA(),roughness:vD(0),mipInt:vD(0),CUBEUV_TEXEL_WIDTH:W(1/t),CUBEUV_TEXEL_HEIGHT:W(1/n),CUBEUV_MAX_MIP:W(e)},i=ML(`ggx`);return i.fragmentNode=pL({...r,N_immutable:OL,GGX_SAMPLES:K(_L)}),TL.set(i,r),i}function FL(e){let t=ML(`cubemap`);return t.fragmentNode=IM(e,OL),t}function IL(e){let t=ML(`equirect`);return t.fragmentNode=VA(e,TF(OL),0),t}var LL=new WeakMap;function RL(e){let t=Math.log2(e)-2,n=1/e;return{texelWidth:1/(3*Math.max(2**t,112)),texelHeight:n,maxMip:t}}function zL(e,t,n){let r=BL(t),i=r.get(e);if((i===void 0?-1:i.pmremVersion)!==e.pmremVersion){let t=e.image;if(e.isCubeTexture)if(HL(t))i=n.fromCubemap(e,i);else return null;else if(UL(t))i=n.fromEquirectangular(e,i);else return null;i.pmremVersion=e.pmremVersion,r.set(e,i)}return i.texture}function BL(e){let t=LL.get(e);return t===void 0&&(t=new WeakMap,LL.set(e,t)),t}var VL=class extends uT{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;let r=new Mr;r.isRenderTargetTexture=!0,this._texture=VA(r),this._width=vD(0),this._height=vD(0),this._maxMip=vD(0),this.updateBeforeType=Qw.RENDER}set value(e){this._value=e,this._pmrem=null}get value(){return this._value}updateFromTexture(e){let t=RL(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,n=t?t.pmremVersion:-1,r=this._value;n!==r.pmremVersion&&(t=r.isPMREMTexture===!0?r:zL(r,e.renderer,this._generator),t!==null&&(this._pmrem=t,this.updateFromTexture(t)))}setup(e){this._generator===null&&(this._generator=new kL(e.renderer)),this.updateBefore(e);let t=this.uvNode;t===null&&e.context.getUV&&(t=e.context.getUV(this,e)),t=kM.mul(J(t.x,t.y.negate(),t.z));let n=this.levelNode;return n===null&&e.context.getTextureLevel&&(n=e.context.getTextureLevel(this)),oL(this._texture,t,n,this._width,this._height,this._maxMip)}dispose(){super.dispose(),this._generator!==null&&this._generator.dispose()}};function HL(e){if(e==null)return!1;let t=0;for(let n=0;n<6;n++)e[n]!==void 0&&t++;return t===6}function UL(e){return e==null?!1:e.height>0}var WL=rE(VL).setParameterLength(1,3),GL=new WeakMap,KL=class extends AP{static get type(){return`EnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){let{material:t}=e,n=this.envNode;if(n.isTextureNode||n.isMaterialReferenceNode){let r=n.isTextureNode?n.value:t[n.property],i=this._getPMREMNodeCache(e.renderer),a=i.get(r);a===void 0&&(a=WL(r),i.set(r,a)),n=a}let r=t.useAnisotropy===!0||t.anisotropy>0?gN:vM,i=n.context(qL(RE,r)).mul(OM),a=n.context(JL(yM)).mul(Math.PI).mul(OM),o=hA(i),s=hA(a);e.context.radiance.addAssign(o),e.context.iblIrradiance.addAssign(s);let c=e.context.lightingModel.clearcoatRadiance;if(c){let e=hA(n.context(qL(VE,bM)).mul(OM));c.addAssign(e)}}_getPMREMNodeCache(e){let t=GL.get(e);return t===void 0&&(t=new WeakMap,GL.set(e,t)),t}},qL=(e,t)=>{let n=null;return{getUV:()=>(n===null&&(n=lM.negate().reflect(t),n=tk(e).mix(n,t).normalize(),n=n.transformDirection(Aj)),n),getTextureLevel:()=>e}},JL=e=>({getUV:()=>e,getTextureLevel:()=>W(1)}),YL=new ru,XL=class extends vF{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(YL),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t===null&&e.environmentNode&&(t=e.environmentNode),t?new KL(t):null}setupLightingModel(){return new UI}setupSpecular(){let e=ak(J(.04),FE.rgb,zE);ZE.assign(J(.04)),QE.assign(e),$E.assign(1)}setupVariants(){let e=this.metalnessNode?W(this.metalnessNode):IN;zE.assign(e);let t=this.roughnessNode?W(this.roughnessNode):FN;t=XF({roughness:t}),RE.assign(t),this.setupSpecular(),IE.assign(FE.rgb.mul(e.oneMinus()))}copy(e){return this.emissiveNode=e.emissiveNode,this.metalnessNode=e.metalnessNode,this.roughnessNode=e.roughnessNode,super.copy(e)}},ZL=new iu,QL=class extends XL{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(ZL),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(){let e=this.iorNode?W(this.iorNode):XN;aD.assign(e),ZE.assign(WO($O(aD.sub(1).div(aD.add(1))).mul(MN),J(1)).mul(jN)),QE.assign(ak(ZE,FE.rgb,zE)),$E.assign(ak(jN,1,zE))}setupLightingModel(){return new UI(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion)}setupVariants(e){if(super.setupVariants(e),this.useClearcoat){let e=this.clearcoatNode?W(this.clearcoatNode):RN,t=this.clearcoatRoughnessNode?W(this.clearcoatRoughnessNode):zN;BE.assign(e),VE.assign(XF({roughness:t}))}if(this.useSheen){let e=this.sheenNode?J(this.sheenNode):HN,t=this.sheenRoughnessNode?W(this.sheenRoughnessNode):UN;HE.assign(e),UE.assign(t)}if(this.useIridescence){let e=this.iridescenceNode?W(this.iridescenceNode):GN,t=this.iridescenceIORNode?W(this.iridescenceIORNode):KN,n=this.iridescenceThicknessNode?W(this.iridescenceThicknessNode):qN;WE.assign(e),GE.assign(t),KE.assign(n)}if(this.useAnisotropy){let e=(this.anisotropyNode?q(this.anisotropyNode):WN).toVar();JE.assign(e.length()),cE(JE.equal(0),()=>{e.assign(q(1,0))}).Else(()=>{e.divAssign(q(JE)),JE.assign(JE.saturate())}),qE.assign(JE.pow2().mix(RE.pow2(),1)),YE.assign(pN[0].mul(e.x).add(pN[1].mul(e.y))),XE.assign(pN[1].mul(e.x).sub(pN[0].mul(e.y)))}if(this.useTransmission){let e=this.transmissionNode?W(this.transmissionNode):JN,t=this.thicknessNode?W(this.thicknessNode):YN,n=this.attenuationDistanceNode?W(this.attenuationDistanceNode):ZN,r=this.attenuationColorNode?J(this.attenuationColorNode):QN;if(oD.assign(e),sD.assign(t),cD.assign(n),lD.assign(r),this.useDispersion){let e=this.dispersionNode?W(this.dispersionNode):aP;uD.assign(e)}}}setupClearcoatNormal(){return this.clearcoatNormalNode?J(this.clearcoatNormalNode):BN}setup(e){e.context.setupClearcoatNormal=()=>jk(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.iorNode=e.iorNode,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)}},$L=U(({normal:e,lightDirection:t,builder:n})=>{let r=q(e.dot(t).mul(.5).add(.5),0);if(n.material.gradientMap)return J(UM(`gradientMap`,`texture`).context({getUV:()=>r}).r);{let e=r.fwidth().mul(.5);return ak(J(.7),J(1),lk(W(.7).sub(e.x),W(.7).add(e.x),r.x))}}),eR=class extends FF{direct({lightDirection:e,lightColor:t,reflectedLight:n},r){let i=$L({normal:pM,lightDirection:e,builder:r}).mul(t);n.directDiffuse.addAssign(i.mul(BF({diffuseColor:FE.rgb})))}indirect(e){let{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(BF({diffuseColor:FE}))),r.indirectDiffuse.mulAssign(t)}},tR=new ou,nR=class extends vF{static get type(){return`MeshToonNodeMaterial`}constructor(e){super(),this.isMeshToonNodeMaterial=!0,this.lights=!0,this.setDefaultValues(tR),this.setValues(e)}setupLightingModel(){return new eR}},rR=U(()=>{let e=J(lM.z,0,lM.x.negate()).normalize(),t=lM.cross(e);return q(e.dot(vM),t.dot(vM)).mul(.495).add(.5)}).once([`NORMAL`,`VERTEX`])().toVar(`matcapUV`),iR=new du,aR=class extends vF{static get type(){return`MeshMatcapNodeMaterial`}constructor(e){super(),this.isMeshMatcapNodeMaterial=!0,this.setDefaultValues(iR),this.setValues(e)}setupVariants(e){let t=rR,n;n=e.material.matcap?UM(`matcap`,`texture`).context({getUV:()=>t}):J(ak(.2,.8,t.y)),FE.rgb.mulAssign(n.rgb)}},oR=rE(class extends uT{static get type(){return`RotateNode`}constructor(e,t){super(),this.positionNode=e,this.rotationNode=t}generateNodeType(e){return this.positionNode.getNodeType(e)}setup(e){let{rotationNode:t,positionNode:n}=this;if(this.getNodeType(e)===`vec2`){let e=t.cos(),r=t.sin();return CE(e,r,r.negate(),e).mul(n)}else{let e=t,r=TE(yE(1,0,0,0),yE(0,bO(e.x),vO(e.x).negate(),0),yE(0,vO(e.x),bO(e.x),0),yE(0,0,0,1)),i=TE(yE(bO(e.y),0,vO(e.y),0),yE(0,1,0,0),yE(vO(e.y).negate(),0,bO(e.y),0),yE(0,0,0,1)),a=TE(yE(bO(e.z),vO(e.z).negate(),0,0),yE(vO(e.z),bO(e.z),0,0),yE(0,0,1,0),yE(0,0,0,1));return r.mul(i).mul(a).mul(yE(n,1)).xyz}}}).setParameterLength(2),sR=new Pa,cR=class extends vF{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(sR),this.setValues(e)}setupPositionView(e){let{object:t,camera:n}=e,{positionNode:r,rotationNode:i,scaleNode:a,sizeAttenuation:o}=this,s=Qj.mul(J(r||0)),c=q(Gj[0].xyz.length(),Gj[1].xyz.length());a!==null&&(c=c.mul(q(a))),n.isPerspectiveCamera&&o===!1&&(c=c.mul(s.z.negate()));let l=rM.xy;if(t.center&&t.center.isVector2===!0){let e=Wk(`center`,`vec2`,t);l=l.sub(e.sub(.5))}l=l.mul(c);let u=W(i||VN),d=oR(l,u);return yE(s.xy.add(d),s.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)}},lR=new Ls,uR=new N,dR=class extends cR{static get type(){return`PointsNodeMaterial`}constructor(e){super(),this.sizeNode=null,this.isPointsNodeMaterial=!0,this.setDefaultValues(lR),this.setValues(e)}setupPositionView(){let{positionNode:e}=this;return Qj.mul(J(e||iM)).xyz}setupVertexSprite(e){let{material:t,camera:n}=e,{rotationNode:r,scaleNode:i,sizeNode:a,sizeAttenuation:o}=this,s=super.setupVertex(e);if(t.isNodeMaterial!==!0)return s;let c=a===null?iP:q(a);c=c.mul(nj),n.isPerspectiveCamera&&o===!0&&(c=c.mul(fR.div(cM.z.negate()))),i&&i.isNode&&(c=c.mul(q(i)));let l=rM.xy;if(r&&r.isNode){let e=W(r);l=oR(l,e)}return l=l.mul(c),l=l.div(sj.div(2)),l=l.mul(s.w),s=s.add(yE(l,0,0)),s}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)}},fR=vD(1).onFrameUpdate(function({renderer:e}){let t=e.getSize(uR);this.value=.5*t.y}),pR=class extends FF{constructor(){super(),this.shadowNode=W(1).toVar(`shadowMask`)}direct({lightNode:e}){e.shadowNode!==null&&this.shadowNode.mulAssign(e.shadowNode)}finish({context:e}){FE.a.mulAssign(this.shadowNode.oneMinus()),e.outgoingLight.rgb.assign(FE.rgb)}},mR=new Kl,hR=class extends vF{static get type(){return`ShadowNodeMaterial`}constructor(e){super(),this.isShadowNodeMaterial=!0,this.lights=!0,this.transparent=!0,this.setDefaultValues(mR),this.setValues(e)}setupLightingModel(){return new pR}};NE(`vec3`),NE(`vec3`),NE(`vec3`);var gR=class{constructor(e,t,n){this.renderer=e,this.nodes=t,this.info=n,this._context=typeof self<`u`?self:null,this._animationLoop=null,this._requestId=null}start(){let 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!==null&&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()}},_R=class{constructor(){this.weakMaps={}}_getWeakMap(e){let t=e.length,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<e.length-1;n++)if(t=t.get(e[n]),t===void 0)return;return t.get(e[e.length-1])}set(e,t){let n=this._getWeakMap(e);for(let t=0;t<e.length-1;t++){let r=e[t];n.has(r)===!1&&n.set(r,new WeakMap),n=n.get(r)}return n.set(e[e.length-1],t),this}delete(e){let t=this._getWeakMap(e);for(let n=0;n<e.length-1;n++)if(t=t.get(e[n]),t===void 0)return!1;return t.delete(e[e.length-1])}},vR=0;function yR(e){let t=Object.keys(e),n=Object.getPrototypeOf(e);for(;n;){let e=Object.getOwnPropertyDescriptors(n);for(let n in e)if(e[n]!==void 0){let r=e[n];r&&typeof r.get==`function`&&t.push(n)}n=Object.getPrototypeOf(n)}return t}var bR=class{constructor(e,t,n,r,i,a,o,s,c,l){this.id=vR++,this._nodes=e,this._geometries=t,this.renderer=n,this.object=r,this.material=i,this.scene=a,this.camera=o,this.lightsNode=s,this.context=c,this.geometry=r.geometry,this.version=i.version,this.drawRange=null,this.attributes=null,this.attributesId=null,this.pipeline=null,this.group=null,this.vertexBuffers=null,this.drawParams=null,this.bundle=null,this.clippingContext=l,this.clippingContextCacheKey=l===null?``:l.cacheKey,this.initialNodesCacheKey=this.getDynamicCacheKey(),this.initialCacheKey=this.getCacheKey(),this._nodeBuilderState=null,this._bindings=null,this._monitor=null,this.onDispose=null,this.isRenderObject=!0,this.onMaterialDispose=()=>{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._nodes.getForRender(this)}getMonitor(){return this._monitor||=this.getNodeBuilderState().observer}getBindings(){return this._bindings||=this.getNodeBuilderState().createBindings()}getBindingGroup(e){for(let 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;let e=this.getNodeBuilderState().nodeAttributes,t=this.geometry,n=[],r=new Set,i={};for(let a of e){let e;if(a.node&&a.node.attribute?e=a.node.attribute:(e=t.getAttribute(a.name),i[a.name]=e.id),e===void 0)continue;n.push(e);let o=e.isInterleavedBufferAttribute?e.data:e;r.add(o)}return this.attributes=n,this.attributesId=i,this.vertexBuffers=Array.from(r.values()),n}getVertexBuffers(){return this.vertexBuffers===null&&this.getAttributes(),this.vertexBuffers}getDrawParameters(){let{object:e,material:t,geometry:n,group:r,drawRange:i}=this,a=this.drawParams||={vertexCount:0,firstVertex:0,instanceCount:0,firstInstance:0},o=this.getIndex(),s=o!==null,c=1;if(n.isInstancedBufferGeometry===!0?c=n.instanceCount:e.count!==void 0&&(c=Math.max(0,e.count)),c===0)return null;if(a.instanceCount=c,e.isBatchedMesh===!0)return a;let l=1;t.wireframe===!0&&!e.isPoints&&!e.isLineSegments&&!e.isLine&&!e.isLineLoop&&(l=2);let u=i.start*l,d=(i.start+i.count)*l;r!==null&&(u=Math.max(u,r.start*l),d=Math.min(d,(r.start+r.count)*l));let f=n.attributes.position,p=1/0;s?p=o.count:f!=null&&(p=f.count),u=Math.max(u,0),d=Math.min(d,p);let m=d-u;return m<0||m===1/0?null:(a.vertexCount=m,a.firstVertex=u,a)}getGeometryCacheKey(){let{geometry:e}=this,t=``;for(let n of Object.keys(e.attributes).sort()){let 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(let n of Object.keys(e.morphAttributes).sort()){let r=e.morphAttributes[n];t+=`morph-`+n+`,`;for(let e=0,n=r.length;e<n;e++){let n=r[e];t+=n.id+`,`}}return e.index&&(t+=`index,`),t}getMaterialCacheKey(){let{object:e,material:t,renderer:n}=this,r=t.customProgramCacheKey();for(let e of yR(t)){if(/^(is[A-Z]|_)|^(visible|version|uuid|name|opacity|userData)$/.test(e))continue;let i=t[e],a;if(i!==null){let e=typeof i;e===`number`?a=i===0?`0`:`1`:e===`object`?(a=`{`,i.isTexture&&(a+=i.mapping,n.backend.isWebGPUBackend===!0&&(a+=i.magFilter,a+=i.minFilter,a+=i.wrapS,a+=i.wrapT,a+=i.wrapR)),a+=`}`):a=String(i)}else a=String(i);r+=a+`,`}return r+=this.clippingContextCacheKey+`,`,e.geometry&&(r+=this.getGeometryCacheKey()),e.skeleton&&(r+=e.skeleton.bones.length+`,`),e.isBatchedMesh&&(r+=e._matricesTexture.uuid+`,`,e._colorsTexture!==null&&(r+=e._colorsTexture.uuid+`,`)),(e.isInstancedMesh||e.count>1||Array.isArray(e.morphTargetInfluences))&&(r+=e.uuid+`,`),r+=this.context.id+`,`,r+=e.receiveShadow+`,`,Iw(r)}get needsGeometryUpdate(){if(this.geometry.id!==this.object.geometry.id)return!0;if(this.attributes!==null){let e=this.attributesId;for(let t in e){let 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=Rw(e,this.camera.cameras.length)),this.object.receiveShadow&&(e=Rw(e,1)),e=Rw(e,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()}},xR=[],SR=class{constructor(e,t,n,r,i,a){this.renderer=e,this.nodes=t,this.geometries=n,this.pipelines=r,this.bindings=i,this.info=a,this.chainMaps={}}get(e,t,n,r,i,a,o,s){let c=this.getChainMap(s);xR[0]=e,xR[1]=t,xR[2]=a,xR[3]=i;let l=c.get(xR);return l===void 0?(l=this.createRenderObject(this.nodes,this.geometries,this.renderer,e,t,n,r,i,a,o,s),c.set(xR,l)):(l.camera=r,l.updateClipping(o),l.needsGeometryUpdate&&l.setGeometry(e.geometry),(l.version!==t.version||l.needsUpdate)&&(l.initialCacheKey===l.getCacheKey()?l.version=t.version:(l.dispose(),l=this.get(e,t,n,r,i,a,o,s)))),xR[0]=null,xR[1]=null,xR[2]=null,xR[3]=null,l}getChainMap(e=`default`){return this.chainMaps[e]||(this.chainMaps[e]=new _R)}dispose(){this.chainMaps={}}createRenderObject(e,t,n,r,i,a,o,s,c,l,u){let d=this.getChainMap(u),f=new bR(e,t,n,r,i,a,o,s,c,l);return f.onDispose=()=>{this.pipelines.delete(f),this.bindings.deleteForRender(f),this.nodes.delete(f),d.delete(f.getChainArray())},f}},CR=class{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}},wR={VERTEX:1,INDEX:2,STORAGE:3,INDIRECT:4},TR=16,ER=211,DR=212,OR=class extends CR{constructor(e,t){super(),this.backend=e,this.info=t}delete(e){let t=super.delete(e);return t!==null&&(this.backend.destroyAttribute(e),this.info.destroyAttribute(e)),t}update(e,t){let n=this.get(e);if(n.version===void 0)t===wR.VERTEX?(this.backend.createAttribute(e),this.info.createAttribute(e)):t===wR.INDEX?(this.backend.createIndexAttribute(e),this.info.createIndexAttribute(e)):t===wR.STORAGE?(this.backend.createStorageAttribute(e),this.info.createStorageAttribute(e)):t===wR.INDIRECT&&(this.backend.createIndirectStorageAttribute(e),this.info.createIndirectStorageAttribute(e)),n.version=this._getBufferAttribute(e).version;else{let t=this._getBufferAttribute(e);(n.version<t.version||t.usage===35048)&&(this.backend.updateAttribute(e),n.version=t.version)}}_getBufferAttribute(e){return e.isInterleavedBufferAttribute&&(e=e.data),e}};function kR(e){return e.index===null?e.attributes.position.version:e.index.version}function AR(e){return e.index===null?e.attributes.position.id:e.index.id}function jR(e){let t=[],n=e.index,r=e.attributes.position;if(n!==null){let e=n.array;for(let n=0,r=e.length;n<r;n+=3){let r=e[n+0],i=e[n+1],a=e[n+2];t.push(r,i,i,a,a,r)}}else{let e=r.array;for(let n=0,r=e.length/3-1;n<r;n+=3){let e=n+0,r=n+1,i=n+2;t.push(e,r,r,i,i,e)}}let i=new(r.count>=65535?ma:fa)(t,1);return i.version=kR(e),i.__id=AR(e),i}var MR=class extends CR{constructor(e,t){super(),this.attributes=e,this.info=t,this.wireframes=new WeakMap,this.attributeCall=new WeakMap,this._geometryDisposeListeners=new Map}has(e){let t=e.geometry;return super.has(t)&&this.get(t).initialized===!0}updateForRender(e){this.has(e)===!1&&this.initGeometry(e),this.updateAttributes(e)}initGeometry(e){let t=e.geometry,n=this.get(t);n.initialized=!0,this.info.memory.geometries++;let r=()=>{this.info.memory.geometries--;let n=t.index,i=e.getAttributes();n!==null&&this.attributes.delete(n);for(let e of i)this.attributes.delete(e);let a=this.wireframes.get(t);a!==void 0&&this.attributes.delete(a),t.removeEventListener(`dispose`,r),this._geometryDisposeListeners.delete(t)};t.addEventListener(`dispose`,r),this._geometryDisposeListeners.set(t,r)}updateAttributes(e){let t=e.getAttributes();for(let e of t)e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute?this.updateAttribute(e,wR.STORAGE):this.updateAttribute(e,wR.VERTEX);let n=this.getIndex(e);n!==null&&this.updateAttribute(n,wR.INDEX);let r=e.geometry.indirect;r!==null&&this.updateAttribute(r,wR.INDIRECT)}updateAttribute(e,t){let 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){let{geometry:t,material:n}=e,r=t.index;if(n.wireframe===!0){let e=this.wireframes,n=e.get(t);n===void 0?(n=jR(t),e.set(t,n)):(n.version!==kR(t)||n.__id!==AR(t))&&(this.attributes.delete(n),n=jR(t),e.set(t,n)),r=n}return r}dispose(){for(let[e,t]of this._geometryDisposeListeners.entries())e.removeEventListener(`dispose`,t);this._geometryDisposeListeners.clear()}},NR=class{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,attributes:0,indexAttributes:0,storageAttributes:0,indirectStorageAttributes:0,readbackBuffers:0,programs:0,renderTargets:0,total:0,texturesSize:0,attributesSize:0,indexAttributesSize:0,storageAttributesSize:0,indirectStorageAttributesSize:0,readbackBuffersSize:0,programsSize:0},this.memoryMap=new Map}update(e,t,n){this.render.drawCalls++,e.isMesh||e.isSprite?this.render.triangles+=t/3*n:e.isPoints?this.render.points+=n*t:e.isLineSegments?this.render.lines+=t/2*n:e.isLine?this.render.lines+=n*(t-1):M(`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;for(let e in this.memory)this.memory[e]=0;this.memoryMap.clear()}createTexture(e){let t=this._getTextureMemorySize(e);this.memoryMap.set(e,t),this.memory.textures++,this.memory.total+=t,this.memory.texturesSize+=t}destroyTexture(e){let t=this.memoryMap.get(e)||0;this.memoryMap.delete(e),this.memory.textures--,this.memory.total-=t,this.memory.texturesSize-=t}_createAttribute(e,t){let n=this._getAttributeMemorySize(e);this.memoryMap.set(e,{size:n,type:t}),this.memory[t]++,this.memory.total+=n,this.memory[t+`Size`]+=n}createAttribute(e){this._createAttribute(e,`attributes`)}createIndexAttribute(e){this._createAttribute(e,`indexAttributes`)}createStorageAttribute(e){this._createAttribute(e,`storageAttributes`)}createIndirectStorageAttribute(e){this._createAttribute(e,`indirectStorageAttributes`)}destroyAttribute(e){let t=this.memoryMap.get(e);t&&(this.memoryMap.delete(e),this.memory[t.type]--,this.memory.total-=t.size,this.memory[t.type+`Size`]-=t.size)}createReadbackBuffer(e){let t=e.maxByteLength;this.memoryMap.set(e,{size:t,type:`readbackBuffers`}),this.memory.readbackBuffers++,this.memory.total+=t,this.memory.readbackBuffersSize+=t}destroyReadbackBuffer(e){let{size:t}=this.memoryMap.get(e);this.memoryMap.delete(e),this.memory.readbackBuffers--,this.memory.total-=t,this.memory.readbackBuffersSize-=t}createProgram(e){let t=e.code.length;this.memoryMap.set(e,t),this.memory.programs++,this.memory.total+=t,this.memory.programsSize+=t}destroyProgram(e){let t=this.memoryMap.get(e)||0;this.memoryMap.delete(e),this.memory.programs--,this.memory.total-=t,this.memory.programsSize-=t}_getTextureMemorySize(e){if(e.isCompressedTexture)return 1;let t=1;e.type===1010||e.type===1009?t=1:e.type===1011||e.type===1012||e.type===1016?t=2:(e.type===1013||e.type===1014||e.type===1015)&&(t=4);let n=4;e.format===1021||e.format===1028||e.format===1029||e.format===1026||e.format===1027?n=1:e.format===1030||e.format===1031?n=2:(e.format===1022||e.format===1032)&&(n=3);let r=t*n;e.type===1017||e.type===1018?r=2:(e.type===1020||e.type===35902||e.type===35899)&&(r=4);let i=e.width||1,a=e.height||1,o=e.isCubeTexture?6:e.depth||1,s=i*a*o*r,c=e.mipmaps;if(c&&c.length>0){let e=0;for(let t=0;t<c.length;t++){let n=c[t];if(n.data)e+=n.data.byteLength;else{let s=n.width||Math.max(1,i>>t),c=n.height||Math.max(1,a>>t);e+=s*c*o*r}}s+=e}else e.generateMipmaps&&(s*=1.333);return Math.round(s)}_getAttributeMemorySize(e){return e.isInterleavedBufferAttribute&&(e=e.data),e.array?e.array.byteLength:e.count&&e.itemSize?e.count*e.itemSize*4:0}},PR=class{constructor(e){this.cacheKey=e,this.usedTimes=0}},FR=class extends PR{constructor(e,t,n){super(e),this.vertexProgram=t,this.fragmentProgram=n}},IR=class extends PR{constructor(e,t){super(e),this.computeProgram=t,this.isComputePipeline=!0}},LR=0,RR=class{constructor(e,t,n,r=null,i=null){this.id=LR++,this.code=e,this.stage=t,this.name=n,this.transforms=r,this.attributes=i,this.usedTimes=0}},zR=class extends CR{constructor(e,t,n){super(),this.backend=e,this.nodes=t,this.info=n,this.bindings=null,this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}getForCompute(e,t){let{backend:n}=this,r=this.get(e);if(this._needsComputeUpdate(e)){let i=r.pipeline;i&&(i.usedTimes--,i.computeProgram.usedTimes--);let a=this.nodes.getForCompute(e),o=this.programs.compute.get(a.computeShader);o===void 0&&(i&&i.computeProgram.usedTimes===0&&this._releaseProgram(i.computeProgram),o=new RR(a.computeShader,`compute`,e.name,a.transforms,a.nodeAttributes),this.programs.compute.set(a.computeShader,o),n.createProgram(o),this.info.createProgram(o));let s=this._getComputeCacheKey(e,o),c=this.caches.get(s);c===void 0&&(i&&i.usedTimes===0&&this._releasePipeline(i),c=this._getComputePipeline(e,o,s,t)),c.usedTimes++,o.usedTimes++,r.version=e.version,r.pipeline=c}return r.pipeline}getForRender(e,t=null){let{backend:n}=this,r=this.get(e);if(this._needsRenderUpdate(e)){let i=r.pipeline;i&&(i.usedTimes--,i.vertexProgram.usedTimes--,i.fragmentProgram.usedTimes--);let a=e.getNodeBuilderState(),o=e.material?e.material.name:``,s=this.programs.vertex.get(a.vertexShader);s===void 0&&(i&&i.vertexProgram.usedTimes===0&&this._releaseProgram(i.vertexProgram),s=new RR(a.vertexShader,`vertex`,o),this.programs.vertex.set(a.vertexShader,s),n.createProgram(s),this.info.createProgram(s));let c=this.programs.fragment.get(a.fragmentShader);c===void 0&&(i&&i.fragmentProgram.usedTimes===0&&this._releaseProgram(i.fragmentProgram),c=new RR(a.fragmentShader,`fragment`,o),this.programs.fragment.set(a.fragmentShader,c),n.createProgram(c),this.info.createProgram(c));let l=this._getRenderCacheKey(e,s,c),u=this.caches.get(l);u===void 0?(i&&i.usedTimes===0&&this._releasePipeline(i),u=this._getRenderPipeline(e,s,c,l,t)):e.pipeline=u,u.usedTimes++,s.usedTimes++,c.usedTimes++,r.pipeline=u}return r.pipeline}isReady(e){let t=this.get(e).pipeline;if(t===void 0)return!1;let n=this.backend.get(t);return n.pipeline!==void 0&&n.pipeline!==null}delete(e){let 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||=this._getComputeCacheKey(e,t);let i=this.caches.get(n);return i===void 0&&(i=new IR(n,t),this.caches.set(n,i),this.backend.createComputePipeline(i,r)),i}_getRenderPipeline(e,t,n,r,i){r||=this._getRenderCacheKey(e,t,n);let a=this.caches.get(r);return a===void 0&&(a=new FR(r,t,n),this.caches.set(r,a),e.pipeline=a,this.backend.createRenderPipeline(e,i)),a}_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){let t=e.code,n=e.stage;this.programs[n].delete(t),this.info.destroyProgram(e)}_needsComputeUpdate(e){let 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)}},BR=class extends CR{constructor(e,t,n,r,i,a){super(),this.backend=e,this.textures=n,this.pipelines=i,this.attributes=r,this.nodes=t,this.info=a,this.pipelines.bindings=this}getForRender(e){let t=e.getBindings();for(let e of t){let n=this.get(e);n.bindGroup===void 0&&(this._init(e),this.backend.createBindings(e,t,0),n.bindGroup=e)}return t}getForCompute(e){let t=this.nodes.getForCompute(e).bindings;for(let e of t){let n=this.get(e);n.bindGroup===void 0&&(this._init(e),this.backend.createBindings(e,t,0),n.bindGroup=e)}return t}updateForCompute(e){this._updateBindings(this.getForCompute(e))}updateForRender(e){this._updateBindings(this.getForRender(e))}deleteForCompute(e){let t=this.nodes.getForCompute(e).bindings;for(let e of t)this.backend.deleteBindGroupData(e),this.delete(e)}deleteForRender(e){let t=e.getBindings();for(let e of t)this.backend.deleteBindGroupData(e),this.delete(e)}_updateBindings(e){for(let t of e)this._update(t,e)}_init(e){for(let 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){let e=t.attribute,n=e.isIndirectStorageBufferAttribute?wR.INDIRECT:wR.STORAGE;this.attributes.update(e,n)}}_update(e,t){let{backend:n}=this,r=!1,i=!0,a=0,o=0;for(let t of e.bindings)if(this.nodes.updateGroup(t)!==!1){if(t.isStorageBuffer){let e=t.attribute,i=e.isIndirectStorageBufferAttribute?wR.INDIRECT:wR.STORAGE,a=n.get(t);this.attributes.update(e,i),a.attribute!==e&&(a.attribute=e,r=!0)}if(t.isUniformBuffer)t.update()&&n.updateBinding(t);else if(t.isSampledTexture){let s=t.update(),c=t.texture,l=this.textures.get(c);if(s&&(this.textures.updateTexture(c),t.generation!==l.generation&&(t.generation=l.generation,r=!0),l.bindGroups.add(e)),n.get(c).externalTexture!==void 0||l.isDefaultTexture?i=!1:(a=a*10+c.id,o+=c.version),c.isStorageTexture===!0&&c.mipmapsAutoUpdate===!0){let e=this.get(c);t.store===!0?e.needsMipmap=!0:this.textures.needsMipmaps(c)&&e.needsMipmap===!0&&(this.backend.generateMipmaps(c),e.needsMipmap=!1)}}else if(t.isSampler&&t.update()){let e=this.textures.updateSampler(t.texture);t.samplerKey!==e&&(t.samplerKey=e,r=!0)}t.isBuffer&&t.updateRanges.length>0&&t.clearUpdateRanges()}r===!0&&this.backend.updateBindings(e,t,i?a:0,o)}};function VR(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:e.z-t.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function HR(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:t.z-e.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function UR(e){return(e.transmission>0||e.transmissionNode&&e.transmissionNode.isNode)&&e.side===2&&e.forceSinglePass===!1}var WR=class{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,i,a,o){let s=this.renderItems[this.renderItemsIndex];return s===void 0?(s={id:e.id,object:e,geometry:t,material:n,groupOrder:r,renderOrder:e.renderOrder,z:i,group:a,clippingContext:o},this.renderItems[this.renderItemsIndex]=s):(s.id=e.id,s.object=e,s.geometry=t,s.material=n,s.groupOrder=r,s.renderOrder=e.renderOrder,s.z=i,s.group=a,s.clippingContext=o),this.renderItemsIndex++,s}push(e,t,n,r,i,a,o){let s=this.getNextRenderItem(e,t,n,r,i,a,o);e.occlusionTest===!0&&this.occlusionQueryCount++,n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(UR(n)&&this.transparentDoublePass.push(s),this.transparent.push(s)):this.opaque.push(s)}unshift(e,t,n,r,i,a,o){let s=this.getNextRenderItem(e,t,n,r,i,a,o);n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(UR(n)&&this.transparentDoublePass.unshift(s),this.transparent.unshift(s)):this.opaque.unshift(s)}pushBundle(e){this.bundles.push(e)}pushLight(e){this.lightsArray.push(e)}sort(e,t){this.opaque.length>1&&this.opaque.sort(e||VR),this.transparentDoublePass.length>1&&this.transparentDoublePass.sort(t||HR),this.transparent.length>1&&this.transparent.sort(t||HR)}finish(){this.lightsNode.setLights(this.lightsArray);for(let e=this.renderItemsIndex,t=this.renderItems.length;e<t;e++){let t=this.renderItems[e];if(t.id===null)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.groupOrder=null,t.renderOrder=null,t.z=null,t.group=null,t.clippingContext=null}}},GR=[],KR=class{constructor(e){this.lighting=e,this.lists=new _R}get(e,t){let n=this.lists;GR[0]=e,GR[1]=t;let r=n.get(GR);return r===void 0&&(r=new WR(this.lighting,e,t),n.set(GR,r)),GR[0]=null,GR[1]=null,r}dispose(){this.lists=new _R}},qR=0,JR=class{constructor(){this.id=qR++,this.mrt=null,this.color=!0,this.clearColor=!0,this.clearColorValue={r:0,g:0,b:0,a:1},this.depth=!0,this.clearDepth=!0,this.clearDepthValue=1,this.stencil=!1,this.clearStencil=!0,this.clearStencilValue=1,this.viewport=!1,this.viewportValue=new Nr,this.scissor=!1,this.scissorValue=new Nr,this.renderTarget=null,this.textures=null,this.depthTexture=null,this.activeCubeFace=0,this.activeMipmapLevel=0,this.sampleCount=1,this.width=0,this.height=0,this.occlusionQueryCount=0,this.clippingContext=null,this.camera=null,this.isRenderContext=!0}getCacheKey(){return YR(this)}};function YR(e){let{textures:t,activeCubeFace:n,activeMipmapLevel:r}=e,i=[n,r];for(let e of t)i.push(e.id);return Lw(i)}var XR=class{constructor(e){this.renderer=e,this._renderContexts={}}get(e=null,t=null,n=0){let r;if(e===null)r=`default`;else{let t=e.texture.format,n=e.texture.type;r=`${e.textures.length}:${t}:${n}:${e.samples}:${e.depthBuffer}:${e.stencilBuffer}`}let i=t===null?`default`:t.id,a=r+`-`+i+`-`+n,o=this._renderContexts[a];return o===void 0&&(o=new JR,o.mrt=t,this._renderContexts[a]=o),e!==null&&(o.sampleCount=e.samples===0?1:e.samples),o.clearDepthValue=this.renderer.getClearDepth(),o.clearStencilValue=this.renderer.getClearStencil(),o}dispose(){this._renderContexts={}}},ZR=new P,QR=class extends CR{constructor(e,t,n){super(),this.renderer=e,this.backend=t,this.info=n,this._htmlTextures=new Set}updateRenderTarget(e,t=0){let n=this.get(e),r=e.samples===0?1:e.samples,i=n.depthTextureMips||={},a=e.textures,o=this.getSize(a[0]),s=o.width>>t,c=o.height>>t,l=e.depthTexture||i[t],u=e.depthBuffer===!0||e.stencilBuffer===!0,d=!1;l===void 0&&u&&(l=new $s,l.format=e.stencilBuffer?Ge:We,l.type=e.stencilBuffer?Re:Ne,l.image.width=s,l.image.height=c,l.image.depth=o.depth,l.renderTarget=e,l.isArrayTexture=e.multiview===!0&&o.depth>1,i[t]=l),(n.width!==o.width||o.height!==n.height)&&(d=!0,l&&(l.needsUpdate=!0,l.image.width=s,l.image.height=c,l.image.depth=l.isArrayTexture?l.image.depth:1)),n.width=o.width,n.height=o.height,n.textures=a,n.depthTexture=l||null,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,n.renderTarget=e,n.sampleCount!==r&&(d=!0,l&&(l.needsUpdate=!0),n.sampleCount=r);let f={sampleCount:r};if(e.isXRRenderTarget!==!0){for(let e=0;e<a.length;e++){let t=a[e];d&&(t.needsUpdate=!0),this.updateTexture(t,f)}l&&this.updateTexture(l,f)}n.initialized!==!0&&(n.initialized=!0,this.info.memory.renderTargets++,n.onDispose=()=>{this._destroyRenderTarget(e)},e.addEventListener(`dispose`,n.onDispose))}updateTexture(e,t={}){let n=this.get(e);if(n.initialized===!0&&n.version===e.version)return;let r=e.isRenderTargetTexture||e.isDepthTexture||e.isFramebufferTexture,i=this.backend;if(r&&n.initialized===!0&&i.destroyTexture(e),e.isFramebufferTexture){let t=this.renderer.getRenderTarget();t?e.type=t.texture.type:e.type=ke}if(e.isHTMLTexture&&e.image){let t=this.renderer.domElement;if(`requestPaint`in t){if(t.hasAttribute(`layoutsubtree`)||t.setAttribute(`layoutsubtree`,`true`),e.image.parentNode!==t&&t.appendChild(e.image),this._htmlTextures.size===0){let e=this._htmlTextures;t.onpaint=t=>{let n=t&&t.changedElements;for(let t of e)(!n||n.includes(t.image))&&(t.needsUpdate=!0)}}this._htmlTextures.add(e)}}let{width:a,height:o,depth:s}=this.getSize(e);if(t.width=a,t.height=o,t.depth=s,t.needsMipmaps=this.needsMipmaps(e),t.levels=t.needsMipmaps?this.getMipLevels(e,a,o):1,e.isCubeTexture&&e.mipmaps.length>0&&t.levels++,r||e.isStorageTexture===!0||e.isExternalTexture===!0)i.createTexture(e,t),n.generation=e.version;else if(e.version>0){let r=e.image;if(r===void 0)j(`Renderer: Texture marked for update but image is undefined.`);else if(r.complete===!1)j(`Renderer: Texture marked for update but image is incomplete.`);else{if(e.images){let n=[];for(let t of e.images)n.push(t);t.images=n}else t.image=r;(n.isDefaultTexture===void 0||n.isDefaultTexture===!0)&&(i.createTexture(e,t),n.isDefaultTexture=!1,n.generation=e.version),e.source.dataReady===!0&&i.updateTexture(e,t);let a=e.isStorageTexture===!0&&e.mipmapsAutoUpdate===!1;t.needsMipmaps&&e.mipmaps.length===0&&!a&&i.generateMipmaps(e),e.onUpdate&&e.onUpdate(e)}}else i.createDefaultTexture(e),n.isDefaultTexture=!0,n.generation=e.version;n.initialized!==!0&&(n.initialized=!0,n.generation=e.version,n.bindGroups=new Set,this.info.createTexture(e),e.isVideoTexture&&Sr.enabled===!0&&Sr.getTransfer(e.colorSpace)!==`srgb`&&j(`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=ZR){let n=e.images?e.images[0]:e.image;return n?(n.image!==void 0&&(n=n.image),e.isHTMLTexture?(t.width=n.offsetWidth||1,t.height=n.offsetHeight||1,t.depth=1):typeof HTMLVideoElement<`u`&&n instanceof HTMLVideoElement?(t.width=n.videoWidth||1,t.height=n.videoHeight||1,t.depth=1):typeof VideoFrame<`u`&&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 r=e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture===!0?1: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){let t=this.get(e),n=t.textures,r=t.depthTexture;e.removeEventListener(`dispose`,t.onDispose);for(let e=0;e<n.length;e++)this._destroyTexture(n[e]);r&&this._destroyTexture(r),this.delete(e),this.backend.delete(e),this.info.memory.renderTargets--}}_destroyTexture(e){if(this.has(e)===!0){let t=this.get(e);e.removeEventListener(`dispose`,t.onDispose);let n=t.isDefaultTexture;if(this.backend.destroyTexture(e,n),t.bindGroups)for(let e of t.bindGroups){let t=this.backend.get(e);t.groups=void 0,t.versions=void 0}this._htmlTextures.delete(e),this.delete(e),this.info.destroyTexture(e)}}},$R=class extends I{constructor(e,t,n,r=1){super(e,t,n),this.a=r}set(e,t,n,r=1){return this.a=r,super.set(e,t,n)}copy(e){return e.a!==void 0&&(this.a=e.a),super.copy(e)}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}},ez=class extends ME{static get type(){return`ParameterNode`}constructor(e,t=null){super(e,t),this.isParameterNode=!0}getMemberType(e,t){let n=this.getNodeType(e),r=e.getStructTypeNode(n),i;return r===null?(M(`TSL: Member "${t}" not found in struct "${n}".`,new Pw),i=`float`):i=r.getMemberType(e,t),i}getHash(){return String(this.id)}generate(){return this.name}},tz=(e,t)=>new ez(e,t),nz=rE(class extends sT{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(e)?this.outputNode.getElementType(e):`void`}generateNodeType(e){return this.hasOutput(e)?this.outputNode.getNodeType(e):`void`}getMemberType(e,t){return this.hasOutput(e)?this.outputNode.getMemberType(e,t):`void`}addToStack(e,t=this.nodes.length){return e.isNode===!0?(this.nodes.splice(t,0,e),this):(M(`TSL: Invalid node added to stack.`,new Pw),this)}addToStackBefore(e){let t=this._currentNode?this.nodes.indexOf(this._currentNode):0;return this.addToStack(e,t)}If(e,t){let n=new $T(t);return this._currentCond=_k(e,n),this.addToStack(this._currentCond)}ElseIf(e,t){let n=_k(e,new $T(t));return this._currentCond.elseNode=n,this._currentCond=n,this}Else(e){return this._currentCond.elseNode=new $T(e),this}Switch(e){return this._expressionNode=B(e),this}Case(...e){let t=[];if(e.length>=2)for(let n=0;n<e.length-1;n++)t.push(this._expressionNode.equal(B(e[n])));else M(`TSL: Invalid parameter length. Case() requires at least two parameters.`,new Pw);let n=e[e.length-1],r=new $T(n),i=t[0];for(let e=1;e<t.length;e++)i=i.or(t[e]);let a=_k(i,r);return this._currentCond===null?(this._currentCond=a,this.addToStack(this._currentCond)):(this._currentCond.elseNode=a,this._currentCond=a,this)}Default(e){return this.Else(e),this}setup(e){let t=e.getNodeProperties(this),n=0;for(let r of this.getChildren())r.isVarNode&&r.isIntent(e)&&r.isAssign(e)!==!0||(t[`node`+n++]=r);return t.outputNode||null}hasOutput(e){return this.outputNode&&this.outputNode.isNode&&this.outputNode.getNodeType(e)!==`void`}build(e,...t){let n=sE(),r=e.buildStage;oE(this),e.setActiveStack(this);let i=t=>{if(this._currentNode=t,!(t.isVarNode&&t.isIntent(e)&&t.isAssign(e)!==!0)){if(r===`setup`)t.build(e);else if(r===`analyze`)t.build(e,this);else if(r===`generate`){let n=e.getDataFromNode(t,`any`).stages,r=n&&n[e.shaderStage];if(t.isVarNode&&r&&r.length===1&&r[0]&&r[0].isStackNode)return;t.build(e,`void`)}}},a=[...this.nodes];for(let e of a)i(e);this._currentNode=null;let o=this.nodes.filter(e=>a.indexOf(e)===-1);for(let e of o)i(e);let s;return s=this.hasOutput(e)?this.outputNode.build(e,...t):super.build(e,...t),oE(n),e.removeActiveStack(this),s}}).setParameterLength(0,1);function rz(e){return Object.entries(e).map(([e,t])=>typeof t==`string`?{name:e,type:t,atomic:!1}:{name:e,type:t.type,atomic:t.atomic||!1})}var iz=class extends sT{static get type(){return`StructTypeNode`}constructor(e,t=null){super(`struct`),this.membersLayout=rz(e),this.name=t,this.isStructLayoutNode=!0}getLength(){let e=Float32Array.BYTES_PER_ELEMENT,t=1,n=0;for(let r of this.membersLayout){let i=r.type,a=Ww(i),o=Gw(i)/e;t=Math.max(t,o);let s=n%t%o;s!==0&&(n+=o-s),n+=a}return Math.ceil(n/t)*t}getMemberType(e,t){let n=this.membersLayout.find(e=>e.name===t);return n?n.type:`void`}generateNodeType(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)}},az=class extends sT{static get type(){return`StructNode`}constructor(e,t){super(`vec3`),this.structTypeNode=e,this.values=t,this.isStructNode=!0}generateNodeType(e){return this.structTypeNode.getNodeType(e)}getMemberType(e,t){return this.structTypeNode.getMemberType(e,t)}_getChildren(){let e=super._getChildren(),t=e.find(e=>e.childNode===this.structTypeNode);return e.splice(e.indexOf(t),1),e.push(t),e}generate(e){let 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}},oz=(e,t=null)=>{let n=new iz(e,t),r=(...t)=>{let r=null;if(t.length>0)if(t[0].isNode){r={};let n=Object.keys(e);for(let e=0;e<t.length;e++)r[n[e]]=t[e]}else r=t[0];return new az(n,r)};return r.layout=n,r.isStruct=!0,r},sz=class extends sT{static get type(){return`OutputStructNode`}constructor(...e){super(),this.members=e,this.isOutputStructNode=!0}generateNodeType(){return`OutputType`}generate(e){let t=e.getDataFromNode(this);if(t.membersLayout===void 0){let n=this.members,r=[];for(let t=0;t<n.length;t++){let i=`m`+t,a=n[t].getNodeType(e);r.push({name:i,type:a,index:t})}t.membersLayout=r,t.structType=e.getOutputStructTypeFromNode(this,t.membersLayout)}let n=e.getOutputStructName(),r=this.members,i=n===``?``:n+`.`;for(let t=0;t<r.length;t++){let n=r[t].build(e);e.addLineFlowCode(`${i}m${t} = ${n}`,this)}return n}},cz=rE(sz),lz=class{constructor(e=1){this.blending=e,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.premultiplyAlpha=!1}copy(e){return this.blending=e.blending,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.premultiplyAlpha=e.premultiplyAlpha,this}clone(){return new this.constructor().copy(this)}},uz=new lz(0),dz=new lz(6);function fz(e,t){for(let n=0;n<e.length;n++)if(e[n].name===t)return n;return-1}var pz=rE(class extends sz{static get type(){return`MRTNode`}constructor(e){super(),this.outputNodes=e,this.blendModes={output:dz},this.isMRTNode=!0}setBlendMode(e,t){return this.blendModes[e]=t,this}getBlendMode(e){return this.blendModes[e]||uz}has(e){return this.outputNodes[e]!==void 0}get(e){return this.outputNodes[e]}merge(e){let t={...this.outputNodes,...e.outputNodes},n={...this.blendModes,...e.blendModes},r=pz(t);return r.blendings=n,r}setup(e){let t=this.outputNodes,n=e.renderer.getRenderTarget(),r=[],i=n.textures;for(let e in t){let n=fz(i,e);r[n]=yE(t[e])}return this.members=r,super.setup(e)}}),mz=class extends uT{static get type(){return`BitcastNode`}constructor(e,t,n=null){super(),this.valueNode=e,this.conversionType=t,this.inputType=n,this.isBitcastNode=!0}generateNodeType(e){if(this.inputType!==null){let t=this.valueNode.getNodeType(e),n=e.getTypeLength(t);return e.getTypeFromLength(n,this.conversionType)}return this.conversionType}generate(e){let t=this.getNodeType(e),n=``;if(this.inputType!==null){let t=this.valueNode.getNodeType(e);n=e.getTypeLength(t)===1?this.inputType:e.changeComponentType(t,this.inputType)}else n=this.valueNode.getNodeType(e);return`${e.getBitcastMethod(t,n)}( ${this.valueNode.build(e,n)} )`}},hz=H(mz).setParameterLength(2),gz=e=>new mz(e,`int`,`float`),_z=e=>new mz(e,`uint`,`float`),vz=e=>new mz(e,`float`,`int`),yz=e=>new mz(e,`float`,`uint`),bz={},xz=class e extends Y{static get type(){return`BitcountNode`}constructor(e,t){super(e,t),this.isBitcountNode=!0}_resolveElementType(e,t,n){n===`int`?t.assign(hz(e,`uint`)):t.assign(e)}_returnDataNode(e){switch(e){case`uint`:return K;case`int`:return G;case`uvec2`:return mE;case`uvec3`:return _E;case`uvec4`:return xE;case`ivec2`:return pE;case`ivec3`:return gE;case`ivec4`:return bE}}_createTrailingZerosBaseLayout(e,t){let n=this._returnDataNode(t);return U(([e])=>{let r=K(0);this._resolveElementType(e,r,t);let i=_z(W(r.bitAnd(NO(r)))).shiftRight(23).sub(127);return n(i)}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createLeadingZerosBaseLayout(e,t){let n=this._returnDataNode(t);return U(([e])=>{cE(e.equal(K(0)),()=>K(32));let r=K(0),i=K(0);return this._resolveElementType(e,r,t),cE(r.shiftRight(16).equal(0),()=>{i.addAssign(16),r.shiftLeftAssign(16)}),cE(r.shiftRight(24).equal(0),()=>{i.addAssign(8),r.shiftLeftAssign(8)}),cE(r.shiftRight(28).equal(0),()=>{i.addAssign(4),r.shiftLeftAssign(4)}),cE(r.shiftRight(30).equal(0),()=>{i.addAssign(2),r.shiftLeftAssign(2)}),cE(r.shiftRight(31).equal(0),()=>{i.addAssign(1)}),n(i)}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createOneBitsBaseLayout(e,t){let n=this._returnDataNode(t);return U(([e])=>{let r=K(0);this._resolveElementType(e,r,t),r.assign(r.sub(r.shiftRight(K(1)).bitAnd(K(1431655765)))),r.assign(r.bitAnd(K(858993459)).add(r.shiftRight(K(2)).bitAnd(K(858993459))));let i=r.add(r.shiftRight(K(4))).bitAnd(K(252645135)).mul(K(16843009)).shiftRight(K(24));return n(i)}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createMainLayout(e,t,n,r){let i=this._returnDataNode(t);return U(([e])=>{if(n===1)return i(r(e));{let t=i(0),a=[`x`,`y`,`z`,`w`];for(let i=0;i<n;i++){let n=a[i];t[n].assign(r(e[n]))}return t}}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}setup(t){let{method:n,aNode:r}=this,{renderer:i}=t;if(i.backend.isWebGPUBackend)return super.setup(t);let a=this.getInputType(t),o=t.getElementType(a),s=t.getTypeLength(a),c=`${n}_base_${o}`,l=`${n}_${a}`,u=bz[c];if(u===void 0){switch(n){case e.COUNT_LEADING_ZEROS:u=this._createLeadingZerosBaseLayout(c,o);break;case e.COUNT_TRAILING_ZEROS:u=this._createTrailingZerosBaseLayout(c,o);break;case e.COUNT_ONE_BITS:u=this._createOneBitsBaseLayout(c,o);break}bz[c]=u}let d=bz[l];return d===void 0&&(d=this._createMainLayout(l,a,s,u),bz[l]=d),U(()=>d(r))()}};xz.COUNT_TRAILING_ZEROS=`countTrailingZeros`,xz.COUNT_LEADING_ZEROS=`countLeadingZeros`,xz.COUNT_ONE_BITS=`countOneBits`;var Sz=H(xz,xz.COUNT_TRAILING_ZEROS).setParameterLength(1),Cz=H(xz,xz.COUNT_LEADING_ZEROS).setParameterLength(1),wz=H(xz,xz.COUNT_ONE_BITS).setParameterLength(1),Tz=U(([e])=>{let t=e.toUint().mul(747796405).add(2891336453),n=t.shiftRight(t.shiftRight(28).add(4)).bitXor(t).mul(277803737);return n.shiftRight(22).bitXor(n).toFloat().mul(1/2**32)}),Ez=(e,t)=>QO(OD(4,e.mul(DD(1,e))),t),Dz=(e,t)=>e.lessThan(.5)?Ez(e.mul(2),t).div(2):DD(1,Ez(OD(DD(1,e),2),t).div(2)),Oz=(e,t,n)=>QO(kD(QO(e,t),ED(QO(e,t),QO(DD(1,e),n))),1/t),kz=(e,t)=>vO(eO.mul(t.mul(e).sub(1))).div(eO.mul(t.mul(e).sub(1))),Az=class extends uT{static get type(){return`PackFloatNode`}constructor(e,t){super(),this.vectorNode=t,this.encoding=e,this.isPackFloatNode=!0}generateNodeType(){return`uint`}generate(e){let t=this.vectorNode.getNodeType(e);return`${e.getFloatPackingMethod(this.encoding)}(${this.vectorNode.build(e,t)})`}},jz=H(Az,`snorm`).setParameterLength(1),Mz=H(Az,`unorm`).setParameterLength(1),Nz=H(Az,`float16`).setParameterLength(1),Pz=class extends uT{static get type(){return`UnpackFloatNode`}constructor(e,t){super(),this.uintNode=t,this.encoding=e,this.isUnpackFloatNode=!0}generateNodeType(){return`vec2`}generate(e){let t=this.uintNode.getNodeType(e);return`${e.getFloatUnpackingMethod(this.encoding)}(${this.uintNode.build(e,t)})`}},Fz=H(Pz,`snorm`).setParameterLength(1),Iz=H(Pz,`unorm`).setParameterLength(1),Lz=H(Pz,`float16`).setParameterLength(1),Rz=U(([e])=>e.fract().sub(.5).abs()).setLayout({name:`tri`,type:`float`,inputs:[{name:`x`,type:`float`}]}),zz=U(([e])=>J(Rz(e.z.add(Rz(e.y.mul(1)))),Rz(e.z.add(Rz(e.x.mul(1)))),Rz(e.y.add(Rz(e.x.mul(1)))))).setLayout({name:`tri3`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),Bz=U(([e,t,n])=>{let r=J(e).toVar(),i=W(1.4).toVar(),a=W(0).toVar(),o=J(r).toVar();return SP({start:W(0),end:W(3),type:`float`,condition:`<=`},()=>{let e=J(zz(o.mul(2))).toVar();r.addAssign(e.add(n.mul(W(.1).mul(t)))),o.mulAssign(1.8),i.mulAssign(1.5),r.mulAssign(1.2);let s=W(Rz(r.z.add(Rz(r.x.add(Rz(r.y)))))).toVar();a.addAssign(s.div(i)),o.addAssign(.14)}),a}).setLayout({name:`triNoise3D`,type:`float`,inputs:[{name:`position`,type:`vec3`},{name:`speed`,type:`float`},{name:`time`,type:`float`}]}),Vz=rE(class extends sT{static get type(){return`FunctionOverloadingNode`}constructor(e=[],...t){super(),this.functionNodes=e,this.parametersNodes=t,this._candidateFn=null,this.global=!0}generateNodeType(e){return this.getCandidateFn(e).shaderNode.layout.type}getCandidateFn(e){let t=this.parametersNodes,n=this._candidateFn;if(n===null){let r=null,i=-1;for(let n of this.functionNodes){let a=n.shaderNode.layout;if(a===null)throw Error(`FunctionOverloadingNode: FunctionNode must be a layout.`);let o=a.inputs;if(t.length===o.length){let a=0;for(let n=0;n<t.length;n++){let r=t[n],i=o[n];r.getNodeType(e)===i.type&&a++}a>i&&(r=n,i=a)}}this._candidateFn=n=r}return n}setup(e){return this.getCandidateFn(e)(...this.parametersNodes)}}),Hz=e=>(...t)=>Vz(e,...t),Uz=vD(0).setGroup(hD).onRenderUpdate(e=>e.time),Wz=vD(0).setGroup(hD).onRenderUpdate(e=>e.deltaTime),Gz=vD(0,`uint`).setGroup(hD).onRenderUpdate(e=>e.frameId),Kz=(e=Uz)=>e.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5),qz=(e=Uz)=>e.fract().round(),Jz=(e=Uz)=>e.add(.5).fract().mul(2).sub(1).abs(),Yz=(e=Uz)=>e.fract();function Xz(e,t=null){return yk(t,{getUV:typeof e==`function`?e:()=>e})}var Zz=U(([e,t,n=q(.5)])=>oR(e.sub(n),t).add(n)),Qz=U(([e,t,n=q(.5)])=>{let r=e.sub(n),i=r.dot(r),a=i.mul(i).mul(t);return e.add(r.mul(a))}),$z=U(({position:e=null,horizontal:t=!0,vertical:n=!1})=>{let r;e===null?r=Gj:(r=Gj.toVar(),r[3][0]=e.x,r[3][1]=e.y,r[3][2]=e.z);let i=Aj.mul(r);return ZT(t)&&(i[0][0]=Gj[0].length(),i[0][1]=0,i[0][2]=0),ZT(n)&&(i[1][0]=0,i[1][1]=Gj[1].length(),i[1][2]=0),i[2][0]=0,i[2][1]=0,i[2][2]=1,Oj.mul(i).mul(iM)}),eB=U(([e=null])=>{let t=$P();return $P(VP(e)).sub(t).lessThan(0).select(rj,e)}),tB=U(([e,t=PA(),n=W(0)])=>{let r=e.x,i=e.y,a=n.mod(r.mul(i)).floor(),o=a.mod(r),s=i.sub(a.add(1).div(r).ceil()),c=e.reciprocal(),l=q(o,s);return t.add(l).mul(c)}),nB=U(([e,t=null,n=null,r=W(1),i=iM,a=mM])=>{let o=a.abs().normalize();o=o.div(o.dot(J(1)));let s=i.yz.mul(r),c=i.zx.mul(r),l=i.xy.mul(r),u=e.value,d=t===null?u:t.value,f=n===null?u:n.value;return ED(VA(u,s).mul(o.x),VA(d,c).mul(o.y),VA(f,l).mul(o.z))}),rB=(...e)=>nB(...e),iB=new Xo,aB=new P,oB=new P,sB=new P,cB=new F,lB=new P(0,0,-1),uB=new Nr,dB=new P,fB=new P,pB=new Nr,mB=new N,hB=new Pr,gB=rj.flipX();hB.depthTexture=new $s(1,1);var _B=!1,vB=class e extends zA{static get type(){return`ReflectorNode`}constructor(e={}){super(e.defaultTexture||hB.texture,gB),this._reflectorBaseNode=e.reflector||new yB(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 Error(`THREE.ReflectorNode: Depth node can only be requested when the reflector is created with { depth: true }. `);this._depthNode=new e({defaultTexture:hB.depthTexture,reflector:this._reflectorBaseNode})}return this._depthNode}setup(e){return e.object.isQuadMesh||this._reflectorBaseNode.build(e),super.setup(e)}clone(){let 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()}},yB=class extends sT{static get type(){return`ReflectorBaseNode`}constructor(e,t={}){super();let{target:n=new fi,resolutionScale:r=1,generateMipmaps:i=!1,bounces:a=!0,depth:o=!1,samples:s=0}=t;this.textureNode=e,this.target=n,this.resolutionScale=r,t.resolution!==void 0&&(In(`ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".`),this.resolutionScale=t.resolution),this.generateMipmaps=i,this.bounces=a,this.depth=o,this.samples=s,this.updateBeforeType=a?Qw.RENDER:Qw.FRAME,this.virtualCameras=new WeakMap,this.renderTargets=new Map,this.forceUpdate=!1,this.hasOutput=!1}_updateResolution(e,t){let n=this.resolutionScale;t.getDrawingBufferSize(mB),e.setSize(Math.round(mB.width*n),Math.round(mB.height*n))}setup(e){return this._updateResolution(hB,e.renderer),super.setup(e)}dispose(){super.dispose();for(let 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 Pr(0,0,{type:Fe,samples:this.samples}),this.generateMipmaps===!0&&(t.texture.minFilter=Oe,t.texture.generateMipmaps=!0),this.depth===!0&&(t.depthTexture=new $s),this.renderTargets.set(e,t)),t}updateBefore(e){if(this.bounces===!1&&_B)return!1;_B=!0;let{scene:t,camera:n,renderer:r,material:i}=e,{target:a}=this,o=this.getVirtualCamera(n),s=this.getRenderTarget(o);r.getDrawingBufferSize(mB),this._updateResolution(s,r),oB.setFromMatrixPosition(a.matrixWorld),sB.setFromMatrixPosition(n.matrixWorld),cB.extractRotation(a.matrixWorld),aB.set(0,0,1),aB.applyMatrix4(cB),dB.subVectors(oB,sB);let c=dB.dot(aB)>0,l=!1;if(c===!0&&this.forceUpdate===!1){if(this.hasOutput===!1){_B=!1;return}l=!0}dB.reflect(aB).negate(),dB.add(oB),cB.extractRotation(n.matrixWorld),lB.set(0,0,-1),lB.applyMatrix4(cB),lB.add(sB),fB.subVectors(oB,lB),fB.reflect(aB).negate(),fB.add(oB),o.coordinateSystem=n.coordinateSystem,o.position.copy(dB),o.up.set(0,1,0),o.up.applyMatrix4(cB),o.up.reflect(aB),o.lookAt(fB),o.near=n.near,o.far=n.far,o.updateMatrixWorld(),o.projectionMatrix.copy(n.projectionMatrix),iB.setFromNormalAndCoplanarPoint(aB,oB),iB.applyMatrix4(o.matrixWorldInverse),uB.set(iB.normal.x,iB.normal.y,iB.normal.z,iB.constant);let u=o.projectionMatrix;pB.x=(Math.sign(uB.x)+u.elements[8])/u.elements[0],pB.y=(Math.sign(uB.y)+u.elements[9])/u.elements[5],pB.z=-1,pB.w=(1+u.elements[10])/u.elements[14],uB.multiplyScalar(1/uB.dot(pB)),u.elements[2]=uB.x,u.elements[6]=uB.y,u.elements[10]=r.coordinateSystem===2001?uB.z-0:uB.z+1-0,u.elements[14]=uB.w,this.textureNode.value=s.texture,this.depth===!0&&(this.textureNode.getDepthNode().value=s.depthTexture),i.visible=!1;let d=r.getRenderTarget(),f=r.getMRT(),p=r.autoClear;r.setMRT(null),r.setRenderTarget(s),r.autoClear=!0;let m=t.name;t.name=(t.name||`Scene`)+` [ Reflector ]`,l?(r.clear(),this.hasOutput=!1):(r.render(t,o),this.hasOutput=!0),t.name=m,r.setMRT(f),r.setRenderTarget(d),r.autoClear=p,i.visible=!0,_B=!1,this.forceUpdate=!1}get resolution(){return In(`ReflectorNode: The "resolution" property has been renamed to "resolutionScale".`),this.resolutionScale}set resolution(e){In(`ReflectorNode: The "resolution" property has been renamed to "resolutionScale".`),this.resolutionScale=e}},bB=e=>new vB(e),xB=new hd(-1,1,1,-1,0,1),SB=new class extends Oa{constructor(e=!1){super();let t=e===!1?[0,-1,0,1,2,1]:[0,2,0,0,2,0];this.setAttribute(`position`,new ga([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new ga(t,2))}},CB=class extends bo{constructor(e=null){super(SB,e),this.camera=xB,this.isQuadMesh=!0}async renderAsync(e){In(`QuadMesh: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.`),await e.init(),e.render(this,xB)}render(e){e.render(this,xB)}},wB=new N,TB=class extends zA{static get type(){return`RTTNode`}constructor(e,t=null,n=null,r={type:Fe}){let i=new Pr(t,n,r);super(i.texture,PA()),this.isRTTNode=!0,this.node=e,this.width=t,this.height=n,this.pixelRatio=1,this.renderTarget=i,this.textureNeedsUpdate=!0,this.autoUpdate=!0,this._rttNode=null,this._quadMesh=new CB(new vF),this.updateBeforeType=Qw.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;let 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){let t=e.getPixelRatio(),n=e.getSize(wB),r=Math.floor(n.width*t),i=Math.floor(n.height*t);(r!==this.renderTarget.width||i!==this.renderTarget.height)&&(this.renderTarget.setSize(r,i),this.textureNeedsUpdate=!0)}let t=`RTT`;this.node.name&&(t=this.node.name+` [ `+t+` ]`),this._quadMesh.material.fragmentNode=this._rttNode,this._quadMesh.name=t;let n=e.getRenderTarget();e.setRenderTarget(this.renderTarget),this._quadMesh.render(e),e.setRenderTarget(n)}clone(){let e=new zA(this.value,this.uvNode,this.levelNode);return e.sampler=this.sampler,e.referenceNode=this,e}},EB=(e,...t)=>new TB(B(e),...t),DB=(e,...t)=>e.isSampleNode||e.isTextureNode?e:e.isPassNode?e.getTextureNode():EB(e,...t),OB=U(([e,t,n],r)=>{let i;r.renderer.coordinateSystem===2001?(e=q(e.x,e.y.oneMinus()).mul(2).sub(1),i=yE(J(e,t),1)):i=yE(J(e.x,e.y.oneMinus(),t).mul(2).sub(1),1);let a=yE(n.mul(i));return a.xyz.div(a.w)}),kB=U(([e,t])=>{let n=t.mul(yE(e,1)),r=n.xy.div(n.w).mul(.5).add(.5).toVar();return q(r.x,r.y.oneMinus())}),AB=U(([e,t,n])=>{let r=FA(UA(t)),i=pE(e.mul(r)).toVar(),a=UA(t,i).toVar(),o=UA(t,i.sub(pE(2,0))).toVar(),s=UA(t,i.sub(pE(1,0))).toVar(),c=UA(t,i.add(pE(1,0))).toVar(),l=UA(t,i.add(pE(2,0))).toVar(),u=UA(t,i.add(pE(0,2))).toVar(),d=UA(t,i.add(pE(0,1))).toVar(),f=UA(t,i.sub(pE(0,1))).toVar(),p=UA(t,i.sub(pE(0,2))).toVar(),m=AO(DD(W(2).mul(s).sub(o),a)).toVar(),h=AO(DD(W(2).mul(c).sub(l),a)).toVar(),g=AO(DD(W(2).mul(d).sub(u),a)).toVar(),_=AO(DD(W(2).mul(f).sub(p),a)).toVar(),v=OB(e,a,n).toVar();return gO(ZO(m.lessThan(h).select(v.sub(OB(e.sub(q(W(1).div(r.x),0)),s,n)),v.negate().add(OB(e.add(q(W(1).div(r.x),0)),c,n))),g.lessThan(_).select(v.sub(OB(e.add(q(0,W(1).div(r.y))),d,n)),v.negate().add(OB(e.sub(q(0,W(1).div(r.y))),f,n)))))}),jB=U(([e])=>_O(W(52.9829189).mul(_O(XO(e,q(.06711056,.00583715)))))).setLayout({name:`interleavedGradientNoise`,type:`float`,inputs:[{name:`position`,type:`vec2`}]}),MB=U(([e,t,n])=>{let r=W(2.399963229728653),i=fO(W(e).add(.5).div(W(t))),a=W(e).mul(r).add(n);return q(bO(a),vO(a)).mul(i)}).setLayout({name:`vogelDiskSample`,type:`vec2`,inputs:[{name:`sampleIndex`,type:`int`},{name:`samplesCount`,type:`int`},{name:`phi`,type:`float`}]}),NB=class extends sT{static get type(){return`SampleNode`}constructor(e,t=null){super(),this.callback=e,this.uvNode=t,this.isSampleNode=!0}setup(){return this.sample(PA())}sample(e){return this.callback(e)}},PB=(e,t=null)=>new NB(e,B(t)),FB=class e extends sT{static get type(){return`EventNode`}constructor(t,n){super(`void`),this.eventType=t,this.callback=n,t===e.OBJECT?this.updateType=Qw.OBJECT:t===e.MATERIAL?this.updateType=Qw.RENDER:t===e.FRAME?this.updateType=Qw.FRAME:t===e.BEFORE_OBJECT?this.updateBeforeType=Qw.OBJECT:t===e.BEFORE_MATERIAL?this.updateBeforeType=Qw.RENDER:t===e.BEFORE_FRAME&&(this.updateBeforeType=Qw.FRAME)}update(e){this.callback(e)}updateBefore(e){this.callback(e)}};FB.OBJECT=`object`,FB.MATERIAL=`material`,FB.FRAME=`frame`,FB.BEFORE_OBJECT=`beforeObject`,FB.BEFORE_MATERIAL=`beforeMaterial`,FB.BEFORE_FRAME=`beforeFrame`;var IB=(e,t)=>new FB(e,t).toStack(),LB=e=>IB(FB.OBJECT,e),RB=e=>IB(FB.MATERIAL,e),zB=e=>IB(FB.FRAME,e),BB=e=>IB(FB.BEFORE_OBJECT,e),VB=e=>IB(FB.BEFORE_MATERIAL,e),HB=e=>IB(FB.BEFORE_FRAME,e),UB=class extends Ro{constructor(e,t,n=Float32Array){let r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageInstancedBufferAttribute=!0}},WB=class extends sa{constructor(e,t,n=Float32Array){let r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageBufferAttribute=!0}},GB=(e,t=`float`)=>{let n,r;return t.isStruct===!0?(n=t.layout.getLength(),r=Hw(`float`)):(n=Uw(t),r=Hw(t)),fP(new WB(e,n,r),t,e)},KB=(e,t=`float`)=>{let n,r;t.isStruct===!0?(n=t.layout.getLength(),r=Hw(`float`)):(n=Uw(t),r=Hw(t));let i=new UB(e,n,r);return fP(i,t,i.count)},qB=V(class extends sT{static get type(){return`PointUVNode`}constructor(){super(`vec2`),this.isPointUVNode=!0}generate(){return`vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )`}}),JB=new F,YB=vD(0).setGroup(hD).onRenderUpdate(({scene:e})=>e.backgroundBlurriness),XB=vD(1).setGroup(hD).onRenderUpdate(({scene:e})=>e.backgroundIntensity),ZB=vD(new F).setGroup(hD).onRenderUpdate(({scene:e})=>{let t=e.background;return t!==null&&t.isTexture&&t.mapping!==300?JB.makeRotationFromEuler(e.backgroundRotation).transpose():JB.identity(),JB}),QB=rE(class extends zA{static get type(){return`StorageTextureNode`}constructor(e,t,n=null){super(e,t),this.storeNode=n,this.mipLevel=0,this.isStorageTextureNode=!0,this.access=eT.WRITE_ONLY}getInputType(){return`storageTexture`}setup(e){super.setup(e);let 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){return this.storeNode===null?super.generate(e,t):(this.generateStore(e),``)}generateSnippet(e,t,n,r,i,a,o,s,c){let l=this.value;return e.generateStorageTextureLoad(l,t,n,r,a,c)}toReadWrite(){return this.setAccess(eT.READ_WRITE)}toReadOnly(){return this.setAccess(eT.READ_ONLY)}toWriteOnly(){return this.setAccess(eT.WRITE_ONLY)}generateStore(e){let{uvNode:t,storeNode:n,depthNode:r}=e.getNodeProperties(this),i=super.generate(e,`property`),a=t.build(e,this.value.is3DTexture===!0?`uvec3`:`uvec2`),o=n.build(e,`vec4`),s=r?r.build(e,`int`):null,c=e.generateTextureStore(this.value,i,a,s,o);e.addLineFlowCode(c,this)}clone(){let e=super.clone();return e.storeNode=this.storeNode,e.mipLevel=this.mipLevel,e.access=this.access,e}}).setParameterLength(1,3),$B=(e,t,n)=>{let r;return e.isStorageTextureNode===!0?(r=e.clone(),r.uvNode=t,r.storeNode=n):r=QB(e,t,n),n!==null&&r.toStack(),r},eV=U(({texture:e,uv:t})=>{let n=1e-4,r=J().toVar();return cE(t.x.lessThan(n),()=>{r.assign(J(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(J(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(J(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(J(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(J(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(J(0,0,-1))}).Else(()=>{let n=.01,i=e.sample(t.add(J(-.01,0,0))).r.sub(e.sample(t.add(J(n,0,0))).r),a=e.sample(t.add(J(0,-.01,0))).r.sub(e.sample(t.add(J(0,n,0))).r),o=e.sample(t.add(J(0,0,-.01))).r.sub(e.sample(t.add(J(0,0,n))).r);r.assign(J(i,a,o))}),r.normalize()}),tV=rE(class extends zA{static get type(){return`Texture3DNode`}constructor(e,t=null,n=null){super(e,t,n),this.isTexture3DNode=!0}getInputType(){return`texture3D`}getDefaultUV(){return J(.5,.5,.5)}setUpdateMatrix(){}generateUV(e,t){return t.build(e,this.sampler===!0?`vec3`:`ivec3`)}generateOffset(e,t){return t.build(e,`ivec3`)}normal(e){return eV({texture:this,uv:e})}}).setParameterLength(1,3),nV=(...e)=>tV(...e).setSampler(!1),rV=(e,t,n)=>tV(e,t).level(n),iV=class extends zM{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?e.object.userData:this.userData,this.reference}},aV=(e,t,n)=>new iV(e,t,n),oV=new WeakMap,sV=class extends uT{static get type(){return`VelocityNode`}constructor(){super(`vec2`),this.projectionMatrix=null,this.updateType=Qw.OBJECT,this.updateAfterType=Qw.OBJECT,this.previousModelWorldMatrix=vD(new F),this.previousProjectionMatrix=vD(new F).setGroup(hD),this.previousCameraViewMatrix=vD(new F)}setProjectionMatrix(e){this.projectionMatrix=e}update({frameId:e,camera:t,object:n}){let r=lV(n);this.previousModelWorldMatrix.value.copy(r);let i=cV(t);i.frameId!==e&&(i.frameId=e,i.previousProjectionMatrix===void 0?(i.previousProjectionMatrix=new F,i.previousCameraViewMatrix=new F,i.currentProjectionMatrix=new F,i.currentCameraViewMatrix=new F,i.previousProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),i.previousCameraViewMatrix.copy(t.matrixWorldInverse)):(i.previousProjectionMatrix.copy(i.currentProjectionMatrix),i.previousCameraViewMatrix.copy(i.currentCameraViewMatrix)),i.currentProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),i.currentCameraViewMatrix.copy(t.matrixWorldInverse),this.previousProjectionMatrix.value.copy(i.previousProjectionMatrix),this.previousCameraViewMatrix.value.copy(i.previousCameraViewMatrix))}updateAfter({object:e}){lV(e).copy(e.matrixWorld)}setup(){let e=this.projectionMatrix===null?Oj:vD(this.projectionMatrix),t=this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix),n=e.mul(Qj).mul(iM),r=this.previousProjectionMatrix.mul(t).mul(aM);return DD(n.xy.div(n.w),r.xy.div(r.w))}};function cV(e){let t=oV.get(e);return t===void 0&&(t={},oV.set(e,t)),t}function lV(e,t=0){let n=cV(e),r=n[t];return r===void 0&&(n[t]=r=new F,n[t].copy(e.matrixWorld)),r}var uV=V(sV),dV=U(([e])=>hV(e.rgb)),fV=U(([e,t=W(1)])=>t.mix(hV(e.rgb),e.rgb)),pV=U(([e,t=W(1)])=>{let n=ED(e.r,e.g,e.b).div(3),r=e.r.max(e.g.max(e.b)),i=r.sub(n).mul(t).mul(-3);return ak(e.rgb,r,i)}),mV=U(([e,t=W(1)])=>{let n=J(.57735,.57735,.57735),r=t.cos();return J(e.rgb.mul(r).add(n.cross(e.rgb).mul(t.sin()).add(n.mul(XO(n,e.rgb).mul(r.oneMinus())))))}),hV=(e,t=J(Sr.getLuminanceCoefficients(new P)))=>XO(e,t),gV=U(([e,t=J(1),n=J(0),r=J(1),i=W(1),a=J(Sr.getLuminanceCoefficients(new P,Zt))])=>{let o=e.rgb.dot(J(a)),s=GO(e.rgb.mul(t).add(n),0).toVar(),c=s.pow(r).toVar();return cE(s.r.greaterThan(0),()=>{s.r.assign(c.r)}),cE(s.g.greaterThan(0),()=>{s.g.assign(c.g)}),cE(s.b.greaterThan(0),()=>{s.b.assign(c.b)}),s.assign(o.add(s.sub(o).mul(i))),yE(s.rgb,e.a)}),_V=U(([e,t])=>e.mul(t).floor().div(t)),vV=null,yV=rE(class extends FP{static get type(){return`ViewportSharedTextureNode`}constructor(e=rj,t=null){vV===null&&(vV=new Ks),super(e,t,vV)}getTextureForReference(){return vV}updateReference(){return this}}).setParameterLength(0,2),bV=new N,xV=class extends zA{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.isPassTextureNode=!0,this.setUpdateMatrix(!1)}setup(e){let t=e.getNodeProperties(this);return t.passNode=this.passNode,super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},SV=class extends xV{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n,this.isPassMultipleTextureNode=!0}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){let 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}},CV=class e extends uT{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;let i=new $s;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new Pr(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:Fe,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.overrideMaterial=null,this.transparent=!0,this.opaque=!0,this.contextNode=null,this._contextNodeCache=null,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=vD(0),this._cameraFar=vD(0),this._mrt=null,this._layers=null,this._resolutionScale=1,this._viewport=null,this._scissor=null,this.isPassNode=!0,this.updateBeforeType=Qw.FRAME,this.global=!0}setResolutionScale(e){return this._resolutionScale=e,this}getResolutionScale(){return this._resolutionScale}setResolution(e){return j(`PassNode: .setResolution() is deprecated. Use .setResolutionScale() instead.`),this.setResolutionScale(e)}getResolution(){return j(`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){let t=this._previousTextures[e];if(t!==void 0){let 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 SV(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 SV(this,e,!0),t.updateTexture(),this._previousTextureNodes[e]=t),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=JP(this.getTextureNode(e),n,r)}return t}getLinearDepthNode(e=`depth`){let t=this._linearDepthNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar,i=this.getViewZNode(e);this._linearDepthNodes[e]=t=UP(i,n,r)}return t}async compileAsync(e){let t=e.getRenderTarget(),n=e.getMRT();e.setRenderTarget(this.renderTarget),e.setMRT(this._mrt),await e.compileAsync(this.scene,this.camera),e.setRenderTarget(t),e.setMRT(n)}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,this.renderTarget.texture.type=t.getOutputBufferType(),t.reversedDepthBuffer===!0&&(this.renderTarget.depthTexture.type=Pe),this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n}=this,r,i,a=t.getOutputRenderTarget();a&&a.isXRRenderTarget===!0?(i=1,r=t.xr.getCamera(),t.xr.updateCamera(r),bV.set(a.width,a.height)):(r=this.camera,i=t.getPixelRatio(),t.getSize(bV)),this._pixelRatio=i,this.setSize(bV.width,bV.height);let o=t.getRenderTarget(),s=t.getMRT(),c=t.autoClear,l=t.transparent,u=t.opaque,d=r.layers.mask,f=t.contextNode,p=n.overrideMaterial;this._cameraNear.value=r.near,this._cameraFar.value=r.far,this._layers!==null&&(r.layers.mask=this._layers.mask);for(let e in this._previousTextures)this.toggleTexture(e);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:yk({...t.contextNode.getFlowContextData(),...this.contextNode.getFlowContextData()})}),t.contextNode=this._contextNodeCache.context);let m=n.name;n.name=this.name?this.name:n.name,t.render(n,r),n.name=m,n.overrideMaterial=p,t.setRenderTarget(o),t.setMRT(s),t.autoClear=c,t.transparent=l,t.opaque=u,t.contextNode=f,r.layers.mask=d}setSize(e,t){this._width=e,this._height=t;let 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.scissorTest=!1:(this.renderTarget.scissor.copy(this._scissor).multiplyScalar(this._pixelRatio*this._resolutionScale).floor(),this.renderTarget.scissorTest=!0),this._viewport!==null&&this.renderTarget.viewport.copy(this._viewport).multiplyScalar(this._pixelRatio*this._resolutionScale).floor()}setScissor(e,t,n,r){e===null?this._scissor=null:(this._scissor===null&&(this._scissor=new Nr),e.isVector4?this._scissor.copy(e):this._scissor.set(e,t,n,r))}setViewport(e,t,n,r){e===null?this._viewport=null:(this._viewport===null&&(this._viewport=new Nr),e.isVector4?this._viewport.copy(e):this._viewport.set(e,t,n,r))}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};CV.COLOR=`color`,CV.DEPTH=`depth`;var wV=(e,t,n)=>new CV(CV.COLOR,e,t,n),TV=(e,t)=>new xV(e,t),EV=(e,t,n)=>new CV(CV.DEPTH,e,t,n),DV=class extends CV{static get type(){return`ToonOutlinePassNode`}constructor(e,t,n,r,i){super(CV.COLOR,e,t),this.colorNode=n,this.thicknessNode=r,this.alphaNode=i,this._materialCache=new WeakMap,this.name=`Outline Pass`}updateBefore(e){let{renderer:t}=e,n=t.getRenderObjectFunction();t.setRenderObjectFunction((e,n,r,i,a,o,s,c)=>{if((a.isMeshToonMaterial||a.isMeshToonNodeMaterial)&&a.wireframe===!1){let l=this._getOutlineMaterial(a);t.renderObject(e,n,r,i,l,o,s,c)}t.renderObject(e,n,r,i,a,o,s,c)}),super.updateBefore(e),t.setRenderObjectFunction(n)}_createMaterial(){let e=new vF;e.isMeshToonOutlineMaterial=!0,e.name=`Toon_Outline`,e.side=1;let t=mM.negate(),n=Oj.mul(Qj),r=W(1),i=n.mul(yE(iM,1)),a=n.mul(yE(iM.add(t),1)),o=gO(i.sub(a));return e.vertexNode=i.add(o.mul(this.thicknessNode).mul(i.w).mul(r)),e.colorNode=yE(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}},OV=(e,t,n=new I(0,0,0),r=.003,i=1)=>new DV(e,t,B(n),B(r),B(i)),kV=U(([e,t])=>e.mul(t).clamp()).setLayout({name:`linearToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),AV=U(([e,t])=>(e=e.mul(t),e.div(e.add(1)).clamp())).setLayout({name:`reinhardToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),jV=U(([e,t])=>{e=e.mul(t),e=e.sub(.004).max(0);let n=e.mul(e.mul(6.2).add(.5)),r=e.mul(e.mul(6.2).add(1.7)).add(.06);return n.div(r).pow(2.2)}).setLayout({name:`cineonToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),MV=U(([e])=>{let t=e.mul(e.add(.0245786)).sub(90537e-9),n=e.mul(e.add(.432951).mul(.983729)).add(.238081);return t.div(n)}),NV=U(([e,t])=>{let n=wE(.59719,.35458,.04823,.076,.90834,.01566,.0284,.13383,.83777),r=wE(1.60475,-.53108,-.07367,-.10208,1.10813,-.00605,-.00327,-.07276,1.07602);return e=e.mul(t).div(.6),e=n.mul(e),e=MV(e),e=r.mul(e),e.clamp()}).setLayout({name:`acesFilmicToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),PV=wE(J(1.6605,-.1246,-.0182),J(-.5876,1.1329,-.1006),J(-.0728,-.0083,1.1187)),FV=wE(J(.6274,.0691,.0164),J(.3293,.9195,.088),J(.0433,.0113,.8956)),IV=U(([e])=>{let t=J(e).toVar(),n=J(t.mul(t)).toVar(),r=J(n.mul(n)).toVar();return W(15.5).mul(r.mul(n)).sub(OD(40.14,r.mul(t))).add(OD(31.96,r).sub(OD(6.868,n.mul(t))).add(OD(.4298,n).add(OD(.1191,t).sub(.00232))))}),LV=U(([e,t])=>{let n=J(e).toVar(),r=wE(J(.856627153315983,.137318972929847,.11189821299995),J(.0951212405381588,.761241990602591,.0767994186031903),J(.0482516061458583,.101439036467562,.811302368396859)),i=wE(J(1.1271005818144368,-.1413297634984383,-.14132976349843826),J(-.11060664309660323,1.157823702216272,-.11060664309660294),J(-.016493938717834573,-.016493938717834257,1.2519364065950405)),a=W(-12.47393),o=W(4.026069);return n.mulAssign(t),n.assign(FV.mul(n)),n.assign(r.mul(n)),n.assign(GO(n,1e-10)),n.assign(dO(n)),n.assign(n.sub(a).div(o.sub(a))),n.assign(ok(n,0,1)),n.assign(IV(n)),n.assign(i.mul(n)),n.assign(QO(GO(J(0),n),J(2.2))),n.assign(PV.mul(n)),n.assign(ok(n,0,1)),n}).setLayout({name:`agxToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),RV=U(([e,t])=>{let n=W(.76),r=W(.15);e=e.mul(t);let i=WO(e.r,WO(e.g,e.b)),a=_k(i.lessThan(.08),i.sub(OD(6.25,i.mul(i))),.04);e.subAssign(a);let o=GO(e.r,GO(e.g,e.b));cE(o.lessThan(n),()=>e);let s=DD(1,n),c=DD(1,s.mul(s).div(o.add(s.sub(n))));e.mulAssign(c.div(o));let l=DD(1,kD(1,r.mul(o.sub(c)).add(1)));return ak(e,J(c),l)}).setLayout({name:`neutralToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),zV=class extends sT{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){let t=this.getIncludes(e);for(let n of t)n.build(e);let 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}},BV=rE(zV).setParameterLength(1,3),VV=(e,t)=>BV(e,t,`js`),HV=(e,t)=>BV(e,t,`wgsl`),UV=(e,t)=>BV(e,t,`glsl`),WV=class extends zV{static get type(){return`FunctionNode`}constructor(e=``,t=[],n=``){super(e,t,n)}generateNodeType(e){return this.getNodeFunction(e).type}getMemberType(e,t){let n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}getInputs(e){return this.getNodeFunction(e).inputs}getNodeFunction(e){let t=e.getDataFromNode(this),n=t.nodeFunction;return n===void 0&&(n=e.parser.parseFunction(this.code),t.nodeFunction=n),n}generate(e,t){super.generate(e);let n=this.getNodeFunction(e),r=n.name,i=n.type,a=e.getCodeFromNode(this,i);r!==``&&(a.name=r);let o=e.getPropertyName(a);return a.code=this.getNodeFunction(e).getCode(o)+`
4133
+ `,t===`property`?o:e.format(`${o}()`,i,t)}},GV=(e,t=[],n=``)=>{for(let e=0;e<t.length;e++){let n=t[e];typeof n==`function`&&(t[e]=n.functionNode)}let r=new WV(e,t,n),i=(...e)=>r.call(...e);return i.functionNode=r,i},KV=(e,t)=>GV(e,t,`glsl`),qV=(e,t)=>GV(e,t,`wgsl`);function JV(e){let t,n=e.context.getViewZ;return n!==void 0&&(t=n(this)),(t||cM.z).negate()}var YV=U(([e,t],n)=>lk(e,t,JV(n))),XV=U(([e],t)=>{let n=JV(t);return e.mul(e,n,n).negate().exp().oneMinus()}),ZV=U(([e,t],n)=>{let r=JV(n),i=t.sub(oM.y).max(0).toConst().mul(r).toConst();return e.mul(e,i,i).negate().exp().oneMinus()}),QV=U(([e,t])=>yE(t.toFloat().mix(tD.rgb,e.toVec3()),tD.a)),$V=null,eH=null,tH=rE(class extends sT{static get type(){return`RangeNode`}constructor(e=W(),t=W()){super(),this.minNode=e,this.maxNode=t}getVectorLength(e){let t=this.getConstNode(this.minNode),n=this.getConstNode(this.maxNode),r=e.getTypeLength(Kw(t.value)),i=e.getTypeLength(Kw(n.value));return r>i?r:i}generateNodeType(e){return e.object.count>1?e.getTypeFromLength(this.getVectorLength(e)):`float`}getConstNode(e){let t=null;if(e.traverse(e=>{e.isConstNode===!0&&(t=e)}),t===null)throw new LA(`THREE.TSL: No "ConstNode" found in node graph.`,this.stackTrace);return t}setup(e){let t=e.object,n=null;if(t.count>1){let r=this.getConstNode(this.minNode),i=this.getConstNode(this.maxNode),a=r.value,o=i.value,s=e.getTypeLength(Kw(a)),c=e.getTypeLength(Kw(o));$V||=new Nr,eH||=new Nr,$V.setScalar(0),eH.setScalar(0),s===1?$V.setScalar(a):a.isColor?$V.set(a.r,a.g,a.b,1):$V.set(a.x,a.y,a.z||0,a.w||0),c===1?eH.setScalar(o):o.isColor?eH.set(o.r,o.g,o.b,1):eH.set(o.x,o.y,o.z||0,o.w||0);let l=4*t.count,u=new Float32Array(l);for(let e=0;e<l;e++){let t=e%4,n=$V.getComponent(t),r=eH.getComponent(t);u[e]=pr.lerp(n,r,Math.random())}let d=this.getNodeType(e);if(t.count*4*4<=e.getUniformBufferLimit())n=JA(u,`vec4`,t.count).element(oA).convert(d);else{let t=new Ro(u,4);e.geometry.setAttribute(`__range`+this.id,t),n=nA(t).convert(d)}}else n=W(0);return n}}).setParameterLength(2),nH=class extends sT{static get type(){return`ComputeBuiltinNode`}constructor(e,t){super(t),this._builtinName=e}getHash(e){return this.getBuiltinName(e)}generateNodeType(){return this.nodeType}setBuiltinName(e){return this._builtinName=e,this}getBuiltinName(){return this._builtinName}hasBuiltin(e){return e.hasBuiltin(this._builtinName)}generate(e,t){let n=this.getBuiltinName(e),r=this.getNodeType(e);return e.shaderStage===`compute`?e.format(n,r,t):(j(`ComputeBuiltinNode: Compute built-in value ${n} can not be accessed in the ${e.shaderStage} stage`),e.generateConst(r))}serialize(e){super.serialize(e),e.global=this.global,e._builtinName=this._builtinName}deserialize(e){super.deserialize(e),this.global=e.global,this._builtinName=e._builtinName}},rH=(e,t)=>new nH(e,t),iH=rH(`numWorkgroups`,`uvec3`),aH=rH(`workgroupId`,`uvec3`),oH=rH(`globalId`,`uvec3`),sH=rH(`localId`,`uvec3`),cH=rH(`subgroupSize`,`uint`),lH=rE(class extends sT{constructor(e){super(),this.scope=e,this.isBarrierNode=!0}setup(e){e.allowEarlyReturns=!1,e.allowGlobalVariables=!1}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}}),uH=()=>lH(`workgroup`).toStack(),dH=()=>lH(`storage`).toStack(),fH=()=>lH(`texture`).toStack(),pH=class extends cT{constructor(e,t){super(e,t),this.isWorkgroupInfoElementNode=!0}generate(e,t){let n,r=e.context.assign;if(n=super.generate(e),r!==!0){let r=this.getNodeType(e);n=e.format(n,r,t)}return n}},mH=class extends sT{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 j(`TSL: "label()" has been deprecated. Use "setName()" instead.`,new Pw),this.setName(e)}setScope(e){return this.scope=e,this}getElementType(){return this.elementType}getInputType(){return`${this.scope}Array`}element(e){return new pH(this,e)}generate(e){let t=this.name===``?`${this.scope}Array_${this.id}`:this.name;return e.getScopedArray(t,this.scope.toLowerCase(),this.bufferType,this.bufferCount)}},hH=(e,t)=>new mH(`Workgroup`,e,t),gH=class extends sT{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)}generateNodeType(e){return this.getInputType(e)}generate(e){let t=e.getNodeProperties(this),n=t.parents,r=this.method,i=this.getNodeType(e),a=this.getInputType(e),o=this.pointerNode,s=this.valueNode,c=[];c.push(`&${o.build(e,a)}`),s!==null&&c.push(s.build(e,a));let l=`${e.getMethod(r,i)}( ${c.join(`, `)} )`;if(n&&n.length===1&&n[0].isStackNode===!0)e.addLineFlowCode(l,this);else return t.constNode===void 0&&(t.constNode=xA(l,i).toConst()),t.constNode.build(e)}};gH.ATOMIC_LOAD=`atomicLoad`,gH.ATOMIC_STORE=`atomicStore`,gH.ATOMIC_ADD=`atomicAdd`,gH.ATOMIC_SUB=`atomicSub`,gH.ATOMIC_MAX=`atomicMax`,gH.ATOMIC_MIN=`atomicMin`,gH.ATOMIC_AND=`atomicAnd`,gH.ATOMIC_OR=`atomicOr`,gH.ATOMIC_XOR=`atomicXor`;var _H=rE(gH),vH=(e,t,n)=>_H(e,t,n).toStack(),yH=e=>vH(gH.ATOMIC_LOAD,e,null),bH=(e,t)=>vH(gH.ATOMIC_STORE,e,t),xH=(e,t)=>vH(gH.ATOMIC_ADD,e,t),SH=(e,t)=>vH(gH.ATOMIC_SUB,e,t),CH=(e,t)=>vH(gH.ATOMIC_MAX,e,t),wH=(e,t)=>vH(gH.ATOMIC_MIN,e,t),TH=(e,t)=>vH(gH.ATOMIC_AND,e,t),EH=(e,t)=>vH(gH.ATOMIC_OR,e,t),DH=(e,t)=>vH(gH.ATOMIC_XOR,e,t),Z=class e extends uT{static get type(){return`SubgroupFunctionNode`}constructor(e,t=null,n=null){super(),this.method=e,this.aNode=t,this.bNode=n}getInputType(e){let t=this.aNode?this.aNode.getNodeType(e):null,n=this.bNode?this.bNode.getNodeType(e):null;return(e.isMatrix(t)?0:e.getTypeLength(t))>(e.isMatrix(n)?0:e.getTypeLength(n))?t:n}generateNodeType(t){let n=this.method;return n===e.SUBGROUP_ELECT?`bool`:n===e.SUBGROUP_BALLOT?`uvec4`:this.getInputType(t)}generate(t,n){let r=this.method,i=this.getNodeType(t),a=this.getInputType(t),o=this.aNode,s=this.bNode,c=[];if(r===e.SUBGROUP_BROADCAST||r===e.SUBGROUP_SHUFFLE||r===e.QUAD_BROADCAST){let e=s.getNodeType(t);c.push(o.build(t,i),s.build(t,e===`float`?`int`:i))}else r===e.SUBGROUP_SHUFFLE_XOR||r===e.SUBGROUP_SHUFFLE_DOWN||r===e.SUBGROUP_SHUFFLE_UP?c.push(o.build(t,i),s.build(t,`uint`)):(o!==null&&c.push(o.build(t,a)),s!==null&&c.push(s.build(t,a)));let l=c.length===0?`()`:`( ${c.join(`, `)} )`;return t.format(`${t.getMethod(r,i)}${l}`,i,n)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};Z.SUBGROUP_ELECT=`subgroupElect`,Z.SUBGROUP_BALLOT=`subgroupBallot`,Z.SUBGROUP_ADD=`subgroupAdd`,Z.SUBGROUP_INCLUSIVE_ADD=`subgroupInclusiveAdd`,Z.SUBGROUP_EXCLUSIVE_AND=`subgroupExclusiveAdd`,Z.SUBGROUP_MUL=`subgroupMul`,Z.SUBGROUP_INCLUSIVE_MUL=`subgroupInclusiveMul`,Z.SUBGROUP_EXCLUSIVE_MUL=`subgroupExclusiveMul`,Z.SUBGROUP_AND=`subgroupAnd`,Z.SUBGROUP_OR=`subgroupOr`,Z.SUBGROUP_XOR=`subgroupXor`,Z.SUBGROUP_MIN=`subgroupMin`,Z.SUBGROUP_MAX=`subgroupMax`,Z.SUBGROUP_ALL=`subgroupAll`,Z.SUBGROUP_ANY=`subgroupAny`,Z.SUBGROUP_BROADCAST_FIRST=`subgroupBroadcastFirst`,Z.QUAD_SWAP_X=`quadSwapX`,Z.QUAD_SWAP_Y=`quadSwapY`,Z.QUAD_SWAP_DIAGONAL=`quadSwapDiagonal`,Z.SUBGROUP_BROADCAST=`subgroupBroadcast`,Z.SUBGROUP_SHUFFLE=`subgroupShuffle`,Z.SUBGROUP_SHUFFLE_XOR=`subgroupShuffleXor`,Z.SUBGROUP_SHUFFLE_UP=`subgroupShuffleUp`,Z.SUBGROUP_SHUFFLE_DOWN=`subgroupShuffleDown`,Z.QUAD_BROADCAST=`quadBroadcast`;var OH=H(Z,Z.SUBGROUP_ELECT).setParameterLength(0),kH=H(Z,Z.SUBGROUP_BALLOT).setParameterLength(1),AH=H(Z,Z.SUBGROUP_ADD).setParameterLength(1),jH=H(Z,Z.SUBGROUP_INCLUSIVE_ADD).setParameterLength(1),MH=H(Z,Z.SUBGROUP_EXCLUSIVE_AND).setParameterLength(1),NH=H(Z,Z.SUBGROUP_MUL).setParameterLength(1),PH=H(Z,Z.SUBGROUP_INCLUSIVE_MUL).setParameterLength(1),FH=H(Z,Z.SUBGROUP_EXCLUSIVE_MUL).setParameterLength(1),IH=H(Z,Z.SUBGROUP_AND).setParameterLength(1),LH=H(Z,Z.SUBGROUP_OR).setParameterLength(1),RH=H(Z,Z.SUBGROUP_XOR).setParameterLength(1),zH=H(Z,Z.SUBGROUP_MIN).setParameterLength(1),BH=H(Z,Z.SUBGROUP_MAX).setParameterLength(1),VH=H(Z,Z.SUBGROUP_ALL).setParameterLength(0),HH=H(Z,Z.SUBGROUP_ANY).setParameterLength(0),UH=H(Z,Z.SUBGROUP_BROADCAST_FIRST).setParameterLength(2),WH=H(Z,Z.QUAD_SWAP_X).setParameterLength(1),GH=H(Z,Z.QUAD_SWAP_Y).setParameterLength(1),KH=H(Z,Z.QUAD_SWAP_DIAGONAL).setParameterLength(1),qH=H(Z,Z.SUBGROUP_BROADCAST).setParameterLength(2),JH=H(Z,Z.SUBGROUP_SHUFFLE).setParameterLength(2),YH=H(Z,Z.SUBGROUP_SHUFFLE_XOR).setParameterLength(2),XH=H(Z,Z.SUBGROUP_SHUFFLE_UP).setParameterLength(2),ZH=H(Z,Z.SUBGROUP_SHUFFLE_DOWN).setParameterLength(2),QH=H(Z,Z.QUAD_BROADCAST).setParameterLength(1),$H;function eU(e){$H||=new WeakMap;let t=$H.get(e);return t===void 0&&$H.set(e,t={}),t}function tU(e){let t=eU(e);return t.shadowMatrix||=vD(`mat4`).setGroup(hD).onRenderUpdate(t=>((e.castShadow!==!0||t.renderer.shadowMap.enabled===!1)&&(e.shadow.camera.coordinateSystem!==t.camera.coordinateSystem&&(e.shadow.camera.coordinateSystem=t.camera.coordinateSystem,e.shadow.camera.updateProjectionMatrix()),e.shadow.updateMatrices(e)),e.shadow.matrix))}function nU(e,t=oM){let n=tU(e).mul(t);return n.xyz.div(n.w)}function rU(e){let t=eU(e);return t.position||=vD(new P).setGroup(hD).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.matrixWorld))}function iU(e){let t=eU(e);return t.targetPosition||=vD(new P).setGroup(hD).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.target.matrixWorld))}function aU(e){let t=eU(e);return t.viewPosition||=vD(new P).setGroup(hD).onRenderUpdate(({camera:t},n)=>{n.value=n.value||new P,n.value.setFromMatrixPosition(e.matrixWorld),n.value.applyMatrix4(t.matrixWorldInverse)})}var oU=e=>Aj.transformDirection(rU(e).sub(iU(e))),sU=e=>e.sort((e,t)=>e.id-t.id),cU=(e,t)=>{for(let n of t)if(n.isAnalyticLightNode&&n.light.id===e)return n;return null},lU=new WeakMap,uU=[],dU=class extends sT{static get type(){return`LightsNode`}constructor(){super(`vec3`),this.totalDiffuseNode=NE(`vec3`,`totalDiffuse`),this.totalSpecularNode=NE(`vec3`,`totalSpecular`),this.outgoingLightNode=NE(`vec3`,`outgoingLight`),this._lights=[],this._lightNodes=null,this._lightNodesHash=null,this.global=!0}customCacheKey(){let e=this._lights;for(let t=0;t<e.length;t++){let n=e[t];if(uU.push(n.id),uU.push(+!!n.castShadow),n.isSpotLight===!0){let e=n.map===null?-1:n.map.id,t=n.colorNode?n.colorNode.getCacheKey():-1;uU.push(e,t)}}let t=Lw(uU);return uU.length=0,t}getHash(e){if(this._lightNodesHash===null){this._lightNodes===null&&this.setupLightsNode(e);let t=[];for(let e of this._lightNodes)t.push(e.getHash());this._lightNodesHash=`lights-`+t.join(`,`)}return this._lightNodesHash}analyze(e){let t=e.getNodeProperties(this);for(let n of t.nodes)n.build(e);t.outputNode.build(e)}setupLightsNode(e){let t=[],n=this._lightNodes,r=sU(this._lights),i=e.renderer.library;for(let e of r)if(e.isNode)t.push(B(e));else{let r=null;if(n!==null&&(r=cU(e.id,n)),r===null){let t=i.getLightNodeClass(e.constructor);if(t===null){j(`LightsNode.setupNodeLights: Light node not found for ${e.constructor.name}`);continue}lU.has(e)===!1&&lU.set(e,new t(e)),r=lU.get(e)}t.push(r)}this._lightNodes=t}setupDirectLight(e,t,n){let{lightingModel:r,reflectedLight:i}=e.context;r.direct({...n,lightNode:t,reflectedLight:i},e)}setupDirectRectAreaLight(e,t,n){let{lightingModel:r,reflectedLight:i}=e.context;r.directRectArea({...n,lightNode:t,reflectedLight:i},e)}setupLights(e,t){for(let n of t)n.build(e)}getLightNodes(e){return this._lightNodes===null&&this.setupLightsNode(e),this._lightNodes}setup(e){let t=e.lightsNode;e.lightsNode=this;let n=this.outgoingLightNode,r=e.context,i=r.lightingModel,a=e.getNodeProperties(this);if(i){let{totalDiffuseNode:t,totalSpecularNode:o}=this;r.outgoingLight=n,a.nodes=e.addStack().nodes,i.start(e);let{backdrop:s,backdropAlpha:c}=r,{directDiffuse:l,directSpecular:u,indirectDiffuse:d,indirectSpecular:f}=r.reflectedLight,p=l.add(d);s!==null&&(p=J(c===null?s:c.mix(p,s))),t.assign(p),o.assign(u.add(f)),n.assign(t.add(o)),i.finish(e),n=n.bypass(e.removeStack())}else a.nodes=[];return e.lightsNode=t,n}setLights(e){return this._lights=e,this._lightNodes=null,this._lightNodesHash=null,this}getLights(){return this._lights}get hasLights(){return this._lights.length>0}},fU=(e=[])=>new dU().setLights(e),pU=class extends sT{static get type(){return`ShadowBaseNode`}constructor(e){super(),this.light=e,this.updateBeforeType=Qw.RENDER,this.isShadowBaseNode=!0}setupShadowPosition({context:e,material:t}){mU.assign(t.receivedShadowPositionNode||e.shadowPositionWorld||oM)}},mU=NE(`vec3`,`shadowPositionWorld`);function hU(e,t={}){return t.toneMapping=e.toneMapping,t.toneMappingExposure=e.toneMappingExposure,t.outputColorSpace=e.outputColorSpace,t.renderTarget=e.getRenderTarget(),t.activeCubeFace=e.getActiveCubeFace(),t.activeMipmapLevel=e.getActiveMipmapLevel(),t.renderObjectFunction=e.getRenderObjectFunction(),t.pixelRatio=e.getPixelRatio(),t.mrt=e.getMRT(),t.clearColor=e.getClearColor(t.clearColor||new I),t.clearAlpha=e.getClearAlpha(),t.autoClear=e.autoClear,t.scissorTest=e.getScissorTest(),t}function gU(e,t){return t=hU(e,t),e.setMRT(null),e.setRenderObjectFunction(null),e.setClearColor(0,1),e.autoClear=!0,t}function _U(e,t){e.toneMapping=t.toneMapping,e.toneMappingExposure=t.toneMappingExposure,e.outputColorSpace=t.outputColorSpace,e.setRenderTarget(t.renderTarget,t.activeCubeFace,t.activeMipmapLevel),e.setRenderObjectFunction(t.renderObjectFunction),e.setPixelRatio(t.pixelRatio),e.setMRT(t.mrt),e.setClearColor(t.clearColor,t.clearAlpha),e.autoClear=t.autoClear,e.setScissorTest(t.scissorTest)}function vU(e,t={}){return t.background=e.background,t.backgroundNode=e.backgroundNode,t.overrideMaterial=e.overrideMaterial,t}function yU(e,t){return t=vU(e,t),e.background=null,e.backgroundNode=null,e.overrideMaterial=null,t}function bU(e,t){e.background=t.background,e.backgroundNode=t.backgroundNode,e.overrideMaterial=t.overrideMaterial}function xU(e,t,n){return n=gU(e,n),n=yU(t,n),n}function SU(e,t,n){_U(e,n),bU(t,n)}var CU=new WeakMap,wU=U(({depthTexture:e,shadowCoord:t,depthLayer:n})=>{let r=VA(e,t.xy).setName(`t_basic`);return e.isArrayTexture&&(r=r.depth(n)),r.compare(t.z)}),TU=U(({depthTexture:e,shadowCoord:t,shadow:n,depthLayer:r})=>{let i=(t,n)=>{let i=VA(e,t);return e.isArrayTexture&&(i=i.depth(r)),i.compare(n)},a=BM(`mapSize`,`vec2`,n).setGroup(hD),o=BM(`radius`,`float`,n).setGroup(hD),s=q(1).div(a),c=o.mul(s.x),l=jB(aj.xy).mul(6.28318530718);return ED(i(t.xy.add(MB(0,5,l).mul(c)),t.z),i(t.xy.add(MB(1,5,l).mul(c)),t.z),i(t.xy.add(MB(2,5,l).mul(c)),t.z),i(t.xy.add(MB(3,5,l).mul(c)),t.z),i(t.xy.add(MB(4,5,l).mul(c)),t.z)).mul(1/5)}),EU=U(({depthTexture:e,shadowCoord:t,shadow:n,depthLayer:r})=>{let i=(t,n)=>{let i=VA(e,t);return e.isArrayTexture&&(i=i.depth(r)),i.compare(n)},a=BM(`mapSize`,`vec2`,n).setGroup(hD),o=q(1).div(a),s=o.x,c=o.y,l=t.xy,u=_O(l.mul(a).add(.5));return l.subAssign(u.mul(o)),ED(i(l,t.z),i(l.add(q(s,0)),t.z),i(l.add(q(0,c)),t.z),i(l.add(o),t.z),ak(i(l.add(q(s.negate(),0)),t.z),i(l.add(q(s.mul(2),0)),t.z),u.x),ak(i(l.add(q(s.negate(),c)),t.z),i(l.add(q(s.mul(2),c)),t.z),u.x),ak(i(l.add(q(0,c.negate())),t.z),i(l.add(q(0,c.mul(2))),t.z),u.y),ak(i(l.add(q(s,c.negate())),t.z),i(l.add(q(s,c.mul(2))),t.z),u.y),ak(ak(i(l.add(q(s.negate(),c.negate())),t.z),i(l.add(q(s.mul(2),c.negate())),t.z),u.x),ak(i(l.add(q(s.negate(),c.mul(2))),t.z),i(l.add(q(s.mul(2),c.mul(2))),t.z),u.x),u.y)).mul(1/9)}),DU=U(({depthTexture:e,shadowCoord:t,depthLayer:n},r)=>{let i=VA(e).sample(t.xy);e.isArrayTexture&&(i=i.depth(n)),i=i.rg;let a=i.x,o=GO(1e-7,i.y.mul(i.y)),s=r.renderer.reversedDepthBuffer?KO(a,t.z):KO(t.z,a),c=W(1).toVar();return cE(s.notEqual(1),()=>{let e=t.z.sub(a),n=o.div(o.add(e.mul(e)));n=ok(DD(n,.3).div(.65)),c.assign(GO(s,n))}),c}),OU=e=>{let t=CU.get(e);return t===void 0&&(t=new vF,t.colorNode=yE(0,0,0,1),t.isShadowPassMaterial=!0,t.name=`ShadowMaterial`,t.blending=0,t.fog=!1,CU.set(e,t)),t},kU=e=>{let t=CU.get(e);t!==void 0&&(t.dispose(),CU.delete(e))},AU=new _R,jU=[],MU=(e,t,n,r)=>{jU[0]=e,jU[1]=t;let i=AU.get(jU);return(i===void 0||i.shadowType!==n||i.useVelocity!==r)&&(i=(i,a,o,s,c,l,...u)=>{(i.castShadow===!0||i.receiveShadow&&n===3)&&(r&&(Jw(i).useVelocity=!0),i.onBeforeShadow(e,i,o,t.camera,s,a.overrideMaterial,l),e.renderObject(i,a,o,s,c,l,...u),i.onAfterShadow(e,i,o,t.camera,s,a.overrideMaterial,l))},i.shadowType=n,i.useVelocity=r,AU.set(jU,i)),jU[0]=null,jU[1]=null,i},NU=U(({samples:e,radius:t,size:n,shadowPass:r,depthLayer:i})=>{let a=W(0).toVar(`meanVertical`),o=W(0).toVar(`squareMeanVertical`),s=e.lessThanEqual(W(1)).select(W(0),W(2).div(e.sub(1))),c=e.lessThanEqual(W(1)).select(W(0),W(-1));return SP({start:G(0),end:G(e),type:`int`,condition:`<`},({i:e})=>{let l=c.add(W(e).mul(s)),u=r.sample(ED(aj.xy,q(0,l).mul(t)).div(n));r.value.isArrayTexture&&(u=u.depth(i)),u=u.x,a.addAssign(u),o.addAssign(u.mul(u))}),a.divAssign(e),o.divAssign(e),q(a,fO(o.sub(a.mul(a)).max(0)))}),PU=U(({samples:e,radius:t,size:n,shadowPass:r,depthLayer:i})=>{let a=W(0).toVar(`meanHorizontal`),o=W(0).toVar(`squareMeanHorizontal`),s=e.lessThanEqual(W(1)).select(W(0),W(2).div(e.sub(1))),c=e.lessThanEqual(W(1)).select(W(0),W(-1));return SP({start:G(0),end:G(e),type:`int`,condition:`<`},({i:e})=>{let l=c.add(W(e).mul(s)),u=r.sample(ED(aj.xy,q(l,0).mul(t)).div(n));r.value.isArrayTexture&&(u=u.depth(i)),a.addAssign(u.x),o.addAssign(ED(u.y.mul(u.y),u.x.mul(u.x)))}),a.divAssign(e),o.divAssign(e),q(a,fO(o.sub(a.mul(a)).max(0)))}),FU=[wU,TU,EU,DU],IU,LU=new CB,RU=class extends pU{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:i,depthLayer:a}){let o=r.x.greaterThanEqual(0).and(r.x.lessThanEqual(1)).and(r.y.greaterThanEqual(0)).and(r.y.lessThanEqual(1)).and(r.z.lessThanEqual(1)),s=t({depthTexture:n,shadowCoord:r,shadow:i,depthLayer:a});return o.select(s,W(1))}setupShadowCoord(e,t){let{shadow:n}=this,{renderer:r}=e,i=n.biasNode||BM(`bias`,`float`,n).setGroup(hD),a=t,o;if(n.camera.isOrthographicCamera||r.logarithmicDepthBuffer!==!0)a=a.xyz.div(a.w),o=a.z;else{let e=a.w;a=a.xy.div(e);let t=BM(`near`,`float`,n.camera).setGroup(hD),r=BM(`far`,`float`,n.camera).setGroup(hD);o=YP(e.negate(),t,r)}return a=J(a.x,a.y.oneMinus(),r.reversedDepthBuffer?o.sub(i):o.add(i)),a}getShadowFilterFn(e){return FU[e]}setupRenderTarget(e,t){let n=new $s(e.mapSize.width,e.mapSize.height);n.name=`ShadowDepthTexture`,n.compareFunction=t.renderer.reversedDepthBuffer?518:515;let 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){let{renderer:t,camera:n}=e,{light:r,shadow:i}=this,{depthTexture:a,shadowMap:o}=this.setupRenderTarget(i,e),s=t.shadowMap.type,c=t.hasCompatibility(Cn.TEXTURE_COMPARE);if((s===1||s===2)&&c?(a.minFilter=Te,a.magFilter=Te):(a.minFilter=be,a.magFilter=be),i.camera.coordinateSystem=n.coordinateSystem,i.camera.updateProjectionMatrix(),s===3&&i.isPointLightShadow!==!0){a.compareFunction=null,o.depth>1?(o._vsmShadowMapVertical||(o._vsmShadowMapVertical=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depth:o.depth,depthBuffer:!1}),o._vsmShadowMapVertical.texture.name=`VSMVertical`),this.vsmShadowMapVertical=o._vsmShadowMapVertical,o._vsmShadowMapHorizontal||(o._vsmShadowMapHorizontal=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depth:o.depth,depthBuffer:!1}),o._vsmShadowMapHorizontal.texture.name=`VSMHorizontal`),this.vsmShadowMapHorizontal=o._vsmShadowMapHorizontal):(this.vsmShadowMapVertical=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depthBuffer:!1}),this.vsmShadowMapHorizontal=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:Je,type:Fe,depthBuffer:!1}));let t=VA(a);a.isArrayTexture&&(t=t.depth(this.depthLayer));let n=VA(this.vsmShadowMapVertical.texture);a.isArrayTexture&&(n=n.depth(this.depthLayer));let r=BM(`blurSamples`,`float`,i).setGroup(hD),s=BM(`radius`,`float`,i).setGroup(hD),c=BM(`mapSize`,`vec2`,i).setGroup(hD),l=this.vsmMaterialVertical||=new vF;l.fragmentNode=NU({samples:r,radius:s,size:c,shadowPass:t,depthLayer:this.depthLayer}).context(e.getSharedContext()),l.name=`VSMVertical`,l=this.vsmMaterialHorizontal||=new vF,l.fragmentNode=PU({samples:r,radius:s,size:c,shadowPass:n,depthLayer:this.depthLayer}).context(e.getSharedContext()),l.name=`VSMHorizontal`}let l=BM(`intensity`,`float`,i).setGroup(hD),u=BM(`normalBias`,`float`,i).setGroup(hD),d=tU(r),f=yM.mul(u),p;p=!t.highPrecision||e.material.receivedShadowPositionNode||e.context.shadowPositionWorld?d.mul(mU.add(f)):vD(`mat4`).onObjectUpdate(({object:e},t)=>t.value.multiplyMatrices(d.value,e.matrixWorld)).mul(iM).add(d.mul(yE(f,0)));let m=this.setupShadowCoord(e,p),h=i.filterNode||this.getShadowFilterFn(t.shadowMap.type)||null;if(h===null)throw Error(`THREE.WebGPURenderer: Shadow map type not supported yet.`);let g=s===3&&i.isPointLightShadow!==!0?this.vsmShadowMapHorizontal.texture:a,_=this.setupShadowFilter(e,{filterFn:h,shadowTexture:o.texture,depthTexture:g,shadowCoord:m,shadow:i,depthLayer:this.depthLayer}),v;t.shadowMap.transmitted===!0&&(o.texture.isCubeTexture?v=IM(o.texture,m.xyz):(v=VA(o.texture,m),a.isArrayTexture&&(v=v.depth(this.depthLayer))));let y;y=v?ak(1,_.rgb.mix(v,1),l.mul(v.a)).toVar():ak(1,_,l).toVar(),this.shadowMap=o,this.shadow.map=o;let b=`${this.light.type} Shadow [ ${this.light.name||`ID: `+this.light.id} ]`;return v&&y.toInspector(`${b} / Color`,()=>this.shadowMap.texture.isCubeTexture?IM(this.shadowMap.texture):VA(this.shadowMap.texture)),y.toInspector(`${b} / Depth`,()=>this.shadowMap.texture.isCubeTexture?IM(this.shadowMap.texture).r.oneMinus():UA(this.shadowMap.depthTexture,PA().mul(FA(VA(this.shadowMap.depthTexture)))).r.oneMinus())}setup(e){if(e.renderer.shadowMap.enabled!==!1)return U(()=>{let 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.receivedShadowNode&&(n=e.material.receivedShadowNode(n)),n})()}renderShadow(e){let{shadow:t,shadowMap:n,light:r}=this,{renderer:i,scene:a}=e;t.updateMatrices(r),n.setSize(t.mapSize.width,t.mapSize.height,n.depth);let o=a.name;a.name=`Shadow Map [ ${r.name||`ID: `+r.id} ]`,i.render(a,t.camera),a.name=o}updateShadow(e){let{shadowMap:t,light:n,shadow:r}=this,{renderer:i,scene:a,camera:o}=e,s=i.shadowMap.type,c=t.depthTexture.version;this._depthVersionCached=c;let l=r.camera.layers.mask;r.camera.layers.mask&4294967294||(r.camera.layers.mask=o.layers.mask);let u=i.getRenderObjectFunction(),d=i.getMRT(),f=d?d.has(`velocity`):!1;IU=xU(i,a,IU),a.overrideMaterial=OU(n),i.setRenderObjectFunction(MU(i,r,s,f)),i.setClearColor(0,0),i.setRenderTarget(t),this.renderShadow(e),i.setRenderObjectFunction(u),s===3&&r.isPointLightShadow!==!0&&this.vsmPass(i),r.camera.layers.mask=l,SU(i,a,IU)}vsmPass(e){let{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),LU.material=this.vsmMaterialVertical,LU.render(e),e.setRenderTarget(this.vsmShadowMapHorizontal),LU.material=this.vsmMaterialHorizontal,LU.render(e)}dispose(){this._reset(),super.dispose()}_reset(){this._currentShadowType=null,kU(this.light),this.shadowMap&&=(this.shadowMap.dispose(),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){let{shadow:t}=this,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))}},zU=(e,t)=>new RU(e,t),BU=new I,VU=new F,HU=new P,UU=new P,WU=[new P(1,0,0),new P(-1,0,0),new P(0,-1,0),new P(0,1,0),new P(0,0,1),new P(0,0,-1)],GU=[new P(0,-1,0),new P(0,-1,0),new P(0,0,-1),new P(0,0,1),new P(0,-1,0),new P(0,-1,0)],KU=[new P(1,0,0),new P(-1,0,0),new P(0,1,0),new P(0,-1,0),new P(0,0,1),new P(0,0,-1)],qU=[new P(0,-1,0),new P(0,-1,0),new P(0,0,1),new P(0,0,-1),new P(0,-1,0),new P(0,-1,0)],JU=U(({depthTexture:e,bd3D:t,dp:n})=>IM(e,t).compare(n)),YU=U(({depthTexture:e,bd3D:t,dp:n,shadow:r})=>{let i=BM(`radius`,`float`,r).setGroup(hD),a=BM(`mapSize`,`vec2`,r).setGroup(hD),o=i.div(a.x),s=AO(t),c=gO(ZO(t,s.x.greaterThan(s.z).select(J(0,1,0),J(1,0,0)))),l=ZO(t,c),u=jB(aj.xy).mul(6.28318530718),d=MB(0,5,u),f=MB(1,5,u),p=MB(2,5,u),m=MB(3,5,u),h=MB(4,5,u);return IM(e,t.add(c.mul(d.x).add(l.mul(d.y)).mul(o))).compare(n).add(IM(e,t.add(c.mul(f.x).add(l.mul(f.y)).mul(o))).compare(n)).add(IM(e,t.add(c.mul(p.x).add(l.mul(p.y)).mul(o))).compare(n)).add(IM(e,t.add(c.mul(m.x).add(l.mul(m.y)).mul(o))).compare(n)).add(IM(e,t.add(c.mul(h.x).add(l.mul(h.y)).mul(o))).compare(n)).mul(1/5)}),XU=U(({filterFn:e,depthTexture:t,shadowCoord:n,shadow:r},i)=>{let a=n.xyz.toConst(),o=a.abs().toConst(),s=o.x.max(o.y).max(o.z),c=vD(`float`).setGroup(hD).onRenderUpdate(()=>r.camera.near),l=vD(`float`).setGroup(hD).onRenderUpdate(()=>r.camera.far),u=BM(`bias`,`float`,r).setGroup(hD),d=W(1).toVar();return cE(s.sub(l).lessThanEqual(0).and(s.sub(c).greaterThanEqual(0)),()=>{let n;i.renderer.reversedDepthBuffer?(n=qP(s.negate(),c,l),n.subAssign(u)):(n=KP(s.negate(),c,l),n.addAssign(u));let o=a.normalize();d.assign(e({depthTexture:t,bd3D:o,dp:n,shadow:r}))}),d}),ZU=class extends RU{static get type(){return`PointShadowNode`}constructor(e,t=null){super(e,t)}getShadowFilterFn(e){return e===0?JU:YU}setupShadowCoord(e,t){return t}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:r,shadow:i}){return XU({filterFn:t,depthTexture:n,shadowCoord:r,shadow:i})}setupRenderTarget(e,t){let n=new ec(e.mapSize.width);n.name=`PointShadowDepthTexture`,n.compareFunction=t.renderer.reversedDepthBuffer?518:515;let r=t.createCubeRenderTarget(e.mapSize.width);return r.texture.name=`PointShadowMap`,r.depthTexture=n,{shadowMap:r,depthTexture:n}}renderShadow(e){let{shadow:t,shadowMap:n,light:r}=this,{renderer:i,scene:a}=e,o=t.camera,s=t.matrix,c=i.coordinateSystem===yn,l=c?WU:KU,u=c?GU:qU;n.setSize(t.mapSize.width,t.mapSize.width);let d=i.autoClear,f=i.getClearColor(BU),p=i.getClearAlpha();i.autoClear=!1,i.setClearColor(t.clearColor,t.clearAlpha);for(let e=0;e<6;e++){i.setRenderTarget(n,e),i.clear();let c=r.distance||o.far;c!==o.far&&(o.far=c,o.updateProjectionMatrix()),HU.setFromMatrixPosition(r.matrixWorld),o.position.copy(HU),UU.copy(o.position),UU.add(l[e]),o.up.copy(u[e]),o.lookAt(UU),o.updateMatrixWorld(),s.makeTranslation(-HU.x,-HU.y,-HU.z),VU.multiplyMatrices(o.projectionMatrix,o.matrixWorldInverse),t._frustum.setFromProjectionMatrix(VU,o.coordinateSystem,o.reversedDepth);let d=a.name;a.name=`Point Light Shadow [ ${r.name||`ID: `+r.id} ] - Face ${e+1}`,i.render(a,o),a.name=d}i.autoClear=d,i.setClearColor(f,p)}},QU=(e,t)=>new ZU(e,t),$U=class extends AP{static get type(){return`AnalyticLightNode`}constructor(e=null){super(),this.light=e,this.color=new I,this.colorNode=e&&e.colorNode||vD(this.color).setGroup(hD),this.baseColorNode=null,this.shadowNode=null,this.shadowColorNode=null,this.isAnalyticLightNode=!0,this.updateType=Qw.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 aU(this.light).sub(e.context.positionView||cM)}setupDirect(){}setupDirectRectArea(){}setupShadowNode(){return zU(this.light)}setupShadow(e){let{renderer:t}=e;if(t.shadowMap.enabled===!1)return;let n=this.shadowColorNode;if(n===null){let e=this.light.shadow.shadowNode,t;t=e===void 0?this.setupShadowNode():B(e),this.shadowNode=t,this.shadowColorNode=n=this.colorNode.mul(t),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);let t=this.setupDirect(e),n=this.setupDirectRectArea(e);t&&e.lightsNode.setupDirectLight(e,this,t),n&&e.lightsNode.setupDirectRectAreaLight(e,this,n)}update(){let{light:e}=this;this.color.copy(e.color).multiplyScalar(e.intensity)}},eW=U(({lightDistance:e,cutoffDistance:t,decayExponent:n})=>{let r=e.pow(n).max(.01).reciprocal();return t.greaterThan(0).select(r.mul(e.div(t).pow4().oneMinus().clamp().pow2()),r)}),tW=({color:e,lightVector:t,cutoffDistance:n,decayExponent:r})=>{let i=t.normalize(),a=eW({lightDistance:t.length(),cutoffDistance:n,decayExponent:r});return{lightDirection:i,lightColor:e.mul(a)}},nW=class extends $U{static get type(){return`PointLightNode`}constructor(e=null){super(e),this.cutoffDistanceNode=vD(0).setGroup(hD),this.decayExponentNode=vD(2).setGroup(hD)}update(e){let{light:t}=this;super.update(e),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}setupShadowNode(){return QU(this.light)}setupDirect(e){return tW({color:this.colorNode,lightVector:this.getLightVector(e),cutoffDistance:this.cutoffDistanceNode,decayExponent:this.decayExponentNode})}},rW=U(([e=PA()])=>{let t=e.mul(2),n=t.x.floor(),r=t.y.floor();return n.add(r).mod(2).sign()}),iW=U(([e=PA()],{renderer:t,material:n})=>{let r=ik(e.mul(2).sub(1)),i;if(n.alphaToCoverage&&t.currentSamples>0){let e=W(r.fwidth()).toVar();i=lk(e.oneMinus(),e.add(1),r).oneMinus()}else i=_k(r.greaterThan(1),0,1);return i}),aW=U(([e,t,n])=>{let r=W(n).toVar(),i=W(t).toVar();return _k(fE(e).toVar(),i,r)}).setLayout({name:`mx_select`,type:`float`,inputs:[{name:`b`,type:`bool`},{name:`t`,type:`float`},{name:`f`,type:`float`}]}),oW=U(([e,t])=>{let n=fE(t).toVar(),r=W(e).toVar();return _k(n,r.negate(),r)}).setLayout({name:`mx_negate_if`,type:`float`,inputs:[{name:`val`,type:`float`},{name:`b`,type:`bool`}]}),sW=U(([e])=>G(mO(W(e).toVar()))).setLayout({name:`mx_floor`,type:`int`,inputs:[{name:`x`,type:`float`}]}),cW=U(([e,t])=>{let n=W(e).toVar();return t.assign(sW(n)),n.sub(W(t))}),lW=Hz([U(([e,t,n,r,i,a])=>{let o=W(a).toVar(),s=W(i).toVar(),c=W(r).toVar(),l=W(n).toVar(),u=W(t).toVar(),d=W(e).toVar(),f=W(DD(1,s)).toVar();return DD(1,o).mul(d.mul(f).add(u.mul(s))).add(o.mul(l.mul(f).add(c.mul(s))))}).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`}]}),U(([e,t,n,r,i,a])=>{let o=W(a).toVar(),s=W(i).toVar(),c=J(r).toVar(),l=J(n).toVar(),u=J(t).toVar(),d=J(e).toVar(),f=W(DD(1,s)).toVar();return DD(1,o).mul(d.mul(f).add(u.mul(s))).add(o.mul(l.mul(f).add(c.mul(s))))}).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`}]})]),uW=Hz([U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=W(u).toVar(),f=W(l).toVar(),p=W(c).toVar(),m=W(s).toVar(),h=W(o).toVar(),g=W(a).toVar(),_=W(i).toVar(),v=W(r).toVar(),y=W(n).toVar(),b=W(t).toVar(),x=W(e).toVar(),S=W(DD(1,p)).toVar(),C=W(DD(1,f)).toVar();return W(DD(1,d)).toVar().mul(C.mul(x.mul(S).add(b.mul(p))).add(f.mul(y.mul(S).add(v.mul(p))))).add(d.mul(C.mul(_.mul(S).add(g.mul(p))).add(f.mul(h.mul(S).add(m.mul(p))))))}).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`}]}),U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=W(u).toVar(),f=W(l).toVar(),p=W(c).toVar(),m=J(s).toVar(),h=J(o).toVar(),g=J(a).toVar(),_=J(i).toVar(),v=J(r).toVar(),y=J(n).toVar(),b=J(t).toVar(),x=J(e).toVar(),S=W(DD(1,p)).toVar(),C=W(DD(1,f)).toVar();return W(DD(1,d)).toVar().mul(C.mul(x.mul(S).add(b.mul(p))).add(f.mul(y.mul(S).add(v.mul(p))))).add(d.mul(C.mul(_.mul(S).add(g.mul(p))).add(f.mul(h.mul(S).add(m.mul(p))))))}).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`}]})]),dW=Hz([U(([e,t,n])=>{let r=W(n).toVar(),i=W(t).toVar(),a=K(K(e).toVar().bitAnd(K(7))).toVar(),o=W(aW(a.lessThan(K(4)),i,r)).toVar(),s=W(OD(2,aW(a.lessThan(K(4)),r,i))).toVar();return oW(o,fE(a.bitAnd(K(1)))).add(oW(s,fE(a.bitAnd(K(2)))))}).setLayout({name:`mx_gradient_float_0`,type:`float`,inputs:[{name:`hash`,type:`uint`},{name:`x`,type:`float`},{name:`y`,type:`float`}]}),U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=W(t).toVar(),s=K(K(e).toVar().bitAnd(K(15))).toVar(),c=W(aW(s.lessThan(K(8)),o,a)).toVar(),l=W(aW(s.lessThan(K(4)),a,aW(s.equal(K(12)).or(s.equal(K(14))),o,i))).toVar();return oW(c,fE(s.bitAnd(K(1)))).add(oW(l,fE(s.bitAnd(K(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`}]})]),fW=Hz([U(([e,t,n])=>{let r=W(n).toVar(),i=W(t).toVar(),a=_E(e).toVar();return J(dW(a.x,i,r),dW(a.y,i,r),dW(a.z,i,r))}).setLayout({name:`mx_gradient_vec3_0`,type:`vec3`,inputs:[{name:`hash`,type:`uvec3`},{name:`x`,type:`float`},{name:`y`,type:`float`}]}),U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=W(t).toVar(),s=_E(e).toVar();return J(dW(s.x,o,a,i),dW(s.y,o,a,i),dW(s.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`}]})]),pW=U(([e])=>OD(.6616,W(e).toVar())).setLayout({name:`mx_gradient_scale2d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),mW=U(([e])=>OD(.982,W(e).toVar())).setLayout({name:`mx_gradient_scale3d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),hW=Hz([pW,U(([e])=>OD(.6616,J(e).toVar())).setLayout({name:`mx_gradient_scale2d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),gW=Hz([mW,U(([e])=>OD(.982,J(e).toVar())).setLayout({name:`mx_gradient_scale3d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),_W=U(([e,t])=>{let n=G(t).toVar(),r=K(e).toVar();return r.shiftLeft(n).bitOr(r.shiftRight(G(32).sub(n)))}).setLayout({name:`mx_rotl32`,type:`uint`,inputs:[{name:`x`,type:`uint`},{name:`k`,type:`int`}]}),vW=U(([e,t,n])=>{e.subAssign(n),e.bitXorAssign(_W(n,G(4))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(_W(e,G(6))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(_W(t,G(8))),t.addAssign(e),e.subAssign(n),e.bitXorAssign(_W(n,G(16))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(_W(e,G(19))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(_W(t,G(4))),t.addAssign(e)}),yW=U(([e,t,n])=>{let r=K(n).toVar(),i=K(t).toVar(),a=K(e).toVar();return r.bitXorAssign(i),r.subAssign(_W(i,G(14))),a.bitXorAssign(r),a.subAssign(_W(r,G(11))),i.bitXorAssign(a),i.subAssign(_W(a,G(25))),r.bitXorAssign(i),r.subAssign(_W(i,G(16))),a.bitXorAssign(r),a.subAssign(_W(r,G(4))),i.bitXorAssign(a),i.subAssign(_W(a,G(14))),r.bitXorAssign(i),r.subAssign(_W(i,G(24))),r}).setLayout({name:`mx_bjfinal`,type:`uint`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`},{name:`c`,type:`uint`}]}),bW=U(([e])=>W(K(e).toVar()).div(W(K(G(4294967295))))).setLayout({name:`mx_bits_to_01`,type:`float`,inputs:[{name:`bits`,type:`uint`}]}),xW=U(([e])=>{let t=W(e).toVar();return t.mul(t).mul(t).mul(t.mul(t.mul(6).sub(15)).add(10))}).setLayout({name:`mx_fade`,type:`float`,inputs:[{name:`t`,type:`float`}]}),SW=Hz([U(([e])=>{let t=G(e).toVar(),n=K(K(1)).toVar(),r=K(K(G(3735928559)).add(n.shiftLeft(K(2))).add(K(13))).toVar();return yW(r.add(K(t)),r,r)}).setLayout({name:`mx_hash_int_0`,type:`uint`,inputs:[{name:`x`,type:`int`}]}),U(([e,t])=>{let n=G(t).toVar(),r=G(e).toVar(),i=K(K(2)).toVar(),a=K().toVar(),o=K().toVar(),s=K().toVar();return a.assign(o.assign(s.assign(K(G(3735928559)).add(i.shiftLeft(K(2))).add(K(13))))),a.addAssign(K(r)),o.addAssign(K(n)),yW(a,o,s)}).setLayout({name:`mx_hash_int_1`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`}]}),U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=G(e).toVar(),o=K(K(3)).toVar(),s=K().toVar(),c=K().toVar(),l=K().toVar();return s.assign(c.assign(l.assign(K(G(3735928559)).add(o.shiftLeft(K(2))).add(K(13))))),s.addAssign(K(a)),c.addAssign(K(i)),l.addAssign(K(r)),yW(s,c,l)}).setLayout({name:`mx_hash_int_2`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]}),U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=G(t).toVar(),s=G(e).toVar(),c=K(K(4)).toVar(),l=K().toVar(),u=K().toVar(),d=K().toVar();return l.assign(u.assign(d.assign(K(G(3735928559)).add(c.shiftLeft(K(2))).add(K(13))))),l.addAssign(K(s)),u.addAssign(K(o)),d.addAssign(K(a)),vW(l,u,d),l.addAssign(K(i)),yW(l,u,d)}).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`}]}),U(([e,t,n,r,i])=>{let a=G(i).toVar(),o=G(r).toVar(),s=G(n).toVar(),c=G(t).toVar(),l=G(e).toVar(),u=K(K(5)).toVar(),d=K().toVar(),f=K().toVar(),p=K().toVar();return d.assign(f.assign(p.assign(K(G(3735928559)).add(u.shiftLeft(K(2))).add(K(13))))),d.addAssign(K(l)),f.addAssign(K(c)),p.addAssign(K(s)),vW(d,f,p),d.addAssign(K(o)),f.addAssign(K(a)),yW(d,f,p)}).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`}]})]),CW=Hz([U(([e,t])=>{let n=G(t).toVar(),r=K(SW(G(e).toVar(),n)).toVar(),i=_E().toVar();return i.x.assign(r.bitAnd(G(255))),i.y.assign(r.shiftRight(G(8)).bitAnd(G(255))),i.z.assign(r.shiftRight(G(16)).bitAnd(G(255))),i}).setLayout({name:`mx_hash_vec3_0`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`}]}),U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=K(SW(G(e).toVar(),i,r)).toVar(),o=_E().toVar();return o.x.assign(a.bitAnd(G(255))),o.y.assign(a.shiftRight(G(8)).bitAnd(G(255))),o.z.assign(a.shiftRight(G(16)).bitAnd(G(255))),o}).setLayout({name:`mx_hash_vec3_1`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]})]),wW=Hz([U(([e])=>{let t=q(e).toVar(),n=G().toVar(),r=G().toVar(),i=W(cW(t.x,n)).toVar(),a=W(cW(t.y,r)).toVar(),o=W(xW(i)).toVar(),s=W(xW(a)).toVar();return hW(W(lW(dW(SW(n,r),i,a),dW(SW(n.add(G(1)),r),i.sub(1),a),dW(SW(n,r.add(G(1))),i,a.sub(1)),dW(SW(n.add(G(1)),r.add(G(1))),i.sub(1),a.sub(1)),o,s)).toVar())}).setLayout({name:`mx_perlin_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar(),n=G().toVar(),r=G().toVar(),i=G().toVar(),a=W(cW(t.x,n)).toVar(),o=W(cW(t.y,r)).toVar(),s=W(cW(t.z,i)).toVar(),c=W(xW(a)).toVar(),l=W(xW(o)).toVar(),u=W(xW(s)).toVar();return gW(W(uW(dW(SW(n,r,i),a,o,s),dW(SW(n.add(G(1)),r,i),a.sub(1),o,s),dW(SW(n,r.add(G(1)),i),a,o.sub(1),s),dW(SW(n.add(G(1)),r.add(G(1)),i),a.sub(1),o.sub(1),s),dW(SW(n,r,i.add(G(1))),a,o,s.sub(1)),dW(SW(n.add(G(1)),r,i.add(G(1))),a.sub(1),o,s.sub(1)),dW(SW(n,r.add(G(1)),i.add(G(1))),a,o.sub(1),s.sub(1)),dW(SW(n.add(G(1)),r.add(G(1)),i.add(G(1))),a.sub(1),o.sub(1),s.sub(1)),c,l,u)).toVar())}).setLayout({name:`mx_perlin_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec3`}]})]),TW=Hz([U(([e])=>{let t=q(e).toVar(),n=G().toVar(),r=G().toVar(),i=W(cW(t.x,n)).toVar(),a=W(cW(t.y,r)).toVar(),o=W(xW(i)).toVar(),s=W(xW(a)).toVar();return hW(J(lW(fW(CW(n,r),i,a),fW(CW(n.add(G(1)),r),i.sub(1),a),fW(CW(n,r.add(G(1))),i,a.sub(1)),fW(CW(n.add(G(1)),r.add(G(1))),i.sub(1),a.sub(1)),o,s)).toVar())}).setLayout({name:`mx_perlin_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar(),n=G().toVar(),r=G().toVar(),i=G().toVar(),a=W(cW(t.x,n)).toVar(),o=W(cW(t.y,r)).toVar(),s=W(cW(t.z,i)).toVar(),c=W(xW(a)).toVar(),l=W(xW(o)).toVar(),u=W(xW(s)).toVar();return gW(J(uW(fW(CW(n,r,i),a,o,s),fW(CW(n.add(G(1)),r,i),a.sub(1),o,s),fW(CW(n,r.add(G(1)),i),a,o.sub(1),s),fW(CW(n.add(G(1)),r.add(G(1)),i),a.sub(1),o.sub(1),s),fW(CW(n,r,i.add(G(1))),a,o,s.sub(1)),fW(CW(n.add(G(1)),r,i.add(G(1))),a.sub(1),o,s.sub(1)),fW(CW(n,r.add(G(1)),i.add(G(1))),a,o.sub(1),s.sub(1)),fW(CW(n.add(G(1)),r.add(G(1)),i.add(G(1))),a.sub(1),o.sub(1),s.sub(1)),c,l,u)).toVar())}).setLayout({name:`mx_perlin_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]})]),EW=Hz([U(([e])=>bW(SW(G(sW(W(e).toVar())).toVar()))).setLayout({name:`mx_cell_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=q(e).toVar();return bW(SW(G(sW(t.x)).toVar(),G(sW(t.y)).toVar()))}).setLayout({name:`mx_cell_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar();return bW(SW(G(sW(t.x)).toVar(),G(sW(t.y)).toVar(),G(sW(t.z)).toVar()))}).setLayout({name:`mx_cell_noise_float_2`,type:`float`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=yE(e).toVar();return bW(SW(G(sW(t.x)).toVar(),G(sW(t.y)).toVar(),G(sW(t.z)).toVar(),G(sW(t.w)).toVar()))}).setLayout({name:`mx_cell_noise_float_3`,type:`float`,inputs:[{name:`p`,type:`vec4`}]})]),DW=Hz([U(([e])=>{let t=G(sW(W(e).toVar())).toVar();return J(bW(SW(t,G(0))),bW(SW(t,G(1))),bW(SW(t,G(2))))}).setLayout({name:`mx_cell_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=q(e).toVar(),n=G(sW(t.x)).toVar(),r=G(sW(t.y)).toVar();return J(bW(SW(n,r,G(0))),bW(SW(n,r,G(1))),bW(SW(n,r,G(2))))}).setLayout({name:`mx_cell_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=J(e).toVar(),n=G(sW(t.x)).toVar(),r=G(sW(t.y)).toVar(),i=G(sW(t.z)).toVar();return J(bW(SW(n,r,i,G(0))),bW(SW(n,r,i,G(1))),bW(SW(n,r,i,G(2))))}).setLayout({name:`mx_cell_noise_vec3_2`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=yE(e).toVar(),n=G(sW(t.x)).toVar(),r=G(sW(t.y)).toVar(),i=G(sW(t.z)).toVar(),a=G(sW(t.w)).toVar();return J(bW(SW(n,r,i,a,G(0))),bW(SW(n,r,i,a,G(1))),bW(SW(n,r,i,a,G(2))))}).setLayout({name:`mx_cell_noise_vec3_3`,type:`vec3`,inputs:[{name:`p`,type:`vec4`}]})]),OW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar(),c=W(0).toVar(),l=W(1).toVar();return SP(o,()=>{c.addAssign(l.mul(wW(s))),l.mulAssign(i),s.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`}]}),kW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar(),c=J(0).toVar(),l=W(1).toVar();return SP(o,()=>{c.addAssign(l.mul(TW(s))),l.mulAssign(i),s.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`}]}),AW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar();return q(OW(s,o,a,i),OW(s.add(J(G(19),G(193),G(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`}]}),jW=U(([e,t,n,r])=>{let i=W(r).toVar(),a=W(n).toVar(),o=G(t).toVar(),s=J(e).toVar();return yE(J(kW(s,o,a,i)).toVar(),W(OW(s.add(J(G(19),G(193),G(17))),o,a,i)).toVar())}).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`}]}),MW=Hz([U(([e,t,n,r,i,a,o])=>{let s=G(o).toVar(),c=W(a).toVar(),l=G(i).toVar(),u=G(r).toVar(),d=G(n).toVar(),f=G(t).toVar(),p=q(e).toVar(),m=J(DW(q(f.add(u),d.add(l)))).toVar(),h=q(m.x,m.y).toVar();h.subAssign(.5),h.mulAssign(c),h.addAssign(.5);let g=q(q(q(W(f),W(d)).add(h)).toVar().sub(p)).toVar();return cE(s.equal(G(2)),()=>AO(g.x).add(AO(g.y))),cE(s.equal(G(3)),()=>GO(AO(g.x),AO(g.y))),XO(g,g)}).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`}]}),U(([e,t,n,r,i,a,o,s,c])=>{let l=G(c).toVar(),u=W(s).toVar(),d=G(o).toVar(),f=G(a).toVar(),p=G(i).toVar(),m=G(r).toVar(),h=G(n).toVar(),g=G(t).toVar(),_=J(e).toVar(),v=J(DW(J(g.add(p),h.add(f),m.add(d)))).toVar();v.subAssign(.5),v.mulAssign(u),v.addAssign(.5);let y=J(J(J(W(g),W(h),W(m)).add(v)).toVar().sub(_)).toVar();return cE(l.equal(G(2)),()=>AO(y.x).add(AO(y.y)).add(AO(y.z))),cE(l.equal(G(3)),()=>GO(AO(y.x),AO(y.y),AO(y.z))),XO(y,y)}).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`}]})]),NW=U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=q(e).toVar(),o=G().toVar(),s=G().toVar(),c=q(cW(a.x,o),cW(a.y,s)).toVar(),l=W(1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{let n=W(MW(c,e,t,o,s,i,r)).toVar();l.assign(WO(l,n))})}),cE(r.equal(G(0)),()=>{l.assign(fO(l))}),l}).setLayout({name:`mx_worley_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),PW=U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=q(e).toVar(),o=G().toVar(),s=G().toVar(),c=q(cW(a.x,o),cW(a.y,s)).toVar(),l=q(1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{let n=W(MW(c,e,t,o,s,i,r)).toVar();cE(n.lessThan(l.x),()=>{l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.y.assign(n)})})}),cE(r.equal(G(0)),()=>{l.assign(fO(l))}),l}).setLayout({name:`mx_worley_noise_vec2_0`,type:`vec2`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),FW=U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=q(e).toVar(),o=G().toVar(),s=G().toVar(),c=q(cW(a.x,o),cW(a.y,s)).toVar(),l=J(1e6,1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{let n=W(MW(c,e,t,o,s,i,r)).toVar();cE(n.lessThan(l.x),()=>{l.z.assign(l.y),l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.z.assign(l.y),l.y.assign(n)}).ElseIf(n.lessThan(l.z),()=>{l.z.assign(n)})})}),cE(r.equal(G(0)),()=>{l.assign(fO(l))}),l}).setLayout({name:`mx_worley_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),IW=Hz([NW,U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=J(e).toVar(),o=G().toVar(),s=G().toVar(),c=G().toVar(),l=J(cW(a.x,o),cW(a.y,s),cW(a.z,c)).toVar(),u=W(1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{SP({start:-1,end:G(1),name:`z`,condition:`<=`},({z:n})=>{let a=W(MW(l,e,t,n,o,s,c,i,r)).toVar();u.assign(WO(u,a))})})}),cE(r.equal(G(0)),()=>{u.assign(fO(u))}),u}).setLayout({name:`mx_worley_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),LW=Hz([PW,U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=J(e).toVar(),o=G().toVar(),s=G().toVar(),c=G().toVar(),l=J(cW(a.x,o),cW(a.y,s),cW(a.z,c)).toVar(),u=q(1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{SP({start:-1,end:G(1),name:`z`,condition:`<=`},({z:n})=>{let a=W(MW(l,e,t,n,o,s,c,i,r)).toVar();cE(a.lessThan(u.x),()=>{u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.y.assign(a)})})})}),cE(r.equal(G(0)),()=>{u.assign(fO(u))}),u}).setLayout({name:`mx_worley_noise_vec2_1`,type:`vec2`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),RW=Hz([FW,U(([e,t,n])=>{let r=G(n).toVar(),i=W(t).toVar(),a=J(e).toVar(),o=G().toVar(),s=G().toVar(),c=G().toVar(),l=J(cW(a.x,o),cW(a.y,s),cW(a.z,c)).toVar(),u=J(1e6,1e6,1e6).toVar();return SP({start:-1,end:G(1),name:`x`,condition:`<=`},({x:e})=>{SP({start:-1,end:G(1),name:`y`,condition:`<=`},({y:t})=>{SP({start:-1,end:G(1),name:`z`,condition:`<=`},({z:n})=>{let a=W(MW(l,e,t,n,o,s,c,i,r)).toVar();cE(a.lessThan(u.x),()=>{u.z.assign(u.y),u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.z.assign(u.y),u.y.assign(a)}).ElseIf(a.lessThan(u.z),()=>{u.z.assign(a)})})})}),cE(r.equal(G(0)),()=>{u.assign(fO(u))}),u}).setLayout({name:`mx_worley_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),zW=U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=G(e).toVar(),f=q(t).toVar(),p=q(n).toVar(),m=q(r).toVar(),h=W(i).toVar(),g=W(a).toVar(),_=W(o).toVar(),v=fE(s).toVar(),y=G(c).toVar(),b=W(l).toVar(),x=W(u).toVar(),S=f.mul(p).add(m),C=W(0).toVar();return cE(d.equal(G(0)),()=>{C.assign(TW(S))}),cE(d.equal(G(1)),()=>{C.assign(DW(S))}),cE(d.equal(G(2)),()=>{C.assign(RW(S,h,G(0)))}),cE(d.equal(G(3)),()=>{C.assign(kW(J(S,0),y,b,x))}),C.assign(C.mul(_.sub(g)).add(g)),cE(v,()=>{C.assign(ok(C,g,_))}),C}).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`}]}),BW=U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=G(e).toVar(),f=J(t).toVar(),p=J(n).toVar(),m=J(r).toVar(),h=W(i).toVar(),g=W(a).toVar(),_=W(o).toVar(),v=fE(s).toVar(),y=G(c).toVar(),b=W(l).toVar(),x=W(u).toVar(),S=f.mul(p).add(m),C=W(0).toVar();return cE(d.equal(G(0)),()=>{C.assign(TW(S))}),cE(d.equal(G(1)),()=>{C.assign(DW(S))}),cE(d.equal(G(2)),()=>{C.assign(RW(S,h,G(0)))}),cE(d.equal(G(3)),()=>{C.assign(kW(S,y,b,x))}),C.assign(C.mul(_.sub(g)).add(g)),cE(v,()=>{C.assign(ok(C,g,_))}),C}).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`}]}),VW=U(([e])=>{let t=e.y,n=e.z,r=J().toVar();return cE(t.lessThan(1e-4),()=>{r.assign(J(n,n,n))}).Else(()=>{let i=e.x;i=i.sub(mO(i)).mul(6).toVar();let a=G(zO(i)),o=i.sub(W(a)),s=n.mul(t.oneMinus()),c=n.mul(t.mul(o).oneMinus()),l=n.mul(t.mul(o.oneMinus()).oneMinus());cE(a.equal(G(0)),()=>{r.assign(J(n,l,s))}).ElseIf(a.equal(G(1)),()=>{r.assign(J(c,n,s))}).ElseIf(a.equal(G(2)),()=>{r.assign(J(s,n,l))}).ElseIf(a.equal(G(3)),()=>{r.assign(J(s,c,n))}).ElseIf(a.equal(G(4)),()=>{r.assign(J(l,s,n))}).Else(()=>{r.assign(J(n,s,c))})}),r}).setLayout({name:`mx_hsvtorgb`,type:`vec3`,inputs:[{name:`hsv`,type:`vec3`}]}),HW=U(([e])=>{let t=J(e).toVar(),n=W(t.x).toVar(),r=W(t.y).toVar(),i=W(t.z).toVar(),a=W(WO(n,WO(r,i))).toVar(),o=W(GO(n,GO(r,i))).toVar(),s=W(o.sub(a)).toVar(),c=W().toVar(),l=W().toVar(),u=W().toVar();return u.assign(o),cE(o.greaterThan(0),()=>{l.assign(s.div(o))}).Else(()=>{l.assign(0)}),cE(l.lessThanEqual(0),()=>{c.assign(0)}).Else(()=>{cE(n.greaterThanEqual(o),()=>{c.assign(r.sub(i).div(s))}).ElseIf(r.greaterThanEqual(o),()=>{c.assign(ED(2,i.sub(n).div(s)))}).Else(()=>{c.assign(ED(4,n.sub(r).div(s)))}),c.mulAssign(1/6),cE(c.lessThan(0),()=>{c.addAssign(1)})}),J(c,l,u)}).setLayout({name:`mx_rgbtohsv`,type:`vec3`,inputs:[{name:`c`,type:`vec3`}]}),UW=U(([e])=>{let t=J(e).toVar(),n=vE(PD(t,J(.04045))).toVar();return ak(J(t.div(12.92)).toVar(),J(QO(GO(t.add(J(.055)),J(0)).div(1.055),J(2.4))).toVar(),n)}).setLayout({name:`mx_srgb_texture_to_lin_rec709`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),WW=(e,t)=>{e=W(e),t=W(t);let n=q(t.dFdx(),t.dFdy()).length().mul(.7071067811865476);return lk(e.sub(n),e.add(n),t)},GW=(e,t,n,r)=>ak(e,t,n[r].clamp()),KW=(e,t,n=PA())=>GW(e,t,n,`x`),qW=(e,t,n=PA())=>GW(e,t,n,`y`),JW=(e,t,n,r,i=PA())=>{let a=i.x.clamp(),o=i.y.clamp();return ak(ak(e,t,a),ak(n,r,a),o)},YW=(e,t,n,r,i)=>ak(e,t,WW(n,r[i])),XW=(e,t,n,r=PA())=>YW(e,t,n,r,`x`),ZW=(e,t,n,r=PA())=>YW(e,t,n,r,`y`),QW=(e=1,t=0,n=PA())=>n.mul(e).add(t),$W=(e,t=1)=>(e=W(e),e.abs().pow(t).mul(e.sign())),eG=(e,t=1,n=.5)=>W(e).sub(n).mul(t).add(n),tG=(e=PA(),t=1,n=0)=>wW(e.convert(`vec2|vec3`)).mul(t).add(n),nG=(e=PA(),t=1,n=0)=>TW(e.convert(`vec2|vec3`)).mul(t).add(n),rG=(e=PA(),t=1,n=0)=>(e=e.convert(`vec2|vec3`),yE(TW(e),wW(e.add(q(19,73)))).mul(t).add(n)),iG=(e,t=PA(),n=q(1,1),r=q(0,0),i=1,a=0,o=1,s=!1,c=1,l=2,u=.5)=>zW(e,t.convert(`vec2|vec3`),n,r,i,a,o,s,c,l,u),aG=(e,t=PA(),n=q(1,1),r=q(0,0),i=1,a=0,o=1,s=!1,c=1,l=2,u=.5)=>BW(e,t.convert(`vec2|vec3`),n,r,i,a,o,s,c,l,u),oG=(e=PA(),t=1)=>IW(e.convert(`vec2|vec3`),t,G(1)),sG=(e=PA(),t=1)=>LW(e.convert(`vec2|vec3`),t,G(1)),cG=(e=PA(),t=1)=>RW(e.convert(`vec2|vec3`),t,G(1)),lG=(e=PA())=>EW(e.convert(`vec2|vec3`)),uG=(e=PA(),t=3,n=2,r=.5,i=1)=>OW(e,G(t),n,r).mul(i),dG=(e=PA(),t=3,n=2,r=.5,i=1)=>AW(e,G(t),n,r).mul(i),fG=(e=PA(),t=3,n=2,r=.5,i=1)=>kW(e,G(t),n,r).mul(i),pG=(e=PA(),t=3,n=2,r=.5,i=1)=>jW(e,G(t),n,r).mul(i),mG=(e,t=W(0))=>ED(e,t),hG=(e,t=W(0))=>DD(e,t),gG=(e,t=W(1))=>OD(e,t),_G=(e,t=W(1))=>kD(e,t),vG=(e,t=W(1))=>AD(e,t),yG=(e,t=W(1))=>QO(e,t),bG=(e=W(0),t=W(1))=>OO(e,t),xG=()=>Uz,SG=()=>Gz,CG=(e,t=W(1))=>DD(t,e),wG=(e,t,n,r)=>e.greaterThan(t).mix(n,r),TG=(e,t,n,r)=>e.greaterThanEqual(t).mix(n,r),EG=(e,t,n,r)=>e.equal(t).mix(n,r),DG=(e,t=null)=>{if(typeof t==`string`){let n={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3},r=t.replace(/^out/,``).toLowerCase();if(n[r]!==void 0)return e.element(n[r])}if(typeof t==`number`)return e.element(t);if(typeof t==`string`&&t.length===1){let n={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3};if(n[t]!==void 0)return e.element(n[t])}return e},OG=(e,t=q(.5,.5),n=q(1,1),r=W(0),i=q(0,0))=>{let a=e;if(t&&(a=a.sub(t)),n&&(a=a.mul(n)),r){let e=r.mul(Math.PI/180),t=e.cos(),n=e.sin();a=q(a.x.mul(t).sub(a.y.mul(n)),a.x.mul(n).add(a.y.mul(t)))}return t&&(a=a.add(t)),i&&(a=a.add(i)),a},kG=(e,t)=>{e=q(e),t=W(t);let n=t.mul(Math.PI/180);return oR(e,n)},AG=(e,t,n)=>{e=J(e),t=W(t),n=J(n);let r=t.mul(Math.PI/180),i=n.normalize(),a=r.cos(),o=r.sin(),s=W(1).sub(a);return e.mul(a).add(i.cross(e).mul(o)).add(i.mul(i.dot(e)).mul(s))},jG=(e,t)=>(e=J(e),t=W(t),CN(e,t)),MG=U(([e,t,n])=>{let r=gO(e).toVar(),i=DD(W(.5).mul(t.sub(n)),oM).div(r).toVar(),a=DD(W(-.5).mul(t.sub(n)),oM).div(r).toVar(),o=J().toVar();o.x=r.x.greaterThan(W(0)).select(i.x,a.x),o.y=r.y.greaterThan(W(0)).select(i.y,a.y),o.z=r.z.greaterThan(W(0)).select(i.z,a.z);let s=WO(o.x,o.y,o.z).toVar();return oM.add(r.mul(s)).toVar().sub(n)}),NG=U(([e,t])=>{let n=e.x,r=e.y,i=e.z,a=t.element(0).mul(.886227);return a=a.add(t.element(1).mul(2*.511664).mul(r)),a=a.add(t.element(2).mul(2*.511664).mul(i)),a=a.add(t.element(3).mul(2*.511664).mul(n)),a=a.add(t.element(4).mul(2*.429043).mul(n).mul(r)),a=a.add(t.element(5).mul(2*.429043).mul(r).mul(i)),a=a.add(t.element(6).mul(i.mul(i).mul(.743125).sub(.247708))),a=a.add(t.element(7).mul(2*.429043).mul(n).mul(i)),a=a.add(t.element(8).mul(.429043).mul(OD(n,n).sub(OD(r,r)))),a}),Q=Object.freeze({__proto__:null,BRDF_GGX:nI,BRDF_Lambert:BF,BasicPointShadowFilter:JU,BasicShadowFilter:wU,Break:wP,Const:Ok,Continue:CP,DFGLUT:aI,D_GGX:$F,Discard:SA,EPSILON:QD,F_Schlick:zF,Fn:U,HALF_PI:rO,INFINITY:$D,If:cE,Loop:SP,NodeAccess:eT,NodeShaderStage:Zw,NodeType:$w,NodeUpdateType:Qw,OnBeforeFrameUpdate:HB,OnBeforeMaterialUpdate:VB,OnBeforeObjectUpdate:BB,OnFrameUpdate:zB,OnMaterialUpdate:RB,OnObjectUpdate:LB,PCFShadowFilter:TU,PCFSoftShadowFilter:EU,PI:eO,PI2:tO,PointShadowFilter:YU,Return:CA,Schlick_to_F0:cI,ShaderNode:$T,Stack:uE,Switch:lE,TBNViewMatrix:pN,TWO_PI:nO,VSMShadowFilter:DU,V_GGX_SmithCorrelated:ZF,Var:Dk,VarIntent:kk,abs:AO,acesFilmicToneMapping:NV,acos:EO,acosh:DO,add:ED,addMethodChaining:z,addNodeElement:jA,agxToneMapping:LV,all:iO,alphaT:qE,and:LD,anisotropy:JE,anisotropyB:XE,anisotropyT:YE,any:aO,append:jE,array:bD,arrayBuffer:DE,asin:wO,asinh:TO,assign:xD,atan:OO,atanh:kO,atomicAdd:xH,atomicAnd:TH,atomicFunc:vH,atomicLoad:yH,atomicMax:CH,atomicMin:wH,atomicOr:EH,atomicStore:bH,atomicSub:SH,atomicXor:DH,attenuationColor:lD,attenuationDistance:cD,attribute:NA,attributeArray:GB,backgroundBlurriness:YB,backgroundIntensity:XB,backgroundRotation:ZB,batch:gP,bentNormalView:gN,billboarding:$z,bitAnd:VD,bitNot:HD,bitOr:UD,bitXor:WD,bitangentGeometry:lN,bitangentLocal:uN,bitangentView:dN,bitangentWorld:fN,bitcast:hz,blendBurn:dF,blendColor:hF,blendDodge:fF,blendOverlay:mF,blendScreen:pF,blur:lL,bool:fE,buffer:JA,bufferAttribute:eA,builtin:QA,builtinAOContext:Ck,builtinShadowContext:Sk,bumpMap:CN,bvec2:hE,bvec3:vE,bvec4:SE,bypass:_A,cache:gA,call:CD,cameraFar:Dj,cameraIndex:Tj,cameraNear:Ej,cameraNormalMatrix:Mj,cameraPosition:Nj,cameraProjectionMatrix:Oj,cameraProjectionMatrixInverse:kj,cameraViewMatrix:Aj,cameraViewport:Pj,cameraWorldMatrix:jj,cbrt:rk,cdl:gV,ceil:hO,checker:rW,cineonToneMapping:jV,clamp:ok,clearcoat:BE,clearcoatNormalView:bM,clearcoatRoughness:VE,clipSpace:nM,code:BV,color:dE,colorSpaceToWorking:Bk,colorToDirection:vN,compute:pA,computeKernel:fA,computeSkinning:bP,context:yk,convert:kE,convertColorSpace:Vk,convertToTexture:DB,cos:bO,cosh:xO,countLeadingZeros:Cz,countOneBits:wz,countTrailingZeros:Sz,cross:ZO,cubeTexture:IM,cubeTextureBase:FM,dFdx:FO,dFdy:IO,dashSize:nD,debug:DA,decrement:XD,decrementBefore:JD,defaultBuildStages:nT,defaultShaderStages:tT,defined:ZT,degrees:sO,deltaTime:Wz,densityFogFactor:XV,depth:QP,depthPass:EV,determinant:HO,difference:YO,diffuseColor:FE,diffuseContribution:IE,directPointLight:tW,directionToColor:_N,directionToFaceDirection:fM,dispersion:uD,disposeShadowMaterial:kU,distance:JO,div:kD,dot:XO,drawIndex:uA,dynamicBufferAttribute:tA,element:OE,emissive:LE,equal:jD,equirectUV:TF,exp:cO,exp2:lO,exponentialHeightFogFactor:ZV,expression:xA,faceDirection:dM,faceForward:uk,faceforward:hk,float:W,floatBitsToInt:gz,floatBitsToUint:_z,floor:mO,fog:QV,fract:_O,frameGroup:mD,frameId:Gz,frontFacing:uM,fwidth:BO,gain:Dz,gapSize:rD,getConstNodeType:QT,getCurrentStack:sE,getDirection:aL,getDistanceAttenuation:eW,getGeometryRoughness:YF,getNormalFromDepth:AB,getParallaxCorrectNormal:MG,getRoughness:XF,getScreenPosition:kB,getShIrradianceAt:NG,getShadowMaterial:OU,getShadowRenderObjectFunction:MU,getTextureIndex:fz,getViewPosition:OB,ggxConvolution:pL,globalId:oH,glsl:UV,glslFn:KV,grayscale:dV,greaterThan:PD,greaterThanEqual:ID,hash:Tz,highpModelNormalViewMatrix:tM,highpModelViewMatrix:eM,hue:mV,increment:YD,incrementBefore:qD,inspector:AA,instance:mP,instanceIndex:oA,instancedArray:KB,instancedBufferAttribute:nA,instancedDynamicBufferAttribute:rA,instancedMesh:hP,int:G,intBitsToFloat:vz,interleavedGradientNoise:jB,inverse:UO,inverseSqrt:pO,inversesqrt:gk,invocationLocalIndex:lA,invocationSubgroupIndex:cA,ior:aD,iridescence:WE,iridescenceIOR:GE,iridescenceThickness:KE,isolate:hA,ivec2:pE,ivec3:gE,ivec4:bE,js:VV,label:wk,length:MO,lengthSq:ik,lessThan:ND,lessThanEqual:FD,lightPosition:rU,lightProjectionUV:nU,lightShadowMatrix:tU,lightTargetDirection:oU,lightTargetPosition:iU,lightViewPosition:aU,lightingContext:MP,lights:fU,linearDepth:$P,linearToneMapping:kV,localId:sH,log:uO,log2:dO,logarithmicDepthToViewZ:XP,luminance:hV,mat2:CE,mat3:wE,mat4:TE,matcapUV:rR,materialAO:sP,materialAlphaTest:TN,materialAnisotropy:WN,materialAnisotropyVector:cP,materialAttenuationColor:QN,materialAttenuationDistance:ZN,materialClearcoat:RN,materialClearcoatNormal:BN,materialClearcoatRoughness:zN,materialColor:EN,materialDispersion:aP,materialEmissive:ON,materialEnvIntensity:OM,materialEnvRotation:kM,materialIOR:XN,materialIridescence:GN,materialIridescenceIOR:KN,materialIridescenceThickness:qN,materialLightMap:oP,materialLineDashOffset:rP,materialLineDashSize:eP,materialLineGapSize:tP,materialLineScale:$N,materialLineWidth:nP,materialMetalness:IN,materialNormal:LN,materialOpacity:kN,materialPointSize:iP,materialReference:UM,materialReflectivity:PN,materialRefractionRatio:DM,materialRotation:VN,materialRoughness:FN,materialSheen:HN,materialSheenRoughness:UN,materialShininess:DN,materialSpecular:AN,materialSpecularColor:MN,materialSpecularIntensity:jN,materialSpecularStrength:NN,materialThickness:YN,materialTransmission:JN,max:GO,maxMipLevel:IA,mediumpModelViewMatrix:$j,metalness:zE,min:WO,mix:ak,mixElement:fk,mod:AD,modInt:ZD,modelDirection:Wj,modelNormalMatrix:Xj,modelPosition:Kj,modelRadius:Yj,modelScale:qj,modelViewMatrix:Qj,modelViewPosition:Jj,modelViewProjection:lP,modelWorldMatrix:Gj,modelWorldMatrixInverse:Zj,morphReference:kP,mrt:pz,mul:OD,mx_aastep:WW,mx_add:mG,mx_atan2:bG,mx_cell_noise_float:lG,mx_contrast:eG,mx_divide:_G,mx_fractal_noise_float:uG,mx_fractal_noise_vec2:dG,mx_fractal_noise_vec3:fG,mx_fractal_noise_vec4:pG,mx_frame:SG,mx_heighttonormal:jG,mx_hsvtorgb:VW,mx_ifequal:EG,mx_ifgreater:wG,mx_ifgreatereq:TG,mx_invert:CG,mx_modulo:vG,mx_multiply:gG,mx_noise_float:tG,mx_noise_vec3:nG,mx_noise_vec4:rG,mx_place2d:OG,mx_power:yG,mx_ramp4:JW,mx_ramplr:KW,mx_ramptb:qW,mx_rgbtohsv:HW,mx_rotate2d:kG,mx_rotate3d:AG,mx_safepower:$W,mx_separate:DG,mx_splitlr:XW,mx_splittb:ZW,mx_srgb_texture_to_lin_rec709:UW,mx_subtract:hG,mx_timer:xG,mx_transform_uv:QW,mx_unifiednoise2d:iG,mx_unifiednoise3d:aG,mx_worley_noise_float:oG,mx_worley_noise_vec2:sG,mx_worley_noise_vec3:cG,negate:NO,neutralToneMapping:RV,nodeArray:nE,nodeImmutable:V,nodeObject:B,nodeObjectIntent:eE,nodeObjects:tE,nodeProxy:rE,nodeProxyIntent:H,normalFlat:hM,normalGeometry:pM,normalLocal:mM,normalMap:bN,normalView:vM,normalViewGeometry:gM,normalWorld:yM,normalWorldGeometry:_M,normalize:gO,not:zD,notEqual:MD,numWorkgroups:iH,objectDirection:Lj,objectGroup:gD,objectPosition:zj,objectRadius:Hj,objectScale:Bj,objectViewPosition:Vj,objectWorldMatrix:Rj,oneMinus:PO,or:RD,orthographicDepthToViewZ:GP,oscSawtooth:Yz,oscSine:Kz,oscSquare:qz,oscTriangle:Jz,output:tD,outputStruct:cz,overloadingFn:Hz,packHalf2x16:Nz,packSnorm2x16:jz,packUnorm2x16:Mz,parabola:Ez,parallaxDirection:mN,parallaxUV:hN,parameter:tz,pass:wV,passTexture:TV,pcurve:Oz,perspectiveDepthToViewZ:JP,pmremTexture:WL,pointShadow:QU,pointUV:qB,pointWidth:iD,positionGeometry:rM,positionLocal:iM,positionPrevious:aM,positionView:cM,positionViewDirection:lM,positionWorld:oM,positionWorldDirection:sM,posterize:_V,pow:QO,pow2:$O,pow3:ek,pow4:tk,premultiplyAlpha:gF,property:NE,quadBroadcast:QH,quadSwapDiagonal:KH,quadSwapX:WH,quadSwapY:GH,radians:oO,rand:dk,range:tH,rangeFogFactor:YV,reciprocal:RO,reference:BM,referenceBuffer:VM,reflect:qO,reflectVector:MM,reflectView:AM,reflector:bB,refract:ck,refractVector:NM,refractView:jM,reinhardToneMapping:AV,remap:vA,remapClamp:yA,renderGroup:hD,renderOutput:TA,rendererReference:Kk,replaceDefaultUV:Xz,rotate:oR,rotateUV:Zz,roughness:RE,round:LO,rtt:EB,sRGBTransferEOTF:Pk,sRGBTransferOETF:Fk,sample:PB,sampler:GA,samplerComparison:KA,saturate:sk,saturation:fV,screenCoordinate:aj,screenDPR:nj,screenSize:ij,screenUV:rj,select:_k,setCurrentStack:oE,setName:xk,shaderStages:rT,shadow:zU,shadowPositionWorld:mU,shapeCircle:iW,sharedUniformGroup:pD,sheen:HE,sheenRoughness:UE,shiftLeft:GD,shiftRight:KD,shininess:eD,sign:jO,sin:vO,sinc:kz,sinh:yO,skinning:yP,smoothstep:lk,smoothstepElement:pk,specularColor:ZE,specularColorBlended:QE,specularF90:$E,spherizeUV:Qz,split:AE,spritesheetUV:tB,sqrt:fO,stack:nz,step:KO,stepElement:mk,storage:fP,storageBarrier:dH,storageTexture:QB,string:EE,struct:oz,sub:DD,subBuild:jk,subgroupAdd:AH,subgroupAll:VH,subgroupAnd:IH,subgroupAny:HH,subgroupBallot:kH,subgroupBroadcast:qH,subgroupBroadcastFirst:UH,subgroupElect:OH,subgroupExclusiveAdd:MH,subgroupExclusiveMul:FH,subgroupInclusiveAdd:jH,subgroupInclusiveMul:PH,subgroupIndex:sA,subgroupMax:BH,subgroupMin:zH,subgroupMul:NH,subgroupOr:LH,subgroupShuffle:JH,subgroupShuffleDown:ZH,subgroupShuffleUp:XH,subgroupShuffleXor:YH,subgroupSize:cH,subgroupXor:RH,tan:SO,tangentGeometry:iN,tangentLocal:aN,tangentView:oN,tangentWorld:sN,tanh:CO,texture:VA,texture3D:tV,texture3DLevel:rV,texture3DLoad:nV,textureBarrier:fH,textureBicubic:DI,textureBicubicLevel:EI,textureCubeUV:oL,textureLevel:WA,textureLoad:UA,textureSize:FA,textureStore:$B,thickness:sD,time:Uz,toneMapping:Jk,toneMappingExposure:Yk,toonOutlinePass:OV,transformDirection:nk,transformNormal:xM,transformNormalToView:SM,transformedClearcoatNormalView:TM,transformedNormalView:CM,transformedNormalWorld:wM,transmission:oD,transpose:VO,triNoise3D:Bz,triplanarTexture:rB,triplanarTextures:nB,trunc:zO,uint:K,uintBitsToFloat:yz,uniform:vD,uniformArray:ZA,uniformCubeTexture:LM,uniformFlow:bk,uniformGroup:fD,uniformTexture:HA,unpackHalf2x16:Lz,unpackNormal:yN,unpackSnorm2x16:Fz,unpackUnorm2x16:Iz,unpremultiplyAlpha:_F,userData:aV,uv:PA,uvec2:mE,uvec3:_E,uvec4:xE,varying:Mk,varyingProperty:PE,vec2:q,vec3:J,vec4:yE,vectorComponents:iT,velocity:uV,vertexColor:uF,vertexIndex:aA,vertexStage:Nk,vibrance:pV,viewZToLogarithmicDepth:YP,viewZToOrthographicDepth:UP,viewZToPerspectiveDepth:KP,viewZToReversedOrthographicDepth:WP,viewZToReversedPerspectiveDepth:qP,viewport:oj,viewportCoordinate:cj,viewportDepthTexture:VP,viewportLinearDepth:eF,viewportMipTexture:LP,viewportOpaqueMipTexture:zP,viewportResolution:uj,viewportSafeUV:eB,viewportSharedTexture:yV,viewportSize:sj,viewportTexture:IP,viewportUV:lj,vogelDiskSample:MB,wgsl:HV,wgslFn:qV,workgroupArray:hH,workgroupBarrier:uH,workgroupId:aH,workingToColorSpace:zk,xor:BD}),PG=new $R,FG=class extends CR{constructor(e,t){super(),this.renderer=e,this.nodes=t}update(e,t,n){let r=this.renderer,i=this.nodes.getBackgroundNode(e)||e.background,a=!1;if(i===null)r._clearColor.getRGB(PG),PG.a=r._clearColor.a;else if(i.isColor===!0)i.getRGB(PG),PG.a=1,a=!0;else if(i.isNode===!0){let n=this.get(e),a=i;PG.copy(r._clearColor);let o=n.backgroundMesh;if(o===void 0){let e=yE(a).mul(XB).context({getUV:()=>ZB.mul(_M),getTextureLevel:()=>YB}),t=Oj.element(3).element(3).equal(1),r=kD(1,Oj.element(1).element(1)).mul(3),s=t.select(iM.mul(r),iM),c=Qj.mul(yE(s,0)),l=Oj.mul(yE(c.xyz,1));l=l.setZ(l.w);let u=new vF;u.name=`Background.material`,u.side=1,u.depthTest=!1,u.depthWrite=!1,u.allowOverride=!1,u.fog=!1,u.lights=!1,u.vertexNode=l,u.colorNode=e,n.backgroundMeshNode=e,n.backgroundMesh=o=new bo(new Rl(1,32,32),u),o.frustumCulled=!1,o.name=`Background.mesh`;function d(){i.removeEventListener(`dispose`,d),o.material.dispose(),o.geometry.dispose()}i.addEventListener(`dispose`,d)}let s=a.getCacheKey();n.backgroundCacheKey!==s&&(n.backgroundMeshNode.node=yE(a).mul(XB),n.backgroundMeshNode.needsUpdate=!0,o.material.needsUpdate=!0,n.backgroundCacheKey=s),t.unshift(o,o.geometry,o.material,0,0,null,null)}else M(`Renderer: Unsupported background configuration.`,i);let o=r.xr.getEnvironmentBlendMode();if(o===`additive`?PG.set(0,0,0,1):o===`alpha-blend`&&PG.set(0,0,0,0),r.autoClear===!0||a===!0){let e=n.clearColorValue;e.r=PG.r,e.g=PG.g,e.b=PG.b,e.a=PG.a,(r.backend.isWebGLBackend===!0||r.alpha===!0)&&(e.r*=e.a,e.g*=e.a,e.b*=e.a),n.depthClearValue=r.getClearDepth(),n.stencilClearValue=r.getClearStencil(),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}},IG=0,LG=class{constructor(e=``,t=[]){this.name=e,this.bindings=t,this.id=IG++}},RG=class{constructor(e,t,n,r,i,a,o,s,c,l=[]){this.vertexShader=e,this.fragmentShader=t,this.computeShader=n,this.transforms=l,this.nodeAttributes=r,this.bindings=i,this.updateNodes=a,this.updateBeforeNodes=o,this.updateAfterNodes=s,this.observer=c,this.usedTimes=0}createBindings(){let e=[];for(let t of this.bindings)if(t.bindings[0].groupNode.shared!==!0){let n=new LG(t.name,[]);e.push(n);for(let e of t.bindings)n.bindings.push(e.clone())}else e.push(t);return e}},zG=class{constructor(e,t,n=null){this.isNodeAttribute=!0,this.name=e,this.type=t,this.node=n}},BG=class{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}},VG=class{constructor(e,t,n=!1,r=null){this.isNodeVar=!0,this.name=e,this.type=t,this.readOnly=n,this.count=r}},HG=class extends VG{constructor(e,t,n=null,r=null){super(e,t),this.needsInterpolation=!1,this.isNodeVarying=!0,this.interpolationType=n,this.interpolationSampling=r}},UG=class{constructor(e,t,n=``){this.name=e,this.type=t,this.code=n,Object.defineProperty(this,"isNodeCode",{value:!0})}},WG=0,GG=class{constructor(e=null){this.id=WG++,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)}},KG=class{constructor(e,t){this.name=e,this.members=t,this.output=!1}},qG=class{constructor(e,t){this.name=e,this.value=t,this.boundary=0,this.itemSize=0,this.offset=0,this.index=-1}setValue(e){this.value=e}getValue(){return this.value}},JG=class extends qG{constructor(e,t=0){super(e,t),this.isNumberUniform=!0,this.boundary=4,this.itemSize=1}},YG=class extends qG{constructor(e,t=new N){super(e,t),this.isVector2Uniform=!0,this.boundary=8,this.itemSize=2}},XG=class extends qG{constructor(e,t=new P){super(e,t),this.isVector3Uniform=!0,this.boundary=16,this.itemSize=3}},ZG=class extends qG{constructor(e,t=new Nr){super(e,t),this.isVector4Uniform=!0,this.boundary=16,this.itemSize=4}},QG=class extends qG{constructor(e,t=new I){super(e,t),this.isColorUniform=!0,this.boundary=16,this.itemSize=3}},$G=class extends qG{constructor(e,t=new If){super(e,t),this.isMatrix2Uniform=!0,this.boundary=8,this.itemSize=4}},eK=class extends qG{constructor(e,t=new _r){super(e,t),this.isMatrix3Uniform=!0,this.boundary=48,this.itemSize=12}},tK=class extends qG{constructor(e,t=new F){super(e,t),this.isMatrix4Uniform=!0,this.boundary=64,this.itemSize=16}},nK=class extends JG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},rK=class extends YG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},iK=class extends XG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},aK=class extends ZG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},oK=class extends QG{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},sK=class extends $G{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},cK=class extends eK{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},lK=class extends tK{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},uK=0,dK=new WeakMap,fK=new WeakMap,pK=new Map([[Int8Array,`int`],[Int16Array,`int`],[Int32Array,`int`],[Uint8Array,`uint`],[Uint16Array,`uint`],[Uint32Array,`uint`],[Float32Array,`float`]]),mK=e=>/e/g.test(e)?String(e).replace(/\+/g,``):(e=Number(e),e+(e%1?``:`.0`)),hK=class{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=nz(),this.stacks=[],this.tab=` `,this.currentFunctionNode=null,this.context={material:this.material},this.cache=new GG,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:uK++})}isFlatShading(){return this.material.flatShading===!0||this.geometry.hasAttribute(`normal`)===!1}isOpaque(){let e=this.material;return e.transparent===!1&&e.blending===1&&e.alphaToCoverage===!1}createRenderTarget(e,t,n){return new Pr(e,t,n)}createCubeRenderTarget(e,t){return new EF(e,t)}includes(e){return this.nodes.includes(e)}getOutputStructName(){}_getBindGroup(e,t){let n=t[0].groupNode,r=n.shared;if(r)for(let e=1;e<t.length;e++)n!==t[e].groupNode&&(r=!1);let i;if(r){let n=``;for(let e of t)if(e.isNodeUniformsGroup){e.uniforms.sort((e,t)=>e.nodeUniform.node.id-t.nodeUniform.node.id);for(let t of e.uniforms)n+=t.nodeUniform.node.id}else n+=e.nodeUniform.id;let r=this.renderer._currentRenderContext||this.renderer,a=dK.get(r);a===void 0&&(a=new Map,dK.set(r,a));let o=Iw(n);i=a.get(o),i===void 0&&(i=new LG(e,t),a.set(o,i))}else i=new LG(e,t);return i}getBindGroupArray(e,t){let n=this.bindings[t],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){let t={},n=this.bindings;for(let e of rT)for(let r in n[e]){let i=n[e][r],a=t[r]||(t[r]=[]);for(let e of i)a.includes(e)===!1&&a.push(e)}e=[];for(let n in t){let r=t[n],i=this._getBindGroup(n,r);e.push(i)}this.bindGroups=e}return e}sortBindingGroups(){let e=this.getBindings();e.sort((e,t)=>e.bindings[0].groupNode.order-t.bindings[0].groupNode.order);for(let t=0;t<e.length;t++){let n=e[t];this.bindingsIndexes[n.name].group=t}}setHashNode(e,t){this.hashNodes[t]=e}addNode(e){this.nodes.includes(e)===!1&&(this.nodes.push(e),this.setHashNode(e,e.getHash(this)))}addSequentialNode(e){let t=e.getUpdateBeforeType(),n=e.getUpdateAfterType();(t!==Qw.NONE||n!==Qw.NONE)&&this.sequentialNodes.includes(e)===!1&&this.sequentialNodes.push(e)}buildUpdateNodes(){for(let e of this.nodes)e.getUpdateType()!==Qw.NONE&&this.updateNodes.push(e);for(let e of this.sequentialNodes){let t=e.getUpdateBeforeType(),n=e.getUpdateAfterType();t!==Qw.NONE&&this.updateBeforeNodes.push(e),n!==Qw.NONE&&this.updateAfterNodes.push(e)}}get currentNode(){return this.chaining[this.chaining.length-1]}isFilteredTexture(e){return e.magFilter===1006||e.magFilter===1007||e.magFilter===1005||e.magFilter===1008||e.minFilter===1006||e.minFilter===1007||e.minFilter===1005||e.minFilter===1008}getUniformBufferLimit(){return this.renderer.backend.capabilities.getUniformBufferLimit()}addChain(e){this.chaining.push(e)}removeChain(e){if(this.chaining.pop()!==e)throw Error(`NodeBuilder: Invalid node chaining!`)}getMethod(e){return e}getTernary(){return null}getNodeFromHash(e){return this.hashNodes[e]}addFlow(e,t){return this.flowNodes[e].push(t),t}setContext(e){this.context=e}getContext(){return this.context}addContext(e){let t=this.getContext();return this.setContext({...this.context,...e}),t}getSharedContext(){let e={...this.context};return delete e.material,delete e.getUV,delete e.getOutput,delete e.getTextureLevel,delete e.getAO,delete e.getShadow,e}setCache(e){this.cache=e}getCache(){return this.cache}getCacheFromNode(e,t=!0){let n=this.getDataFromNode(e);return n.cache===void 0&&(n.cache=new GG(t?this.getCache():null)),n.cache}isAvailable(){return!1}getVertexIndex(){j(`Abstract function.`)}getInstanceIndex(){j(`Abstract function.`)}getDrawIndex(){j(`Abstract function.`)}getFrontFacing(){j(`Abstract function.`)}getFragCoord(){j(`Abstract function.`)}isFlipY(){return!1}increaseUsage(e){let t=this.getDataFromNode(e);return t.usageCount=t.usageCount===void 0?1:t.usageCount+1,t.usageCount}generateTexture(){j(`Abstract function.`)}generateTextureLod(){j(`Abstract function.`)}generateArrayDeclaration(e,t){return this.getType(e)+`[ `+t+` ]`}generateArray(e,t,n=null){let r=this.generateArrayDeclaration(e,t)+`( `;for(let i=0;i<t;i++){let a=n?n[i]:null;a===null?r+=this.generateConst(e):r+=a.build(this,e),i<t-1&&(r+=`, `)}return r+=` )`,r}generateStruct(e,t,n=null){let r=[];for(let e of t){let{name:t,type:i}=e;n&&n[t]&&n[t].isNode?r.push(n[t].build(this,i)):r.push(this.generateConst(i))}return e+`( `+r.join(`, `)+` )`}generateConst(e,t=null){if(t===null&&(e===`float`||e===`int`||e===`uint`?t=0:e===`bool`?t=!1:e===`color`?t=new I:e===`vec2`||e===`uvec2`||e===`ivec2`?t=new N:e===`vec3`||e===`uvec3`||e===`ivec3`?t=new P:(e===`vec4`||e===`uvec4`||e===`ivec4`)&&(t=new Nr)),e===`float`)return mK(t);if(e===`int`)return`${Math.round(t)}`;if(e===`uint`)return t>=0?`${Math.round(t)}u`:`0u`;if(e===`bool`)return t?`true`:`false`;if(e===`color`)return`${this.getType(`vec3`)}( ${mK(t.r)}, ${mK(t.g)}, ${mK(t.b)} )`;let n=this.getTypeLength(e),r=this.getComponentType(e),i=e=>this.generateConst(r,e);if(n===2)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)} )`;if(n===3)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)} )`;if(n===4&&e!==`mat2`)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)}, ${i(t.w)} )`;if(n>=4&&t&&(t.isMatrix2||t.isMatrix3||t.isMatrix4))return`${this.getType(e)}( ${t.elements.map(i).join(`, `)} )`;if(n>4)return`${this.getType(e)}()`;throw 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){let n=this.attributes;for(let t of n)if(t.name===e)return t;let r=new zG(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){let t=e.type;if(e.isDataTexture){if(t===1013)return`int`;if(t===1014)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;let 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=Vw(e),r=t===`float`?``:t[0];return/mat2/.test(t)===!0&&(n=n.replace(`vec`,`mat`)),r+n}getTypeFromArray(e){return pK.get(e.constructor)}isInteger(e){return/int|uint|(i|u)vec/.test(e)}getTypeFromAttribute(e){let t=e;e.isInterleavedBufferAttribute&&(t=e.data);let n=t.array,r=e.itemSize,i=e.normalized,a;return!(e instanceof ha)&&i!==!0&&(a=this.getTypeFromArray(n)),this.getTypeFromLength(r,a)}getTypeLength(e){let t=this.getVectorType(e),n=/vec([2-4])/.exec(t);return n===null?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:Number(n[1])}getVectorFromMatrix(e){return e.replace(`mat`,`vec`)}changeComponentType(e,t){return this.getTypeFromLength(this.getTypeLength(e),t)}getIntegerType(e){let 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 Error(`NodeBuilder: Invalid active stack removal.`)}getActiveStack(){return this.activeStacks[this.activeStacks.length-1]}getBaseStack(){return this.activeStacks[0]}addStack(){this.stack=nz(this.stack);let e=sE();return this.stacks.push(e),oE(this.stack),this.stack}removeStack(){let e=this.stack;for(let t of e.nodes){let n=this.getDataFromNode(t);n.stack=e}return this.stack=e.parent,oE(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 i=r[t],a=r.any?r.any.subBuilds:null,o=this.getClosestSubBuild(a);return o&&(i.subBuildsCache===void 0&&(i.subBuildsCache={}),i=i.subBuildsCache[o]||(i.subBuildsCache[o]={}),i.subBuilds=a),i}getNodeProperties(e,t=`any`){let n=this.getDataFromNode(e,t);return n.properties||={outputNode:null}}getBufferAttributeFromNode(e,t){let n=this.getDataFromNode(e,`vertex`),r=n.bufferAttribute;return r===void 0&&(r=new zG(`nodeAttribute`+this.uniforms.index++,t,e),this.bufferAttributes.push(r),n.bufferAttribute=r),r}getStructTypeNode(e,t=this.shaderStage){return this.types[t][e]||null}getStructTypeFromNode(e,t,n=null,r=this.shaderStage){let i=this.getDataFromNode(e,r,this.globalCache),a=i.structType;if(a===void 0){let o=this.structs.index++;n===null&&(n=`StructType`+o),a=new KG(n,t),this.structs[r].push(a),this.types[r][n]=e,i.structType=a}return a}getOutputStructTypeFromNode(e,t){let n=this.getStructTypeFromNode(e,t,`OutputType`,`fragment`);return n.output=!0,n}getUniformFromNode(e,t,n=this.shaderStage,r=null){let i=this.getDataFromNode(e,n,this.globalCache),a=i.uniform;if(a===void 0){let o=this.uniforms.index++;a=new BG(r||`nodeUniform`+o,t,e),this.uniforms[n].push(a),this.registerDeclaration(a),i.uniform=a}return a}getVarFromNode(e,t=null,n=e.getNodeType(this),r=this.shaderStage,i=!1){let a=this.getDataFromNode(e,r),o=this.getSubBuildProperty(`variable`,a.subBuilds),s=a[o];if(s===void 0){let c=i?`_const`:`_var`,l=this.vars[r]||(this.vars[r]=[]),u=this.vars[c]||(this.vars[c]=0);t===null&&(t=(i?`nodeConst`:`nodeVar`)+u,this.vars[c]++),o!==`variable`&&(t=this.getSubBuildProperty(t,a.subBuilds));let d=e.getArrayCount(this);s=new VG(t,n,i,d),i||l.push(s),this.registerDeclaration(s),a[o]=s}return s}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(let 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,i=null){let a=this.getDataFromNode(e,`any`),o=this.getSubBuildProperty(`varying`,a.subBuilds),s=a[o];if(s===void 0){let e=this.varyings,c=e.length;t===null&&(t=`nodeVarying`+c),o!==`varying`&&(t=this.getSubBuildProperty(t,a.subBuilds)),s=new HG(t,n,r,i),e.push(s),this.registerDeclaration(s),a[o]=s}return s}registerDeclaration(e){let t=this.shaderStage,n=this.declarations[t]||(this.declarations[t]={}),r=this.getPropertyName(e),i=1,a=r;for(;n[a]!==void 0;)a=r+`_`+i++;i>1&&(e.name=a,j(`TSL: Declaration name '${r}' of '${e.type}' already in use. Renamed to '${a}'.`)),n[a]=e}getCodeFromNode(e,t,n=this.shaderStage){let r=this.getDataFromNode(e),i=r.code;if(i===void 0){let e=this.codes[n]||(this.codes[n]=[]),a=e.length;i=new UG(`nodeCode`+a,t),e.push(i),r.code=i}return i}addFlowCodeHierarchy(e,t){let{flowCodes:n,flowCodeBlock:r}=this.getDataFromNode(e),i=!0,a=t;for(;a;){if(r.get(a)===!0){i=!1;break}a=this.getDataFromNode(a).parentNodeBlock}if(i)for(let e of n)this.addLineFlowCode(e)}addLineFlowCodeBlock(e,t,n){let r=this.getDataFromNode(e),i=r.flowCodes||=[],a=r.flowCodeBlock||=new WeakMap;i.push(t),a.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+=`;
4134
4134
  `),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){let 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){let t=new WV,n=this.currentFunctionNode;return this.currentFunctionNode=t,t.code=this.buildFunctionCode(e),this.currentFunctionNode=n,t}flowShaderNode(e){let t=e.layout,n={[Symbol.iterator](){let e=0,t=Object.values(this);return{next:()=>({value:t[e],done:e++>=t.length})}}};for(let e of t.inputs)n[e.name]=new ez(e.type,e.name);e.layout=null;let r=e.call(n),i=this.flowStagesNode(r,t.type);return e.layout=t,i}flowBuildStage(e,t,n=null){let r=this.getBuildStage();this.setBuildStage(t);let i=e.build(this,n);return this.setBuildStage(r),i}flowStagesNode(e,t=null){let n=this.flow,r=this.vars,i=this.declarations,a=this.cache,o=this.buildStage,s=this.stack,c={code:``};this.flow=c,this.vars={},this.declarations={},this.cache=new GG,this.stack=nz();for(let n of nT)this.setBuildStage(n),c.result=e.build(this,t);return c.vars=this.getVars(this.shaderStage),this.flow=n,this.vars=r,this.declarations=i,this.cache=a,this.stack=s,this.setBuildStage(o),c}getFunctionOperator(){return null}buildFunctionCode(){j(`Abstract function.`)}flowChildNode(e,t=null){let 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){let i=this.tab,a=this.cache,o=this.shaderStage,s=this.context;this.setShaderStage(e);let c={...this.context};delete c.nodeBlock,this.cache=this.globalCache,this.tab=` `,this.context=c;let l=null;if(this.buildStage===`generate`){let i=this.flowChildNode(t,n);r!==null&&(i.code+=`${this.tab+r} = ${i.result};\n`),this.flowCode[e]=this.flowCode[e]+i.code,l=i}else l=t.build(this);return this.setShaderStage(o),this.cache=a,this.tab=i,this.context=s,l}getAttributesArray(){return this.attributes.concat(this.bufferAttributes)}getAttributes(){j(`Abstract function.`)}getVaryings(){j(`Abstract function.`)}getVar(e,t,n=null){return`${n===null?this.getType(e):this.generateArrayDeclaration(e,n)} ${t}`}getVars(e,t=!1){let n=[],r=this.vars[e];if(r!==void 0)for(let e of r)n.push(`${this.getVar(e.type,e.name,e.count)};`);return n.join(t?`
4135
4135
  `:`
4136
4136
  `)}getUniforms(){j(`Abstract function.`)}getCodes(e){let t=this.codes[e],n=``;if(t!==void 0)for(let e of t)n+=e.code+`
4137
4137
  `;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(){j(`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(t=e&&e.isNode?e.isShaderCallNodeInternal?e.shaderNode.subBuilds:e.isStackNode?[e.subBuild]:this.getDataFromNode(e,`any`).subBuilds:e instanceof Set?[...e]:e,!t)return null;let n=this.subBuildLayers;for(let e=t.length-1;e>=0;e--){let r=t[e];if(n.includes(r))return r}return null}getSubBuildOutput(e){return this.getSubBuildProperty(`outputNode`,e)}getSubBuildProperty(e=``,t=null){let n;n=t===null?this.subBuildFn:this.getClosestSubBuild(t);let r;return r=n?e?n+`_`+e:n:e,r}prebuild(){let{object:e,renderer:t,material:n}=this;if(t.contextNode.isContextNode===!0?this.context={...this.context,...t.contextNode.getFlowContextData()}:M('NodeBuilder: "renderer.contextNode" must be an instance of `context()`.'),n&&n.contextNode&&(n.contextNode.isContextNode===!0?this.context={...this.context,...n.contextNode.getFlowContextData()}:M('NodeBuilder: "material.contextNode" must be an instance of `context()`.')),n!==null){let e=t.library.fromMaterial(n);e===null&&(M(`NodeBuilder: Material "${n.type}" is not compatible.`),e=new vF),e.build(this)}else this.addFlow(`compute`,e)}build(){this.prebuild();for(let e of nT){this.setBuildStage(e),this.context.position&&this.context.position.isNode&&this.flowNodeFromShaderStage(`vertex`,this.context.position);for(let t of rT){this.setShaderStage(t);let n=this.flowNodes[t];for(let t of n)e===`generate`?this.flowNode(t):t.build(this)}}return this.setBuildStage(null),this.setShaderStage(null),this.buildCode(),this.buildUpdateNodes(),this}async buildAsync(){this.prebuild();for(let e of nT){this.setBuildStage(e),this.context.position&&this.context.position.isNode&&this.flowNodeFromShaderStage(`vertex`,this.context.position);for(let t of rT){this.setShaderStage(t);let n=this.flowNodes[t];for(let t of n)e===`generate`?this.flowNode(t):t.build(this);await Ln()}}return this.setBuildStage(null),this.setShaderStage(null),this.buildCode(),this.buildUpdateNodes(),this}getSharedDataFromNode(e){let t=fK.get(e);return t===void 0&&(t={}),t}getNodeUniform(e,t){let n=this.getSharedDataFromNode(e),r=n.cache;if(r===void 0){if(t===`float`||t===`int`||t===`uint`)r=new nK(e);else if(t===`vec2`||t===`ivec2`||t===`uvec2`)r=new rK(e);else if(t===`vec3`||t===`ivec3`||t===`uvec3`)r=new iK(e);else if(t===`vec4`||t===`ivec4`||t===`uvec4`)r=new aK(e);else if(t===`color`)r=new oK(e);else if(t===`mat2`)r=new sK(e);else if(t===`mat3`)r=new cK(e);else if(t===`mat4`)r=new lK(e);else throw 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;let r=this.getTypeLength(t),i=this.getTypeLength(n);return r===16&&i===9?`${this.getType(n)}( ${e}[ 0 ].xyz, ${e}[ 1 ].xyz, ${e}[ 2 ].xyz )`:r===9&&i===4?`${this.getType(n)}( ${e}[ 0 ].xy, ${e}[ 1 ].xy )`:r>4||i>4||i===0?e:r===i?`${this.getType(n)}( ${e} )`:r>i?(e=n===`bool`?`all( ${e} )`:`${e}.${`xyz`.slice(0,i)}`,this.format(e,this.getTypeFromLength(i,this.getComponentType(t)),n)):i===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&&i>1&&t!==this.getComponentType(n)&&(e=`${this.getType(this.getComponentType(n))}( ${e} )`),`${this.getType(n)}( ${e} )`)}getSignature(){return`// Three.js r184 - Node System
4138
- `}needsPreviousData(){let e=this.renderer.getMRT();return e&&e.has(`velocity`)||Jw(this.object).useVelocity===!0}},gK=class{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){let t=e.getUpdateBeforeType(),n=e.updateReference(this);if(t===Qw.FRAME){let t=this._getMaps(this.updateBeforeMap,n);if(t.frameId!==this.frameId){let n=t.frameId;t.frameId=this.frameId,e.updateBefore(this)===!1&&(t.frameId=n)}}else if(t===Qw.RENDER){let t=this._getMaps(this.updateBeforeMap,n);if(t.renderId!==this.renderId){let n=t.renderId;t.renderId=this.renderId,e.updateBefore(this)===!1&&(t.renderId=n)}}else t===Qw.OBJECT&&e.updateBefore(this)}updateAfterNode(e){let t=e.getUpdateAfterType(),n=e.updateReference(this);if(t===Qw.FRAME){let t=this._getMaps(this.updateAfterMap,n);t.frameId!==this.frameId&&e.updateAfter(this)!==!1&&(t.frameId=this.frameId)}else if(t===Qw.RENDER){let t=this._getMaps(this.updateAfterMap,n);t.renderId!==this.renderId&&e.updateAfter(this)!==!1&&(t.renderId=this.renderId)}else t===Qw.OBJECT&&e.updateAfter(this)}updateNode(e){let t=e.getUpdateType(),n=e.updateReference(this);if(t===Qw.FRAME){let t=this._getMaps(this.updateMap,n);t.frameId!==this.frameId&&e.update(this)!==!1&&(t.frameId=this.frameId)}else if(t===Qw.RENDER){let t=this._getMaps(this.updateMap,n);t.renderId!==this.renderId&&e.update(this)!==!1&&(t.renderId=this.renderId)}else t===Qw.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}},_K=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};_K.isNodeFunctionInput=!0;var vK=class extends $U{static get type(){return`AmbientLightNode`}constructor(e=null){super(e)}setup({context:e}){e.irradiance.addAssign(this.colorNode)}},yK=class extends $U{static get type(){return`DirectionalLightNode`}constructor(e=null){super(e)}setupDirect(){let e=this.colorNode;return{lightDirection:oU(this.light),lightColor:e}}},bK=class extends $U{static get type(){return`HemisphereLightNode`}constructor(e=null){super(e),this.lightPositionNode=rU(e),this.lightDirectionNode=this.lightPositionNode.normalize(),this.groundColorNode=vD(new I).setGroup(hD)}update(e){let{light:t}=this;super.update(e),this.lightPositionNode.object3d=t,this.groundColorNode.value.copy(t.groundColor).multiplyScalar(t.intensity)}setup(e){let{colorNode:t,groundColorNode:n,lightDirectionNode:r}=this,i=ak(n,t,yM.dot(r).mul(.5).add(.5));e.context.irradiance.addAssign(i)}},xK=class extends $U{static get type(){return`SpotLightNode`}constructor(e=null){super(e),this.coneCosNode=vD(0).setGroup(hD),this.penumbraCosNode=vD(0).setGroup(hD),this.cutoffDistanceNode=vD(0).setGroup(hD),this.decayExponentNode=vD(0).setGroup(hD),this.colorNode=vD(this.color).setGroup(hD)}update(e){super.update(e);let{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){let{coneCosNode:n,penumbraCosNode:r}=this;return lk(n,r,t)}getLightCoord(e){let t=e.getNodeProperties(this),n=t.projectionUV;return n===void 0&&(n=nU(this.light,e.context.positionWorld),t.projectionUV=n),n}setupDirect(e){let{colorNode:t,cutoffDistanceNode:n,decayExponentNode:r,light:i}=this,a=this.getLightVector(e),o=a.normalize(),s=o.dot(oU(i)),c=this.getSpotAttenuation(e,s),l=eW({lightDistance:a.length(),cutoffDistance:n,decayExponent:r}),u=t.mul(c).mul(l),d,f;return i.colorNode?(f=this.getLightCoord(e),d=i.colorNode(f)):i.map&&(f=this.getLightCoord(e),d=VA(i.map,f.xy).onRenderUpdate(()=>i.map)),d&&(u=f.mul(2).sub(1).abs().lessThan(1).all().select(u.mul(d),u)),{lightColor:u,lightDirection:o}}},SK=class extends xK{static get type(){return`IESSpotLightNode`}getSpotAttenuation(e,t){let n=this.light.iesMap,r=null;return r=n&&n.isTexture===!0?VA(n,q(t.acos().mul(1/Math.PI),0),0).r:super.getSpotAttenuation(t),r}},CK=class extends $U{static get type(){return`LightProbeNode`}constructor(e=null){super(e);let t=[];for(let e=0;e<9;e++)t.push(new P);this.lightProbe=ZA(t)}update(e){let{light:t}=this;super.update(e);for(let e=0;e<9;e++)this.lightProbe.array[e].copy(t.sh.coefficients[e]).multiplyScalar(t.intensity)}setup(e){let t=NG(yM,this.lightProbe);e.context.irradiance.addAssign(t)}},wK=U(([e,t])=>{let n=e.abs().sub(t);return MO(GO(n,0)).add(WO(GO(n.x,n.y),0))}),TK=class extends xK{static get type(){return`ProjectorLightNode`}update(e){super.update(e);let t=this.light;if(this.penumbraCosNode.value=Math.min(Math.cos(t.angle*(1-t.penumbra)),.99999),t.aspect===null){let e=1;t.map!==null&&(e=t.map.width/t.map.height),t.shadow.aspect=e}else t.shadow.aspect=t.aspect}getSpotAttenuation(e){let t=W(0),n=this.penumbraCosNode,r=tU(this.light).mul(e.context.positionWorld||oM);return cE(r.w.greaterThan(0),()=>{let e=wK(r.xyz.div(r.w).xy.sub(q(.5)),q(.5)),i=kD(-1,DD(1,EO(n)).sub(1));t.assign(sk(e.mul(-2).mul(i)))}),t}},EK=new F,DK=new F,OK=null,kK=class extends $U{static get type(){return`RectAreaLightNode`}constructor(e=null){super(e),this.halfHeight=vD(new P).setGroup(hD),this.halfWidth=vD(new P).setGroup(hD),this.updateType=Qw.RENDER}update(e){super.update(e);let{light:t}=this,n=e.camera.matrixWorldInverse;DK.identity(),EK.copy(t.matrixWorld),EK.premultiply(n),DK.extractRotation(EK),this.halfWidth.value.set(t.width*.5,0,0),this.halfHeight.value.set(0,t.height*.5,0),this.halfWidth.value.applyMatrix4(DK),this.halfHeight.value.applyMatrix4(DK)}setupDirectRectArea(e){let t,n;e.isAvailable(`float32Filterable`)?(t=VA(OK.LTC_FLOAT_1),n=VA(OK.LTC_FLOAT_2)):(t=VA(OK.LTC_HALF_1),n=VA(OK.LTC_HALF_2));let{colorNode:r,light:i}=this;return{lightColor:r,lightPosition:aU(i),halfWidth:this.halfWidth,halfHeight:this.halfHeight,ltc_1:t,ltc_2:n}}static setLTC(e){OK=e}},AK=class{parseFunction(){j(`Abstract function.`)}},jK=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){j(`Abstract function.`)}};jK.isNodeFunction=!0;var MK=/^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i,NK=/[a-z_0-9]+/gi,PK=`#pragma main`,FK=e=>{e=e.trim();let t=e.indexOf(PK),n=t===-1?e:e.slice(t+12),r=n.match(MK);if(r!==null&&r.length===5){let i=r[4],a=[],o=null;for(;(o=NK.exec(i))!==null;)a.push(o);let s=[],c=0;for(;c<a.length;){let e=a[c][0]===`const`;e===!0&&c++;let t=a[c][0];t===`in`||t===`out`||t===`inout`?c++:t=``;let n=a[c++][0],r=Number.parseInt(a[c][0]);Number.isNaN(r)===!1?c++:r=null;let i=a[c++][0];s.push(new _K(n,i,r,t,e))}let l=n.substring(r[0].length),u=r[3]===void 0?``:r[3];return{type:r[2],inputs:s,name:u,precision:r[1]===void 0?``:r[1],inputsCode:i,blockCode:l,headerCode:t===-1?``:e.slice(0,t)}}else throw Error(`FunctionNode: Function is not a GLSL code.`)},IK=class extends jK{constructor(e){let{type:t,inputs:n,name:r,precision:i,inputsCode:a,blockCode:o,headerCode:s}=FK(e);super(t,n,r,i),this.inputsCode=a,this.blockCode=o,this.headerCode=s}getCode(e=this.name){let t,n=this.blockCode;if(n!==``){let{type:r,inputsCode:i,headerCode:a,precision:o}=this,s=`${r} ${e} ( ${i.trim()} )`;o!==``&&(s=`${o} ${s}`),t=a+s+n}else t=``;return t}},LK=class extends AK{parseFunction(e){return new IK(e)}},RK=[],zK=[],BK=class extends CR{constructor(e,t){super(),this.renderer=e,this.backend=t,this.nodeFrame=new gK,this.nodeBuilderCache=new Map,this.callHashCache=new _R,this.groupsData=new _R,this._buildQueue=[],this._buildInProgress=!1,this.cacheLib={}}updateGroup(e){let t=e.groupNode;RK[0]=t,RK[1]=e;let n=this.groupsData.get(RK);return n===void 0&&this.groupsData.set(RK,n={}),RK[0]=null,RK[1]=null,n.version===t.version?!1:(n.version=t.version,!0)}getForRenderCacheKey(e){return e.initialCacheKey}_createNodeBuilder(e,t){let n=this.backend.createNodeBuilder(e.object,this.renderer);return n.scene=e.scene,n.material=t,n.camera=e.camera,n.context.material=t,n.lightsNode=e.lightsNode,n.environmentNode=this.getEnvironmentNode(e.scene),n.fogNode=this.getFogNode(e.scene),n.clippingContext=e.clippingContext,this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview&&n.enableMultiview(),n}getForRender(e,t=!1){let n=this.get(e),r=n.nodeBuilderState;if(r===void 0){let{nodeBuilderCache:i}=this,a=this.getForRenderCacheKey(e);if(r=i.get(a),r===void 0){let o=async()=>{let n=this._createNodeBuilder(e,e.material);try{t?await n.buildAsync():n.build()}catch(r){n=this._createNodeBuilder(e,new vF),t?await n.buildAsync():n.build(),M(`TSL: `+r)}return n};if(t)return o().then(e=>(r=this._createNodeBuilderState(e),i.set(a,r),r.usedTimes++,n.nodeBuilderState=r,r));{let t=this._createNodeBuilder(e,e.material);try{t.build()}catch(n){t=this._createNodeBuilder(e,new vF),t.build();let r=n.stackTrace;!r&&n.stack&&(r=new Pw(n.stack)),M(`TSL: `+n,r)}r=this._createNodeBuilderState(t),i.set(a,r)}}r.usedTimes++,n.nodeBuilderState=r}return r}getForRenderAsync(e){let t=this.getForRender(e,!0);return t.then?t:Promise.resolve(t)}getForRenderDeferred(e){let t=this.get(e);if(t.nodeBuilderState!==void 0)return t.nodeBuilderState;let n=this.getForRenderCacheKey(e),r=this.nodeBuilderCache.get(n);return r===void 0?(t.pendingBuild!==!0&&(t.pendingBuild=!0,this._buildQueue.push(()=>this.getForRenderAsync(e).then(()=>{t.pendingBuild=!1})),this._processBuildQueue()),null):(r.usedTimes++,t.nodeBuilderState=r,r)}_processBuildQueue(){this._buildInProgress||this._buildQueue.length===0||(this._buildInProgress=!0,this._buildQueue.shift()().then(()=>{this._buildInProgress=!1,this._processBuildQueue()}))}delete(e){if(e.isRenderObject){let t=this.get(e).nodeBuilderState;t!==void 0&&(t.usedTimes--,t.usedTimes===0&&this.nodeBuilderCache.delete(this.getForRenderCacheKey(e)))}return super.delete(e)}getForCompute(e){let t=this.get(e),n=t.nodeBuilderState;if(n===void 0){let r=this.backend.createNodeBuilder(e,this.renderer);r.build(),n=this._createNodeBuilderState(r),t.nodeBuilderState=n}return n}_createNodeBuilderState(e){return new RG(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{let 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{let 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){RK[0]=e,RK[1]=t;let n=this.renderer.info.calls,r=this.callHashCache.get(RK)||{};if(r.callId!==n){let i=this.getEnvironmentNode(e),a=this.getFogNode(e);t&&zK.push(t.getCacheKey(!0)),i&&zK.push(i.getCacheKey()),a&&zK.push(a.getCacheKey()),zK.push(this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview?1:0),zK.push(+!!this.renderer.shadowMap.enabled),zK.push(this.renderer.shadowMap.type),r.callId=n,r.cacheKey=Lw(zK),this.callHashCache.set(RK,r),zK.length=0}return RK[0]=null,RK[1]=null,r.cacheKey}get isToneMappingState(){return!this.renderer.getRenderTarget()}updateBackground(e){let t=this.get(e),n=e.background;if(n){let r=e.backgroundBlurriness===0&&t.backgroundBlurriness>0||e.backgroundBlurriness>0&&t.backgroundBlurriness===0;(t.background!==n||r)&&(t.backgroundNode=this.getCacheNode(`background`,n,()=>{if(n.isCubeTexture===!0||n.mapping===303||n.mapping===304||n.mapping===306){if(e.backgroundBlurriness>0||n.mapping===306)return WL(n);{let e;return e=n.isCubeTexture===!0?IM(n):VA(n),MF(e)}}else if(n.isTexture===!0)return VA(n,rj.flipY()).setUpdateMatrix(!0);else n.isColor!==!0&&M(`WebGPUNodes: Unsupported background configuration.`,n)},r),t.background=n,t.backgroundBlurriness=e.backgroundBlurriness)}else t.backgroundNode&&(delete t.backgroundNode,delete t.background)}getCacheNode(e,t,n,r=!1){let i=this.cacheLib[e]||(this.cacheLib[e]=new WeakMap),a=i.get(t);return(a===void 0||r)&&(a=n(),i.set(t,a)),a}updateFog(e){let t=this.get(e),n=e.fog;n?t.fog!==n&&(t.fogNode=this.getCacheNode(`fog`,n,()=>{if(n.isFogExp2)return QV(BM(`color`,`color`,n).setGroup(hD),XV(BM(`density`,`float`,n).setGroup(hD)));if(n.isFog)return QV(BM(`color`,`color`,n).setGroup(hD),YV(BM(`near`,`float`,n).setGroup(hD),BM(`far`,`float`,n).setGroup(hD)));M(`Renderer: Unsupported fog configuration.`,n)}),t.fog=n):(delete t.fogNode,delete t.fog)}updateEnvironment(e){let t=this.get(e),n=e.environment;n?t.environment!==n&&(t.environmentNode=this.getCacheNode(`environment`,n,()=>{if(n.isCubeTexture===!0)return IM(n);if(n.isTexture===!0)return VA(n);M(`Nodes: Unsupported environment configuration.`,n)}),t.environment=n):t.environmentNode&&(delete t.environmentNode,delete t.environment)}getNodeFrame(e=this.renderer,t=null,n=null,r=null,i=null){let a=this.nodeFrame;return a.renderer=e,a.scene=t,a.object=n,a.camera=r,a.material=i,a}getNodeFrameForRender(e){return this.getNodeFrame(e.renderer,e.scene,e.object,e.camera,e.material)}getOutputCacheKey(){let e=this.renderer;return e.toneMapping+`,`+e.currentColorSpace+`,`+e.xr.isPresenting}getOutputNode(e){let t=this.renderer;return e.isArrayTexture?VA(e,rj).depth(QA(`gl_ViewID_OVR`)).renderOutput(t.toneMapping,t.currentColorSpace):VA(e,rj).renderOutput(t.toneMapping,t.currentColorSpace)}updateBefore(e){let t=e.getNodeBuilderState();for(let n of t.updateBeforeNodes)this.getNodeFrameForRender(e).updateBeforeNode(n)}updateAfter(e){let t=e.getNodeBuilderState();for(let n of t.updateAfterNodes)this.getNodeFrameForRender(e).updateAfterNode(n)}updateForCompute(e){let t=this.getNodeFrame(),n=this.getForCompute(e);for(let e of n.updateNodes)t.updateNode(e)}updateForRender(e){let t=this.getNodeFrameForRender(e),n=e.getNodeBuilderState();for(let e of n.updateNodes)t.updateNode(e)}needsRefresh(e){let t=this.getNodeFrameForRender(e);return e.getMonitor().needsRefresh(e,t)}dispose(){super.dispose(),this.nodeFrame=new gK,this.nodeBuilderCache=new Map,this.cacheLib={}}},VK=new Xo,HK=class e{constructor(e=null){this.version=0,this.clipIntersection=null,this.cacheKey=``,this.shadowPass=!1,this.viewNormalMatrix=new _r,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){let r=e.length;for(let i=0;i<r;i++){VK.copy(e[i]).applyMatrix4(this.viewMatrix,this.viewNormalMatrix);let r=t[n+i],a=VK.normal;r.x=-a.x,r.y=-a.y,r.z=-a.z,r.w=VK.constant}}updateGlobal(e,t){this.shadowPass=e.overrideMaterial!==null&&e.overrideMaterial.isShadowPassMaterial,this.viewMatrix=t.matrixWorldInverse,this.viewNormalMatrix.getNormalMatrix(this.viewMatrix)}update(e,t){let n=!1;e.version!==this.parentVersion&&(this.intersectionPlanes=Array.from(e.intersectionPlanes),this.unionPlanes=Array.from(e.unionPlanes),this.parentVersion=e.version),this.clipIntersection!==t.clipIntersection&&(this.clipIntersection=t.clipIntersection,this.clipIntersection?this.unionPlanes.length=e.unionPlanes.length:this.intersectionPlanes.length=e.intersectionPlanes.length);let r=t.clippingPlanes,i=r.length,a,o;if(this.clipIntersection?(a=this.intersectionPlanes,o=e.intersectionPlanes.length):(a=this.unionPlanes,o=e.unionPlanes.length),a.length!==o+i){a.length=o+i;for(let e=0;e<i;e++)a[o+e]=new Nr;n=!0}this.projectPlanes(r,a,o),n&&(this.version++,this.cacheKey=`${this.intersectionPlanes.length}:${this.unionPlanes.length}`)}getGroupContext(t){if(this.shadowPass&&!t.clipShadows)return this;let n=this.clippingGroupContexts.get(t);return n===void 0&&(n=new e(this),this.clippingGroupContexts.set(t,n)),n.update(this,t),n}get unionClippingCount(){return this.unionPlanes.length}},UK=class{constructor(e,t,n){this.bundleGroup=e,this.camera=t,this.renderContext=n}},WK=[],GK=class{constructor(){this.bundles=new _R}get(e,t,n){let r=this.bundles;WK[0]=e,WK[1]=t,WK[2]=n;let i=r.get(WK);return i===void 0&&(i=new UK(e,t,n),r.set(WK,i)),WK[0]=null,WK[1]=null,WK[2]=null,i}dispose(){this.bundles=new _R}},KK=class{constructor(){this.lightNodes=new WeakMap,this.materialNodes=new Map,this.toneMappingNodes=new Map}fromMaterial(e){if(e.isNodeMaterial)return e;let t=null,n=this.getMaterialNodeClass(e.type);if(n!==null){t=new n;for(let n in e)t[n]=e[n]}return t}addToneMapping(e,t){this.addType(e,t,this.toneMappingNodes)}getToneMappingFunction(e){return this.toneMappingNodes.get(e)||null}getMaterialNodeClass(e){return this.materialNodes.get(e)||null}addMaterial(e,t){this.addType(e,t,this.materialNodes)}getLightNodeClass(e){return this.lightNodes.get(e)||null}addLight(e,t){this.addClass(e,t,this.lightNodes)}addType(e,t,n){if(n.has(t)){j(`Redefinition of node ${t}`);return}if(typeof e!=`function`)throw Error(`Node class ${e.name} is not a class.`);if(typeof t==`function`||typeof t==`object`)throw Error(`Base class ${t} is not a class.`);n.set(t,e)}addClass(e,t,n){if(n.has(t)){j(`Redefinition of node ${t.name}`);return}if(typeof e!=`function`)throw Error(`Node class ${e.name} is not a class.`);if(typeof t!=`function`)throw Error(`Base class ${t.name} is not a class.`);n.set(t,e)}},qK=new dU,JK=new WeakMap,YK=class{createNode(e=[]){return new dU().setLights(e)}getNode(e){if(e.isQuadMesh)return qK;let t=JK.get(e);return t===void 0&&(t=this.createNode(),JK.set(e,t)),t}},XK=class extends Pr{constructor(e=1,t=1,n={}){super(e,t,n),this.isXRRenderTarget=!0,this._hasExternalTextures=!1,this._autoAllocateDepthBuffer=!0,this._isOpaqueFramebuffer=!1}copy(e){return super.copy(e),this._hasExternalTextures=e._hasExternalTextures,this._autoAllocateDepthBuffer=e._autoAllocateDepthBuffer,this._isOpaqueFramebuffer=e._isOpaqueFramebuffer,this}},ZK=new P,QK=new P,$K=new WeakMap,eq=class extends Bn{constructor(e,t=!1){super(),this.enabled=!1,this.isPresenting=!1,this.cameraAutoUpdate=!0,this._renderer=e,this._cameraL=new ud,this._cameraL.viewport=new Nr,this._cameraR=new ud,this._cameraR.viewport=new Nr,this._cameras=[this._cameraL,this._cameraR],this._cameraXR=new Ud,this._currentDepthNear=null,this._currentDepthFar=null,this._controllers=[],this._controllerInputSources=[],this._xrRenderTarget=null,this._layers=[],this._sessionUsesLayers=!1,this._supportsGlBinding=typeof XRWebGLBinding<`u`,this._createXRLayer=sq.bind(this),this._gl=null,this._currentAnimationContext=null,this._currentAnimationLoop=null,this._currentPixelRatio=null,this._currentSize=new N,this._onSessionEvent=iq.bind(this),this._onSessionEnd=aq.bind(this),this._onInputSourcesChange=oq.bind(this),this._onAnimationFrame=cq.bind(this),this._referenceSpace=null,this._referenceSpaceType=`local-floor`,this._customReferenceSpace=null,this._framebufferScaleFactor=1,this._foveation=1,this._session=null,this._glBaseLayer=null,this._glBinding=null,this._glProjLayer=null,this._xrFrame=null,this._supportsLayers=this._supportsGlBinding&&`createProjectionLayer`in XRWebGLBinding.prototype,this._useMultiviewIfPossible=t,this._useMultiview=!1}getController(e){return this._getController(e).getTargetRaySpace()}getControllerGrip(e){return this._getController(e).getGripSpace()}getHand(e){return this._getController(e).getHandSpace()}getFoveation(){if(!(this._glProjLayer===null&&this._glBaseLayer===null))return this._foveation}setFoveation(e){this._foveation=e,this._glProjLayer!==null&&(this._glProjLayer.fixedFoveation=e),this._glBaseLayer!==null&&this._glBaseLayer.fixedFoveation!==void 0&&(this._glBaseLayer.fixedFoveation=e)}getFramebufferScaleFactor(){return this._framebufferScaleFactor}setFramebufferScaleFactor(e){this._framebufferScaleFactor=e,this.isPresenting===!0&&j(`XRManager: Cannot change framebuffer scale while presenting.`)}getReferenceSpaceType(){return this._referenceSpaceType}setReferenceSpaceType(e){this._referenceSpaceType=e,this.isPresenting===!0&&j(`XRManager: Cannot change reference space type while presenting.`)}getReferenceSpace(){return this._customReferenceSpace||this._referenceSpace}setReferenceSpace(e){this._customReferenceSpace=e}getCamera(){return this._cameraXR}getEnvironmentBlendMode(){if(this._session!==null)return this._session.environmentBlendMode}getBinding(){return this._glBinding===null&&this._supportsGlBinding&&(this._glBinding=new XRWebGLBinding(this._session,this._gl)),this._glBinding}getFrame(){return this._xrFrame}useMultiview(){return this._useMultiview}createQuadLayer(e,t,n,r,i,a,o,s={}){let c=new Pl(e,t),l=new XK(i,a,{format:Ue,type:ke,depthTexture:new $s(i,a,s.stencil?Re:Ne,void 0,void 0,void 0,void 0,void 0,void 0,s.stencil?Ge:We),stencilBuffer:s.stencil,resolveDepthBuffer:!1,resolveStencilBuffer:!1});l._autoAllocateDepthBuffer=!0;let u=new so({color:16777215,side:0});u.map=l.texture,u.map.offset.y=1,u.map.repeat.y=-1;let d=new bo(c,u);d.position.copy(n),d.quaternion.copy(r);let f={type:`quad`,width:e,height:t,translation:n,quaternion:r,pixelwidth:i,pixelheight:a,plane:d,material:u,rendercall:o,renderTarget:l};if(this._layers.push(f),this._session!==null){f.plane.material=new so({color:16777215,side:0}),f.plane.material.blending=5,f.plane.material.blendEquation=100,f.plane.material.blendSrc=200,f.plane.material.blendDst=200,f.xrlayer=this._createXRLayer(f);let e=this._session.renderState.layers;e.unshift(f.xrlayer),this._session.updateRenderState({layers:e})}else l.isXRRenderTarget=!1;return d}createCylinderLayer(e,t,n,r,i,a,o,s,c={}){let l=new ac(e,e,e*t/n,64,64,!0,Math.PI-t/2,t),u=new XK(a,o,{format:Ue,type:ke,depthTexture:new $s(a,o,c.stencil?Re:Ne,void 0,void 0,void 0,void 0,void 0,void 0,c.stencil?Ge:We),stencilBuffer:c.stencil,resolveDepthBuffer:!1,resolveStencilBuffer:!1});u._autoAllocateDepthBuffer=!0;let d=new so({color:16777215,side:1});d.map=u.texture,d.map.offset.y=1,d.map.repeat.y=-1;let f=new bo(l,d);f.position.copy(r),f.quaternion.copy(i);let p={type:`cylinder`,radius:e,centralAngle:t,aspectratio:n,translation:r,quaternion:i,pixelwidth:a,pixelheight:o,plane:f,material:d,rendercall:s,renderTarget:u};if(this._layers.push(p),this._session!==null){p.plane.material=new so({color:16777215,side:1}),p.plane.material.blending=5,p.plane.material.blendEquation=100,p.plane.material.blendSrc=200,p.plane.material.blendDst=200,p.xrlayer=this._createXRLayer(p);let e=this._session.renderState.layers;e.unshift(p.xrlayer),this._session.updateRenderState({layers:e})}else u.isXRRenderTarget=!1;return f}renderLayers(){let e=new P,t=new mr,n=this._renderer,r=this.isPresenting;this.isPresenting=!1;let i=new N;n.getSize(i);let a=n.getRenderTarget();for(let r of this._layers){r.renderTarget.isXRRenderTarget=this._session!==null,r.renderTarget._hasExternalTextures=r.renderTarget.isXRRenderTarget;let i=n.contextNode,a;if(r.renderTarget.isXRRenderTarget&&this._sessionUsesLayers){r.xrlayer.transform=new XRRigidTransform(r.plane.getWorldPosition(e),r.plane.getWorldQuaternion(t));let o=this._glBinding.getSubImage(r.xrlayer,this._xrFrame);n.backend.setXRRenderTargetTextures(r.renderTarget,o.colorTexture,void 0),n._setXRLayerSize(r.renderTarget.width,r.renderTarget.height),a=$K.get(i),a===void 0&&(a=i.context({getOutput:e=>TA(e,n.toneMapping,n.outputColorSpace)}),$K.set(i,a))}else a=i;n.contextNode=a,n.setRenderTarget(r.renderTarget),r.rendercall(),n.contextNode=i}n.setRenderTarget(a),n._setXRLayerSize(i.x,i.y),this.isPresenting=r}getSession(){return this._session}async setSession(e){let t=this._renderer,n=t.backend;this._gl=t.getContext();let r=this._gl,i=r.getContextAttributes();if(this._session=e,e!==null){if(n.isWebGPUBackend===!0)throw Error(`THREE.XRManager: XR is currently not supported with a WebGPU backend. Use WebGL by passing "{ forceWebGL: true }" to the constructor of the renderer.`);if(e.addEventListener(`select`,this._onSessionEvent),e.addEventListener(`selectstart`,this._onSessionEvent),e.addEventListener(`selectend`,this._onSessionEvent),e.addEventListener(`squeeze`,this._onSessionEvent),e.addEventListener(`squeezestart`,this._onSessionEvent),e.addEventListener(`squeezeend`,this._onSessionEvent),e.addEventListener(`end`,this._onSessionEnd),e.addEventListener(`inputsourceschange`,this._onInputSourcesChange),await n.makeXRCompatible(),this._currentPixelRatio=t.getPixelRatio(),t.getSize(this._currentSize),this._currentAnimationContext=t._animation.getContext(),this._currentAnimationLoop=t._animation.getAnimationLoop(),t._animation.stop(),this._supportsLayers===!0){let n=null,a=null,o=null;t.depth&&(o=t.stencil?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24,n=t.stencil?Ge:We,a=t.stencil?Re:Ne);let s={colorFormat:r.RGBA8,depthFormat:o,scaleFactor:this._framebufferScaleFactor,clearOnAccess:!1};this._useMultiviewIfPossible&&t.hasFeature(`OVR_multiview2`)&&(s.textureType=`texture-array`,this._useMultiview=!0),this._glBinding=this.getBinding();let c=this._glBinding.createProjectionLayer(s),l=[c];this._glProjLayer=c,t.setPixelRatio(1),t._setXRLayerSize(c.textureWidth,c.textureHeight);let u=this._useMultiview?2:1,d=new $s(c.textureWidth,c.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n,u);if(this._xrRenderTarget=new XK(c.textureWidth,c.textureHeight,{format:Ue,type:ke,colorSpace:t.outputColorSpace,depthTexture:d,stencilBuffer:t.stencil,samples:i.antialias?4:0,resolveDepthBuffer:c.ignoreDepthValues===!1,resolveStencilBuffer:c.ignoreDepthValues===!1,depth:this._useMultiview?2:1,multiview:this._useMultiview}),this._xrRenderTarget._hasExternalTextures=!0,this._xrRenderTarget.depth=this._useMultiview?2:1,this._sessionUsesLayers=e.enabledFeatures.includes(`layers`),this._referenceSpace=await e.requestReferenceSpace(this.getReferenceSpaceType()),this._sessionUsesLayers)for(let e of this._layers)e.plane.material=new so({color:16777215,side:+(e.type===`cylinder`)}),e.plane.material.blending=5,e.plane.material.blendEquation=100,e.plane.material.blendSrc=200,e.plane.material.blendDst=200,e.xrlayer=this._createXRLayer(e),l.unshift(e.xrlayer);e.updateRenderState({layers:l})}else{let n={antialias:t.currentSamples>0,alpha:!0,depth:t.depth,stencil:t.stencil,framebufferScaleFactor:this.getFramebufferScaleFactor()},i=new XRWebGLLayer(e,r,n);this._glBaseLayer=i,e.updateRenderState({baseLayer:i}),t.setPixelRatio(1),t._setXRLayerSize(i.framebufferWidth,i.framebufferHeight),this._xrRenderTarget=new XK(i.framebufferWidth,i.framebufferHeight,{format:Ue,type:ke,colorSpace:t.outputColorSpace,stencilBuffer:t.stencil,resolveDepthBuffer:i.ignoreDepthValues===!1,resolveStencilBuffer:i.ignoreDepthValues===!1}),this._xrRenderTarget._isOpaqueFramebuffer=!0,this._referenceSpace=await 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){let t=this._session;if(t===null)return;let n=e.near,r=e.far,i=this._cameraXR,a=this._cameraL,o=this._cameraR;i.near=o.near=a.near=n,i.far=o.far=a.far=r,i.isMultiViewCamera=this._useMultiview,(this._currentDepthNear!==i.near||this._currentDepthFar!==i.far)&&(t.updateRenderState({depthNear:i.near,depthFar:i.far}),this._currentDepthNear=i.near,this._currentDepthFar=i.far),i.layers.mask=e.layers.mask|6,a.layers.mask=i.layers.mask&-5,o.layers.mask=i.layers.mask&-3;let s=e.parent,c=i.cameras;nq(i,s);for(let e=0;e<c.length;e++)nq(c[e],s);c.length===2?tq(i,a,o):i.projectionMatrix.copy(a.projectionMatrix),rq(e,i,s)}_getController(e){let t=this._controllers[e];return t===void 0&&(t=new hi,this._controllers[e]=t),t}};function tq(e,t,n){ZK.setFromMatrixPosition(t.matrixWorld),QK.setFromMatrixPosition(n.matrixWorld);let r=ZK.distanceTo(QK),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function nq(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}function rq(e,t,n){n===null?e.matrix.copy(t.matrixWorld):(e.matrix.copy(n.matrixWorld),e.matrix.invert(),e.matrix.multiply(t.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=Wn*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}function iq(e){let t=this._controllerInputSources.indexOf(e.inputSource);if(t===-1)return;let n=this._controllers[t];if(n!==void 0){let t=this.getReferenceSpace();n.update(e.inputSource,e.frame,t),n.dispatchEvent({type:e.type,data:e.inputSource})}}function aq(){let e=this._session,t=this._renderer;e.removeEventListener(`select`,this._onSessionEvent),e.removeEventListener(`selectstart`,this._onSessionEvent),e.removeEventListener(`selectend`,this._onSessionEvent),e.removeEventListener(`squeeze`,this._onSessionEvent),e.removeEventListener(`squeezestart`,this._onSessionEvent),e.removeEventListener(`squeezeend`,this._onSessionEvent),e.removeEventListener(`end`,this._onSessionEnd),e.removeEventListener(`inputsourceschange`,this._onInputSourcesChange);for(let e=0;e<this._controllers.length;e++){let t=this._controllerInputSources[e];t!==null&&(this._controllerInputSources[e]=null,this._controllers[e].disconnect(t))}if(this._currentDepthNear=null,this._currentDepthFar=null,t._resetXRState(),this._session=null,this._xrRenderTarget=null,this._glBinding=null,this._glBaseLayer=null,this._glProjLayer=null,this._sessionUsesLayers===!0)for(let e of this._layers)e.renderTarget=new XK(e.pixelwidth,e.pixelheight,{format:Ue,type:ke,depthTexture:new $s(e.pixelwidth,e.pixelheight,e.stencilBuffer?Re:Ne,void 0,void 0,void 0,void 0,void 0,void 0,e.stencilBuffer?Ge:We),stencilBuffer:e.stencilBuffer,resolveDepthBuffer:!1,resolveStencilBuffer:!1}),e.renderTarget.isXRRenderTarget=!1,e.plane.material=e.material,e.material.map=e.renderTarget.texture,e.material.map.offset.y=1,e.material.map.repeat.y=-1,delete e.xrlayer;this.isPresenting=!1,this._useMultiview=!1,t._animation.stop(),t._animation.setAnimationLoop(this._currentAnimationLoop),t._animation.setContext(this._currentAnimationContext),t._animation.start(),t.setPixelRatio(this._currentPixelRatio),t.setSize(this._currentSize.width,this._currentSize.height,!1),this.dispatchEvent({type:`sessionend`})}function oq(e){let t=this._controllers,n=this._controllerInputSources;for(let r=0;r<e.removed.length;r++){let i=e.removed[r],a=n.indexOf(i);a>=0&&(n[a]=null,t[a].disconnect(i))}for(let r=0;r<e.added.length;r++){let i=e.added[r],a=n.indexOf(i);if(a===-1){for(let e=0;e<t.length;e++)if(e>=n.length){n.push(i),a=e;break}else if(n[e]===null){n[e]=i,a=e;break}if(a===-1)break}let o=t[a];o&&o.connect(i)}}function sq(e){return e.type===`quad`?this._glBinding.createQuadLayer({transform:new XRRigidTransform(e.translation,e.quaternion),width:e.width/2,height:e.height/2,space:this._referenceSpace,viewPixelWidth:e.pixelwidth,viewPixelHeight:e.pixelheight,clearOnAccess:!1}):this._glBinding.createCylinderLayer({transform:new XRRigidTransform(e.translation,e.quaternion),radius:e.radius,centralAngle:e.centralAngle,aspectRatio:e.aspectRatio,space:this._referenceSpace,viewPixelWidth:e.pixelwidth,viewPixelHeight:e.pixelheight,clearOnAccess:!1})}function cq(e,t){if(t===void 0)return;let n=this._cameraXR,r=this._renderer,i=r.backend,a=this._glBaseLayer,o=this.getReferenceSpace(),s=t.getViewerPose(o);if(this._xrFrame=t,s!==null){let e=s.views;this._glBaseLayer!==null&&i.setXRTarget(a.framebuffer);let t=!1;e.length!==n.cameras.length&&(n.cameras.length=0,t=!0);for(let r=0;r<e.length;r++){let o=e[r],s;if(this._supportsLayers===!0){let e=this._glBinding.getViewSubImage(this._glProjLayer,o);s=e.viewport,r===0&&i.setXRRenderTargetTextures(this._xrRenderTarget,e.colorTexture,this._glProjLayer.ignoreDepthValues&&!this._useMultiview?void 0:e.depthStencilTexture)}else s=a.getViewport(o);let c=this._cameras[r];c===void 0&&(c=new ud,c.layers.enable(r),c.viewport=new Nr,this._cameras[r]=c),c.matrix.fromArray(o.transform.matrix),c.matrix.decompose(c.position,c.quaternion,c.scale),c.projectionMatrix.fromArray(o.projectionMatrix),c.projectionMatrixInverse.copy(c.projectionMatrix).invert(),c.viewport.set(s.x,s.y,s.width,s.height),r===0&&(n.matrix.copy(c.matrix),n.matrix.decompose(n.position,n.quaternion,n.scale)),t===!0&&n.cameras.push(c)}r.setOutputRenderTarget(this._xrRenderTarget)}for(let e=0;e<this._controllers.length;e++){let n=this._controllerInputSources[e],r=this._controllers[e];n!==null&&r!==void 0&&r.update(n,t,o)}this._currentAnimationLoop&&this._currentAnimationLoop(e,t),t.detectedPlanes&&this.dispatchEvent({type:`planesdetected`,data:t}),this._xrFrame=null}var lq=class extends Bn{constructor(e){super(),this.domElement=e,this._pixelRatio=1,this._width=this.domElement.width,this._height=this.domElement.height,this._viewport=new Nr(0,0,this._width,this._height),this._scissor=new Nr(0,0,this._width,this._height),this._scissorTest=!1,this.colorTexture=new Ks,this.depthTexture=new $s}getPixelRatio(){return this._pixelRatio}getDrawingBufferSize(e){return e.set(this._width*this._pixelRatio,this._height*this._pixelRatio).floor()}getSize(e){return e.set(this._width,this._height)}setPixelRatio(e=1){this._pixelRatio!==e&&(this._pixelRatio=e,this.setSize(this._width,this._height,!1))}setDrawingBufferSize(e,t,n){this.xr&&this.xr.isPresenting||(this._width=e,this._height=t,this._pixelRatio=n,this.domElement.width=Math.floor(e*n),this.domElement.height=Math.floor(t*n),this.setViewport(0,0,e,t),this._dispatchResize())}setSize(e,t,n=!0){this.xr&&this.xr.isPresenting||(this._width=e,this._height=t,this.domElement.width=Math.floor(e*this._pixelRatio),this.domElement.height=Math.floor(t*this._pixelRatio),n===!0&&(this.domElement.style.width=e+`px`,this.domElement.style.height=t+`px`),this.setViewport(0,0,e,t),this._dispatchResize())}getScissor(e){let t=this._scissor;return e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height,e}setScissor(e,t,n,r){let i=this._scissor;e.isVector4?i.copy(e):i.set(e,t,n,r)}getScissorTest(){return this._scissorTest}setScissorTest(e){this._scissorTest=e}getViewport(e){return e.copy(this._viewport)}setViewport(e,t,n,r,i=0,a=1){let o=this._viewport;e.isVector4?o.copy(e):o.set(e,t,n,r),o.minDepth=i,o.maxDepth=a}_dispatchResize(){this.dispatchEvent({type:`resize`})}dispose(){this.dispatchEvent({type:`dispose`})}},uq=new Ci,dq=new N,fq=new Nr,pq=new es,mq=new rs,hq=new F,gq=new Nr,_q={0:1,1:0,2:2},vq=class{constructor(e,t={}){this.isRenderer=!0;let{logarithmicDepthBuffer:n=!1,reversedDepthBuffer:r=!1,alpha:i=!0,depth:a=!0,stencil:o=!1,antialias:s=!1,samples:c=0,getFallback:l=null,outputBufferType:u=Fe,multiview:d=!1}=t;this.backend=e,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.alpha=i,this.logarithmicDepthBuffer=n,this.reversedDepthBuffer=r,this.outputColorSpace=Xt,this.toneMapping=0,this.toneMappingExposure=1,this.sortObjects=!0,this.depth=a,this.stencil=o,this.info=new NR,this.contextNode=yk(),this.library=new KK,this.lighting=new YK,this._samples=c||s===!0?4:0,this._onCanvasTargetResize=this._onCanvasTargetResize.bind(this),this._canvasTarget=new lq(e.getDomElement()),this._canvasTarget.addEventListener(`resize`,this._onCanvasTargetResize),this._canvasTarget.isDefaultCanvasTarget=!0,this._inspector=new OA,this._inspector.setRenderer(this),this._getFallback=l,this._attributes=null,this._geometries=null,this._nodes=null,this._animation=null,this._bindings=null,this._objects=null,this._pipelines=null,this._bundles=null,this._renderLists=null,this._renderContexts=null,this._textures=null,this._background=null,this._quadCache=new Map,this._currentRenderContext=null,this._opaqueSort=null,this._transparentSort=null,this._frameBufferTargets=new Map;let f=this.alpha===!0?0:1;this._clearColor=new $R(0,0,0,f),this._clearDepth=1,this._clearStencil=0,this._renderTarget=null,this._activeCubeFace=0,this._activeMipmapLevel=0,this._outputRenderTarget=null,this._mrt=null,this._renderObjectFunction=null,this._currentRenderObjectFunction=null,this._currentRenderBundle=null,this._handleObjectFunction=this._renderObjectDirect,this._isDeviceLost=!1,this.onDeviceLost=this._onDeviceLost,this._outputBufferType=u,this._cacheShadowNodes=new WeakMap,this._initialized=!1,this._callDepth=-1,this._initPromise=null,this._compilationPromises=null,this.transparent=!0,this.opaque=!0,this.shadowMap={enabled:!1,transmitted:!1,type:1},this.xr=new eq(this,d),this.debug={checkShaderErrors:!0,onShaderError:null,getShaderAsync:async(e,t,n)=>{await this.compileAsync(e,t);let r=this._renderLists.get(e,t),i=this._renderContexts.get(this._renderTarget,this._mrt),a=e.overrideMaterial||n.material,{fragmentShader:o,vertexShader:s}=this._objects.get(n,a,e,t,r.lightsNode,i,i.clippingContext).getNodeBuilderState();return{fragmentShader:o,vertexShader:s}}}}async init(){return this._initPromise===null&&(this._initPromise=new Promise(async(e,t)=>{let n=this.backend;try{await n.init(this)}catch(e){if(this._getFallback!==null)try{this.backend=n=this._getFallback(e),await n.init(this)}catch(e){t(e);return}else{t(e);return}}this._nodes=new BK(this,n),this._animation=new gR(this,this._nodes,this.info),this._attributes=new OR(n,this.info),this._background=new FG(this,this._nodes),this._geometries=new MR(this._attributes,this.info),this._textures=new QR(this,n,this.info),this._pipelines=new zR(n,this._nodes,this.info),this._bindings=new BR(n,this._nodes,this._textures,this._attributes,this._pipelines,this.info),this._objects=new SR(this,this._nodes,this._geometries,this._pipelines,this._bindings,this.info),this._renderLists=new KR(this.lighting),this._bundles=new GK,this._renderContexts=new XR(this),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}async compileAsync(e,t,n=null){if(this._isDeviceLost===!0)return;this._initialized===!1&&await this.init();let r=this._nodes.nodeFrame,i=r.renderId,a=this._currentRenderContext,o=this._currentRenderObjectFunction,s=this._handleObjectFunction,c=this._compilationPromises;n===null&&(n=e);let l=e.isScene===!0?e:n.isScene===!0?n:uq,u=this.needsFrameBufferTarget&&this._renderTarget===null?this._getFrameBufferTarget():this._renderTarget||this._outputRenderTarget,d=this._renderContexts.get(u,this._mrt),f=this._activeMipmapLevel,p=[];this._currentRenderContext=d,this._currentRenderObjectFunction=this.renderObject,this._handleObjectFunction=this._createObjectPipeline,this._compilationPromises=p,r.renderId++,r.update(),d.depth=this.depth,d.stencil=this.stencil,d.clippingContext||=new HK,d.clippingContext.updateGlobal(l,t),l.onBeforeRender(this,e,t,u);let m=this._renderLists.get(l,t);if(m.begin(),this._projectObject(e,t,0,m,d.clippingContext),n!==e&&n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&m.pushLight(e)}),m.finish(),u!==null){this._textures.updateRenderTarget(u,f);let e=this._textures.get(u);d.textures=e.textures,d.depthTexture=e.depthTexture}else d.textures=null,d.depthTexture=null;n===e?this._background.update(l,m,d):this._background.update(n,m,d);let h=m.opaque,g=m.transparent,_=m.transparentDoublePass,v=m.lightsNode;this.opaque===!0&&h.length>0&&this._renderObjects(h,t,l,v),this.transparent===!0&&g.length>0&&this._renderTransparents(g,_,t,l,v),r.renderId=i,this._currentRenderContext=a,this._currentRenderObjectFunction=o,this._handleObjectFunction=s,this._compilationPromises=c;for(let e of p){let t=this._objects.get(e.object,e.material,e.scene,e.camera,e.lightsNode,e.renderContext,e.clippingContext,e.passId);t.drawRange=e.object.geometry.drawRange,t.group=e.group,this._geometries.updateForRender(t),await this._nodes.getForRenderAsync(t),this._nodes.updateBefore(t),this._nodes.updateForRender(t),this._bindings.updateForRender(t);let n=[];this._pipelines.getForRender(t,n),n.length>0&&await Promise.all(n),this._nodes.updateAfter(t),await Ln()}}async renderAsync(e,t){In(`Renderer: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.render(e,t)}async waitForGPU(){M(`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){let t=this.contextNode.value;e===!0?(t.modelViewMatrix=eM,t.modelNormalViewMatrix=tM):this.highPrecision&&(delete t.modelViewMatrix,delete t.modelNormalViewMatrix)}get highPrecision(){let e=this.contextNode.value;return e.modelViewMatrix===eM&&e.modelNormalViewMatrix===tM}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getOutputBufferType(){return this._outputBufferType}getColorBufferType(){return In(`Renderer: ".getColorBufferType()" has been renamed to ".getOutputBufferType()".`),this.getOutputBufferType()}_onDeviceLost(e){let t=`THREE.WebGPURenderer: ${e.api} Device Lost:\n\nMessage: ${e.message}`;e.reason&&(t+=`\nReason: ${e.reason}`),M(t),this._isDeviceLost=!0}_renderBundle(e,t,n){let{bundleGroup:r,camera:i,renderList:a}=e,o=this._currentRenderContext,s=this._bundles.get(r,i,o),c=this.backend.get(s),l=r.version!==c.version;if(l||c.bundleGPU===void 0){this.backend.beginBundle(o),(c.renderObjects===void 0||l)&&(c.renderObjects=[]),this._currentRenderBundle=s;let{transparentDoublePass:e,transparent:u,opaque:d}=a;this.opaque===!0&&d.length>0&&this._renderObjects(d,i,t,n),this.transparent===!0&&u.length>0&&this._renderTransparents(u,e,i,t,n),this._currentRenderBundle=null,this.backend.finishBundle(o,s),c.version=r.version}else{let{renderObjects:e}=c;for(let t=0,n=e.length;t<n;t++){let n=e[t];this._nodes.needsRefresh(n)&&(this._nodes.updateBefore(n),this._nodes.updateForRender(n),this._bindings.updateForRender(n),this._nodes.updateAfter(n))}}this.backend.addBundle(o,s)}render(e,t){if(this._initialized===!1)throw Error(`Renderer: .render() called before the backend is initialized. Use "await renderer.init();" before rendering.`);this._renderScene(e,t)}get initialized(){return this._initialized}_getFrameBufferTarget(){let{currentToneMapping:e,currentColorSpace:t}=this,n=e!==0,r=t!==Sr.workingColorSpace;if(n===!1&&r===!1)return null;let{width:i,height:a}=this.getDrawingBufferSize(dq),{depth:o,stencil:s}=this,c=this._outputRenderTarget||this._canvasTarget,l=this._frameBufferTargets.get(c);if(l===void 0){l=new Pr(i,a,{depthBuffer:o,stencilBuffer:s,type:this._outputBufferType,format:Ue,colorSpace:Sr.workingColorSpace,generateMipmaps:!1,minFilter:Te,magFilter:Te,samples:this.samples}),l.isPostProcessingRenderTarget=!0;let e=()=>{c.removeEventListener(`dispose`,e),l.dispose(),this._frameBufferTargets.delete(c)};c.addEventListener(`dispose`,e),this._frameBufferTargets.set(c,l)}let u=this.getOutputRenderTarget();l.depthBuffer=o,l.stencilBuffer=s,u===null?l.setSize(i,a,1):l.setSize(u.width,u.height,u.depth);let d=this._outputRenderTarget?this._outputRenderTarget.viewport:c._viewport,f=this._outputRenderTarget?this._outputRenderTarget.scissor:c._scissor,p=this._outputRenderTarget?1:c._pixelRatio,m=this._outputRenderTarget?this._outputRenderTarget.scissorTest:c._scissorTest;return l.viewport.copy(d),l.scissor.copy(f),l.viewport.multiplyScalar(p),l.scissor.multiplyScalar(p),l.scissorTest=m,l.multiview=u===null?!1:u.multiview,l.resolveDepthBuffer=u===null?!0:u.resolveDepthBuffer,l._autoAllocateDepthBuffer=u===null?!1:u._autoAllocateDepthBuffer,l}_renderScene(e,t,n=!0){if(this._isDeviceLost===!0)return;let r=n?this._getFrameBufferTarget():null,i=this._nodes.nodeFrame,a=i.renderId,o=this._currentRenderContext,s=this._currentRenderObjectFunction,c=this._handleObjectFunction;this._callDepth++;let l=e.isScene===!0?e:uq,u=this._renderTarget||this._outputRenderTarget,d=this._activeCubeFace,f=this._activeMipmapLevel,p;if(r===null?p=u:(p=r,this.setRenderTarget(p)),p!==null&&p.depthBuffer===!0){let e=this._textures.get(p);e.depthInitialized!==!0&&((this.autoClear===!1||this.autoClear===!0&&this.autoClearDepth===!1)&&this.clearDepth(),e.depthInitialized=!0)}let m=this._renderContexts.get(p,this._mrt,this._callDepth);this._currentRenderContext=m,this._currentRenderObjectFunction=this._renderObjectFunction||this.renderObject,this._handleObjectFunction=this._renderObjectDirect,this.info.calls++,this.info.render.calls++,this.info.render.frameCalls++,i.renderId=this.info.calls,this.backend.updateTimeStampUID(m),this.inspector.beginRender(this.backend.getTimestampUID(m),e,t,p);let h=this.xr;if(h.isPresenting===!1){let e=!1;if(this.reversedDepthBuffer===!0&&t.reversedDepth!==!0){if(t._reversedDepth=!0,t.isArrayCamera)for(let e of t.cameras)e._reversedDepth=!0;e=!0}let n=this.coordinateSystem;if(t.coordinateSystem!==n){if(t.coordinateSystem=n,t.isArrayCamera)for(let e of t.cameras)e.coordinateSystem=n;e=!0}if(e===!0&&(t.updateProjectionMatrix(),t.isArrayCamera))for(let e of t.cameras)e.updateProjectionMatrix()}e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),h.enabled===!0&&h.isPresenting===!0&&(h.cameraAutoUpdate===!0&&h.updateCamera(t),t=h.getCamera());let g=this._canvasTarget,_=g._viewport,v=g._scissor,y=g._pixelRatio;p!==null&&(_=p.viewport,v=p.scissor,y=1),this.getDrawingBufferSize(dq),fq.set(0,0,dq.width,dq.height);let b=_.minDepth===void 0?0:_.minDepth,x=_.maxDepth===void 0?1:_.maxDepth;m.viewportValue.copy(_).multiplyScalar(y).floor(),m.viewportValue.width>>=f,m.viewportValue.height>>=f,m.viewportValue.minDepth=b,m.viewportValue.maxDepth=x,m.viewport=m.viewportValue.equals(fq)===!1,m.scissorValue.copy(v).multiplyScalar(y).floor(),m.scissor=g._scissorTest&&m.scissorValue.equals(fq)===!1,m.scissorValue.width>>=f,m.scissorValue.height>>=f,m.clippingContext||=new HK,m.clippingContext.updateGlobal(l,t),l.onBeforeRender(this,e,t,p);let S=t.isArrayCamera?mq:pq;t.isArrayCamera||(hq.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),S.setFromProjectionMatrix(hq,t.coordinateSystem,t.reversedDepth));let C=this._renderLists.get(e,t);if(C.begin(),this._projectObject(e,t,0,C,m.clippingContext),C.finish(),this.sortObjects===!0&&C.sort(this._opaqueSort,this._transparentSort),p!==null){this._textures.updateRenderTarget(p,f);let e=this._textures.get(p);m.textures=e.textures,m.depthTexture=e.depthTexture,m.width=e.width,m.height=e.height,m.renderTarget=p,m.depth=p.depthBuffer,m.stencil=p.stencilBuffer}else m.textures=null,m.depthTexture=null,m.width=dq.width,m.height=dq.height,m.depth=this.depth,m.stencil=this.stencil;m.width>>=f,m.height>>=f,m.activeCubeFace=d,m.activeMipmapLevel=f,m.occlusionQueryCount=C.occlusionQueryCount,m.scissorValue.max(gq.set(0,0,0,0)),m.scissorValue.x+m.scissorValue.width>m.width&&(m.scissorValue.width=Math.max(m.width-m.scissorValue.x,0)),m.scissorValue.y+m.scissorValue.height>m.height&&(m.scissorValue.height=Math.max(m.height-m.scissorValue.y,0)),this._background.update(l,C,m),m.camera=t,this.backend.beginRender(m);let{bundles:w,lightsNode:T,transparentDoublePass:E,transparent:D,opaque:O}=C;return w.length>0&&this._renderBundles(w,l,T),this.opaque===!0&&O.length>0&&this._renderObjects(O,t,l,T),this.transparent===!0&&D.length>0&&this._renderTransparents(D,E,t,l,T),this.backend.finishRender(m),i.renderId=a,this._currentRenderContext=o,this._currentRenderObjectFunction=s,this._handleObjectFunction=c,this._callDepth--,r!==null&&(this.setRenderTarget(u,d,f),this._renderOutput(p)),l.onAfterRender(this,e,t,p),this.inspector.finishRender(this.backend.getTimestampUID(m)),m}_setXRLayerSize(e,t){this._canvasTarget._width=e,this._canvasTarget._height=t,this.setViewport(0,0,e,t)}_renderOutput(e){let t=this._nodes.getOutputCacheKey(),n=this._quadCache.get(e.texture),r;if(n===void 0){r=new CB(new vF),r.name=`Output Color Transform`,r.material.name=`outputColorTransform`,r.material.fragmentNode=this._nodes.getOutputNode(e.texture),n={quad:r,cacheKey:t},this._quadCache.set(e.texture,n);let i=()=>{r.material.dispose(),this._quadCache.delete(e.texture),e.texture.removeEventListener(`dispose`,i)};e.texture.addEventListener(`dispose`,i)}else r=n.quad,n.cacheKey!==t&&(r.material.fragmentNode=this._nodes.getOutputNode(e.texture),r.material.needsUpdate=!0,n.cacheKey=t);let i=this.autoClear,a=this.xr.enabled;this.autoClear=!1,this.xr.enabled=!1,this._renderScene(r,r.camera,!1),this.autoClear=i,this.xr.enabled=a}getMaxAnisotropy(){return this.backend.capabilities.getMaxAnisotropy()}getActiveCubeFace(){return this._activeCubeFace}getActiveMipmapLevel(){return this._activeMipmapLevel}async setAnimationLoop(e){this._initialized===!1&&await this.init(),this._animation.setAnimationLoop(e)}getAnimationLoop(){return this._animation.getAnimationLoop()}async getArrayBufferAsync(e,t=null,n=0,r=-1){if(t!==null&&t.isReadbackBuffer&&this.info.memoryMap.has(t)===!1){this.info.createReadbackBuffer(t);let e=()=>{t.removeEventListener(`dispose`,e),this.info.destroyReadbackBuffer(t)};t.addEventListener(`dispose`,e)}if(n%4!=0||r>0&&r%4!=0)throw Error(`THREE.Renderer: "getArrayBufferAsync()" offset and count must be a multiple of 4.`);return await this.backend.getArrayBufferAsync(e,t,n,r)}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,i=0,a=1){this._canvasTarget.setViewport(e,t,n,r,i,a)}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.reversedDepthBuffer===!0?1-this._clearDepth:this._clearDepth}setClearDepth(e){this._clearDepth=e}getClearStencil(){return this._clearStencil}setClearStencil(e){this._clearStencil=e}isOccluded(e){let t=this._currentRenderContext;return t&&this.backend.isOccluded(t,e)}clear(e=!0,t=!0,n=!0){if(this._initialized===!1)throw Error(`Renderer: .clear() called before the backend is initialized. Use "await renderer.init();" before before using this method.`);let r=this._renderTarget||this._getFrameBufferTarget(),i=null;if(r!==null){this._textures.updateRenderTarget(r);let e=this._textures.get(r);i=this._renderContexts.get(r,null,-1),i.textures=e.textures,i.depthTexture=e.depthTexture,i.width=e.width,i.height=e.height,i.renderTarget=r,i.depth=r.depthBuffer,i.stencil=r.stencilBuffer;let t=this.backend.getClearColor();i.clearColorValue.r=t.r,i.clearColorValue.g=t.g,i.clearColorValue.b=t.b,i.clearColorValue.a=t.a,i.clearDepthValue=this.getClearDepth(),i.clearStencilValue=this.getClearStencil(),i.activeCubeFace=this.getActiveCubeFace(),i.activeMipmapLevel=this.getActiveMipmapLevel(),r.depthBuffer===!0&&(e.depthInitialized=!0)}this.backend.clear(e,t,n,i),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)}async clearAsync(e=!0,t=!0,n=!0){In(`Renderer: "clearAsync()" has been deprecated. Use "clear()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.clear(e,t,n)}async clearColorAsync(){In(`Renderer: "clearColorAsync()" has been deprecated. Use "clearColor()" and "await renderer.init();" when creating the renderer.`),this.clear(!0,!1,!1)}async clearDepthAsync(){In(`Renderer: "clearDepthAsync()" has been deprecated. Use "clearDepth()" and "await renderer.init();" when creating the renderer.`),this.clear(!1,!0,!1)}async clearStencilAsync(){In(`Renderer: "clearStencilAsync()" has been deprecated. Use "clearStencil()" and "await renderer.init();" when creating the renderer.`),this.clear(!1,!1,!0)}get needsFrameBufferTarget(){let e=this.currentToneMapping!==0,t=this.currentColorSpace!==Sr.workingColorSpace;return e||t}get samples(){return this._samples}get currentSamples(){let e=this._samples;return this._renderTarget===null?this.needsFrameBufferTarget&&(e=0):e=this._renderTarget.samples,e}get currentToneMapping(){return this.isOutputTarget?this.toneMapping:0}get currentColorSpace(){return this.isOutputTarget?this.outputColorSpace:Sr.workingColorSpace}get isOutputTarget(){return this._renderTarget===this._outputRenderTarget||this._renderTarget===null}dispose(){if(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();for(let e of this._frameBufferTargets.keys())e.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);for(let e of this._frameBufferTargets.keys())e.dispose()}setRenderObjectFunction(e){this._renderObjectFunction=e}getRenderObjectFunction(){return this._renderObjectFunction}compute(e,t=null){if(this._isDeviceLost===!0)return;if(this._initialized===!1)return j(`Renderer: .compute() called before the backend is initialized. Try using .computeAsync() instead.`),this.computeAsync(e,t);let 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);let i=this.backend,a=this._pipelines,o=this._bindings,s=this._nodes,c=Array.isArray(e)?e:[e];if(c[0]===void 0||c[0].isComputeNode!==!0)throw Error(`THREE.Renderer: .compute() expects a ComputeNode.`);i.beginCompute(e);for(let n of c){if(a.has(n)===!1){let e=()=>{n.removeEventListener(`dispose`,e),a.delete(n),o.deleteForCompute(n),s.delete(n)};n.addEventListener(`dispose`,e);let t=n.onInitFunction;t!==null&&t.call(n,{renderer:this})}s.updateForCompute(n),o.updateForCompute(n);let r=o.getForCompute(n),c=a.getForCompute(n,r);i.compute(e,n,r,c,t)}i.finishCompute(e),n.renderId=r,this.inspector.finishCompute(this.backend.getTimestampUID(e))}async computeAsync(e,t=null){this._initialized===!1&&await this.init(),this.compute(e,t)}async hasFeatureAsync(e){return In(`Renderer: "hasFeatureAsync()" has been deprecated. Use "hasFeature()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.hasFeature(e)}async resolveTimestampsAsync(e=`render`){return this._initialized===!1&&await this.init(),this.backend.resolveTimestampsAsync(e)}hasFeature(e){if(this._initialized===!1)throw 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}async initTextureAsync(e){In(`Renderer: "initTextureAsync()" has been deprecated. Use "initTexture()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.initTexture(e)}initTexture(e){if(this._initialized===!1)throw Error(`Renderer: .initTexture() called before the backend is initialized. Use "await renderer.init();" before before using this method.`);this._textures.updateTexture(e)}initRenderTarget(e){if(this._initialized===!1)throw Error(`Renderer: .initRenderTarget() called before the backend is initialized. Use "await renderer.init();" before before using this method.`);this._textures.updateRenderTarget(e);let t=this._textures.get(e),n=this._renderContexts.get(e);n.textures=t.textures,n.depthTexture=t.depthTexture,n.width=t.width,n.height=t.height,n.renderTarget=e,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,this.backend.initRenderTarget(n)}copyFramebufferToTexture(e,t=null){if(t!==null)if(t.isVector2)t=gq.set(t.x,t.y,e.image.width,e.image.height).floor();else if(t.isVector4)t=gq.copy(t).floor();else{M(`Renderer.copyFramebufferToTexture: Invalid rectangle.`);return}else t=gq.set(0,0,e.image.width,e.image.height);let n=this._currentRenderContext,r;n===null?(r=this._renderTarget||this._getFrameBufferTarget(),r!==null&&(this._textures.updateRenderTarget(r),n=this._textures.get(r))):r=n.renderTarget,this._textures.updateTexture(e,{renderTarget:r}),this.backend.copyFramebufferToTexture(e,n,t),this._inspector.copyFramebufferToTexture(e)}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){this._textures.updateTexture(e),this._textures.updateTexture(t),this.backend.copyTextureToTexture(e,t,n,r,i,a),this._inspector.copyTextureToTexture(e,t)}async readRenderTargetPixelsAsync(e,t,n,r,i,a=0,o=0){return this.backend.copyTextureToBuffer(e.textures[a],t,n,r,i,o)}_projectObject(e,t,n,r,i){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder,e.isClippingGroup&&e.enabled&&(i=i.getGroupContext(e));else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLight)r.pushLight(e);else if(e.isSprite){let a=t.isArrayCamera?mq:pq;if(!e.frustumCulled||a.intersectsSprite(e,t)){this.sortObjects===!0&&gq.setFromMatrixPosition(e.matrixWorld).applyMatrix4(hq);let{geometry:t,material:a}=e;a.visible&&r.push(e,t,a,n,gq.z,null,i)}}else if(e.isLineLoop)M(`Renderer: Objects of type THREE.LineLoop are not supported. Please use THREE.Line or THREE.LineSegments.`);else if(e.isMesh||e.isLine||e.isPoints){let a=t.isArrayCamera?mq:pq;if(!e.frustumCulled||a.intersectsObject(e,t)){let{geometry:t,material:a}=e;if(this.sortObjects===!0&&(t.boundingSphere===null&&t.computeBoundingSphere(),gq.copy(t.boundingSphere.center).applyMatrix4(e.matrixWorld).applyMatrix4(hq)),Array.isArray(a)){let o=t.groups;for(let s=0,c=o.length;s<c;s++){let c=o[s],l=a[c.materialIndex];l&&l.visible&&r.push(e,t,l,n,gq.z,c,i)}}else a.visible&&r.push(e,t,a,n,gq.z,null,i)}}}if(e.isBundleGroup===!0&&this.backend.beginBundle!==void 0){let n=r;r=this._renderLists.get(e,t),r.begin(),n.pushBundle({bundleGroup:e,camera:t,renderList:r}),r.finish()}let a=e.children;for(let e=0,o=a.length;e<o;e++)this._projectObject(a[e],t,n,r,i)}_renderBundles(e,t,n){for(let r of e)this._renderBundle(r,t,n)}_renderTransparents(e,t,n,r,i){if(t.length>0){for(let{material:e}of t)e.side=1;this._renderObjects(t,n,r,i,`backSide`);for(let{material:e}of t)e.side=0;this._renderObjects(e,n,r,i);for(let{material:e}of t)e.side=2}else this._renderObjects(e,n,r,i)}_renderObjects(e,t,n,r,i=null){for(let a=0,o=e.length;a<o;a++){let{object:o,geometry:s,material:c,group:l,clippingContext:u}=e[a];this._currentRenderObjectFunction(o,n,t,s,c,l,r,u,i)}}_getShadowNodes(e){let t=e.version,n=this._cacheShadowNodes.get(e);if(n===void 0||n.version!==t){let r=e.map!==null,i=e.colorNode&&e.colorNode.isNode,a=e.castShadowNode&&e.castShadowNode.isNode,o=e.maskShadowNode&&e.maskShadowNode.isNode||e.maskNode&&e.maskNode.isNode,s=null,c=null,l=null;if(r||i||a||o){let t,n;if(a?(t=e.castShadowNode.rgb,n=e.castShadowNode.a,this.shadowMap.transmitted!==!0&&In("Renderer: `shadowMap.transmitted` needs to be set to `true` when using `material.castShadowNode`.")):(t=J(0),n=W(1)),r&&(n=n.mul(BM(`map`,`texture`,e).a)),i&&(n=n.mul(e.colorNode.a)),c=yE(t,n),o){let t=e.maskShadowNode||e.maskNode;c=U(([e])=>(t.not().discard(),e))(c)}}e.depthNode&&e.depthNode.isNode&&(l=e.depthNode),e.castShadowPositionNode&&e.castShadowPositionNode.isNode?s=e.castShadowPositionNode:e.positionNode&&e.positionNode.isNode&&(s=e.positionNode),n={version:t,colorNode:c,depthNode:l,positionNode:s},this._cacheShadowNodes.set(e,n)}return n}renderObject(e,t,n,r,i,a,o,s=null,c=null){let l=!1,u,d,f,p;if(e.onBeforeRender(this,t,n,r,i,a),i.allowOverride===!0&&t.overrideMaterial!==null){let e=t.overrideMaterial;if(l=!0,u=e.isNodeMaterial?e.colorNode:null,d=e.isNodeMaterial?e.depthNode:null,f=e.isNodeMaterial?e.positionNode:null,p=t.overrideMaterial.side,i.positionNode&&i.positionNode.isNode&&(e.positionNode=i.positionNode),e.alphaTest=i.alphaTest,e.alphaMap=i.alphaMap,e.transparent=i.transparent||i.transmission>0||i.transmissionNode&&i.transmissionNode.isNode||i.backdropNode&&i.backdropNode.isNode,e.isShadowPassMaterial){let{colorNode:t,depthNode:n,positionNode:r}=this._getShadowNodes(i);this.shadowMap.type===3?e.side=i.shadowSide===null?i.side:i.shadowSide:e.side=i.shadowSide===null?_q[i.side]:i.shadowSide,t!==null&&(e.colorNode=t),n!==null&&(e.depthNode=n),r!==null&&(e.positionNode=r)}i=e}i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,this._handleObjectFunction(e,i,t,n,o,a,s,`backSide`),i.side=0,this._handleObjectFunction(e,i,t,n,o,a,s,c),i.side=2):this._handleObjectFunction(e,i,t,n,o,a,s,c),l&&(t.overrideMaterial.colorNode=u,t.overrideMaterial.depthNode=d,t.overrideMaterial.positionNode=f,t.overrideMaterial.side=p),e.onAfterRender(this,t,n,r,i,a)}hasCompatibility(e){if(this._initialized===!1)throw Error(`Renderer: .hasCompatibility() called before the backend is initialized. Use "await renderer.init();" before using this method.`);return this.backend.hasCompatibility(e)}_renderObjectDirect(e,t,n,r,i,a,o,s){let c=this._objects.get(e,t,n,r,i,this._currentRenderContext,o,s);c.drawRange=e.geometry.drawRange,c.group=a,this._currentRenderBundle!==null&&(this.backend.get(this._currentRenderBundle).renderObjects.push(c),c.bundle=this._currentRenderBundle.bundleGroup);let l=this._nodes.needsRefresh(c);l&&(this._nodes.updateBefore(c),this._geometries.updateForRender(c),this._nodes.updateForRender(c),this._bindings.updateForRender(c)),this._pipelines.updateForRender(c),this._pipelines.isReady(c)&&(this.backend.draw(c,this.info),l&&this._nodes.updateAfter(c))}_createObjectPipeline(e,t,n,r,i,a,o,s){if(this._compilationPromises!==null){this._compilationPromises.push({object:e,material:t,scene:n,camera:r,lightsNode:i,group:a,clippingContext:o,passId:s,renderContext:this._currentRenderContext});return}let c=this._objects.get(e,t,n,r,i,this._currentRenderContext,o,s);c.drawRange=e.geometry.drawRange,c.group=a,this._nodes.updateBefore(c),this._geometries.updateForRender(c),this._nodes.updateForRender(c),this._bindings.updateForRender(c),this._pipelines.getForRender(c,this._compilationPromises),this._nodes.updateAfter(c)}_onCanvasTargetResize(){this._initialized&&this.backend.updateSize()}get compile(){return this.compileAsync}},yq=class{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 bq(e){return e+(TR-e%TR)%TR}var xq=class extends yq{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 bq(this._buffer.byteLength)}get buffer(){return this._buffer}update(){return!0}},Sq=class extends xq{constructor(e,t=null){super(e,t),this.isUniformBuffer=!0}},Cq=0,wq=class extends Sq{constructor(e,t){super(`UniformBuffer_`+ Cq++,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}},Tq=class extends Sq{constructor(e){super(e),this.isUniformsGroup=!0,this._values=null,this.uniforms=[],this._updateRangeCache=new Map}addUniformUpdateRange(e){let t=e.index;if(this._updateRangeCache.has(t)!==!0){let n=this.updateRanges,r={start:e.offset,count:e.itemSize};n.push(r),this._updateRangeCache.set(t,r)}}clearUpdateRanges(){this._updateRangeCache.clear(),super.clearUpdateRanges()}addUniform(e){return this.uniforms.push(e),this}removeUniform(e){let 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){let t=this.byteLength;e=new Float32Array(new ArrayBuffer(t)),this._buffer=e}return e}get byteLength(){let e=this.bytesPerElement,t=0;for(let n=0,r=this.uniforms.length;n<r;n++){let r=this.uniforms[n],i=r.boundary,a=r.itemSize*e,o=t%TR,s=o%i,c=o+s;t+=s,c!==0&&TR-c<a&&(t+=TR-c),r.offset=t/e,r.index=n,t+=a}return Math.ceil(t/TR)*TR}update(){let e=!1;for(let t of this.uniforms)this.updateByType(t)===!0&&(e=!0);return e}updateByType(e){if(e.isNumberUniform)return this.updateNumber(e);if(e.isVector2Uniform)return this.updateVector2(e);if(e.isVector3Uniform)return this.updateVector3(e);if(e.isVector4Uniform)return this.updateVector4(e);if(e.isColorUniform)return this.updateColor(e);if(e.isMatrix3Uniform)return this.updateMatrix3(e);if(e.isMatrix4Uniform)return this.updateMatrix4(e);M(`WebGPUUniformsGroup: Unsupported uniform type.`,e)}updateNumber(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i]!==r){let o=this._getBufferForType(a);o[i]=n[i]=r,t=!0,this.addUniformUpdateRange(e)}return t}updateVector2(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,t=!0,this.addUniformUpdateRange(e)}return t}updateVector3(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y||n[i+2]!==r.z){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,o[i+2]=n[i+2]=r.z,t=!0,this.addUniformUpdateRange(e)}return t}updateVector4(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y||n[i+2]!==r.z||n[i+3]!==r.w){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,o[i+2]=n[i+2]=r.z,o[i+3]=n[i+3]=r.w,t=!0,this.addUniformUpdateRange(e)}return t}updateColor(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset;if(n[i+0]!==r.r||n[i+1]!==r.g||n[i+2]!==r.b){let a=this.buffer;a[i+0]=n[i+0]=r.r,a[i+1]=n[i+1]=r.g,a[i+2]=n[i+2]=r.b,t=!0,this.addUniformUpdateRange(e)}return t}updateMatrix3(e){let t=!1,n=this.values,r=e.getValue().elements,i=e.offset;if(n[i+0]!==r[0]||n[i+1]!==r[1]||n[i+2]!==r[2]||n[i+4]!==r[3]||n[i+5]!==r[4]||n[i+6]!==r[5]||n[i+8]!==r[6]||n[i+9]!==r[7]||n[i+10]!==r[8]){let a=this.buffer;a[i+0]=n[i+0]=r[0],a[i+1]=n[i+1]=r[1],a[i+2]=n[i+2]=r[2],a[i+4]=n[i+4]=r[3],a[i+5]=n[i+5]=r[4],a[i+6]=n[i+6]=r[5],a[i+8]=n[i+8]=r[6],a[i+9]=n[i+9]=r[7],a[i+10]=n[i+10]=r[8],t=!0,this.addUniformUpdateRange(e)}return t}updateMatrix4(e){let t=!1,n=this.values,r=e.getValue().elements,i=e.offset;return Dq(n,r,i)===!1&&(this.buffer.set(r,i),Eq(n,r,i),t=!0,this.addUniformUpdateRange(e)),t}_getBufferForType(e){return e===`int`||e===`ivec2`||e===`ivec3`||e===`ivec4`?new Int32Array(this.buffer.buffer):e===`uint`||e===`uvec2`||e===`uvec3`||e===`uvec4`?new Uint32Array(this.buffer.buffer):this.buffer}};function Eq(e,t,n){for(let r=0,i=t.length;r<i;r++)e[n+r]=t[r]}function Dq(e,t,n){for(let r=0,i=t.length;r<i;r++)if(e[n+r]!==t[r])return!1;return!0}var Oq=0,kq=class extends Tq{constructor(e,t){super(e),this.id=Oq++,this.groupNode=t,this.isNodeUniformsGroup=!0}},Aq=class extends yq{constructor(e,t){super(e),this._texture=null,this._onTextureDispose=()=>{this.generation=null,this.version=-1},this.texture=t,this.version=t?t.version:-1,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=-1,this._texture&&this._texture.addEventListener(`dispose`,this._onTextureDispose))}get texture(){return this._texture}update(){let{texture:e,version:t}=this;return t===e.version?!1:(this.version=e.version,!0)}clone(){let e=super.clone();return e._texture=null,e._onTextureDispose=()=>{e.generation=null,e.version=-1},e.texture=this.texture,e}},jq=0,Mq=class extends Aq{constructor(e,t){super(e,t),this.id=jq++,this.store=!1,this.mipLevel=0,this.isSampledTexture=!0}},Nq=class extends Mq{constructor(e,t,n,r=null){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n,this.access=r}update(){let{textureNode:e}=this;return this.texture===e.value?super.update():(this.texture=e.value,!0)}},Pq=class extends Nq{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledCubeTexture=!0}},Fq=class extends Nq{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledTexture3D=!0}},Iq={bitcast_int_uint:new zV(`uint tsl_bitcast_int_to_uint ( int x ) { return floatBitsToUint( intBitsToFloat ( x ) ); }`),bitcast_uint_int:new zV(`uint tsl_bitcast_uint_to_int ( uint x ) { return floatBitsToInt( uintBitsToFloat ( x ) ); }`)},Lq={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`},Rq={low:`lowp`,medium:`mediump`,high:`highp`},zq={swizzleAssign:!0,storageBuffer:!1},Bq={perspective:`smooth`,linear:`noperspective`},Vq={centroid:`centroid`},Hq=`
4138
+ `}needsPreviousData(){let e=this.renderer.getMRT();return e&&e.has(`velocity`)||Jw(this.object).useVelocity===!0}},gK=class{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){let t=e.getUpdateBeforeType(),n=e.updateReference(this);if(t===Qw.FRAME){let t=this._getMaps(this.updateBeforeMap,n);if(t.frameId!==this.frameId){let n=t.frameId;t.frameId=this.frameId,e.updateBefore(this)===!1&&(t.frameId=n)}}else if(t===Qw.RENDER){let t=this._getMaps(this.updateBeforeMap,n);if(t.renderId!==this.renderId){let n=t.renderId;t.renderId=this.renderId,e.updateBefore(this)===!1&&(t.renderId=n)}}else t===Qw.OBJECT&&e.updateBefore(this)}updateAfterNode(e){let t=e.getUpdateAfterType(),n=e.updateReference(this);if(t===Qw.FRAME){let t=this._getMaps(this.updateAfterMap,n);t.frameId!==this.frameId&&e.updateAfter(this)!==!1&&(t.frameId=this.frameId)}else if(t===Qw.RENDER){let t=this._getMaps(this.updateAfterMap,n);t.renderId!==this.renderId&&e.updateAfter(this)!==!1&&(t.renderId=this.renderId)}else t===Qw.OBJECT&&e.updateAfter(this)}updateNode(e){let t=e.getUpdateType(),n=e.updateReference(this);if(t===Qw.FRAME){let t=this._getMaps(this.updateMap,n);t.frameId!==this.frameId&&e.update(this)!==!1&&(t.frameId=this.frameId)}else if(t===Qw.RENDER){let t=this._getMaps(this.updateMap,n);t.renderId!==this.renderId&&e.update(this)!==!1&&(t.renderId=this.renderId)}else t===Qw.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}},_K=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};_K.isNodeFunctionInput=!0;var vK=class extends $U{static get type(){return`AmbientLightNode`}constructor(e=null){super(e)}setup({context:e}){e.irradiance.addAssign(this.colorNode)}},yK=class extends $U{static get type(){return`DirectionalLightNode`}constructor(e=null){super(e)}setupDirect(){let e=this.colorNode;return{lightDirection:oU(this.light),lightColor:e}}},bK=class extends $U{static get type(){return`HemisphereLightNode`}constructor(e=null){super(e),this.lightPositionNode=rU(e),this.lightDirectionNode=this.lightPositionNode.normalize(),this.groundColorNode=vD(new I).setGroup(hD)}update(e){let{light:t}=this;super.update(e),this.lightPositionNode.object3d=t,this.groundColorNode.value.copy(t.groundColor).multiplyScalar(t.intensity)}setup(e){let{colorNode:t,groundColorNode:n,lightDirectionNode:r}=this,i=ak(n,t,yM.dot(r).mul(.5).add(.5));e.context.irradiance.addAssign(i)}},xK=class extends $U{static get type(){return`SpotLightNode`}constructor(e=null){super(e),this.coneCosNode=vD(0).setGroup(hD),this.penumbraCosNode=vD(0).setGroup(hD),this.cutoffDistanceNode=vD(0).setGroup(hD),this.decayExponentNode=vD(0).setGroup(hD),this.colorNode=vD(this.color).setGroup(hD)}update(e){super.update(e);let{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){let{coneCosNode:n,penumbraCosNode:r}=this;return lk(n,r,t)}getLightCoord(e){let t=e.getNodeProperties(this),n=t.projectionUV;return n===void 0&&(n=nU(this.light,e.context.positionWorld),t.projectionUV=n),n}setupDirect(e){let{colorNode:t,cutoffDistanceNode:n,decayExponentNode:r,light:i}=this,a=this.getLightVector(e),o=a.normalize(),s=o.dot(oU(i)),c=this.getSpotAttenuation(e,s),l=eW({lightDistance:a.length(),cutoffDistance:n,decayExponent:r}),u=t.mul(c).mul(l),d,f;return i.colorNode?(f=this.getLightCoord(e),d=i.colorNode(f)):i.map&&(f=this.getLightCoord(e),d=VA(i.map,f.xy).onRenderUpdate(()=>i.map)),d&&(u=f.mul(2).sub(1).abs().lessThan(1).all().select(u.mul(d),u)),{lightColor:u,lightDirection:o}}},SK=class extends xK{static get type(){return`IESSpotLightNode`}getSpotAttenuation(e,t){let n=this.light.iesMap,r=null;return r=n&&n.isTexture===!0?VA(n,q(t.acos().mul(1/Math.PI),0),0).r:super.getSpotAttenuation(t),r}},CK=class extends $U{static get type(){return`LightProbeNode`}constructor(e=null){super(e);let t=[];for(let e=0;e<9;e++)t.push(new P);this.lightProbe=ZA(t)}update(e){let{light:t}=this;super.update(e);for(let e=0;e<9;e++)this.lightProbe.array[e].copy(t.sh.coefficients[e]).multiplyScalar(t.intensity)}setup(e){let t=NG(yM,this.lightProbe);e.context.irradiance.addAssign(t)}},wK=U(([e,t])=>{let n=e.abs().sub(t);return MO(GO(n,0)).add(WO(GO(n.x,n.y),0))}),TK=class extends xK{static get type(){return`ProjectorLightNode`}update(e){super.update(e);let t=this.light;if(this.penumbraCosNode.value=Math.min(Math.cos(t.angle*(1-t.penumbra)),.99999),t.aspect===null){let e=1;t.map!==null&&(e=t.map.width/t.map.height),t.shadow.aspect=e}else t.shadow.aspect=t.aspect}getSpotAttenuation(e){let t=W(0),n=this.penumbraCosNode,r=tU(this.light).mul(e.context.positionWorld||oM);return cE(r.w.greaterThan(0),()=>{let e=wK(r.xyz.div(r.w).xy.sub(q(.5)),q(.5)),i=kD(-1,DD(1,EO(n)).sub(1));t.assign(sk(e.mul(-2).mul(i)))}),t}},EK=new F,DK=new F,OK=null,kK=class extends $U{static get type(){return`RectAreaLightNode`}constructor(e=null){super(e),this.halfHeight=vD(new P).setGroup(hD),this.halfWidth=vD(new P).setGroup(hD),this.updateType=Qw.RENDER}update(e){super.update(e);let{light:t}=this,n=e.camera.matrixWorldInverse;DK.identity(),EK.copy(t.matrixWorld),EK.premultiply(n),DK.extractRotation(EK),this.halfWidth.value.set(t.width*.5,0,0),this.halfHeight.value.set(0,t.height*.5,0),this.halfWidth.value.applyMatrix4(DK),this.halfHeight.value.applyMatrix4(DK)}setupDirectRectArea(e){let t,n;e.isAvailable(`float32Filterable`)?(t=VA(OK.LTC_FLOAT_1),n=VA(OK.LTC_FLOAT_2)):(t=VA(OK.LTC_HALF_1),n=VA(OK.LTC_HALF_2));let{colorNode:r,light:i}=this;return{lightColor:r,lightPosition:aU(i),halfWidth:this.halfWidth,halfHeight:this.halfHeight,ltc_1:t,ltc_2:n}}static setLTC(e){OK=e}},AK=class{parseFunction(){j(`Abstract function.`)}},jK=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){j(`Abstract function.`)}};jK.isNodeFunction=!0;var MK=/^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i,NK=/[a-z_0-9]+/gi,PK=`#pragma main`,FK=e=>{e=e.trim();let t=e.indexOf(PK),n=t===-1?e:e.slice(t+12),r=n.match(MK);if(r!==null&&r.length===5){let i=r[4],a=[],o=null;for(;(o=NK.exec(i))!==null;)a.push(o);let s=[],c=0;for(;c<a.length;){let e=a[c][0]===`const`;e===!0&&c++;let t=a[c][0];t===`in`||t===`out`||t===`inout`?c++:t=``;let n=a[c++][0],r=Number.parseInt(a[c][0]);Number.isNaN(r)===!1?c++:r=null;let i=a[c++][0];s.push(new _K(n,i,r,t,e))}let l=n.substring(r[0].length),u=r[3]===void 0?``:r[3];return{type:r[2],inputs:s,name:u,precision:r[1]===void 0?``:r[1],inputsCode:i,blockCode:l,headerCode:t===-1?``:e.slice(0,t)}}else throw Error(`FunctionNode: Function is not a GLSL code.`)},IK=class extends jK{constructor(e){let{type:t,inputs:n,name:r,precision:i,inputsCode:a,blockCode:o,headerCode:s}=FK(e);super(t,n,r,i),this.inputsCode=a,this.blockCode=o,this.headerCode=s}getCode(e=this.name){let t,n=this.blockCode;if(n!==``){let{type:r,inputsCode:i,headerCode:a,precision:o}=this,s=`${r} ${e} ( ${i.trim()} )`;o!==``&&(s=`${o} ${s}`),t=a+s+n}else t=``;return t}},LK=class extends AK{parseFunction(e){return new IK(e)}},RK=[],zK=[],BK=class extends CR{constructor(e,t){super(),this.renderer=e,this.backend=t,this.nodeFrame=new gK,this.nodeBuilderCache=new Map,this.callHashCache=new _R,this.groupsData=new _R,this._buildQueue=[],this._buildInProgress=!1,this.cacheLib={}}updateGroup(e){let t=e.groupNode;RK[0]=t,RK[1]=e;let n=this.groupsData.get(RK);return n===void 0&&this.groupsData.set(RK,n={}),RK[0]=null,RK[1]=null,n.version===t.version?!1:(n.version=t.version,!0)}getForRenderCacheKey(e){return e.initialCacheKey}_createNodeBuilder(e,t){let n=this.backend.createNodeBuilder(e.object,this.renderer);return n.scene=e.scene,n.material=t,n.camera=e.camera,n.context.material=t,n.lightsNode=e.lightsNode,n.environmentNode=this.getEnvironmentNode(e.scene),n.fogNode=this.getFogNode(e.scene),n.clippingContext=e.clippingContext,this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview&&n.enableMultiview(),n}getForRender(e,t=!1){let n=this.get(e),r=n.nodeBuilderState;if(r===void 0){let{nodeBuilderCache:i}=this,a=this.getForRenderCacheKey(e);if(r=i.get(a),r===void 0){let o=async()=>{let n=this._createNodeBuilder(e,e.material);try{t?await n.buildAsync():n.build()}catch(r){n=this._createNodeBuilder(e,new vF),t?await n.buildAsync():n.build(),M(`TSL: `+r)}return n};if(t)return o().then(e=>(r=this._createNodeBuilderState(e),i.set(a,r),r.usedTimes++,n.nodeBuilderState=r,r));{let t=this._createNodeBuilder(e,e.material);try{t.build()}catch(n){t=this._createNodeBuilder(e,new vF),t.build();let r=n.stackTrace;!r&&n.stack&&(r=new Pw(n.stack)),M(`TSL: `+n,r)}r=this._createNodeBuilderState(t),i.set(a,r)}}r.usedTimes++,n.nodeBuilderState=r}return r}getForRenderAsync(e){let t=this.getForRender(e,!0);return t.then?t:Promise.resolve(t)}getForRenderDeferred(e){let t=this.get(e);if(t.nodeBuilderState!==void 0)return t.nodeBuilderState;let n=this.getForRenderCacheKey(e),r=this.nodeBuilderCache.get(n);return r===void 0?(t.pendingBuild!==!0&&(t.pendingBuild=!0,this._buildQueue.push(()=>this.getForRenderAsync(e).then(()=>{t.pendingBuild=!1})),this._processBuildQueue()),null):(r.usedTimes++,t.nodeBuilderState=r,r)}_processBuildQueue(){this._buildInProgress||this._buildQueue.length===0||(this._buildInProgress=!0,this._buildQueue.shift()().then(()=>{this._buildInProgress=!1,this._processBuildQueue()}))}delete(e){if(e.isRenderObject){let t=this.get(e).nodeBuilderState;t!==void 0&&(t.usedTimes--,t.usedTimes===0&&this.nodeBuilderCache.delete(this.getForRenderCacheKey(e)))}return super.delete(e)}getForCompute(e){let t=this.get(e),n=t.nodeBuilderState;if(n===void 0){let r=this.backend.createNodeBuilder(e,this.renderer);r.build(),n=this._createNodeBuilderState(r),t.nodeBuilderState=n}return n}_createNodeBuilderState(e){return new RG(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{let 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{let 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){RK[0]=e,RK[1]=t;let n=this.renderer.info.calls,r=this.callHashCache.get(RK)||{};if(r.callId!==n){let i=this.getEnvironmentNode(e),a=this.getFogNode(e);t&&zK.push(t.getCacheKey(!0)),i&&zK.push(i.getCacheKey()),a&&zK.push(a.getCacheKey()),zK.push(this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview?1:0),zK.push(+!!this.renderer.shadowMap.enabled),zK.push(this.renderer.shadowMap.type),r.callId=n,r.cacheKey=Lw(zK),this.callHashCache.set(RK,r),zK.length=0}return RK[0]=null,RK[1]=null,r.cacheKey}get isToneMappingState(){return!this.renderer.getRenderTarget()}updateBackground(e){let t=this.get(e),n=e.background;if(n){let r=e.backgroundBlurriness===0&&t.backgroundBlurriness>0||e.backgroundBlurriness>0&&t.backgroundBlurriness===0;(t.background!==n||r)&&(t.backgroundNode=this.getCacheNode(`background`,n,()=>{if(n.isCubeTexture===!0||n.mapping===303||n.mapping===304||n.mapping===306){if(e.backgroundBlurriness>0||n.mapping===306)return WL(n);{let e;return e=n.isCubeTexture===!0?IM(n):VA(n),MF(e)}}else if(n.isTexture===!0)return VA(n,rj.flipY()).setUpdateMatrix(!0);else n.isColor!==!0&&M(`WebGPUNodes: Unsupported background configuration.`,n)},r),t.background=n,t.backgroundBlurriness=e.backgroundBlurriness)}else t.backgroundNode&&(delete t.backgroundNode,delete t.background)}getCacheNode(e,t,n,r=!1){let i=this.cacheLib[e]||(this.cacheLib[e]=new WeakMap),a=i.get(t);return(a===void 0||r)&&(a=n(),i.set(t,a)),a}updateFog(e){let t=this.get(e),n=e.fog;n?t.fog!==n&&(t.fogNode=this.getCacheNode(`fog`,n,()=>{if(n.isFogExp2)return QV(BM(`color`,`color`,n).setGroup(hD),XV(BM(`density`,`float`,n).setGroup(hD)));if(n.isFog)return QV(BM(`color`,`color`,n).setGroup(hD),YV(BM(`near`,`float`,n).setGroup(hD),BM(`far`,`float`,n).setGroup(hD)));M(`Renderer: Unsupported fog configuration.`,n)}),t.fog=n):(delete t.fogNode,delete t.fog)}updateEnvironment(e){let t=this.get(e),n=e.environment;n?t.environment!==n&&(t.environmentNode=this.getCacheNode(`environment`,n,()=>{if(n.isCubeTexture===!0)return IM(n);if(n.isTexture===!0)return VA(n);M(`Nodes: Unsupported environment configuration.`,n)}),t.environment=n):t.environmentNode&&(delete t.environmentNode,delete t.environment)}getNodeFrame(e=this.renderer,t=null,n=null,r=null,i=null){let a=this.nodeFrame;return a.renderer=e,a.scene=t,a.object=n,a.camera=r,a.material=i,a}getNodeFrameForRender(e){return this.getNodeFrame(e.renderer,e.scene,e.object,e.camera,e.material)}getOutputCacheKey(){let e=this.renderer;return e.toneMapping+`,`+e.currentColorSpace+`,`+e.xr.isPresenting}getOutputNode(e){let t=this.renderer;return e.isArrayTexture?VA(e,rj).depth(QA(`gl_ViewID_OVR`)).renderOutput(t.toneMapping,t.currentColorSpace):VA(e,rj).renderOutput(t.toneMapping,t.currentColorSpace)}updateBefore(e){let t=e.getNodeBuilderState();for(let n of t.updateBeforeNodes)this.getNodeFrameForRender(e).updateBeforeNode(n)}updateAfter(e){let t=e.getNodeBuilderState();for(let n of t.updateAfterNodes)this.getNodeFrameForRender(e).updateAfterNode(n)}updateForCompute(e){let t=this.getNodeFrame(),n=this.getForCompute(e);for(let e of n.updateNodes)t.updateNode(e)}updateForRender(e){let t=this.getNodeFrameForRender(e),n=e.getNodeBuilderState();for(let e of n.updateNodes)t.updateNode(e)}needsRefresh(e){let t=this.getNodeFrameForRender(e);return e.getMonitor().needsRefresh(e,t)}dispose(){super.dispose(),this.nodeFrame=new gK,this.nodeBuilderCache=new Map,this.cacheLib={}}},VK=new Xo,HK=class e{constructor(e=null){this.version=0,this.clipIntersection=null,this.cacheKey=``,this.shadowPass=!1,this.viewNormalMatrix=new _r,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){let r=e.length;for(let i=0;i<r;i++){VK.copy(e[i]).applyMatrix4(this.viewMatrix,this.viewNormalMatrix);let r=t[n+i],a=VK.normal;r.x=-a.x,r.y=-a.y,r.z=-a.z,r.w=VK.constant}}updateGlobal(e,t){this.shadowPass=e.overrideMaterial!==null&&e.overrideMaterial.isShadowPassMaterial,this.viewMatrix=t.matrixWorldInverse,this.viewNormalMatrix.getNormalMatrix(this.viewMatrix)}update(e,t){let n=!1;e.version!==this.parentVersion&&(this.intersectionPlanes=Array.from(e.intersectionPlanes),this.unionPlanes=Array.from(e.unionPlanes),this.parentVersion=e.version),this.clipIntersection!==t.clipIntersection&&(this.clipIntersection=t.clipIntersection,this.clipIntersection?this.unionPlanes.length=e.unionPlanes.length:this.intersectionPlanes.length=e.intersectionPlanes.length);let r=t.clippingPlanes,i=r.length,a,o;if(this.clipIntersection?(a=this.intersectionPlanes,o=e.intersectionPlanes.length):(a=this.unionPlanes,o=e.unionPlanes.length),a.length!==o+i){a.length=o+i;for(let e=0;e<i;e++)a[o+e]=new Nr;n=!0}this.projectPlanes(r,a,o),n&&(this.version++,this.cacheKey=`${this.intersectionPlanes.length}:${this.unionPlanes.length}`)}getGroupContext(t){if(this.shadowPass&&!t.clipShadows)return this;let n=this.clippingGroupContexts.get(t);return n===void 0&&(n=new e(this),this.clippingGroupContexts.set(t,n)),n.update(this,t),n}get unionClippingCount(){return this.unionPlanes.length}},UK=class{constructor(e,t,n){this.bundleGroup=e,this.camera=t,this.renderContext=n}},WK=[],GK=class{constructor(){this.bundles=new _R}get(e,t,n){let r=this.bundles;WK[0]=e,WK[1]=t,WK[2]=n;let i=r.get(WK);return i===void 0&&(i=new UK(e,t,n),r.set(WK,i)),WK[0]=null,WK[1]=null,WK[2]=null,i}dispose(){this.bundles=new _R}},KK=class{constructor(){this.lightNodes=new WeakMap,this.materialNodes=new Map,this.toneMappingNodes=new Map}fromMaterial(e){if(e.isNodeMaterial)return e;let t=null,n=this.getMaterialNodeClass(e.type);if(n!==null){t=new n;for(let n in e)t[n]=e[n]}return t}addToneMapping(e,t){this.addType(e,t,this.toneMappingNodes)}getToneMappingFunction(e){return this.toneMappingNodes.get(e)||null}getMaterialNodeClass(e){return this.materialNodes.get(e)||null}addMaterial(e,t){this.addType(e,t,this.materialNodes)}getLightNodeClass(e){return this.lightNodes.get(e)||null}addLight(e,t){this.addClass(e,t,this.lightNodes)}addType(e,t,n){if(n.has(t)){j(`Redefinition of node ${t}`);return}if(typeof e!=`function`)throw Error(`Node class ${e.name} is not a class.`);if(typeof t==`function`||typeof t==`object`)throw Error(`Base class ${t} is not a class.`);n.set(t,e)}addClass(e,t,n){if(n.has(t)){j(`Redefinition of node ${t.name}`);return}if(typeof e!=`function`)throw Error(`Node class ${e.name} is not a class.`);if(typeof t!=`function`)throw Error(`Base class ${t.name} is not a class.`);n.set(t,e)}},qK=new dU,JK=new WeakMap,YK=class{createNode(e=[]){return new dU().setLights(e)}getNode(e){if(e.isQuadMesh)return qK;let t=JK.get(e);return t===void 0&&(t=this.createNode(),JK.set(e,t)),t}},XK=class extends Pr{constructor(e=1,t=1,n={}){super(e,t,n),this.isXRRenderTarget=!0,this._hasExternalTextures=!1,this._autoAllocateDepthBuffer=!0,this._isOpaqueFramebuffer=!1}copy(e){return super.copy(e),this._hasExternalTextures=e._hasExternalTextures,this._autoAllocateDepthBuffer=e._autoAllocateDepthBuffer,this._isOpaqueFramebuffer=e._isOpaqueFramebuffer,this}},ZK=new P,QK=new P,$K=new WeakMap,eq=class extends Bn{constructor(e,t=!1){super(),this.enabled=!1,this.isPresenting=!1,this.cameraAutoUpdate=!0,this._renderer=e,this._cameraL=new ud,this._cameraL.viewport=new Nr,this._cameraR=new ud,this._cameraR.viewport=new Nr,this._cameras=[this._cameraL,this._cameraR],this._cameraXR=new Ud,this._currentDepthNear=null,this._currentDepthFar=null,this._controllers=[],this._controllerInputSources=[],this._xrRenderTarget=null,this._layers=[],this._sessionUsesLayers=!1,this._supportsGlBinding=typeof XRWebGLBinding<`u`,this._createXRLayer=sq.bind(this),this._gl=null,this._currentAnimationContext=null,this._currentAnimationLoop=null,this._currentPixelRatio=null,this._currentSize=new N,this._onSessionEvent=iq.bind(this),this._onSessionEnd=aq.bind(this),this._onInputSourcesChange=oq.bind(this),this._onAnimationFrame=cq.bind(this),this._referenceSpace=null,this._referenceSpaceType=`local-floor`,this._customReferenceSpace=null,this._framebufferScaleFactor=1,this._foveation=1,this._session=null,this._glBaseLayer=null,this._glBinding=null,this._glProjLayer=null,this._xrFrame=null,this._supportsLayers=this._supportsGlBinding&&`createProjectionLayer`in XRWebGLBinding.prototype,this._useMultiviewIfPossible=t,this._useMultiview=!1}getController(e){return this._getController(e).getTargetRaySpace()}getControllerGrip(e){return this._getController(e).getGripSpace()}getHand(e){return this._getController(e).getHandSpace()}getFoveation(){if(!(this._glProjLayer===null&&this._glBaseLayer===null))return this._foveation}setFoveation(e){this._foveation=e,this._glProjLayer!==null&&(this._glProjLayer.fixedFoveation=e),this._glBaseLayer!==null&&this._glBaseLayer.fixedFoveation!==void 0&&(this._glBaseLayer.fixedFoveation=e)}getFramebufferScaleFactor(){return this._framebufferScaleFactor}setFramebufferScaleFactor(e){this._framebufferScaleFactor=e,this.isPresenting===!0&&j(`XRManager: Cannot change framebuffer scale while presenting.`)}getReferenceSpaceType(){return this._referenceSpaceType}setReferenceSpaceType(e){this._referenceSpaceType=e,this.isPresenting===!0&&j(`XRManager: Cannot change reference space type while presenting.`)}getReferenceSpace(){return this._customReferenceSpace||this._referenceSpace}setReferenceSpace(e){this._customReferenceSpace=e}getCamera(){return this._cameraXR}getEnvironmentBlendMode(){if(this._session!==null)return this._session.environmentBlendMode}getBinding(){return this._glBinding===null&&this._supportsGlBinding&&(this._glBinding=new XRWebGLBinding(this._session,this._gl)),this._glBinding}getFrame(){return this._xrFrame}useMultiview(){return this._useMultiview}createQuadLayer(e,t,n,r,i,a,o,s={}){let c=new Pl(e,t),l=new XK(i,a,{format:Ue,type:ke,depthTexture:new $s(i,a,s.stencil?Re:Ne,void 0,void 0,void 0,void 0,void 0,void 0,s.stencil?Ge:We),stencilBuffer:s.stencil,resolveDepthBuffer:!1,resolveStencilBuffer:!1});l._autoAllocateDepthBuffer=!0;let u=new so({color:16777215,side:0});u.map=l.texture,u.map.offset.y=1,u.map.repeat.y=-1;let d=new bo(c,u);d.position.copy(n),d.quaternion.copy(r);let f={type:`quad`,width:e,height:t,translation:n,quaternion:r,pixelwidth:i,pixelheight:a,plane:d,material:u,rendercall:o,renderTarget:l};if(this._layers.push(f),this._session!==null){f.plane.material=new so({color:16777215,side:0}),f.plane.material.blending=5,f.plane.material.blendEquation=100,f.plane.material.blendSrc=200,f.plane.material.blendDst=200,f.xrlayer=this._createXRLayer(f);let e=this._session.renderState.layers;e.unshift(f.xrlayer),this._session.updateRenderState({layers:e})}else l.isXRRenderTarget=!1;return d}createCylinderLayer(e,t,n,r,i,a,o,s,c={}){let l=new ac(e,e,e*t/n,64,64,!0,Math.PI-t/2,t),u=new XK(a,o,{format:Ue,type:ke,depthTexture:new $s(a,o,c.stencil?Re:Ne,void 0,void 0,void 0,void 0,void 0,void 0,c.stencil?Ge:We),stencilBuffer:c.stencil,resolveDepthBuffer:!1,resolveStencilBuffer:!1});u._autoAllocateDepthBuffer=!0;let d=new so({color:16777215,side:1});d.map=u.texture,d.map.offset.y=1,d.map.repeat.y=-1;let f=new bo(l,d);f.position.copy(r),f.quaternion.copy(i);let p={type:`cylinder`,radius:e,centralAngle:t,aspectratio:n,translation:r,quaternion:i,pixelwidth:a,pixelheight:o,plane:f,material:d,rendercall:s,renderTarget:u};if(this._layers.push(p),this._session!==null){p.plane.material=new so({color:16777215,side:1}),p.plane.material.blending=5,p.plane.material.blendEquation=100,p.plane.material.blendSrc=200,p.plane.material.blendDst=200,p.xrlayer=this._createXRLayer(p);let e=this._session.renderState.layers;e.unshift(p.xrlayer),this._session.updateRenderState({layers:e})}else u.isXRRenderTarget=!1;return f}renderLayers(){let e=new P,t=new mr,n=this._renderer,r=this.isPresenting;this.isPresenting=!1;let i=new N;n.getSize(i);let a=n.getRenderTarget();for(let r of this._layers){r.renderTarget.isXRRenderTarget=this._session!==null,r.renderTarget._hasExternalTextures=r.renderTarget.isXRRenderTarget;let i=n.contextNode,a;if(r.renderTarget.isXRRenderTarget&&this._sessionUsesLayers){r.xrlayer.transform=new XRRigidTransform(r.plane.getWorldPosition(e),r.plane.getWorldQuaternion(t));let o=this._glBinding.getSubImage(r.xrlayer,this._xrFrame);n.backend.setXRRenderTargetTextures(r.renderTarget,o.colorTexture,void 0),n._setXRLayerSize(r.renderTarget.width,r.renderTarget.height),a=$K.get(i),a===void 0&&(a=i.context({getOutput:e=>TA(e,n.toneMapping,n.outputColorSpace)}),$K.set(i,a))}else a=i;n.contextNode=a,n.setRenderTarget(r.renderTarget),r.rendercall(),n.contextNode=i}n.setRenderTarget(a),n._setXRLayerSize(i.x,i.y),this.isPresenting=r}getSession(){return this._session}async setSession(e){let t=this._renderer,n=t.backend;this._gl=t.getContext();let r=this._gl,i=r.getContextAttributes();if(this._session=e,e!==null){if(n.isWebGPUBackend===!0)throw Error(`THREE.XRManager: XR is currently not supported with a WebGPU backend. Use WebGL by passing "{ forceWebGL: true }" to the constructor of the renderer.`);if(e.addEventListener(`select`,this._onSessionEvent),e.addEventListener(`selectstart`,this._onSessionEvent),e.addEventListener(`selectend`,this._onSessionEvent),e.addEventListener(`squeeze`,this._onSessionEvent),e.addEventListener(`squeezestart`,this._onSessionEvent),e.addEventListener(`squeezeend`,this._onSessionEvent),e.addEventListener(`end`,this._onSessionEnd),e.addEventListener(`inputsourceschange`,this._onInputSourcesChange),await n.makeXRCompatible(),this._currentPixelRatio=t.getPixelRatio(),t.getSize(this._currentSize),this._currentAnimationContext=t._animation.getContext(),this._currentAnimationLoop=t._animation.getAnimationLoop(),t._animation.stop(),this._supportsLayers===!0){let n=null,a=null,o=null;t.depth&&(o=t.stencil?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24,n=t.stencil?Ge:We,a=t.stencil?Re:Ne);let s={colorFormat:r.RGBA8,depthFormat:o,scaleFactor:this._framebufferScaleFactor,clearOnAccess:!1};this._useMultiviewIfPossible&&t.hasFeature(`OVR_multiview2`)&&(s.textureType=`texture-array`,this._useMultiview=!0),this._glBinding=this.getBinding();let c=this._glBinding.createProjectionLayer(s),l=[c];this._glProjLayer=c,t.setPixelRatio(1),t._setXRLayerSize(c.textureWidth,c.textureHeight);let u=this._useMultiview?2:1,d=new $s(c.textureWidth,c.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n,u);if(this._xrRenderTarget=new XK(c.textureWidth,c.textureHeight,{format:Ue,type:ke,colorSpace:t.outputColorSpace,depthTexture:d,stencilBuffer:t.stencil,samples:i.antialias?4:0,resolveDepthBuffer:c.ignoreDepthValues===!1,resolveStencilBuffer:c.ignoreDepthValues===!1,depth:this._useMultiview?2:1,multiview:this._useMultiview}),this._xrRenderTarget._hasExternalTextures=!0,this._xrRenderTarget.depth=this._useMultiview?2:1,this._sessionUsesLayers=e.enabledFeatures.includes(`layers`),this._referenceSpace=await e.requestReferenceSpace(this.getReferenceSpaceType()),this._sessionUsesLayers)for(let e of this._layers)e.plane.material=new so({color:16777215,side:+(e.type===`cylinder`)}),e.plane.material.blending=5,e.plane.material.blendEquation=100,e.plane.material.blendSrc=200,e.plane.material.blendDst=200,e.xrlayer=this._createXRLayer(e),l.unshift(e.xrlayer);e.updateRenderState({layers:l})}else{let n={antialias:t.currentSamples>0,alpha:!0,depth:t.depth,stencil:t.stencil,framebufferScaleFactor:this.getFramebufferScaleFactor()},i=new XRWebGLLayer(e,r,n);this._glBaseLayer=i,e.updateRenderState({baseLayer:i}),t.setPixelRatio(1),t._setXRLayerSize(i.framebufferWidth,i.framebufferHeight),this._xrRenderTarget=new XK(i.framebufferWidth,i.framebufferHeight,{format:Ue,type:ke,colorSpace:t.outputColorSpace,stencilBuffer:t.stencil,resolveDepthBuffer:i.ignoreDepthValues===!1,resolveStencilBuffer:i.ignoreDepthValues===!1}),this._xrRenderTarget._isOpaqueFramebuffer=!0,this._referenceSpace=await 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){let t=this._session;if(t===null)return;let n=e.near,r=e.far,i=this._cameraXR,a=this._cameraL,o=this._cameraR;i.near=o.near=a.near=n,i.far=o.far=a.far=r,i.isMultiViewCamera=this._useMultiview,(this._currentDepthNear!==i.near||this._currentDepthFar!==i.far)&&(t.updateRenderState({depthNear:i.near,depthFar:i.far}),this._currentDepthNear=i.near,this._currentDepthFar=i.far),i.layers.mask=e.layers.mask|6,a.layers.mask=i.layers.mask&-5,o.layers.mask=i.layers.mask&-3;let s=e.parent,c=i.cameras;nq(i,s);for(let e=0;e<c.length;e++)nq(c[e],s);c.length===2?tq(i,a,o):i.projectionMatrix.copy(a.projectionMatrix),rq(e,i,s)}_getController(e){let t=this._controllers[e];return t===void 0&&(t=new hi,this._controllers[e]=t),t}};function tq(e,t,n){ZK.setFromMatrixPosition(t.matrixWorld),QK.setFromMatrixPosition(n.matrixWorld);let r=ZK.distanceTo(QK),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function nq(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}function rq(e,t,n){n===null?e.matrix.copy(t.matrixWorld):(e.matrix.copy(n.matrixWorld),e.matrix.invert(),e.matrix.multiply(t.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=Wn*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}function iq(e){let t=this._controllerInputSources.indexOf(e.inputSource);if(t===-1)return;let n=this._controllers[t];if(n!==void 0){let t=this.getReferenceSpace();n.update(e.inputSource,e.frame,t),n.dispatchEvent({type:e.type,data:e.inputSource})}}function aq(){let e=this._session,t=this._renderer;e.removeEventListener(`select`,this._onSessionEvent),e.removeEventListener(`selectstart`,this._onSessionEvent),e.removeEventListener(`selectend`,this._onSessionEvent),e.removeEventListener(`squeeze`,this._onSessionEvent),e.removeEventListener(`squeezestart`,this._onSessionEvent),e.removeEventListener(`squeezeend`,this._onSessionEvent),e.removeEventListener(`end`,this._onSessionEnd),e.removeEventListener(`inputsourceschange`,this._onInputSourcesChange);for(let e=0;e<this._controllers.length;e++){let t=this._controllerInputSources[e];t!==null&&(this._controllerInputSources[e]=null,this._controllers[e].disconnect(t))}if(this._currentDepthNear=null,this._currentDepthFar=null,t._resetXRState(),this._session=null,this._xrRenderTarget=null,this._glBinding=null,this._glBaseLayer=null,this._glProjLayer=null,this._sessionUsesLayers===!0)for(let e of this._layers)e.renderTarget=new XK(e.pixelwidth,e.pixelheight,{format:Ue,type:ke,depthTexture:new $s(e.pixelwidth,e.pixelheight,e.stencilBuffer?Re:Ne,void 0,void 0,void 0,void 0,void 0,void 0,e.stencilBuffer?Ge:We),stencilBuffer:e.stencilBuffer,resolveDepthBuffer:!1,resolveStencilBuffer:!1}),e.renderTarget.isXRRenderTarget=!1,e.plane.material=e.material,e.material.map=e.renderTarget.texture,e.material.map.offset.y=1,e.material.map.repeat.y=-1,delete e.xrlayer;this.isPresenting=!1,this._useMultiview=!1,t._animation.stop(),t._animation.setAnimationLoop(this._currentAnimationLoop),t._animation.setContext(this._currentAnimationContext),t._animation.start(),t.setPixelRatio(this._currentPixelRatio),t.setSize(this._currentSize.width,this._currentSize.height,!1),this.dispatchEvent({type:`sessionend`})}function oq(e){let t=this._controllers,n=this._controllerInputSources;for(let r=0;r<e.removed.length;r++){let i=e.removed[r],a=n.indexOf(i);a>=0&&(n[a]=null,t[a].disconnect(i))}for(let r=0;r<e.added.length;r++){let i=e.added[r],a=n.indexOf(i);if(a===-1){for(let e=0;e<t.length;e++)if(e>=n.length){n.push(i),a=e;break}else if(n[e]===null){n[e]=i,a=e;break}if(a===-1)break}let o=t[a];o&&o.connect(i)}}function sq(e){return e.type===`quad`?this._glBinding.createQuadLayer({transform:new XRRigidTransform(e.translation,e.quaternion),width:e.width/2,height:e.height/2,space:this._referenceSpace,viewPixelWidth:e.pixelwidth,viewPixelHeight:e.pixelheight,clearOnAccess:!1}):this._glBinding.createCylinderLayer({transform:new XRRigidTransform(e.translation,e.quaternion),radius:e.radius,centralAngle:e.centralAngle,aspectRatio:e.aspectRatio,space:this._referenceSpace,viewPixelWidth:e.pixelwidth,viewPixelHeight:e.pixelheight,clearOnAccess:!1})}function cq(e,t){if(t===void 0)return;let n=this._cameraXR,r=this._renderer,i=r.backend,a=this._glBaseLayer,o=this.getReferenceSpace(),s=t.getViewerPose(o);if(this._xrFrame=t,s!==null){let e=s.views;this._glBaseLayer!==null&&i.setXRTarget(a.framebuffer);let t=!1;e.length!==n.cameras.length&&(n.cameras.length=0,t=!0);for(let r=0;r<e.length;r++){let o=e[r],s;if(this._supportsLayers===!0){let e=this._glBinding.getViewSubImage(this._glProjLayer,o);s=e.viewport,r===0&&i.setXRRenderTargetTextures(this._xrRenderTarget,e.colorTexture,this._glProjLayer.ignoreDepthValues&&!this._useMultiview?void 0:e.depthStencilTexture)}else s=a.getViewport(o);let c=this._cameras[r];c===void 0&&(c=new ud,c.layers.enable(r),c.viewport=new Nr,this._cameras[r]=c),c.matrix.fromArray(o.transform.matrix),c.matrix.decompose(c.position,c.quaternion,c.scale),c.projectionMatrix.fromArray(o.projectionMatrix),c.projectionMatrixInverse.copy(c.projectionMatrix).invert(),c.viewport.set(s.x,s.y,s.width,s.height),r===0&&(n.matrix.copy(c.matrix),n.matrix.decompose(n.position,n.quaternion,n.scale)),t===!0&&n.cameras.push(c)}r.setOutputRenderTarget(this._xrRenderTarget)}for(let e=0;e<this._controllers.length;e++){let n=this._controllerInputSources[e],r=this._controllers[e];n!==null&&r!==void 0&&r.update(n,t,o)}this._currentAnimationLoop&&this._currentAnimationLoop(e,t),t.detectedPlanes&&this.dispatchEvent({type:`planesdetected`,data:t}),this._xrFrame=null}var lq=class extends Bn{constructor(e){super(),this.domElement=e,this._pixelRatio=1,this._width=this.domElement.width,this._height=this.domElement.height,this._viewport=new Nr(0,0,this._width,this._height),this._scissor=new Nr(0,0,this._width,this._height),this._scissorTest=!1,this.colorTexture=new Ks,this.depthTexture=new $s}getPixelRatio(){return this._pixelRatio}getDrawingBufferSize(e){return e.set(this._width*this._pixelRatio,this._height*this._pixelRatio).floor()}getSize(e){return e.set(this._width,this._height)}setPixelRatio(e=1){this._pixelRatio!==e&&(this._pixelRatio=e,this.setSize(this._width,this._height,!1))}setDrawingBufferSize(e,t,n){this.xr&&this.xr.isPresenting||(this._width=e,this._height=t,this._pixelRatio=n,this.domElement.width=Math.floor(e*n),this.domElement.height=Math.floor(t*n),this.setViewport(0,0,e,t),this._dispatchResize())}setSize(e,t,n=!0){this.xr&&this.xr.isPresenting||(this._width=e,this._height=t,this.domElement.width=Math.floor(e*this._pixelRatio),this.domElement.height=Math.floor(t*this._pixelRatio),n===!0&&(this.domElement.style.width=e+`px`,this.domElement.style.height=t+`px`),this.setViewport(0,0,e,t),this._dispatchResize())}getScissor(e){let t=this._scissor;return e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height,e}setScissor(e,t,n,r){let i=this._scissor;e.isVector4?i.copy(e):i.set(e,t,n,r)}getScissorTest(){return this._scissorTest}setScissorTest(e){this._scissorTest=e}getViewport(e){return e.copy(this._viewport)}setViewport(e,t,n,r,i=0,a=1){let o=this._viewport;e.isVector4?o.copy(e):o.set(e,t,n,r),o.minDepth=i,o.maxDepth=a}_dispatchResize(){this.dispatchEvent({type:`resize`})}dispose(){this.dispatchEvent({type:`dispose`})}},uq=new Ci,dq=new N,fq=new Nr,pq=new es,mq=new rs,hq=new F,gq=new Nr,_q={0:1,1:0,2:2},vq=class{constructor(e,t={}){this.isRenderer=!0;let{logarithmicDepthBuffer:n=!1,reversedDepthBuffer:r=!1,alpha:i=!0,depth:a=!0,stencil:o=!1,antialias:s=!1,samples:c=0,getFallback:l=null,outputBufferType:u=Fe,multiview:d=!1}=t;this.backend=e,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.alpha=i,this.logarithmicDepthBuffer=n,this.reversedDepthBuffer=r,this.outputColorSpace=Xt,this.toneMapping=0,this.toneMappingExposure=1,this.sortObjects=!0,this.depth=a,this.stencil=o,this.info=new NR,this.contextNode=yk(),this.library=new KK,this.lighting=new YK,this._samples=c||s===!0?4:0,this._onCanvasTargetResize=this._onCanvasTargetResize.bind(this),this._canvasTarget=new lq(e.getDomElement()),this._canvasTarget.addEventListener(`resize`,this._onCanvasTargetResize),this._canvasTarget.isDefaultCanvasTarget=!0,this._inspector=new OA,this._inspector.setRenderer(this),this._getFallback=l,this._attributes=null,this._geometries=null,this._nodes=null,this._animation=null,this._bindings=null,this._objects=null,this._pipelines=null,this._bundles=null,this._renderLists=null,this._renderContexts=null,this._textures=null,this._background=null,this._quadCache=new Map,this._currentRenderContext=null,this._opaqueSort=null,this._transparentSort=null,this._frameBufferTargets=new Map;let f=this.alpha===!0?0:1;this._clearColor=new $R(0,0,0,f),this._clearDepth=1,this._clearStencil=0,this._renderTarget=null,this._activeCubeFace=0,this._activeMipmapLevel=0,this._outputRenderTarget=null,this._mrt=null,this._renderObjectFunction=null,this._currentRenderObjectFunction=null,this._currentRenderBundle=null,this._handleObjectFunction=this._renderObjectDirect,this._isDeviceLost=!1,this.onDeviceLost=this._onDeviceLost,this._outputBufferType=u,this._cacheShadowNodes=new WeakMap,this._initialized=!1,this._callDepth=-1,this._initPromise=null,this._compilationPromises=null,this.transparent=!0,this.opaque=!0,this.shadowMap={enabled:!1,transmitted:!1,type:1},this.xr=new eq(this,d),this.debug={checkShaderErrors:!0,onShaderError:null,getShaderAsync:async(e,t,n)=>{await this.compileAsync(e,t);let r=this._renderLists.get(e,t),i=this._renderContexts.get(this._renderTarget,this._mrt),a=e.overrideMaterial||n.material,{fragmentShader:o,vertexShader:s}=this._objects.get(n,a,e,t,r.lightsNode,i,i.clippingContext).getNodeBuilderState();return{fragmentShader:o,vertexShader:s}}}}async init(){return this._initPromise===null&&(this._initPromise=new Promise(async(e,t)=>{let n=this.backend;try{await n.init(this)}catch(e){if(this._getFallback!==null)try{this.backend=n=this._getFallback(e),await n.init(this)}catch(e){t(e);return}else{t(e);return}}this._nodes=new BK(this,n),this._animation=new gR(this,this._nodes,this.info),this._attributes=new OR(n,this.info),this._background=new FG(this,this._nodes),this._geometries=new MR(this._attributes,this.info),this._textures=new QR(this,n,this.info),this._pipelines=new zR(n,this._nodes,this.info),this._bindings=new BR(n,this._nodes,this._textures,this._attributes,this._pipelines,this.info),this._objects=new SR(this,this._nodes,this._geometries,this._pipelines,this._bindings,this.info),this._renderLists=new KR(this.lighting),this._bundles=new GK,this._renderContexts=new XR(this),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}async compileAsync(e,t,n=null){if(this._isDeviceLost===!0)return;this._initialized===!1&&await this.init();let r=this._nodes.nodeFrame,i=r.renderId,a=this._currentRenderContext,o=this._currentRenderObjectFunction,s=this._handleObjectFunction,c=this._compilationPromises;n===null&&(n=e);let l=e.isScene===!0?e:n.isScene===!0?n:uq,u=this.needsFrameBufferTarget&&this._renderTarget===null?this._getFrameBufferTarget():this._renderTarget||this._outputRenderTarget,d=this._renderContexts.get(u,this._mrt),f=this._activeMipmapLevel,p=[];this._currentRenderContext=d,this._currentRenderObjectFunction=this.renderObject,this._handleObjectFunction=this._createObjectPipeline,this._compilationPromises=p,r.renderId++,r.update(),d.depth=this.depth,d.stencil=this.stencil,d.clippingContext||=new HK,d.clippingContext.updateGlobal(l,t),l.onBeforeRender(this,e,t,u);let m=this._renderLists.get(l,t);if(m.begin(),this._projectObject(e,t,0,m,d.clippingContext),n!==e&&n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&m.pushLight(e)}),m.finish(),u!==null){this._textures.updateRenderTarget(u,f);let e=this._textures.get(u);d.textures=e.textures,d.depthTexture=e.depthTexture}else d.textures=null,d.depthTexture=null;n===e?this._background.update(l,m,d):this._background.update(n,m,d);let h=m.opaque,g=m.transparent,_=m.transparentDoublePass,v=m.lightsNode;this.opaque===!0&&h.length>0&&this._renderObjects(h,t,l,v),this.transparent===!0&&g.length>0&&this._renderTransparents(g,_,t,l,v),r.renderId=i,this._currentRenderContext=a,this._currentRenderObjectFunction=o,this._handleObjectFunction=s,this._compilationPromises=c;for(let e of p){let t=this._objects.get(e.object,e.material,e.scene,e.camera,e.lightsNode,e.renderContext,e.clippingContext,e.passId);t.drawRange=e.object.geometry.drawRange,t.group=e.group,this._geometries.updateForRender(t),await this._nodes.getForRenderAsync(t),this._nodes.updateBefore(t),this._nodes.updateForRender(t),this._bindings.updateForRender(t);let n=[];this._pipelines.getForRender(t,n),n.length>0&&await Promise.all(n),this._nodes.updateAfter(t),await Ln()}}async renderAsync(e,t){In(`Renderer: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.render(e,t)}async waitForGPU(){M(`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){let t=this.contextNode.value;e===!0?(t.modelViewMatrix=eM,t.modelNormalViewMatrix=tM):this.highPrecision&&(delete t.modelViewMatrix,delete t.modelNormalViewMatrix)}get highPrecision(){let e=this.contextNode.value;return e.modelViewMatrix===eM&&e.modelNormalViewMatrix===tM}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getOutputBufferType(){return this._outputBufferType}getColorBufferType(){return In(`Renderer: ".getColorBufferType()" has been renamed to ".getOutputBufferType()".`),this.getOutputBufferType()}_onDeviceLost(e){let t=`THREE.WebGPURenderer: ${e.api} Device Lost:\n\nMessage: ${e.message}`;e.reason&&(t+=`\nReason: ${e.reason}`),M(t),this._isDeviceLost=!0}_renderBundle(e,t,n){let{bundleGroup:r,camera:i,renderList:a}=e,o=this._currentRenderContext,s=this._bundles.get(r,i,o),c=this.backend.get(s),l=r.version!==c.version;if(l||c.bundleGPU===void 0){this.backend.beginBundle(o),(c.renderObjects===void 0||l)&&(c.renderObjects=[]),this._currentRenderBundle=s;let{transparentDoublePass:e,transparent:u,opaque:d}=a;this.opaque===!0&&d.length>0&&this._renderObjects(d,i,t,n),this.transparent===!0&&u.length>0&&this._renderTransparents(u,e,i,t,n),this._currentRenderBundle=null,this.backend.finishBundle(o,s),c.version=r.version}else{let{renderObjects:e}=c;for(let t=0,n=e.length;t<n;t++){let n=e[t];this._nodes.needsRefresh(n)&&(this._nodes.updateBefore(n),this._nodes.updateForRender(n),this._bindings.updateForRender(n),this._nodes.updateAfter(n))}}this.backend.addBundle(o,s)}render(e,t){if(this._initialized===!1)throw Error(`Renderer: .render() called before the backend is initialized. Use "await renderer.init();" before rendering.`);this._renderScene(e,t)}get initialized(){return this._initialized}_getFrameBufferTarget(){let{currentToneMapping:e,currentColorSpace:t}=this,n=e!==0,r=t!==Sr.workingColorSpace;if(n===!1&&r===!1)return null;let{width:i,height:a}=this.getDrawingBufferSize(dq),{depth:o,stencil:s}=this,c=this._outputRenderTarget||this._canvasTarget,l=this._frameBufferTargets.get(c);if(l===void 0){l=new Pr(i,a,{depthBuffer:o,stencilBuffer:s,type:this._outputBufferType,format:Ue,colorSpace:Sr.workingColorSpace,generateMipmaps:!1,minFilter:Te,magFilter:Te,samples:this.samples}),l.isPostProcessingRenderTarget=!0;let e=()=>{c.removeEventListener(`dispose`,e),l.dispose(),this._frameBufferTargets.delete(c)};c.addEventListener(`dispose`,e),this._frameBufferTargets.set(c,l)}let u=this.getOutputRenderTarget();l.depthBuffer=o,l.stencilBuffer=s,u===null?l.setSize(i,a,1):l.setSize(u.width,u.height,u.depth);let d=this._outputRenderTarget?this._outputRenderTarget.viewport:c._viewport,f=this._outputRenderTarget?this._outputRenderTarget.scissor:c._scissor,p=this._outputRenderTarget?1:c._pixelRatio,m=this._outputRenderTarget?this._outputRenderTarget.scissorTest:c._scissorTest;return l.viewport.copy(d),l.scissor.copy(f),l.viewport.multiplyScalar(p),l.scissor.multiplyScalar(p),l.scissorTest=m,l.multiview=u===null?!1:u.multiview,l.resolveDepthBuffer=u===null?!0:u.resolveDepthBuffer,l._autoAllocateDepthBuffer=u===null?!1:u._autoAllocateDepthBuffer,l}_renderScene(e,t,n=!0){if(this._isDeviceLost===!0)return;let r=n?this._getFrameBufferTarget():null,i=this._nodes.nodeFrame,a=i.renderId,o=this._currentRenderContext,s=this._currentRenderObjectFunction,c=this._handleObjectFunction;this._callDepth++;let l=e.isScene===!0?e:uq,u=this._renderTarget||this._outputRenderTarget,d=this._activeCubeFace,f=this._activeMipmapLevel,p;if(r===null?p=u:(p=r,this.setRenderTarget(p)),p!==null&&p.depthBuffer===!0){let e=this._textures.get(p);e.depthInitialized!==!0&&((this.autoClear===!1||this.autoClear===!0&&this.autoClearDepth===!1)&&this.clearDepth(),e.depthInitialized=!0)}let m=this._renderContexts.get(p,this._mrt,this._callDepth);this._currentRenderContext=m,this._currentRenderObjectFunction=this._renderObjectFunction||this.renderObject,this._handleObjectFunction=this._renderObjectDirect,this.info.calls++,this.info.render.calls++,this.info.render.frameCalls++,i.renderId=this.info.calls,this.backend.updateTimeStampUID(m),this.inspector.beginRender(this.backend.getTimestampUID(m),e,t,p);let h=this.xr;if(h.isPresenting===!1){let e=!1;if(this.reversedDepthBuffer===!0&&t.reversedDepth!==!0){if(t._reversedDepth=!0,t.isArrayCamera)for(let e of t.cameras)e._reversedDepth=!0;e=!0}let n=this.coordinateSystem;if(t.coordinateSystem!==n){if(t.coordinateSystem=n,t.isArrayCamera)for(let e of t.cameras)e.coordinateSystem=n;e=!0}if(e===!0&&(t.updateProjectionMatrix(),t.isArrayCamera))for(let e of t.cameras)e.updateProjectionMatrix()}e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),h.enabled===!0&&h.isPresenting===!0&&(h.cameraAutoUpdate===!0&&h.updateCamera(t),t=h.getCamera());let g=this._canvasTarget,_=g._viewport,v=g._scissor,y=g._pixelRatio;p!==null&&(_=p.viewport,v=p.scissor,y=1),this.getDrawingBufferSize(dq),fq.set(0,0,dq.width,dq.height);let b=_.minDepth===void 0?0:_.minDepth,x=_.maxDepth===void 0?1:_.maxDepth;m.viewportValue.copy(_).multiplyScalar(y).floor(),m.viewportValue.width>>=f,m.viewportValue.height>>=f,m.viewportValue.minDepth=b,m.viewportValue.maxDepth=x,m.viewport=m.viewportValue.equals(fq)===!1,m.scissorValue.copy(v).multiplyScalar(y).floor(),m.scissor=g._scissorTest&&m.scissorValue.equals(fq)===!1,m.scissorValue.width>>=f,m.scissorValue.height>>=f,m.clippingContext||=new HK,m.clippingContext.updateGlobal(l,t),l.onBeforeRender(this,e,t,p);let S=t.isArrayCamera?mq:pq;t.isArrayCamera||(hq.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),S.setFromProjectionMatrix(hq,t.coordinateSystem,t.reversedDepth));let C=this._renderLists.get(e,t);if(C.begin(),this._projectObject(e,t,0,C,m.clippingContext),C.finish(),this.sortObjects===!0&&C.sort(this._opaqueSort,this._transparentSort),p!==null){this._textures.updateRenderTarget(p,f);let e=this._textures.get(p);m.textures=e.textures,m.depthTexture=e.depthTexture,m.width=e.width,m.height=e.height,m.renderTarget=p,m.depth=p.depthBuffer,m.stencil=p.stencilBuffer}else m.textures=null,m.depthTexture=null,m.width=dq.width,m.height=dq.height,m.depth=this.depth,m.stencil=this.stencil;m.width>>=f,m.height>>=f,m.activeCubeFace=d,m.activeMipmapLevel=f,m.occlusionQueryCount=C.occlusionQueryCount,m.scissorValue.max(gq.set(0,0,0,0)),m.scissorValue.x+m.scissorValue.width>m.width&&(m.scissorValue.width=Math.max(m.width-m.scissorValue.x,0)),m.scissorValue.y+m.scissorValue.height>m.height&&(m.scissorValue.height=Math.max(m.height-m.scissorValue.y,0)),this._background.update(l,C,m),m.camera=t,this.backend.beginRender(m);let{bundles:w,lightsNode:T,transparentDoublePass:E,transparent:D,opaque:O}=C;return w.length>0&&this._renderBundles(w,l,T),this.opaque===!0&&O.length>0&&this._renderObjects(O,t,l,T),this.transparent===!0&&D.length>0&&this._renderTransparents(D,E,t,l,T),this.backend.finishRender(m),i.renderId=a,this._currentRenderContext=o,this._currentRenderObjectFunction=s,this._handleObjectFunction=c,this._callDepth--,r!==null&&(this.setRenderTarget(u,d,f),this._renderOutput(p)),l.onAfterRender(this,e,t,p),this.inspector.finishRender(this.backend.getTimestampUID(m)),m}_setXRLayerSize(e,t){this._canvasTarget._width=e,this._canvasTarget._height=t,this.setViewport(0,0,e,t)}_renderOutput(e){let t=this._nodes.getOutputCacheKey(),n=this._quadCache.get(e.texture),r;if(n===void 0){r=new CB(new vF),r.name=`Output Color Transform`,r.material.name=`outputColorTransform`,r.material.fragmentNode=this._nodes.getOutputNode(e.texture),n={quad:r,cacheKey:t},this._quadCache.set(e.texture,n);let i=()=>{r.material.dispose(),this._quadCache.delete(e.texture),e.texture.removeEventListener(`dispose`,i)};e.texture.addEventListener(`dispose`,i)}else r=n.quad,n.cacheKey!==t&&(r.material.fragmentNode=this._nodes.getOutputNode(e.texture),r.material.needsUpdate=!0,n.cacheKey=t);let i=this.autoClear,a=this.xr.enabled;this.autoClear=!1,this.xr.enabled=!1,this._renderScene(r,r.camera,!1),this.autoClear=i,this.xr.enabled=a}getMaxAnisotropy(){return this.backend.capabilities.getMaxAnisotropy()}getActiveCubeFace(){return this._activeCubeFace}getActiveMipmapLevel(){return this._activeMipmapLevel}async setAnimationLoop(e){this._initialized===!1&&await this.init(),this._animation.setAnimationLoop(e)}getAnimationLoop(){return this._animation.getAnimationLoop()}async getArrayBufferAsync(e,t=null,n=0,r=-1){if(t!==null&&t.isReadbackBuffer&&this.info.memoryMap.has(t)===!1){this.info.createReadbackBuffer(t);let e=()=>{t.removeEventListener(`dispose`,e),this.info.destroyReadbackBuffer(t)};t.addEventListener(`dispose`,e)}if(n%4!=0||r>0&&r%4!=0)throw Error(`THREE.Renderer: "getArrayBufferAsync()" offset and count must be a multiple of 4.`);return await this.backend.getArrayBufferAsync(e,t,n,r)}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,i=0,a=1){this._canvasTarget.setViewport(e,t,n,r,i,a)}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.reversedDepthBuffer===!0?1-this._clearDepth:this._clearDepth}setClearDepth(e){this._clearDepth=e}getClearStencil(){return this._clearStencil}setClearStencil(e){this._clearStencil=e}isOccluded(e){let t=this._currentRenderContext;return t&&this.backend.isOccluded(t,e)}clear(e=!0,t=!0,n=!0){if(this._initialized===!1)throw Error(`Renderer: .clear() called before the backend is initialized. Use "await renderer.init();" before before using this method.`);let r=this._renderTarget||this._getFrameBufferTarget(),i=null;if(r!==null){this._textures.updateRenderTarget(r);let e=this._textures.get(r);i=this._renderContexts.get(r,null,-1),i.textures=e.textures,i.depthTexture=e.depthTexture,i.width=e.width,i.height=e.height,i.renderTarget=r,i.depth=r.depthBuffer,i.stencil=r.stencilBuffer;let t=this.backend.getClearColor();i.clearColorValue.r=t.r,i.clearColorValue.g=t.g,i.clearColorValue.b=t.b,i.clearColorValue.a=t.a,i.clearDepthValue=this.getClearDepth(),i.clearStencilValue=this.getClearStencil(),i.activeCubeFace=this.getActiveCubeFace(),i.activeMipmapLevel=this.getActiveMipmapLevel(),r.depthBuffer===!0&&(e.depthInitialized=!0)}this.backend.clear(e,t,n,i),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)}async clearAsync(e=!0,t=!0,n=!0){In(`Renderer: "clearAsync()" has been deprecated. Use "clear()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.clear(e,t,n)}async clearColorAsync(){In(`Renderer: "clearColorAsync()" has been deprecated. Use "clearColor()" and "await renderer.init();" when creating the renderer.`),this.clear(!0,!1,!1)}async clearDepthAsync(){In(`Renderer: "clearDepthAsync()" has been deprecated. Use "clearDepth()" and "await renderer.init();" when creating the renderer.`),this.clear(!1,!0,!1)}async clearStencilAsync(){In(`Renderer: "clearStencilAsync()" has been deprecated. Use "clearStencil()" and "await renderer.init();" when creating the renderer.`),this.clear(!1,!1,!0)}get needsFrameBufferTarget(){let e=this.currentToneMapping!==0,t=this.currentColorSpace!==Sr.workingColorSpace;return e||t}get samples(){return this._samples}get currentSamples(){let e=this._samples;return this._renderTarget===null?this.needsFrameBufferTarget&&(e=0):e=this._renderTarget.samples,e}get currentToneMapping(){return this.isOutputTarget?this.toneMapping:0}get currentColorSpace(){return this.isOutputTarget?this.outputColorSpace:Sr.workingColorSpace}get isOutputTarget(){return this._renderTarget===this._outputRenderTarget||this._renderTarget===null}dispose(){if(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();for(let e of this._frameBufferTargets.keys())e.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);for(let e of this._frameBufferTargets.keys())e.dispose()}setRenderObjectFunction(e){this._renderObjectFunction=e}getRenderObjectFunction(){return this._renderObjectFunction}compute(e,t=null){if(this._isDeviceLost===!0)return;if(this._initialized===!1)return j(`Renderer: .compute() called before the backend is initialized. Try using .computeAsync() instead.`),this.computeAsync(e,t);let 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);let i=this.backend,a=this._pipelines,o=this._bindings,s=this._nodes,c=Array.isArray(e)?e:[e];if(c[0]===void 0||c[0].isComputeNode!==!0)throw Error(`THREE.Renderer: .compute() expects a ComputeNode.`);i.beginCompute(e);for(let n of c){if(a.has(n)===!1){let e=()=>{n.removeEventListener(`dispose`,e),a.delete(n),o.deleteForCompute(n),s.delete(n)};n.addEventListener(`dispose`,e);let t=n.onInitFunction;t!==null&&t.call(n,{renderer:this})}s.updateForCompute(n),o.updateForCompute(n);let r=o.getForCompute(n),c=a.getForCompute(n,r);i.compute(e,n,r,c,t)}i.finishCompute(e),n.renderId=r,this.inspector.finishCompute(this.backend.getTimestampUID(e))}async computeAsync(e,t=null){this._initialized===!1&&await this.init(),this.compute(e,t)}async hasFeatureAsync(e){return In(`Renderer: "hasFeatureAsync()" has been deprecated. Use "hasFeature()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.hasFeature(e)}async resolveTimestampsAsync(e=`render`){return this._initialized===!1&&await this.init(),this.backend.resolveTimestampsAsync(e)}hasFeature(e){if(this._initialized===!1)throw 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}async initTextureAsync(e){In(`Renderer: "initTextureAsync()" has been deprecated. Use "initTexture()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.initTexture(e)}initTexture(e){if(this._initialized===!1)throw Error(`Renderer: .initTexture() called before the backend is initialized. Use "await renderer.init();" before before using this method.`);this._textures.updateTexture(e)}initRenderTarget(e){if(this._initialized===!1)throw Error(`Renderer: .initRenderTarget() called before the backend is initialized. Use "await renderer.init();" before before using this method.`);this._textures.updateRenderTarget(e);let t=this._textures.get(e),n=this._renderContexts.get(e);n.textures=t.textures,n.depthTexture=t.depthTexture,n.width=t.width,n.height=t.height,n.renderTarget=e,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,this.backend.initRenderTarget(n)}copyFramebufferToTexture(e,t=null){if(t!==null)if(t.isVector2)t=gq.set(t.x,t.y,e.image.width,e.image.height).floor();else if(t.isVector4)t=gq.copy(t).floor();else{M(`Renderer.copyFramebufferToTexture: Invalid rectangle.`);return}else t=gq.set(0,0,e.image.width,e.image.height);let n=this._currentRenderContext,r;n===null?(r=this._renderTarget||this._getFrameBufferTarget(),r!==null&&(this._textures.updateRenderTarget(r),n=this._textures.get(r))):r=n.renderTarget,this._textures.updateTexture(e,{renderTarget:r}),this.backend.copyFramebufferToTexture(e,n,t),this._inspector.copyFramebufferToTexture(e)}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){this._textures.updateTexture(e),this._textures.updateTexture(t),this.backend.copyTextureToTexture(e,t,n,r,i,a),this._inspector.copyTextureToTexture(e,t)}async readRenderTargetPixelsAsync(e,t,n,r,i,a=0,o=0){return this.backend.copyTextureToBuffer(e.textures[a],t,n,r,i,o)}_projectObject(e,t,n,r,i){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder,e.isClippingGroup&&e.enabled&&(i=i.getGroupContext(e));else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLight)r.pushLight(e);else if(e.isSprite){let a=t.isArrayCamera?mq:pq;if(!e.frustumCulled||a.intersectsSprite(e,t)){this.sortObjects===!0&&gq.setFromMatrixPosition(e.matrixWorld).applyMatrix4(hq);let{geometry:t,material:a}=e;a.visible&&r.push(e,t,a,n,gq.z,null,i)}}else if(e.isLineLoop)M(`Renderer: Objects of type THREE.LineLoop are not supported. Please use THREE.Line or THREE.LineSegments.`);else if(e.isMesh||e.isLine||e.isPoints){let a=t.isArrayCamera?mq:pq;if(!e.frustumCulled||a.intersectsObject(e,t)){let{geometry:t,material:a}=e;if(this.sortObjects===!0&&(t.boundingSphere===null&&t.computeBoundingSphere(),gq.copy(t.boundingSphere.center).applyMatrix4(e.matrixWorld).applyMatrix4(hq)),Array.isArray(a)){let o=t.groups;for(let s=0,c=o.length;s<c;s++){let c=o[s],l=a[c.materialIndex];l&&l.visible&&r.push(e,t,l,n,gq.z,c,i)}}else a.visible&&r.push(e,t,a,n,gq.z,null,i)}}}if(e.isBundleGroup===!0&&this.backend.beginBundle!==void 0){let n=r;r=this._renderLists.get(e,t),r.begin(),n.pushBundle({bundleGroup:e,camera:t,renderList:r}),r.finish()}let a=e.children;for(let e=0,o=a.length;e<o;e++)this._projectObject(a[e],t,n,r,i)}_renderBundles(e,t,n){for(let r of e)this._renderBundle(r,t,n)}_renderTransparents(e,t,n,r,i){if(t.length>0){for(let{material:e}of t)e.side=1;this._renderObjects(t,n,r,i,`backSide`);for(let{material:e}of t)e.side=0;this._renderObjects(e,n,r,i);for(let{material:e}of t)e.side=2}else this._renderObjects(e,n,r,i)}_renderObjects(e,t,n,r,i=null){for(let a=0,o=e.length;a<o;a++){let{object:o,geometry:s,material:c,group:l,clippingContext:u}=e[a];this._currentRenderObjectFunction(o,n,t,s,c,l,r,u,i)}}_getShadowNodes(e){let t=e.version,n=this._cacheShadowNodes.get(e);if(n===void 0||n.version!==t){let r=e.map!==null,i=e.colorNode&&e.colorNode.isNode,a=e.castShadowNode&&e.castShadowNode.isNode,o=e.maskShadowNode&&e.maskShadowNode.isNode||e.maskNode&&e.maskNode.isNode,s=null,c=null,l=null;if(r||i||a||o){let t,n;if(a?(t=e.castShadowNode.rgb,n=e.castShadowNode.a,this.shadowMap.transmitted!==!0&&In("Renderer: `shadowMap.transmitted` needs to be set to `true` when using `material.castShadowNode`.")):(t=J(0),n=W(1)),r&&(n=n.mul(BM(`map`,`texture`,e).a)),i&&(n=n.mul(e.colorNode.a)),c=yE(t,n),o){let t=e.maskShadowNode||e.maskNode;c=U(([e])=>(t.not().discard(),e))(c)}}e.depthNode&&e.depthNode.isNode&&(l=e.depthNode),e.castShadowPositionNode&&e.castShadowPositionNode.isNode?s=e.castShadowPositionNode:e.positionNode&&e.positionNode.isNode&&(s=e.positionNode),n={version:t,colorNode:c,depthNode:l,positionNode:s},this._cacheShadowNodes.set(e,n)}return n}renderObject(e,t,n,r,i,a,o,s=null,c=null){let l=!1,u,d,f,p;if(e.onBeforeRender(this,t,n,r,i,a),i.allowOverride===!0&&t.overrideMaterial!==null){let e=t.overrideMaterial;if(l=!0,u=e.isNodeMaterial?e.colorNode:null,d=e.isNodeMaterial?e.depthNode:null,f=e.isNodeMaterial?e.positionNode:null,p=t.overrideMaterial.side,i.positionNode&&i.positionNode.isNode&&(e.positionNode=i.positionNode),e.alphaTest=i.alphaTest,e.alphaMap=i.alphaMap,e.transparent=i.transparent||i.transmission>0||i.transmissionNode&&i.transmissionNode.isNode||i.backdropNode&&i.backdropNode.isNode,e.isShadowPassMaterial){let{colorNode:t,depthNode:n,positionNode:r}=this._getShadowNodes(i);this.shadowMap.type===3?e.side=i.shadowSide===null?i.side:i.shadowSide:e.side=i.shadowSide===null?_q[i.side]:i.shadowSide,t!==null&&(e.colorNode=t),n!==null&&(e.depthNode=n),r!==null&&(e.positionNode=r)}i=e}i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,this._handleObjectFunction(e,i,t,n,o,a,s,`backSide`),i.side=0,this._handleObjectFunction(e,i,t,n,o,a,s,c),i.side=2):this._handleObjectFunction(e,i,t,n,o,a,s,c),l&&(t.overrideMaterial.colorNode=u,t.overrideMaterial.depthNode=d,t.overrideMaterial.positionNode=f,t.overrideMaterial.side=p),e.onAfterRender(this,t,n,r,i,a)}hasCompatibility(e){if(this._initialized===!1)throw Error(`Renderer: .hasCompatibility() called before the backend is initialized. Use "await renderer.init();" before using this method.`);return this.backend.hasCompatibility(e)}_renderObjectDirect(e,t,n,r,i,a,o,s){let c=this._objects.get(e,t,n,r,i,this._currentRenderContext,o,s);c.drawRange=e.geometry.drawRange,c.group=a,this._currentRenderBundle!==null&&(this.backend.get(this._currentRenderBundle).renderObjects.push(c),c.bundle=this._currentRenderBundle.bundleGroup);let l=this._nodes.needsRefresh(c);l&&(this._nodes.updateBefore(c),this._geometries.updateForRender(c),this._nodes.updateForRender(c),this._bindings.updateForRender(c)),this._pipelines.updateForRender(c),this._pipelines.isReady(c)&&(this.backend.draw(c,this.info),l&&this._nodes.updateAfter(c))}_createObjectPipeline(e,t,n,r,i,a,o,s){if(this._compilationPromises!==null){this._compilationPromises.push({object:e,material:t,scene:n,camera:r,lightsNode:i,group:a,clippingContext:o,passId:s,renderContext:this._currentRenderContext});return}let c=this._objects.get(e,t,n,r,i,this._currentRenderContext,o,s);c.drawRange=e.geometry.drawRange,c.group=a,this._nodes.updateBefore(c),this._geometries.updateForRender(c),this._nodes.updateForRender(c),this._bindings.updateForRender(c),this._pipelines.getForRender(c,this._compilationPromises),this._nodes.updateAfter(c)}_onCanvasTargetResize(){this._initialized&&this.backend.updateSize()}get compile(){return this.compileAsync}},yq=class{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 bq(e){return e+(TR-e%TR)%TR}var xq=class extends yq{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 bq(this._buffer.byteLength)}get buffer(){return this._buffer}update(){return!0}},Sq=class extends xq{constructor(e,t=null){super(e,t),this.isUniformBuffer=!0}},Cq=0,wq=class extends Sq{constructor(e,t){super(`UniformBuffer_`+Cq++,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}},Tq=class extends Sq{constructor(e){super(e),this.isUniformsGroup=!0,this._values=null,this.uniforms=[],this._updateRangeCache=new Map}addUniformUpdateRange(e){let t=e.index;if(this._updateRangeCache.has(t)!==!0){let n=this.updateRanges,r={start:e.offset,count:e.itemSize};n.push(r),this._updateRangeCache.set(t,r)}}clearUpdateRanges(){this._updateRangeCache.clear(),super.clearUpdateRanges()}addUniform(e){return this.uniforms.push(e),this}removeUniform(e){let 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){let t=this.byteLength;e=new Float32Array(new ArrayBuffer(t)),this._buffer=e}return e}get byteLength(){let e=this.bytesPerElement,t=0;for(let n=0,r=this.uniforms.length;n<r;n++){let r=this.uniforms[n],i=r.boundary,a=r.itemSize*e,o=t%TR,s=o%i,c=o+s;t+=s,c!==0&&TR-c<a&&(t+=TR-c),r.offset=t/e,r.index=n,t+=a}return Math.ceil(t/TR)*TR}update(){let e=!1;for(let t of this.uniforms)this.updateByType(t)===!0&&(e=!0);return e}updateByType(e){if(e.isNumberUniform)return this.updateNumber(e);if(e.isVector2Uniform)return this.updateVector2(e);if(e.isVector3Uniform)return this.updateVector3(e);if(e.isVector4Uniform)return this.updateVector4(e);if(e.isColorUniform)return this.updateColor(e);if(e.isMatrix3Uniform)return this.updateMatrix3(e);if(e.isMatrix4Uniform)return this.updateMatrix4(e);M(`WebGPUUniformsGroup: Unsupported uniform type.`,e)}updateNumber(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i]!==r){let o=this._getBufferForType(a);o[i]=n[i]=r,t=!0,this.addUniformUpdateRange(e)}return t}updateVector2(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,t=!0,this.addUniformUpdateRange(e)}return t}updateVector3(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y||n[i+2]!==r.z){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,o[i+2]=n[i+2]=r.z,t=!0,this.addUniformUpdateRange(e)}return t}updateVector4(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y||n[i+2]!==r.z||n[i+3]!==r.w){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,o[i+2]=n[i+2]=r.z,o[i+3]=n[i+3]=r.w,t=!0,this.addUniformUpdateRange(e)}return t}updateColor(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset;if(n[i+0]!==r.r||n[i+1]!==r.g||n[i+2]!==r.b){let a=this.buffer;a[i+0]=n[i+0]=r.r,a[i+1]=n[i+1]=r.g,a[i+2]=n[i+2]=r.b,t=!0,this.addUniformUpdateRange(e)}return t}updateMatrix3(e){let t=!1,n=this.values,r=e.getValue().elements,i=e.offset;if(n[i+0]!==r[0]||n[i+1]!==r[1]||n[i+2]!==r[2]||n[i+4]!==r[3]||n[i+5]!==r[4]||n[i+6]!==r[5]||n[i+8]!==r[6]||n[i+9]!==r[7]||n[i+10]!==r[8]){let a=this.buffer;a[i+0]=n[i+0]=r[0],a[i+1]=n[i+1]=r[1],a[i+2]=n[i+2]=r[2],a[i+4]=n[i+4]=r[3],a[i+5]=n[i+5]=r[4],a[i+6]=n[i+6]=r[5],a[i+8]=n[i+8]=r[6],a[i+9]=n[i+9]=r[7],a[i+10]=n[i+10]=r[8],t=!0,this.addUniformUpdateRange(e)}return t}updateMatrix4(e){let t=!1,n=this.values,r=e.getValue().elements,i=e.offset;return Dq(n,r,i)===!1&&(this.buffer.set(r,i),Eq(n,r,i),t=!0,this.addUniformUpdateRange(e)),t}_getBufferForType(e){return e===`int`||e===`ivec2`||e===`ivec3`||e===`ivec4`?new Int32Array(this.buffer.buffer):e===`uint`||e===`uvec2`||e===`uvec3`||e===`uvec4`?new Uint32Array(this.buffer.buffer):this.buffer}};function Eq(e,t,n){for(let r=0,i=t.length;r<i;r++)e[n+r]=t[r]}function Dq(e,t,n){for(let r=0,i=t.length;r<i;r++)if(e[n+r]!==t[r])return!1;return!0}var Oq=0,kq=class extends Tq{constructor(e,t){super(e),this.id=Oq++,this.groupNode=t,this.isNodeUniformsGroup=!0}},Aq=class extends yq{constructor(e,t){super(e),this._texture=null,this._onTextureDispose=()=>{this.generation=null,this.version=-1},this.texture=t,this.version=t?t.version:-1,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=-1,this._texture&&this._texture.addEventListener(`dispose`,this._onTextureDispose))}get texture(){return this._texture}update(){let{texture:e,version:t}=this;return t===e.version?!1:(this.version=e.version,!0)}clone(){let e=super.clone();return e._texture=null,e._onTextureDispose=()=>{e.generation=null,e.version=-1},e.texture=this.texture,e}},jq=0,Mq=class extends Aq{constructor(e,t){super(e,t),this.id=jq++,this.store=!1,this.mipLevel=0,this.isSampledTexture=!0}},Nq=class extends Mq{constructor(e,t,n,r=null){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n,this.access=r}update(){let{textureNode:e}=this;return this.texture===e.value?super.update():(this.texture=e.value,!0)}},Pq=class extends Nq{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledCubeTexture=!0}},Fq=class extends Nq{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledTexture3D=!0}},Iq={bitcast_int_uint:new zV(`uint tsl_bitcast_int_to_uint ( int x ) { return floatBitsToUint( intBitsToFloat ( x ) ); }`),bitcast_uint_int:new zV(`uint tsl_bitcast_uint_to_int ( uint x ) { return floatBitsToInt( uintBitsToFloat ( x ) ); }`)},Lq={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`},Rq={low:`lowp`,medium:`mediump`,high:`highp`},zq={swizzleAssign:!0,storageBuffer:!1},Bq={perspective:`smooth`,linear:`noperspective`},Vq={centroid:`centroid`},Hq=`
4139
4139
  precision highp float;
4140
4140
  precision highp int;
4141
4141
  precision highp sampler2D;
@@ -4264,7 +4264,7 @@ Program Info Log: `+i+`
4264
4264
  `+a+`
4265
4265
  `+o)}else i!==``&&j(`WebGLProgram: Program Info Log:`,i)}}_completeCompile(e,t){let{state:n,gl:r}=this,{programGPU:i,fragmentShader:a,vertexShader:o}=this.get(t);r.getProgramParameter(i,r.LINK_STATUS)===!1&&this._logProgramError(i,a,o),n.useProgram(i);let s=e.getBindings();this._setupBindings(s,i),this.set(t,{programGPU:i,pipeline:i})}createComputePipeline(e,t){let{state:n,gl:r}=this,i={stage:`fragment`,code:`#version 300 es
4266
4266
  precision highp float;
4267
- void main() {}`};this.createProgram(i);let{computeProgram:a}=e,o=r.createProgram(),s=this.get(i).shaderGPU,c=this.get(a).shaderGPU,l=a.transforms,u=[],d=[];for(let e=0;e<l.length;e++){let t=l[e];u.push(t.varyingName),d.push(t.attributeNode)}r.attachShader(o,s),r.attachShader(o,c),r.transformFeedbackVaryings(o,u,r.SEPARATE_ATTRIBS),r.linkProgram(o),r.getProgramParameter(o,r.LINK_STATUS)===!1&&this._logProgramError(o,s,c),n.useProgram(o),this._setupBindings(t,o);let f=a.attributes,p=[],m=[];for(let e=0;e<f.length;e++){let t=f[e].node.attribute;p.push(t),this.has(t)||this.attributeUtils.createAttribute(t,r.ARRAY_BUFFER)}for(let e=0;e<d.length;e++){let t=d[e].attribute;this.has(t)||this.attributeUtils.createAttribute(t,r.ARRAY_BUFFER);let n=this.get(t);m.push(n)}this.set(e,{programGPU:o,transformBuffers:m,attributes:p})}createBindings(e,t){if(this._knownBindings.has(t)===!1){this._knownBindings.add(t);let e=0,n=0;for(let r of t){this.set(r,{textures:n,uniformBuffers:e});for(let t of r.bindings)t.isUniformBuffer&&e++,t.isSampledTexture&&n++}}this.updateBindings(e,t)}updateBindings(e){let{gl:t}=this;for(let n of e.bindings){let e=this.get(n);if(n.isUniformsGroup||n.isUniformBuffer){let r=n.buffer,{bufferGPU:i}=this.get(r);i===void 0?(i=t.createBuffer(),t.bindBuffer(t.UNIFORM_BUFFER,i),t.bufferData(t.UNIFORM_BUFFER,r.byteLength,t.DYNAMIC_DRAW),this.set(r,{bufferGPU:i})):t.bindBuffer(t.UNIFORM_BUFFER,i);let a=n.updateRanges;if(t.bindBuffer(t.UNIFORM_BUFFER,i),a.length===0)t.bufferData(t.UNIFORM_BUFFER,r,t.DYNAMIC_DRAW);else{let e=Dn(r),n=e?1:r.BYTES_PER_ELEMENT;for(let i=0,o=a.length;i<o;i++){let o=a[i],s=o.start*n,c=o.count*n,l=s*(e?r.BYTES_PER_ELEMENT:1);t.bufferSubData(t.UNIFORM_BUFFER,l,r,s,c)}}e.bufferGPU=i,this.set(n,e)}else if(n.isSampledTexture){let{textureGPU:t,glTextureType:r}=this.get(n.texture);e.textureGPU=t,e.glTextureType=r,this.set(n,e)}}}updateBinding(e){let t=this.gl;if(e.isUniformsGroup||e.isUniformBuffer){let n=this.get(e).bufferGPU,r=e.buffer,i=e.updateRanges;if(t.bindBuffer(t.UNIFORM_BUFFER,n),i.length===0)t.bufferData(t.UNIFORM_BUFFER,r,t.DYNAMIC_DRAW);else{let e=Dn(r),n=e?1:r.BYTES_PER_ELEMENT;for(let a=0,o=i.length;a<o;a++){let o=i[a],s=o.start*n,c=o.count*n,l=s*(e?r.BYTES_PER_ELEMENT:1);t.bufferSubData(t.UNIFORM_BUFFER,l,r,s,c)}}}}createIndexAttribute(e){let t=this.gl;this.attributeUtils.createAttribute(e,t.ELEMENT_ARRAY_BUFFER)}createAttribute(e){if(this.has(e))return;let t=this.gl;this.attributeUtils.createAttribute(e,t.ARRAY_BUFFER)}createStorageAttribute(e){if(this.has(e))return;let t=this.gl;this.attributeUtils.createAttribute(e,t.ARRAY_BUFFER)}updateAttribute(e){this.attributeUtils.updateAttribute(e)}destroyAttribute(e){this.attributeUtils.destroyAttribute(e)}hasFeature(e){let t=Object.keys(cJ).filter(t=>cJ[t]===e),n=this.extensions;for(let e=0;e<t.length;e++)if(n.has(t[e]))return!0;return!1}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){this.textureUtils.copyTextureToTexture(e,t,n,r,i,a)}copyFramebufferToTexture(e,t,n){this.textureUtils.copyFramebufferToTexture(e,t,n)}hasCompatibility(e){return e===Cn.TEXTURE_COMPARE?!0:super.hasCompatibility(e)}initRenderTarget(e){let{gl:t,state:n}=this;this._setFramebuffer(e),n.bindFramebuffer(t.FRAMEBUFFER,null)}_setFramebuffer(e){let{gl:t,state:n}=this,r=null;if(e.textures!==null){let i=e.renderTarget,a=this.get(i),{samples:o,depthBuffer:s,stencilBuffer:c}=i,l=i.isCubeRenderTarget===!0,u=i.isRenderTarget3D===!0,d=i.depth>1,f=i.isXRRenderTarget===!0,p=f===!0&&i._hasExternalTextures===!0,m=a.msaaFrameBuffer,h=a.depthRenderbuffer,g=this.extensions.get(`WEBGL_multisampled_render_to_texture`),_=this.extensions.get(`OVR_multiview2`),v=this._useMultisampledExtension(i),y=YR(e),b;if(l?(a.cubeFramebuffers||={},b=a.cubeFramebuffers[y]):f&&p===!1?b=this._xrFramebuffer:(a.framebuffers||={},b=a.framebuffers[y]),b===void 0){b=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,b);let r=e.textures,s=[];if(l){a.cubeFramebuffers[y]=b;let{textureGPU:e}=this.get(r[0]),n=this.renderer._activeCubeFace,i=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+n,e,i)}else{a.framebuffers[y]=b;for(let n=0;n<r.length;n++){let a=r[n],s=this.get(a);s.renderTarget=e.renderTarget,s.cacheKey=y;let c=t.COLOR_ATTACHMENT0+n;if(i.multiview)_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,c,s.textureGPU,0,o,0,2);else if(u||d){let e=this.renderer._activeCubeFace,n=this.renderer._activeMipmapLevel;t.framebufferTextureLayer(t.FRAMEBUFFER,c,s.textureGPU,n,e)}else if(v)g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,c,t.TEXTURE_2D,s.textureGPU,0,o);else{let e=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,c,t.TEXTURE_2D,s.textureGPU,e)}}}let f=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(i._autoAllocateDepthBuffer===!0){let n=t.createRenderbuffer();this.textureUtils.setupRenderBufferStorage(n,e,0,v),a.xrDepthRenderbuffer=n,s.push(c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT),t.bindRenderbuffer(t.RENDERBUFFER,n),t.framebufferRenderbuffer(t.FRAMEBUFFER,f,t.RENDERBUFFER,n)}else if(e.depthTexture!==null){s.push(c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT);let n=this.get(e.depthTexture);if(n.renderTarget=e.renderTarget,n.cacheKey=y,i.multiview)_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,f,n.textureGPU,0,o,0,2);else if(p&&v)g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,f,t.TEXTURE_2D,n.textureGPU,0,o);else if(e.depthTexture.isArrayTexture){let e=this.renderer._activeCubeFace;t.framebufferTextureLayer(t.FRAMEBUFFER,f,n.textureGPU,0,e)}else if(e.depthTexture.isCubeTexture){let e=this.renderer._activeCubeFace;t.framebufferTexture2D(t.FRAMEBUFFER,f,t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n.textureGPU,0)}else t.framebufferTexture2D(t.FRAMEBUFFER,f,t.TEXTURE_2D,n.textureGPU,0)}a.depthInvalidationArray=s}else{if(this._isRenderCameraDepthArray(e)){n.bindFramebuffer(t.FRAMEBUFFER,b);let r=this.renderer._activeCubeFace,i=this.get(e.depthTexture),a=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;t.framebufferTextureLayer(t.FRAMEBUFFER,a,i.textureGPU,0,r)}if((f||v||i.multiview)&&i._isOpaqueFramebuffer!==!0){n.bindFramebuffer(t.FRAMEBUFFER,b);let r=this.get(e.textures[0]);i.multiview?_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,r.textureGPU,0,o,0,2):v?g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r.textureGPU,0,o):t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r.textureGPU,0);let s=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(i._autoAllocateDepthBuffer===!0){let e=a.xrDepthRenderbuffer;t.bindRenderbuffer(t.RENDERBUFFER,e),t.framebufferRenderbuffer(t.FRAMEBUFFER,s,t.RENDERBUFFER,e)}else{let n=this.get(e.depthTexture);i.multiview?_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,s,n.textureGPU,0,o,0,2):v?g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,s,t.TEXTURE_2D,n.textureGPU,0,o):t.framebufferTexture2D(t.FRAMEBUFFER,s,t.TEXTURE_2D,n.textureGPU,0)}}}if(o>0&&v===!1&&!i.multiview){if(m===void 0){let r=[];m=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,m);let i=[],l=e.textures;for(let n=0;n<l.length;n++){i[n]=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,i[n]),r.push(t.COLOR_ATTACHMENT0+n);let a=e.textures[n],s=this.get(a);t.renderbufferStorageMultisample(t.RENDERBUFFER,o,s.glInternalFormat,e.width,e.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+n,t.RENDERBUFFER,i[n])}if(t.bindRenderbuffer(t.RENDERBUFFER,null),a.msaaFrameBuffer=m,a.msaaRenderbuffers=i,s&&h===void 0){h=t.createRenderbuffer(),this.textureUtils.setupRenderBufferStorage(h,e,o),a.depthRenderbuffer=h;let n=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;r.push(n)}a.invalidationArray=r}r=a.msaaFrameBuffer}else r=b;n.drawBuffers(e,b)}n.bindFramebuffer(t.FRAMEBUFFER,r)}_getVaoKey(e){let t=``;for(let n=0;n<e.length;n++){let r=this.get(e[n]);t+=`:`+r.id}return t}_createVao(e){let{gl:t}=this,n=t.createVertexArray();t.bindVertexArray(n);for(let n=0;n<e.length;n++){let r=e[n],i=this.get(r);t.bindBuffer(t.ARRAY_BUFFER,i.bufferGPU),t.enableVertexAttribArray(n);let a,o;r.isInterleavedBufferAttribute===!0?(a=r.data.stride*i.bytesPerElement,o=r.offset*i.bytesPerElement):(a=0,o=0),i.isInteger?t.vertexAttribIPointer(n,r.itemSize,i.type,a,o):t.vertexAttribPointer(n,r.itemSize,i.type,r.normalized,a,o),r.isInstancedBufferAttribute&&!r.isInterleavedBufferAttribute?t.vertexAttribDivisor(n,r.meshPerAttribute):r.isInterleavedBufferAttribute&&r.data.isInstancedInterleavedBuffer&&t.vertexAttribDivisor(n,r.data.meshPerAttribute)}return t.bindBuffer(t.ARRAY_BUFFER,null),n}_getTransformFeedback(e){let t=``;for(let n=0;n<e.length;n++)t+=`:`+e[n].id;let n=this.transformFeedbackCache[t];if(n!==void 0)return n;let{gl:r}=this;n=r.createTransformFeedback(),r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,n);for(let t=0;t<e.length;t++){let n=e[t];r.bindBufferBase(r.TRANSFORM_FEEDBACK_BUFFER,t,n.transformBuffer)}return r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,null),this.transformFeedbackCache[t]=n,n}_setupBindings(e,t){let n=this.gl,r=0,i=0;for(let a of e)for(let e of a.bindings)if(e.isUniformsGroup||e.isUniformBuffer){let i=r++,a=n.getUniformBlockIndex(t,e.name);n.uniformBlockBinding(t,a,i)}else if(e.isSampledTexture){let r=i++,a=n.getUniformLocation(t,e.name);n.uniform1i(a,r)}}_bindUniforms(e){let{gl:t,state:n}=this,r=0,i=0;for(let a of e)for(let e of a.bindings){let a=this.get(e);if(e.isUniformsGroup||e.isUniformBuffer){let e=r++;n.bindBufferBase(t.UNIFORM_BUFFER,e,a.bufferGPU)}else if(e.isSampledTexture){let e=i++;n.bindTexture(a.glTextureType,a.textureGPU,t.TEXTURE0+e)}}}_resolveRenderTarget(e){let{gl:t,state:n}=this,r=e.renderTarget;if(e.textures!==null&&r){let i=this.get(r);if(r.samples>0&&this._useMultisampledExtension(r)===!1){let a=i.framebuffers[e.getCacheKey()],o=t.COLOR_BUFFER_BIT;r.resolveDepthBuffer&&(r.depthBuffer&&(o|=t.DEPTH_BUFFER_BIT),r.stencilBuffer&&r.resolveStencilBuffer&&(o|=t.STENCIL_BUFFER_BIT));let s=i.msaaFrameBuffer,c=i.msaaRenderbuffers,l=e.textures,u=l.length>1;if(n.bindFramebuffer(t.READ_FRAMEBUFFER,s),n.bindFramebuffer(t.DRAW_FRAMEBUFFER,a),u)for(let e=0;e<l.length;e++)t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,null),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,null,0);for(let n=0;n<l.length;n++){if(u){let{textureGPU:e}=this.get(l[n]);t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,c[n]),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)}if(e.scissor){let{x:n,y:r,width:i,height:a}=e.scissorValue,s=e.height-a-r;t.blitFramebuffer(n,s,n+i,s+a,n,s,n+i,s+a,o,t.NEAREST)}else t.blitFramebuffer(0,0,e.width,e.height,0,0,e.width,e.height,o,t.NEAREST)}if(u)for(let e=0;e<l.length;e++){let{textureGPU:n}=this.get(l[e]);t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,c[e]),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,n,0)}this._supportsInvalidateFramebuffer===!0&&t.invalidateFramebuffer(t.READ_FRAMEBUFFER,i.invalidationArray)}else if(r.resolveDepthBuffer===!1&&i.framebuffers){let r=i.framebuffers[e.getCacheKey()];n.bindFramebuffer(t.DRAW_FRAMEBUFFER,r),t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,i.depthInvalidationArray)}}}_useMultisampledExtension(e){return e.multiview===!0?!0:e.samples>0&&this.extensions.has(`WEBGL_multisampled_render_to_texture`)===!0&&e._autoAllocateDepthBuffer!==!1}dispose(){this.textureUtils!==null&&this.textureUtils.dispose();let e=this.extensions.get(`WEBGL_lose_context`);e&&e.loseContext(),this.renderer.domElement.removeEventListener(`webglcontextlost`,this._onContextLost)}},pJ={PointList:`point-list`,LineList:`line-list`,LineStrip:`line-strip`,TriangleList:`triangle-list`},mJ=typeof self<`u`&&self.GPUShaderStage?self.GPUShaderStage:{VERTEX:1,FRAGMENT:2,COMPUTE:4},hJ={Never:`never`,Less:`less`,Equal:`equal`,LessEqual:`less-equal`,Greater:`greater`,NotEqual:`not-equal`,GreaterEqual:`greater-equal`,Always:`always`},gJ={Store:`store`},_J={Load:`load`,Clear:`clear`},vJ={CCW:`ccw`,CW:`cw`},yJ={None:`none`,Back:`back`},bJ={Uint16:`uint16`,Uint32:`uint32`},$={R8Unorm:`r8unorm`,R8Snorm:`r8snorm`,R8Uint:`r8uint`,R8Sint:`r8sint`,R16Uint:`r16uint`,R16Sint:`r16sint`,R16Float:`r16float`,RG8Unorm:`rg8unorm`,RG8Snorm:`rg8snorm`,RG8Uint:`rg8uint`,RG8Sint:`rg8sint`,R16Unorm:`r16unorm`,R16Snorm:`r16snorm`,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`,RG16Unorm:`rg16unorm`,RG16Snorm:`rg16snorm`,RGB9E5UFloat:`rgb9e5ufloat`,RGB10A2Unorm:`rgb10a2unorm`,RG11B10UFloat:`rg11b10ufloat`,RG32Uint:`rg32uint`,RG32Sint:`rg32sint`,RG32Float:`rg32float`,RGBA16Uint:`rgba16uint`,RGBA16Sint:`rgba16sint`,RGBA16Float:`rgba16float`,RGBA16Unorm:`rgba16unorm`,RGBA16Snorm:`rgba16snorm`,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`},xJ={ClampToEdge:`clamp-to-edge`,Repeat:`repeat`,MirrorRepeat:`mirror-repeat`},SJ={Linear:`linear`,Nearest:`nearest`},CJ={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`},wJ={Add:`add`,Subtract:`subtract`,ReverseSubtract:`reverse-subtract`,Min:`min`,Max:`max`},TJ={None:0,All:15},EJ={Keep:`keep`,Zero:`zero`,Replace:`replace`,Invert:`invert`,IncrementClamp:`increment-clamp`,DecrementClamp:`decrement-clamp`,IncrementWrap:`increment-wrap`,DecrementWrap:`decrement-wrap`},DJ={Storage:`storage`,ReadOnlyStorage:`read-only-storage`},OJ={WriteOnly:`write-only`,ReadOnly:`read-only`,ReadWrite:`read-write`},kJ={NonFiltering:`non-filtering`,Comparison:`comparison`},AJ={Float:`float`,UnfilterableFloat:`unfilterable-float`,Depth:`depth`,SInt:`sint`,UInt:`uint`},jJ={TwoD:`2d`,ThreeD:`3d`},MJ={TwoD:`2d`,TwoDArray:`2d-array`,Cube:`cube`,ThreeD:`3d`},NJ={All:`all`},PJ={Vertex:`vertex`,Instance:`instance`},FJ={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`},IJ={"texture-compression-s3tc":`texture-compression-bc`,"texture-compression-etc1":`texture-compression-etc2`},LJ=class extends Aq{constructor(e,t,n){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n}update(){let{textureNode:e}=this;return this.texture===e.value?super.update():(this.texture=e.value,!0)}},RJ=class extends xq{constructor(e,t){super(e,t?t.array:null),this._attribute=t,this.isStorageBuffer=!0}get attribute(){return this._attribute}},zJ=0,BJ=class extends RJ{constructor(e,t){super(`StorageBuffer_`+ zJ++,e?e.value:null),this.nodeUniform=e,this.access=e?e.access:eT.READ_WRITE,this.groupNode=t}get attribute(){return this.nodeUniform.value}get buffer(){return this.nodeUniform.value.array}},VJ=class extends CR{constructor(e){super(),this.device=e,this.mipmapSampler=e.createSampler({minFilter:SJ.Linear}),this.flipYSampler=e.createSampler({minFilter:SJ.Nearest}),this.flipUniformBuffer=e.createBuffer({size:4,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),e.queue.writeBuffer(this.flipUniformBuffer,0,new Uint32Array([1])),this.noFlipUniformBuffer=e.createBuffer({size:4,usage:GPUBufferUsage.UNIFORM}),this.transferPipelines={},this.mipmapShaderModule=e.createShaderModule({label:`mipmap`,code:`
4267
+ void main() {}`};this.createProgram(i);let{computeProgram:a}=e,o=r.createProgram(),s=this.get(i).shaderGPU,c=this.get(a).shaderGPU,l=a.transforms,u=[],d=[];for(let e=0;e<l.length;e++){let t=l[e];u.push(t.varyingName),d.push(t.attributeNode)}r.attachShader(o,s),r.attachShader(o,c),r.transformFeedbackVaryings(o,u,r.SEPARATE_ATTRIBS),r.linkProgram(o),r.getProgramParameter(o,r.LINK_STATUS)===!1&&this._logProgramError(o,s,c),n.useProgram(o),this._setupBindings(t,o);let f=a.attributes,p=[],m=[];for(let e=0;e<f.length;e++){let t=f[e].node.attribute;p.push(t),this.has(t)||this.attributeUtils.createAttribute(t,r.ARRAY_BUFFER)}for(let e=0;e<d.length;e++){let t=d[e].attribute;this.has(t)||this.attributeUtils.createAttribute(t,r.ARRAY_BUFFER);let n=this.get(t);m.push(n)}this.set(e,{programGPU:o,transformBuffers:m,attributes:p})}createBindings(e,t){if(this._knownBindings.has(t)===!1){this._knownBindings.add(t);let e=0,n=0;for(let r of t){this.set(r,{textures:n,uniformBuffers:e});for(let t of r.bindings)t.isUniformBuffer&&e++,t.isSampledTexture&&n++}}this.updateBindings(e,t)}updateBindings(e){let{gl:t}=this;for(let n of e.bindings){let e=this.get(n);if(n.isUniformsGroup||n.isUniformBuffer){let r=n.buffer,{bufferGPU:i}=this.get(r);i===void 0?(i=t.createBuffer(),t.bindBuffer(t.UNIFORM_BUFFER,i),t.bufferData(t.UNIFORM_BUFFER,r.byteLength,t.DYNAMIC_DRAW),this.set(r,{bufferGPU:i})):t.bindBuffer(t.UNIFORM_BUFFER,i);let a=n.updateRanges;if(t.bindBuffer(t.UNIFORM_BUFFER,i),a.length===0)t.bufferData(t.UNIFORM_BUFFER,r,t.DYNAMIC_DRAW);else{let e=Dn(r),n=e?1:r.BYTES_PER_ELEMENT;for(let i=0,o=a.length;i<o;i++){let o=a[i],s=o.start*n,c=o.count*n,l=s*(e?r.BYTES_PER_ELEMENT:1);t.bufferSubData(t.UNIFORM_BUFFER,l,r,s,c)}}e.bufferGPU=i,this.set(n,e)}else if(n.isSampledTexture){let{textureGPU:t,glTextureType:r}=this.get(n.texture);e.textureGPU=t,e.glTextureType=r,this.set(n,e)}}}updateBinding(e){let t=this.gl;if(e.isUniformsGroup||e.isUniformBuffer){let n=this.get(e).bufferGPU,r=e.buffer,i=e.updateRanges;if(t.bindBuffer(t.UNIFORM_BUFFER,n),i.length===0)t.bufferData(t.UNIFORM_BUFFER,r,t.DYNAMIC_DRAW);else{let e=Dn(r),n=e?1:r.BYTES_PER_ELEMENT;for(let a=0,o=i.length;a<o;a++){let o=i[a],s=o.start*n,c=o.count*n,l=s*(e?r.BYTES_PER_ELEMENT:1);t.bufferSubData(t.UNIFORM_BUFFER,l,r,s,c)}}}}createIndexAttribute(e){let t=this.gl;this.attributeUtils.createAttribute(e,t.ELEMENT_ARRAY_BUFFER)}createAttribute(e){if(this.has(e))return;let t=this.gl;this.attributeUtils.createAttribute(e,t.ARRAY_BUFFER)}createStorageAttribute(e){if(this.has(e))return;let t=this.gl;this.attributeUtils.createAttribute(e,t.ARRAY_BUFFER)}updateAttribute(e){this.attributeUtils.updateAttribute(e)}destroyAttribute(e){this.attributeUtils.destroyAttribute(e)}hasFeature(e){let t=Object.keys(cJ).filter(t=>cJ[t]===e),n=this.extensions;for(let e=0;e<t.length;e++)if(n.has(t[e]))return!0;return!1}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){this.textureUtils.copyTextureToTexture(e,t,n,r,i,a)}copyFramebufferToTexture(e,t,n){this.textureUtils.copyFramebufferToTexture(e,t,n)}hasCompatibility(e){return e===Cn.TEXTURE_COMPARE?!0:super.hasCompatibility(e)}initRenderTarget(e){let{gl:t,state:n}=this;this._setFramebuffer(e),n.bindFramebuffer(t.FRAMEBUFFER,null)}_setFramebuffer(e){let{gl:t,state:n}=this,r=null;if(e.textures!==null){let i=e.renderTarget,a=this.get(i),{samples:o,depthBuffer:s,stencilBuffer:c}=i,l=i.isCubeRenderTarget===!0,u=i.isRenderTarget3D===!0,d=i.depth>1,f=i.isXRRenderTarget===!0,p=f===!0&&i._hasExternalTextures===!0,m=a.msaaFrameBuffer,h=a.depthRenderbuffer,g=this.extensions.get(`WEBGL_multisampled_render_to_texture`),_=this.extensions.get(`OVR_multiview2`),v=this._useMultisampledExtension(i),y=YR(e),b;if(l?(a.cubeFramebuffers||={},b=a.cubeFramebuffers[y]):f&&p===!1?b=this._xrFramebuffer:(a.framebuffers||={},b=a.framebuffers[y]),b===void 0){b=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,b);let r=e.textures,s=[];if(l){a.cubeFramebuffers[y]=b;let{textureGPU:e}=this.get(r[0]),n=this.renderer._activeCubeFace,i=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+n,e,i)}else{a.framebuffers[y]=b;for(let n=0;n<r.length;n++){let a=r[n],s=this.get(a);s.renderTarget=e.renderTarget,s.cacheKey=y;let c=t.COLOR_ATTACHMENT0+n;if(i.multiview)_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,c,s.textureGPU,0,o,0,2);else if(u||d){let e=this.renderer._activeCubeFace,n=this.renderer._activeMipmapLevel;t.framebufferTextureLayer(t.FRAMEBUFFER,c,s.textureGPU,n,e)}else if(v)g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,c,t.TEXTURE_2D,s.textureGPU,0,o);else{let e=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,c,t.TEXTURE_2D,s.textureGPU,e)}}}let f=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(i._autoAllocateDepthBuffer===!0){let n=t.createRenderbuffer();this.textureUtils.setupRenderBufferStorage(n,e,0,v),a.xrDepthRenderbuffer=n,s.push(c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT),t.bindRenderbuffer(t.RENDERBUFFER,n),t.framebufferRenderbuffer(t.FRAMEBUFFER,f,t.RENDERBUFFER,n)}else if(e.depthTexture!==null){s.push(c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT);let n=this.get(e.depthTexture);if(n.renderTarget=e.renderTarget,n.cacheKey=y,i.multiview)_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,f,n.textureGPU,0,o,0,2);else if(p&&v)g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,f,t.TEXTURE_2D,n.textureGPU,0,o);else if(e.depthTexture.isArrayTexture){let e=this.renderer._activeCubeFace;t.framebufferTextureLayer(t.FRAMEBUFFER,f,n.textureGPU,0,e)}else if(e.depthTexture.isCubeTexture){let e=this.renderer._activeCubeFace;t.framebufferTexture2D(t.FRAMEBUFFER,f,t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n.textureGPU,0)}else t.framebufferTexture2D(t.FRAMEBUFFER,f,t.TEXTURE_2D,n.textureGPU,0)}a.depthInvalidationArray=s}else{if(this._isRenderCameraDepthArray(e)){n.bindFramebuffer(t.FRAMEBUFFER,b);let r=this.renderer._activeCubeFace,i=this.get(e.depthTexture),a=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;t.framebufferTextureLayer(t.FRAMEBUFFER,a,i.textureGPU,0,r)}if((f||v||i.multiview)&&i._isOpaqueFramebuffer!==!0){n.bindFramebuffer(t.FRAMEBUFFER,b);let r=this.get(e.textures[0]);i.multiview?_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,r.textureGPU,0,o,0,2):v?g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r.textureGPU,0,o):t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r.textureGPU,0);let s=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(i._autoAllocateDepthBuffer===!0){let e=a.xrDepthRenderbuffer;t.bindRenderbuffer(t.RENDERBUFFER,e),t.framebufferRenderbuffer(t.FRAMEBUFFER,s,t.RENDERBUFFER,e)}else{let n=this.get(e.depthTexture);i.multiview?_.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,s,n.textureGPU,0,o,0,2):v?g.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,s,t.TEXTURE_2D,n.textureGPU,0,o):t.framebufferTexture2D(t.FRAMEBUFFER,s,t.TEXTURE_2D,n.textureGPU,0)}}}if(o>0&&v===!1&&!i.multiview){if(m===void 0){let r=[];m=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,m);let i=[],l=e.textures;for(let n=0;n<l.length;n++){i[n]=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,i[n]),r.push(t.COLOR_ATTACHMENT0+n);let a=e.textures[n],s=this.get(a);t.renderbufferStorageMultisample(t.RENDERBUFFER,o,s.glInternalFormat,e.width,e.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+n,t.RENDERBUFFER,i[n])}if(t.bindRenderbuffer(t.RENDERBUFFER,null),a.msaaFrameBuffer=m,a.msaaRenderbuffers=i,s&&h===void 0){h=t.createRenderbuffer(),this.textureUtils.setupRenderBufferStorage(h,e,o),a.depthRenderbuffer=h;let n=c?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;r.push(n)}a.invalidationArray=r}r=a.msaaFrameBuffer}else r=b;n.drawBuffers(e,b)}n.bindFramebuffer(t.FRAMEBUFFER,r)}_getVaoKey(e){let t=``;for(let n=0;n<e.length;n++){let r=this.get(e[n]);t+=`:`+r.id}return t}_createVao(e){let{gl:t}=this,n=t.createVertexArray();t.bindVertexArray(n);for(let n=0;n<e.length;n++){let r=e[n],i=this.get(r);t.bindBuffer(t.ARRAY_BUFFER,i.bufferGPU),t.enableVertexAttribArray(n);let a,o;r.isInterleavedBufferAttribute===!0?(a=r.data.stride*i.bytesPerElement,o=r.offset*i.bytesPerElement):(a=0,o=0),i.isInteger?t.vertexAttribIPointer(n,r.itemSize,i.type,a,o):t.vertexAttribPointer(n,r.itemSize,i.type,r.normalized,a,o),r.isInstancedBufferAttribute&&!r.isInterleavedBufferAttribute?t.vertexAttribDivisor(n,r.meshPerAttribute):r.isInterleavedBufferAttribute&&r.data.isInstancedInterleavedBuffer&&t.vertexAttribDivisor(n,r.data.meshPerAttribute)}return t.bindBuffer(t.ARRAY_BUFFER,null),n}_getTransformFeedback(e){let t=``;for(let n=0;n<e.length;n++)t+=`:`+e[n].id;let n=this.transformFeedbackCache[t];if(n!==void 0)return n;let{gl:r}=this;n=r.createTransformFeedback(),r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,n);for(let t=0;t<e.length;t++){let n=e[t];r.bindBufferBase(r.TRANSFORM_FEEDBACK_BUFFER,t,n.transformBuffer)}return r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,null),this.transformFeedbackCache[t]=n,n}_setupBindings(e,t){let n=this.gl,r=0,i=0;for(let a of e)for(let e of a.bindings)if(e.isUniformsGroup||e.isUniformBuffer){let i=r++,a=n.getUniformBlockIndex(t,e.name);n.uniformBlockBinding(t,a,i)}else if(e.isSampledTexture){let r=i++,a=n.getUniformLocation(t,e.name);n.uniform1i(a,r)}}_bindUniforms(e){let{gl:t,state:n}=this,r=0,i=0;for(let a of e)for(let e of a.bindings){let a=this.get(e);if(e.isUniformsGroup||e.isUniformBuffer){let e=r++;n.bindBufferBase(t.UNIFORM_BUFFER,e,a.bufferGPU)}else if(e.isSampledTexture){let e=i++;n.bindTexture(a.glTextureType,a.textureGPU,t.TEXTURE0+e)}}}_resolveRenderTarget(e){let{gl:t,state:n}=this,r=e.renderTarget;if(e.textures!==null&&r){let i=this.get(r);if(r.samples>0&&this._useMultisampledExtension(r)===!1){let a=i.framebuffers[e.getCacheKey()],o=t.COLOR_BUFFER_BIT;r.resolveDepthBuffer&&(r.depthBuffer&&(o|=t.DEPTH_BUFFER_BIT),r.stencilBuffer&&r.resolveStencilBuffer&&(o|=t.STENCIL_BUFFER_BIT));let s=i.msaaFrameBuffer,c=i.msaaRenderbuffers,l=e.textures,u=l.length>1;if(n.bindFramebuffer(t.READ_FRAMEBUFFER,s),n.bindFramebuffer(t.DRAW_FRAMEBUFFER,a),u)for(let e=0;e<l.length;e++)t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,null),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,null,0);for(let n=0;n<l.length;n++){if(u){let{textureGPU:e}=this.get(l[n]);t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,c[n]),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)}if(e.scissor){let{x:n,y:r,width:i,height:a}=e.scissorValue,s=e.height-a-r;t.blitFramebuffer(n,s,n+i,s+a,n,s,n+i,s+a,o,t.NEAREST)}else t.blitFramebuffer(0,0,e.width,e.height,0,0,e.width,e.height,o,t.NEAREST)}if(u)for(let e=0;e<l.length;e++){let{textureGPU:n}=this.get(l[e]);t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,c[e]),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,n,0)}this._supportsInvalidateFramebuffer===!0&&t.invalidateFramebuffer(t.READ_FRAMEBUFFER,i.invalidationArray)}else if(r.resolveDepthBuffer===!1&&i.framebuffers){let r=i.framebuffers[e.getCacheKey()];n.bindFramebuffer(t.DRAW_FRAMEBUFFER,r),t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,i.depthInvalidationArray)}}}_useMultisampledExtension(e){return e.multiview===!0?!0:e.samples>0&&this.extensions.has(`WEBGL_multisampled_render_to_texture`)===!0&&e._autoAllocateDepthBuffer!==!1}dispose(){this.textureUtils!==null&&this.textureUtils.dispose();let e=this.extensions.get(`WEBGL_lose_context`);e&&e.loseContext(),this.renderer.domElement.removeEventListener(`webglcontextlost`,this._onContextLost)}},pJ={PointList:`point-list`,LineList:`line-list`,LineStrip:`line-strip`,TriangleList:`triangle-list`},mJ=typeof self<`u`&&self.GPUShaderStage?self.GPUShaderStage:{VERTEX:1,FRAGMENT:2,COMPUTE:4},hJ={Never:`never`,Less:`less`,Equal:`equal`,LessEqual:`less-equal`,Greater:`greater`,NotEqual:`not-equal`,GreaterEqual:`greater-equal`,Always:`always`},gJ={Store:`store`},_J={Load:`load`,Clear:`clear`},vJ={CCW:`ccw`,CW:`cw`},yJ={None:`none`,Back:`back`},bJ={Uint16:`uint16`,Uint32:`uint32`},$={R8Unorm:`r8unorm`,R8Snorm:`r8snorm`,R8Uint:`r8uint`,R8Sint:`r8sint`,R16Uint:`r16uint`,R16Sint:`r16sint`,R16Float:`r16float`,RG8Unorm:`rg8unorm`,RG8Snorm:`rg8snorm`,RG8Uint:`rg8uint`,RG8Sint:`rg8sint`,R16Unorm:`r16unorm`,R16Snorm:`r16snorm`,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`,RG16Unorm:`rg16unorm`,RG16Snorm:`rg16snorm`,RGB9E5UFloat:`rgb9e5ufloat`,RGB10A2Unorm:`rgb10a2unorm`,RG11B10UFloat:`rg11b10ufloat`,RG32Uint:`rg32uint`,RG32Sint:`rg32sint`,RG32Float:`rg32float`,RGBA16Uint:`rgba16uint`,RGBA16Sint:`rgba16sint`,RGBA16Float:`rgba16float`,RGBA16Unorm:`rgba16unorm`,RGBA16Snorm:`rgba16snorm`,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`},xJ={ClampToEdge:`clamp-to-edge`,Repeat:`repeat`,MirrorRepeat:`mirror-repeat`},SJ={Linear:`linear`,Nearest:`nearest`},CJ={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`},wJ={Add:`add`,Subtract:`subtract`,ReverseSubtract:`reverse-subtract`,Min:`min`,Max:`max`},TJ={None:0,All:15},EJ={Keep:`keep`,Zero:`zero`,Replace:`replace`,Invert:`invert`,IncrementClamp:`increment-clamp`,DecrementClamp:`decrement-clamp`,IncrementWrap:`increment-wrap`,DecrementWrap:`decrement-wrap`},DJ={Storage:`storage`,ReadOnlyStorage:`read-only-storage`},OJ={WriteOnly:`write-only`,ReadOnly:`read-only`,ReadWrite:`read-write`},kJ={NonFiltering:`non-filtering`,Comparison:`comparison`},AJ={Float:`float`,UnfilterableFloat:`unfilterable-float`,Depth:`depth`,SInt:`sint`,UInt:`uint`},jJ={TwoD:`2d`,ThreeD:`3d`},MJ={TwoD:`2d`,TwoDArray:`2d-array`,Cube:`cube`,ThreeD:`3d`},NJ={All:`all`},PJ={Vertex:`vertex`,Instance:`instance`},FJ={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`},IJ={"texture-compression-s3tc":`texture-compression-bc`,"texture-compression-etc1":`texture-compression-etc2`},LJ=class extends Aq{constructor(e,t,n){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n}update(){let{textureNode:e}=this;return this.texture===e.value?super.update():(this.texture=e.value,!0)}},RJ=class extends xq{constructor(e,t){super(e,t?t.array:null),this._attribute=t,this.isStorageBuffer=!0}get attribute(){return this._attribute}},zJ=0,BJ=class extends RJ{constructor(e,t){super(`StorageBuffer_`+zJ++,e?e.value:null),this.nodeUniform=e,this.access=e?e.access:eT.READ_WRITE,this.groupNode=t}get attribute(){return this.nodeUniform.value}get buffer(){return this.nodeUniform.value.array}},VJ=class extends CR{constructor(e){super(),this.device=e,this.mipmapSampler=e.createSampler({minFilter:SJ.Linear}),this.flipYSampler=e.createSampler({minFilter:SJ.Nearest}),this.flipUniformBuffer=e.createBuffer({size:4,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),e.queue.writeBuffer(this.flipUniformBuffer,0,new Uint32Array([1])),this.noFlipUniformBuffer=e.createBuffer({size:4,usage:GPUBufferUsage.UNIFORM}),this.transferPipelines={},this.mipmapShaderModule=e.createShaderModule({label:`mipmap`,code:`
4268
4268
  struct VarysStruct {
4269
4269
  @builtin( position ) Position: vec4f,
4270
4270
  @location( 0 ) vTex : vec2f,
@@ -4406,7 +4406,7 @@ ${n.code}
4406
4406
  `)+`
4407
4407
  `}return t}getVar(e,t,n=null,r=``){let i=`var${r} ${t} : `;return n===null?i+=this.getType(e):i+=this.generateArrayDeclaration(e,n),i}getVars(e,t=!1){let n=``;t&&(n=`<private>`);let r=[],i=this.vars[e];if(i!==void 0)for(let e of i)r.push(`${this.getVar(e.type,e.name,e.count,n)};`);return t?r.join(`
4408
4408
  `):`\n\t${r.join(`
4409
- `)}\n`}getVaryings(e){let t=[];if(e===`vertex`&&this.getBuiltin(`position`,`builtinClipSpace`,`vec4<f32>`,`vertex`),e===`vertex`||e===`fragment`){let n=this.varyings,r=this.vars[e],i=0;for(let a=0;a<n.length;a++){let o=n[a];if(o.needsInterpolation){let e=`@location( ${i++} )`;if(o.interpolationType){let t=o.interpolationSampling===null?` )`:`, ${o.interpolationSampling} )`;e+=` @interpolate( ${o.interpolationType}${t}`}else /^(int|uint|ivec|uvec)/.test(o.type)&&(e+=` @interpolate(flat, either)`);t.push(`${e} ${o.name} : ${this.getType(o.type)}`)}else e===`vertex`&&r.includes(o)===!1&&r.push(o)}}let n=this.getBuiltins(e);n&&t.push(n);let r=t.join(`,
4409
+ `)}\n`}getVaryings(e){let t=[];if(e===`vertex`&&this.getBuiltin(`position`,`builtinClipSpace`,`vec4<f32>`,`vertex`),e===`vertex`||e===`fragment`){let n=this.varyings,r=this.vars[e],i=0;for(let a=0;a<n.length;a++){let o=n[a];if(o.needsInterpolation){let e=`@location( ${i++} )`;if(o.interpolationType){let t=o.interpolationSampling===null?` )`:`, ${o.interpolationSampling} )`;e+=` @interpolate( ${o.interpolationType}${t}`}else/^(int|uint|ivec|uvec)/.test(o.type)&&(e+=` @interpolate(flat, either)`);t.push(`${e} ${o.name} : ${this.getType(o.type)}`)}else e===`vertex`&&r.includes(o)===!1&&r.push(o)}}let n=this.getBuiltins(e);n&&t.push(n);let r=t.join(`,
4410
4410
  `);return e===`vertex`?this._getWGSLStruct(`VaryingsStruct`,` `+r):r}isCustomStruct(e){let t=e.value,n=e.node,r=(t.isBufferAttribute||t.isInstancedBufferAttribute)&&n.structTypeNode!==null,i=n.value&&n.value.array&&typeof n.value.itemSize==`number`&&n.value.array.length>n.value.itemSize;return r&&!i}getUniforms(e){let t=this.renderer.backend,n=this.uniforms[e],r=[],i=[],a=[],o={};for(let a of n){let n=a.groupNode.name,s=this.bindingsIndexes[n];if(a.type===`texture`||a.type===`cubeTexture`||a.type===`cubeDepthTexture`||a.type===`storageTexture`||a.type===`texture3D`){let n=a.node.value;(n.isCubeTexture===!0||this.isUnfilterable(n)===!1&&a.node.isStorageTextureNode!==!0)&&(this.isSampleCompare(n)?r.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var ${a.name}_sampler : sampler_comparison;`):r.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var ${a.name}_sampler : sampler;`));let i,o=``,{primarySamples:c}=t.utils.getTextureSampleData(n);if(c>1&&(o=`_multisampled`),n.isCubeTexture===!0&&n.isDepthTexture===!0)i=`texture_depth_cube`;else if(n.isCubeTexture===!0)i=`texture_cube<f32>`;else if(n.isDepthTexture===!0)i=t.compatibilityMode&&n.compareFunction===null?`texture${o}_2d<f32>`:`texture_depth${o}_2d${n.isArrayTexture===!0?`_array`:``}`;else if(a.node.isStorageTextureNode===!0){let r=GJ(n,t.device),o=this.getStorageAccess(a.node,e),s=a.node.value.is3DTexture,c=a.node.value.isArrayTexture;i=`texture_storage_${s?`3d`:`2d${c?`_array`:``}`}<${r}, ${o}>`}else if(n.isArrayTexture===!0||n.isDataArrayTexture===!0||n.isCompressedArrayTexture===!0)i=`texture_2d_array<f32>`;else if(n.is3DTexture===!0||n.isData3DTexture===!0)i=`texture_3d<f32>`;else{let e=this.getComponentTypeFromTexture(n).charAt(0);i=`texture${o}_2d<${e}32>`}r.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var ${a.name} : ${i};`)}else if(a.type===`buffer`||a.type===`storageBuffer`||a.type===`indirectStorageBuffer`){let t=a.node,n=this.getType(t.getNodeType(this)),r=t.bufferCount,o=r>0&&a.type===`buffer`?`, `+r:``,c=t.isStorageBufferNode?`storage, ${this.getStorageAccess(t,e)}`:`uniform`;if(this.isCustomStruct(a))i.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var<${c}> ${a.name} : ${n};`);else{let e=`\tvalue : array< ${t.isAtomic?`atomic<${n}>`:`${n}`}${o} >`;i.push(this._getWGSLStructBinding(a.name,e,c,s.binding++,s.group))}}else{let e=a.groupNode.name;if(o[e]===void 0){let t=this.uniformGroups[e];if(t!==void 0){let n=[];for(let e of t.uniforms){let t=e.getType(),r=this.getType(this.getVectorType(t));n.push(`\t${e.name} : ${r}`)}let r=this.uniformGroupsBindings[e];r===void 0&&(r={index:s.binding++,id:s.group},this.uniformGroupsBindings[e]=r),o[e]={index:r.index,id:r.id,snippets:n}}}}}for(let e in o){let t=o[e];a.push(this._getWGSLStructBinding(e,t.snippets.join(`,
4411
4411
  `),`uniform`,t.index,t.id))}return[...r,...i,...a].join(`
4412
4412
  `)}buildCode(){let e=this.material===null?{compute:{}}:{fragment:{},vertex:{}};this.sortBindingGroups();for(let t in e){this.shaderStage=t;let n=this.allowGlobalVariables,r=e[t];r.uniforms=this.getUniforms(t),r.attributes=this.getAttributes(t),r.varyings=this.getVaryings(t),r.structs=this.getStructs(t),r.vars=this.getVars(t,n),r.codes=this.getCodes(t),r.directives=this.getDirectives(t),r.scopedArrays=this.getScopedArrays(t);let i=`// code